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.