From Undecidability.Shared.Libs.DLW
Require Import utils_tac godel_coding pos vec sss compiler_correction.
From Undecidability.MinskyMachines.MMA
Require Import mma_defs mma3_mma2_compiler.
From Undecidability.Synthetic
Require Import Definitions ReducibilityFacts.
Local Notation "e #> x" := (vec_pos e x).
Theorem reduction n : @MMA_HALTING (3+n) ⪯ @MMA_HALTING (2+n).
Proof.
apply reduces_dependent; exists.
intros (P,v).
set (w := 0##gc_enc godel_coding_235 (fst (vec_split _ _ v))##vec_tail (vec_tail (vec_tail v))).
exists (gc_code (mma3_mma2_compiler n) (1, P) 1, w).
apply (compiler_t_term_equiv (mma3_mma2_compiler _)); simpl.
msplit 2; auto.
intro; now rewrite !vec_pos_tail.
Qed.