Documentation

Cslib.Languages.LambdaCalculus.LocallyNameless.Untyped.FullBeta

β-reduction for the λ-calculus #

References #

A single β-reduction step.

Instances For
    Equations
    • One or more equations did not get rendered due to their size.
    Instances For
      Equations
      • One or more equations did not get rendered due to their size.
      Instances For

        The left side of a reduction is locally closed.

        theorem Cslib.LambdaCalculus.LocallyNameless.Untyped.Term.FullBeta.redex_app_l_cong {Var : Type u} {M M' N : Term Var} (redex : fullBetaRs.MRed M M') (lc_N : N.LC) :
        fullBetaRs.MRed (M.app N) (M'.app N)

        Left congruence rule for application in multiple reduction.

        theorem Cslib.LambdaCalculus.LocallyNameless.Untyped.Term.FullBeta.redex_app_r_cong {Var : Type u} {M M' N : Term Var} (redex : fullBetaRs.MRed M M') (lc_N : N.LC) :
        fullBetaRs.MRed (N.app M) (N.app M')

        Right congruence rule for application in multiple reduction.

        The right side of a reduction is locally closed.

        Substitution respects a single reduction step.

        Abstracting then closing preserves a single reduction.

        Abstracting then closing preserves multiple reductions.

        theorem Cslib.LambdaCalculus.LocallyNameless.Untyped.Term.FullBeta.redex_abs_cong {Var : Type u} {M M' : Term Var} [HasFresh Var] [DecidableEq Var] (xs : Finset Var) (cofin : xxs, fullBetaRs.MRed (M.open' (fvar x)) (M'.open' (fvar x))) :

        Multiple reduction of opening implies multiple reduction of abstraction.