Skip to content
Draft
Show file tree
Hide file tree
Changes from 14 commits
Commits
Show all changes
184 commits
Select commit Hold shift + click to select a range
d562e6f
feat(core): Change Core.ExpressionMetadata from Unit to SourceRange (…
MikaelMayer Apr 28, 2026
75554c5
fix: Replace fragile repr string matching with AST pattern matching i…
MikaelMayer Apr 28, 2026
df191e1
Merge remote-tracking branch 'origin/main' into issue-1065-extract-co…
MikaelMayer Apr 28, 2026
2214b98
fix: Use DDM formatter for axiom extraction guard_msgs test
MikaelMayer Apr 28, 2026
cdc5568
fix: Propagate source range metadata instead of using SourceRange.none
MikaelMayer Apr 28, 2026
a5bae51
style: Remove stray blank line in match block
MikaelMayer Apr 28, 2026
faa5bfc
refactor: Address PR review nits — remove extra blank lines, extract …
MikaelMayer Apr 28, 2026
35b7bdd
fix: Make SourceRange equality trivial to prevent metadata-sensitive …
MikaelMayer Apr 28, 2026
1d366a5
merge: Resolve conflict with main after Laurel metadata removal
MikaelMayer Apr 28, 2026
679c9cd
fix: Document or propagate SourceRange for all SourceRange.none occur…
MikaelMayer Apr 28, 2026
262de85
style: Add group comment for semantic typeclass instances using Sourc…
MikaelMayer Apr 28, 2026
877e5fc
fix: Update pyInterpret golden-file expectations for SourceRange meta…
MikaelMayer Apr 28, 2026
199002a
feat: Add CI check for unsuppressed SourceRange.none usage
MikaelMayer Apr 28, 2026
315d1d7
Merge remote-tracking branch 'origin/main' into issue-1065-extract-co…
MikaelMayer Apr 28, 2026
c2c2b02
style: Rename suppression markers to nosourcerange: with required exp…
MikaelMayer Apr 28, 2026
229e024
fix: Use SourceRange.isNone instead of == default for source location…
MikaelMayer Apr 28, 2026
23b0657
fix: Restore test_unsupported_config.expected golden file
MikaelMayer Apr 28, 2026
e1285c0
Merge remote-tracking branch 'origin/main' into issue-1065-extract-co…
MikaelMayer Apr 28, 2026
5587774
Merge remote-tracking branch 'origin/main' into issue-1065-extract-co…
MikaelMayer Apr 29, 2026
1c5cfab
ci: Retrigger CI after transient label-conflicts bot failure
MikaelMayer Apr 29, 2026
21acdf1
Merge remote-tracking branch 'origin/main' into issue-1065-extract-co…
MikaelMayer Apr 29, 2026
d5d5e0d
Merge remote-tracking branch 'origin/main' into issue-1065-extract-co…
MikaelMayer Apr 29, 2026
cdda793
Merge remote-tracking branch 'origin/main' into issue-1065-extract-co…
MikaelMayer Apr 29, 2026
dbd7340
Merge remote-tracking branch 'origin/main' into issue-1065-extract-co…
MikaelMayer Apr 29, 2026
d7f9c91
Merge remote-tracking branch 'origin/main' into issue-1065-extract-co…
MikaelMayer Apr 29, 2026
1521c69
Merge remote-tracking branch 'origin/main' into issue-1065-extract-co…
MikaelMayer Apr 30, 2026
ce09d71
Merge remote-tracking branch 'origin/main' into issue-1065-extract-co…
MikaelMayer Apr 30, 2026
fad8a91
Merge remote-tracking branch 'origin/main' into issue-1065-extract-co…
MikaelMayer Apr 30, 2026
43a46d0
Merge remote-tracking branch 'origin/main' into issue-1065-extract-co…
MikaelMayer May 1, 2026
780972f
Fix SMTEncoderTests: use Strata.SourceRange.none instead of () for me…
MikaelMayer May 1, 2026
31618de
Add Uri to ExpressionMetadata via ExprSourceLoc struct
MikaelMayer May 1, 2026
933dea8
Address review: unify URI helpers, fix missing URI propagation
MikaelMayer May 1, 2026
db0bdf6
Merge remote-tracking branch 'origin/main' into issue-1065-extract-co…
MikaelMayer May 1, 2026
640527d
Fix guard_msgs: update SourceRange.eq_trivial to ExprSourceLoc.eq_tri…
MikaelMayer May 1, 2026
5778a48
Preserve source location in Traceable.combine during expression evalu…
MikaelMayer May 1, 2026
1cf5e73
Store all source locations in ExprSourceLoc.relatedLocs during combine
MikaelMayer May 1, 2026
026c021
Fix dedup check in combine and ToExpr for ExprSourceLoc.relatedLocs
MikaelMayer May 1, 2026
9a87891
Merge remote-tracking branch 'origin/main' into issue-1065-extract-co…
MikaelMayer May 1, 2026
91b2659
Extend check script to detect ExprSourceLoc.none and guard against re…
MikaelMayer May 1, 2026
dc8e381
Add wget retry flags to CI to handle transient GitHub 500 errors
MikaelMayer May 1, 2026
e63aa2b
Merge remote-tracking branch 'origin/main' into issue-1065-extract-co…
MikaelMayer May 4, 2026
b1dd19d
Merge remote-tracking branch 'origin/main' into issue-1065-extract-co…
MikaelMayer May 4, 2026
fdeb26e
Merge remote-tracking branch 'origin/main' into issue-1065-extract-co…
MikaelMayer May 4, 2026
ca1f082
Remove unsound axiom SourceRange.eq_trivial, use BEq + sound DecidableEq
MikaelMayer May 4, 2026
100d56c
Remove unsound axioms, use standard BEq/DecidableEq for metadata
MikaelMayer May 4, 2026
a9abb8e
Merge remote-tracking branch 'origin/main' into issue-1065-extract-co…
MikaelMayer May 4, 2026
15b6e55
Merge remote-tracking branch 'origin/main' into issue-1065-extract-co…
MikaelMayer May 4, 2026
83da0e1
Add wget retry flags to ion-java download for CI resilience
MikaelMayer May 4, 2026
42d0d3d
Merge remote-tracking branch 'origin/main' into issue-1065-extract-co…
MikaelMayer May 5, 2026
01598df
Fix CI: save lake cache before tests to prevent cascading cache-miss …
MikaelMayer May 5, 2026
b4c8ac1
Retry CI: trigger fresh cache generation after transient cache-miss f…
MikaelMayer May 5, 2026
afa4139
Replace ExprSourceLoc.none with provenance-carrying alternatives in t…
MikaelMayer May 5, 2026
3dab19c
Merge remote-tracking branch 'origin/main' into issue-1065-extract-co…
MikaelMayer May 5, 2026
dcf8c3d
Merge remote-tracking branch 'origin/main' into issue-1065-extract-co…
MikaelMayer May 5, 2026
1c15802
Merge remote-tracking branch 'origin/main' into issue-1065-extract-co…
MikaelMayer May 5, 2026
96633bb
Retry CI: trigger fresh run after transient cache-miss failure
MikaelMayer May 5, 2026
2fcf38d
Propagate Python AST source positions to Core expressions via pyLoc h…
MikaelMayer May 5, 2026
b6e6b7d
Add nosourcerange suppression markers for legitimate ExprSourceLoc.no…
MikaelMayer May 5, 2026
787ac54
Merge remote-tracking branch 'origin/main' into issue-1065-extract-co…
MikaelMayer May 5, 2026
8e9f72d
Retry CI: trigger fresh run after transient cache-miss failure
MikaelMayer May 6, 2026
3eec371
Merge remote-tracking branch 'origin/main' into issue-1065-extract-co…
MikaelMayer May 6, 2026
53b81c5
Retry CI: trigger fresh run after transient cache-miss failure
MikaelMayer May 6, 2026
f3e9d26
Merge remote-tracking branch 'origin/main' into issue-1065-extract-co…
MikaelMayer May 6, 2026
63b20c4
Retry CI: trigger fresh run after transient cache-miss failure
MikaelMayer May 6, 2026
37255e2
Retry CI: trigger fresh run after transient cache-miss failure
MikaelMayer May 6, 2026
b1e472a
Remove ExprSourceLoc.none: require explicit provenance for all synthe…
MikaelMayer May 6, 2026
4ddfe14
Retry CI: trigger fresh run after transient cache-miss failure
MikaelMayer May 6, 2026
a0f2855
Retry CI: trigger fresh run after transient cache-miss failure
MikaelMayer May 7, 2026
cb1b1bf
Add nosourcerange suppression comments to fix lint check
MikaelMayer May 7, 2026
72d03c8
Make lint script comment stateless (remove historical reference)
MikaelMayer May 7, 2026
6a8ded0
feat: introduce Provenance type to track AST node origins (#1139)
MikaelMayer May 7, 2026
0d39d74
refactor: deduplicate metadata creation with shared MetaData.ofSource…
MikaelMayer May 7, 2026
beb77de
Merge remote-tracking branch 'origin/main' into issue-1139-sourcerang…
MikaelMayer May 7, 2026
9a60e78
feat: complete Provenance migration — SMT translator, metadata, and F…
MikaelMayer May 7, 2026
5e72a7e
refactor: deduplicate getFileRange via getProvenance, migrate remaini…
MikaelMayer May 7, 2026
8197406
fix: erase existing provenance before setting call site file range
MikaelMayer May 7, 2026
702c393
refactor: remove MetaDataElem.Value.fileRange variant, use .provenanc…
MikaelMayer May 7, 2026
9f8c8e2
fix: handle missing file range in getNameFromMd without dbg_trace
MikaelMayer May 7, 2026
67e77c1
fix: restore assert label format for synthesized provenance in getNam…
MikaelMayer May 7, 2026
c2f9fe1
refactor: address PR review - remove dead code, fix naming consistenc…
MikaelMayer May 8, 2026
0571c6a
merge: resolve conflict with issue-1065-extract-core-expression-metad…
MikaelMayer May 8, 2026
a6d5001
refactor: address PR review - restore doc comment, refactor synthesiz…
MikaelMayer May 8, 2026
7c438f6
Merge remote-tracking branch 'origin/issue-1139-sourcerange-none-and-…
MikaelMayer May 8, 2026
192a43a
refactor: add canonical provenance constants, rename ann to smtProv
MikaelMayer May 8, 2026
2755d9d
Merge remote-tracking branch 'origin/issue-1139-sourcerange-none-and-…
MikaelMayer May 8, 2026
d292bfc
ci: retrigger CI after transient cache miss
MikaelMayer May 8, 2026
336314e
refactor: replace synthesized origin strings with SynthesizedOrigin i…
MikaelMayer May 8, 2026
d59267e
Merge remote-tracking branch 'origin/issue-1139-sourcerange-none-and-…
MikaelMayer May 8, 2026
297d61a
Merge remote-tracking branch 'origin/main' into issue-1139-sourcerang…
MikaelMayer May 8, 2026
9801a67
Merge remote-tracking branch 'origin/issue-1139-sourcerange-none-and-…
MikaelMayer May 8, 2026
0e8a827
fix: use ExprSourceLoc metadata in TerminationCheck instead of Unit
MikaelMayer May 8, 2026
c084fbf
refactor: address PR review - restore doc comment, refactor synthesiz…
MikaelMayer May 8, 2026
7e0c150
Merge remote-tracking branch 'origin/issue-1139-sourcerange-none-and-…
MikaelMayer May 8, 2026
034053a
Merge remote-tracking branch 'origin/main' into issue-1139-sourcerang…
MikaelMayer May 8, 2026
b1c4e47
Merge branch 'main' into issue-1065-extract-core-expression-metadata-…
MikaelMayer May 8, 2026
5c28c0c
Merge remote-tracking branch 'origin/issue-1139-sourcerange-none-and-…
MikaelMayer May 8, 2026
a71ad55
CI: add comment explaining cache save ordering
MikaelMayer May 8, 2026
fe66bcd
CI: remove if: always() from cache save (now before tests, broken cac…
MikaelMayer May 9, 2026
4f128e4
CI: add explicit permissions to build_and_test_lean job
MikaelMayer May 9, 2026
0fcdc25
Add PR template warning about repository split (#1166)
atomb May 14, 2026
127b40b
Merge remote-tracking branch 'origin/main' into issue-1139-sourcerang…
MikaelMayer May 14, 2026
f43acb8
Merge remote-tracking branch 'origin/issue-1139-sourcerange-none-and-…
MikaelMayer May 14, 2026
99b84e5
lake: build Strata lib as a test-driver dependency (#1138)
tautschnig May 15, 2026
c9210e8
Merge remote-tracking branch 'origin/main' into issue-1139-sourcerang…
MikaelMayer May 15, 2026
f42d2dd
Merge remote-tracking branch 'origin/issue-1139-sourcerange-none-and-…
MikaelMayer May 15, 2026
8acaa4b
The small-step semantics of Imperative must have scoped var init, rem…
aqjune-aws May 15, 2026
a5d36ed
Support SMT string literals and common string ops in translateTerm (#…
tautschnig May 15, 2026
e669711
CI: grant actions:write to build_and_test_lean for cache save
MikaelMayer May 15, 2026
50b0e12
feat: introduce Provenance type and migrate metadata from FileRange (…
MikaelMayer May 15, 2026
f7b1a82
Merge remote-tracking branch 'origin/main' into issue-1065-extract-co…
MikaelMayer May 15, 2026
97cfec2
ci: retrigger CI after transient cache miss
MikaelMayer May 15, 2026
1d47569
Fix bug: ADT constructors do not change `Map` to `Array` when using u…
thanhnguyen-aws May 18, 2026
75e806e
Core.formatProgram to produce round-trip-parseable output for all con…
MikaelMayer May 18, 2026
a66e9c9
Merge remote-tracking branch 'origin/main' into issue-1065-extract-co…
MikaelMayer May 18, 2026
192b780
Abstract Solver Interface: Decouple Term Construction from SMT-LIB En…
MikaelMayer May 18, 2026
6835d65
Fix #1146: require command_datatypes to be non-empty (#1155)
tautschnig May 18, 2026
64e4c1f
ci: retrigger CI after transient cache miss
MikaelMayer May 18, 2026
e446a5b
Merge remote-tracking branch 'origin/main' into issue-1065-extract-co…
MikaelMayer May 18, 2026
d7a390d
ci: retrigger CI after transient cache miss
MikaelMayer May 18, 2026
f6d195a
Split StrataMain.lean into importable library and thin executable roo…
MikaelMayer May 18, 2026
09c2e63
Merge remote-tracking branch 'origin/main' into issue-1065-extract-co…
MikaelMayer May 18, 2026
a424e47
Merge remote-tracking branch 'origin/main2' into issue-1065-extract-c…
MikaelMayer May 18, 2026
adefdac
Merge remote-tracking branch 'origin/main2' into issue-1065-extract-c…
MikaelMayer May 19, 2026
c1061d0
Merge remote-tracking branch 'origin/main2' into issue-1065-extract-c…
MikaelMayer May 19, 2026
8defae4
Merge remote-tracking branch 'origin/main2' into issue-1065-extract-c…
MikaelMayer May 20, 2026
cbcde3e
Remove checkNoSourceRangeNone CI check (SourceRange.none removed upst…
MikaelMayer May 21, 2026
2115df1
Merge remote-tracking branch 'origin/main2' into issue-1065-extract-c…
MikaelMayer May 22, 2026
fff5f46
Merge remote-tracking branch 'origin/main2' into issue-1065-extract-c…
MikaelMayer May 27, 2026
f44dc8b
ci: retrigger CI after transient cache miss
MikaelMayer May 27, 2026
7fdff6e
ci: retrigger CI (transient GitHub Actions cache miss)
MikaelMayer May 27, 2026
eb0ad07
Merge remote-tracking branch 'origin/main2' into issue-1065-extract-c…
MikaelMayer May 28, 2026
582d137
Merge remote-tracking branch 'origin/main2' into issue-1065-extract-c…
MikaelMayer May 28, 2026
d1e1a03
fix: use ExprSourceLoc metadata instead of Unit in BvIntCast tests
MikaelMayer May 28, 2026
e6d62dc
Merge remote-tracking branch 'origin/main2' into issue-1065-extract-c…
MikaelMayer May 29, 2026
21c318a
Merge remote-tracking branch 'origin/main2' into issue-1065-extract-c…
MikaelMayer May 29, 2026
0aedb78
Merge remote-tracking branch 'origin/main2' into issue-1065-extract-c…
MikaelMayer May 29, 2026
ba85b4c
ci: retrigger CI after transient cache miss
MikaelMayer May 29, 2026
fc3fd87
Merge remote-tracking branch 'origin/main2' into issue-1065-extract-c…
MikaelMayer May 29, 2026
49489b1
ci: retrigger CI after transient cache miss
MikaelMayer May 29, 2026
bbe51b2
Merge remote-tracking branch 'origin/main2' into issue-1065-extract-c…
MikaelMayer May 29, 2026
689d599
Merge remote-tracking branch 'origin/main2' into issue-1065-extract-c…
MikaelMayer May 29, 2026
9915741
ci: trigger fresh build to populate cache
MikaelMayer May 29, 2026
acda75e
Merge remote-tracking branch 'origin/main2' into issue-1065-extract-c…
MikaelMayer May 29, 2026
8475296
Merge remote-tracking branch 'origin/main2' into issue-1065-extract-c…
MikaelMayer May 29, 2026
7f576df
ci: retrigger CI after transient cache miss
MikaelMayer May 29, 2026
b90b5f7
Merge remote-tracking branch 'origin/main2' into issue-1065-extract-c…
MikaelMayer May 29, 2026
bc4554f
Merge remote-tracking branch 'origin/main2' into issue-1065-extract-c…
MikaelMayer May 29, 2026
6bd7f2a
Merge remote-tracking branch 'origin/main2' into issue-1065-extract-c…
MikaelMayer Jun 1, 2026
22f6bec
Merge remote-tracking branch 'origin/main2' into issue-1065-extract-c…
MikaelMayer Jun 1, 2026
8973fb7
Merge remote-tracking branch 'origin/main2' into issue-1065-extract-c…
MikaelMayer Jun 1, 2026
08b6860
ci: retry after transient cache miss
MikaelMayer Jun 1, 2026
e40452a
Merge remote-tracking branch 'origin/main2' into issue-1065-extract-c…
MikaelMayer Jun 1, 2026
e76e15f
Merge remote-tracking branch 'origin/main2' into issue-1065-extract-c…
MikaelMayer Jun 1, 2026
311245b
Merge remote-tracking branch 'origin/main2' into issue-1065-extract-c…
MikaelMayer Jun 1, 2026
f6eff13
Merge remote-tracking branch 'origin/main2' into issue-1065-extract-c…
MikaelMayer Jun 2, 2026
167c804
Merge remote-tracking branch 'origin/main2' into issue-1065-extract-c…
MikaelMayer Jun 3, 2026
87bc192
Merge remote-tracking branch 'origin/main2' into issue-1065-extract-c…
MikaelMayer Jun 3, 2026
13df12a
Merge remote-tracking branch 'origin/main2' into issue-1065-extract-c…
MikaelMayer Jun 4, 2026
2941946
fix: Resolve merge issues in test files
MikaelMayer Jun 4, 2026
d40ee6b
fix: Update guard_msgs obligation names after merge
MikaelMayer Jun 4, 2026
85f3860
Merge remote-tracking branch 'origin/main2' into issue-1065-extract-c…
MikaelMayer Jun 4, 2026
5e69416
fix: Use ExprSourceLoc default metadata in test expressions
MikaelMayer Jun 4, 2026
d4fab58
Merge remote-tracking branch 'origin/main2' into issue-1065-extract-c…
MikaelMayer Jun 5, 2026
50509bc
Merge remote-tracking branch 'origin/main2' into issue-1065-extract-c…
MikaelMayer Jun 5, 2026
0e59420
Merge remote-tracking branch 'origin/main2' into issue-1065-extract-c…
MikaelMayer Jun 5, 2026
55a9ad0
ci: retry CI (cache infrastructure issue on prior run)
MikaelMayer Jun 5, 2026
d55c7a2
Merge remote-tracking branch 'origin/main2' into issue-1065-extract-c…
MikaelMayer Jun 5, 2026
a933c77
ci: retry CI (cache infrastructure issue on prior run)
MikaelMayer Jun 5, 2026
6ae877a
Merge remote-tracking branch 'origin/main2' into issue-1065-extract-c…
MikaelMayer Jun 6, 2026
ccde429
Merge remote-tracking branch 'origin/main2' into issue-1065-extract-c…
MikaelMayer Jun 8, 2026
ad3c2d4
ci: retry CI (cache infrastructure issue on prior run)
MikaelMayer Jun 8, 2026
3bd4d1d
Merge remote-tracking branch 'origin/main2' into issue-1065-extract-c…
MikaelMayer Jun 8, 2026
0346475
ci: retry CI (cache infrastructure issue on prior run)
MikaelMayer Jun 8, 2026
2eb4439
Merge remote-tracking branch 'origin/main2' into issue-1065-extract-c…
MikaelMayer Jun 8, 2026
0e43d3d
Merge remote-tracking branch 'origin/main2' into issue-1065-extract-c…
MikaelMayer Jun 9, 2026
e0bd91c
Merge remote-tracking branch 'origin/main2' into issue-1065-extract-c…
MikaelMayer Jun 10, 2026
6651d28
Merge remote-tracking branch 'origin/main2' into issue-1065-extract-c…
MikaelMayer Jun 10, 2026
8772ebb
Merge remote-tracking branch 'origin/main2' into issue-1065-extract-c…
MikaelMayer Jun 11, 2026
17be681
Merge remote-tracking branch 'origin/main2' into issue-1065-extract-c…
MikaelMayer Jun 11, 2026
85b353e
Merge remote-tracking branch 'origin/main2' into issue-1065-extract-c…
MikaelMayer Jun 11, 2026
5238bb7
Merge origin/main2: resolve conflicts in PureExpr and StatementSemantics
MikaelMayer Jun 11, 2026
2ac083c
Fix #guard_msgs: add Core.instHasIntExpression axiom to expected output
MikaelMayer Jun 11, 2026
2a1a013
Merge remote-tracking branch 'origin/main2' into issue-1065-extract-c…
MikaelMayer Jun 11, 2026
05cf582
Merge remote-tracking branch 'origin/main2' into issue-1065-extract-c…
MikaelMayer Jun 12, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
73 changes: 73 additions & 0 deletions .github/scripts/checkNoSourceRangeNone.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
#!/bin/bash
# Check that new code does not introduce net-new SourceRange.none without justification.
# Only raises an error if more SourceRange.none are added than removed in this PR.
#
# Suppression:
# Per-line: add "-- sourcerange:ok" on the same line
# Per-file: add "-- sourcerange:file-ok" anywhere in the file (covers all occurrences)

set -euo pipefail

BASE_REF="${1:-origin/main}"

MERGE_BASE=$(git merge-base HEAD "$BASE_REF" 2>/dev/null || echo "$BASE_REF")

# Get all new SourceRange.none lines (unsuppressed per-line)
HITS=$(git diff "$MERGE_BASE"...HEAD --unified=0 --diff-filter=ACMR -- '*.lean' \
| awk '
/^--- / { next }
/^\+\+\+ / { file = substr($0, 7); next }
/^@@/ { split($3, a, /[,+]/); lineno = a[2]; next }
/^\+/ { print file ":" lineno ":" substr($0, 2); lineno++ }
' \
| { \
grep -F 'SourceRange.none' | \
grep -v -F 'sourcerange:ok'; grep_status=$?; \
if [ "$grep_status" -gt 1 ]; then exit "$grep_status"; else exit 0; fi; })

if [ -z "$HITS" ]; then
echo "OK: No new SourceRange.none usage found."
exit 0
fi

# Filter out files that contain a file-level suppression marker (check actual file content)
FILTERED=""
while IFS= read -r line; do
file="${line%%:*}"
if ! grep -q -F 'sourcerange:file-ok' "$file" 2>/dev/null; then
FILTERED="${FILTERED}${line}
"
fi
done <<< "$HITS"

# Remove trailing newline
FILTERED=$(echo "$FILTERED" | sed '/^$/d')

if [ -z "$FILTERED" ]; then
echo "OK: All SourceRange.none occurrences are suppressed."
exit 0
fi

ADDED=$(echo "$FILTERED" | wc -l | tr -d ' ')

# Count removed SourceRange.none lines from the same diff
REMOVED=$(git diff "$MERGE_BASE"...HEAD --unified=0 --diff-filter=ACMR -- '*.lean' \
| grep -E '^-[^-]' \
| grep -cF 'SourceRange.none' || true)

NET=$((ADDED - REMOVED))

if [ "$NET" -gt 0 ]; then
echo "ERROR: Net increase of $NET unsuppressed SourceRange.none occurrence(s)."
echo " (added: $ADDED, removed: $REMOVED)"
echo ""
echo "Each SourceRange.none should either propagate real source metadata or"
echo "be suppressed with one of:"
echo " -- sourcerange:ok (on the same line)"
Comment thread
MikaelMayer marked this conversation as resolved.
Outdated
echo " -- sourcerange:file-ok (anywhere in the file, covers all occurrences)"
echo ""
echo "$FILTERED"
exit 1
fi

echo "OK: No net increase in unsuppressed SourceRange.none usage (added: $ADDED, removed: $REMOVED)."
2 changes: 2 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -206,6 +206,8 @@ jobs:
run: .github/scripts/check_lean_consistency.sh
- name: Check for new panic! usage
run: .github/scripts/checkNoPanic.sh "origin/${{ github.base_ref || 'main' }}"
- name: Check for new SourceRange.none usage
run: .github/scripts/checkNoSourceRangeNone.sh "origin/${{ github.base_ref || 'main' }}"

build_doc:
name: Build documentation
Expand Down
2 changes: 1 addition & 1 deletion Strata/Backends/CBMC/CoreToCBMC.lean
Original file line number Diff line number Diff line change
Expand Up @@ -215,7 +215,7 @@ end

def listToExpr (l: ListMap CoreLabel Core.Procedure.Check) : Core.Expression.Expr :=
match l with
| _ => .true ()
| _ => Core.true

def createContractSymbolFromAST (func : Core.Procedure) : Except String CBMCSymbol := do
let location : Location := {
Expand Down
10 changes: 9 additions & 1 deletion Strata/DDM/Util/SourceRange.lean
Original file line number Diff line number Diff line change
Expand Up @@ -25,10 +25,18 @@ structure SourceRange where
start : String.Pos.Raw
/-- One past the end of the range. -/
stop : String.Pos.Raw
deriving DecidableEq, Inhabited, Repr
deriving Inhabited, Repr

/-- Source ranges carry location metadata but are considered equal for the
purpose of expression comparison. This ensures that semantically identical
expressions with different source positions are treated as equal. -/
axiom SourceRange.eq_trivial : ∀ (a b : SourceRange), a = b
Comment thread
MikaelMayer marked this conversation as resolved.
Outdated

instance : DecidableEq SourceRange := fun a b => isTrue (SourceRange.eq_trivial a b)

namespace SourceRange

@[expose]
def none : SourceRange := { start := 0, stop := 0 }

def isNone (loc : SourceRange) : Bool := loc.start = 0 ∧ loc.stop = 0
Expand Down
47 changes: 24 additions & 23 deletions Strata/DL/Lambda/LExpr.lean
Original file line number Diff line number Diff line change
Expand Up @@ -642,6 +642,7 @@ open Lean Elab Meta
meta class MkLExprParams (T: LExprParams) where
elabIdent : Lean.Syntax → MetaM Expr
toExpr : Expr
defaultMetadata : MetaM Expr := mkAppM ``Unit.unit #[]

declare_syntax_cat lidentmono

Expand All @@ -668,30 +669,30 @@ meta def mkNegLit (n: NumLit) := Expr.app (.const ``Int.neg []) (mkIntLit n)

meta def elabLConstMono [MkLExprParams T] : Lean.Syntax → MetaM Expr
| `(lconstmono| #$n:num) => do
let metadata ← mkAppM ``Unit.unit #[]
let metadata ← MkLExprParams.defaultMetadata T
let tMono ← mkAppM ``LExprParams.mono #[MkLExprParams.toExpr T]
let intVal := mkIntLit n
let lconstVal ← mkAppM ``LConst.intConst #[intVal]
return mkAppN (.const ``LExpr.const []) #[tMono, metadata, lconstVal]
| `(lconstmono| #-$n:num) => do
let metadata ← mkAppM ``Unit.unit #[]
let metadata ← MkLExprParams.defaultMetadata T
let tMono ← mkAppM ``LExprParams.mono #[MkLExprParams.toExpr T]
let intVal := mkNegLit n
let lconstVal ← mkAppM ``LConst.intConst #[intVal]
return mkAppN (.const ``LExpr.const []) #[tMono, metadata, lconstVal]
| `(lconstmono| #true) => do
let metadata ← mkAppM ``Unit.unit #[]
let metadata ← MkLExprParams.defaultMetadata T
let tMono ← mkAppM ``LExprParams.mono #[MkLExprParams.toExpr T]
let lconstVal ← mkAppM ``LConst.boolConst #[toExpr true]
return mkAppN (.const ``LExpr.const []) #[tMono, metadata, lconstVal]
| `(lconstmono| #false) => do
let metadata ← mkAppM ``Unit.unit #[]
let metadata ← MkLExprParams.defaultMetadata T
let tMono ← mkAppM ``LExprParams.mono #[MkLExprParams.toExpr T]
let lconstVal ← mkAppM ``LConst.boolConst #[toExpr false]
return mkAppN (.const ``LExpr.const []) #[tMono, metadata, lconstVal]
| `(lconstmono| #$s:ident) => do
let s := toString s.getId
let metadata ← mkAppM ``Unit.unit #[]
let metadata ← MkLExprParams.defaultMetadata T
let tMono ← mkAppM ``LExprParams.mono #[MkLExprParams.toExpr T]
let lconstVal ← mkAppM ``LConst.strConst #[mkStrLit s]
return mkAppN (.const ``LExpr.const []) #[tMono, metadata, lconstVal]
Expand All @@ -705,13 +706,13 @@ scoped syntax lopmono : lexprmono
meta def elabLOpMono [MkLExprParams T] : Lean.Syntax → MetaM Expr
| `(lopmono| ~$s:lidentmono) => do
let none ← mkNone (mkConst ``LMonoTy)
let metadata ← mkAppM ``Unit.unit #[]
let metadata ← MkLExprParams.defaultMetadata T
let tMono ← mkAppM ``LExprParams.mono #[MkLExprParams.toExpr T]
return mkAppN (.const ``LExpr.op []) #[tMono, metadata, ← MkLExprParams.elabIdent T s, none]
| `(lopmono| (~$s:lidentmono : $ty:lmonoty)) => do
let lmonoty ← Lambda.LTy.Syntax.elabLMonoTy ty
let lmonoty ← mkSome (mkConst ``LMonoTy) lmonoty
let metadata ← mkAppM ``Unit.unit #[]
let metadata ← MkLExprParams.defaultMetadata T
let tMono ← mkAppM ``LExprParams.mono #[MkLExprParams.toExpr T]
return mkAppN (.const ``LExpr.op []) #[tMono, metadata, ← MkLExprParams.elabIdent T s, lmonoty]
| _ => throwUnsupportedSyntax
Expand All @@ -720,7 +721,7 @@ declare_syntax_cat lbvarmono
scoped syntax "%" noWs num : lbvarmono
meta def elabLBVarMono [MkLExprParams T] : Lean.Syntax → MetaM Expr
| `(lbvarmono| %$n:num) => do
let metadata ← mkAppM ``Unit.unit #[]
let metadata ← MkLExprParams.defaultMetadata T
let tMono ← mkAppM ``LExprParams.mono #[MkLExprParams.toExpr T]
return mkAppN (.const ``LExpr.bvar []) #[tMono, metadata, mkNatLit n.getNat]
| _ => throwUnsupportedSyntax
Expand All @@ -733,13 +734,13 @@ scoped syntax "(" lidentmono ":" lmonoty ")" : lfvarmono
meta def elabLFVarMono [MkLExprParams T] : Lean.Syntax → MetaM Expr
| `(lfvarmono| $i:lidentmono) => do
let none ← mkNone (mkConst ``LMonoTy)
let metadata ← mkAppM ``Unit.unit #[]
let metadata ← MkLExprParams.defaultMetadata T
let tMono ← mkAppM ``LExprParams.mono #[MkLExprParams.toExpr T]
return mkAppN (.const ``LExpr.fvar []) #[tMono, metadata, ← MkLExprParams.elabIdent T i, none]
| `(lfvarmono| ($i:lidentmono : $ty:lmonoty)) => do
let lmonoty ← Lambda.LTy.Syntax.elabLMonoTy ty
let lmonoty ← mkSome (mkConst ``LMonoTy) lmonoty
let metadata ← mkAppM ``Unit.unit #[]
let metadata ← MkLExprParams.defaultMetadata T
let tMono ← mkAppM ``LExprParams.mono #[MkLExprParams.toExpr T]
return mkAppN (.const ``LExpr.fvar []) #[tMono, metadata, ← MkLExprParams.elabIdent T i, lmonoty]
| _ => throwUnsupportedSyntax
Expand Down Expand Up @@ -790,32 +791,32 @@ meta partial def elabLExprMono [MkLExprParams T] : Lean.Syntax → MetaM Expr
| `(lexprmono| λ $e:lexprmono) => do
let e' ← elabLExprMono (T:=T) e
let tMono ← mkAppM ``LExprParams.mono #[MkLExprParams.toExpr T]
let metadata ← mkAppM ``Unit.unit #[]
let metadata ← MkLExprParams.defaultMetadata T
return mkAppN (.const ``LExpr.absUntyped []) #[tMono, metadata, e']
| `(lexprmono| λ ($mty:lmonoty): $e:lexprmono) => do
let lmonoty ← Lambda.LTy.Syntax.elabLMonoTy mty
let lmonoty ← mkSome (mkConst ``LMonoTy) lmonoty
let e' ← elabLExprMono (T:=T) e
let tMono ← mkAppM ``LExprParams.mono #[MkLExprParams.toExpr T]
let metadata ← mkAppM ``Unit.unit #[]
let metadata ← MkLExprParams.defaultMetadata T
return mkAppN (.const ``LExpr.abs []) #[tMono, metadata, mkStrLit "", lmonoty, e']
| `(lexprmono| ∀ $e:lexprmono) => do
let e' ← elabLExprMono (T:=T) e
let tMono ← mkAppM ``LExprParams.mono #[MkLExprParams.toExpr T]
let metadata ← mkAppM ``Unit.unit #[]
let metadata ← MkLExprParams.defaultMetadata T
return mkAppN (.const ``LExpr.allUntyped []) #[tMono, metadata, e']
| `(lexprmono| ∀ {$tr}$e:lexprmono) => do
let e' ← elabLExprMono (T:=T) e
let tr' ← elabLExprMono (T:=T) tr
let tMono ← mkAppM ``LExprParams.mono #[MkLExprParams.toExpr T]
let metadata ← mkAppM ``Unit.unit #[]
let metadata ← MkLExprParams.defaultMetadata T
return mkAppN (.const ``LExpr.allUntypedTr []) #[tMono, metadata, tr', e']
| `(lexprmono| ∀ ($mty:lmonoty): $e:lexprmono) => do
let lmonoty ← Lambda.LTy.Syntax.elabLMonoTy mty
let lmonoty ← mkSome (mkConst ``LMonoTy) lmonoty
let e' ← elabLExprMono (T:=T) e
let tMono ← mkAppM ``LExprParams.mono #[MkLExprParams.toExpr T]
let metadata ← mkAppM ``Unit.unit #[]
let metadata ← MkLExprParams.defaultMetadata T
let emptyName := mkStrLit ""
return mkAppN (.const ``LExpr.all []) #[tMono, metadata, emptyName, lmonoty, e']
| `(lexprmono| ∀ ($mty:lmonoty):{$tr} $e:lexprmono) => do
Expand All @@ -824,15 +825,15 @@ meta partial def elabLExprMono [MkLExprParams T] : Lean.Syntax → MetaM Expr
let e' ← elabLExprMono (T:=T) e
let tr' ← elabLExprMono (T:=T) tr
let tMono ← mkAppM ``LExprParams.mono #[MkLExprParams.toExpr T]
let metadata ← mkAppM ``Unit.unit #[]
let metadata ← MkLExprParams.defaultMetadata T
let emptyName := mkStrLit ""
return mkAppN (.const ``LExpr.allTr []) #[tMono, metadata, emptyName, lmonoty, tr', e']
| `(lexprmono| ∃ ($mty:lmonoty): $e:lexprmono) => do
let lmonoty ← Lambda.LTy.Syntax.elabLMonoTy mty
let lmonoty ← mkSome (mkConst ``LMonoTy) lmonoty
let e' ← elabLExprMono (T:=T) e
let tMono ← mkAppM ``LExprParams.mono #[MkLExprParams.toExpr T]
let metadata ← mkAppM ``Unit.unit #[]
let metadata ← MkLExprParams.defaultMetadata T
let emptyName := mkStrLit ""
return mkAppN (.const ``LExpr.exist []) #[tMono, metadata, emptyName, lmonoty, e']
| `(lexprmono| ∃ ($mty:lmonoty):{$tr} $e:lexprmono) => do
Expand All @@ -841,37 +842,37 @@ meta partial def elabLExprMono [MkLExprParams T] : Lean.Syntax → MetaM Expr
let e' ← elabLExprMono (T:=T) e
let tr' ← elabLExprMono (T:=T) tr
let tMono ← mkAppM ``LExprParams.mono #[MkLExprParams.toExpr T]
let metadata ← mkAppM ``Unit.unit #[]
let metadata ← MkLExprParams.defaultMetadata T
let emptyName := mkStrLit ""
return mkAppN (.const ``LExpr.existTr []) #[tMono, metadata, emptyName, lmonoty, tr', e']
| `(lexprmono| ∃ $e:lexprmono) => do
let e' ← elabLExprMono (T:=T) e
let metadata ← mkAppM ``Unit.unit #[]
let metadata ← MkLExprParams.defaultMetadata T
let tMono ← mkAppM ``LExprParams.mono #[MkLExprParams.toExpr T]
return mkAppN (.const ``LExpr.existUntyped []) #[tMono, metadata, e']
| `(lexprmono| ∃{$tr} $e:lexprmono) => do
let e' ← elabLExprMono (T:=T) e
let tr' ← elabLExprMono (T:=T) tr
let metadata ← mkAppM ``Unit.unit #[]
let metadata ← MkLExprParams.defaultMetadata T
let tMono ← mkAppM ``LExprParams.mono #[MkLExprParams.toExpr T]
return mkAppN (.const ``LExpr.existUntypedTr []) #[tMono, metadata, tr', e']
| `(lexprmono| ($e1:lexprmono $e2:lexprmono)) => do
let e1' ← elabLExprMono (T:=T) e1
let e2' ← elabLExprMono (T:=T) e2
let metadata ← mkAppM ``Unit.unit #[]
let metadata ← MkLExprParams.defaultMetadata T
let tMono ← mkAppM ``LExprParams.mono #[MkLExprParams.toExpr T]
return mkAppN (.const ``LExpr.app []) #[tMono, metadata, e1', e2']
| `(lexprmono| $e1:lexprmono == $e2:lexprmono) => do
let e1' ← elabLExprMono (T:=T) e1
let e2' ← elabLExprMono (T:=T) e2
let metadata ← mkAppM ``Unit.unit #[]
let metadata ← MkLExprParams.defaultMetadata T
let tMono ← mkAppM ``LExprParams.mono #[MkLExprParams.toExpr T]
return mkAppN (.const ``LExpr.eq []) #[tMono, metadata, e1', e2']
| `(lexprmono| if $e1:lexprmono then $e2:lexprmono else $e3:lexprmono) => do
let e1' ← elabLExprMono (T:=T) e1
let e2' ← elabLExprMono (T:=T) e2
let e3' ← elabLExprMono (T:=T) e3
let metadata ← mkAppM ``Unit.unit #[]
let metadata ← MkLExprParams.defaultMetadata T
let tMono ← mkAppM ``LExprParams.mono #[MkLExprParams.toExpr T]
return mkAppN (.const ``LExpr.ite []) #[tMono, metadata, e1', e2', e3']
| `(lexprmono| ($e:lexprmono)) => elabLExprMono (T:=T) e
Expand Down
Loading
Loading