fact: Definition encode_instruction : mm2_instr * nat -> list CM1.Instruction := fun '(mmi, i) => let p := fs i in match mmi with | mm2_inc_a => [(fs (1+i), 0)] ++ [(0, 0); (0, 0); (0, 0); (0, 0); (0, 0)] | mm2_inc_b => [(1+p, 0); (fs (1+i), 1)] ++ [(0, 0); (0, 0); (0, 0); (0, 0)] | mm2_dec_a j => [(4+p, 1)] ++ [(2+p, 0); (3+p, 0); (fs (1+i), 3)] ++ [(5+p, 2); (fs j, 3)] | mm2_dec_b j => [(4+p, 2)] ++ [(2+p, 0); (3+p, 0); (fs (1+i), 3)] ++ [(fs j, 3)] ++ [(0, 0)] end.
imports: ZArith List PeanoNat Lia Relations.Relation_Operators Relations.Operators_Properties Undecidability.MinskyMachines.MM2 Undecidability.CounterMachines.Util.CM1_facts Undecidability.MinskyMachines.Util.MM2_facts ssreflect ssrbool ssrfun