Nuprl Lemma : first_index_equal

[T:Type]. ∀[L1,L2:T List]. ∀[P,Q:T ⟶ 𝔹].
  index-of-first in L1.P[a] ∧b Q[a] index-of-first in L2.P[a] ∧b Q[a] ∈ ℤ supposing L1 agree_on(T;a.↑P[a]) L2


Proof




Definitions occuring in Statement :  agree_on: agree_on(T;x.P[x]) first_index: index-of-first in L.P[x] list: List band: p ∧b q assert: b bool: 𝔹 uimplies: supposing a uall: [x:A]. B[x] infix_ap: y so_apply: x[s] function: x:A ⟶ B[x] int: universe: Type equal: t ∈ T
Definitions unfolded in proof :  uall: [x:A]. B[x] member: t ∈ T all: x:A. B[x] nat: implies:  Q false: False ge: i ≥  uimplies: supposing a not: ¬A satisfiable_int_formula: satisfiable_int_formula(fmla) exists: x:A. B[x] top: Top and: P ∧ Q prop: guard: {T} or: P ∨ Q agree_on: agree_on(T;x.P[x]) so_lambda: λ2x.t[x] so_apply: x[s] subtype_rel: A ⊆B cand: c∧ B int_seg: {i..j-} lelt: i ≤ j < k decidable: Dec(P) cons: [a b] colength: colength(L) nil: [] it: sq_type: SQType(T) so_lambda: λ2y.t[x; y] so_apply: x[s1;s2] infix_ap: y select: L[n] le: A ≤ B less_than': less_than'(a;b) less_than: a < b squash: T bool: 𝔹 unit: Unit btrue: tt uiff: uiff(P;Q) band: p ∧b q ifthenelse: if then else fi  bfalse: ff bnot: ¬bb assert: b subtract: m rev_implies:  Q iff: ⇐⇒ Q true: True nat_plus: +
Lemmas referenced :  nat_properties full-omega-unsat intformand_wf intformle_wf itermConstant_wf itermVar_wf intformless_wf istype-int int_formula_prop_and_lemma istype-void int_formula_prop_le_lemma int_term_value_constant_lemma int_term_value_var_lemma int_formula_prop_less_lemma int_formula_prop_wf ge_wf less_than_wf intformeq_wf int_formula_prop_eq_lemma list-cases first_index_wf nil_wf void_wf infix_ap_wf list_wf equal_wf length_wf all_wf int_seg_wf or_wf assert_wf select_wf subtype_rel_list int_seg_properties decidable__le intformnot_wf int_formula_prop_not_lemma decidable__lt istype-universe bool_wf product_subtype_list colength-cons-not-zero agree_on_wf subtract-1-ge-0 subtype_base_sq set_subtype_base int_subtype_base spread_cons_lemma length_of_nil_lemma length_of_cons_lemma stuck-spread istype-base non_neg_length decidable__equal_int itermAdd_wf int_term_value_add_lemma cons_wf colength_wf_list le_wf istype-false subtract_wf itermSubtract_wf int_term_value_subtract_lemma first_index_cons eqtt_to_assert eqff_to_assert bool_cases_sqequal bool_subtype_base assert-bnot bfalse_wf nat_wf add-is-int-iff false_wf add-member-int_seg2 add-associates add-swap add-commutes zero-add add-subtract-cancel iff_weakening_uiff assert_functionality_wrt_uiff select_cons_tl squash_wf true_wf subtype_rel_self iff_weakening_equal decidable__or decidable__assert add_nat_plus length_wf_nat nat_plus_properties ifthenelse_wf lt_int_wf equal-wf-base ite_rw_false not_wf assert_of_lt_int
Rules used in proof :  sqequalSubstitution sqequalTransitivity computationStep sqequalReflexivity isect_memberFormation_alt introduction cut thin lambdaFormation_alt extract_by_obid sqequalHypSubstitution isectElimination hypothesisEquality hypothesis setElimination rename intWeakElimination natural_numberEquality independent_isectElimination approximateComputation independent_functionElimination dependent_pairFormation_alt lambdaEquality_alt int_eqEquality dependent_functionElimination isect_memberEquality_alt voidElimination sqequalRule independent_pairFormation universeIsType axiomEquality equalityTransitivity equalitySymmetry applyLambdaEquality inhabitedIsType functionIsTypeImplies unionElimination because_Cache voidEquality functionExtensionality instantiate applyEquality cumulativity universeEquality productEquality intEquality functionEquality productElimination functionIsType promote_hyp hypothesis_subsumption equalityIsType1 equalityIsType4 baseClosed dependent_set_memberEquality_alt imageElimination baseApply closedConclusion equalityElimination pointwiseFunctionality unionIsType addEquality productIsType inlFormation_alt inrFormation_alt imageMemberEquality hyp_replacement equalityIsType2

Latex:
\mforall{}[T:Type].  \mforall{}[L1,L2:T  List].  \mforall{}[P,Q:T  {}\mrightarrow{}  \mBbbB{}].
    index-of-first  a  in  L1.P[a]  \mwedge{}\msubb{}  Q[a]  =  index-of-first  a  in  L2.P[a]  \mwedge{}\msubb{}  Q[a] 
    supposing  L1  agree\_on(T;a.\muparrow{}P[a])  L2



Date html generated: 2019_10_15-AM-10_58_20
Last ObjectModification: 2018_10_09-AM-09_57_25

Theory : list!


Home Index