Nuprl Lemma : list_split_iseg

[T:Type]
  ∀f:(T List) ⟶ 𝔹. ∀L1,L2:T List.
    (L1 ≤ L2
     let LL1,X list_split(f;L1) 
       in let LL2,Y list_split(f;L2) 
          in ((LL1 LL2 ∈ (T List List)) ∧ X ≤ Y)
             ∨ (∃Z:T List. ∃ZZ:T List List. (((LL1 [Z ZZ]) LL2 ∈ (T List List)) ∧ X ≤ Z)))


Proof




Definitions occuring in Statement :  list_split: list_split(f;L) iseg: l1 ≤ l2 append: as bs cons: [a b] list: List bool: 𝔹 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] spread: spread def universe: Type equal: t ∈ T
Definitions unfolded in proof :  uall: [x:A]. B[x] all: x:A. B[x] implies:  Q member: t ∈ T so_lambda: λ2x.t[x] prop: so_apply: x[s] squash: T 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 list_split: list_split(f;L) top: Top 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) sq_type: SQType(T) bnot: ¬bb assert: b false: False cand: c∧ B pi1: fst(t) pi2: snd(t) not: ¬A append: as bs so_lambda: so_lambda(x,y,z.t[x; y; z]) so_apply: x[s1;s2;s3]
Lemmas referenced :  list_split_wf list_wf set_wf is_list_splitting_wf equal_wf iseg_wf bool_wf squash_wf true_wf append_wf 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 eqff_to_assert bool_cases_sqequal subtype_base_sq bool_subtype_base assert-bnot last_induction all_wf or_wf length_wf exists_wf length-append list_accum_nil_lemma iseg_weakening and_wf pi1_wf_top subtype_rel_product pi2_wf list_accum_cons_lemma null_wf3 equal-wf-T-base assert_wf bnot_wf not_wf uiff_transitivity assert_of_null iff_transitivity iff_weakening_uiff assert_of_bnot iseg_nil length_wf_nat nat_wf nil_iseg append_assoc list_ind_cons_lemma iseg_append
Rules used in proof :  sqequalSubstitution sqequalTransitivity computationStep sqequalReflexivity isect_memberFormation lambdaFormation cut introduction extract_by_obid sqequalHypSubstitution isectElimination thin cumulativity hypothesisEquality functionExtensionality applyEquality hypothesis productEquality sqequalRule lambdaEquality spreadEquality productElimination independent_pairEquality setElimination rename applyLambdaEquality imageMemberEquality baseClosed imageElimination equalityTransitivity equalitySymmetry dependent_functionElimination independent_functionElimination functionEquality universeEquality because_Cache natural_numberEquality setEquality independent_isectElimination isect_memberEquality voidElimination voidEquality hyp_replacement unionElimination promote_hyp hypothesis_subsumption equalityElimination dependent_pairFormation instantiate inlFormation dependent_set_memberEquality independent_pairFormation impliesFunctionality inrFormation

Latex:
\mforall{}[T:Type]
    \mforall{}f:(T  List)  {}\mrightarrow{}  \mBbbB{}.  \mforall{}L1,L2:T  List.
        (L1  \mleq{}  L2
        {}\mRightarrow{}  let  LL1,X  =  list\_split(f;L1) 
              in  let  LL2,Y  =  list\_split(f;L2) 
                    in  ((LL1  =  LL2)  \mwedge{}  X  \mleq{}  Y)
                          \mvee{}  (\mexists{}Z:T  List.  \mexists{}ZZ:T  List  List.  (((LL1  @  [Z  /  ZZ])  =  LL2)  \mwedge{}  X  \mleq{}  Z)))



Date html generated: 2018_05_21-PM-08_05_14
Last ObjectModification: 2017_07_26-PM-05_41_11

Theory : general


Home Index