proposition: Corollary minus_inj' : forall m m' y q q', (q <= y)%nat -> (q' <= y)%nat -> m * (S y) + y - q = (m' * (S y)) + y - q' -> m = m' /\ q = q'.
proof: Proof. intros; destruct (@minus_inj m m' (S y) q q'). omega. omega. assert (m * S y + S y - q = S (m * S y + y - q)). rewrite plus_comm. assert (S y + m * S y - q = 1 + (y + m * S y - q)). rewrite !Nat.add_sub_assoc. rewrite plus_assoc. omega. auto with arith. rewrite H2; simpl; omega. rewrite H2. rewrite H1. rewrite <- !Nat.add_sub_assoc; auto. omega. omega. Qed.
imports: Fiat.Common.Coq__8_4__8_5__Compat Bedrock.Word Coq.ZArith.ZArith Coq.NArith.NArith Coq.Arith.Arith Coq.Numbers.Natural.Peano.NPeano Coq.Logic.Eqdep_dec Fiat.Narcissus.Common.Specs