diff options
author | Jason Gross <jgross@mit.edu> | 2016-10-07 18:33:27 -0400 |
---|---|---|
committer | Jason Gross <jgross@mit.edu> | 2016-10-07 18:40:47 -0400 |
commit | 9e67aab9d86311a2faa21781b3e208b169e184f2 (patch) | |
tree | 3c8671cb5124a64b8600b1a551fcfdfba13f13d8 /src/Util/ZUtil.v | |
parent | 370c3538c8097a3d5256aa0abcaff54ed0f4286b (diff) |
Stronger Ztestbit, convert_to_ztestbit
After | File Name | Before || Change
----------------------------------------------------------------------------------
5m51.78s | Total | 5m58.93s || -0m07.15s
----------------------------------------------------------------------------------
0m35.42s | ModularArithmetic/Conversion | 0m37.08s || -0m01.65s
0m22.17s | BoundedArithmetic/DoubleBoundedProofs | 0m23.61s || -0m01.43s
1m35.32s | Test/Curve25519SpecTestVectors | 1m36.20s || -0m00.88s
0m28.51s | ModularArithmetic/ModularBaseSystemProofs | 0m27.76s || +0m00.75s
0m22.26s | ModularArithmetic/Pow2BaseProofs | 0m22.74s || -0m00.47s
0m20.29s | EdDSARepChange | 0m19.76s || +0m00.52s
0m14.57s | Specific/GF25519 | 0m14.40s || +0m00.16s
0m13.05s | Util/ZUtil | 0m13.37s || -0m00.31s
0m09.95s | Testbit | 0m10.68s || -0m00.73s
0m08.56s | ModularArithmetic/Montgomery/ZProofs | 0m09.22s || -0m00.66s
0m08.34s | BoundedArithmetic/ArchitectureToZLikeProofs | 0m08.38s || -0m00.04s
0m07.98s | Encoding/PointEncoding | 0m08.40s || -0m00.41s
0m07.75s | Specific/GF1305 | 0m08.07s || -0m00.32s
0m03.84s | ModularArithmetic/Tutorial | 0m03.43s || +0m00.40s
0m03.83s | BaseSystemProofs | 0m04.14s || -0m00.30s
0m03.79s | ModularArithmetic/BarrettReduction/ZHandbook | 0m04.31s || -0m00.51s
0m03.58s | ModularArithmetic/ModularBaseSystemListProofs | 0m03.57s || +0m00.01s
0m03.35s | BoundedArithmetic/InterfaceProofs | 0m03.53s || -0m00.17s
0m03.13s | ModularArithmetic/BarrettReduction/ZGeneralized | 0m03.12s || +0m00.00s
0m02.84s | Encoding/PointEncodingPre | 0m02.83s || +0m00.00s
0m02.77s | ModularArithmetic/ModularArithmeticTheorems | 0m02.95s || -0m00.18s
0m02.42s | ModularArithmetic/ModularBaseSystemOpt | 0m02.20s || +0m00.21s
0m02.36s | ModularArithmetic/BarrettReduction/ZBounded | 0m02.35s || +0m00.00s
0m02.22s | Specific/FancyMachine256/Montgomery | 0m02.10s || +0m00.12s
0m02.12s | Specific/FancyMachine256/Barrett | 0m02.39s || -0m00.27s
0m01.88s | ModularArithmetic/Montgomery/ZBounded | 0m01.97s || -0m00.09s
0m01.74s | Specific/FancyMachine256/Core | 0m01.76s || -0m00.02s
0m01.47s | ModularArithmetic/BarrettReduction/Z | 0m01.49s || -0m00.02s
0m01.35s | ModularArithmetic/PrimeFieldTheorems | 0m01.48s || -0m00.12s
0m01.31s | BaseSystem | 0m01.36s || -0m00.05s
0m01.28s | ModularArithmetic/ExtendedBaseVector | 0m01.50s || -0m00.21s
0m00.98s | Util/NumTheoryUtil | 0m01.12s || -0m00.14s
0m00.97s | Experiments/EncodingLemmas | 0m00.97s || +0m00.00s
0m00.69s | Encoding/ModularWordEncodingPre | 0m00.74s || -0m00.05s
0m00.67s | ModularArithmetic/ExtPow2BaseMulProofs | 0m00.80s || -0m00.13s
0m00.67s | ModularArithmetic/PseudoMersenneBaseParamProofs | 0m00.70s || -0m00.02s
0m00.66s | ModularArithmetic/ModularBaseSystem | 0m00.60s || +0m00.06s
0m00.66s | Encoding/ModularWordEncodingTheorems | 0m00.66s || +0m00.00s
0m00.64s | BoundedArithmetic/Interface | 0m00.58s || +0m00.06s
0m00.64s | ModularArithmetic/ModularBaseSystemList | 0m00.57s || +0m00.07s
0m00.61s | Spec/EdDSA | 0m00.66s || -0m00.05s
0m00.59s | Spec/Ed25519 | 0m00.57s || +0m00.02s
0m00.58s | Spec/ModularWordEncoding | 0m00.53s || +0m00.04s
0m00.53s | ModularArithmetic/Pre | 0m00.54s || -0m00.01s
0m00.51s | BoundedArithmetic/DoubleBounded | 0m00.50s || +0m00.01s
0m00.49s | BoundedArithmetic/ArchitectureToZLike | 0m00.43s || +0m00.06s
0m00.47s | ModularArithmetic/ZBounded | 0m00.47s || +0m00.00s
0m00.45s | BoundedArithmetic/StripCF | 0m00.46s || -0m00.01s
0m00.40s | ModularArithmetic/Pow2Base | 0m00.66s || -0m00.26s
0m00.40s | ModularArithmetic/PseudoMersenneBaseParams | 0m00.42s || -0m00.01s
0m00.37s | ModularArithmetic/Montgomery/Z | 0m00.40s || -0m00.03s
0m00.35s | Spec/ModularArithmetic | 0m00.41s || -0m00.06s
Diffstat (limited to 'src/Util/ZUtil.v')
-rw-r--r-- | src/Util/ZUtil.v | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/src/Util/ZUtil.v b/src/Util/ZUtil.v index 657ba8468..8d482d1ee 100644 --- a/src/Util/ZUtil.v +++ b/src/Util/ZUtil.v @@ -806,6 +806,13 @@ Module Z. Qed. Hint Rewrite <- Z.lor_shiftl using zutil_arith : convert_to_Ztestbit. + Lemma lor_shiftl' : forall a b n, 0 <= n -> 0 <= a < 2 ^ n -> + Z.lor (Z.shiftl b n) a = (Z.shiftl b n) + a. + Proof. + intros; rewrite Z.lor_comm, Z.add_comm; apply lor_shiftl; assumption. + Qed. + Hint Rewrite <- Z.lor_shiftl' using zutil_arith : convert_to_Ztestbit. + Lemma shiftl_spec_full a n m : Z.testbit (a << n) m = if Z_lt_dec m n then false @@ -2806,4 +2813,8 @@ Ltac Ztestbit := | _ => progress autorewrite with Ztestbit | [ |- context[Z.testbit ?x ?y] ] => rewrite (Z.testbit_neg_r x y) by zutil_arith + | [ |- context[Z.testbit ?x ?y] ] + => rewrite (Z.bits_above_pow2 x y) by zutil_arith + | [ |- context[Z.testbit ?x ?y] ] + => rewrite (Z.bits_above_log2 x y) by zutil_arith end. |