aboutsummaryrefslogtreecommitdiff
path: root/mathcomp
diff options
context:
space:
mode:
authorYves Bertot2019-11-20 16:19:10 +0100
committerGitHub2019-11-20 16:19:10 +0100
commitb1ca6a9be6861f6c369db642bc194cf78795a66f (patch)
treeb27f1fdad7765af9edc95a041f60f1d079d35970 /mathcomp
parent7c6d15897ed5cd46486ef14ee20165c2d55203f2 (diff)
parent95e69d88e9f629c043939b8315e73dbb58852d9a (diff)
Merge pull request #399 from CohenCyril/ltn_sub
More arithmetic theorems
Diffstat (limited to 'mathcomp')
-rw-r--r--mathcomp/ssreflect/ssrnat.v16
1 files changed, 11 insertions, 5 deletions
diff --git a/mathcomp/ssreflect/ssrnat.v b/mathcomp/ssreflect/ssrnat.v
index f358f7b..d47a3ba 100644
--- a/mathcomp/ssreflect/ssrnat.v
+++ b/mathcomp/ssreflect/ssrnat.v
@@ -326,10 +326,10 @@ Hint Resolve leqnSn : core.
Lemma leq_pred n : n.-1 <= n. Proof. by case: n => /=. Qed.
Lemma leqSpred n : n <= n.-1.+1. Proof. by case: n => /=. Qed.
-Lemma ltn_predl n : (n.-1 < n) = (n != 0).
+Lemma ltn_predL n : (n.-1 < n) = (0 < n).
Proof. by case: n => [//|n]; rewrite ltnSn. Qed.
-Lemma ltn_predr m n : (m < n.-1) = (m.+1 < n).
+Lemma ltn_predRL m n : (m < n.-1) = (m.+1 < n).
Proof. by case: n => [//|n]; rewrite succnK. Qed.
Lemma ltn_predK m n : m < n -> n.-1.+1 = n.
@@ -517,6 +517,15 @@ Proof. by rewrite -subn_eq0 -subnDA. Qed.
Lemma leq_subr m n : n - m <= n.
Proof. by rewrite leq_subLR leq_addl. Qed.
+Lemma ltn_subrR m n : (n < n - m) = false.
+Proof. by rewrite ltnNge leq_subr. Qed.
+
+Lemma leq_subrR m n : (n <= n - m) = (m == 0) || (n == 0).
+Proof. by case: m n => [|m] [|n]; rewrite ?subn0 ?leqnn ?ltn_subrR. Qed.
+
+Lemma ltn_subrL m n : (n - m < n) = (0 < m) && (0 < n).
+Proof. by rewrite ltnNge leq_subrR negb_or !lt0n. Qed.
+
Lemma subnKC m n : m <= n -> m + (n - m) = n.
Proof. by elim: m n => [|m IHm] [|n] // /(IHm n) {2}<-. Qed.
@@ -538,9 +547,6 @@ Proof. by move=> le_pm le_pn; rewrite addnBA // addnBAC. Qed.
Lemma subnBA m n p : p <= n -> m - (n - p) = m + p - n.
Proof. by move=> le_pn; rewrite -{2}(subnK le_pn) subnDr. Qed.
-Lemma ltn_subr m n : m <= n -> (n - m < n) = (m > 0).
-Proof. by move=> le_mn; rewrite -subn_gt0 subnBA// addKn. Qed.
-
Lemma subKn m n : m <= n -> n - (n - m) = m.
Proof. by move/subnBA->; rewrite addKn. Qed.