aboutsummaryrefslogtreecommitdiff
path: root/src/PushButtonSynthesis/MontgomeryReductionReificationCache.v
diff options
context:
space:
mode:
authorGravatar Jason Gross <jgross@mit.edu>2019-01-17 15:07:47 -0500
committerGravatar Jason Gross <jasongross9@gmail.com>2019-01-18 19:44:48 -0500
commitcdd5ffb086eb647eabe640c81de9d8af7cd0a1dd (patch)
tree4540df27da661c35fdc5246f1692fa124003ff6f /src/PushButtonSynthesis/MontgomeryReductionReificationCache.v
parentb99dd6da3b6370bc225d3b501bda07c49fd29c12 (diff)
Split up PushButtonSynthesis.v
Closes #497
Diffstat (limited to 'src/PushButtonSynthesis/MontgomeryReductionReificationCache.v')
-rw-r--r--src/PushButtonSynthesis/MontgomeryReductionReificationCache.v23
1 files changed, 23 insertions, 0 deletions
diff --git a/src/PushButtonSynthesis/MontgomeryReductionReificationCache.v b/src/PushButtonSynthesis/MontgomeryReductionReificationCache.v
new file mode 100644
index 000000000..f787063a4
--- /dev/null
+++ b/src/PushButtonSynthesis/MontgomeryReductionReificationCache.v
@@ -0,0 +1,23 @@
+(** * Push-Button Synthesis of Saturated Solinas: Reification Cache *)
+Require Import Coq.ZArith.ZArith.
+Require Import Coq.derive.Derive.
+Require Import Crypto.Arithmetic.
+Require Import Crypto.PushButtonSynthesis.ReificationCache.
+Local Open Scope Z_scope.
+
+Import Associational Positional Arithmetic.MontgomeryReduction.
+
+Local Set Keyed Unification. (* needed for making [autorewrite] fast, c.f. COQBUG(https://github.com/coq/coq/issues/9283) *)
+
+Module Export MontgomeryReduction.
+ Derive reified_montred_gen
+ SuchThat (is_reification_of reified_montred_gen montred')
+ As reified_montred_gen_correct.
+ Proof. Time cache_reify (). Time Qed.
+ Module Export ReifyHints.
+ Hint Extern 1 (_ = _) => apply_cached_reification montred' (proj1 reified_montred_gen_correct) : reify_cache_gen.
+ Hint Immediate (proj2 reified_montred_gen_correct) : wf_gen_cache.
+ Hint Rewrite (proj1 reified_montred_gen_correct) : interp_gen_cache.
+ End ReifyHints.
+ Local Opaque reified_montred_gen. (* needed for making [autorewrite] not take a very long time *)
+End MontgomeryReduction.