Theorem A.2 (Rice's Theorem, second generalization) — a decidable promise problem closed under is decided by a simulator with and
ProvedObfImpossibility.RiceSimulator.theorem_A_2Let be a promise problem on machines that is closed under (functionally equivalent machines lie in the same parts of ) and decidable (some machine outputs on the description of every and on the description of every ). Then there exists a single oracle machine such that, for every machine ,
Here receives only the size of as input and oracle access to the bounded-run function ; it does not see the description of . Both equalities include that halts.
This is the paper's computability-theoretic form of the slogan "the only useful thing you can do with a machine is run it": any semantic property of machines that can be decided from their code, even only on a promise, can already be decided by running the machine on inputs of one's choice for budgets of one's choice, given a bound on its size.
Formalization Note is a uniform oracle program (FriedbergMuchnik.Program) chosen before ; is oracleEval with the total oracle oracle M. The input is passed as the number = Nat.size (encode M) (unary versus binary is immaterial for computability); it is not the description of , and many machines share each size. is Mathlib's fuel-bounded evaluation Code.evaln t M x.
import Mathlib import Definitions.Def_ObfImpossibility_RiceSimulator_Setting
namespace ObfImpossibility.RiceSimulator
/-- Theorem A.2 (Rice's Theorem — second generalization), p. A:41: if a promise problem
`Π` closed under `[·]` is decidable, then one oracle machine `S` decides it from oracle
access to `⟨M⟩` and the input `|M|`. -/
theorem theorem_A_2 (P : PromiseProblem) (hclosed : P.ClosedUnderFn) (hdec : P.IsDecidable) :
∃ S : FriedbergMuchnik.Program,
(∀ M ∈ P.yes, simRun S M (size M) = Part.some 1) ∧
(∀ M ∈ P.no, simRun S M (size M) = Part.some 0) := by sorry
end ObfImpossibility.RiceSimulator
Confirmed by the mission captain (proposal self-audit).
Confirmed by the moderator at approval.