Nuprl Lemma : accum_split_iseg

[T,A:Type].
  ∀x:A. ∀g:(T List × A) ⟶ A. ∀f:(T List × A) ⟶ 𝔹. ∀L1,L2:T List.
    (L1 ≤ L2
     let LL1,X,z1 accum_split(g;x;f;L1) in 
       let LL2,Y,z2 accum_split(g;x;f;L2) in 
       ((LL1 LL2 ∈ ((T List × A) List)) ∧ X ≤ Y ∧ (z1 z2 ∈ A))
       ∨ (∃Z:T List. ∃ZZ:(T List × A) List. (((LL1 [<Z, z1> ZZ]) LL2 ∈ ((T List × A) List)) ∧ X ≤ Z)))


Proof




Definitions occuring in Statement :  accum_split: accum_split(g;x;f;L) iseg: l1 ≤ l2 append: as bs cons: [a b] list: List bool: 𝔹 spreadn: spread3 uall: [x:A]. B[x] all: x:A. B[x] exists: x:A. B[x] implies:  Q or: P ∨ Q and: P ∧ Q function: x:A ⟶ B[x] pair: <a, b> product: x:A × B[x] universe: Type equal: t ∈ T
Definitions unfolded in proof :  uall: [x:A]. B[x] all: x:A. B[x] implies:  Q member: t ∈ T spreadn: spread3 squash: T prop: iseg: l1 ≤ l2 exists: x:A. B[x] true: True subtype_rel: A ⊆B uimplies: supposing a guard: {T} iff: ⇐⇒ Q and: P ∧ Q rev_implies:  Q accum_split: accum_split(g;x;f;L) so_lambda: λ2y.t[x; y] so_apply: x[s1;s2] or: P ∨ Q ifthenelse: if then else fi  btrue: tt cons: [a b] bfalse: ff bool: 𝔹 unit: Unit it: uiff: uiff(P;Q) so_lambda: λ2x.t[x] so_apply: x[s] cand: c∧ B pi1: fst(t) pi2: snd(t) not: ¬A false: False append: as bs so_lambda: so_lambda3 so_apply: x[s1;s2;s3]
Lemmas referenced :  accum_split_wf iseg_wf list_wf bool_wf istype-universe equal_wf squash_wf true_wf subtype_rel_self iff_weakening_equal list_accum_append subtype_rel_list top_wf list_accum_wf list-cases null_nil_lemma cons_wf nil_wf product_subtype_list null_cons_lemma eqtt_to_assert append_wf last_induction all_wf or_wf length_wf exists_wf length-append list_accum_nil_lemma iseg_weakening list_accum_cons_lemma null_wf3 equal-wf-T-base assert_wf bnot_wf not_wf istype-assert istype-void length_of_nil_lemma uiff_transitivity assert_of_null iff_transitivity iff_weakening_uiff eqff_to_assert assert_of_bnot pi1_wf_top pi2_wf iseg_nil nil_iseg append_assoc list_ind_cons_lemma iseg_append
Rules used in proof :  sqequalSubstitution sqequalTransitivity computationStep sqequalReflexivity isect_memberFormation_alt lambdaFormation_alt cut introduction extract_by_obid sqequalHypSubstitution isectElimination thin hypothesisEquality hypothesis inhabitedIsType setElimination rename productElimination applyLambdaEquality sqequalRule imageMemberEquality baseClosed imageElimination equalityIstype equalityTransitivity equalitySymmetry dependent_functionElimination independent_functionElimination universeIsType functionIsType productIsType instantiate universeEquality applyEquality lambdaEquality_alt productEquality because_Cache natural_numberEquality independent_isectElimination Error :memTop,  hyp_replacement unionElimination independent_pairEquality promote_hyp hypothesis_subsumption equalityElimination functionEquality unionIsType inlFormation_alt dependent_set_memberEquality_alt independent_pairFormation voidElimination inrFormation_alt dependent_pairFormation_alt

Latex:
\mforall{}[T,A:Type].
    \mforall{}x:A.  \mforall{}g:(T  List  \mtimes{}  A)  {}\mrightarrow{}  A.  \mforall{}f:(T  List  \mtimes{}  A)  {}\mrightarrow{}  \mBbbB{}.  \mforall{}L1,L2:T  List.
        (L1  \mleq{}  L2
        {}\mRightarrow{}  let  LL1,X,z1  =  accum\_split(g;x;f;L1)  in 
              let  LL2,Y,z2  =  accum\_split(g;x;f;L2)  in 
              ((LL1  =  LL2)  \mwedge{}  X  \mleq{}  Y  \mwedge{}  (z1  =  z2))
              \mvee{}  (\mexists{}Z:T  List.  \mexists{}ZZ:(T  List  \mtimes{}  A)  List.  (((LL1  @  [<Z,  z1>  /  ZZ])  =  LL2)  \mwedge{}  X  \mleq{}  Z)))



Date html generated: 2020_05_20-AM-08_12_25
Last ObjectModification: 2020_01_08-PM-02_52_19

Theory : general


Home Index