proposition: Lemma MMC : forall p q : nat, gencode (Call_M p) -> gencode (Call_M q) -> gencode (Call_C (q * p) p).
proof: Proof. refine (fun p q g g' => match g with | gencode_intro c s => match g' with | gencode_intro c' s0 => gencode_intro _ (app c c') _ end end). constructor 2. intros; rewrite Exec_app. inversion_clear s. rewrite H. inversion_clear s0. rewrite (H0 M MO). rewrite power_mult; auto with arith. Qed.
imports: Constants monoid spec machine Wf_compl Plus Mult Lt Mult_compl euclid two_power