Documentation

Cslib.Computability.LambdaCalculus.LocallyNameless.Untyped.FullBetaConfluence

β-confluence for the λ-calculus #

A parallel β-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

        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
            theorem LambdaCalculus.LocallyNameless.Untyped.Term.para_lc_l {Var : Type u} {M N : Term Var} (step : M N) :
            M.LC

            The left side of a parallel reduction is locally closed.

            Parallel reduction is reflexive for locally closed terms.

            theorem LambdaCalculus.LocallyNameless.Untyped.Term.para_lc_r {Var : Type u} {M N : Term Var} [HasFresh Var] [DecidableEq Var] (step : M N) :
            N.LC

            The right side of a parallel reduction is locally closed.

            theorem LambdaCalculus.LocallyNameless.Untyped.Term.step_to_para {Var : Type u} {M N : Term Var} (step : M βᶠ N) :
            M N

            A single β-reduction implies a single parallel reduction.

            theorem LambdaCalculus.LocallyNameless.Untyped.Term.para_to_redex {Var : Type u} {M N : Term Var} [HasFresh Var] [DecidableEq Var] (para : M N) :

            A single parallel reduction implies a multiple β-reduction.

            Multiple parallel reduction is equivalent to multiple β-reduction.

            theorem LambdaCalculus.LocallyNameless.Untyped.Term.para_subst {Var : Type u} {M M' N N' : Term Var} [HasFresh Var] [DecidableEq Var] (x : Var) (pm : M M') (pn : N N') :
            M[x:=N] M'[x:=N']

            Parallel reduction respects substitution.

            theorem LambdaCalculus.LocallyNameless.Untyped.Term.para_open_close {Var : Type u} {M M' : Term Var} [HasFresh Var] [DecidableEq Var] (x y : Var) (z : ) (para : M M') :
            yM.fv M'.fv {x}openRec z (fvar y) (closeRec z x M) openRec z (fvar y) (closeRec z x M')

            Parallel substitution respects closing and opening.

            theorem LambdaCalculus.LocallyNameless.Untyped.Term.para_open_out {Var : Type u} {M M' N N' : Term Var} [HasFresh Var] [DecidableEq Var] (L : Finset Var) (mem : xL, M.open' (fvar x) N.open' (fvar x)) (para : M' N') :
            M.open' M' N.open' N'

            Parallel substitution respects fresh opening.

            Parallel reduction has the diamond property.