aboutsummaryrefslogtreecommitdiff
path: root/src/Specific/ArithmeticSynthesisTest.v
diff options
context:
space:
mode:
authorGravatar Jason Gross <jgross@mit.edu>2017-04-15 00:54:04 -0400
committerGravatar Jason Gross <jasongross9@gmail.com>2017-04-17 14:16:02 -0400
commit69646d18cf155b5099c87a796ad47b54a59d1d60 (patch)
treef4515b6e5d1376a9d0d1c18f975514747ab48f6c /src/Specific/ArithmeticSynthesisTest.v
parentda4283261f2b32052450846081f655244691c5de (diff)
Construct a24_sig
Diffstat (limited to 'src/Specific/ArithmeticSynthesisTest.v')
-rw-r--r--src/Specific/ArithmeticSynthesisTest.v24
1 files changed, 17 insertions, 7 deletions
diff --git a/src/Specific/ArithmeticSynthesisTest.v b/src/Specific/ArithmeticSynthesisTest.v
index 369f242c8..4750fd12c 100644
--- a/src/Specific/ArithmeticSynthesisTest.v
+++ b/src/Specific/ArithmeticSynthesisTest.v
@@ -25,6 +25,7 @@ Section Ops51.
Definition coef_div_modulus : nat := 2. (* add 2*modulus before subtracting *)
Definition carry_chain1 := Eval vm_compute in (seq 0 (pred sz)).
Definition carry_chain2 := ([0;1])%nat.
+ Definition a24 := 121665%Z.
(* These definitions are inferred from those above *)
Definition m := Eval vm_compute in Z.to_pos (s - Associational.eval c). (* modulus *)
@@ -82,20 +83,30 @@ Section Ops51.
apply Z.pow_nonzero; omega.
Qed.
+ Local Ltac solve_constant_sig :=
+ lazymatch goal with
+ | [ |- { c : Z^?sz | Positional.Fdecode (m:=?M) ?wt c = ?v } ]
+ => let t := (eval vm_compute in
+ (Positional.encode (n:=sz) (modulo:=modulo) (div:=div) wt (F.to_Z (m:=M) v))) in
+ (exists t; vm_decide)
+ end.
+
Definition zero_sig :
{ zero : Z^sz | Positional.Fdecode (m:=m) wt zero = 0%F}.
Proof.
- let t := eval vm_compute in
- (Positional.encode (n:=sz) (modulo:=modulo) (div:=div) wt 0) in
- exists t; vm_decide.
+ solve_constant_sig.
Defined.
Definition one_sig :
{ one : Z^sz | Positional.Fdecode (m:=m) wt one = 1%F}.
Proof.
- let t := eval vm_compute in
- (Positional.encode (n:=sz) (modulo:=modulo) (div:=div) wt 1) in
- exists t; vm_decide.
+ solve_constant_sig.
+ Defined.
+
+ Definition a24_sig :
+ { a24t : Z^sz | Positional.Fdecode (m:=m) wt a24t = F.of_Z m a24 }.
+ Proof.
+ solve_constant_sig.
Defined.
Definition add_sig :
@@ -210,4 +221,3 @@ Eval cbv [proj1_sig carry_sig] in (proj1_sig carry_sig).
*)
End Ops51.
-