Nuprl Lemma : accum_split_wf

[A,T:Type]. ∀[f:(T List × A) ⟶ 𝔹]. ∀[g:(T List × A) ⟶ A]. ∀[x:A]. ∀[L:T List].
  (accum_split(g;x;f;L) ∈ {p:(T List × A) List × List × A| let LL,L2 in is_accum_splitting(T;A;L;LL;L2;f;g;x)} )


Proof




Definitions occuring in Statement :  accum_split: accum_split(g;x;f;L) is_accum_splitting: is_accum_splitting(T;A;L;LL;L2;f;g;x) list: List bool: 𝔹 uall: [x:A]. B[x] member: t ∈ T set: {x:A| B[x]}  function: x:A ⟶ B[x] spread: spread def product: x:A × B[x] universe: Type
Definitions unfolded in proof :  squash: T less_than: a < b sq_type: SQType(T) so_apply: x[s] so_lambda: λ2x.t[x] subtype_rel: A ⊆B or: P ∨ Q decidable: Dec(P) le: A ≤ B lelt: i ≤ j < k int_seg: {i..j-} guard: {T} prop: and: P ∧ Q exists: x:A. B[x] satisfiable_int_formula: satisfiable_int_formula(fmla) not: ¬A uimplies: supposing a ge: i ≥  false: False implies:  Q nat: all: x:A. B[x] member: t ∈ T uall: [x:A]. B[x] bfalse: ff cons: [a b] iff: ⇐⇒ Q true: True cand: c∧ B concat: concat(ll) it: nil: [] select: L[n] so_apply: x[s1;s2;s3] so_lambda: so_lambda3 append: as bs pi2: snd(t) pi1: fst(t) is_accum_splitting: is_accum_splitting(T;A;L;LL;L2;f;g;x) so_apply: x[s1;s2] so_lambda: λ2y.t[x; y] accum_split: accum_split(g;x;f;L) btrue: tt ifthenelse: if then else fi  assert: b less_than': less_than'(a;b) subtract: m sq_stable: SqStable(P) uiff: uiff(P;Q) rev_implies:  Q int_iseg: {i...j} unit: Unit bool: 𝔹 spreadn: spread3 listp: List+ nat_plus: +
Lemmas referenced :  istype-universe bool_wf list_wf length_wf_nat istype-nat int_term_value_add_lemma itermAdd_wf top_wf subtype_rel_list null_wf3 decidable__assert length_wf non_neg_length subtype_rel_self istype-le decidable__lt decidable__le int_term_value_subtract_lemma int_formula_prop_eq_lemma int_formula_prop_not_lemma itermSubtract_wf intformeq_wf intformnot_wf int_subtype_base set_subtype_base subtype_base_sq subtract_wf decidable__equal_int subtract-1-ge-0 int_seg_wf int_seg_properties istype-less_than ge_wf int_formula_prop_wf int_formula_prop_less_lemma int_term_value_var_lemma int_term_value_constant_lemma int_formula_prop_le_lemma int_formula_prop_and_lemma istype-int intformless_wf itermVar_wf itermConstant_wf intformle_wf intformand_wf full-omega-unsat nat_properties length_of_cons_lemma null_cons_lemma product_subtype_list is_accum_splitting_wf iseg_wf istype-assert iseg_nil istype-void l_all_nil reduce_hd_cons_lemma reduce_nil_lemma istype-base stuck-spread list_ind_nil_lemma map_nil_lemma nil_wf list_accum_nil_lemma length_of_nil_lemma null_nil_lemma list-cases iff_weakening_equal false_wf subtract-is-int-iff le-add-cancel2 add-zero add_functionality_wrt_le add-commutes add-associates minus-one-mul-top add-swap minus-one-mul minus-add condition-implies-le sq_stable__le not-le-2 istype-false subtract_nat_wf length_firstn_eq true_wf squash_wf less_than_wf firstn_wf last-lemma-sq list_accum_append assert_of_bnot eqff_to_assert iff_weakening_uiff iff_transitivity assert_of_null uiff_transitivity not_wf bnot_wf assert_wf equal-wf-T-base append_wf eqtt_to_assert last_wf cons_wf list_accum_cons_lemma list_ind_cons_lemma pi1_wf_top map_wf concat_wf append_back_nil iseg_single map_cons_lemma length-append select_wf equal_wf select_append_front pi2_wf select_append_back length-singleton add-member-int_seg2 map_append_sq concat_append concat-single l_all_single all_wf l_all_append add-is-int-iff nat_plus_properties add_nat_plus hd-append-sq add-subtract-cancel length_append le_wf select-cons-hd length_cons length_nil append_assoc btrue_neq_bfalse not_assert_elim assert_elim iseg_append_single
Rules used in proof :  universeEquality functionIsType isectIsTypeImplies isect_memberEquality_alt addEquality imageElimination hypothesis_subsumption promote_hyp productIsType dependent_set_memberEquality_alt applyLambdaEquality because_Cache instantiate applyEquality unionElimination productElimination inhabitedIsType functionIsTypeImplies equalitySymmetry equalityTransitivity axiomEquality voidElimination universeIsType independent_pairFormation Error :memTop,  dependent_functionElimination int_eqEquality lambdaEquality_alt dependent_pairFormation_alt independent_functionElimination approximateComputation independent_isectElimination natural_numberEquality intWeakElimination sqequalRule rename setElimination hypothesis hypothesisEquality isectElimination sqequalHypSubstitution extract_by_obid lambdaFormation_alt thin cut introduction isect_memberFormation_alt sqequalReflexivity computationStep sqequalTransitivity sqequalSubstitution equalityIstype baseClosed productEquality independent_pairEquality closedConclusion baseApply pointwiseFunctionality minusEquality imageMemberEquality equalityElimination intEquality cumulativity dependent_pairEquality_alt hyp_replacement setIsType functionEquality voidEquality

Latex:
\mforall{}[A,T:Type].  \mforall{}[f:(T  List  \mtimes{}  A)  {}\mrightarrow{}  \mBbbB{}].  \mforall{}[g:(T  List  \mtimes{}  A)  {}\mrightarrow{}  A].  \mforall{}[x:A].  \mforall{}[L:T  List].
    (accum\_split(g;x;f;L)  \mmember{}  \{p:(T  List  \mtimes{}  A)  List  \mtimes{}  T  List  \mtimes{}  A| 
                                                      let  LL,L2  =  p 
                                                      in  is\_accum\_splitting(T;A;L;LL;L2;f;g;x)\}  )



Date html generated: 2020_05_20-AM-08_12_08
Last ObjectModification: 2020_01_22-PM-03_22_52

Theory : general


Home Index