diff options
author | Jason Gross <jagro@google.com> | 2018-06-27 14:56:47 -0400 |
---|---|---|
committer | Jason Gross <jagro@google.com> | 2018-06-27 14:56:54 -0400 |
commit | b6c63111a6e84f2affee3c162436722dcd6bcc43 (patch) | |
tree | e922687d32a981f229c15525052901e6209c0005 /src/Util/ZUtil | |
parent | b457c7f05d24af17d61d755e5431075f7113cda1 (diff) |
Add lnot mod pull/push lemmas
Diffstat (limited to 'src/Util/ZUtil')
-rw-r--r-- | src/Util/ZUtil/Modulo/PullPush.v | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/src/Util/ZUtil/Modulo/PullPush.v b/src/Util/ZUtil/Modulo/PullPush.v index a284e61c9..dbbe98975 100644 --- a/src/Util/ZUtil/Modulo/PullPush.v +++ b/src/Util/ZUtil/Modulo/PullPush.v @@ -82,6 +82,13 @@ Module Z. Hint Rewrite <- sub_mod_r : pull_Zmod. Hint Resolve sub_mod_r : zarith. + Lemma lnot_mod_mod v m : (Z.lnot (v mod m) mod m) = (Z.lnot v) mod m. + Proof. + cbv [Z.lnot]; etransitivity; rewrite <- !Z.sub_1_r, Z.sub_mod_full, Z.opp_mod_mod, ?Zmod_mod; reflexivity. + Qed. + Hint Rewrite lnot_mod_mod : pull_Zmod. + Hint Resolve lnot_mod_mod : zarith. + Definition NoZMod (x : Z) := True. Ltac NoZMod := lazymatch goal with @@ -128,4 +135,8 @@ Module Z. Lemma opp_mod_mod_push a n : NoZMod a -> (-a) mod n = (-(a mod n)) mod n. Proof. intros; apply opp_mod_mod; assumption. Qed. Hint Rewrite opp_mod_mod_push using solve [ NoZMod ] : push_Zmod. + + Lemma lnot_mod_mod_push v m : NoZMod v -> (Z.lnot v) mod m = (Z.lnot (v mod m) mod m). + Proof. intros; symmetry; apply lnot_mod_mod. Qed. + Hint Rewrite lnot_mod_mod_push using solve [ NoZMod ] : push_Zmod. End Z. |