aboutsummaryrefslogtreecommitdiff
path: root/src/Util/ZUtil.v
diff options
context:
space:
mode:
authorGravatar Jason Gross <jgross@mit.edu>2016-10-09 20:40:27 -0400
committerGravatar Jason Gross <jgross@mit.edu>2016-10-09 20:48:02 -0400
commitc07267ce4315bceb7955bc36952c24ef02c5c1e9 (patch)
tree3d742a47bac2e3c610b9a81fd604b3d8ea2bfa9c /src/Util/ZUtil.v
parent5c027fc4da43d3ad1398451ba4352d1d11607815 (diff)
Fix shiftr_spec_full
After | File Name | Before || Change --------------------------------------------------------------------------------------------- 5m54.81s | Total | 6m41.78s || -0m46.96s --------------------------------------------------------------------------------------------- 0m21.93s | ModularArithmetic/Pow2BaseProofs | 0m28.72s || -0m06.78s 0m35.50s | ModularArithmetic/Conversion | 0m40.00s || -0m04.50s 0m19.50s | EdDSARepChange | 0m23.84s || -0m04.33s 1m34.67s | Test/Curve25519SpecTestVectors | 1m38.63s || -0m03.95s 0m08.55s | ModularArithmetic/Montgomery/ZProofs | 0m11.52s || -0m02.96s 0m10.05s | Testbit | 0m11.42s || -0m01.36s 0m08.01s | BoundedArithmetic/Double/Proofs/Multiply | 0m09.97s || -0m01.96s 0m03.88s | BaseSystemProofs | 0m05.09s || -0m01.20s 0m03.74s | ModularArithmetic/BarrettReduction/ZHandbook | 0m05.44s || -0m01.70s 0m03.40s | BoundedArithmetic/InterfaceProofs | 0m05.01s || -0m01.60s 0m03.32s | ModularArithmetic/Tutorial | 0m04.34s || -0m01.02s 0m02.98s | ModularArithmetic/BarrettReduction/ZGeneralized | 0m04.29s || -0m01.31s 0m02.59s | ModularArithmetic/ModularArithmeticTheorems | 0m03.70s || -0m01.11s 0m27.38s | ModularArithmetic/ModularBaseSystemProofs | 0m27.26s || +0m00.11s 0m14.42s | Specific/GF25519 | 0m14.47s || -0m00.05s 0m12.86s | Util/ZUtil | 0m13.54s || -0m00.67s 0m08.46s | BoundedArithmetic/ArchitectureToZLikeProofs | 0m08.98s || -0m00.51s 0m08.02s | Encoding/PointEncoding | 0m08.90s || -0m00.88s 0m07.66s | Specific/GF1305 | 0m07.85s || -0m00.18s 0m06.74s | BoundedArithmetic/Double/Proofs/SpreadLeftImmediate | 0m07.62s || -0m00.87s 0m05.41s | BoundedArithmetic/Double/Proofs/RippleCarryAddSub | 0m06.22s || -0m00.80s 0m03.49s | ModularArithmetic/ModularBaseSystemListProofs | 0m03.44s || +0m00.05s 0m02.96s | Encoding/PointEncodingPre | 0m03.80s || -0m00.83s 0m02.75s | BoundedArithmetic/Double/Proofs/Decode | 0m03.70s || -0m00.95s 0m02.34s | ModularArithmetic/ModularBaseSystemOpt | 0m02.36s || -0m00.02s 0m02.19s | ModularArithmetic/BarrettReduction/ZBounded | 0m02.94s || -0m00.75s 0m02.08s | Specific/FancyMachine256/Montgomery | 0m02.08s || +0m00.00s 0m02.04s | Specific/FancyMachine256/Barrett | 0m02.05s || -0m00.00s 0m01.77s | ModularArithmetic/Montgomery/ZBounded | 0m02.06s || -0m00.29s 0m01.76s | ModularArithmetic/PrimeFieldTheorems | 0m01.78s || -0m00.02s 0m01.70s | Specific/FancyMachine256/Core | 0m01.70s || +0m00.00s 0m01.47s | ModularArithmetic/BarrettReduction/Z | 0m02.00s || -0m00.53s 0m01.30s | BaseSystem | 0m01.27s || +0m00.03s 0m01.13s | ModularArithmetic/ExtendedBaseVector | 0m01.40s || -0m00.27s 0m01.05s | BoundedArithmetic/Double/Repeated/Proofs/Decode | 0m01.14s || -0m00.08s 0m00.92s | Util/NumTheoryUtil | 0m01.40s || -0m00.47s 0m00.86s | Experiments/EncodingLemmas | 0m01.38s || -0m00.51s 0m00.84s | BoundedArithmetic/Double/Proofs/LoadImmediate | 0m00.98s || -0m00.14s 0m00.82s | BoundedArithmetic/Double/Proofs/BitwiseOr | 0m00.90s || -0m00.08s 0m00.70s | BoundedArithmetic/Interface | 0m00.92s || -0m00.22s 0m00.70s | Spec/EdDSA | 0m00.97s || -0m00.27s 0m00.69s | ModularArithmetic/ExtPow2BaseMulProofs | 0m00.66s || +0m00.02s 0m00.69s | ModularArithmetic/ModularBaseSystem | 0m00.67s || +0m00.01s 0m00.66s | Encoding/ModularWordEncodingPre | 0m00.61s || +0m00.05s 0m00.66s | BoundedArithmetic/X86ToZLike | 0m01.01s || -0m00.35s 0m00.64s | ModularArithmetic/ModularBaseSystemList | 0m00.62s || +0m00.02s 0m00.64s | ModularArithmetic/PseudoMersenneBaseParamProofs | 0m00.79s || -0m00.15s 0m00.61s | Encoding/ModularWordEncodingTheorems | 0m01.02s || -0m00.41s 0m00.58s | BoundedArithmetic/Double/Proofs/SelectConditional | 0m00.66s || -0m00.08s 0m00.56s | BoundedArithmetic/Double/Repeated/Proofs/RippleCarryAddSub | 0m00.84s || -0m00.27s 0m00.56s | Spec/ModularWordEncoding | 0m00.73s || -0m00.16s 0m00.55s | ModularArithmetic/ZBounded | 0m00.56s || -0m00.01s 0m00.55s | Spec/Ed25519 | 0m00.78s || -0m00.23s 0m00.52s | BoundedArithmetic/Double/Core | 0m00.57s || -0m00.04s 0m00.52s | BoundedArithmetic/ArchitectureToZLike | 0m00.64s || -0m00.12s 0m00.52s | BoundedArithmetic/Double/Repeated/Core | 0m00.71s || -0m00.18s 0m00.50s | BoundedArithmetic/StripCF | 0m00.70s || -0m00.19s 0m00.49s | ModularArithmetic/Pre | 0m00.74s || -0m00.25s 0m00.47s | BoundedArithmetic/Double/Repeated/Proofs/SelectConditional | 0m00.74s || -0m00.27s 0m00.47s | BoundedArithmetic/Double/Repeated/Proofs/LoadImmediate | 0m00.72s || -0m00.25s 0m00.44s | BoundedArithmetic/Double/Repeated/Proofs/BitwiseOr | 0m00.58s || -0m00.13s 0m00.44s | ModularArithmetic/Pow2Base | 0m00.63s || -0m00.19s 0m00.42s | ModularArithmetic/Montgomery/Z | 0m00.61s || -0m00.19s 0m00.36s | ModularArithmetic/PseudoMersenneBaseParams | 0m00.60s || -0m00.24s 0m00.34s | Spec/ModularArithmetic | 0m00.52s || -0m00.18s
Diffstat (limited to 'src/Util/ZUtil.v')
-rw-r--r--src/Util/ZUtil.v6
1 files changed, 3 insertions, 3 deletions
diff --git a/src/Util/ZUtil.v b/src/Util/ZUtil.v
index a5e87b92c..69f4fe236 100644
--- a/src/Util/ZUtil.v
+++ b/src/Util/ZUtil.v
@@ -858,13 +858,13 @@ Module Z.
Hint Rewrite shiftl_spec_full : Ztestbit_full.
Lemma shiftr_spec_full a n m
- : Z.testbit (a << n) m = if Z_lt_dec m n
+ : Z.testbit (a >> n) m = if Z_lt_dec m (-n)
then false
else if Z_le_dec 0 m
- then Z.testbit a (m - n)
+ then Z.testbit a (m + n)
else false.
Proof.
- repeat break_match; auto using Z.shiftl_spec_low, Z.shiftl_spec, Z.testbit_neg_r with omega.
+ rewrite <- Z.shiftl_opp_r, shiftl_spec_full, Z.sub_opp_r; reflexivity.
Qed.
Hint Rewrite shiftl_spec_full : Ztestbit.
Hint Rewrite shiftl_spec_full : Ztestbit_full.