Documentation

Cslib.Languages.LambdaCalculus.LocallyNameless.Untyped.LcAt

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.

depth counts the maximum number of the lambdas that are enclosing variables.

Equations
Instances For
    theorem Cslib.LambdaCalculus.LocallyNameless.Untyped.Term.ind_on_depth {Var : Type u} (P : Term VarProp) (bvar : ∀ (i : ), P (bvar i)) (fvar : ∀ (x : Var), P (fvar x)) (app : ∀ (M N : Term Var), P MP NP (M.app N)) (abs : ∀ (M : Term Var), P M(∀ (N : Term Var), N.depth M.depthP N)P M.abs) (M : Term Var) :
    P M
    @[simp]

    The depth of the lambda expression doesn't change by opening at i-th bound variable for some free variable.

    The depth of the lambda expression doesn't change by opening for some free variable.

    @[simp]
    theorem Cslib.LambdaCalculus.LocallyNameless.Untyped.Term.lcAt_openRec_fvar_iff_lcAt {Var : Type u} (M : Term Var) (x : Var) (i : ) :
    LcAt i (openRec i (fvar x) M) LcAt (i + 1) M

    Opening for some free variable at i-th bound variable, increments LcAt.

    Opening for some free variable is locally closed if and only if M is LcAt 1.

    M is LcAt 0 if and only if M is locally closed.