{ [L:{dv:ClassDerivation| WF(dv)}  List]. [n:]. [m:{m:| 0 < (n + m)} ].
    (cdv-argtype(pack-cdv-args(n;m;L))
       = (k:||L||  bag(map(dv.hd(cdv-types(dv));L)[k]))) supposing 
       ((||L|| = (n + m)) and 
       (dvL.||cdv-types(dv)|| = 1)) }

{ Proof }



Definitions occuring in Statement :  pack-cdv-args: pack-cdv-args(n;m;L),  cdv-wf: WF(dv),  cdv-argtype: cdv-argtype(dv),  cdv-types: cdv-types(dv),  classderiv: ClassDerivation,  select: l[i],  hd: hd(l),  map: map(f;as),  length: ||as||,  int_seg: {i..j},  nat: ,  uimplies: b supposing a,  uall: [x:A]. B[x],  less_than: a < b,  set: {x:A| B[x]} ,  lambda: x.A[x],  function: x:A  B[x],  list: type List,  add: n + m,  natural_number: $n,  int: ,  universe: Type,  equal: s = t,  l_all: (xL.P[x]),  bag: bag(T)
Definitions :  l_member: (x  l),  real: ,  grp_car: |g|,  subtype: S  T,  limited-type: LimitedType,  eclass: EClass(A[eo; e]),  pair: <a, b>,  fpf: a:A fp-> B[a],  strong-subtype: strong-subtype(A;B),  ge: i  j ,  product: x:A  B[x],  and: P  Q,  uiff: uiff(P;Q),  subtype_rel: A r B,  all: x:A. B[x],  implies: P  Q,  false: False,  not: A,  le: A  B,  add: n + m,  axiom: Ax,  pack-cdv-args: pack-cdv-args(n;m;L),  cdv-argtype: cdv-argtype(dv),  list: type List,  uall: [x:A]. B[x],  less_than: a < b,  nat: ,  so_lambda: x.t[x],  set: {x:A| B[x]} ,  cdv-wf: WF(dv),  classderiv: ClassDerivation,  l_all: (xL.P[x]),  uimplies: b supposing a,  isect: x:A. B[x],  member: t  T,  int: ,  prop: ,  cdv-types: cdv-types(dv),  hd: hd(l),  lambda: x.A[x],  map: map(f;as),  select: l[i],  bag: bag(T),  length: ||as||,  natural_number: $n,  int_seg: {i..j},  function: x:A  B[x],  list-to-cdv: list-to-cdv(L),  universe: Type,  equal: s = t,  sqequal: s ~ t,  rev_uimplies: rev_uimplies(P;Q),  le_int: i z j,  eq_int: (i = j),  eq_atom: x =a y,  null: null(as),  set_blt: a < b,  grp_blt: a < b,  apply: f a,  infix_ap: x f y,  dcdr-to-bool: [d],  bl-all: (xL.P[x])_b,  bl-exists: (xL.P[x])_b,  b-exists: (i<n.P[i])_b,  eq_type: eq_type(T;T'),  eq_atom: eq_atom$n(x;y),  qeq: qeq(r;s),  q_less: q_less(r;s),  q_le: q_le(r;s),  deq-member: deq-member(eq;x;L),  deq-disjoint: deq-disjoint(eq;as;bs),  deq-all-disjoint: deq-all-disjoint(eq;ass;bs),  eq_id: a = b,  eq_lnk: a = b,  es-eq-E: e = e',  es-bless: e <loc e',  es-ble: e loc e',  bnot: b,  bimplies: p  q,  band: p  q,  bor: p q,  true: True,  lt_int: i <z j,  decide: case b of inl(x) => s[x] | inr(y) => t[y],  ifthenelse: if b then t else f fi ,  listp: A List,  assert: b,  tl: tl(l),  classderiv_ind: classderiv_ind,  sq_type: SQType(T),  append: as @ bs,  iff: P  Q,  combination: Combination(n;T),  void: Void,  top: Top,  concat: concat(ll),  cons: [car / cdr],  nil: [],  lelt: i  j < k,  rationals: ,  cdvpair-fst: cdvpair-fst(x),  classderiv_ind_cdvpair: classderiv_ind_cdvpair_compseq_tag_def,  cdvpair-snd: cdvpair-snd(x),  cdvbase?: cdvbase?(x),  cdvpair?: cdvpair?(x),  cdvdelay?: cdvdelay?(x),  cdvcomb?: cdvcomb?(x),  cdvreccomb?: cdvreccomb?(x),  cdvdelay-X: cdvdelay-X(x),  classderiv_ind_cdvdelay: classderiv_ind_cdvdelay_compseq_tag_def,  cdvdelay-dummy: cdvdelay-dummy(x),  nth_tl: nth_tl(n;as),  firstn: firstn(n;as),  cdvpair: cdvpair(fst;snd),  it: ,  cdvdelay: cdvdelay(X;dummy),  bfalse: ff,  btrue: tt,  unit: Unit,  union: left + right,  bool: ,  let: let,  minus: -n,  subtract: n - m,  int_iseg: {i...j},  rev_implies: P  Q,  squash: T
Lemmas :  append_firstn_lastn,  concat_append,  squash_wf,  map_append,  int_iseg_wf,  length_firstn,  rev_implies_wf,  iff_wf,  pos_length2,  length_nth_tl,  list-to-cdv_wf,  bool_wf,  eq_int_wf,  bnot_wf,  assert_of_eq_int,  not_functionality_wrt_uiff,  assert_of_bnot,  uiff_transitivity,  eqff_to_assert,  eqtt_to_assert,  listp_wf,  subtype_rel_wf,  nth_tl_wf,  cdvdelay_wf,  firstn_wf,  cdvpair_wf,  ge_wf,  le_wf,  not_wf,  pos_length3,  length-map,  cdv-types-non-empty,  top_wf,  member_wf,  concat-cons,  l_all_cons,  length_wf_nat,  concat_wf,  append_wf,  subtype_base_sq,  list_subtype_base,  non_neg_length,  cdv-types-list-to-cdv,  false_wf,  ifthenelse_wf,  true_wf,  assert_of_lt_int,  assert_wf,  lt_int_wf,  classderiv_wf,  cdv-wf_wf,  nat_wf,  l_member_wf,  cdv-types_wf,  length_wf1,  l_all_wf2,  l_all_wf,  int_seg_wf,  bag_wf,  select_wf,  map_wf,  hd_wf,  cdv-argtype_wf,  pack-cdv-args_wf

\mforall{}[L:\{dv:ClassDerivation|  WF(dv)\}    List].  \mforall{}[n:\mBbbN{}].  \mforall{}[m:\{m:\mBbbN{}|  0  <  (n  +  m)\}  ].
    (cdv-argtype(pack-cdv-args(n;m;L))
          =  (k:\mBbbN{}||L||  {}\mrightarrow{}  bag(map(\mlambda{}dv.hd(cdv-types(dv));L)[k])))  supposing 
          ((||L||  =  (n  +  m))  and 
          (\mforall{}dv\mmember{}L.||cdv-types(dv)||  =  1))


Date html generated: 2011_08_17-PM-04_32_34
Last ObjectModification: 2011_06_18-AM-11_43_42

Home Index