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) = (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