@stevenvo780/st-lang 4.9.0 → 4.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (121) hide show
  1. package/dist/logic/profiles/natural-deduction-nk/formula.d.ts +18 -0
  2. package/dist/logic/profiles/natural-deduction-nk/formula.d.ts.map +1 -0
  3. package/dist/logic/profiles/natural-deduction-nk/formula.js +102 -0
  4. package/dist/logic/profiles/natural-deduction-nk/formula.js.map +1 -0
  5. package/dist/logic/profiles/natural-deduction-nk/index.d.ts +5 -0
  6. package/dist/logic/profiles/natural-deduction-nk/index.d.ts.map +1 -0
  7. package/dist/logic/profiles/natural-deduction-nk/index.js +28 -0
  8. package/dist/logic/profiles/natural-deduction-nk/index.js.map +1 -0
  9. package/dist/logic/profiles/natural-deduction-nk/prover.d.ts +49 -0
  10. package/dist/logic/profiles/natural-deduction-nk/prover.d.ts.map +1 -0
  11. package/dist/logic/profiles/natural-deduction-nk/prover.js +557 -0
  12. package/dist/logic/profiles/natural-deduction-nk/prover.js.map +1 -0
  13. package/dist/logic/profiles/natural-deduction-nk/types.d.ts +48 -0
  14. package/dist/logic/profiles/natural-deduction-nk/types.d.ts.map +1 -0
  15. package/dist/logic/profiles/natural-deduction-nk/types.js +35 -0
  16. package/dist/logic/profiles/natural-deduction-nk/types.js.map +1 -0
  17. package/dist/reasoning/automata/dfa.d.ts +17 -0
  18. package/dist/reasoning/automata/dfa.d.ts.map +1 -0
  19. package/dist/reasoning/automata/dfa.js +276 -0
  20. package/dist/reasoning/automata/dfa.js.map +1 -0
  21. package/dist/reasoning/automata/index.d.ts +8 -0
  22. package/dist/reasoning/automata/index.d.ts.map +1 -0
  23. package/dist/reasoning/automata/index.js +64 -0
  24. package/dist/reasoning/automata/index.js.map +1 -0
  25. package/dist/reasoning/automata/languages.d.ts +10 -0
  26. package/dist/reasoning/automata/languages.d.ts.map +1 -0
  27. package/dist/reasoning/automata/languages.js +78 -0
  28. package/dist/reasoning/automata/languages.js.map +1 -0
  29. package/dist/reasoning/automata/nfa.d.ts +8 -0
  30. package/dist/reasoning/automata/nfa.d.ts.map +1 -0
  31. package/dist/reasoning/automata/nfa.js +122 -0
  32. package/dist/reasoning/automata/nfa.js.map +1 -0
  33. package/dist/reasoning/automata/pda.d.ts +10 -0
  34. package/dist/reasoning/automata/pda.d.ts.map +1 -0
  35. package/dist/reasoning/automata/pda.js +169 -0
  36. package/dist/reasoning/automata/pda.js.map +1 -0
  37. package/dist/reasoning/automata/regex.d.ts +6 -0
  38. package/dist/reasoning/automata/regex.d.ts.map +1 -0
  39. package/dist/reasoning/automata/regex.js +259 -0
  40. package/dist/reasoning/automata/regex.js.map +1 -0
  41. package/dist/reasoning/automata/types.d.ts +69 -0
  42. package/dist/reasoning/automata/types.d.ts.map +1 -0
  43. package/dist/reasoning/automata/types.js +29 -0
  44. package/dist/reasoning/automata/types.js.map +1 -0
  45. package/dist/reasoning/computability/index.d.ts +239 -0
  46. package/dist/reasoning/computability/index.d.ts.map +1 -0
  47. package/dist/reasoning/computability/index.js +851 -0
  48. package/dist/reasoning/computability/index.js.map +1 -0
  49. package/dist/reasoning/number-theory/crt.d.ts +9 -0
  50. package/dist/reasoning/number-theory/crt.d.ts.map +1 -0
  51. package/dist/reasoning/number-theory/crt.js +39 -0
  52. package/dist/reasoning/number-theory/crt.js.map +1 -0
  53. package/dist/reasoning/number-theory/diophantine.d.ts +10 -0
  54. package/dist/reasoning/number-theory/diophantine.d.ts.map +1 -0
  55. package/dist/reasoning/number-theory/diophantine.js +87 -0
  56. package/dist/reasoning/number-theory/diophantine.js.map +1 -0
  57. package/dist/reasoning/number-theory/factorization.d.ts +12 -0
  58. package/dist/reasoning/number-theory/factorization.d.ts.map +1 -0
  59. package/dist/reasoning/number-theory/factorization.js +136 -0
  60. package/dist/reasoning/number-theory/factorization.js.map +1 -0
  61. package/dist/reasoning/number-theory/gcd.d.ts +8 -0
  62. package/dist/reasoning/number-theory/gcd.d.ts.map +1 -0
  63. package/dist/reasoning/number-theory/gcd.js +51 -0
  64. package/dist/reasoning/number-theory/gcd.js.map +1 -0
  65. package/dist/reasoning/number-theory/index.d.ts +9 -0
  66. package/dist/reasoning/number-theory/index.d.ts.map +1 -0
  67. package/dist/reasoning/number-theory/index.js +46 -0
  68. package/dist/reasoning/number-theory/index.js.map +1 -0
  69. package/dist/reasoning/number-theory/modular.d.ts +6 -0
  70. package/dist/reasoning/number-theory/modular.d.ts.map +1 -0
  71. package/dist/reasoning/number-theory/modular.js +75 -0
  72. package/dist/reasoning/number-theory/modular.js.map +1 -0
  73. package/dist/reasoning/number-theory/primality.d.ts +6 -0
  74. package/dist/reasoning/number-theory/primality.d.ts.map +1 -0
  75. package/dist/reasoning/number-theory/primality.js +144 -0
  76. package/dist/reasoning/number-theory/primality.js.map +1 -0
  77. package/dist/reasoning/number-theory/symbols.d.ts +3 -0
  78. package/dist/reasoning/number-theory/symbols.d.ts.map +1 -0
  79. package/dist/reasoning/number-theory/symbols.js +57 -0
  80. package/dist/reasoning/number-theory/symbols.js.map +1 -0
  81. package/dist/reasoning/real-analysis/index.d.ts +127 -0
  82. package/dist/reasoning/real-analysis/index.d.ts.map +1 -0
  83. package/dist/reasoning/real-analysis/index.js +638 -0
  84. package/dist/reasoning/real-analysis/index.js.map +1 -0
  85. package/dist/reasoning/topology/index.d.ts +41 -0
  86. package/dist/reasoning/topology/index.d.ts.map +1 -0
  87. package/dist/reasoning/topology/index.js +739 -0
  88. package/dist/reasoning/topology/index.js.map +1 -0
  89. package/dist/tests/logic/profiles/natural-deduction-nk/nk.test.d.ts +2 -0
  90. package/dist/tests/logic/profiles/natural-deduction-nk/nk.test.d.ts.map +1 -0
  91. package/dist/tests/logic/profiles/natural-deduction-nk/nk.test.js +288 -0
  92. package/dist/tests/logic/profiles/natural-deduction-nk/nk.test.js.map +1 -0
  93. package/dist/tests/reasoning/automata/automata.test.d.ts +2 -0
  94. package/dist/tests/reasoning/automata/automata.test.d.ts.map +1 -0
  95. package/dist/tests/reasoning/automata/automata.test.js +310 -0
  96. package/dist/tests/reasoning/automata/automata.test.js.map +1 -0
  97. package/dist/tests/reasoning/computability/computability.test.d.ts +2 -0
  98. package/dist/tests/reasoning/computability/computability.test.d.ts.map +1 -0
  99. package/dist/tests/reasoning/computability/computability.test.js +246 -0
  100. package/dist/tests/reasoning/computability/computability.test.js.map +1 -0
  101. package/dist/tests/reasoning/number-theory/number-theory.test.d.ts +2 -0
  102. package/dist/tests/reasoning/number-theory/number-theory.test.d.ts.map +1 -0
  103. package/dist/tests/reasoning/number-theory/number-theory.test.js +170 -0
  104. package/dist/tests/reasoning/number-theory/number-theory.test.js.map +1 -0
  105. package/dist/tests/reasoning/real-analysis/real-analysis.test.d.ts +2 -0
  106. package/dist/tests/reasoning/real-analysis/real-analysis.test.d.ts.map +1 -0
  107. package/dist/tests/reasoning/real-analysis/real-analysis.test.js +197 -0
  108. package/dist/tests/reasoning/real-analysis/real-analysis.test.js.map +1 -0
  109. package/dist/tests/reasoning/topology/topology.test.d.ts +2 -0
  110. package/dist/tests/reasoning/topology/topology.test.d.ts.map +1 -0
  111. package/dist/tests/reasoning/topology/topology.test.js +327 -0
  112. package/dist/tests/reasoning/topology/topology.test.js.map +1 -0
  113. package/dist/tests/tooling/exporters/lean4/lean4-exporter.test.d.ts +2 -0
  114. package/dist/tests/tooling/exporters/lean4/lean4-exporter.test.d.ts.map +1 -0
  115. package/dist/tests/tooling/exporters/lean4/lean4-exporter.test.js +473 -0
  116. package/dist/tests/tooling/exporters/lean4/lean4-exporter.test.js.map +1 -0
  117. package/dist/tooling/exporters/lean4/index.d.ts +47 -0
  118. package/dist/tooling/exporters/lean4/index.d.ts.map +1 -0
  119. package/dist/tooling/exporters/lean4/index.js +423 -0
  120. package/dist/tooling/exporters/lean4/index.js.map +1 -0
  121. package/package.json +1 -1
@@ -0,0 +1,423 @@
1
+ "use strict";
2
+ // ============================================================
3
+ // ST Exporters — Lean 4 code generator (classical profile)
4
+ // ============================================================
5
+ // Converts ST Formula AST and Proof objects into valid Lean 4
6
+ // source code. Differences vs. Coq exporter:
7
+ // - Uses Unicode connectives (∧ ∨ → ¬ ↔) instead of ASCII.
8
+ // - Definitions use `:=` and theorems use `theorem ... := by ...`.
9
+ // - Tactics use Lean 4 vocabulary: `intro`, `exact`, `constructor`,
10
+ // `obtain ⟨...⟩`, `cases`, `left`/`right`, `exfalso`, etc.
11
+ // - Imports list controls Mathlib vs. core; default pulls in
12
+ // `Mathlib.Tactic` for `tauto`, `exact?`, `Classical.em`, etc.
13
+ // ============================================================
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.LEAN4_OPS = exports.COMMON_IMPORTS = void 0;
16
+ exports.formulaToLeanTerm = formulaToLeanTerm;
17
+ exports.leanTacticForRule = leanTacticForRule;
18
+ exports.exportToLean4 = exportToLean4;
19
+ exports.exportProofToLean4 = exportProofToLean4;
20
+ exports.exportTheoryToLean4 = exportTheoryToLean4;
21
+ // ----------------------------------------------------------------
22
+ // Common imports presets
23
+ // ----------------------------------------------------------------
24
+ exports.COMMON_IMPORTS = {
25
+ /** Lean 4 core only — no Mathlib needed. */
26
+ minimal: [],
27
+ /** Init prelude only — same as the empty list but explicit. */
28
+ standard: ['Init'],
29
+ /** Mathlib tactic suite — enables `tauto`, `exact?`, `Classical.em`. */
30
+ mathlib: ['Mathlib.Tactic'],
31
+ };
32
+ // ----------------------------------------------------------------
33
+ // Symbol mapping
34
+ // ----------------------------------------------------------------
35
+ /**
36
+ * Maps ST/Unicode logical operators to their Lean 4 surface syntax.
37
+ * Lean 4 happens to accept the same Unicode glyphs, but we keep the
38
+ * map explicit so downstream tooling can introspect the mapping.
39
+ */
40
+ exports.LEAN4_OPS = new Map([
41
+ ['not', '¬'],
42
+ ['and', '∧'],
43
+ ['or', '∨'],
44
+ ['implies', '→'],
45
+ ['biconditional', '↔'],
46
+ ['forall', '∀'],
47
+ ['exists', '∃'],
48
+ ['true', 'True'],
49
+ ['false', 'False'],
50
+ ]);
51
+ // ----------------------------------------------------------------
52
+ // Formula → Lean 4 term
53
+ // ----------------------------------------------------------------
54
+ /**
55
+ * Converts an ST Formula AST node into a Lean 4 Prop expression string.
56
+ * Unsupported kinds emit `(/- unsupported: <kind> -/)` so dropped
57
+ * sub-trees are visible to the reader.
58
+ */
59
+ function formulaToLeanTerm(formula) {
60
+ switch (formula.kind) {
61
+ case 'atom':
62
+ return formula.name ?? 'UnknownAtom';
63
+ case 'true':
64
+ return 'True';
65
+ case 'false':
66
+ return 'False';
67
+ case 'not': {
68
+ const inner = formula.args?.[0];
69
+ if (!inner)
70
+ return '(/- missing arg for not -/)';
71
+ const innerStr = formulaToLeanTerm(inner);
72
+ return needsParens(inner) ? `(¬ (${innerStr}))` : `(¬ ${innerStr})`;
73
+ }
74
+ case 'and': {
75
+ const left = formula.args?.[0];
76
+ const right = formula.args?.[1];
77
+ if (!left || !right)
78
+ return '(/- missing args for and -/)';
79
+ return `(${formulaToLeanTerm(left)} ∧ ${formulaToLeanTerm(right)})`;
80
+ }
81
+ case 'or': {
82
+ const left = formula.args?.[0];
83
+ const right = formula.args?.[1];
84
+ if (!left || !right)
85
+ return '(/- missing args for or -/)';
86
+ return `(${formulaToLeanTerm(left)} ∨ ${formulaToLeanTerm(right)})`;
87
+ }
88
+ case 'implies': {
89
+ const antecedent = formula.args?.[0];
90
+ const consequent = formula.args?.[1];
91
+ if (!antecedent || !consequent)
92
+ return '(/- missing args for implies -/)';
93
+ return `(${formulaToLeanTerm(antecedent)} → ${formulaToLeanTerm(consequent)})`;
94
+ }
95
+ case 'biconditional': {
96
+ const left = formula.args?.[0];
97
+ const right = formula.args?.[1];
98
+ if (!left || !right)
99
+ return '(/- missing args for biconditional -/)';
100
+ return `(${formulaToLeanTerm(left)} ↔ ${formulaToLeanTerm(right)})`;
101
+ }
102
+ case 'forall': {
103
+ const variable = formula.variable ?? 'x';
104
+ const body = formula.args?.[0];
105
+ if (!body)
106
+ return `(/- missing body for forall ${variable} -/)`;
107
+ return `(∀ ${variable} : Prop, ${formulaToLeanTerm(body)})`;
108
+ }
109
+ case 'exists': {
110
+ const variable = formula.variable ?? 'x';
111
+ const body = formula.args?.[0];
112
+ if (!body)
113
+ return `(/- missing body for exists ${variable} -/)`;
114
+ return `(∃ ${variable} : Prop, ${formulaToLeanTerm(body)})`;
115
+ }
116
+ case 'predicate': {
117
+ const name = formula.name ?? 'P';
118
+ const params = formula.params ?? formula.terms ?? [];
119
+ if (params.length === 0)
120
+ return name;
121
+ return `(${name} ${params.join(' ')})`;
122
+ }
123
+ default:
124
+ return `(/- unsupported formula kind: ${formula.kind} -/)`;
125
+ }
126
+ }
127
+ /** Whether the formula needs outer parens when used as an argument. */
128
+ function needsParens(f) {
129
+ return (f.kind === 'and' ||
130
+ f.kind === 'or' ||
131
+ f.kind === 'implies' ||
132
+ f.kind === 'biconditional' ||
133
+ f.kind === 'forall' ||
134
+ f.kind === 'exists');
135
+ }
136
+ // ----------------------------------------------------------------
137
+ // Rule → Lean 4 tactic
138
+ // ----------------------------------------------------------------
139
+ /**
140
+ * Translates a natural-deduction rule label into a Lean 4 tactic.
141
+ * Used by callers that already know what rule they want to apply
142
+ * outside the context of a full proof step.
143
+ */
144
+ function leanTacticForRule(rule) {
145
+ const r = rule.toLowerCase();
146
+ if (r.includes('modus ponens') || r === 'mp' || r.includes('modus-ponens')) {
147
+ return 'exact h₁ h₂';
148
+ }
149
+ if (r.includes('implies intro') || r.includes('→i') || r.includes('imp-intro') || r === 'intro') {
150
+ return 'intro h';
151
+ }
152
+ if (r.includes('and intro') || r.includes('∧i') || r.includes('and-intro')) {
153
+ return 'constructor';
154
+ }
155
+ if (r.includes('and elim left') || r.includes('∧el')) {
156
+ return 'exact h.left';
157
+ }
158
+ if (r.includes('and elim right') || r.includes('∧er')) {
159
+ return 'exact h.right';
160
+ }
161
+ if (r.includes('and elim') || r.includes('∧e')) {
162
+ return 'obtain ⟨hL, hR⟩ := h';
163
+ }
164
+ if (r.includes('or intro left') || r.includes('∨il')) {
165
+ return 'left';
166
+ }
167
+ if (r.includes('or intro right') || r.includes('∨ir')) {
168
+ return 'right';
169
+ }
170
+ if (r.includes('or elim') || r.includes('∨e')) {
171
+ return 'cases h with\n | inl hL => sorry\n | inr hR => sorry';
172
+ }
173
+ if (r.includes('not intro') || r.includes('¬i')) {
174
+ return 'intro habs';
175
+ }
176
+ if (r.includes('not elim') || r.includes('¬e') || r.includes('contradiction')) {
177
+ return 'contradiction';
178
+ }
179
+ if (r.includes('forall intro') || r.includes('∀i')) {
180
+ return 'intro x';
181
+ }
182
+ if (r.includes('forall elim') || r.includes('∀e')) {
183
+ return 'exact h x';
184
+ }
185
+ if (r.includes('exists intro') || r.includes('∃i')) {
186
+ return 'exact ⟨x, hx⟩';
187
+ }
188
+ if (r.includes('exists elim') || r.includes('∃e')) {
189
+ return 'obtain ⟨x, hx⟩ := h';
190
+ }
191
+ if (r.includes('lem') || r.includes('excluded middle') || r.includes('em')) {
192
+ return 'exact Classical.em _';
193
+ }
194
+ if (r.includes('exact') || r === 'goal') {
195
+ return 'exact h';
196
+ }
197
+ if (r.includes('assumption') || r === 'premise') {
198
+ return 'assumption';
199
+ }
200
+ if (r.includes('tauto')) {
201
+ return 'tauto';
202
+ }
203
+ return `sorry -- TODO: ${rule}`;
204
+ }
205
+ // ----------------------------------------------------------------
206
+ // Tactic skeleton derivation from a Proof object
207
+ // ----------------------------------------------------------------
208
+ function proofStepToTactic(step) {
209
+ if (step.source === 'premise' || step.justification.toLowerCase().includes('premise')) {
210
+ return ` -- step ${step.stepNumber}: premise — already in context`;
211
+ }
212
+ if (step.source === 'assumption' || step.justification.toLowerCase().includes('assumption')) {
213
+ return ' assumption';
214
+ }
215
+ return ` ${leanTacticForRule(step.justification)}`;
216
+ }
217
+ function buildTacticBlock(proof) {
218
+ if (proof.status !== 'complete' || proof.steps.length === 0) {
219
+ return ' sorry -- TODO: derive — proof not complete';
220
+ }
221
+ return proof.steps.map(proofStepToTactic).join('\n');
222
+ }
223
+ // ----------------------------------------------------------------
224
+ // Heuristic proofs for common shapes
225
+ // ----------------------------------------------------------------
226
+ /** Detects `P → P` and emits the identity proof. */
227
+ function tryIdentityProof(formula) {
228
+ if (formula.kind !== 'implies')
229
+ return null;
230
+ const ant = formula.args?.[0];
231
+ const con = formula.args?.[1];
232
+ if (!ant || !con)
233
+ return null;
234
+ if (ant.kind === 'atom' && con.kind === 'atom' && ant.name === con.name) {
235
+ return ` intro h\n exact h`;
236
+ }
237
+ return null;
238
+ }
239
+ /** Detects `(A ∧ B) → A` — left projection. */
240
+ function tryAndElimLeftProof(formula) {
241
+ if (formula.kind !== 'implies')
242
+ return null;
243
+ const ant = formula.args?.[0];
244
+ const con = formula.args?.[1];
245
+ if (!ant || !con)
246
+ return null;
247
+ if (ant.kind === 'and' && con.kind === 'atom') {
248
+ const leftArg = ant.args?.[0];
249
+ if (leftArg?.kind === 'atom' && leftArg.name === con.name) {
250
+ return ` intro h\n exact h.left`;
251
+ }
252
+ }
253
+ return null;
254
+ }
255
+ /** Detects `(A ∧ B) → B` — right projection. */
256
+ function tryAndElimRightProof(formula) {
257
+ if (formula.kind !== 'implies')
258
+ return null;
259
+ const ant = formula.args?.[0];
260
+ const con = formula.args?.[1];
261
+ if (!ant || !con)
262
+ return null;
263
+ if (ant.kind === 'and' && con.kind === 'atom') {
264
+ const rightArg = ant.args?.[1];
265
+ if (rightArg?.kind === 'atom' && rightArg.name === con.name) {
266
+ return ` intro h\n exact h.right`;
267
+ }
268
+ }
269
+ return null;
270
+ }
271
+ /** Detects `P ∨ ¬P` (LEM). */
272
+ function tryLEMProof(formula) {
273
+ if (formula.kind !== 'or')
274
+ return null;
275
+ const left = formula.args?.[0];
276
+ const right = formula.args?.[1];
277
+ if (!left || !right)
278
+ return null;
279
+ if (left.kind === 'atom' && right.kind === 'not') {
280
+ const negArg = right.args?.[0];
281
+ if (negArg?.kind === 'atom' && negArg.name === left.name) {
282
+ return ` exact Classical.em _`;
283
+ }
284
+ }
285
+ if (right.kind === 'atom' && left.kind === 'not') {
286
+ const negArg = left.args?.[0];
287
+ if (negArg?.kind === 'atom' && negArg.name === right.name) {
288
+ return ` exact (Classical.em _).symm`;
289
+ }
290
+ }
291
+ return null;
292
+ }
293
+ /** Picks the best tactic skeleton given just a goal formula. */
294
+ function heuristicTactics(formula) {
295
+ const identity = tryIdentityProof(formula);
296
+ if (identity)
297
+ return identity;
298
+ const lem = tryLEMProof(formula);
299
+ if (lem)
300
+ return lem;
301
+ const andLeft = tryAndElimLeftProof(formula);
302
+ if (andLeft)
303
+ return andLeft;
304
+ const andRight = tryAndElimRightProof(formula);
305
+ if (andRight)
306
+ return andRight;
307
+ if (formula.kind === 'forall') {
308
+ const body = formula.args?.[0];
309
+ if (body?.kind === 'implies') {
310
+ const ant = body.args?.[0];
311
+ const con = body.args?.[1];
312
+ if (ant?.kind === 'predicate' && con?.kind === 'exists') {
313
+ const exVar = con.variable ?? 'y';
314
+ // Lean 4: provide the witness and reuse the assumption.
315
+ return ` intro x\n intro h\n exact ⟨${exVar}, h⟩`;
316
+ }
317
+ }
318
+ return ` intro ${formula.variable ?? 'x'}\n sorry -- TODO: derive`;
319
+ }
320
+ return ` sorry -- TODO: derive`;
321
+ }
322
+ // ----------------------------------------------------------------
323
+ // Import / header helpers
324
+ // ----------------------------------------------------------------
325
+ function resolveImports(opts) {
326
+ if (opts?.imports !== undefined)
327
+ return opts.imports;
328
+ const useMathlib = opts?.useMathlib ?? true;
329
+ return useMathlib ? exports.COMMON_IMPORTS.mathlib : exports.COMMON_IMPORTS.minimal;
330
+ }
331
+ function emitImports(imports) {
332
+ return imports.filter((i) => i.length > 0).map((i) => `import ${i}`);
333
+ }
334
+ // ----------------------------------------------------------------
335
+ // Main export functions
336
+ // ----------------------------------------------------------------
337
+ /**
338
+ * Exports a single ST Formula as a Lean 4 module containing a
339
+ * `def stmt : Prop := ...` and an optional `theorem stmt_proof : stmt := by ...`.
340
+ */
341
+ function exportToLean4(formula, opts) {
342
+ const moduleName = opts?.moduleName ?? 'STExport';
343
+ const emitProof = opts?.emitProof ?? true;
344
+ const imports = resolveImports(opts);
345
+ const term = formulaToLeanTerm(formula);
346
+ const lines = [];
347
+ const importLines = emitImports(imports);
348
+ if (importLines.length > 0) {
349
+ lines.push(...importLines);
350
+ lines.push('');
351
+ }
352
+ lines.push(`namespace ${moduleName}`);
353
+ lines.push('');
354
+ lines.push(`def stmt : Prop := ${term}`);
355
+ if (emitProof) {
356
+ lines.push('');
357
+ lines.push(`theorem stmt_proof : stmt := by`);
358
+ lines.push(heuristicTactics(formula));
359
+ }
360
+ lines.push('');
361
+ lines.push(`end ${moduleName}`);
362
+ return lines.join('\n');
363
+ }
364
+ /**
365
+ * Exports an ST Proof object as a Lean 4 module whose theorem body is
366
+ * derived from the proof steps.
367
+ */
368
+ function exportProofToLean4(proof, opts) {
369
+ const moduleName = opts?.moduleName ?? 'STExport';
370
+ const emitProof = opts?.emitProof ?? true;
371
+ const imports = resolveImports(opts);
372
+ const term = formulaToLeanTerm(proof.goal);
373
+ const lines = [];
374
+ const importLines = emitImports(imports);
375
+ if (importLines.length > 0) {
376
+ lines.push(...importLines);
377
+ lines.push('');
378
+ }
379
+ lines.push(`namespace ${moduleName}`);
380
+ lines.push('');
381
+ lines.push(`def stmt : Prop := ${term}`);
382
+ if (emitProof) {
383
+ lines.push('');
384
+ lines.push(`theorem stmt_proof : stmt := by`);
385
+ lines.push(buildTacticBlock(proof));
386
+ }
387
+ lines.push('');
388
+ lines.push(`end ${moduleName}`);
389
+ return lines.join('\n');
390
+ }
391
+ /**
392
+ * Exports a small theory (axioms + theorems) as a single Lean 4 module.
393
+ * Axioms become `axiom ax_i : <prop>` declarations; theorems become
394
+ * `theorem th_i : <prop> := by sorry` skeletons that the user fills in.
395
+ */
396
+ function exportTheoryToLean4(axioms, theorems, opts) {
397
+ const moduleName = opts?.moduleName ?? 'STExport';
398
+ const emitProof = opts?.emitProof ?? true;
399
+ const imports = resolveImports(opts);
400
+ const lines = [];
401
+ const importLines = emitImports(imports);
402
+ if (importLines.length > 0) {
403
+ lines.push(...importLines);
404
+ lines.push('');
405
+ }
406
+ lines.push(`namespace ${moduleName}`);
407
+ axioms.forEach((ax, idx) => {
408
+ lines.push('');
409
+ lines.push(`axiom ax_${idx + 1} : ${formulaToLeanTerm(ax)}`);
410
+ });
411
+ theorems.forEach((th, idx) => {
412
+ lines.push('');
413
+ lines.push(`def stmt_${idx + 1} : Prop := ${formulaToLeanTerm(th)}`);
414
+ if (emitProof) {
415
+ lines.push(`theorem stmt_${idx + 1}_proof : stmt_${idx + 1} := by`);
416
+ lines.push(heuristicTactics(th));
417
+ }
418
+ });
419
+ lines.push('');
420
+ lines.push(`end ${moduleName}`);
421
+ return lines.join('\n');
422
+ }
423
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/tooling/exporters/lean4/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stevenvo780/st-lang",
3
- "version": "4.9.0",
3
+ "version": "4.10.0",
4
4
  "description": "ST — Lenguaje ejecutable con nucleo logico y capa textual. Motor multi-perfil (11 lógicas), derivaciones, tablas de verdad, contramodelos, aliases modales, Belnap 4-valores y capa textual para formalización de documentos.",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",