aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGravatar Jason Gross <jagro@google.com>2016-07-27 10:48:01 -0700
committerGravatar Jason Gross <jagro@google.com>2016-07-27 10:52:39 -0700
commitbdef7405367103510e4270212f732f1d1e071848 (patch)
tree1e9d05a3f6768ff3024280e1012729b8ce555375 /src
parent7e010d065c9f6f28b467c104c693e4cb00f5cb22 (diff)
Make Z.pre_reorder_fractions / Z.simplify_fractions_le not loop
After | File Name | Before || Change ---------------------------------------------------------------------------------- 1m50.76s | Total | 1m52.98s || -0m02.22s ---------------------------------------------------------------------------------- 0m33.56s | Specific/GF25519 | 0m34.00s || -0m00.43s 0m15.81s | ModularArithmetic/ModularBaseSystemProofs | 0m15.78s || +0m00.03s 0m11.88s | Experiments/SpecEd25519 | 0m11.77s || +0m00.11s 0m07.21s | Specific/GF1305 | 0m07.49s || -0m00.28s 0m04.84s | ModularArithmetic/Tutorial | 0m05.31s || -0m00.46s 0m04.67s | ModularArithmetic/Pow2BaseProofs | 0m05.34s || -0m00.67s 0m04.65s | BaseSystemProofs | 0m04.13s || +0m00.52s 0m03.26s | ModularArithmetic/ModularBaseSystemOpt | 0m03.33s || -0m00.07s 0m02.39s | Util/ZUtil | 0m02.40s || -0m00.00s 0m02.39s | ModularArithmetic/ModularArithmeticTheorems | 0m01.62s || +0m00.77s 0m02.28s | Encoding/PointEncodingPre | 0m02.27s || +0m00.00s 0m01.72s | BaseSystem | 0m01.23s || +0m00.49s 0m01.64s | ModularArithmetic/PrimeFieldTheorems | 0m02.06s || -0m00.42s 0m01.44s | ModularArithmetic/BarrettReduction/Z | 0m01.45s || -0m00.01s 0m01.34s | Experiments/DerivationsOptionRectLetInEncoding | 0m01.49s || -0m00.14s 0m01.13s | ModularArithmetic/ExtendedBaseVector | 0m01.13s || +0m00.00s 0m00.92s | ModularArithmetic/ModularBaseSystemField | 0m00.95s || -0m00.02s 0m00.91s | Util/NumTheoryUtil | 0m01.38s || -0m00.46s 0m00.85s | ModularArithmetic/ModularBaseSystemListProofs | 0m00.96s || -0m00.10s 0m00.77s | Encoding/ModularWordEncodingTheorems | 0m00.93s || -0m00.16s 0m00.76s | Experiments/SpecificCurve25519 | 0m00.75s || +0m00.01s 0m00.67s | Testbit | 0m00.62s || +0m00.05s 0m00.65s | ModularArithmetic/PseudoMersenneBaseParamProofs | 0m00.62s || +0m00.03s 0m00.62s | ModularArithmetic/ExtPow2BaseMulProofs | 0m00.95s || -0m00.32s 0m00.60s | ModularArithmetic/ModularBaseSystem | 0m00.62s || -0m00.02s 0m00.60s | Spec/ModularWordEncoding | 0m00.88s || -0m00.28s 0m00.60s | Encoding/ModularWordEncodingPre | 0m00.71s || -0m00.10s 0m00.59s | ModularArithmetic/ModularBaseSystemList | 0m00.90s || -0m00.31s 0m00.54s | ModularArithmetic/PseudoMersenneBaseParams | 0m00.40s || +0m00.14s 0m00.51s | ModularArithmetic/Pre | 0m00.70s || -0m00.18s 0m00.50s | Spec/ModularArithmetic | 0m00.36s || +0m00.14s 0m00.46s | ModularArithmetic/Pow2Base | 0m00.46s || +0m00.00s
Diffstat (limited to 'src')
-rw-r--r--src/Util/ZUtil.v12
1 files changed, 10 insertions, 2 deletions
diff --git a/src/Util/ZUtil.v b/src/Util/ZUtil.v
index b87c20b79..30cb38857 100644
--- a/src/Util/ZUtil.v
+++ b/src/Util/ZUtil.v
@@ -759,11 +759,19 @@ Module Z.
Ltac pre_reorder_fractions_step :=
match goal with
| [ |- context[?x / ?y * ?z] ]
- => rewrite (Z.mul_comm (x / y) z)
+ => lazymatch z with
+ | context[_ / _] => fail
+ | _ => idtac
+ end;
+ rewrite (Z.mul_comm (x / y) z)
| _ => let LHS := match goal with |- ?LHS <= ?RHS => LHS end in
match LHS with
| context G[?x * (?y / ?z)]
- => let G' := context G[(x * y) / z] in
+ => lazymatch x with
+ | context[_ / _] => fail
+ | _ => idtac
+ end;
+ let G' := context G[(x * y) / z] in
transitivity G'
end
end.