Free (total) combinatory algebra #
The underlying expressions fo the free combinatory algebra
- K: FreeCA.Expr
- S: FreeCA.Expr
- app: FreeCA.Expr → FreeCA.Expr → FreeCA.Expr
Instances For
Equations
- FreeCA.exprHasDot = { dot := FreeCA.Expr.app }
The equational axioms of the free combinatory algebra. Symmetry and transitivity are commented out because so far we have not needed them.
- refl: ∀ {a : FreeCA.Expr}, a ≈ a
- app: ∀ {a b c d : FreeCA.Expr}, a ≈ b → c ≈ d → a ⬝ c ≈ b ⬝ d
- K: ∀ {a b : FreeCA.Expr}, (FreeCA.Expr.K.app a).app b ≈ a
- S: ∀ {a b c : FreeCA.Expr}, ((FreeCA.Expr.S.app a).app b).app c ≈ (a.app c).app (b.app c)
Instances For
The equational axioms of the free combinatory algebra. Symmetry and transitivity are commented out because so far we have not needed them.
Equations
- FreeCA.«term_≈_» = Lean.ParserDescr.trailingNode `FreeCA.«term_≈_» 40 41 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol " ≈ ") (Lean.ParserDescr.cat `term 41))
Instances For
@[reducible]
The carrier of the free total combinatory algebra
Equations
Instances For
Equations
- FreeCA.hasDot = { dot := Quot.lift₂ (fun (x y : FreeCA.Expr) => FreeCA.mk (x ⬝ y)) FreeCA.hasDot.proof_1 FreeCA.hasDot.proof_2 }
@[simp]
The free combinatory algebra