aboutsummaryrefslogtreecommitdiff
path: root/src/Spec
diff options
context:
space:
mode:
authorGravatar Andres Erbsen <andreser@mit.edu>2016-07-20 18:33:02 -0400
committerGravatar Andres Erbsen <andreser@mit.edu>2016-07-20 18:53:43 -0400
commitd7f30db5fe04b11fa22a3b3b79eb0e63a72cb0f1 (patch)
treed815bfbadaf6681593f778667e961be51443a2aa /src/Spec
parenta5caf332df39f57bf25829cf5c127aa54fb8d3e4 (diff)
compute on [F q]!
Diffstat (limited to 'src/Spec')
-rw-r--r--src/Spec/ModularArithmetic.v17
1 files changed, 6 insertions, 11 deletions
diff --git a/src/Spec/ModularArithmetic.v b/src/Spec/ModularArithmetic.v
index 8ee07fe5d..fc506f61d 100644
--- a/src/Spec/ModularArithmetic.v
+++ b/src/Spec/ModularArithmetic.v
@@ -24,29 +24,24 @@ Coercion FieldToZ {m} (a:F m) : BinNums.Z := proj1_sig a.
Section FieldOperations.
Context {m : BinInt.Z}.
-
- (* Coercion without Context {m} --> non-uniform inheritance --> Anomalies *)
- Let ZToFm := ZToField : BinNums.Z -> F m. Local Coercion ZToFm : BinNums.Z >-> F.
+ Definition zero : F m := ZToField 0.
+ Definition one : F m := ZToField 1.
Definition add (a b:F m) : F m := ZToField (a + b).
Definition mul (a b:F m) : F m := ZToField (a * b).
-
- Definition opp_with_spec : { opp : F m -> F m
- | forall x, add x (opp x) = 0
- } := Pre.opp_impl.
- Definition opp : F m -> F m := Eval hnf in proj1_sig opp_with_spec.
+ Definition opp (a : F m) : F m := ZToField (0 - a).
Definition sub (a b:F m) : F m := add a (opp b).
Definition inv_with_spec : { inv : F m -> F m
- | inv 0 = 0
+ | inv zero = zero
/\ ( Znumtheory.prime m ->
- forall (a:F m), a <> 0 -> mul a (inv a) = 1 )
+ forall a, a <> zero -> mul a (inv a) = one )
} := Pre.inv_impl.
Definition inv : F m -> F m := Eval hnf in proj1_sig inv_with_spec.
Definition div (a b:F m) : F m := mul a (inv b).
Definition pow_with_spec : { pow : F m -> BinNums.N -> F m
- | forall a, pow a 0%N = 1
+ | forall a, pow a 0%N = one
/\ forall x, pow a (1 + x)%N = mul a (pow a x)
} := Pre.pow_impl.
Definition pow : F m -> BinNums.N -> F m := Eval hnf in proj1_sig pow_with_spec.