Nuprl Lemma : concat-lifting-list-member

[B:Type]. ∀[n:ℕ]. ∀[m:ℕ1]. ∀[A:ℕn ⟶ Type]. ∀[bags:k:ℕn ⟶ bag(A k)]. ∀[f:funtype(n m;λx.(A (x m));bag(B))].
[b:B].
  (b ↓∈ concat-lifting-list(n;bags) f
  ⇐⇒ ↓∃lst:k:{m..n-} ⟶ (A k). ((∀[k:{m..n-}]. lst k ↓∈ bags k) ∧ b ↓∈ uncurry-gen(n) x.f) lst))


Proof




Definitions occuring in Statement :  concat-lifting-list: concat-lifting-list(n;bags) uncurry-gen: uncurry-gen(n) bag-member: x ↓∈ bs bag: bag(T) funtype: funtype(n;A;T) int_seg: {i..j-} nat: uall: [x:A]. B[x] exists: x:A. B[x] iff: ⇐⇒ Q squash: T and: P ∧ Q apply: a lambda: λx.A[x] function: x:A ⟶ B[x] subtract: m add: m natural_number: $n universe: Type
Definitions unfolded in proof :  bag-member: x ↓∈ bs rev_implies:  Q squash: T iff: ⇐⇒ Q uiff: uiff(P;Q) so_apply: x[s] so_lambda: λ2x.t[x] top: Top false: False exists: x:A. B[x] satisfiable_int_formula: satisfiable_int_formula(fmla) implies:  Q not: ¬A uimplies: supposing a or: P ∨ Q decidable: Dec(P) all: x:A. B[x] ge: i ≥  nat: guard: {T} and: P ∧ Q lelt: i ≤ j < k int_seg: {i..j-} prop: uall: [x:A]. B[x] member: t ∈ T sq_type: SQType(T) subtype_rel: A ⊆B cand: c∧ B uncurry-gen: uncurry-gen(n) concat: concat(ll) bag-union: bag-union(bbs) single-bag: {x} subtract: m lt_int: i <j funtype: funtype(n;A;T) btrue: tt ifthenelse: if then else fi  true: True lifting-gen-list-rev: lifting-gen-list-rev(n;bags) concat-lifting-list: concat-lifting-list(n;bags) bfalse: ff nequal: a ≠ b ∈  le: A ≤ B less_than: a < b assert: b bnot: ¬bb it: unit: Unit bool: 𝔹 gt: i > j sq_stable: SqStable(P) istype: istype(T) less_than': less_than'(a;b) rev_uimplies: rev_uimplies(P;Q)
Lemmas referenced :  nat_wf add-member-int_seg1 int_term_value_subtract_lemma itermSubtract_wf subtract_wf funtype_wf istype-universe int_term_value_add_lemma int_formula_prop_less_lemma itermAdd_wf intformless_wf decidable__lt bag_wf uncurry-gen_wf2 int_seg_wf uall_wf less_than_wf le_wf int_formula_prop_wf int_term_value_var_lemma int_term_value_constant_lemma int_formula_prop_le_lemma int_formula_prop_not_lemma istype-void int_formula_prop_and_lemma istype-int itermVar_wf itermConstant_wf intformle_wf intformnot_wf intformand_wf full-omega-unsat decidable__le nat_properties int_seg_properties exists_wf squash_wf concat-lifting-list_wf bag-member_wf subtract-1-ge-0 add-member-int_seg2 ge_wf subtype_base_sq set_subtype_base int_subtype_base int_formula_prop_eq_lemma intformeq_wf decidable__equal_int bag-subtype-list append_nil_sq reduce_nil_lemma reduce_cons_lemma primrec-unroll iff_weakening_equal subtype_rel_self btrue_wf eq_int_eq_true true_wf equal_wf bool_subtype_base bool_wf bag-combine_wf bag-member-union bfalse_wf eq_int_eq_false lifting-gen-list-rev_wf istype-le istype-less_than funtype-unroll eq_int_wf assert_wf bnot_wf not_wf equal-wf-base istype-assert subtype_rel-equal bool_cases eqtt_to_assert assert_of_eq_int eqff_to_assert iff_transitivity iff_weakening_uiff assert_of_bnot bag-member-combine neg_assert_of_eq_int assert-bnot bool_cases_sqequal le_reflexive add-is-int-iff int_seg_subtype btrue_neq_bfalse int_formula_prop_or_lemma intformor_wf decidable__or subtract-add-cancel easy-member-int_seg apply_uncurry eq_int_eq_false_intro apply_larger_list eq_int_eq_true_intro sq_stable__bag-member bag-union_wf single-bag_wf assert_elim add-commutes add-swap minus-one-mul add-associates le-add-cancel add-zero zero-add zero-mul add-mul-special minus-one-mul-top minus-minus minus-add condition-implies-le not-le-2 istype-false subtype_rel_dep_function int_term_value_mul_lemma itermMultiply_wf apply_gen_wf
Rules used in proof :  functionIsTypeImplies independent_pairEquality baseClosed imageMemberEquality imageElimination lambdaFormation_alt isect_memberFormation_alt universeEquality functionIsType inhabitedIsType addEquality productEquality productIsType sqequalRule voidElimination isect_memberEquality_alt int_eqEquality lambdaEquality_alt dependent_pairFormation_alt independent_functionElimination approximateComputation independent_isectElimination natural_numberEquality unionElimination dependent_functionElimination independent_pairFormation productElimination dependent_set_memberEquality_alt rename setElimination applyEquality because_Cache functionEquality hypothesis hypothesisEquality thin isectElimination sqequalHypSubstitution extract_by_obid introduction cut sqequalReflexivity computationStep sqequalTransitivity sqequalSubstitution universeIsType intWeakElimination equalitySymmetry equalityTransitivity cumulativity instantiate intEquality closedConclusion baseApply equalityIsType4 isectIsType Error :memTop,  equalityIstype sqequalBase functionExtensionality_alt promote_hyp equalityElimination applyLambdaEquality hyp_replacement minusEquality multiplyEquality

Latex:
\mforall{}[B:Type].  \mforall{}[n:\mBbbN{}].  \mforall{}[m:\mBbbN{}n  +  1].  \mforall{}[A:\mBbbN{}n  {}\mrightarrow{}  Type].  \mforall{}[bags:k:\mBbbN{}n  {}\mrightarrow{}  bag(A  k)].
\mforall{}[f:funtype(n  -  m;\mlambda{}x.(A  (x  +  m));bag(B))].  \mforall{}[b:B].
    (b  \mdownarrow{}\mmember{}  concat-lifting-list(n;bags)  m  f
    \mLeftarrow{}{}\mRightarrow{}  \mdownarrow{}\mexists{}lst:k:\{m..n\msupminus{}\}  {}\mrightarrow{}  (A  k)
                ((\mforall{}[k:\{m..n\msupminus{}\}].  lst  k  \mdownarrow{}\mmember{}  bags  k)  \mwedge{}  b  \mdownarrow{}\mmember{}  uncurry-gen(n)  m  (\mlambda{}x.f)  lst))



Date html generated: 2020_05_20-AM-08_03_32
Last ObjectModification: 2020_02_04-PM-02_19_59

Theory : bags


Home Index