-
Notifications
You must be signed in to change notification settings - Fork 435
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat: elaborate theorem bodies in parallel #5864
Draft
Kha
wants to merge
580
commits into
leanprover:async-proofs-base
Choose a base branch
from
Kha:async-proofs
base: async-proofs-base
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Draft
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
!bench |
Here are the benchmark results for commit 3319266. Benchmark Metric Change
=========================================================
- import Lean branch-misses 4.8% (41.6 σ)
- import Lean branches 323.8% (6967.6 σ)
- import Lean instructions 234.6% (4024.9 σ)
- import Lean task-clock 73.0% (17.5 σ)
- import Lean wall-clock 72.7% (17.3 σ)
- stdlib attribute application 41.1% (25.5 σ)
- stdlib dsimp 53.6% (78.9 σ)
- stdlib instantiate metavars 57.3% (11.4 σ)
- stdlib instructions 3.1% (393.6 σ)
- stdlib maxrss 54.2% (77.4 σ)
- stdlib process pre-definitions 63.3% (31.2 σ)
- stdlib share common exprs 52.7% (23.4 σ)
- stdlib tactic execution 126.0% (63.7 σ)
- stdlib task-clock 18.0% (275.8 σ)
- stdlib type checking 96.4% (325.3 σ)
+ stdlib size bytes .olean -6.2%
+ stdlib size lines C -8.0% |
!bench |
Here are the benchmark results for commit 600b587. Benchmark Metric Change
=========================================================
- stdlib attribute application 40.7% (52.8 σ)
- stdlib dsimp 50.4% (100.0 σ)
- stdlib fix level params 36.2% (15.0 σ)
- stdlib instantiate metavars 57.2% (25.3 σ)
- stdlib maxrss 54.5% (159.1 σ)
- stdlib process pre-definitions 65.3% (99.1 σ)
- stdlib tactic execution 127.0% (88.2 σ)
- stdlib task-clock 16.4% (41.8 σ)
- stdlib type checking 96.6% (364.6 σ)
+ stdlib wall-clock -2.7% (-594.3 σ)
+ stdlib size bytes .olean -6.2%
+ stdlib size lines C -8.0% |
Kha
force-pushed
the
async-proofs
branch
5 times, most recently
from
October 28, 2024 21:31
c27de50
to
9727358
Compare
!bench |
Here are the benchmark results for commit 9727358. Benchmark Metric Change
======================================================
- stdlib attribute application 47.2% (18.7 σ)
- stdlib fix level params 34.9% (38.0 σ)
- stdlib instantiate metavars 59.9% (29.6 σ)
- stdlib instructions 6.7% (991.7 σ)
- stdlib maxrss 54.0% (135.2 σ)
- stdlib process pre-definitions 69.0% (21.8 σ)
- stdlib share common exprs 56.7% (111.7 σ)
- stdlib tactic execution 157.6% (395.3 σ)
- stdlib task-clock 30.0% (625.7 σ)
- stdlib type checking 104.3% (67.8 σ)
- stdlib wall-clock 6.5% (14.6 σ) |
This was referenced Nov 8, 2024
This reverts commit d099f56.
…6282) This PR moves `IO.Channel` and `IO.Mutex` from `Init` to `Std.Sync` and renames them to `Std.Channel` and `Std.Mutex`. Note that the original files are retained and the deprecation is written manually as we cannot import `Std` from `Init` so this is the only way to deprecate without a hard breaking change. In particular we do not yet move `Std.Queue` from `Init` to `Std` both because it needs to be retained for this deprecation to work but also because it is already within the `Std` namespace and as such we cannot maintain two copies of the file at once. After the deprecation period is finished `Std.Queue` will find a new home in `Std.Data.Queue`.
…eanprover#6244) This PR changes the implementation of `HashMap.toList`, so the ordering agrees with `HashMap.toArray`. Currently there are no verification lemmas about `HashMap.toList`, so no contract is being broken yet!
* Make sure metaprogramming users cannot be surprised by its introduction * Make `#guard_msgs` compatible with its use
This PR adds the `debug.proofAsSorry` option. When enabled, the proofs of theorems are ignored and replaced with `sorry`.
This PR adds theorems characterizing the value of the unsigned shift right of a bitvector in terms of its 2s complement interpretation as an integer. Unsigned shift right by at least one bit makes the value of the bitvector less than or equal to `2^(w-1)`, makes the interpretation of the bitvector `Int` and `Nat` agree. In the case when `n = 0`, then the shift right value equals the integer interpretation. ```lean theorem toInt_ushiftRight_eq_ite {x : BitVec w} {n : Nat} : (x >>> n).toInt = if n = 0 then x.toInt else x.toNat >>> n ``` ```lean theorem toFin_uShiftRight {x : BitVec w} {n : Nat} : (x >>> n).toFin = x.toFin / (Fin.ofNat' (2^w) (2^n)) ``` --------- Co-authored-by: Harun Khan <[email protected]> Co-authored-by: Tobias Grosser <[email protected]>
This PR adds `BitVec.[toInt|toFin]_concat` and moves a couple of theorems into the concat section, as `BitVec.msb_concat` is needed for the `toInt_concat` proof. We also add `Bool.toInt`.
This PR removes an unused import in the time library that can yield to import cycles when building stuff that gets imported by `Std.Internal` but also wants to import `Std.Time`.
This PR adds support for `HEq` to the new code generator.
This PR adds lemmas simplifying `for` loops over `Option` into `Option.pelim`, giving parity with lemmas simplifying `for` loops of `List` into `List.fold`.
This PR upstreams the `ToLevel` typeclass from mathlib and uses it to fix the existing `ToExpr` instances so that they are truly universe polymorphic (previously it generated malformed expressions when the universe level was nonzero). We improve on the mathlib definition of `ToLevel` to ensure the class always lives in `Type`, irrespective of the universe parameter. This implements part one of the plan to upstream a derive handler for `ToExpr`, as discussed in leanprover#5906 and leanprover#5909. --------- Co-authored-by: Kyle Miller <[email protected]> Co-authored-by: Tobias Grosser <[email protected]>
This PR generalizes the universe level for `Array.find?`, by giving it a separate implementation from `Array.findM?`.
This PR adds `protected` to `Fin.cast` and `BitVec.cast`, to avoid confusion with `_root_.cast`. These should mostly be used via dot-notation in any case.
This PR adds `GetElem` lemmas for the basic `Vector` operations. The `Vector` API is still very sparse, but I'm hoping to infill rapidly.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Draft in need of cleanups, smaller fixes, and incremental upstreaming, opened for benchmarking