{ [A,C:Type]. [B:A  Type]. [D:C  Type]. [rinv:C  (A?)]. [r:A  C].
  [f:c:C fp-> D[c]].
    (fpf-inv-rename(r;rinv;f)  a:A fp-> B[a]) supposing 
       ((a:A. (D[r a] = B[a])) and 
       inv-rel(A;C;r;rinv)) }

{ Proof }



Definitions occuring in Statement :  fpf-inv-rename: fpf-inv-rename(r;rinv;f),  fpf: a:A fp-> B[a],  uimplies: b supposing a,  uall: [x:A]. B[x],  so_apply: x[s],  all: x:A. B[x],  unit: Unit,  member: t  T,  apply: f a,  function: x:A  B[x],  union: left + right,  universe: Type,  equal: s = t,  inv-rel: inv-rel(A;B;f;finv)
Definitions :  uall: [x:A]. B[x],  fpf: a:A fp-> B[a],  so_apply: x[s],  uimplies: b supposing a,  all: x:A. B[x],  member: t  T,  fpf-inv-rename: fpf-inv-rename(r;rinv;f),  pi1: fst(t),  pi2: snd(t),  prop: ,  so_lambda: x.t[x],  assert: b,  btrue: tt,  ifthenelse: if b then t else f fi ,  true: True,  compose: f o g,  implies: P  Q,  isl: isl(x),  outl: outl(x),  bfalse: ff,  sq_type: SQType(T),  guard: {T},  exists: x:A. B[x],  and: P  Q,  cand: A c B,  iff: P  Q,  inv-rel: inv-rel(A;B;f;finv),  false: False
Lemmas :  l_member_wf,  inv-rel_wf,  fpf_wf,  unit_wf,  mapfilter_wf,  isl_wf,  outl_wf,  subtype_base_sq,  bool_wf,  bool_subtype_base,  assert_wf,  assert_elim,  member_map_filter,  true_wf,  false_wf

\mforall{}[A,C:Type].  \mforall{}[B:A  {}\mrightarrow{}  Type].  \mforall{}[D:C  {}\mrightarrow{}  Type].  \mforall{}[rinv:C  {}\mrightarrow{}  (A?)].  \mforall{}[r:A  {}\mrightarrow{}  C].  \mforall{}[f:c:C  fp->  D[c]].
    (fpf-inv-rename(r;rinv;f)  \mmember{}  a:A  fp->  B[a])  supposing 
          ((\mforall{}a:A.  (D[r  a]  =  B[a]))  and 
          inv-rel(A;C;r;rinv))


Date html generated: 2011_08_10-AM-08_04_54
Last ObjectModification: 2011_06_18-AM-08_22_51

Home Index