aboutsummaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAge
* Remove the mod on eval_addGravatar Jason Gross2018-02-19
|
* Remove runtime_scopeGravatar Jason Gross2018-02-19
| | | | As per https://github.com/mit-plv/fiat-crypto/pull/315#discussion_r169085799
* [experiments] Add some more arithmetic operationsGravatar Jason Gross2018-02-19
|
* NumTheoryUtil: make coqprime dependencies explicitGravatar Andres Erbsen2018-02-19
|
* Take in n, compute limbwidthGravatar Jason Gross2018-02-18
|
* Rename type_descr to second_order, as per PR requestGravatar Jason Gross2018-02-18
|
* Rename AutoReifyGravatar Jason Gross2018-02-18
|
* Speed up the pipeline by 3x, restoring previous performanceGravatar Jason Gross2018-02-18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | Apparently using `refine eq_refl` rather than `subst <name for evar>; reflexivity` was resulting in βδ reduction of `chained_carries` in `carry_mulmod`. The β reduction resulted in us getting a different cps'd term. I do not know why this particular β reduction resulted in a 3x slowdown in partial reduction; it seems like anything that cared about sharing should either get sharing from the top-level in `carry_mulmod`, or should have no difference in sharing between the terms ```coq (fun n s c p idxs => fold_right (fun a b => @carry_reduce n s c a b) p (rev idxs)) n s c p idxs ``` and ```coq fold_right (fun a b => @carry_reduce n s c a b) p (rev idxs)) ``` This feels fragile, and I am mystified. Note for the future: I went about debugging this by integrating little bits of this PR one by one, seeing which one caused the slowdown, and then, when I realized it was use of `carry_mulmod`, I took the reified terms and made a goal asserting their equality, and then took the terms apart with `f_equal` and `extensionality` until I found the difference.
* Remove mul_rargs recordGravatar Jason Gross2018-02-18
|
* Make use of expand_lists tacticGravatar Jason Gross2018-02-18
|
* Rename carry_mulmod_correct to eval_carry_mulmod to fit with other lemmasGravatar Jason Gross2018-02-18
|
* Add GallinaReify.AutoReifyGravatar Jason Gross2018-02-18
|
* Simplify the pipeline a bitGravatar Jason Gross2018-02-18
|
* Remove try_transport_untranslateGravatar Jason Gross2018-02-18
|
* Respond to some code review commentsGravatar Jason Gross2018-02-18
|
* Do a large chunk of the bounds pipelineGravatar Jason Gross2018-02-18
|
* WIP on more general continuationsGravatar Jason Gross2018-02-18
|
* Add notations for type reificationGravatar Jason Gross2018-02-18
|
* Add some imports to experimentsGravatar Jason Gross2018-02-18
|
* Strip the pointed instance names off of the default value in list expansionGravatar Jason Gross2018-02-18
| | | | This is required for reification to work, it seems
* Add expand_lists tacticGravatar Jason Gross2018-02-18
|
* Add pointed typesGravatar Jason Gross2018-02-18
| | | | For filling in default values
* Fix a proof for Coq 8.7Gravatar Jason Gross2018-02-17
|
* Add lemmas about always_invert_Some and bindGravatar Jason Gross2018-02-17
|
* Add always_invert_SomeGravatar Jason Gross2018-02-17
|
* Add commentGravatar Jason Gross2018-02-16
|
* Fix CPSify of bool_rect to eliminate dead codeGravatar Jason Gross2018-02-16
| | | | | | | | | | | | | | | | | | | | | | | | | | | The proper cps transform of ``` if b then (let x := y in z) else w ``` is ``` cps b (fun b' => if b' then cps y (fun y' => let x := y' in cps z k) else cps w k ``` not ``` cps b (fun b' => cps y (fun y' => let x := y' in cps z (fun z' => cps w (fun w' => if b' then k z' else k w') ``` So we fix the cps transform, and remove the now useless dead code elimination. The partial reduction pipeline is now 2x faster.
* Move [Section invert] above CPSGravatar Jason Gross2018-02-16
| | | | Preparation for following commit
* Add a file to parse taps with Coq notationsGravatar Jason Gross2018-02-14
|
* Add some string utility functionsGravatar Jason Gross2018-02-13
|
* Add expand_list_correct to ListUtilGravatar Jason Gross2018-02-12
|
* Add some TODOsGravatar Jason Gross2018-02-12
|
* [experiments] Use smaller multiplication for 19*x (#307)Gravatar Jason Gross2018-02-12
| | | | | | | | | | | | | | | | | | | | | | | | | | See also #300. We take the simple path of pulling all of the constant multiplication of sufficiently small size to the end of any expression like a * b * c * d * ..., and then we associate all addition and multiplication all the way to the right. This might be very much the wrong choice in some cases; I invite suggestions that don't require knowing any bounds, which perform better. (Doing things that require bounds would complicate this significantly.) I have no idea why this reassociation results in this part of the diff: ```diff expr_let 15 := (uint64)(x_14 >> 51) in expr_let 16 := ((uint64)x_14 & 2251799813685247) in - expr_let 17 := x_4 +₆₄₋₆₄₋₆₄ (19) *₃₂₋₆₄₋₆₄ x_15 in - expr_let 18 := (uint32)(x_17 >> 51) in + expr_let 17 := x_4 +₆₄ x_15 *₆₄₋₆₄₋₆₄ (19) in + expr_let 18 := (uint64)(x_17 >> 51) in expr_let 19 := ((uint64)x_17 & 2251799813685247) in - expr_let 20 := x_18 +₃₂₋₆₄₋₆₄ x_7 in - expr_let 21 := (uint32)(x_20 >> 51) in + expr_let 20 := x_18 +₆₄ x_7 in + expr_let 21 := (uint64)(x_20 >> 51) in ```
* Fix an issue where travis was not building quite the right targetsGravatar Jason Gross2018-02-12
|
* Add string conversionsGravatar Jason Gross2018-02-11
|
* [Work in Progress] Experiment with Bounds Analysis based on lists (#305)Gravatar Jason Gross2018-02-11
| | | | | | | | | | | | | | * Initial work * Respond to code review comments * Add x25519_32, commented out for speed * Remove outdated comment * Add another unfolding thing to make 2^127-1 with (_ + 1/3)%Q work * Use vm_compute in one place where it's faster
* Fix no-curves-proofs-non-specific targetGravatar Jason Gross2018-02-11
| | | | Previously the vo_reverse_closure logic was not working correctly
* Add notation for option_bindGravatar Jason Gross2018-02-10
|
* Split off ZRange lemmasGravatar Jason Gross2018-02-10
|
* Support older git ls-filesGravatar Jason Gross2018-02-10
| | | | The older ones don't have --recurse-submodules
* Add some ZRange operationsGravatar Jason Gross2018-02-10
|
* make bbv submodule URL relative to origin, so thatGravatar Samuel Gruetter2018-02-05
| | | | developers will clone the submodule via ssh, while travis will clone it via https
* switch to public bbvGravatar Samuel Gruetter2018-02-05
|
* minor updates needed to make it compile with bbvGravatar Samuel Gruetter2018-02-05
| | | | removing lemma wordToNat_wzero is ok because it's already in bbv
* add bedrock bit vectors library (bbv) as a submodule replacing the Bedrock ↵Gravatar Samuel Gruetter2018-02-05
| | | | directory
* Work around travis bugsGravatar Jason Gross2018-01-29
| | | | | | | https://github.com/travis-ci/travis-ci/issues/8507 We use a script and travis_retry to work around "failed to fetch" with launchpad
* Add dead code elimination via inliningGravatar Jason Gross2018-01-29
|
* Have reification run delta on unknown identsGravatar Jason Gross2018-01-29
| | | | This allows us to remove some manual unfolding
* Remove useless dletGravatar Jason Gross2018-01-29
|
* Change reduction behavior of let-bound listsGravatar Jason Gross2018-01-29
| | | | | | | | Rather than always inline, we now introduce one let-bound node per non-var list element. Not sure this is the right thing to do, so maybe we should revert this commit.