Nuprl Lemma : alpha-rename-equivalent

[opr:Type]
  ∀t:term(opr). ∀f:{v:varname()| (v ∈ all-vars(t))}  ⟶ varname().
    alpha-eq-terms(opr;alpha-rename(f;t);t) 
    supposing ((∀x:{v:varname()| (v ∈ all-vars(t))} ((f x ∈ free-vars(t))  ((f x) x ∈ varname())))
    ∧ (∀x:{v:varname()| (v ∈ all-vars(t))} (((f x) nullvar() ∈ varname())  (x nullvar() ∈ varname()))))
    ∧ Inj({v:varname()| (v ∈ all-vars(t))} ;varname();f)


Proof




Definitions occuring in Statement :  alpha-rename: alpha-rename(f;t) all-vars: all-vars(t) free-vars: free-vars(t) alpha-eq-terms: alpha-eq-terms(opr;a;b) term: term(opr) nullvar: nullvar() varname: varname() l_member: (x ∈ l) inject: Inj(A;B;f) uimplies: supposing a uall: [x:A]. B[x] all: x:A. B[x] implies:  Q and: P ∧ Q set: {x:A| B[x]}  apply: a function: x:A ⟶ B[x] universe: Type equal: t ∈ T
Definitions unfolded in proof :  uall: [x:A]. B[x] all: x:A. B[x] member: t ∈ T prop: subtype_rel: A ⊆B so_lambda: λ2x.t[x] so_apply: x[s] uimplies: supposing a implies:  Q iff: ⇐⇒ Q and: P ∧ Q rev_implies:  Q or: P ∨ Q istype: istype(T) guard: {T} not: ¬A false: False bound-term: bound-term(opr) pi2: snd(t) alpha-rename: alpha-rename(f;t) alpha-eq-terms: alpha-eq-terms(opr;a;b) free-vars: free-vars(t) append: as bs so_lambda: so_lambda3 so_apply: x[s1;s2;s3] all-vars: all-vars(t) varterm: varterm(v) cons: [a b] alpha-rename-aux: alpha-rename-aux(f;bnds;t) bool: 𝔹 unit: Unit it: btrue: tt uiff: uiff(P;Q) ifthenelse: if then else fi  alpha-aux: alpha-aux(opr;vs;ws;a;b) sq_stable: SqStable(P) squash: T bfalse: ff exists: x:A. B[x] sq_type: SQType(T) bnot: ¬bb assert: b inject: Inj(A;B;f) label: ...$L... t true: True l_member: (x ∈ l) nat: le: A ≤ B less_than': less_than'(a;b) select: L[n] cand: c∧ B nat_plus: + decidable: Dec(P) satisfiable_int_formula: satisfiable_int_formula(fmla) ge: i ≥  same-binding: same-binding(vs;ws;v;w) map: map(f;as) list_ind: list_ind so_lambda: λ2y.t[x; y] so_apply: x[s1;s2] rev_uimplies: rev_uimplies(P;Q) band: p ∧b q free-vars-aux: free-vars-aux(bnds;t) nil: [] colength: colength(L) less_than: a < b mkterm: mkterm(opr;bts) pi1: fst(t) has-value: (a)↓ lelt: i ≤ j < k int_seg: {i..j-} reverse: rev(as) respects-equality: respects-equality(S;T)
Lemmas referenced :  list-subtype varname_wf map_wf l_member_wf subtype_rel_dep_function append_wf all-vars_wf subtype_rel_sets_simple member_append list_wf term_wf term-induction all_wf isect_wf free-vars-aux_wf equal_wf equal-wf-T-base inject_wf alpha-aux_wf alpha-rename-aux_wf nullvar_wf varterm_wf subtype_rel_list not_wf istype-void mkterm_wf bound-term_wf nil_wf list_ind_nil_lemma map_nil_lemma istype-universe deq-member_wf var-deq_wf eqtt_to_assert assert-deq-member sq_stable_from_decidable assert_wf same-binding_wf decidable__assert eqff_to_assert bool_cases_sqequal subtype_base_sq bool_wf bool_subtype_base assert-bnot cons_wf member_wf iff_weakening_equal list_induction null_nil_lemma btrue_wf member-implies-null-eq-bfalse btrue_neq_bfalse istype-assert istype-le length_of_cons_lemma add_nat_plus length_wf_nat decidable__lt full-omega-unsat intformnot_wf intformless_wf itermConstant_wf istype-int int_formula_prop_not_lemma int_formula_prop_less_lemma int_term_value_constant_lemma int_formula_prop_wf istype-less_than nat_plus_properties add-is-int-iff intformand_wf itermVar_wf itermAdd_wf intformeq_wf int_formula_prop_and_lemma int_term_value_var_lemma int_term_value_add_lemma int_formula_prop_eq_lemma false_wf length_wf select_wf nat_properties decidable__le intformle_wf int_formula_prop_le_lemma eq_var_wf assert-eq_var iff_weakening_uiff map_cons_lemma spread_cons_lemma iff_transitivity bnot_wf bool_cases band_wf cons_member bfalse_wf assert_of_band assert_of_bnot member_map subtype_rel_sets l_member-settype map-length ge_wf assert_witness list-cases length_of_nil_lemma product_subtype_list colength-cons-not-zero subtract-1-ge-0 set_subtype_base int_subtype_base le_weakening2 non_neg_length colength_wf_list decidable__equal_int subtract_wf itermSubtract_wf int_term_value_subtract_lemma le_wf istype-nat member-all-vars-mkterm pi1_wf pi2_wf member-rev-append rev-append_wf eager-map_wf product-value-type value-type-has-value list-value-type eager-map-is-map int_seg_wf alpha-aux-mkterm map_length squash_wf true_wf subtype_rel_self top_wf int_seg_properties select-map map-reverse map_append_sq rev-append-property select_member sq_stable__equal sq_stable__all member-l-union-list respects-equality-set-trivial2 respects-equality-list member-map inject-subtype respects-equality-trivial respects-equality-sets strong-subtype-iff-respects-equality less_than_wf length-map
Rules used in proof :  sqequalSubstitution sqequalTransitivity computationStep sqequalReflexivity isect_memberFormation_alt cut lambdaFormation_alt introduction extract_by_obid sqequalHypSubstitution isectElimination thin hypothesis hypothesisEquality setEquality applyEquality sqequalRule lambdaEquality_alt setIsType universeIsType because_Cache independent_isectElimination dependent_functionElimination productElimination independent_functionElimination inlFormation_alt functionIsType functionEquality setElimination rename productEquality dependent_set_memberEquality_alt baseClosed productIsType equalityIstype equalityTransitivity equalitySymmetry voidElimination inhabitedIsType isectIsType Error :memTop,  instantiate universeEquality unionElimination equalityElimination imageMemberEquality imageElimination dependent_pairFormation_alt promote_hyp cumulativity hyp_replacement applyLambdaEquality natural_numberEquality independent_pairFormation approximateComputation pointwiseFunctionality baseApply closedConclusion int_eqEquality inrFormation_alt isect_memberEquality_alt intWeakElimination functionIsTypeImplies sqequalBase hypothesis_subsumption addEquality intEquality independent_pairEquality unionIsType dependent_pairEquality_alt callbyvalueReduce axiomEquality spreadEquality

Latex:
\mforall{}[opr:Type]
    \mforall{}t:term(opr).  \mforall{}f:\{v:varname()|  (v  \mmember{}  all-vars(t))\}    {}\mrightarrow{}  varname().
        alpha-eq-terms(opr;alpha-rename(f;t);t) 
        supposing  ((\mforall{}x:\{v:varname()|  (v  \mmember{}  all-vars(t))\}  .  ((f  x  \mmember{}  free-vars(t))  {}\mRightarrow{}  ((f  x)  =  x)))
        \mwedge{}  (\mforall{}x:\{v:varname()|  (v  \mmember{}  all-vars(t))\}  .  (((f  x)  =  nullvar())  {}\mRightarrow{}  (x  =  nullvar()))))
        \mwedge{}  Inj(\{v:varname()|  (v  \mmember{}  all-vars(t))\}  ;varname();f)



Date html generated: 2020_05_19-PM-09_56_58
Last ObjectModification: 2020_03_09-PM-04_09_30

Theory : terms


Home Index