aboutsummaryrefslogtreecommitdiff
path: root/src/ModularArithmetic
diff options
context:
space:
mode:
authorGravatar jadep <jade.philipoom@gmail.com>2016-07-25 21:06:20 -0400
committerGravatar jadep <jade.philipoom@gmail.com>2016-07-25 21:06:20 -0400
commit4c73b7273c5fae67154ad9dd8bd3a719e4fbcf5f (patch)
treef2e60ad282447023ff59330e77ee588657e77e97 /src/ModularArithmetic
parent39a6c95de8a900c859726d875cc40ea96298d31b (diff)
parentb9312acc45407a58d07e19e407e9575d427dd6c3 (diff)
Merge branch 'master' of github.com:mit-plv/fiat-crypto
Diffstat (limited to 'src/ModularArithmetic')
-rw-r--r--src/ModularArithmetic/ModularArithmeticTheorems.v9
-rw-r--r--src/ModularArithmetic/ModularBaseSystemOpt.v3
-rw-r--r--src/ModularArithmetic/ModularBaseSystemProofs.v1
-rw-r--r--src/ModularArithmetic/Pow2BaseProofs.v3
-rw-r--r--src/ModularArithmetic/Pre.v1
-rw-r--r--src/ModularArithmetic/PrimeFieldTheorems.v1
6 files changed, 14 insertions, 4 deletions
diff --git a/src/ModularArithmetic/ModularArithmeticTheorems.v b/src/ModularArithmetic/ModularArithmeticTheorems.v
index a1d47ae8f..be9307b50 100644
--- a/src/ModularArithmetic/ModularArithmeticTheorems.v
+++ b/src/ModularArithmetic/ModularArithmeticTheorems.v
@@ -9,6 +9,8 @@ Require Import Coq.Classes.Morphisms Coq.Setoids.Setoid.
Require Export Coq.setoid_ring.Ring_theory Coq.setoid_ring.Field_theory Coq.setoid_ring.Field_tac.
Require Export Crypto.Util.IterAssocOp.
+Require Export Crypto.Util.FixCoqMistakes.
+
Section ModularArithmeticPreliminaries.
Context {m:Z}.
Let ZToFm := ZToField : BinNums.Z -> F m. Hint Unfold ZToFm. Local Coercion ZToFm : Z >-> F.
@@ -76,13 +78,16 @@ Ltac eq_remove_proofs := lazymatch goal with
simpl in *; apply Q; clear Q
end.
+(** TODO FIXME(from jgross): This tactic is way too powerful for
+ arcane reasons. It should not be using so many databases with
+ [intuition]. *)
Ltac Fdefn :=
intros;
repeat match goal with [ x : F _ |- _ ] => destruct x end;
try eq_remove_proofs;
demod;
rewrite ?Z.mul_1_l;
- intuition; demod; try solve [ f_equal; intuition ].
+ intuition auto with zarith lia relations typeclass_instances; demod; try solve [ f_equal; intuition auto with zarith lia relations typeclass_instances ].
Local Open Scope F_scope.
@@ -139,7 +144,7 @@ Section FandZ.
Lemma ZToField_small_nonzero : forall z, (0 < z < m)%Z -> ZToField z <> (0:F m).
Proof.
- intuition; find_inversion; rewrite ?Z.mod_0_l, ?Z.mod_small in *; intuition.
+ intuition; find_inversion; rewrite ?Z.mod_0_l, ?Z.mod_small in *; intuition auto with zarith.
Qed.
Require Crypto.Algebra.
diff --git a/src/ModularArithmetic/ModularBaseSystemOpt.v b/src/ModularArithmetic/ModularBaseSystemOpt.v
index 436d309c7..5f748e0f6 100644
--- a/src/ModularArithmetic/ModularBaseSystemOpt.v
+++ b/src/ModularArithmetic/ModularBaseSystemOpt.v
@@ -16,6 +16,7 @@ Import ListNotations.
Require Import Coq.ZArith.ZArith Coq.ZArith.Zpower Coq.ZArith.ZArith Coq.ZArith.Znumtheory.
Require Import Coq.QArith.QArith Coq.QArith.Qround.
Require Import Crypto.Tactics.VerdiTactics.
+Require Export Crypto.Util.FixCoqMistakes.
Local Open Scope Z.
Class SubtractionCoefficient (m : Z) (prm : PseudoMersenneBaseParams m) := {
@@ -702,4 +703,4 @@ Section Canonicalization.
auto using freeze_opt_preserves_rep.
Qed.
*)
-End Canonicalization. \ No newline at end of file
+End Canonicalization.
diff --git a/src/ModularArithmetic/ModularBaseSystemProofs.v b/src/ModularArithmetic/ModularBaseSystemProofs.v
index 01c073f06..2baf2ccc2 100644
--- a/src/ModularArithmetic/ModularBaseSystemProofs.v
+++ b/src/ModularArithmetic/ModularBaseSystemProofs.v
@@ -17,6 +17,7 @@ Require Import Crypto.Util.ListUtil Crypto.Util.CaseUtil Crypto.Util.ZUtil Crypt
Require Import Crypto.Util.Tuple.
Require Import Crypto.Util.Tactics.
Require Import Crypto.Util.Notations.
+Require Export Crypto.Util.FixCoqMistakes.
Local Open Scope Z_scope.
Local Opaque add_to_nth carry_simple.
diff --git a/src/ModularArithmetic/Pow2BaseProofs.v b/src/ModularArithmetic/Pow2BaseProofs.v
index 4b616c288..da9bbac0d 100644
--- a/src/ModularArithmetic/Pow2BaseProofs.v
+++ b/src/ModularArithmetic/Pow2BaseProofs.v
@@ -4,6 +4,7 @@ Require Import Coq.Lists.List.
Require Import Crypto.Util.ListUtil Crypto.Util.ZUtil Crypto.Util.NatUtil.
Require Import Crypto.Util.Tactics.
Require Import Crypto.ModularArithmetic.Pow2Base Crypto.BaseSystemProofs.
+Require Export Crypto.Util.FixCoqMistakes.
Require Crypto.BaseSystem.
Local Open Scope Z_scope.
@@ -779,7 +780,7 @@ Section carrying.
(* TODO : move? *)
Lemma make_chain_lt : forall x i : nat, In i (make_chain x) -> (i < x)%nat.
Proof.
- induction x; simpl; intuition.
+ induction x; simpl; intuition auto with arith lia.
Qed.
Lemma nth_default_carry_gen_full fc fi d i n us
diff --git a/src/ModularArithmetic/Pre.v b/src/ModularArithmetic/Pre.v
index 5e61278f6..8566d30ab 100644
--- a/src/ModularArithmetic/Pre.v
+++ b/src/ModularArithmetic/Pre.v
@@ -5,6 +5,7 @@ Require Import Crypto.Tactics.VerdiTactics.
Require Import Coq.omega.Omega.
Require Import Crypto.Util.NumTheoryUtil.
Require Import Crypto.Tactics.VerdiTactics.
+Require Export Crypto.Util.FixCoqMistakes.
Lemma Z_mod_mod x m : x mod m = (x mod m) mod m.
symmetry.
diff --git a/src/ModularArithmetic/PrimeFieldTheorems.v b/src/ModularArithmetic/PrimeFieldTheorems.v
index 8d594e8ce..8d47e36ed 100644
--- a/src/ModularArithmetic/PrimeFieldTheorems.v
+++ b/src/ModularArithmetic/PrimeFieldTheorems.v
@@ -10,6 +10,7 @@ Require Import Coq.ZArith.BinInt Coq.NArith.BinNat Coq.ZArith.ZArith Coq.ZArith.
Require Import Coq.Logic.Eqdep_dec.
Require Import Crypto.Util.NumTheoryUtil Crypto.Util.ZUtil.
Require Import Crypto.Util.Tactics.
+Require Export Crypto.Util.FixCoqMistakes.
Require Crypto.Algebra.
Existing Class prime.