diff options
author | Jason Gross <jagro@google.com> | 2016-07-27 10:48:01 -0700 |
---|---|---|
committer | Jason Gross <jagro@google.com> | 2016-07-27 10:52:39 -0700 |
commit | bdef7405367103510e4270212f732f1d1e071848 (patch) | |
tree | 1e9d05a3f6768ff3024280e1012729b8ce555375 | |
parent | 7e010d065c9f6f28b467c104c693e4cb00f5cb22 (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
-rw-r--r-- | src/Util/ZUtil.v | 12 |
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. |