Theory Abstract_Encoding
chapter ‹Abstract Encoding›
theory Abstract_Encoding imports Deduction2
begin
text ‹Here we simply fix some unspecified encoding functions: encoding formulas
and proofs as numerals.›
locale Encode =
Syntax_with_Numerals
var trm fmla Var FvarsT substT Fvars subst
num
for
var :: "'var set" and trm :: "'trm set" and fmla :: "'fmla set"
and Var FvarsT substT Fvars subst
and num
+
fixes enc :: "'fmla ⇒ 'trm" ("⟨_⟩")
assumes
enc[simp,intro!]: "⋀ φ. φ ∈ fmla ⟹ enc φ ∈ num"
begin
end
text ‹Explicit proofs (encoded as numbers), needed only for the harder half of
Goedel's first, and for both half's of Rosser's version; not needed in Goedel's
second.›
locale Encode_Proofs =
Encode
var trm fmla Var FvarsT substT Fvars subst
num
enc
+
Deduct2_with_Proofs
var trm fmla Var FvarsT substT Fvars subst
eql cnj imp all exi
fls
dsj
num
prv bprv
"proof" prfOf
for
var :: "'var set" and trm :: "'trm set" and fmla :: "'fmla set"
and Var FvarsT substT Fvars subst
and num
and eql cnj imp all exi
and prv bprv
and enc ("⟨_⟩")
and fls dsj
and "proof" :: "'proof set" and prfOf
+
fixes encPf :: "'proof ⇒ 'trm"
assumes
encPf[simp,intro!]: "⋀ pf. pf ∈ proof ⟹ encPf pf ∈ num"
end