Alternative Definitions for LC:
This module defines LcAt k M, a more general definition of local closure. When k = 0, this is
equivalent to LC, as shown in lcAt_iff_LC.
LcAt k M is satisfied when all bound indices of M are smaller than k.
Equations
- One or more equations did not get rendered due to their size.
- Cslib.LambdaCalculus.LocallyNameless.Untyped.Term.LcAt k (Cslib.LambdaCalculus.LocallyNameless.Untyped.Term.bvar i) = decide (i < k)
- Cslib.LambdaCalculus.LocallyNameless.Untyped.Term.LcAt k (Cslib.LambdaCalculus.LocallyNameless.Untyped.Term.fvar a) = true
- Cslib.LambdaCalculus.LocallyNameless.Untyped.Term.LcAt k t.abs = Cslib.LambdaCalculus.LocallyNameless.Untyped.Term.LcAt (k + 1) t
Instances For
theorem Cslib.LambdaCalculus.LocallyNameless.Untyped.Term.ind_on_depth {Var : Type u} (P : Term Var → Prop) (bvar : ∀ (i : ℕ), P (bvar i)) (fvar : ∀ (x : Var), P (fvar x)) (app : ∀ (M N : Term Var), P M → P N → P (M.app N)) (abs : ∀ (M : Term Var), P M → (∀ (N : Term Var), N.depth ≤ M.depth → P N) → P M.abs) (M : Term Var) :
P M
@[instance_reducible]
instance Cslib.LambdaCalculus.LocallyNameless.Untyped.Term.instDecidableLCOfHasFresh {Var : Type u} [HasFresh Var] (t : Term Var) :