p. A:41 — if the simulator halts, it returns the same answer as
ProvedObfImpossibility.RiceSimulator.stage_answer_soundcomputabilityp2o-batch-pfp2bp2o-gran-per-chapterp2o-plan-paperp2o-v1rice-theorem
Let and be machines, and . Suppose stage of the simulator stops with answer , that is, run for steps halts on every machine of (the machines of size that are -compatible with ) with output . Then
Since is -compatible with itself, always belongs to ; so whatever stage the simulator stops at, its answer is the one gives on . This is the correctness half of the proof of Theorem A.2.
Formalization Note "Run for steps" is Code.evaln n T; the conclusion is σ ∈ Code.eval T (encode M), i.e. halts on with output . No promise hypothesis is needed.
Preamble
import Mathlib import Definitions.Def_ObfImpossibility_RiceSimulator_Setting
Formal statement
namespace ObfImpossibility.RiceSimulator
/-- p. A:41: if the simulator halts (at some stage `n` with answer `σ`) then it returns the
same answer as `T(M)`. -/
theorem stage_answer_sound (T M : Machine) (n σ : ℕ) (h : StageAnswer T M n σ) :
σ ∈ T.eval (Encodable.encode M) := by sorry
end ObfImpossibility.RiceSimulator
Source
Barak et al., On the (Im)possibility of Obfuscating Programs, J. ACM 59(2) (2012), author's copy, p. A:41, proof of Theorem A.2
Human review
Confirmed by the mission captain (proposal self-audit).
Confirmed by the moderator at approval.