General properties of opening and substitution in untyped lambda calculus terms.
theorem Cslib.LambdaCalculus.LocallyNameless.Untyped.Term.subst_fresh {Var : Type u} [DecidableEq Var] (x : Var) (t sub : Term Var) (nmem : x ∉ t.fv) :
Substitution of a free variable not present in a term leaves it unchanged.
theorem Cslib.LambdaCalculus.LocallyNameless.Untyped.Term.open_close_var {Var : Type u} [DecidableEq Var] (x : Var) (t : Term Var) (nmem : x ∉ t.fv) :
Specializes open_close to the first closing.
theorem Cslib.LambdaCalculus.LocallyNameless.Untyped.Term.swap_open_fvar_close {Var : Type u} [DecidableEq Var] (k n : ℕ) (x y : Var) (m : Term Var) (neq₁ : k ≠ n) (neq₂ : x ≠ y) :
Opening and closing are associative for nonclashing free variables.
theorem Cslib.LambdaCalculus.LocallyNameless.Untyped.Term.close_var_not_fvar {Var : Type u} [DecidableEq Var] (x : Var) (t : Term Var) :
Specializes close_var_not_fvar_rec to first closing.
theorem Cslib.LambdaCalculus.LocallyNameless.Untyped.Term.subst_refl {Var : Type u} [DecidableEq Var] (m : Term Var) (x : Var) :
theorem Cslib.LambdaCalculus.LocallyNameless.Untyped.Term.subst_openRec {Var : Type u} [DecidableEq Var] [HasFresh Var] (x : Var) (t : Term Var) (k : ℕ) (u e : Term Var) (lc : t.LC) :
Substitution of a locally closed term distributes with opening.