Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
51 commits
Select commit Hold shift + click to select a range
3c89ad0
avoid stringify
namin Jul 21, 2026
a92ab5f
init ls-in-ls for typedir
namin Jul 21, 2026
f98f076
baby steps on ir.ts
namin Jul 21, 2026
ecb03ac
scrutinee type is now solely an Expr, not union with string for var. …
namin Jul 21, 2026
0c4c18c
wire in LemmaScript as a case study of LemmaScript
namin Jul 21, 2026
dfb1352
baby proof on typedir
namin Jul 21, 2026
39daf11
equivalence relation, moved to ts for legibility, fix CI setup
namin Jul 22, 2026
28af639
update doc
namin Jul 22, 2026
17f0256
imported record types now expand to real datatypes (E1) and array .ma…
namin Jul 22, 2026
62ec613
Merge branch 'main' into ls-in-ls
namin Jul 23, 2026
2de5b15
scheme for in-flight CI
namin Jul 23, 2026
ffb5159
tweaks to map emitter
namin Jul 23, 2026
5e21795
cleanup, and reuse
namin Jul 23, 2026
d5128fc
make peephole first-order
namin Jul 23, 2026
703dd0f
monomorphize getSomeNoneArms (Expr vs Stmt[] arms)
namin Jul 23, 2026
f009eb1
explicit edge
namin Jul 23, 2026
0acd037
deal with local funs
namin Jul 23, 2026
6737900
use inferred return types
namin Jul 23, 2026
c6cc73f
qualify datatype constructors shared by two datatypes in a module
namin Jul 23, 2026
2079fe5
Smt/Expr rename collison
namin Jul 23, 2026
9f54d13
calls through fn-typed values take their result type from the fn type…
namin Jul 23, 2026
089ea19
peephole method
namin Jul 23, 2026
93551c8
variant-aware narrowing and destructor renaming; peephole reaches the…
namin Jul 23, 2026
c08fcca
inline the helpers in peephole for easier termination
namin Jul 24, 2026
65579d3
pair-scan to a fixed point
namin Jul 24, 2026
e33b301
peephole: machine-checked termination, normalization, and idempotence…
namin Jul 24, 2026
7229994
update doc
namin Jul 24, 2026
d93a723
extra info
namin Jul 24, 2026
e749cac
Merge branch 'main' into ls-in-ls
namin Jul 24, 2026
62e8c60
narrow survey
namin Jul 24, 2026
91f420f
steps towards narrow ported
namin Jul 25, 2026
8beec8f
condition-facts self-applied; narrow verifies modulo walker terminati…
namin Jul 25, 2026
215ac3c
narrow: pre-walk or-chain rule (termination prep); assign-position ty…
namin Jul 25, 2026
3bf9e9c
minor doc
namin Jul 25, 2026
aefae8b
Merge branch 'main' into ls-in-ls
namin Jul 25, 2026
20f06ce
fix CI by not adding unused externs
namin Jul 25, 2026
da0a37f
tweaks
namin Jul 25, 2026
6cd740d
notes on proof attempt
namin Jul 26, 2026
92e78e8
current status
namin Jul 26, 2026
92d532f
current status
namin Jul 26, 2026
1ad4170
status
namin Jul 26, 2026
9f7730d
checking in the proofs, though they are incomplete
namin Jul 26, 2026
00897e9
another way
namin Jul 26, 2026
a1b358e
done with termination proof for narrow
namin Jul 26, 2026
d1ecbf6
Merge branch 'port' into ls-in-ls
namin Jul 26, 2026
a92e49b
Merge branch 'port' into ls-in-ls
namin Jul 26, 2026
a2a0942
Merge branch 'main' into ls-in-ls
namin Jul 26, 2026
1a1236c
status udpate
namin Jul 26, 2026
7f1b971
Merge branch 'main' into ls-in-ls
namin Jul 26, 2026
c859398
fix CI
namin Jul 26, 2026
e6e2293
try to make it fast enough on CI
namin Jul 26, 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
31 changes: 31 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,37 @@ jobs:
- name: Build
run: lake build

# Self-run (DESIGN_LS_IN_LS.md §8): compile and verify the modules listed
# in LemmaScript-files.txt with this checkout's toolchain.
self-verify:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6

- name: Setup Node.js
uses: actions/setup-node@v6
with:
node-version: '24'

- name: Install tools dependencies
working-directory: tools
run: npm ci

- uses: ./.github/actions/setup-dafny

- name: Self-run
run: ./tools/check.sh dafny

- name: Check self-run artifacts are up to date
run: |
git diff --exit-code -- 'tools/src/*.dfy.gen' 'tools/src/*.dfy'
untracked=$(git ls-files --others --exclude-standard -- 'tools/src/*.dfy.gen')
if [ -n "$untracked" ]; then
echo "ERROR: Untracked self-run .dfy.gen files:"
echo "$untracked"
exit 1
fi

# Dafny verification of the examples, sharded across runners. The `tools` job
# enforces drift + additions-only (regen --no-verify); this job runs the actual
# `dafny verify` in parallel. Files are split by index (i % N == shard), so no
Expand Down
595 changes: 585 additions & 10 deletions DESIGN_LS_IN_LS.md

Large diffs are not rendered by default.

5 changes: 5 additions & 0 deletions LemmaScript-files.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
tools/src/typedir.ts
tools/src/ir.ts
tools/src/peephole.ts 60 --boogie /proverOpt:O:smt.qi.eager_threshold=30
tools/src/condition-facts.ts
tools/src/narrow.ts 300 --boogie /proverOpt:O:smt.qi.eager_threshold=30
7 changes: 7 additions & 0 deletions tools/src/builtins.ts
Original file line number Diff line number Diff line change
Expand Up @@ -153,3 +153,10 @@ export function recognizeBuiltin(objTy: Ty, method: string): BuiltinId | null {
export function builtinSpec(id: BuiltinId): BuiltinSpec {
return BUILTINS[id];
}

/** The one classification bit narrow reads, as a scalar: fn-valued
* `BuiltinSpec` fields don't cross the self-run import boundary (§8.6),
* so the self-applied narrow imports this instead of `builtinSpec`. */
export function builtinPure(id: BuiltinId): boolean {
return BUILTINS[id].pure;
}
Loading
Loading