HvdH machine lemma GL.seq_all (`fwdL` and `exactConvL` programs)
ProvedNLogN.GL.seq_allThe following holds (Lean statement, in the scope of module NLogN.HGl8):
theorem NLogN.GL.seq_all {M : MulSpec} (a b : RM) (s t u : IState HS) (Ca Cb : ℕ)
(ha : a.run s = t ∧ a.ok M s ∧ a.cost M s ≤ Ca)
(hb : b.run t = u ∧ b.ok M t ∧ b.cost M t ≤ Cb) :
(RM.seq a b).run s = u ∧ (RM.seq a b).ok M s ∧ (RM.seq a b).cost M s ≤ Ca + Cb
Context. The lemma belongs to the part fwdL and exactConvL programs: * fwdP axsS axsB fw: gD : gints U ++ R ↦ gD : gints (fwdL q U) ++ R
(S̃ along all axes via tgP axsS, FtL via ftlP fw, B̃ along all axes via tgP axsB).
exactP axsS axsB fw:gD : ints u ++ R,gV : ints v ++ RV↦gD : ints (exactConvL q u v) ++ R,gV : RV.
Formalization Note. This is a lemma of the Lean development NLogN, a multitape-Turing-machine implementation of the Harvey–van der Hoeven integer multiplication algorithm, used in the proof of NLogN.FIN.theorem_1_1_nlogn : IntMul.MulTimeBound fun n => n * Real.log n. All names refer to the definition bundles IntMul_HvdH_M_Defs1–IntMul_HvdH_M_Defs8 (namespace NLogN), built on the platform model Def_IntMul_MultitapeModel and the published reference Def_IntMul_HvdH_MachineRef. The machine layer: IState HS is a state of 64 item stacks; RM programs have a semantics p.run s, a definedness predicate p.ok M s and a cost p.cost M s relative to a multiplication spec M : MulSpec; zsz z is the bit length of .
-- Harvey–van der Hoeven multitape-TM development (NLogN), generated by skeleton subtraction. import Definitions.Def_IntMul_HvdH_M_Defs8 set_option autoImplicit false set_option relaxedAutoImplicit false set_option maxHeartbeats 1000000 set_option linter.unusedSimpArgs false open NLogN open NLogN.GL open IntMul NLogN IntMul.HvdH IntMul.HvdH.Ref
theorem NLogN.GL.seq_all {M : MulSpec} (a b : RM) (s t u : IState HS) (Ca Cb : ℕ)
(ha : a.run s = t ∧ a.ok M s ∧ a.cost M s ≤ Ca)
(hb : b.run t = u ∧ b.ok M t ∧ b.cost M t ≤ Cb) :
(RM.seq a b).run s = u ∧ (RM.seq a b).ok M s ∧ (RM.seq a b).cost M s ≤ Ca + Cb := by sorry