Section Reflection.
(* Assume that M is uniformly bounded by NM, show that P terminates from the starting configuration after at most NM steps *)
Variable NM : nat. (* uniform bound for M *)
Variable NM_spec : SM.bounded M NM.

(* if stack machine is uniformly bounded, then counter machine halts *)
Theorem bounded_M_to_terminating_P : CM.halting P (Nat.iter NM (CM.step P) cm_start).