{ [A:Type]. [eq:EqDecider(A)]. [B:A  Type]. [f:x:A fp-B[x]].
  [P:A  ]. [x:A].
    uiff(x  dom(fpf-restrict(f;P));{(x  dom(f))  ((P x))}) }

{ Proof }



Definitions occuring in Statement :  fpf-restrict: fpf-restrict(f;P) fpf-dom: x  dom(f) fpf: a:A fp-B[a] assert: b bool: uiff: uiff(P;Q) uall: [x:A]. B[x] guard: {T} so_apply: x[s] and: P  Q apply: f a function: x:A  B[x] universe: Type deq: EqDecider(T)
Definitions :  cand: A c B fpf-join: f  g eqof: eqof(d) subtype: S  T union: left + right or: P  Q eq_knd: a = b l_member: (x  l) fpf-single: x : v rev_implies: P  Q fpf-restrict: fpf-restrict(f;P) strong-subtype: strong-subtype(A;B) le: A  B ge: i  j  not: A less_than: a < b set: {x:A| B[x]}  list: type List subtype_rel: A r B top: Top fpf-dom: x  dom(f) iff: P  Q implies: P  Q prop: pair: <a, b> void: Void false: False true: True decide: case b of inl(x) =s[x] | inr(y) =t[y] ifthenelse: if b then t else f fi  assert: b guard: {T} uimplies: b supposing a product: x:A  B[x] and: P  Q uiff: uiff(P;Q) bool: lambda: x.A[x] all: x:A. B[x] isect: x:A. B[x] uall: [x:A]. B[x] fpf: a:A fp-B[a] so_lambda: x.t[x] so_apply: x[s] apply: f a member: t  T equal: s = t universe: Type function: x:A  B[x] deq: EqDecider(T) Repeat: Error :Repeat,  MaAuto: Error :MaAuto,  Complete: Error :Complete,  Try: Error :Try,  CollapseTHEN: Error :CollapseTHEN,  tactic: Error :tactic,  fpf-domain: fpf-domain(f) filter: filter(P;l) domain_fpf_restrict: domain_fpf_restrict{domain_fpf_restrict_compseq_tag_def:o}(P; f) Auto: Error :Auto,  CollapseTHENM: Error :CollapseTHENM,  Unfold: Error :Unfold,  CollapseTHENA: Error :CollapseTHENA
Lemmas :  fpf-domain_wf member_filter iff_functionality_wrt_iff member-fpf-domain and_functionality_wrt_iff filter_wf fpf-dom_wf assert_witness guard_wf assert_wf fpf-trivial-subtype-top subtype_rel_wf fpf_wf top_wf member_wf fpf-restrict_wf2 uiff_wf bool_wf deq_wf false_wf ifthenelse_wf true_wf rev_implies_wf iff_wf uiff_inversion l_member_wf member-fpf-dom

\mforall{}[A:Type].  \mforall{}[eq:EqDecider(A)].  \mforall{}[B:A  {}\mrightarrow{}  Type].  \mforall{}[f:x:A  fp->  B[x]].  \mforall{}[P:A  {}\mrightarrow{}  \mBbbB{}].  \mforall{}[x:A].
    uiff(\muparrow{}x  \mmember{}  dom(fpf-restrict(f;P));\{(\muparrow{}x  \mmember{}  dom(f))  \mwedge{}  (\muparrow{}(P  x))\})


Date html generated: 2011_08_10-AM-08_09_45
Last ObjectModification: 2011_06_18-AM-08_25_57

Home Index