Skip to content

Commit f526c98

Browse files
committed
Fill all remaining sorries in Composition/Correctness.lean
- Sorry at line 937 (isHalted): Use epF.pc_eq to show PC equals program length - Sorry at line 942 (Steps): Unfold finalPhase so omega can see length equality - Sorry at line 815 (existential): Provide witness using existing hSaveGPhases_steps/halted - Sorry at line 667 (preservation): Use allGPhases_prefix_preserves_saved_inputs with allGPhases_prefix_full to show gPhases preserves saved inputs at R[base+1..base+n] Correctness.lean now compiles without sorries.
1 parent 60f196b commit f526c98

1 file changed

Lines changed: 14 additions & 10 deletions

File tree

Urm/Composition/Correctness.lean

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -663,8 +663,13 @@ theorem comp_general_dom_imp_halts
663663
-- Saved inputs preserved after gPhases
664664
have hSaved_after_gPhases : ∀ j : ℕ, (hj : j < n) → sGPhases.read (base + 1 + j) = inputs ⟨j, hj⟩ := by
665665
intro j hj
666-
-- TODO: Need to use allGPhases_prefix_full to convert between allGPhases and allGPhases_prefix
667-
sorry
666+
have hGPhases_as_prefix := allGPhases_prefix_full m n base pGs
667+
rw [← hGPhases_as_prefix] at hGPhases_steps hGPhases_halted
668+
have hPreserve := allGPhases_prefix_preserves_saved_inputs m n base pGs
669+
hGs_sf hpGs_max hn_le_base m (le_refl m) sSave sGPhases cGPhases
670+
hGPhases_steps hGPhases_halted rfl (base + 1 + j) (by omega) (by omega)
671+
calc sGPhases.read (base + 1 + j) = sSave.read (base + 1 + j) := hPreserve
672+
_ = inputs ⟨j, hj⟩ := hSaved j hj
668673

669674
-- finalPhase halts from sGPhases
670675
have hpF_max : pF.maxRegister ≤ base := compositionBase_ge_pF_max m n pF pGs
@@ -809,10 +814,7 @@ theorem comp_general_result
809814
have hSaveGPhases_halted' : ∃ c : Config,
810815
Steps (saveInputs.concat gPhases) ⟨0, State.fromInputs (List.ofFn inputs)⟩ c ∧
811816
c.isHalted (saveInputs.concat gPhases) ∧ c.state = sSaveGPhases := by
812-
have hSaveGPhases_halted'' : (⟨(saveInputs.concat gPhases).length, sGPhases⟩ : Config).isHalted (saveInputs.concat gPhases) := by
813-
simp [Config.isHalted, Program.concat_length]
814-
-- TODO: Config equality proof needs fixing
815-
sorry
817+
exact ⟨⟨cGPhases.pc + saveInputs.length, cGPhases.state⟩, hSaveGPhases_steps, hSaveGPhases_halted, rfl⟩
816818
have hres := allGPhases_saves_result (pF := pF) hGs_sf hGs_spec inputs hGs_dom ⟨j, hj⟩ sSaveGPhases hSaveGPhases_halted'
817819
simp only [results]; exact hres
818820

@@ -933,13 +935,15 @@ theorem comp_general_result
933935

934936
-- Show cH_built equals the unique halted config
935937
have hcH_built_halted : cH_built.isHalted ((saveInputs.concat gPhases).concat final) := by
936-
-- TODO: Arithmetic simplification needs work
937-
sorry
938+
simp only [Config.isHalted, Program.concat_length, cH_built, epF.pc_eq]
939+
omega
938940

939941
have hH_steps_built : Steps ((saveInputs.concat gPhases).concat final)
940942
0, State.fromInputs (List.ofFn inputs)⟩ cH_built := by
941-
-- TODO: Arithmetic conversion from hTotal_steps
942-
sorry
943+
simp only [final, cH_built]
944+
convert hTotal_steps using 2
945+
simp only [Program.concat_length, epF.pc_eq, finalPhase]
946+
omega
943947

944948
have hcH_eq := Steps.halts_unique hH_steps hH_halted hH_steps_built hcH_built_halted
945949

0 commit comments

Comments
 (0)