fix: normalize nonDep flag for letE expressions #11
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.
This PR cherry-picks a fix from the ammkrn fork that normalizes the
nonDepflag tofalseforletEexpressions during export.Original commit: ammkrn@eb023e5
The Problem
Lean's
BEqimplementation forExprconsiders thenonDepflag when comparing expressions. However,nonDepis just an optimization hint that doesn't affect semantics - it indicates whether the body of a let-binding uses the bound variable.Without normalization, semantically identical expressions can appear twice in the export with different indices:
nonDep = truenonDep = falseExternal type checkers expect unique indices for identical expressions, causing parse errors like:
The Fix
Always normalize
nonDeptofalseduring export, as originally implemented by @ammkrn.Testing
With this fix, nanoda_lib successfully verifies:
🤖 Prepared with Claude Code