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: T List,  bool: 𝔹,  spreadn: spread3,  uall: ∀[x:A]. B[x],  all: ∀x:A. B[x],  exists: ∃x:A. B[x],  implies: P ⇒ Q,  or: P ∨ Q,  and: P ∧ Q,  function: x:A ⟶ B[x],  pair: <a, b>,  product: x:A × B[x],  universe: Type,  equal: s = t ∈ T
Definitions unfolded in proof :  uall: ∀[x:A]. B[x],  all: ∀x:A. B[x],  implies: P ⇒ Q,  member: t ∈ T,  spreadn: spread3,  squash: ↓T,  prop: ℙ,  iseg: l1 ≤ l2,  exists: ∃x:A. B[x],  true: True,  subtype_rel: A ⊆r B,  uimplies: b supposing a,  guard: {T},  iff: P ⇐⇒ Q,  and: P ∧ Q,  rev_implies: P ⇐ Q,  accum_split: accum_split(g;x;f;L),  so_lambda: λ2x y.t[x; y],  so_apply: x[s1;s2],  or: P ∨ Q,  ifthenelse: if b then t else f 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: A 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