The Mathlib computability library has theorems stating that Gödel codes
of partial computable maps exist, but has no way of actually constructing
them, because Nat.Partrec maps into Prop, evan though the proofs all
seem to be explicit enough that the codes could be extracted.
Consequently and unfortunately, we construct the first Kleene algebra in
a non-computable manner.
@[reducible]
Instances For
Equations
- FirstKleeneAlgebra.partialApplication = { app := fun (u v : Part ℕ) => u.bind fun (m : ℕ) => v.bind fun (n : ℕ) => FirstKleeneAlgebra.app m n }
theorem
FirstKleeneAlgebra.eq_ofNat_encodeCode
(c : Nat.Partrec.Code)
:
Denumerable.ofNat Nat.Partrec.Code c.encodeCode = c
@[reducible]
Instances For
Equations
Instances For
theorem
FirstKleeneAlgebra.K_spec :
FirstKleeneAlgebra.K.eval = fun (n : ℕ) => Part.some (Nat.Partrec.Code.const n).encodeCode
def
FirstKleeneAlgebra.Partrec₃
{α β γ σ : Type}
[Primcodable α]
[Primcodable β]
[Primcodable γ]
[Primcodable σ]
(f : α → β → γ →. σ)
:
Partially recursive partial functions α → β → σ between Primcodable types
Equations
- FirstKleeneAlgebra.Partrec₃ f = Partrec fun (p : α × β × γ) => f p.1 p.2.1 p.2.2
Instances For
Equations
- One or more equations did not get rendered due to their size.