aboutsummaryrefslogtreecommitdiff
path: root/src/Util/NatUtil.v
diff options
context:
space:
mode:
authorGravatar Jason Gross <jagro@google.com>2016-07-18 13:07:32 -0700
committerGravatar Jason Gross <jagro@google.com>2016-07-18 13:07:32 -0700
commit662f07b23b0d03379fa0c0ee9cf377dbe6436e85 (patch)
tree1d1b2a4e7f5e48c73c249140edb86e281405eb2f /src/Util/NatUtil.v
parent4611b121126c55bf32bf8fc89a9258cbb2337aa7 (diff)
Add more NatUtil lemmas
Diffstat (limited to 'src/Util/NatUtil.v')
-rw-r--r--src/Util/NatUtil.v20
1 files changed, 20 insertions, 0 deletions
diff --git a/src/Util/NatUtil.v b/src/Util/NatUtil.v
index 4800ecb95..1a0cb67c7 100644
--- a/src/Util/NatUtil.v
+++ b/src/Util/NatUtil.v
@@ -235,3 +235,23 @@ Proof.
Qed.
Hint Rewrite eq_nat_dec_n_S : natsimplify.
+
+Hint Rewrite Max.max_0_l Max.max_0_r Max.max_idempotent Min.min_0_l Min.min_0_r Min.min_idempotent : natsimplify.
+
+(** Helper to get around the lack of function extensionality *)
+Definition lt_dec_right_val n m (pf0 : ~n < m) : { pf | lt_dec n m = right pf }.
+Proof.
+ destruct (lt_dec n m) eqn:Heq; [ | eexists; reflexivity ].
+ exfalso; clear Heq; apply pf0; assumption.
+Qed.
+
+Lemma lt_dec_irrefl n : lt_dec n n = right (proj1_sig (@lt_dec_right_val _ _ (lt_irrefl n))).
+Proof. edestruct lt_dec_right_val; assumption. Qed.
+Hint Rewrite lt_dec_irrefl : natsimplify.
+
+Lemma not_lt_n_pred_n n : ~n < pred n.
+Proof. omega. Qed.
+
+Lemma lt_dec_n_pred_n n : lt_dec n (pred n) = right (proj1_sig (@lt_dec_right_val _ _ (not_lt_n_pred_n n))).
+Proof. edestruct lt_dec_right_val; assumption. Qed.
+Hint Rewrite lt_dec_n_pred_n : natsimplify.