Nuprl Lemma : member-mapfilter-witness_wf

member-mapfilter-witness() ∈ ∀[T:Type]
                               ∀L:T List. ∀P:{x:T| (x ∈ L)}  ⟶ 𝔹.
                                 ∀[T':Type]
                                   ∀f:{x:T| (x ∈ L) c∧ (↑(P x))}  ⟶ T'. ∀x:T'.
                                     ((x ∈ mapfilter(f;P;L)) ⇐⇒ ∃y:T. ((y ∈ L) ∧ ((↑(P y)) c∧ (x = (f y) ∈ T'))))


Proof




Definitions occuring in Statement :  member-mapfilter-witness: member-mapfilter-witness(),  mapfilter: mapfilter(f;P;L),  l_member: (x ∈ l),  list: T List,  assert: ↑b,  bool: 𝔹,  uall: ∀[x:A]. B[x],  cand: A c∧ B,  all: ∀x:A. B[x],  exists: ∃x:A. B[x],  iff: P ⇐⇒ Q,  and: P ∧ Q,  member: t ∈ T,  set: {x:A| B[x]} ,  apply: f a,  function: x:A ⟶ B[x],  universe: Type,  equal: s = t ∈ T
Definitions unfolded in proof :  member: t ∈ T,  member-mapfilter-witness: member-mapfilter-witness(),  member-mapfilter-univ,  member_map_filter,  uall: ∀[x:A]. B[x],  so_lambda: so_lambda(x,y,z,w.t[x; y; z; w]),  so_apply: x[s1;s2;s3;s4],  so_lambda: λ2x y.t[x; y],  top: Top,  so_apply: x[s1;s2],  uimplies: b supposing a,  member-map,  member_map,  select: L[n],  subtract: n - m,  filter: filter(P;l),  reduce: reduce(f;k;as),  list_ind: list_ind,  ifthenelse: if b then t else f fi ,  cons: [a / b],  nil: [],  it: ⋅,  strict4: strict4(F),  and: P ∧ Q,  all: ∀x:A. B[x],  implies: P ⇒ Q,  has-value: (a)↓,  prop: ℙ,  guard: {T},  or: P ∨ Q,  squash: ↓T,  member_filter,  list_induction,  cons_member,  so_lambda: λ2x.t[x],  so_apply: x[s],  decidable__assert,  eq_int: (i =z j),  btrue: tt,  bfalse: ff,  iff_weakening_equal,  uiff_transitivity,  nil_member,  l_member-settype,  assert_of_bnot,  l_member_set2,  select_member
Lemmas referenced :  member-mapfilter-univ,  lifting-strict-spread,  strict4-spread,  has-value_wf_base,  base_wf,  is-exception_wf,  lifting-strict-decide,  top_wf,  equal_wf,  lifting-strict-int_eq,  member_map_filter,  member-map,  member_map,  member_filter,  list_induction,  cons_member,  decidable__assert,  iff_weakening_equal,  uiff_transitivity,  nil_member,  l_member-settype,  assert_of_bnot,  l_member_set2,  select_member
Rules used in proof :  cut,  sqequalSubstitution,  sqequalTransitivity,  computationStep,  sqequalReflexivity,  instantiate,  extract_by_obid,  hypothesis,  sqequalRule,  thin,  sqequalHypSubstitution,  equalityTransitivity,  equalitySymmetry,  introduction,  isectElimination,  baseClosed,  isect_memberEquality,  voidElimination,  voidEquality,  independent_isectElimination,  independent_pairFormation,  lambdaFormation,  callbyvalueApply,  baseApply,  closedConclusion,  hypothesisEquality,  applyExceptionCases,  inrFormation,  imageMemberEquality,  imageElimination,  exceptionSqequal,  inlFormation,  callbyvalueDecide,  unionEquality,  unionElimination,  sqleReflexivity,  dependent_functionElimination,  independent_functionElimination,  decideExceptionCases,  because_Cache

Latex:
member-mapfilter-witness()  \mmember{}  \mforall{}[T:Type]
                                                              \mforall{}L:T  List.  \mforall{}P:\{x:T|  (x  \mmember{}  L)\}    {}\mrightarrow{}  \mBbbB{}.
                                                                  \mforall{}[T':Type]
                                                                      \mforall{}f:\{x:T|  (x  \mmember{}  L)  c\mwedge{}  (\muparrow{}(P  x))\}    {}\mrightarrow{}  T'.  \mforall{}x:T'.
                                                                          ((x  \mmember{}  mapfilter(f;P;L))
                                                                          \mLeftarrow{}{}\mRightarrow{}  \mexists{}y:T.  ((y  \mmember{}  L)  \mwedge{}  ((\muparrow{}(P  y))  c\mwedge{}  (x  =  (f  y)))))



Date html generated: 2017_04_17-AM-07_25_54
Last ObjectModification: 2017_02_27-PM-04_04_53

Theory : list_1


Home Index