lemma lt_to_lt_O_minus : \forall m,n.
n < m \to O < m - n.
intros.
-unfold. apply le_plus_to_minus_r. unfold in H. rewrite > sym_plus.
+unfold. apply le_plus_to_minus_r. unfold in H.
+cut ((S n ≤ m) = (1 + n ≤ m)) as applyS;
+ [ rewrite < applyS; assumption;
+ | demodulate; reflexivity. ]
+(*
+rewrite > sym_plus.
rewrite < plus_n_Sm.
rewrite < plus_n_O.
assumption.
+*)
qed.
theorem lt_minus_to_plus: \forall n,m,p. (lt n (p-m)) \to (lt (n+m) p).
theorem eq_minus_plus_plus_minus: \forall n,m,p:nat. p \le m \to (n+m)-p = n+(m-p).
intros.
apply plus_to_minus.
+lapply (plus_minus_m_m ?? H); demodulate. reflexivity.
+(*
rewrite > sym_plus in \vdash (? ? ? %).
rewrite > assoc_plus.
rewrite < plus_minus_m_m.
reflexivity.assumption.
+*)
qed.
theorem eq_minus_minus_minus_plus: \forall n,m,p:nat. (n-m)-p = n-(m+p).