Repository navigation
Conversation
Independent thorough review — approveI reviewed the final diff, the upstream README/source at commit
Verdict: approve. I found no material faithfulness, source, significance, or maintainability defect. |
Proof profile (new / modified Lean files)
This build covers the changed modules and their dependency cones on top of the restored cache. The serial per-file sums below are useful for ranking slow files, not as a build budget. Total heartbeats: 2,720 maxHeartbeats units across 12 files (3,566 added LOC). Sum of Count-heartbeats wall-clock total: 33.13 s. Repeated import cost inside Heartbeat values come from Mathlib's LOC counts added lines in the profiled Lean files from this PR diff.
Aggregate phase totals
Slowest changed modules (from
|
| Changed module | Lake time |
|---|---|
LeanPool.Lean4EVM.Primitives.UInt.Core |
6.10 s |
LeanPool.Lean4EVM.Primitives.FixedBytes.Core |
5.20 s |
LeanPool.Lean4EVM.Primitives.FixedBytes.H256 |
2.30 s |
LeanPool.Lean4EVM.Primitives.FixedBytes.Address |
2.10 s |
LeanPool.Lean4EVM.Primitives.UInt.U256 |
1.70 s |
LeanPool.Lean4EVM.Primitives.FixedBytes.H160 |
1.60 s |
LeanPool.Lean4EVM.Primitives.FixedBytes.Bytes32 |
1.40 s |
LeanPool.Lean4EVM.Primitives.UInt.U64 |
1.30 s |
LeanPool.Lean4EVM.Primitives.UInt.U128 |
1.20 s |
LeanPool.Lean4EVM.Primitives.UInt |
1.20 s |
LeanPool.Lean4EVM.Primitives.FixedBytes |
1.10 s |
LeanPool.Lean4EVM |
1.10 s |
Per-file `lean --profile` output
LeanPool/Lean4EVM.lean
import took 889ms
cumulative profiling times:
elaboration 0.278ms
import 889ms
initialization 34.5ms
interpretation 129ms
linting 0.473ms
module linting 0.00109ms
overlappingInstancesLinter 0.329ms
parsing 0.0479ms
tacticAnalysis 2.53ms
real 1.62
user 0.90
sys 0.75
LeanPool/Lean4EVM/Primitives/FixedBytes.lean
import took 897ms
cumulative profiling times:
elaboration 0.169ms
import 897ms
initialization 35.8ms
interpretation 117ms
linting 0.304ms
module linting 0.00135ms
overlappingInstancesLinter 0.222ms
parsing 0.0298ms
tacticAnalysis 1.26ms
real 1.64
user 0.92
sys 0.74
LeanPool/Lean4EVM/Primitives/FixedBytes/Address.lean
import took 880ms
cumulative profiling times:
attribute application 5.25ms
blocked (unaccounted) 4.49ms
compilation (IR) 0.775ms
compilation (LCNF base) 12.3ms
compilation (LCNF impure) 4.11ms
compilation (LCNF mono) 8.36ms
congr simp thm 2.01ms
elaboration 71.9ms
fix level params 0.405ms
import 880ms
initialization 34.7ms
instantiate metavars 0.595ms
interpretation 295ms
let-to-have transformation 0.265ms
linting 16.6ms
module linting 0.00139ms
overlappingInstancesLinter 8.28ms
parsing 18.7ms
process pre-definitions 7.88ms
share common exprs 1.8ms
simp 68.2ms
tactic execution 42.6ms
tacticAnalysis 37.6ms
type checking 15.3ms
typeclass inference 57.3ms
real 1.77
user 1.41
sys 0.77
LeanPool/Lean4EVM/Primitives/FixedBytes/Bytes32.lean
import took 909ms
cumulative profiling times:
attribute application 9.06ms
blocked (unaccounted) 0.65ms
compilation (IR) 0.928ms
compilation (LCNF base) 14.3ms
compilation (LCNF impure) 4.51ms
compilation (LCNF mono) 7.1ms
congr simp thm 1.77ms
elaboration 96.1ms
fix level params 0.408ms
import 909ms
initialization 29.8ms
instantiate metavars 0.682ms
interpretation 334ms
let-to-have transformation 0.263ms
linting 19.7ms
module linting 0.00122ms
overlappingInstancesLinter 10.4ms
parsing 22.2ms
process pre-definitions 8.57ms
share common exprs 2ms
simp 71ms
tactic execution 33.3ms
tacticAnalysis 42.7ms
type checking 14.6ms
typeclass inference 54.9ms
real 1.85
user 1.48
sys 0.78
LeanPool/Lean4EVM/Primitives/FixedBytes/Core.lean
import took 883ms
cumulative profiling times:
attribute application 7.41ms
blocked (unaccounted) 12.7ms
compilation (IR) 1.18ms
compilation (LCNF base) 19.2ms
compilation (LCNF impure) 6.05ms
compilation (LCNF mono) 10.2ms
congr simp thm 6.03ms
elaboration 137ms
fix level params 0.847ms
import 883ms
initialization 39.1ms
instantiate metavars 1.45ms
interpretation 382ms
let-to-have transformation 0.422ms
linting 29.4ms
module linting 0.00133ms
overlappingInstancesLinter 11ms
parsing 30.3ms
process pre-definitions 16.9ms
share common exprs 4.47ms
simp 331ms
tactic execution 139ms
tacticAnalysis 67.3ms
type checking 32.3ms
typeclass inference 136ms
real 1.99
user 2.12
sys 0.77
LeanPool/Lean4EVM/Primitives/FixedBytes/H160.lean
import took 874ms
cumulative profiling times:
attribute application 5.98ms
blocked (unaccounted) 0.806ms
compilation (IR) 0.738ms
compilation (LCNF base) 12.8ms
compilation (LCNF impure) 3.54ms
compilation (LCNF mono) 5.71ms
congr simp thm 1.91ms
elaboration 70.3ms
fix level params 0.352ms
import 874ms
initialization 35.7ms
instantiate metavars 0.526ms
interpretation 293ms
let-to-have transformation 0.209ms
linting 16.9ms
module linting 0.00135ms
overlappingInstancesLinter 8.11ms
parsing 14.5ms
process pre-definitions 7.92ms
share common exprs 1.46ms
simp 52.2ms
tactic execution 33.2ms
tacticAnalysis 35.9ms
type checking 12.7ms
typeclass inference 48.3ms
real 1.77
user 1.38
sys 0.74
LeanPool/Lean4EVM/Primitives/FixedBytes/H256.lean
import took 899ms
cumulative profiling times:
attribute application 8.81ms
blocked (unaccounted) 0.853ms
compilation (IR) 0.728ms
compilation (LCNF base) 14ms
compilation (LCNF impure) 4.43ms
compilation (LCNF mono) 6.99ms
congr simp thm 2.79ms
elaboration 108ms
fix level params 0.66ms
import 899ms
initialization 30.1ms
instantiate metavars 1.1ms
interpretation 379ms
let-to-have transformation 0.393ms
linting 25.9ms
module linting 0.00162ms
overlappingInstancesLinter 10ms
parsing 27.5ms
process pre-definitions 12.2ms
share common exprs 3.61ms
simp 69.2ms
tactic execution 183ms
tacticAnalysis 56.4ms
type checking 118ms
typeclass inference 176ms
real 1.99
user 1.94
sys 0.79
LeanPool/Lean4EVM/Primitives/UInt.lean
import took 826ms
cumulative profiling times:
elaboration 0.145ms
import 826ms
initialization 29.4ms
interpretation 104ms
linting 0.293ms
module linting 0.00166ms
overlappingInstancesLinter 0.764ms
parsing 0.03ms
tacticAnalysis 0.78ms
real 1.54
user 0.87
sys 0.68
LeanPool/Lean4EVM/Primitives/UInt/Core.lean
import took 820ms
cumulative profiling times:
attribute application 33.2ms
blocked (unaccounted) 124ms
compilation (IR) 3.44ms
compilation (LCNF base) 36ms
compilation (LCNF impure) 19.5ms
compilation (LCNF mono) 40.5ms
congr simp thm 10.2ms
elaboration 419ms
fix level params 2.34ms
import 820ms
initialization 28.7ms
instantiate metavars 2.5ms
interpretation 709ms
let-to-have transformation 1.22ms
linting 75.6ms
module linting 0.00173ms
overlappingInstancesLinter 59.4ms
parsing 69.8ms
process pre-definitions 33.6ms
share common exprs 11.3ms
simp 477ms
tactic execution 227ms
tacticAnalysis 156ms
type checking 94.9ms
typeclass inference 310ms
real 2.36
user 3.50
sys 0.79
LeanPool/Lean4EVM/Primitives/UInt/U128.lean
import took 825ms
cumulative profiling times:
attribute application 2.98ms
blocked (unaccounted) 6.44ms
compilation (IR) 0.848ms
compilation (LCNF base) 10.8ms
compilation (LCNF impure) 3.94ms
compilation (LCNF mono) 6.1ms
congr simp thm 1.12ms
elaboration 43.3ms
fix level params 0.289ms
import 825ms
initialization 38.3ms
instantiate metavars 0.466ms
interpretation 255ms
let-to-have transformation 0.167ms
linting 14.6ms
module linting 0.00151ms
overlappingInstancesLinter 7.98ms
parsing 15.1ms
process pre-definitions 6.95ms
share common exprs 1.23ms
simp 29.4ms
tactic execution 46.5ms
tacticAnalysis 29.9ms
type checking 8.22ms
typeclass inference 27.4ms
real 1.69
user 1.26
sys 0.73
LeanPool/Lean4EVM/Primitives/UInt/U256.lean
import took 822ms
cumulative profiling times:
attribute application 9.24ms
blocked (unaccounted) 0.383ms
compilation (IR) 1.64ms
compilation (LCNF base) 31.6ms
compilation (LCNF impure) 7.76ms
compilation (LCNF mono) 13.7ms
congr simp thm 3.74ms
elaboration 140ms
fix level params 1.17ms
import 822ms
initialization 30.3ms
instantiate metavars 1.65ms
interpretation 499ms
let-to-have transformation 0.606ms
linting 44.1ms
module linting 0.00132ms
overlappingInstancesLinter 15.8ms
parsing 47.5ms
process pre-definitions 20ms
share common exprs 6.17ms
simp 117ms
tactic execution 239ms
tacticAnalysis 85.6ms
type checking 36.3ms
typeclass inference 141ms
real 1.95
user 2.19
sys 0.75
LeanPool/Lean4EVM/Primitives/UInt/U64.lean
import took 828ms
cumulative profiling times:
attribute application 2.31ms
compilation (IR) 0.799ms
compilation (LCNF base) 9.12ms
compilation (LCNF impure) 3.8ms
compilation (LCNF mono) 5.91ms
congr simp thm 0.349ms
elaboration 37.9ms
fix level params 0.216ms
import 828ms
initialization 28.8ms
instantiate metavars 0.331ms
interpretation 228ms
let-to-have transformation 0.14ms
linting 11.2ms
module linting 0.00132ms
overlappingInstancesLinter 7.12ms
parsing 12.2ms
process pre-definitions 5.45ms
share common exprs 0.959ms
simp 9.13ms
tactic execution 14.1ms
tacticAnalysis 27.5ms
type checking 4.59ms
typeclass inference 22ms
real 1.64
user 1.12
sys 0.74
Advisory only — never blocks merge. Full log uploaded as the proof-profile artifact.
|
Advisory cross-file review against Lean Pool's supervisory rubric. This is not by itself a significance, source-verification, or merge verdict. The PR appears safe to merge; no outstanding correctness, catalog, provenance, security, or repository-rule issue was identified. SummaryThis PR imports a selected, proof-bearing portion of Lean4EVM containing fixed-width unsigned integers and nominal fixed-size byte types.
Reviews (41) · Last reviewed commit: "Merge remote-tracking branch 'origin/mai..." |
# Conflicts: # LeanPool/projects.yml
# Conflicts: # LeanPool/projects.yml
# Conflicts: # LeanPool/projects.yml
Changes requested by automated reviewReviewed exact head
The project remains changes requested until both blockers are resolved. |
# Conflicts: # LeanPool/projects.yml
# Conflicts: # LeanPool/projects.yml
# Conflicts: # LeanPool/projects.yml
|
Changes requested by automated review Reviewed exact current head
The prior quality-audit blocker appears resolved in the rebased tree, but it must be confirmed by the pending build. |
Automated review: repairs pushed; needs-maintainer for review accessReviewed final head
Validation: warning-free Independent review: faithful, nonvacuous fixed-width/byte/EVM arithmetic endpoints; reusable shared BitVec representation and serialization proofs; substantial primitives library without claiming a complete EVM verifier. The existing generic proof factoring and width-specific modules are maintainable; this review finds no remaining concrete quality defect (4/5 assessment). The upstream scope and attribution are retained. A fresh configured LLM review was requested, but GitHub returned HTTP 422: |
|
Daily maintainer cycle: repaired the upstream MIT attribution at The pinned upstream LICENSE names Validation: warning-free Retain needs-maintainer for the existing configured-review access boundary: LLM Review is still 2026-09-17 exact-head reconciliation: Reviewed |
Automated cycle 2026-09-17: precise maintainer decision at
|
# Conflicts: # LeanPool/projects.yml
# Conflicts: # LeanPool/projects.yml
# Conflicts: # LeanPool/projects.yml
# Conflicts: # LeanPool/projects.yml
# Conflicts: # LeanPool/projects.yml
# Conflicts: # LeanPool/projects.yml
# Conflicts: # LeanPool/projects.yml
# Conflicts: # LeanPool/projects.yml
# Conflicts: # LeanPool/projects.yml
|
2026-09-18 exact-head reconciliation: Reviewed Needs-maintainer resolution job, 2026-09-18 ~18:00 UTC (head |
# Conflicts: # LeanPool/projects.yml
# Conflicts: # LeanPool/projects.yml
Vilin97
left a comment
There was a problem hiding this comment.
Needs-maintainer cycle: reviewed fd55f0b2e61c4ebd002150a82cda083d9b10d51e after the fast-forward repair.
fd55f0b2e corrects the remaining scope overclaim in LeanPool/projects.yml and regenerates LeanPool/Lean4EVM.lean: the branch and tag now describe fixed-width arithmetic and byte representations; the entry documentation explicitly distinguishes that primitive API from an interpreter, machine state, gas accounting or transaction semantics. The pinned upstream tree and the actual FixedUInt/U256 definitions support this narrower description. All comment-stripped Lean tokens and theorem statements are unchanged; the upstream MIT notice is retained.
Validation in an isolated worktree: warning-free 923-job project build, generated-index check, Mathlib/style linters, scoped static and registry/card checks, all 557 public axiom closures and the compiled option/backdoor audit pass. Fresh remote CI is pending; earlier-head CI is not approval of this commit.
Retain needs-maintainer solely for the existing fit decision: does this substantial BitVec wrapper/byte API qualify under the data-structure clause despite lacking an independent headline theorem? The metadata repair is complete and need not wait for that decision. This review does not decide acceptance or authorize a gate bypass.
Vilin97
left a comment
There was a problem hiding this comment.
Daily needs-maintainer cycle: reviewed repaired head d8fe28b704dc80206bfd24b596834c1e4154f679.
Pushed a fast-forward repair in Primitives/UInt/Core.lean and Primitives/UInt/U256.lean: FixedUInt.toNat_ofNat_mod now supplies the shared residue-range proof used by ADDMOD and MULMOD. The operation definitions and zero-modulus branches are unchanged. The new helper derives positivity from word injectivity and bounds the residue by the word width; neither caller gains an assumption.
Validation at this head: warning-free project build; generated-index check; Mathlib and style linters over all project modules; scoped repository quality checks; axiom audit of all 558 public declarations and option-backdoor audit. Comparison against the previous head found identical types, universes, and safety settings for all 557 existing public declarations. Remote CI for this new commit must still complete; earlier green checks belong to the previous head.
needs-maintainer remains: the outstanding decision is whether this verified fixed-width data-structure/primitive API satisfies the repository's significance and inclusion criteria. The narrowed metadata and MIT attribution remain accurate, but the proof factoring does not supply a new independent headline result. Maintainer acceptance or rejection of that fit is still needed; this is a comment review, not approval.
Vilin97
left a comment
There was a problem hiding this comment.
Recommend closing for insufficient independent mathematical or verification content. Reviewed commit d8fe28b704dc80206bfd24b596834c1e4154f679.
The current scope and proofs are honest, and the previous BYTE wording, optional-name audit and MIT-attribution defects are repaired. Build project, separation and documentation preflight passed on the reviewed pre-refresh head. The remaining issue is the project's fit with the significance rubric.
The five advertised results are primitive API laws. FixedUInt.toNat_add and toNat_mul (Primitives/UInt/Core.lean:528,549) unfold the wrapper and finish by rfl after toBitVec_ofBitVec. U256.addmod and mulmod (Primitives/UInt/U256.lean:189,193) are defined by the exact natural-number residue formulas that toNat_addmod and toNat_mulmod restate; the additional proof is that the residue fits the word width. byteAt similarly implements the extraction formula directly. These are useful interface contracts, but they do not supply a substantive independent headline result.
I also checked the material beyond the card: FixedUInt.toBitVec_pow proves a basic binary-exponentiation recurrence, and FixedBytes proves bounds, injectivity and round trips for an elementary base-256 codec. Those complete the primitive library but do not change its significance level. The data-structure domain listed in the candidate criteria makes the subject eligible; it does not remove the review rubric's requirement for a significant completed result. This conclusion concerns the present import, not the quality or potential usefulness of the upstream library.
A later submission with a substantial verified algorithm, executable semantics refinement, or program-level correctness theorem would give the project an appropriate headline. Reaching that point is more than a small pre-merge edit, so I recommend closing this PR rather than continuing a metadata-only repair cycle.
Final reconciliation: the current head 68395a5cca7d7ffac08c38fe3e62aae298abf3d9 preserves the reviewed Lean4EVM files byte-for-byte. I am closing this PR on the significance finding above; the later main refresh does not change that finding. GitHub receives this as a comment review because the authenticated account authored the PR.
What this adds
Import the public
mrLSD/Lean4EVMMIT-licensed formalization asLeanPool.Lean4EVM. It provides reusable fixed-width unsigned integer and fixed-size byte primitives for Ethereum semantics, with proved wrapping arithmetic, shifts, signed operations, ADDMOD/MULMOD, byte extraction, sign extension, and checked width conversions.Provenance and selection
0109646545bc1f29c719c1268bad7c561d2035f8Scope and porting
Only the coherent proof-bearing primitive closure is imported (11 Lean modules, 3,538 lines); upstream test/audit harnesses and package tooling are excluded. Imports are namespaced under
LeanPool.Lean4EVM, standard pool headers are retained, and the project card plus generated root entry are registered.The port targets Lean Pool’s exact
leanprover/lean4:v4.34.0-rc1and pinned Mathlib. Three deprecatedif_posrewrites were replaced withite_eq_left; zero-modulus branches in signed remainder, ADDMOD, and MULMOD were repaired for the current API. No theorem was weakened.Trust and validation
sorry,admit, custom axioms,unsafe,partial,opaque, native decisions, diagnostics, broad imports, or option overrides in imported contentlake build LeanPool.Lean4EVMpasses warning-freelake exe mk_all --check, targetedrunLinter, targetedlint-style, and forbidden-token scans passlake build LeanPoolcompleted successfully on the shared cached environmentCompile measurements
Controlled candidate closure on the shared pool environment:
The cleanup removes deprecated rewrites and repairs current-toolchain elaboration; no broad import or dependency fan-out was introduced.