proposition: Lemma config_eqE2 (n n' i j a : nat) (v : Vector.t nat n) (w : Vector.t nat n') st : (i, Vector.append (a ## v) w) = (j, st) -> i = j /\ a = Vector.hd (fst (Vector.splitat _ st)) /\ v = Vector.tl ((fst (Vector.splitat _ st))) /\ w = snd (Vector.splitat _ st).
proof: Proof. move=> /pair_equal_spec [->]. move=> /(f_equal (Vector.splitat _)). rewrite Vector.splitat_append. move: (Vector.splitat _ st) => [a'v' w']. rewrite (Vector.eta a'v'). by move=> /pair_equal_spec [/Vector.cons_inj] [-> ->] ->. Qed.
imports: Undecidability(TM.TM) Undecidability.MinskyMachines(MM MMA MMA.mma_defs Util.MMA_computable) Undecidability.Shared.Libs.DLW(Vec.pos Vec.vec Code.sss) List PeanoNat Lia Relations ssreflect