aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGravatar Jason Gross <jgross@mit.edu>2019-01-03 16:15:04 -0500
committerGravatar Jason Gross <jgross@mit.edu>2019-01-03 16:15:04 -0500
commit0f420be4fa2e5d1540e95305a98cf02d37b3ddbd (patch)
treea079b414ff2b1697a4ae1820a05efb5cabc704bc /src
parent8b4a20c4e6322e93ff47b155ac42b28250caedcc (diff)
Finish proving fancy rewrite rules
Diffstat (limited to 'src')
-rw-r--r--src/Experiments/NewPipeline/RewriterRulesInterpGood.v9
1 files changed, 6 insertions, 3 deletions
diff --git a/src/Experiments/NewPipeline/RewriterRulesInterpGood.v b/src/Experiments/NewPipeline/RewriterRulesInterpGood.v
index cf6e3f373..c80e35014 100644
--- a/src/Experiments/NewPipeline/RewriterRulesInterpGood.v
+++ b/src/Experiments/NewPipeline/RewriterRulesInterpGood.v
@@ -24,6 +24,7 @@ Require Import Crypto.Util.ZUtil.AddGetCarry.
Require Import Crypto.Util.ZUtil.MulSplit.
Require Import Crypto.Util.ZUtil.Zselect.
Require Import Crypto.Util.ZUtil.Div.
+Require Import Crypto.Util.ZUtil.Modulo.
Require Import Crypto.Util.ZRange.
Require Import Crypto.Util.ZRange.Operations.
Require Import Crypto.Util.ZRange.BasicLemmas.
@@ -576,6 +577,10 @@ Module Compilers.
|- context [ (?x * ?y) mod ?b ] =>
rewrite (PullPush.Z.mul_mod_l x y b);
rewrite (Z.mod_small (x mod b * y) b) by omega
+ | [ |- context[_ - ?x + ?x] ] => rewrite !Z.sub_add
+ | [ |- context[_ mod (2^_) * 2^_] ] => rewrite <- !Z.mul_mod_distr_r_full
+ | [ |- context[Z.land _ (Z.ones _)] ] => rewrite !Z.land_ones by lia
+ | [ |- context[2^?a * 2^?b] ] => rewrite <- !Z.pow_add_r by lia
| [ |- context[-?x + ?y] ] => rewrite !Z.add_opp_l
| [ |- context[?n + - ?m] ] => rewrite !Z.add_opp_r
| [ |- context[?n - - ?m] ] => rewrite !Z.sub_opp_r
@@ -767,9 +772,7 @@ Module Compilers.
Reset Ltac Profile.
Time all: fancy_local_t. (* Finished transaction in 0.051 secs (0.052u,0.s) (successful) *)
Time all: systematically_handle_casts. (* Finished transaction in 2.004 secs (1.952u,0.052s) (successful) *)
- Time all: try solve [ repeat interp_good_t_step_arith ]. (* Finished transaction in 26.754 secs (26.455u,0.299s) (successful) *)
-
- all:admit. (* TODO(jgross) : prove these *)
+ Time all: try solve [ repeat interp_good_t_step_arith ]. (* Finished transaction in 44.411 secs (44.004u,0.411s) (successful) *)
Admitted.
End with_cast.
End RewriteRules.