### Nuprl Lemma : sublist_filter

`∀[T:Type]. ∀L1,L2:T List. ∀P:T ⟶ 𝔹.  (L2 ⊆ filter(P;L1) `⇐⇒` L2 ⊆ L1 ∧ (∀x∈L2.↑(P x)))`

Proof

Definitions occuring in Statement :  sublist: `L1 ⊆ L2` l_all: `(∀x∈L.P[x])` filter: `filter(P;l)` list: `T List` assert: `↑b` bool: `𝔹` uall: `∀[x:A]. B[x]` all: `∀x:A. B[x]` iff: `P `⇐⇒` Q` and: `P ∧ Q` apply: `f a` function: `x:A ⟶ B[x]` universe: `Type`
Definitions unfolded in proof :  rev_implies: `P `` Q` iff: `P `⇐⇒` Q` top: `Top` it: `⋅` nil: `[]` list_ind: list_ind reduce: `reduce(f;k;as)` filter: `filter(P;l)` implies: `P `` Q` and: `P ∧ Q` istype: `istype(T)` uimplies: `b supposing a` so_apply: `x[s]` subtype_rel: `A ⊆r B` prop: `ℙ` so_lambda: `λ2x.t[x]` member: `t ∈ T` all: `∀x:A. B[x]` uall: `∀[x:A]. B[x]` l_all: `(∀x∈L.P[x])` int_seg: `{i..j-}` guard: `{T}` lelt: `i ≤ j < k` decidable: `Dec(P)` or: `P ∨ Q` not: `¬A` satisfiable_int_formula: `satisfiable_int_formula(fmla)` exists: `∃x:A. B[x]` false: `False` true: `True` bool: `𝔹` unit: `Unit` btrue: `tt` uiff: `uiff(P;Q)` ifthenelse: `if b then t else f fi ` bfalse: `ff` less_than: `a < b` squash: `↓T` cand: `A c∧ B` sq_type: `SQType(T)` assert: `↑b`
Lemmas referenced :  istype-universe filter_cons_lemma cons_wf istype-void filter_nil_lemma nil_wf assert_wf l_all_wf l_member_wf subtype_rel_dep_function filter_wf5 sublist_wf iff_wf bool_wf list_wf list_induction l_all_nil assert_witness select_wf length_of_nil_lemma int_seg_properties decidable__le full-omega-unsat intformand_wf intformnot_wf intformle_wf itermConstant_wf itermVar_wf int_formula_prop_and_lemma int_formula_prop_not_lemma int_formula_prop_le_lemma int_term_value_constant_lemma int_term_value_var_lemma int_formula_prop_wf decidable__lt intformless_wf int_formula_prop_less_lemma int_seg_wf length_wf l_all_wf_nil false_wf cons_sublist_nil true_wf ifthenelse_wf subtype_rel_self set_wf nil_sublist not_wf bnot_wf equal-wf-T-base eqtt_to_assert uiff_transitivity eqff_to_assert assert_of_bnot l_all_cons or_wf equal_wf cons_sublist_cons and_wf assert_elim subtype_base_sq bool_subtype_base istype-assert
Rules used in proof :  universeEquality instantiate inhabitedIsType productIsType functionIsType voidElimination isect_memberEquality_alt dependent_functionElimination independent_functionElimination productEquality rename setElimination independent_isectElimination setIsType setEquality universeIsType because_Cache applyEquality hypothesis functionEquality lambdaEquality_alt sqequalRule hypothesisEquality isectElimination sqequalHypSubstitution extract_by_obid introduction thin cut lambdaFormation_alt isect_memberFormation_alt sqequalReflexivity computationStep sqequalTransitivity sqequalSubstitution lambdaFormation independent_pairFormation isect_memberEquality voidEquality lambdaEquality functionExtensionality cumulativity natural_numberEquality productElimination unionElimination approximateComputation dependent_pairFormation int_eqEquality intEquality independent_pairEquality promote_hyp axiomEquality equalityTransitivity equalitySymmetry baseClosed equalityElimination equalityIstype imageElimination inlFormation inrFormation dependent_set_memberEquality applyLambdaEquality inrFormation_alt hyp_replacement

Latex:
\mforall{}[T:Type].  \mforall{}L1,L2:T  List.  \mforall{}P:T  {}\mrightarrow{}  \mBbbB{}.    (L2  \msubseteq{}  filter(P;L1)  \mLeftarrow{}{}\mRightarrow{}  L2  \msubseteq{}  L1  \mwedge{}  (\mforall{}x\mmember{}L2.\muparrow{}(P  x)))

Date html generated: 2019_10_15-AM-10_22_07
Last ObjectModification: 2019_08_05-PM-02_12_08

Theory : list_1

Home Index