Module Type NSubProp (Import N : NAxiomsMiniSig').
Include NMulOrderProp N.
(* This could be proved by adding m to both sides. Then the proof would use add_sub_assoc and sub_0_le, which is proven below. *)
(** Sub and order *)
(** Unfortunately, we do not have [n < m + p -> n - p < m]. For instance [1<0+2] but not [1-2<0]. *)
(** Unfortunately, we do not have [n <= m - p -> n + p <= m]. For instance [0<=1-2] but not [2+0<=1]. *)
(** Sub and mul *)
(** Alternative definitions of [<=] and [<] based on [+] *)
Definition le_alt n m := exists p, p + n == m.
Definition lt_alt n m := exists p, S p + n == m.

Lemma le_equiv : forall n m, le_alt n m <-> n <= m.