Documentation

Cslib.Computability.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

      Pretty printer defined by notation3 command.

      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

          Pretty printer defined by notation3 command.

          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 LambdaCalculus.LocallyNameless.Untyped.Term.FullBeta.redex_app_l_cong {Var : Type u} {M M' N : Term Var} (redex : M βᶠ M') (lc_N : N.LC) :
            M.app N βᶠ M'.app N

            Left congruence rule for application in multiple reduction.

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

            Right congruence rule for application in multiple reduction.

            theorem LambdaCalculus.LocallyNameless.Untyped.Term.FullBeta.step_lc_r {Var : Type u} {M M' : Term Var} [HasFresh Var] [DecidableEq Var] (step : M βᶠ M') :
            M'.LC

            The right side of a reduction is locally closed.

            theorem LambdaCalculus.LocallyNameless.Untyped.Term.FullBeta.redex_subst_cong {Var : Type u} [HasFresh Var] [DecidableEq Var] (s s' : Term Var) (x y : Var) (step : s βᶠ s') :

            Substitution respects a single reduction step.

            theorem LambdaCalculus.LocallyNameless.Untyped.Term.FullBeta.step_abs_close {Var : Type u} {M M' : Term Var} [HasFresh Var] [DecidableEq Var] {x : Var} (step : M βᶠ M') :
            (closeRec 0 x M).abs βᶠ (closeRec 0 x M').abs

            Abstracting then closing preserves a single reduction.

            theorem LambdaCalculus.LocallyNameless.Untyped.Term.FullBeta.redex_abs_close {Var : Type u} {M M' : Term Var} [HasFresh Var] [DecidableEq Var] {x : Var} (step : M βᶠ M') :
            (closeRec 0 x M).abs βᶠ (closeRec 0 x M').abs

            Abstracting then closing preserves multiple reductions.

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

            Multiple reduction of opening implies multiple reduction of abstraction.