pp. A:41–A:42 — the simulator halts on every instance of the promise
ProvedObfImpossibility.RiceSimulator.stage_answer_existscomputabilityp2o-batch-pfp2bp2o-gran-per-chapterp2o-plan-paperp2o-v1promise-problemsrice-theorem
Let be a promise problem closed under and let be a machine that decides . Then:
- for every there is a stage at which , run for steps, halts on every machine of with output ;
- for every there is a stage at which , run for steps, halts on every machine of with output .
Here is the set of machines of size that are -compatible with . In other words, the simulator of Theorem A.2 halts on every promise instance, with the answer . This is the termination half of the proof of Theorem A.2.
Formalization Note The paper says "S always halts"; its argument (and the statement here) covers only , where is guaranteed to halt. Outside the promise , and hence the simulator, may diverge.
Preamble
import Mathlib import Definitions.Def_ObfImpossibility_RiceSimulator_Setting
Formal statement
namespace ObfImpossibility.RiceSimulator
/-- pp. A:41–A:42: the simulator halts on every instance of the promise: for `M ∈ Π_Y`
(resp. `Π_N`) some stage `n` stops with answer `1` (resp. `0`), the answer of `T(M)`. -/
theorem stage_answer_exists (P : PromiseProblem) (hclosed : P.ClosedUnderFn)
(T : Machine) (hT : Decides T P) :
(∀ M ∈ P.yes, ∃ n : ℕ, StageAnswer T M n 1) ∧
(∀ M ∈ P.no, ∃ n : ℕ, StageAnswer T M n 0) := by sorry
end ObfImpossibility.RiceSimulator
Source
Barak et al., On the (Im)possibility of Obfuscating Programs, J. ACM 59(2) (2012), author's copy, pp. A:41–A:42, proof of Theorem A.2
Human review
Confirmed by the mission captain (proposal self-audit).
Confirmed by the moderator at approval.