aboutsummaryrefslogtreecommitdiff
path: root/src/Arithmetic
diff options
context:
space:
mode:
authorGravatar Jason Gross <jgross@mit.edu>2017-10-18 00:09:13 -0400
committerGravatar Jason Gross <jgross@mit.edu>2017-10-18 11:02:20 -0400
commitcb95f631364d06620ce24ff01cf44b7d2035a705 (patch)
tree790b5d39e7336c7620b7c72d31de24e7c4233758 /src/Arithmetic
parent28171c02e839cb39273ce8d1d5d2195fc95ddf42 (diff)
Add basesystem_partial_evaluation_unfolder db
Diffstat (limited to 'src/Arithmetic')
-rw-r--r--src/Arithmetic/Core.v23
-rw-r--r--src/Arithmetic/Saturated/AddSub.v11
-rw-r--r--src/Arithmetic/Saturated/Core.v10
-rw-r--r--src/Arithmetic/Saturated/Freeze.v6
-rw-r--r--src/Arithmetic/Saturated/MulSplit.v3
-rw-r--r--src/Arithmetic/Saturated/Wrappers.v4
6 files changed, 56 insertions, 1 deletions
diff --git a/src/Arithmetic/Core.v b/src/Arithmetic/Core.v
index 8e7f3cb23..f3c435a09 100644
--- a/src/Arithmetic/Core.v
+++ b/src/Arithmetic/Core.v
@@ -995,6 +995,29 @@ End DivMod.
Import B.
+Create HintDb basesystem_partial_evaluation_unfolder.
+
+Hint Unfold
+ id
+ Positional.to_associational_cps Positional.to_associational
+ Positional.eval Positional.zeros Positional.add_to_nth_cps
+ Positional.add_to_nth Positional.place_cps Positional.place
+ Positional.from_associational_cps Positional.from_associational
+ Positional.carry_cps Positional.carry
+ Positional.chained_carries_cps Positional.chained_carries
+ Positional.sub_cps Positional.sub Positional.split_cps
+ Positional.scmul_cps Positional.unbalanced_sub_cps
+ Positional.negate_snd_cps Positional.add_cps Positional.opp_cps
+ Associational.eval Associational.multerm Associational.mul_cps
+ Associational.mul Associational.split_cps Associational.split
+ Associational.reduce_cps Associational.reduce
+ Associational.carryterm_cps Associational.carryterm
+ Associational.carry_cps Associational.carry
+ Associational.negate_snd_cps Associational.negate_snd div modulo
+ id_tuple_with_alt id_tuple'_with_alt
+ Z.add_get_carry_full
+ : basesystem_partial_evaluation_unfolder.
+
Ltac basesystem_partial_evaluation_unfolder t :=
eval
cbv
diff --git a/src/Arithmetic/Saturated/AddSub.v b/src/Arithmetic/Saturated/AddSub.v
index c1c701870..e34230904 100644
--- a/src/Arithmetic/Saturated/AddSub.v
+++ b/src/Arithmetic/Saturated/AddSub.v
@@ -238,3 +238,14 @@ End B.
Hint Opaque B.Positional.sat_sub B.Positional.sat_add B.Positional.chain_op B.Positional.chain_op' : uncps.
Hint Rewrite @B.Positional.sat_sub_id @B.Positional.sat_add_id @B.Positional.chain_op_id @B.Positional.chain_op' : uncps.
Hint Rewrite @B.Positional.sat_sub_mod @B.Positional.sat_sub_div @B.Positional.sat_add_mod @B.Positional.sat_add_div using (omega || assumption) : push_basesystem_eval.
+
+Hint Unfold
+ B.Positional.chain_op'_cps
+ B.Positional.chain_op'
+ B.Positional.chain_op_cps
+ B.Positional.chain_op
+ B.Positional.sat_add_cps
+ B.Positional.sat_add
+ B.Positional.sat_sub_cps
+ B.Positional.sat_sub
+ : basesystem_partial_evaluation_unfolder.
diff --git a/src/Arithmetic/Saturated/Core.v b/src/Arithmetic/Saturated/Core.v
index ce9888b74..e34a37501 100644
--- a/src/Arithmetic/Saturated/Core.v
+++ b/src/Arithmetic/Saturated/Core.v
@@ -432,6 +432,16 @@ Hint Rewrite
@Columns.eval_nils
using (assumption || omega): push_basesystem_eval.
+Hint Unfold
+ Columns.eval Columns.eval_from
+ Columns.compact_digit_cps Columns.compact_digit
+ Columns.compact_step_cps Columns.compact_step
+ Columns.compact_cps Columns.compact
+ Columns.cons_to_nth_cps Columns.cons_to_nth
+ Columns.nils
+ Columns.from_associational_cps Columns.from_associational
+ : basesystem_partial_evaluation_unfolder.
+
Ltac basesystem_partial_evaluation_unfolder t :=
let t :=
(eval
diff --git a/src/Arithmetic/Saturated/Freeze.v b/src/Arithmetic/Saturated/Freeze.v
index 735663636..65b8ee55d 100644
--- a/src/Arithmetic/Saturated/Freeze.v
+++ b/src/Arithmetic/Saturated/Freeze.v
@@ -119,4 +119,8 @@ Section Freeze.
rewrite Z.add_0_r, Z.mod_mod by assumption.
reflexivity. }
Qed.
-End Freeze. \ No newline at end of file
+End Freeze.
+
+Hint Unfold
+ freeze freeze_cps
+ : basesystem_partial_evaluation_unfolder.
diff --git a/src/Arithmetic/Saturated/MulSplit.v b/src/Arithmetic/Saturated/MulSplit.v
index 45f37ef56..98d8d0e0c 100644
--- a/src/Arithmetic/Saturated/MulSplit.v
+++ b/src/Arithmetic/Saturated/MulSplit.v
@@ -71,3 +71,6 @@ Hint Opaque B.Associational.sat_mul B.Associational.sat_multerm : uncps.
Hint Rewrite @B.Associational.sat_mul_id @B.Associational.sat_multerm_id : uncps.
Hint Rewrite @B.Associational.eval_sat_mul @B.Associational.eval_map_sat_multerm using (omega || assumption) : push_basesystem_eval.
+Hint Unfold
+ B.Associational.sat_multerm_cps B.Associational.sat_multerm B.Associational.sat_mul_cps B.Associational.sat_mul
+ : basesystem_partial_evaluation_unfolder.
diff --git a/src/Arithmetic/Saturated/Wrappers.v b/src/Arithmetic/Saturated/Wrappers.v
index e9b73dd10..6fe466967 100644
--- a/src/Arithmetic/Saturated/Wrappers.v
+++ b/src/Arithmetic/Saturated/Wrappers.v
@@ -52,6 +52,10 @@ Hint Unfold
Columns.unbalanced_sub_cps
Columns.mul_cps.
+Hint Unfold
+ Columns.add_cps Columns.unbalanced_sub_cps Columns.mul_cps Columns.conditional_add_cps
+ : basesystem_partial_evaluation_unfolder.
+
Ltac basesystem_partial_evaluation_unfolder t :=
let t := (eval cbv delta [Columns.add_cps Columns.unbalanced_sub_cps Columns.mul_cps Columns.conditional_add_cps] in t) in
let t := Saturated.Core.basesystem_partial_evaluation_unfolder t in