You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
fix: remove ~90 lines of dead code from Conversions.lean
Remove 13 unused definitions that had no external call sites:
- isValidAddress, isValidAddress_normalized (address predicates)
- addressToNat_injective_valid (redundant with stronger axiom #2)
- natToUint256, natToUint256_uint256ToNat (unused round-trip)
- contractStateToIRState_storage (non-simp duplicate)
- storage_preservation (duplicate of contractStateToIRState_storage)
- sender_preservation (never referenced)
- SelectorMap, SelectorMap.lookup, simpleStorageSelectorMap (unused helpers)
Update AXIOMS.md and TRUST_ASSUMPTIONS.md to note the derived theorem
was removed as dead code.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
**Impact**: Reduced axiom count from 5 to 4 with zero changes to proof structure (the axiom had no call sites).
146
+
**Impact**: Reduced axiom count from 5 to 4 with zero changes to proof structure (the axiom had no call sites). The derived theorem was later removed as dead code (no call sites in any proof file).
Copy file name to clipboardExpand all lines: TRUST_ASSUMPTIONS.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -457,7 +457,7 @@ abbrev Address := String
457
457
One axiom depends on address injectivity:
458
458
-`addressToNat_injective` (Automation.lean): Claims `addressToNat a = addressToNat b → a = b`
459
459
460
-
Note: `addressToNat_injective_valid`(Conversions.lean) was previously an axiom but is now a derived theorem that requires an `isValidAddress` pre-condition.
460
+
Note: `addressToNat_injective_valid` was previously an axiom but was eliminated as a derived theorem (see AXIOMS.md). The derived theorem was later removed as dead code.
461
461
462
462
Since `Address = String`, any string can be used as an address. The axiom `addressToNat_injective` (without validity check) is technically unsound for arbitrary strings — `addressToNat "0xFF"` might equal `addressToNat "0xff"` while the strings are different.
0 commit comments