Theorem 7.6 (Scott 1981, PRG-19, ยง7) โ fix : (๐ โ ๐) โ ๐ is computable #
Following Dana Scott, Lectures on a Mathematical Theory of Computation, PRG-19, Lecture VII.
Theorem 7.6. For any effectively given domain
๐, the combinatorfix : (๐ โ ๐) โ ๐is computable.
Scott's proof reads off the neighbourhood relation of fix from the fixed-point
construction of
Theorem 4.1/4.2: writing ๐ = {Xโ} effectively given,
โ_{i<q} [X_{nแตข}, X_{mแตข}] fix X_โ iff for some finite sequence ฮ = X_{kโ}, โฆ, X_{k_p} = X_โ
we have, for each j < p, โ{ X_{mแตข} โฃ X_{kโฑผ} โ X_{nแตข} } โ X_{kโฑผโโ}.
Inside "for some finite sequence" all the checks are decidable (by the effective presentation), and the existential quantification of a decidable predicate is recursively enumerable. (Since there is no bound on the length of the sequence, this is genuinely r.e. and not generally recursive.)
Strategy (choice-free) #
The function-space neighbourhood F = Xenum c (Theorem 7.5) is a finite
intersection
โ[X_{nแตข}, X_{mแตข}]; its least map is ฤ = toApproxMap (โF), and (fix V).rel F (X_โ) unfolds via
rel_iff_mem_principal + fixMap_toElementMap + mem_fixElement to
โ p, (ฤแต).rel ฮ (X_โ).
The one-step relation ฤ.rel (X_a) (X_b) โ F โ [X_a, X_b] is exactly Scott's
โ{X_{mแตข} โฃ X_a โ X_{nแตข}} โ X_b, and โ crucially โ it is recursively
decidable, because
[X_a, X_b] = Xenum (codePair a b) (a one-entry, always-consistent function-space
neighbourhood) so
the test is the decidable function-space inclusion Xenum c โ Xenum (codePair a b)
(funPresentation.incl_computable, Theorem 7.5).
We model a finite ฤ-chain by a list of indices (using surj to name each
intermediate
neighbourhood) and prove the characterisation (fix V).rel (Xenum c) (X_โ) โ โ full, gStepsOK โฆ
(soundness/completeness over the list, choice-free). The existential over the list
is then realised
as the r.e. โ i, q (pair i n), where q decodes i to the chain, runs a single
primitive-recursive
foldCode (fixChainChar) threading the previous index and a {0,1} consistency
flag, and checks
the flag together with the final inclusion X_{last} โ X_โ. Everything audits
โ {propext, Quot.sound}.
A finite g-chain over presentation indices. #
gStepsOK g P a full says: starting from the index a, the consecutive g-steps
along the index
list full all hold, and gLastOf a full is the final index reached.
The last index of the chain a, fullโ, fullโ, โฆ.
Equations
- Domain.Neighborhood.gLastOf xโ [] = xโ
- Domain.Neighborhood.gLastOf xโ (b :: rest) = Domain.Neighborhood.gLastOf b rest
Instances For
The consecutive g-steps g.rel (X_a) (X_{fullโ}), g.rel (X_{fullโ}) (X_{fullโ}), โฆ all
hold.
Equations
- Domain.Neighborhood.gStepsOK g P xโ [] = True
- Domain.Neighborhood.gStepsOK g P xโ (b :: rest) = (g.rel (P.X xโ) (P.X b) โง Domain.Neighborhood.gStepsOK g P b rest)
Instances For
Soundness of a chain. A valid g-chain from a realises the iterate
relation
(gแต).rel (X_a) (X_{last}) with k the chain length.
Completeness of a chain. If (gโฟ).rel (X_a) (X_โ), then there is a valid
g-chain from a
whose final neighbourhood is contained in X_โ. (The intermediate neighbourhoods
are named via
surj; the relaxed final condition X_{last} โ X_โ handles the n = 0 base.)
Chain characterisation of g's least fixed point. A neighbourhood X_โ
is in fix(g)
iff a
valid g-chain (from a master index aโ with X_{aโ} = ฮ) reaches a final
neighbourhood inside
X_โ.
The least map of Xenum c and its decidable one-step relation. #
The one-entry function-space code: Xenum (codePair a b) = [X_a, X_b].
Equations
- Domain.Neighborhood.codePair a b = Nat.pair (Nat.pair a b) 0 + 1
Instances For
Xenum (codePair a b) = [X_a, X_b] (a one-entry, always-consistent
function-space
neighbourhood); a thin wrapper around Xenum_singleton.
The least map ฤ of the function-space neighbourhood Xenum c relates X_a
to X_b exactly
when Xenum c โ [X_a, X_b] (Scott's โ{X_{mแตข} โฃ X_a โ X_{nแตข}} โ X_b).
The fix neighbourhood relation, chain form. (fix V).rel (Xenum c) (X_โ) holds iff
there is
a valid least-map chain from the master index reaching a neighbourhood inside
X_โ. This is Scott's
"โ[X_{nแตข}, X_{mแตข}] fix X_โ iff for some finite sequence โฆ".
The decidable chain predicate and its primitive-recursive foldCode. #
The decidable mirror of gStepsOK, phrased with the function-space inclusion
char fincl.
Equations
- Domain.Neighborhood.chainDec fincl c xโ [] = True
- Domain.Neighborhood.chainDec fincl c xโ (b :: rest) = (fincl (Nat.pair c (Domain.Neighborhood.codePair xโ b)) = 1 โง Domain.Neighborhood.chainDec fincl c b rest)
Instances For
chainDec is equivalent to gStepsOK of the least map, via the inclusion
char's spec and
Xenum (codePair a b) = [X_a, X_b].
The chain foldCode: starts from pair masterIdx 1, threads the parameter
c, over the list
coded by i. Returns pair lastIdx flag.
Equations
- Domain.Neighborhood.fixChainChar P fincl c i = Domain.Recursive.foldCode (Domain.Neighborhood.fixStp fincl) c (Nat.pair P.masterIdx 1) i
Instances For
The foldCode flag is 1 iff the start flag is 1 and the whole chain is
consistent.
Read-off of the foldCode: its .1 is the last index of decodeList i, and
its .2 = 1 iff
the decoded chain is consistent.
Theorem 7.6 (Scott 1981, PRG-19) โ fix is computable (choice-free). For
any effectively
given domain ๐ (here a computable presentation P of V, together with the
function-space
consistency/inclusion/equality chars of Theorem 7.5), the combinator fix : (๐ โ ๐) โ ๐ is
computable: its neighbourhood relation is the recursively-enumerable existential
โ chain over the
decidable least-map step relation.