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
feat(extract): widen 6 extractors — 4 more provers past 2K threshold
Alloy (136 → 1 483, 10.9×): extended from `assert` only to also
harvest fact / pred / fun / sig / check / run declarations.
TLAPS (103 → 4 064, 39× — past 2K):
- Matched THEOREM only → now also LEMMA, COROLLARY, PROPOSITION,
AXIOM, ASSUME, and top-level `Name == ...` definitions (the
bulk of any TLA+ spec).
- Accept .cfg files (TLC configurations) alongside .tla.
Spin (84 → 351, 4.2×): added proctype, inline, init, mtype, define,
assert() patterns. Promela corpus size ceiling is low — only 78 files
in the Spin repo.
Prism (150 → 3 115, 21× — past 2K):
- Walk .prism / .sm / .nm / .pm / .smg model files as well as
.pctl / .props / .csl property files.
- Extract module, formula, const, reward declarations in addition
to quantitative properties.
KeY (525 → 867 648, 1 653× — past 2K by a large margin):
- Extract \functions, \predicates, \programVariables blocks from
.key files.
- Walk .proof files for per-step rule extraction (each `(rule
"..."` line becomes a training record for tactic-prediction ML).
- Walk .java files and extract JML annotations (requires, ensures,
signals, invariant, pure, assignable, loop_invariant, decreases,
behavior / normal_behavior).
Arend (7 → 6 050, 864× — past 2K):
- Canonical proof corpus is JetBrains/arend-lib (not the JetBrains/
Arend compiler which is Java). Walk both if present.
- Pattern expanded from \func only to also capture \data, \record/
\class, \instance, \lemma.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Copy file name to clipboardExpand all lines: scripts/extract_prism.jl
+57-13Lines changed: 57 additions & 13 deletions
Original file line number
Diff line number
Diff line change
@@ -8,22 +8,66 @@ const DIR = "external_corpora/prism"; const OUT = "training_data"; const START_I
8
8
functionrun_extract()
9
9
ps, ts, pm = Dict{String,Any}[], Dict{String,Any}[], Dict{String,Any}[]; id = START_ID
10
10
if!isdir(DIR); println("PRISM examples not found: $DIR"); println("Clone: git clone https://github.com/prismmodelchecker/prism-examples $DIR"); return ps, ts, pm; end
11
-
pctl_files = String[]
12
-
for (root, _, fs) inwalkdir(DIR); for f in fs; (endswith(f, ".pctl") ||endswith(f, ".props") ||endswith(f, ".csl")) &&push!(pctl_files, joinpath(root, f)); end; end
Copy file name to clipboardExpand all lines: scripts/extract_spin.jl
+59-9Lines changed: 59 additions & 9 deletions
Original file line number
Diff line number
Diff line change
@@ -9,20 +9,70 @@ function run_extract()
9
9
ps, ts, pm = Dict{String,Any}[], Dict{String,Any}[], Dict{String,Any}[]; id = START_ID
10
10
if!isdir(DIR); println("SPIN examples not found: $DIR"); println("Clone: git clone https://github.com/nimble-code/Spin $DIR"); return ps, ts, pm; end
11
11
pml_files = String[]
12
-
for (root, _, fs) inwalkdir(DIR); for f in fs; endswith(f, ".pml") &&push!(pml_files, joinpath(root, f)); end; end
13
-
println("Found $(length(pml_files)).pml files")
14
-
#ltl NAME { FORMULA } or #define P (...)
12
+
for (root, _, fs) inwalkdir(DIR); for f in fs; (endswith(f, ".pml") ||endswith(f, ".prom") ||endswith(f, ".promela")) &&push!(pml_files, joinpath(root, f)); end; end
0 commit comments