β-confluence for the λ-calculus #
A parallel β-reduction step.
- fvar
{Var : Type u}
(x : Var)
: (Term.fvar x).Parallel (Term.fvar x)
Free variables parallel step to themselves.
- app
{Var : Type u}
{L L' M M' : Term Var}
: L.Parallel L' → M.Parallel M' → (L.app M).Parallel (L'.app M')
A parallel left and right congruence rule for application.
- abs
{Var : Type u}
{m m' : Term Var}
(xs : Finset Var)
: (∀ x ∉ xs, (m.open' (Term.fvar x)).Parallel (m'.open' (Term.fvar x))) → m.abs.Parallel m'.abs
Congruence rule for lambda terms.
- beta
{Var : Type u}
{m m' n n' : Term Var}
(xs : Finset Var)
: (∀ x ∉ xs, (m.open' (Term.fvar x)).Parallel (m'.open' (Term.fvar x))) →
n.Parallel n' → (m.abs.app n).Parallel (m'.open' n')
A parallel β-reduction.
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_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.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.
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')
:
Parallel substitution respects closing and opening.
theorem
LambdaCalculus.LocallyNameless.Untyped.Term.para_diamond
{Var : Type u}
[HasFresh Var]
[DecidableEq Var]
:
Parallel reduction has the diamond property.
theorem
LambdaCalculus.LocallyNameless.Untyped.Term.para_confluence
{Var : Type u}
[HasFresh Var]
[DecidableEq Var]
:
Parallel reduction is confluent.
theorem
LambdaCalculus.LocallyNameless.Untyped.Term.confluence_beta
{Var : Type u}
[HasFresh Var]
[DecidableEq Var]
:
β-reduction is confluent.