@stevenvo780/st-lang 4.14.1 → 4.15.1

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 (197) hide show
  1. package/dist/format/stnb/__tests__/executor.test.d.ts +2 -0
  2. package/dist/format/stnb/__tests__/executor.test.d.ts.map +1 -0
  3. package/dist/format/stnb/__tests__/executor.test.js +140 -0
  4. package/dist/format/stnb/__tests__/executor.test.js.map +1 -0
  5. package/dist/format/stnb/__tests__/parser.test.d.ts +2 -0
  6. package/dist/format/stnb/__tests__/parser.test.d.ts.map +1 -0
  7. package/dist/format/stnb/__tests__/parser.test.js +119 -0
  8. package/dist/format/stnb/__tests__/parser.test.js.map +1 -0
  9. package/dist/format/stnb/__tests__/renderer.test.d.ts +2 -0
  10. package/dist/format/stnb/__tests__/renderer.test.d.ts.map +1 -0
  11. package/dist/format/stnb/__tests__/renderer.test.js +109 -0
  12. package/dist/format/stnb/__tests__/renderer.test.js.map +1 -0
  13. package/dist/format/stnb/__tests__/roundtrip.test.d.ts +2 -0
  14. package/dist/format/stnb/__tests__/roundtrip.test.d.ts.map +1 -0
  15. package/dist/format/stnb/__tests__/roundtrip.test.js +91 -0
  16. package/dist/format/stnb/__tests__/roundtrip.test.js.map +1 -0
  17. package/dist/format/stnb/__tests__/serializer.test.d.ts +2 -0
  18. package/dist/format/stnb/__tests__/serializer.test.d.ts.map +1 -0
  19. package/dist/format/stnb/__tests__/serializer.test.js +60 -0
  20. package/dist/format/stnb/__tests__/serializer.test.js.map +1 -0
  21. package/dist/format/stnb/executor.d.ts +29 -0
  22. package/dist/format/stnb/executor.d.ts.map +1 -0
  23. package/dist/format/stnb/executor.js +139 -0
  24. package/dist/format/stnb/executor.js.map +1 -0
  25. package/dist/format/stnb/index.d.ts +19 -0
  26. package/dist/format/stnb/index.d.ts.map +1 -0
  27. package/dist/format/stnb/index.js +28 -0
  28. package/dist/format/stnb/index.js.map +1 -0
  29. package/dist/format/stnb/renderer-html.d.ts +11 -0
  30. package/dist/format/stnb/renderer-html.d.ts.map +1 -0
  31. package/dist/format/stnb/renderer-html.js +180 -0
  32. package/dist/format/stnb/renderer-html.js.map +1 -0
  33. package/dist/format/stnb/renderer-markdown.d.ts +13 -0
  34. package/dist/format/stnb/renderer-markdown.d.ts.map +1 -0
  35. package/dist/format/stnb/renderer-markdown.js +92 -0
  36. package/dist/format/stnb/renderer-markdown.js.map +1 -0
  37. package/dist/format/stnb/serializer.d.ts +14 -0
  38. package/dist/format/stnb/serializer.d.ts.map +1 -0
  39. package/dist/format/stnb/serializer.js +21 -0
  40. package/dist/format/stnb/serializer.js.map +1 -0
  41. package/dist/index.d.ts +6 -0
  42. package/dist/index.d.ts.map +1 -1
  43. package/dist/index.js +8 -1
  44. package/dist/index.js.map +1 -1
  45. package/dist/logic/profiles/dl-hybrid/__tests__/differential.test.d.ts +2 -0
  46. package/dist/logic/profiles/dl-hybrid/__tests__/differential.test.d.ts.map +1 -0
  47. package/dist/logic/profiles/dl-hybrid/__tests__/differential.test.js +141 -0
  48. package/dist/logic/profiles/dl-hybrid/__tests__/differential.test.js.map +1 -0
  49. package/dist/logic/profiles/dl-hybrid/__tests__/examples.test.d.ts +2 -0
  50. package/dist/logic/profiles/dl-hybrid/__tests__/examples.test.d.ts.map +1 -0
  51. package/dist/logic/profiles/dl-hybrid/__tests__/examples.test.js +55 -0
  52. package/dist/logic/profiles/dl-hybrid/__tests__/examples.test.js.map +1 -0
  53. package/dist/logic/profiles/dl-hybrid/__tests__/parser.test.d.ts +2 -0
  54. package/dist/logic/profiles/dl-hybrid/__tests__/parser.test.d.ts.map +1 -0
  55. package/dist/logic/profiles/dl-hybrid/__tests__/parser.test.js +149 -0
  56. package/dist/logic/profiles/dl-hybrid/__tests__/parser.test.js.map +1 -0
  57. package/dist/logic/profiles/dl-hybrid/__tests__/tableau.test.d.ts +2 -0
  58. package/dist/logic/profiles/dl-hybrid/__tests__/tableau.test.d.ts.map +1 -0
  59. package/dist/logic/profiles/dl-hybrid/__tests__/tableau.test.js +105 -0
  60. package/dist/logic/profiles/dl-hybrid/__tests__/tableau.test.js.map +1 -0
  61. package/dist/logic/profiles/dl-hybrid/ast.d.ts +160 -0
  62. package/dist/logic/profiles/dl-hybrid/ast.d.ts.map +1 -0
  63. package/dist/logic/profiles/dl-hybrid/ast.js +261 -0
  64. package/dist/logic/profiles/dl-hybrid/ast.js.map +1 -0
  65. package/dist/logic/profiles/dl-hybrid/differential.d.ts +61 -0
  66. package/dist/logic/profiles/dl-hybrid/differential.d.ts.map +1 -0
  67. package/dist/logic/profiles/dl-hybrid/differential.js +291 -0
  68. package/dist/logic/profiles/dl-hybrid/differential.js.map +1 -0
  69. package/dist/logic/profiles/dl-hybrid/index.d.ts +10 -0
  70. package/dist/logic/profiles/dl-hybrid/index.d.ts.map +1 -0
  71. package/dist/logic/profiles/dl-hybrid/index.js +90 -0
  72. package/dist/logic/profiles/dl-hybrid/index.js.map +1 -0
  73. package/dist/logic/profiles/dl-hybrid/parser.d.ts +8 -0
  74. package/dist/logic/profiles/dl-hybrid/parser.d.ts.map +1 -0
  75. package/dist/logic/profiles/dl-hybrid/parser.js +410 -0
  76. package/dist/logic/profiles/dl-hybrid/parser.js.map +1 -0
  77. package/dist/logic/profiles/dl-hybrid/profile.d.ts +23 -0
  78. package/dist/logic/profiles/dl-hybrid/profile.d.ts.map +1 -0
  79. package/dist/logic/profiles/dl-hybrid/profile.js +122 -0
  80. package/dist/logic/profiles/dl-hybrid/profile.js.map +1 -0
  81. package/dist/logic/profiles/dl-hybrid/semantics.d.ts +16 -0
  82. package/dist/logic/profiles/dl-hybrid/semantics.d.ts.map +1 -0
  83. package/dist/logic/profiles/dl-hybrid/semantics.js +181 -0
  84. package/dist/logic/profiles/dl-hybrid/semantics.js.map +1 -0
  85. package/dist/logic/profiles/dl-hybrid/tableau.d.ts +38 -0
  86. package/dist/logic/profiles/dl-hybrid/tableau.d.ts.map +1 -0
  87. package/dist/logic/profiles/dl-hybrid/tableau.js +289 -0
  88. package/dist/logic/profiles/dl-hybrid/tableau.js.map +1 -0
  89. package/dist/reasoning/dl-hybrid/__tests__/invariant.test.d.ts +2 -0
  90. package/dist/reasoning/dl-hybrid/__tests__/invariant.test.d.ts.map +1 -0
  91. package/dist/reasoning/dl-hybrid/__tests__/invariant.test.js +74 -0
  92. package/dist/reasoning/dl-hybrid/__tests__/invariant.test.js.map +1 -0
  93. package/dist/reasoning/dl-hybrid/index.d.ts +3 -0
  94. package/dist/reasoning/dl-hybrid/index.d.ts.map +1 -0
  95. package/dist/reasoning/dl-hybrid/index.js +16 -0
  96. package/dist/reasoning/dl-hybrid/index.js.map +1 -0
  97. package/dist/reasoning/dl-hybrid/invariant-search.d.ts +39 -0
  98. package/dist/reasoning/dl-hybrid/invariant-search.d.ts.map +1 -0
  99. package/dist/reasoning/dl-hybrid/invariant-search.js +188 -0
  100. package/dist/reasoning/dl-hybrid/invariant-search.js.map +1 -0
  101. package/dist/reasoning/lemma-rag/__tests__/benchmarks.test.d.ts +2 -0
  102. package/dist/reasoning/lemma-rag/__tests__/benchmarks.test.d.ts.map +1 -0
  103. package/dist/reasoning/lemma-rag/__tests__/benchmarks.test.js +72 -0
  104. package/dist/reasoning/lemma-rag/__tests__/benchmarks.test.js.map +1 -0
  105. package/dist/reasoning/lemma-rag/__tests__/embedding.test.d.ts +2 -0
  106. package/dist/reasoning/lemma-rag/__tests__/embedding.test.d.ts.map +1 -0
  107. package/dist/reasoning/lemma-rag/__tests__/embedding.test.js +102 -0
  108. package/dist/reasoning/lemma-rag/__tests__/embedding.test.js.map +1 -0
  109. package/dist/reasoning/lemma-rag/__tests__/integration.test.d.ts +2 -0
  110. package/dist/reasoning/lemma-rag/__tests__/integration.test.d.ts.map +1 -0
  111. package/dist/reasoning/lemma-rag/__tests__/integration.test.js +40 -0
  112. package/dist/reasoning/lemma-rag/__tests__/integration.test.js.map +1 -0
  113. package/dist/reasoning/lemma-rag/__tests__/query.test.d.ts +2 -0
  114. package/dist/reasoning/lemma-rag/__tests__/query.test.d.ts.map +1 -0
  115. package/dist/reasoning/lemma-rag/__tests__/query.test.js +136 -0
  116. package/dist/reasoning/lemma-rag/__tests__/query.test.js.map +1 -0
  117. package/dist/reasoning/lemma-rag/__tests__/retrieval.test.d.ts +2 -0
  118. package/dist/reasoning/lemma-rag/__tests__/retrieval.test.d.ts.map +1 -0
  119. package/dist/reasoning/lemma-rag/__tests__/retrieval.test.js +147 -0
  120. package/dist/reasoning/lemma-rag/__tests__/retrieval.test.js.map +1 -0
  121. package/dist/reasoning/lemma-rag/benchmarks.d.ts +30 -0
  122. package/dist/reasoning/lemma-rag/benchmarks.d.ts.map +1 -0
  123. package/dist/reasoning/lemma-rag/benchmarks.js +177 -0
  124. package/dist/reasoning/lemma-rag/benchmarks.js.map +1 -0
  125. package/dist/reasoning/lemma-rag/embedding.d.ts +26 -0
  126. package/dist/reasoning/lemma-rag/embedding.d.ts.map +1 -0
  127. package/dist/reasoning/lemma-rag/embedding.js +243 -0
  128. package/dist/reasoning/lemma-rag/embedding.js.map +1 -0
  129. package/dist/reasoning/lemma-rag/index-store.d.ts +35 -0
  130. package/dist/reasoning/lemma-rag/index-store.d.ts.map +1 -0
  131. package/dist/reasoning/lemma-rag/index-store.js +105 -0
  132. package/dist/reasoning/lemma-rag/index-store.js.map +1 -0
  133. package/dist/reasoning/lemma-rag/index.d.ts +9 -0
  134. package/dist/reasoning/lemma-rag/index.d.ts.map +1 -0
  135. package/dist/reasoning/lemma-rag/index.js +34 -0
  136. package/dist/reasoning/lemma-rag/index.js.map +1 -0
  137. package/dist/reasoning/lemma-rag/query.d.ts +48 -0
  138. package/dist/reasoning/lemma-rag/query.d.ts.map +1 -0
  139. package/dist/reasoning/lemma-rag/query.js +92 -0
  140. package/dist/reasoning/lemma-rag/query.js.map +1 -0
  141. package/dist/reasoning/lemma-rag/retrieval.d.ts +33 -0
  142. package/dist/reasoning/lemma-rag/retrieval.d.ts.map +1 -0
  143. package/dist/reasoning/lemma-rag/retrieval.js +123 -0
  144. package/dist/reasoning/lemma-rag/retrieval.js.map +1 -0
  145. package/dist/reasoning/lemma-rag/types.d.ts +52 -0
  146. package/dist/reasoning/lemma-rag/types.d.ts.map +1 -0
  147. package/dist/reasoning/lemma-rag/types.js +13 -0
  148. package/dist/reasoning/lemma-rag/types.js.map +1 -0
  149. package/dist/reasoning/proof-mining/__tests__/extractor.test.d.ts +2 -0
  150. package/dist/reasoning/proof-mining/__tests__/extractor.test.d.ts.map +1 -0
  151. package/dist/reasoning/proof-mining/__tests__/extractor.test.js +263 -0
  152. package/dist/reasoning/proof-mining/__tests__/extractor.test.js.map +1 -0
  153. package/dist/reasoning/proof-mining/__tests__/generalizer.test.d.ts +2 -0
  154. package/dist/reasoning/proof-mining/__tests__/generalizer.test.d.ts.map +1 -0
  155. package/dist/reasoning/proof-mining/__tests__/generalizer.test.js +123 -0
  156. package/dist/reasoning/proof-mining/__tests__/generalizer.test.js.map +1 -0
  157. package/dist/reasoning/proof-mining/__tests__/integration.test.d.ts +2 -0
  158. package/dist/reasoning/proof-mining/__tests__/integration.test.d.ts.map +1 -0
  159. package/dist/reasoning/proof-mining/__tests__/integration.test.js +128 -0
  160. package/dist/reasoning/proof-mining/__tests__/integration.test.js.map +1 -0
  161. package/dist/reasoning/proof-mining/__tests__/persistence.test.d.ts +2 -0
  162. package/dist/reasoning/proof-mining/__tests__/persistence.test.d.ts.map +1 -0
  163. package/dist/reasoning/proof-mining/__tests__/persistence.test.js +119 -0
  164. package/dist/reasoning/proof-mining/__tests__/persistence.test.js.map +1 -0
  165. package/dist/reasoning/proof-mining/__tests__/ranker.test.d.ts +2 -0
  166. package/dist/reasoning/proof-mining/__tests__/ranker.test.d.ts.map +1 -0
  167. package/dist/reasoning/proof-mining/__tests__/ranker.test.js +93 -0
  168. package/dist/reasoning/proof-mining/__tests__/ranker.test.js.map +1 -0
  169. package/dist/reasoning/proof-mining/extractor.d.ts +73 -0
  170. package/dist/reasoning/proof-mining/extractor.d.ts.map +1 -0
  171. package/dist/reasoning/proof-mining/extractor.js +170 -0
  172. package/dist/reasoning/proof-mining/extractor.js.map +1 -0
  173. package/dist/reasoning/proof-mining/generalizer.d.ts +46 -0
  174. package/dist/reasoning/proof-mining/generalizer.d.ts.map +1 -0
  175. package/dist/reasoning/proof-mining/generalizer.js +245 -0
  176. package/dist/reasoning/proof-mining/generalizer.js.map +1 -0
  177. package/dist/reasoning/proof-mining/index.d.ts +62 -0
  178. package/dist/reasoning/proof-mining/index.d.ts.map +1 -0
  179. package/dist/reasoning/proof-mining/index.js +235 -0
  180. package/dist/reasoning/proof-mining/index.js.map +1 -0
  181. package/dist/reasoning/proof-mining/persistence.d.ts +35 -0
  182. package/dist/reasoning/proof-mining/persistence.d.ts.map +1 -0
  183. package/dist/reasoning/proof-mining/persistence.js +126 -0
  184. package/dist/reasoning/proof-mining/persistence.js.map +1 -0
  185. package/dist/reasoning/proof-mining/ranker.d.ts +29 -0
  186. package/dist/reasoning/proof-mining/ranker.d.ts.map +1 -0
  187. package/dist/reasoning/proof-mining/ranker.js +71 -0
  188. package/dist/reasoning/proof-mining/ranker.js.map +1 -0
  189. package/dist/reasoning/proof-mining/statistics.d.ts +11 -0
  190. package/dist/reasoning/proof-mining/statistics.d.ts.map +1 -0
  191. package/dist/reasoning/proof-mining/statistics.js +44 -0
  192. package/dist/reasoning/proof-mining/statistics.js.map +1 -0
  193. package/dist/reasoning/proof-mining/types.d.ts +117 -0
  194. package/dist/reasoning/proof-mining/types.d.ts.map +1 -0
  195. package/dist/reasoning/proof-mining/types.js +24 -0
  196. package/dist/reasoning/proof-mining/types.js.map +1 -0
  197. package/package.json +31 -1
@@ -0,0 +1,410 @@
1
+ "use strict";
2
+ // ============================================================
3
+ // ST dL-Hybrid — Parser de sintaxis textual dL
4
+ // ============================================================
5
+ // Sintaxis aceptada (subset KeYmaera-like):
6
+ //
7
+ // formula ::= impliesFormula
8
+ // impliesFormula ::= orFormula ('->' impliesFormula)?
9
+ // | orFormula '<->' orFormula
10
+ // orFormula ::= andFormula ('|' andFormula)*
11
+ // andFormula ::= notFormula ('&' notFormula)*
12
+ // notFormula ::= '!' notFormula | atomFormula
13
+ // atomFormula::= 'true' | 'false'
14
+ // | '[' program ']' formula
15
+ // | '<' program '>' formula
16
+ // | '(' formula ')'
17
+ // | comparison
18
+ // comparison ::= term op term where op ∈ {=, !=, <, <=, >, >=}
19
+ //
20
+ // program ::= seqProgram
21
+ // seqProgram ::= choiceProgram (';' seqProgram)?
22
+ // choiceProgram::= unaryProgram ('++' unaryProgram)* (++ = ∪)
23
+ // unaryProgram ::= atomProgram '*' ?
24
+ // atomProgram::= var ':=' term
25
+ // | var ':=' '*'
26
+ // | '?' '(' formula ')' | '?' formula
27
+ // | '{' odeEquations ('&' formula)? '}'
28
+ // | '(' program ')'
29
+ //
30
+ // term ::= addTerm
31
+ // addTerm ::= mulTerm (('+' | '-') mulTerm)*
32
+ // mulTerm ::= powTerm (('*' | '/') powTerm)*
33
+ // powTerm ::= unaryTerm ('^' integer)?
34
+ // unaryTerm::= '-' unaryTerm | number | ident | '(' term ')'
35
+ //
36
+ // Comentarios `//...\n` se ignoran.
37
+ // ============================================================
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.parseFormula = parseFormula;
40
+ exports.parseProgram = parseProgram;
41
+ exports.parseTerm = parseTerm;
42
+ class Tokenizer {
43
+ pos = 0;
44
+ src;
45
+ constructor(src) {
46
+ this.src = src;
47
+ }
48
+ skipWs() {
49
+ while (this.pos < this.src.length) {
50
+ const c = this.src[this.pos];
51
+ if (c === ' ' || c === '\t' || c === '\n' || c === '\r') {
52
+ this.pos++;
53
+ }
54
+ else if (c === '/' && this.src[this.pos + 1] === '/') {
55
+ while (this.pos < this.src.length && this.src[this.pos] !== '\n')
56
+ this.pos++;
57
+ }
58
+ else
59
+ break;
60
+ }
61
+ }
62
+ peek() {
63
+ this.skipWs();
64
+ return this.src.slice(this.pos);
65
+ }
66
+ eof() {
67
+ this.skipWs();
68
+ return this.pos >= this.src.length;
69
+ }
70
+ /** Intenta consumir un literal; retorna true si lo consumió. */
71
+ match(literal) {
72
+ this.skipWs();
73
+ if (this.src.startsWith(literal, this.pos)) {
74
+ this.pos += literal.length;
75
+ return true;
76
+ }
77
+ return false;
78
+ }
79
+ /** Consume un literal o lanza error. */
80
+ expect(literal) {
81
+ if (!this.match(literal)) {
82
+ throw new Error(`Esperaba '${literal}' en pos ${this.pos}: '${this.src.slice(this.pos, this.pos + 20)}'`);
83
+ }
84
+ }
85
+ /** Identificador: [a-zA-Z_][a-zA-Z0-9_]* */
86
+ matchIdent() {
87
+ this.skipWs();
88
+ const start = this.pos;
89
+ const c = this.src[start];
90
+ if (!c || !/[a-zA-Z_]/.test(c))
91
+ return null;
92
+ let end = start + 1;
93
+ while (end < this.src.length && /[a-zA-Z0-9_]/.test(this.src[end] ?? ''))
94
+ end++;
95
+ this.pos = end;
96
+ return this.src.slice(start, end);
97
+ }
98
+ /** Número (puede ser real con punto y signo unario gestionado en el parser). */
99
+ matchNumber() {
100
+ this.skipWs();
101
+ const start = this.pos;
102
+ let end = start;
103
+ while (end < this.src.length && /[0-9]/.test(this.src[end] ?? ''))
104
+ end++;
105
+ if (end < this.src.length && this.src[end] === '.') {
106
+ end++;
107
+ while (end < this.src.length && /[0-9]/.test(this.src[end] ?? ''))
108
+ end++;
109
+ }
110
+ if (end === start)
111
+ return null;
112
+ this.pos = end;
113
+ return parseFloat(this.src.slice(start, end));
114
+ }
115
+ /** Mira si el siguiente token (sin consumir) coincide con un literal. */
116
+ lookahead(literal) {
117
+ this.skipWs();
118
+ return this.src.startsWith(literal, this.pos);
119
+ }
120
+ /** Mira si el siguiente token (sin consumir) coincide con un identificador exacto. */
121
+ lookaheadKeyword(kw) {
122
+ this.skipWs();
123
+ if (!this.src.startsWith(kw, this.pos))
124
+ return false;
125
+ const after = this.src[this.pos + kw.length];
126
+ return !after || !/[a-zA-Z0-9_]/.test(after);
127
+ }
128
+ /** Consume un keyword (identificador exacto). */
129
+ matchKeyword(kw) {
130
+ if (this.lookaheadKeyword(kw)) {
131
+ this.pos += kw.length;
132
+ return true;
133
+ }
134
+ return false;
135
+ }
136
+ }
137
+ class Parser {
138
+ tk;
139
+ constructor(src) {
140
+ this.tk = new Tokenizer(src);
141
+ }
142
+ // --- Programa híbrido ---
143
+ parseProgram() {
144
+ return this.parseSeq();
145
+ }
146
+ parseSeq() {
147
+ let left = this.parseChoice();
148
+ while (this.tk.match(';')) {
149
+ const right = this.parseChoice();
150
+ left = { kind: 'seq', left, right };
151
+ }
152
+ return left;
153
+ }
154
+ parseChoice() {
155
+ let left = this.parseUnary();
156
+ // Usamos `++` como ∪ porque `|` colisiona con `or` en fórmulas.
157
+ while (this.tk.match('++')) {
158
+ const right = this.parseUnary();
159
+ left = { kind: 'choice', left, right };
160
+ }
161
+ return left;
162
+ }
163
+ parseUnary() {
164
+ const atom = this.parseAtomProgram();
165
+ if (this.tk.match('*')) {
166
+ return { kind: 'loop', body: atom };
167
+ }
168
+ return atom;
169
+ }
170
+ parseAtomProgram() {
171
+ if (this.tk.match('(')) {
172
+ const inner = this.parseSeq();
173
+ this.tk.expect(')');
174
+ return inner;
175
+ }
176
+ if (this.tk.match('{')) {
177
+ // ODE: x' = e (, y' = e)* (& Q)?
178
+ const equations = [];
179
+ do {
180
+ const v = this.tk.matchIdent();
181
+ if (!v)
182
+ throw new Error('Esperaba variable en ODE');
183
+ this.tk.expect("'");
184
+ this.tk.expect('=');
185
+ const rhs = this.parseTerm();
186
+ equations.push({ varName: v, rhs });
187
+ } while (this.tk.match(','));
188
+ let domain;
189
+ if (this.tk.match('&')) {
190
+ domain = this.parseFormula();
191
+ }
192
+ this.tk.expect('}');
193
+ return { kind: 'ode', system: domain ? { equations, domain } : { equations } };
194
+ }
195
+ if (this.tk.match('?')) {
196
+ let cond;
197
+ if (this.tk.match('(')) {
198
+ cond = this.parseFormula();
199
+ this.tk.expect(')');
200
+ }
201
+ else {
202
+ cond = this.parseComparison();
203
+ }
204
+ return { kind: 'test', cond };
205
+ }
206
+ const id = this.tk.matchIdent();
207
+ if (!id)
208
+ throw new Error(`Esperaba programa, encontré '${this.tk.peek().slice(0, 20)}'`);
209
+ this.tk.expect(':=');
210
+ if (this.tk.match('*')) {
211
+ return { kind: 'nondet', varName: id };
212
+ }
213
+ const rhs = this.parseTerm();
214
+ return { kind: 'assign', varName: id, rhs };
215
+ }
216
+ // --- Fórmula ---
217
+ parseFormula() {
218
+ return this.parseImplies();
219
+ }
220
+ parseImplies() {
221
+ const left = this.parseOr();
222
+ if (this.tk.match('<->')) {
223
+ const right = this.parseOr();
224
+ return { kind: 'iff', left, right };
225
+ }
226
+ if (this.tk.match('->')) {
227
+ const right = this.parseImplies();
228
+ return { kind: 'implies', left, right };
229
+ }
230
+ return left;
231
+ }
232
+ parseOr() {
233
+ let left = this.parseAnd();
234
+ while (this.tk.match('|')) {
235
+ const right = this.parseAnd();
236
+ left = { kind: 'or', left, right };
237
+ }
238
+ return left;
239
+ }
240
+ parseAnd() {
241
+ let left = this.parseNot();
242
+ while (this.tk.match('&')) {
243
+ const right = this.parseNot();
244
+ left = { kind: 'and', left, right };
245
+ }
246
+ return left;
247
+ }
248
+ parseNot() {
249
+ if (this.tk.match('!')) {
250
+ const arg = this.parseNot();
251
+ return { kind: 'not', arg };
252
+ }
253
+ return this.parseAtomFormula();
254
+ }
255
+ parseAtomFormula() {
256
+ if (this.tk.matchKeyword('true'))
257
+ return { kind: 'true' };
258
+ if (this.tk.matchKeyword('false'))
259
+ return { kind: 'false' };
260
+ if (this.tk.match('[')) {
261
+ const program = this.parseProgram();
262
+ this.tk.expect(']');
263
+ const post = this.parseAtomFormula();
264
+ return { kind: 'box', program, post };
265
+ }
266
+ if (this.tk.match('<')) {
267
+ // Podría ser una comparación `<` si lo que sigue es un término;
268
+ // ya consumimos `<` aquí. Heurística: una modalidad ⟨α⟩ siempre
269
+ // contiene en algún punto `:=`, `'`, `?`, `{` o `++` antes del `>`.
270
+ // Si el remainder hasta el siguiente `>` contiene esos marcadores,
271
+ // tratamos como modalidad. Si no, retrocedemos a comparison.
272
+ const rest = this.tk.peek();
273
+ const closeIdx = rest.indexOf('>');
274
+ const inside = closeIdx >= 0 ? rest.slice(0, closeIdx) : rest;
275
+ const isModality = /:=|'|\?|\{|\+\+|\*/.test(inside);
276
+ if (isModality) {
277
+ const program = this.parseProgram();
278
+ this.tk.expect('>');
279
+ const post = this.parseAtomFormula();
280
+ return { kind: 'diamond', program, post };
281
+ }
282
+ // No es modalidad — pero ya consumimos `<`. Re-parseamos:
283
+ // armamos un atom de comparación con el lado izquierdo asumido NaN.
284
+ // Para evitar este caso, exigimos que la modalidad no se intente con
285
+ // términos puros; en este punto lanzamos error claro.
286
+ throw new Error(`'<' suelto no parece modalidad ni comparación de la forma 't1 < t2' (use paréntesis)`);
287
+ }
288
+ if (this.tk.match('(')) {
289
+ const inner = this.parseFormula();
290
+ this.tk.expect(')');
291
+ return inner;
292
+ }
293
+ return this.parseComparison();
294
+ }
295
+ parseComparison() {
296
+ const left = this.parseTerm();
297
+ const ops = [
298
+ { tok: '<=', op: '<=' },
299
+ { tok: '>=', op: '>=' },
300
+ { tok: '!=', op: '!=' },
301
+ { tok: '=', op: '=' },
302
+ { tok: '<', op: '<' },
303
+ { tok: '>', op: '>' },
304
+ ];
305
+ for (const { tok, op } of ops) {
306
+ if (this.tk.match(tok)) {
307
+ const right = this.parseTerm();
308
+ return { kind: 'comp', op, left, right };
309
+ }
310
+ }
311
+ throw new Error(`Esperaba operador de comparación tras término en pos ${this.tk.peek().slice(0, 20)}`);
312
+ }
313
+ // --- Términos ---
314
+ parseTerm() {
315
+ return this.parseAdd();
316
+ }
317
+ parseAdd() {
318
+ let left = this.parseMul();
319
+ while (true) {
320
+ if (this.tk.lookahead('+') && !this.tk.lookahead('++')) {
321
+ // Consumimos `+` sólo si NO es el inicio de `++` (choice).
322
+ this.tk.match('+');
323
+ const right = this.parseMul();
324
+ left = { kind: 'plus', left, right };
325
+ }
326
+ else if (this.tk.lookahead('-') &&
327
+ !this.tk.lookahead('->')) {
328
+ // Consumimos `-` sólo si NO es el inicio de `->` (implicación).
329
+ this.tk.match('-');
330
+ const right = this.parseMul();
331
+ left = { kind: 'minus', left, right };
332
+ }
333
+ else
334
+ break;
335
+ }
336
+ return left;
337
+ }
338
+ parseMul() {
339
+ let left = this.parsePow();
340
+ while (true) {
341
+ if (this.tk.match('*')) {
342
+ const right = this.parsePow();
343
+ left = { kind: 'times', left, right };
344
+ }
345
+ else if (this.tk.match('/')) {
346
+ const right = this.parsePow();
347
+ left = { kind: 'div', left, right };
348
+ }
349
+ else
350
+ break;
351
+ }
352
+ return left;
353
+ }
354
+ parsePow() {
355
+ const base = this.parseUnaryTerm();
356
+ if (this.tk.match('^')) {
357
+ const n = this.tk.matchNumber();
358
+ if (n === null || !Number.isInteger(n)) {
359
+ throw new Error('Exponente debe ser entero literal');
360
+ }
361
+ return { kind: 'pow', base, exp: n };
362
+ }
363
+ return base;
364
+ }
365
+ parseUnaryTerm() {
366
+ if (this.tk.match('-')) {
367
+ const arg = this.parseUnaryTerm();
368
+ return { kind: 'neg', arg };
369
+ }
370
+ const n = this.tk.matchNumber();
371
+ if (n !== null)
372
+ return { kind: 'num', value: n };
373
+ if (this.tk.match('(')) {
374
+ const inner = this.parseTerm();
375
+ this.tk.expect(')');
376
+ return inner;
377
+ }
378
+ const id = this.tk.matchIdent();
379
+ if (id)
380
+ return { kind: 'var', name: id };
381
+ throw new Error(`Esperaba término en '${this.tk.peek().slice(0, 20)}'`);
382
+ }
383
+ endOrThrow() {
384
+ if (!this.tk.eof()) {
385
+ throw new Error(`Tokens sobrantes: '${this.tk.peek().slice(0, 30)}'`);
386
+ }
387
+ }
388
+ }
389
+ /** Parsea una fórmula dL desde una cadena. Lanza Error en sintaxis inválida. */
390
+ function parseFormula(src) {
391
+ const p = new Parser(src);
392
+ const f = p.parseFormula();
393
+ p.endOrThrow();
394
+ return f;
395
+ }
396
+ /** Parsea un programa híbrido desde una cadena. */
397
+ function parseProgram(src) {
398
+ const p = new Parser(src);
399
+ const prog = p.parseProgram();
400
+ p.endOrThrow();
401
+ return prog;
402
+ }
403
+ /** Parsea un término aritmético dL. */
404
+ function parseTerm(src) {
405
+ const p = new Parser(src);
406
+ const t = p.parseTerm();
407
+ p.endOrThrow();
408
+ return t;
409
+ }
410
+ //# sourceMappingURL=parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parser.js","sourceRoot":"","sources":["../../../../src/logic/profiles/dl-hybrid/parser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ import type { LogicProfile, Formula, RunResult, Theory, Diagnostic } from '../../../types';
2
+ import type { DLFormula } from './ast';
3
+ export declare class DLHybridProfile implements LogicProfile {
4
+ name: string;
5
+ description: string;
6
+ checkWellFormed(_formula: Formula): Diagnostic[];
7
+ checkValid(formula: Formula): RunResult;
8
+ checkSatisfiable(formula: Formula): RunResult;
9
+ prove(goal: Formula, _theory: Theory, _premises?: string[]): RunResult;
10
+ derive(goal: Formula, _premises: string[], _theory: Theory): RunResult;
11
+ countermodel(formula: Formula): RunResult;
12
+ explain(formula: Formula): RunResult;
13
+ private notApplicable;
14
+ explainSystem(): string;
15
+ }
16
+ /**
17
+ * Adaptador: ejecuta `checkValid` sobre una DLFormula nativa y devuelve
18
+ * un `RunResult` ST-compatible (con witness en `output`).
19
+ */
20
+ export declare function runValidity(formula: DLFormula): RunResult;
21
+ /** Versión satisfacibilidad. */
22
+ export declare function runSatisfiability(formula: DLFormula): RunResult;
23
+ //# sourceMappingURL=profile.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"profile.d.ts","sourceRoot":"","sources":["../../../../src/logic/profiles/dl-hybrid/profile.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EACV,YAAY,EACZ,OAAO,EACP,SAAS,EACT,MAAM,EACN,UAAU,EACX,MAAM,gBAAgB,CAAC;AAExB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAevC,qBAAa,eAAgB,YAAW,YAAY;IAClD,IAAI,SAAe;IACnB,WAAW,SACsJ;IAEjK,eAAe,CAAC,QAAQ,EAAE,OAAO,GAAG,UAAU,EAAE;IAIhD,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,SAAS;IAGvC,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,SAAS;IAG7C,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS;IAGtE,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,MAAM,GAAG,SAAS;IAGtE,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,SAAS;IAGzC,OAAO,CAAC,OAAO,EAAE,OAAO,GAAG,SAAS;IASpC,OAAO,CAAC,aAAa;IAUrB,aAAa,IAAI,MAAM;CAsBxB;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,SAAS,GAAG,SAAS,CAUzD;AAED,gCAAgC;AAChC,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,SAAS,GAAG,SAAS,CAU/D"}
@@ -0,0 +1,122 @@
1
+ "use strict";
2
+ // ============================================================
3
+ // ST dL-Hybrid — Profile descriptor para registro en ST
4
+ // ============================================================
5
+ // Adaptador entre el AST nativo de dL (DLFormula) y la `LogicProfile`
6
+ // del runtime ST (basada en `Formula` clásica). Por defecto, este perfil
7
+ // se usa programáticamente con el AST nativo (parseFormula + checkValid);
8
+ // el adaptador `LogicProfile` lo expone por el registry global pero
9
+ // degrada graciosamente para fórmulas no-dL (no usa la forma estándar
10
+ // de tableau modal, sino el motor dedicado de dl-hybrid).
11
+ // ============================================================
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.DLHybridProfile = void 0;
14
+ exports.runValidity = runValidity;
15
+ exports.runSatisfiability = runSatisfiability;
16
+ const tableau_1 = require("./tableau");
17
+ const ast_1 = require("./ast");
18
+ /**
19
+ * Indicador para que ST sepa que este perfil usa AST nativo paralelo.
20
+ * Si el caller pasa una `Formula` clásica, devolvemos `unknown` con un
21
+ * mensaje informativo. El uso recomendado es vía las funciones exportadas
22
+ * en el index del perfil.
23
+ */
24
+ const UNSUPPORTED_FORMULA = {
25
+ severity: 'info',
26
+ message: 'dl-hybrid usa un AST nativo (DLFormula). Para usar este perfil, parsea con `parseFormula(src)` y usa `checkValid` directamente.',
27
+ };
28
+ class DLHybridProfile {
29
+ name = 'dl-hybrid';
30
+ description = 'Differential Dynamic Logic (Platzer) — verificación de sistemas híbridos (estados continuos + discretos) con ODEs polinomiales lineales en subset decidible.';
31
+ checkWellFormed(_formula) {
32
+ return [UNSUPPORTED_FORMULA];
33
+ }
34
+ checkValid(formula) {
35
+ return this.notApplicable(formula);
36
+ }
37
+ checkSatisfiable(formula) {
38
+ return this.notApplicable(formula);
39
+ }
40
+ prove(goal, _theory, _premises) {
41
+ return this.notApplicable(goal);
42
+ }
43
+ derive(goal, _premises, _theory) {
44
+ return this.notApplicable(goal);
45
+ }
46
+ countermodel(formula) {
47
+ return this.notApplicable(formula);
48
+ }
49
+ explain(formula) {
50
+ return {
51
+ status: 'unknown',
52
+ output: this.explainSystem(),
53
+ diagnostics: [UNSUPPORTED_FORMULA],
54
+ formula,
55
+ };
56
+ }
57
+ notApplicable(formula) {
58
+ return {
59
+ status: 'unknown',
60
+ output: 'dl-hybrid no acepta `Formula` clásica directamente. Use el API nativo: `parseFormula`, `checkValid`, etc.',
61
+ diagnostics: [UNSUPPORTED_FORMULA],
62
+ formula,
63
+ };
64
+ }
65
+ explainSystem() {
66
+ return [
67
+ 'Sistema: dL (Differential Dynamic Logic, Platzer 2008/2010)',
68
+ ' Programas híbridos:',
69
+ ' x := e asignación discreta',
70
+ ' x := * asignación no determinista',
71
+ ' ?ψ test',
72
+ ' α ; β secuencia',
73
+ ' α ++ β choice no determinista (∪)',
74
+ ' α* loop (acotado en la implementación)',
75
+ " {x' = f(x) & Q} evolución continua bajo dominio Q",
76
+ ' Modalidades:',
77
+ ' [α] φ todo trace de α termina en φ',
78
+ ' ⟨α⟩ φ existe un trace de α que termina en φ',
79
+ ' Subset decidible implementado:',
80
+ " - ODE x' = c (constante) → x(t) = x₀ + c·t",
81
+ " - ODE x' = a·x + b lineal desacoplada → cerrada exponencial",
82
+ ' - Loops acotados a N iteraciones',
83
+ ' - Derivada de Lie disponible para invariantes diferenciales',
84
+ ' Aplicaciones: control, robótica, sistemas embebidos.',
85
+ ].join('\n');
86
+ }
87
+ }
88
+ exports.DLHybridProfile = DLHybridProfile;
89
+ /**
90
+ * Adaptador: ejecuta `checkValid` sobre una DLFormula nativa y devuelve
91
+ * un `RunResult` ST-compatible (con witness en `output`).
92
+ */
93
+ function runValidity(formula) {
94
+ const res = (0, tableau_1.checkValid)(formula);
95
+ return {
96
+ status: res.status === 'valid' ? 'valid' : 'invalid',
97
+ output: res.status === 'valid'
98
+ ? `${(0, ast_1.formulaToString)(formula)} es VÁLIDA en dl-hybrid (${res.statesChecked} estados muestreados)`
99
+ : `${(0, ast_1.formulaToString)(formula)} NO es válida (contramodelo en estado ${describeState(res.witness)})`,
100
+ diagnostics: [],
101
+ };
102
+ }
103
+ /** Versión satisfacibilidad. */
104
+ function runSatisfiability(formula) {
105
+ const res = (0, tableau_1.checkSatisfiable)(formula);
106
+ return {
107
+ status: res.status === 'satisfiable' ? 'satisfiable' : 'unsatisfiable',
108
+ output: res.status === 'satisfiable'
109
+ ? `${(0, ast_1.formulaToString)(formula)} es SATISFACIBLE (${res.statesChecked} estados muestreados, testigo: ${describeState(res.witness)})`
110
+ : `${(0, ast_1.formulaToString)(formula)} es INSATISFACIBLE en la malla muestreada (${res.statesChecked} estados)`,
111
+ diagnostics: [],
112
+ };
113
+ }
114
+ function describeState(s) {
115
+ if (!s)
116
+ return '∅';
117
+ const pairs = [];
118
+ for (const [k, v] of s.entries())
119
+ pairs.push(`${k}=${v}`);
120
+ return `{${pairs.join(', ')}}`;
121
+ }
122
+ //# sourceMappingURL=profile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"profile.js","sourceRoot":"","sources":["../../../../src/logic/profiles/dl-hybrid/profile.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import type { DLTerm, DLFormula, State, CompOp } from './ast';
2
+ /** Evalúa un término sobre un estado concreto. */
3
+ export declare function evalTerm(t: DLTerm, s: State): number;
4
+ /** Evalúa una comparación con tolerancia. */
5
+ export declare function evalComp(op: CompOp, a: number, b: number): boolean;
6
+ /**
7
+ * Evalúa una fórmula proposicional / aritmética (sin modalidades) sobre
8
+ * un estado concreto. Para fórmulas con [α]/⟨α⟩ se requiere el motor de
9
+ * tableau (`tableau.ts`).
10
+ */
11
+ export declare function evalQuantifierFree(f: DLFormula, s: State): boolean;
12
+ /** Substitución de un término por otro dentro de un término. */
13
+ export declare function substTerm(t: DLTerm, varName: string, replacement: DLTerm): DLTerm;
14
+ /** Substitución dentro de una fórmula (sólo a través de comparaciones). */
15
+ export declare function substFormula(f: DLFormula, varName: string, replacement: DLTerm): DLFormula;
16
+ //# sourceMappingURL=semantics.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"semantics.d.ts","sourceRoot":"","sources":["../../../../src/logic/profiles/dl-hybrid/semantics.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAI9D,kDAAkD;AAClD,wBAAgB,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,GAAG,MAAM,CAwBpD;AAED,6CAA6C;AAC7C,wBAAgB,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAgBlE;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,KAAK,GAAG,OAAO,CAsBlE;AAED,gEAAgE;AAChE,wBAAgB,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAmCjF;AAED,2EAA2E;AAC3E,wBAAgB,YAAY,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,SAAS,CA6C1F"}