@stevenvo780/st-lang 4.2.0 → 4.3.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 (293) hide show
  1. package/dist/index.d.ts +4 -0
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +36 -1
  4. package/dist/index.js.map +1 -1
  5. package/dist/lambda-calc/church.d.ts +8 -0
  6. package/dist/lambda-calc/church.d.ts.map +1 -0
  7. package/dist/lambda-calc/church.js +67 -0
  8. package/dist/lambda-calc/church.js.map +1 -0
  9. package/dist/lambda-calc/combinators.d.ts +8 -0
  10. package/dist/lambda-calc/combinators.d.ts.map +1 -0
  11. package/dist/lambda-calc/combinators.js +24 -0
  12. package/dist/lambda-calc/combinators.js.map +1 -0
  13. package/dist/lambda-calc/index.d.ts +8 -0
  14. package/dist/lambda-calc/index.d.ts.map +1 -0
  15. package/dist/lambda-calc/index.js +48 -0
  16. package/dist/lambda-calc/index.js.map +1 -0
  17. package/dist/lambda-calc/reduce.d.ts +18 -0
  18. package/dist/lambda-calc/reduce.d.ts.map +1 -0
  19. package/dist/lambda-calc/reduce.js +174 -0
  20. package/dist/lambda-calc/reduce.js.map +1 -0
  21. package/dist/lambda-calc/substitution.d.ts +6 -0
  22. package/dist/lambda-calc/substitution.d.ts.map +1 -0
  23. package/dist/lambda-calc/substitution.js +120 -0
  24. package/dist/lambda-calc/substitution.js.map +1 -0
  25. package/dist/lambda-calc/types.d.ts +19 -0
  26. package/dist/lambda-calc/types.d.ts.map +1 -0
  27. package/dist/lambda-calc/types.js +72 -0
  28. package/dist/lambda-calc/types.js.map +1 -0
  29. package/dist/profiles/intuitionistic-nj/formula.d.ts +19 -0
  30. package/dist/profiles/intuitionistic-nj/formula.d.ts.map +1 -0
  31. package/dist/profiles/intuitionistic-nj/formula.js +99 -0
  32. package/dist/profiles/intuitionistic-nj/formula.js.map +1 -0
  33. package/dist/profiles/intuitionistic-nj/index.d.ts +5 -0
  34. package/dist/profiles/intuitionistic-nj/index.d.ts.map +1 -0
  35. package/dist/profiles/intuitionistic-nj/index.js +24 -0
  36. package/dist/profiles/intuitionistic-nj/index.js.map +1 -0
  37. package/dist/profiles/intuitionistic-nj/kripke.d.ts +17 -0
  38. package/dist/profiles/intuitionistic-nj/kripke.d.ts.map +1 -0
  39. package/dist/profiles/intuitionistic-nj/kripke.js +206 -0
  40. package/dist/profiles/intuitionistic-nj/kripke.js.map +1 -0
  41. package/dist/profiles/intuitionistic-nj/prover.d.ts +13 -0
  42. package/dist/profiles/intuitionistic-nj/prover.d.ts.map +1 -0
  43. package/dist/profiles/intuitionistic-nj/prover.js +418 -0
  44. package/dist/profiles/intuitionistic-nj/prover.js.map +1 -0
  45. package/dist/profiles/intuitionistic-nj/types.d.ts +55 -0
  46. package/dist/profiles/intuitionistic-nj/types.d.ts.map +1 -0
  47. package/dist/profiles/intuitionistic-nj/types.js +21 -0
  48. package/dist/profiles/intuitionistic-nj/types.js.map +1 -0
  49. package/dist/profiles/many-valued/index.d.ts +39 -0
  50. package/dist/profiles/many-valued/index.d.ts.map +1 -0
  51. package/dist/profiles/many-valued/index.js +250 -0
  52. package/dist/profiles/many-valued/index.js.map +1 -0
  53. package/dist/profiles/modal-frame-axioms/formula.d.ts +23 -0
  54. package/dist/profiles/modal-frame-axioms/formula.d.ts.map +1 -0
  55. package/dist/profiles/modal-frame-axioms/formula.js +158 -0
  56. package/dist/profiles/modal-frame-axioms/formula.js.map +1 -0
  57. package/dist/profiles/modal-frame-axioms/index.d.ts +6 -0
  58. package/dist/profiles/modal-frame-axioms/index.d.ts.map +1 -0
  59. package/dist/profiles/modal-frame-axioms/index.js +41 -0
  60. package/dist/profiles/modal-frame-axioms/index.js.map +1 -0
  61. package/dist/profiles/modal-frame-axioms/systems.d.ts +29 -0
  62. package/dist/profiles/modal-frame-axioms/systems.d.ts.map +1 -0
  63. package/dist/profiles/modal-frame-axioms/systems.js +96 -0
  64. package/dist/profiles/modal-frame-axioms/systems.js.map +1 -0
  65. package/dist/profiles/modal-frame-axioms/tableau.d.ts +12 -0
  66. package/dist/profiles/modal-frame-axioms/tableau.d.ts.map +1 -0
  67. package/dist/profiles/modal-frame-axioms/tableau.js +299 -0
  68. package/dist/profiles/modal-frame-axioms/tableau.js.map +1 -0
  69. package/dist/profiles/modal-frame-axioms/types.d.ts +61 -0
  70. package/dist/profiles/modal-frame-axioms/types.d.ts.map +1 -0
  71. package/dist/profiles/modal-frame-axioms/types.js +27 -0
  72. package/dist/profiles/modal-frame-axioms/types.js.map +1 -0
  73. package/dist/profiles/substructural/index.d.ts +4 -0
  74. package/dist/profiles/substructural/index.d.ts.map +1 -0
  75. package/dist/profiles/substructural/index.js +22 -0
  76. package/dist/profiles/substructural/index.js.map +1 -0
  77. package/dist/profiles/substructural/prover.d.ts +13 -0
  78. package/dist/profiles/substructural/prover.d.ts.map +1 -0
  79. package/dist/profiles/substructural/prover.js +481 -0
  80. package/dist/profiles/substructural/prover.js.map +1 -0
  81. package/dist/profiles/substructural/types.d.ts +72 -0
  82. package/dist/profiles/substructural/types.d.ts.map +1 -0
  83. package/dist/profiles/substructural/types.js +27 -0
  84. package/dist/profiles/substructural/types.js.map +1 -0
  85. package/dist/runtime/abduction/entails.d.ts +21 -0
  86. package/dist/runtime/abduction/entails.d.ts.map +1 -0
  87. package/dist/runtime/abduction/entails.js +308 -0
  88. package/dist/runtime/abduction/entails.js.map +1 -0
  89. package/dist/runtime/abduction/find.d.ts +18 -0
  90. package/dist/runtime/abduction/find.d.ts.map +1 -0
  91. package/dist/runtime/abduction/find.js +202 -0
  92. package/dist/runtime/abduction/find.js.map +1 -0
  93. package/dist/runtime/abduction/index.d.ts +4 -0
  94. package/dist/runtime/abduction/index.d.ts.map +1 -0
  95. package/dist/runtime/abduction/index.js +26 -0
  96. package/dist/runtime/abduction/index.js.map +1 -0
  97. package/dist/runtime/abduction/types.d.ts +78 -0
  98. package/dist/runtime/abduction/types.d.ts.map +1 -0
  99. package/dist/runtime/abduction/types.js +23 -0
  100. package/dist/runtime/abduction/types.js.map +1 -0
  101. package/dist/runtime/bayesian/factor.d.ts +22 -0
  102. package/dist/runtime/bayesian/factor.d.ts.map +1 -0
  103. package/dist/runtime/bayesian/factor.js +249 -0
  104. package/dist/runtime/bayesian/factor.js.map +1 -0
  105. package/dist/runtime/bayesian/index.d.ts +3 -0
  106. package/dist/runtime/bayesian/index.d.ts.map +1 -0
  107. package/dist/runtime/bayesian/index.js +25 -0
  108. package/dist/runtime/bayesian/index.js.map +1 -0
  109. package/dist/runtime/bayesian/inference.d.ts +6 -0
  110. package/dist/runtime/bayesian/inference.d.ts.map +1 -0
  111. package/dist/runtime/bayesian/inference.js +260 -0
  112. package/dist/runtime/bayesian/inference.js.map +1 -0
  113. package/dist/runtime/bayesian/types.d.ts +19 -0
  114. package/dist/runtime/bayesian/types.d.ts.map +1 -0
  115. package/dist/runtime/bayesian/types.js +9 -0
  116. package/dist/runtime/bayesian/types.js.map +1 -0
  117. package/dist/runtime/bisimulation/index.d.ts +4 -0
  118. package/dist/runtime/bisimulation/index.d.ts.map +1 -0
  119. package/dist/runtime/bisimulation/index.js +21 -0
  120. package/dist/runtime/bisimulation/index.js.map +1 -0
  121. package/dist/runtime/bisimulation/operations.d.ts +40 -0
  122. package/dist/runtime/bisimulation/operations.d.ts.map +1 -0
  123. package/dist/runtime/bisimulation/operations.js +219 -0
  124. package/dist/runtime/bisimulation/operations.js.map +1 -0
  125. package/dist/runtime/bisimulation/paige-tarjan.d.ts +8 -0
  126. package/dist/runtime/bisimulation/paige-tarjan.d.ts.map +1 -0
  127. package/dist/runtime/bisimulation/paige-tarjan.js +199 -0
  128. package/dist/runtime/bisimulation/paige-tarjan.js.map +1 -0
  129. package/dist/runtime/bisimulation/types.d.ts +26 -0
  130. package/dist/runtime/bisimulation/types.d.ts.map +1 -0
  131. package/dist/runtime/bisimulation/types.js +22 -0
  132. package/dist/runtime/bisimulation/types.js.map +1 -0
  133. package/dist/runtime/fca/context.d.ts +46 -0
  134. package/dist/runtime/fca/context.d.ts.map +1 -0
  135. package/dist/runtime/fca/context.js +155 -0
  136. package/dist/runtime/fca/context.js.map +1 -0
  137. package/dist/runtime/fca/implications.d.ts +10 -0
  138. package/dist/runtime/fca/implications.d.ts.map +1 -0
  139. package/dist/runtime/fca/implications.js +33 -0
  140. package/dist/runtime/fca/implications.js.map +1 -0
  141. package/dist/runtime/fca/index.d.ts +6 -0
  142. package/dist/runtime/fca/index.d.ts.map +1 -0
  143. package/dist/runtime/fca/index.js +39 -0
  144. package/dist/runtime/fca/index.js.map +1 -0
  145. package/dist/runtime/fca/lattice.d.ts +10 -0
  146. package/dist/runtime/fca/lattice.d.ts.map +1 -0
  147. package/dist/runtime/fca/lattice.js +86 -0
  148. package/dist/runtime/fca/lattice.js.map +1 -0
  149. package/dist/runtime/fca/next-closure.d.ts +12 -0
  150. package/dist/runtime/fca/next-closure.d.ts.map +1 -0
  151. package/dist/runtime/fca/next-closure.js +99 -0
  152. package/dist/runtime/fca/next-closure.js.map +1 -0
  153. package/dist/runtime/fca/types.d.ts +31 -0
  154. package/dist/runtime/fca/types.d.ts.map +1 -0
  155. package/dist/runtime/fca/types.js +30 -0
  156. package/dist/runtime/fca/types.js.map +1 -0
  157. package/dist/runtime/proof-minify/index.d.ts +3 -0
  158. package/dist/runtime/proof-minify/index.d.ts.map +1 -0
  159. package/dist/runtime/proof-minify/index.js +13 -0
  160. package/dist/runtime/proof-minify/index.js.map +1 -0
  161. package/dist/runtime/proof-minify/minify.d.ts +13 -0
  162. package/dist/runtime/proof-minify/minify.d.ts.map +1 -0
  163. package/dist/runtime/proof-minify/minify.js +540 -0
  164. package/dist/runtime/proof-minify/minify.js.map +1 -0
  165. package/dist/runtime/proof-minify/types.d.ts +89 -0
  166. package/dist/runtime/proof-minify/types.d.ts.map +1 -0
  167. package/dist/runtime/proof-minify/types.js +16 -0
  168. package/dist/runtime/proof-minify/types.js.map +1 -0
  169. package/dist/runtime/symbolic-diff/constructors.d.ts +16 -0
  170. package/dist/runtime/symbolic-diff/constructors.d.ts.map +1 -0
  171. package/dist/runtime/symbolic-diff/constructors.js +75 -0
  172. package/dist/runtime/symbolic-diff/constructors.js.map +1 -0
  173. package/dist/runtime/symbolic-diff/differentiate.d.ts +22 -0
  174. package/dist/runtime/symbolic-diff/differentiate.d.ts.map +1 -0
  175. package/dist/runtime/symbolic-diff/differentiate.js +107 -0
  176. package/dist/runtime/symbolic-diff/differentiate.js.map +1 -0
  177. package/dist/runtime/symbolic-diff/evaluate.d.ts +3 -0
  178. package/dist/runtime/symbolic-diff/evaluate.d.ts.map +1 -0
  179. package/dist/runtime/symbolic-diff/evaluate.js +47 -0
  180. package/dist/runtime/symbolic-diff/evaluate.js.map +1 -0
  181. package/dist/runtime/symbolic-diff/index.d.ts +9 -0
  182. package/dist/runtime/symbolic-diff/index.d.ts.map +1 -0
  183. package/dist/runtime/symbolic-diff/index.js +34 -0
  184. package/dist/runtime/symbolic-diff/index.js.map +1 -0
  185. package/dist/runtime/symbolic-diff/parse.d.ts +16 -0
  186. package/dist/runtime/symbolic-diff/parse.d.ts.map +1 -0
  187. package/dist/runtime/symbolic-diff/parse.js +206 -0
  188. package/dist/runtime/symbolic-diff/parse.js.map +1 -0
  189. package/dist/runtime/symbolic-diff/simplify.d.ts +11 -0
  190. package/dist/runtime/symbolic-diff/simplify.d.ts.map +1 -0
  191. package/dist/runtime/symbolic-diff/simplify.js +214 -0
  192. package/dist/runtime/symbolic-diff/simplify.js.map +1 -0
  193. package/dist/runtime/symbolic-diff/stringify.d.ts +3 -0
  194. package/dist/runtime/symbolic-diff/stringify.d.ts.map +1 -0
  195. package/dist/runtime/symbolic-diff/stringify.js +69 -0
  196. package/dist/runtime/symbolic-diff/stringify.js.map +1 -0
  197. package/dist/runtime/symbolic-diff/types.d.ts +35 -0
  198. package/dist/runtime/symbolic-diff/types.d.ts.map +1 -0
  199. package/dist/runtime/symbolic-diff/types.js +9 -0
  200. package/dist/runtime/symbolic-diff/types.js.map +1 -0
  201. package/dist/runtime/term-rewriting/critical-pairs.d.ts +38 -0
  202. package/dist/runtime/term-rewriting/critical-pairs.d.ts.map +1 -0
  203. package/dist/runtime/term-rewriting/critical-pairs.js +109 -0
  204. package/dist/runtime/term-rewriting/critical-pairs.js.map +1 -0
  205. package/dist/runtime/term-rewriting/index.d.ts +9 -0
  206. package/dist/runtime/term-rewriting/index.d.ts.map +1 -0
  207. package/dist/runtime/term-rewriting/index.js +38 -0
  208. package/dist/runtime/term-rewriting/index.js.map +1 -0
  209. package/dist/runtime/term-rewriting/knuth-bendix.d.ts +29 -0
  210. package/dist/runtime/term-rewriting/knuth-bendix.d.ts.map +1 -0
  211. package/dist/runtime/term-rewriting/knuth-bendix.js +196 -0
  212. package/dist/runtime/term-rewriting/knuth-bendix.js.map +1 -0
  213. package/dist/runtime/term-rewriting/lpo.d.ts +17 -0
  214. package/dist/runtime/term-rewriting/lpo.d.ts.map +1 -0
  215. package/dist/runtime/term-rewriting/lpo.js +158 -0
  216. package/dist/runtime/term-rewriting/lpo.js.map +1 -0
  217. package/dist/runtime/term-rewriting/rewrite.d.ts +44 -0
  218. package/dist/runtime/term-rewriting/rewrite.d.ts.map +1 -0
  219. package/dist/runtime/term-rewriting/rewrite.js +189 -0
  220. package/dist/runtime/term-rewriting/rewrite.js.map +1 -0
  221. package/dist/runtime/term-rewriting/term-utils.d.ts +64 -0
  222. package/dist/runtime/term-rewriting/term-utils.d.ts.map +1 -0
  223. package/dist/runtime/term-rewriting/term-utils.js +360 -0
  224. package/dist/runtime/term-rewriting/term-utils.js.map +1 -0
  225. package/dist/runtime/term-rewriting/types.d.ts +66 -0
  226. package/dist/runtime/term-rewriting/types.d.ts.map +1 -0
  227. package/dist/runtime/term-rewriting/types.js +21 -0
  228. package/dist/runtime/term-rewriting/types.js.map +1 -0
  229. package/dist/tests/abduction/abduction.test.d.ts +2 -0
  230. package/dist/tests/abduction/abduction.test.d.ts.map +1 -0
  231. package/dist/tests/abduction/abduction.test.js +380 -0
  232. package/dist/tests/abduction/abduction.test.js.map +1 -0
  233. package/dist/tests/bayesian/bayesian.test.d.ts +2 -0
  234. package/dist/tests/bayesian/bayesian.test.d.ts.map +1 -0
  235. package/dist/tests/bayesian/bayesian.test.js +328 -0
  236. package/dist/tests/bayesian/bayesian.test.js.map +1 -0
  237. package/dist/tests/bisimulation/paige-tarjan.test.d.ts +2 -0
  238. package/dist/tests/bisimulation/paige-tarjan.test.d.ts.map +1 -0
  239. package/dist/tests/bisimulation/paige-tarjan.test.js +254 -0
  240. package/dist/tests/bisimulation/paige-tarjan.test.js.map +1 -0
  241. package/dist/tests/fca/fca.test.d.ts +2 -0
  242. package/dist/tests/fca/fca.test.d.ts.map +1 -0
  243. package/dist/tests/fca/fca.test.js +317 -0
  244. package/dist/tests/fca/fca.test.js.map +1 -0
  245. package/dist/tests/intuitionistic-nj/nj.test.d.ts +2 -0
  246. package/dist/tests/intuitionistic-nj/nj.test.d.ts.map +1 -0
  247. package/dist/tests/intuitionistic-nj/nj.test.js +216 -0
  248. package/dist/tests/intuitionistic-nj/nj.test.js.map +1 -0
  249. package/dist/tests/lambda-calc/lambda-calc.test.d.ts +2 -0
  250. package/dist/tests/lambda-calc/lambda-calc.test.d.ts.map +1 -0
  251. package/dist/tests/lambda-calc/lambda-calc.test.js +164 -0
  252. package/dist/tests/lambda-calc/lambda-calc.test.js.map +1 -0
  253. package/dist/tests/many-valued/many-valued.test.d.ts +2 -0
  254. package/dist/tests/many-valued/many-valued.test.d.ts.map +1 -0
  255. package/dist/tests/many-valued/many-valued.test.js +150 -0
  256. package/dist/tests/many-valued/many-valued.test.js.map +1 -0
  257. package/dist/tests/modal-frame-axioms/frame-axioms.test.d.ts +2 -0
  258. package/dist/tests/modal-frame-axioms/frame-axioms.test.d.ts.map +1 -0
  259. package/dist/tests/modal-frame-axioms/frame-axioms.test.js +236 -0
  260. package/dist/tests/modal-frame-axioms/frame-axioms.test.js.map +1 -0
  261. package/dist/tests/proof-minify/minify.test.d.ts +2 -0
  262. package/dist/tests/proof-minify/minify.test.d.ts.map +1 -0
  263. package/dist/tests/proof-minify/minify.test.js +281 -0
  264. package/dist/tests/proof-minify/minify.test.js.map +1 -0
  265. package/dist/tests/substructural/prover.test.d.ts +2 -0
  266. package/dist/tests/substructural/prover.test.d.ts.map +1 -0
  267. package/dist/tests/substructural/prover.test.js +271 -0
  268. package/dist/tests/substructural/prover.test.js.map +1 -0
  269. package/dist/tests/symbolic-diff/symbolic-diff.test.d.ts +2 -0
  270. package/dist/tests/symbolic-diff/symbolic-diff.test.d.ts.map +1 -0
  271. package/dist/tests/symbolic-diff/symbolic-diff.test.js +278 -0
  272. package/dist/tests/symbolic-diff/symbolic-diff.test.js.map +1 -0
  273. package/dist/tests/term-rewriting/critical-pairs.test.d.ts +2 -0
  274. package/dist/tests/term-rewriting/critical-pairs.test.d.ts.map +1 -0
  275. package/dist/tests/term-rewriting/critical-pairs.test.js +34 -0
  276. package/dist/tests/term-rewriting/critical-pairs.test.js.map +1 -0
  277. package/dist/tests/term-rewriting/knuth-bendix.test.d.ts +2 -0
  278. package/dist/tests/term-rewriting/knuth-bendix.test.d.ts.map +1 -0
  279. package/dist/tests/term-rewriting/knuth-bendix.test.js +94 -0
  280. package/dist/tests/term-rewriting/knuth-bendix.test.js.map +1 -0
  281. package/dist/tests/term-rewriting/lpo.test.d.ts +2 -0
  282. package/dist/tests/term-rewriting/lpo.test.d.ts.map +1 -0
  283. package/dist/tests/term-rewriting/lpo.test.js +57 -0
  284. package/dist/tests/term-rewriting/lpo.test.js.map +1 -0
  285. package/dist/tests/term-rewriting/rewrite.test.d.ts +2 -0
  286. package/dist/tests/term-rewriting/rewrite.test.d.ts.map +1 -0
  287. package/dist/tests/term-rewriting/rewrite.test.js +56 -0
  288. package/dist/tests/term-rewriting/rewrite.test.js.map +1 -0
  289. package/dist/tests/term-rewriting/term-utils.test.d.ts +2 -0
  290. package/dist/tests/term-rewriting/term-utils.test.d.ts.map +1 -0
  291. package/dist/tests/term-rewriting/term-utils.test.js +58 -0
  292. package/dist/tests/term-rewriting/term-utils.test.js.map +1 -0
  293. package/package.json +1 -1
@@ -0,0 +1,308 @@
1
+ "use strict";
2
+ // ============================================================
3
+ // ST Abduction — Oráculo de entailment por defecto
4
+ // ============================================================
5
+ //
6
+ // Implementación de entailment por forward-chaining sobre un
7
+ // fragmento Horn con unificación simple:
8
+ //
9
+ // Sintaxis soportada:
10
+ // - Átomos: `p`, `bird(tweety)`, `parent(alice, bob)`
11
+ // - Reglas: `A → B` (también acepta `->`)
12
+ // - Reglas conjuntivas: `A ∧ B → C` (también `&&`, `and`, `,`)
13
+ // - Negación de conclusión: `A → ¬B` (también `~B`, `!B`)
14
+ //
15
+ // Variables: identificadores que empiezan con letra minúscula y
16
+ // están dentro de argumentos de un predicado son variables
17
+ // universalmente cuantificadas (estilo Prolog implícito).
18
+ // Constantes: empiezan con mayúscula o son nombres entre comillas;
19
+ // los demás identificadores se tratan como variables si están
20
+ // dentro de un predicado.
21
+ //
22
+ // Por convención de los tests del usuario, `bird(x)` tiene `x` como
23
+ // variable y `bird(tweety)` tiene `tweety` como constante: usamos
24
+ // un set de "variable names" configurable, default = nombres de
25
+ // una sola letra ASCII minúscula (`x`, `y`, `z`, `u`, `v`, `w`).
26
+ //
27
+ // Limitaciones consciente: no es un demostrador FOL completo. Es
28
+ // suficiente para los casos de abducción típicos (diagnóstico,
29
+ // Horn-like). Para fragmentos más ricos, pasar un `EntailmentOracle`
30
+ // custom.
31
+ Object.defineProperty(exports, "__esModule", { value: true });
32
+ exports.defaultEntails = defaultEntails;
33
+ exports.defaultConsistent = defaultConsistent;
34
+ // Reservamos un set chico de variable-names canónicas. Para casos
35
+ // que necesiten más, pasar un EntailmentOracle propio.
36
+ const DEFAULT_VARS = new Set(['x', 'y', 'z', 'u', 'v', 'w']);
37
+ function tokenizeArgs(s) {
38
+ const out = [];
39
+ let depth = 0;
40
+ let cur = '';
41
+ for (const ch of s) {
42
+ if (ch === '(') {
43
+ depth++;
44
+ cur += ch;
45
+ }
46
+ else if (ch === ')') {
47
+ depth--;
48
+ cur += ch;
49
+ }
50
+ else if (ch === ',' && depth === 0) {
51
+ out.push(cur.trim());
52
+ cur = '';
53
+ }
54
+ else {
55
+ cur += ch;
56
+ }
57
+ }
58
+ if (cur.trim().length > 0)
59
+ out.push(cur.trim());
60
+ return out;
61
+ }
62
+ function parseAtom(rawIn) {
63
+ let raw = rawIn.trim();
64
+ let negated = false;
65
+ while (raw.startsWith('¬') || raw.startsWith('~') || raw.startsWith('!')) {
66
+ negated = !negated;
67
+ raw = raw.slice(1).trim();
68
+ }
69
+ const lp = raw.indexOf('(');
70
+ if (lp === -1) {
71
+ return { predicate: raw, args: [], negated };
72
+ }
73
+ const rp = raw.lastIndexOf(')');
74
+ if (rp === -1 || rp < lp) {
75
+ return { predicate: raw, args: [], negated };
76
+ }
77
+ const predicate = raw.slice(0, lp).trim();
78
+ const argsRaw = raw.slice(lp + 1, rp);
79
+ const args = tokenizeArgs(argsRaw);
80
+ return { predicate, args, negated };
81
+ }
82
+ function splitImplication(formula) {
83
+ // Soportar → (→), -> y =>.
84
+ const arrows = ['→', '->', '=>'];
85
+ for (const arr of arrows) {
86
+ const idx = formula.indexOf(arr);
87
+ if (idx >= 0) {
88
+ return {
89
+ lhs: formula.slice(0, idx).trim(),
90
+ rhs: formula.slice(idx + arr.length).trim(),
91
+ };
92
+ }
93
+ }
94
+ return null;
95
+ }
96
+ function splitConjunction(lhs) {
97
+ // Soportar ∧, &&, ` and ` (con espacios), y ',' (a tope).
98
+ // Procesamos a profundidad-0 para no romper args(a, b).
99
+ const seps = ['∧', '&&'];
100
+ for (const s of seps) {
101
+ if (lhs.includes(s)) {
102
+ return lhs
103
+ .split(s)
104
+ .map((p) => p.trim())
105
+ .filter((p) => p.length > 0);
106
+ }
107
+ }
108
+ // ' and ' como separador case-insensitive.
109
+ const andRegex = /\s+and\s+/i;
110
+ if (andRegex.test(lhs)) {
111
+ return lhs
112
+ .split(andRegex)
113
+ .map((p) => p.trim())
114
+ .filter((p) => p.length > 0);
115
+ }
116
+ // ',' a profundidad 0 (no dentro de args(...)).
117
+ const parts = [];
118
+ let depth = 0;
119
+ let cur = '';
120
+ for (const ch of lhs) {
121
+ if (ch === '(') {
122
+ depth++;
123
+ cur += ch;
124
+ }
125
+ else if (ch === ')') {
126
+ depth--;
127
+ cur += ch;
128
+ }
129
+ else if (ch === ',' && depth === 0) {
130
+ parts.push(cur.trim());
131
+ cur = '';
132
+ }
133
+ else {
134
+ cur += ch;
135
+ }
136
+ }
137
+ if (cur.trim().length > 0)
138
+ parts.push(cur.trim());
139
+ return parts.filter((p) => p.length > 0);
140
+ }
141
+ function parseFormula(formula) {
142
+ const imp = splitImplication(formula);
143
+ if (imp) {
144
+ const premises = splitConjunction(imp.lhs).map(parseAtom);
145
+ const conclusion = parseAtom(imp.rhs);
146
+ return { premises, conclusion };
147
+ }
148
+ return { premises: [], conclusion: parseAtom(formula) };
149
+ }
150
+ function isVariable(term, varNames) {
151
+ return varNames.has(term);
152
+ }
153
+ function atomKey(a) {
154
+ const sign = a.negated ? '¬' : '';
155
+ if (a.args.length === 0)
156
+ return `${sign}${a.predicate}`;
157
+ return `${sign}${a.predicate}(${a.args.join(',')})`;
158
+ }
159
+ /** Unifica `pattern` (puede tener vars) con `ground` (sin vars).
160
+ * Retorna mapa var→constante o null si falla. Asume ground sin vars. */
161
+ function unify(pattern, ground, varNames, subst) {
162
+ if (pattern.predicate !== ground.predicate)
163
+ return null;
164
+ if (pattern.negated !== ground.negated)
165
+ return null;
166
+ if (pattern.args.length !== ground.args.length)
167
+ return null;
168
+ const next = new Map(subst);
169
+ for (let i = 0; i < pattern.args.length; i++) {
170
+ const pa = pattern.args[i];
171
+ const ga = ground.args[i];
172
+ if (pa === undefined || ga === undefined)
173
+ return null;
174
+ if (isVariable(pa, varNames)) {
175
+ const bound = next.get(pa);
176
+ if (bound !== undefined) {
177
+ if (bound !== ga)
178
+ return null;
179
+ }
180
+ else {
181
+ next.set(pa, ga);
182
+ }
183
+ }
184
+ else if (pa !== ga) {
185
+ return null;
186
+ }
187
+ }
188
+ return next;
189
+ }
190
+ function applySubst(a, subst) {
191
+ return {
192
+ predicate: a.predicate,
193
+ args: a.args.map((arg) => subst.get(arg) ?? arg),
194
+ negated: a.negated,
195
+ };
196
+ }
197
+ function isGround(a, varNames) {
198
+ return a.args.every((arg) => !isVariable(arg, varNames));
199
+ }
200
+ /** Forward-chaining: deriva el cierre de hechos a partir de premisas. */
201
+ function forwardChain(premises, varNames, maxIterations = 1000) {
202
+ const parsed = premises.map(parseFormula);
203
+ const facts = new Set();
204
+ const rules = [];
205
+ for (const p of parsed) {
206
+ if (p.premises.length === 0 && isGround(p.conclusion, varNames)) {
207
+ facts.add(atomKey(p.conclusion));
208
+ }
209
+ else {
210
+ rules.push(p);
211
+ }
212
+ }
213
+ // Check trivial inconsistency en facts (p y ¬p ambos hechos).
214
+ for (const f of facts) {
215
+ if (f.startsWith('¬')) {
216
+ if (facts.has(f.slice(1)))
217
+ return { facts, inconsistent: true };
218
+ }
219
+ else {
220
+ if (facts.has(`¬${f}`))
221
+ return { facts, inconsistent: true };
222
+ }
223
+ }
224
+ let changed = true;
225
+ let iter = 0;
226
+ while (changed && iter < maxIterations) {
227
+ changed = false;
228
+ iter++;
229
+ for (const rule of rules) {
230
+ // Generar todas las substituciones que satisfacen las premisas.
231
+ const substitutions = matchPremises(rule.premises, facts, varNames);
232
+ for (const subst of substitutions) {
233
+ const conc = applySubst(rule.conclusion, subst);
234
+ if (!isGround(conc, varNames))
235
+ continue;
236
+ const key = atomKey(conc);
237
+ if (!facts.has(key)) {
238
+ // ¿Crea inconsistencia con un hecho existente?
239
+ const opposite = conc.negated ? atomKey({ ...conc, negated: false }) : `¬${key}`;
240
+ if (facts.has(opposite)) {
241
+ facts.add(key);
242
+ return { facts, inconsistent: true };
243
+ }
244
+ facts.add(key);
245
+ changed = true;
246
+ }
247
+ }
248
+ }
249
+ }
250
+ return { facts, inconsistent: false };
251
+ }
252
+ /** Devuelve todas las substituciones que satisfacen una lista de premisas
253
+ * contra el conjunto actual de hechos (ground). */
254
+ function matchPremises(premises, facts, varNames) {
255
+ if (premises.length === 0)
256
+ return [new Map()];
257
+ // Parse facts a atoms ground una sola vez.
258
+ const groundAtoms = [];
259
+ for (const f of facts)
260
+ groundAtoms.push(parseAtom(f));
261
+ let cur = [new Map()];
262
+ for (const prem of premises) {
263
+ const next = [];
264
+ for (const subst of cur) {
265
+ const inst = applySubst(prem, subst);
266
+ for (const ga of groundAtoms) {
267
+ const u = unify(inst, ga, varNames, subst);
268
+ if (u !== null)
269
+ next.push(u);
270
+ }
271
+ }
272
+ cur = next;
273
+ if (cur.length === 0)
274
+ return [];
275
+ }
276
+ return cur;
277
+ }
278
+ /**
279
+ * Oráculo de entailment por defecto. Forward-chaining sobre Horn-like.
280
+ *
281
+ * Devuelve `true` sii `target` (ground) es derivable de `premises`.
282
+ * Si `target` contiene variables se reporta `false` (no soportamos
283
+ * ∃-targets aquí; usar custom oracle).
284
+ */
285
+ function defaultEntails(opts = {}) {
286
+ const varNames = opts.variableNames ?? DEFAULT_VARS;
287
+ const maxIter = opts.maxIterations ?? 1000;
288
+ return (premises, target) => {
289
+ const { facts } = forwardChain(premises, varNames, maxIter);
290
+ const targetAtom = parseAtom(target);
291
+ if (!isGround(targetAtom, varNames))
292
+ return false;
293
+ return facts.has(atomKey(targetAtom));
294
+ };
295
+ }
296
+ /**
297
+ * Oráculo de consistencia por defecto. Considera inconsistente sii
298
+ * el forward-chaining deriva un par {p, ¬p}.
299
+ */
300
+ function defaultConsistent(opts = {}) {
301
+ const varNames = opts.variableNames ?? DEFAULT_VARS;
302
+ const maxIter = opts.maxIterations ?? 1000;
303
+ return (premises) => {
304
+ const { inconsistent } = forwardChain(premises, varNames, maxIter);
305
+ return !inconsistent;
306
+ };
307
+ }
308
+ //# sourceMappingURL=entails.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entails.js","sourceRoot":"","sources":["../../../src/runtime/abduction/entails.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import type { AbductionOptions, AbductionProblem, Explanation } from './types';
2
+ /**
3
+ * Encuentra todas las explicaciones de un problema abductivo.
4
+ *
5
+ * - Enumera subsets de abducibles en orden creciente de tamaño.
6
+ * - Filtra los inconsistentes y los que no implican la observación.
7
+ * - Calcula minimalidad por inclusión (parsimony) post-hoc.
8
+ * - Aplica el filtro `preferred` para el output final.
9
+ */
10
+ export declare function findExplanations(problem: AbductionProblem, opts?: AbductionOptions): Explanation[];
11
+ /**
12
+ * Devuelve UNA explicación: la "mejor" según `preferred`. Si hay
13
+ * empate, la primera en orden lex (consistente y reproducible).
14
+ *
15
+ * Devuelve `null` si no hay explicación posible.
16
+ */
17
+ export declare function bestExplanation(problem: AbductionProblem, opts?: AbductionOptions): Explanation | null;
18
+ //# sourceMappingURL=find.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"find.d.ts","sourceRoot":"","sources":["../../../src/runtime/abduction/find.ts"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EACV,gBAAgB,EAChB,gBAAgB,EAGhB,WAAW,EAGZ,MAAM,SAAS,CAAC;AAwEjB;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,gBAAgB,EACzB,IAAI,CAAC,EAAE,gBAAgB,GACtB,WAAW,EAAE,CAsEf;AA6BD;;;;;GAKG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,gBAAgB,EACzB,IAAI,CAAC,EAAE,gBAAgB,GACtB,WAAW,GAAG,IAAI,CAQpB"}
@@ -0,0 +1,202 @@
1
+ "use strict";
2
+ // ============================================================
3
+ // ST Abduction — Núcleo: búsqueda de explicaciones
4
+ // ============================================================
5
+ //
6
+ // Estrategia: enumeración por tamaño creciente (BFS sobre subsets).
7
+ //
8
+ // for k in 0..maxSize:
9
+ // for cada subset H ⊆ abducibles con |H| = k:
10
+ // si KB ∪ H ⊨ O y KB ∪ H consistent:
11
+ // registrar H como explicación
12
+ // marcar todos sus supersets como redundantes (no parsimoniosos)
13
+ //
14
+ // Las explicaciones se reportan ordenadas por tamaño ascendente. La
15
+ // minimalidad por inclusión se verifica al final con una pasada O(N²)
16
+ // sobre las explicaciones encontradas (suficiente para |explicaciones|
17
+ // ≲ algunos miles; en problemas grandes acotar `maxHypotheses`).
18
+ //
19
+ // Para `preferred = 'minimal'`, solo se reportan las parsimoniosas.
20
+ // Para `minimum-cardinality`, se reportan únicamente las de tamaño
21
+ // igual al mínimo encontrado. Para `minimum-cost`, las de costo
22
+ // mínimo (requiere costFunction o se usa size).
23
+ Object.defineProperty(exports, "__esModule", { value: true });
24
+ exports.findExplanations = findExplanations;
25
+ exports.bestExplanation = bestExplanation;
26
+ const entails_1 = require("./entails");
27
+ function resolveOptions(abducibles, opts) {
28
+ const entails = opts?.entails ?? (0, entails_1.defaultEntails)();
29
+ const consistent = opts?.consistent ?? (0, entails_1.defaultConsistent)();
30
+ return {
31
+ entails,
32
+ consistent,
33
+ maxHypotheses: opts?.maxHypotheses ?? 1024,
34
+ maxSize: opts?.maxSize ?? abducibles.length,
35
+ costFunction: opts?.costFunction ?? (() => 1),
36
+ preferred: opts?.preferred ?? 'minimal',
37
+ };
38
+ }
39
+ /** Itera sobre todos los subsets de [0..n) de tamaño exactamente k (orden lex). */
40
+ function* combinations(n, k) {
41
+ if (k < 0 || k > n)
42
+ return;
43
+ if (k === 0) {
44
+ yield [];
45
+ return;
46
+ }
47
+ const idx = new Array(k);
48
+ for (let i = 0; i < k; i++)
49
+ idx[i] = i;
50
+ while (true) {
51
+ yield idx.slice();
52
+ // Avanzar al siguiente combination en orden lex.
53
+ let i = k - 1;
54
+ while (i >= 0 && idx[i] === n - k + i)
55
+ i--;
56
+ if (i < 0)
57
+ return;
58
+ idx[i] = idx[i] + 1;
59
+ for (let j = i + 1; j < k; j++)
60
+ idx[j] = idx[j - 1] + 1;
61
+ }
62
+ }
63
+ function isSubsetOf(a, b) {
64
+ if (a.length > b.length)
65
+ return false;
66
+ let i = 0;
67
+ let j = 0;
68
+ while (i < a.length && j < b.length) {
69
+ const ai = a[i];
70
+ const bj = b[j];
71
+ if (ai === bj) {
72
+ i++;
73
+ j++;
74
+ }
75
+ else if (ai < bj) {
76
+ return false;
77
+ }
78
+ else {
79
+ j++;
80
+ }
81
+ }
82
+ return i === a.length;
83
+ }
84
+ /**
85
+ * Encuentra todas las explicaciones de un problema abductivo.
86
+ *
87
+ * - Enumera subsets de abducibles en orden creciente de tamaño.
88
+ * - Filtra los inconsistentes y los que no implican la observación.
89
+ * - Calcula minimalidad por inclusión (parsimony) post-hoc.
90
+ * - Aplica el filtro `preferred` para el output final.
91
+ */
92
+ function findExplanations(problem, opts) {
93
+ const { kb, observation, abducibles } = problem;
94
+ const resolved = resolveOptions(abducibles, opts);
95
+ const n = abducibles.length;
96
+ const maxK = Math.min(resolved.maxSize, n);
97
+ // Pre-check: si KB ya implica O sin ninguna hipótesis, la explicación
98
+ // vacía es la única parsimoniosa.
99
+ // (Esto requiere consistencia de KB y derivación.)
100
+ const raw = [];
101
+ if (resolved.consistent(kb) && resolved.entails(kb, observation)) {
102
+ raw.push({ indices: [], hypotheses: [], costScore: 0 });
103
+ }
104
+ // Buscamos también H no vacíos. Si la vacía explica, según
105
+ // `preferred` puede ser todo lo que necesitamos (case-by-case).
106
+ outer: for (let k = 1; k <= maxK; k++) {
107
+ for (const idx of combinations(n, k)) {
108
+ const hypotheses = [];
109
+ let costScore = 0;
110
+ for (const i of idx) {
111
+ const f = abducibles[i];
112
+ if (f === undefined)
113
+ continue;
114
+ hypotheses.push(f);
115
+ costScore += resolved.costFunction(f);
116
+ }
117
+ const combined = [...kb, ...hypotheses];
118
+ // Skip duplicate trivial: si algún subset menor ya está en raw y es
119
+ // subset de este, este NO va a ser parsimonious. Lo enumeramos
120
+ // igual porque `preferred=all` debe verlos, pero podemos saltarlo
121
+ // si `preferred` ∈ {minimal, minimum-cardinality, minimum-cost}.
122
+ if (resolved.preferred !== 'all' &&
123
+ raw.some((r) => r.indices.length < idx.length && isSubsetOf(r.indices, idx))) {
124
+ continue;
125
+ }
126
+ if (!resolved.consistent(combined))
127
+ continue;
128
+ if (!resolved.entails(combined, observation))
129
+ continue;
130
+ raw.push({ indices: idx, hypotheses, costScore });
131
+ if (raw.length >= resolved.maxHypotheses)
132
+ break outer;
133
+ }
134
+ }
135
+ // Determinar parsimony por inclusión: una H es parsimoniosa sii no
136
+ // existe H' ∈ raw con H' ⊂ H (subconjunto propio).
137
+ const parsimonyMap = new Map();
138
+ const keyFor = (r) => r.indices.join(',');
139
+ for (const r of raw) {
140
+ let parsim = true;
141
+ for (const other of raw) {
142
+ if (other === r)
143
+ continue;
144
+ if (other.indices.length >= r.indices.length)
145
+ continue;
146
+ if (isSubsetOf(other.indices, r.indices)) {
147
+ parsim = false;
148
+ break;
149
+ }
150
+ }
151
+ parsimonyMap.set(keyFor(r), parsim);
152
+ }
153
+ // Convertir a Explanation[].
154
+ const explanations = raw.map((r) => ({
155
+ hypotheses: r.hypotheses,
156
+ size: r.hypotheses.length,
157
+ parsimonious: parsimonyMap.get(keyFor(r)) ?? false,
158
+ costScore: r.costScore,
159
+ }));
160
+ return applyPreference(explanations, resolved);
161
+ }
162
+ function applyPreference(expls, resolved) {
163
+ if (expls.length === 0)
164
+ return [];
165
+ switch (resolved.preferred) {
166
+ case 'all':
167
+ return expls.slice();
168
+ case 'minimal':
169
+ return expls.filter((e) => e.parsimonious);
170
+ case 'minimum-cardinality': {
171
+ const minimal = expls.filter((e) => e.parsimonious);
172
+ if (minimal.length === 0)
173
+ return [];
174
+ const minSize = minimal.reduce((m, e) => Math.min(m, e.size), Infinity);
175
+ return minimal.filter((e) => e.size === minSize);
176
+ }
177
+ case 'minimum-cost': {
178
+ const minimal = expls.filter((e) => e.parsimonious);
179
+ if (minimal.length === 0)
180
+ return [];
181
+ const minCost = minimal.reduce((m, e) => Math.min(m, e.costScore ?? Infinity), Infinity);
182
+ return minimal.filter((e) => (e.costScore ?? Infinity) === minCost);
183
+ }
184
+ default:
185
+ return expls.slice();
186
+ }
187
+ }
188
+ /**
189
+ * Devuelve UNA explicación: la "mejor" según `preferred`. Si hay
190
+ * empate, la primera en orden lex (consistente y reproducible).
191
+ *
192
+ * Devuelve `null` si no hay explicación posible.
193
+ */
194
+ function bestExplanation(problem, opts) {
195
+ // Para best-explanation, forzamos minimum-cost si hay costFunction;
196
+ // si no, minimum-cardinality. El cliente puede overridear con
197
+ // opts.preferred.
198
+ const preferred = opts?.preferred ?? (opts?.costFunction ? 'minimum-cost' : 'minimum-cardinality');
199
+ const all = findExplanations(problem, { ...opts, preferred });
200
+ return all.length > 0 ? all[0] : null;
201
+ }
202
+ //# sourceMappingURL=find.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"find.js","sourceRoot":"","sources":["../../../src/runtime/abduction/find.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export { findExplanations, bestExplanation } from './find';
2
+ export { defaultEntails, defaultConsistent } from './entails';
3
+ export type { AbductionOptions, AbductionProblem, ConsistencyOracle, EntailmentOracle, Explanation, Formula, Preference, } from './types';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/runtime/abduction/index.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC9D,YAAY,EACV,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,EAChB,WAAW,EACX,OAAO,EACP,UAAU,GACX,MAAM,SAAS,CAAC"}
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ // ============================================================
3
+ // ST Abduction — Barrel
4
+ // ============================================================
5
+ //
6
+ // Razonamiento abductivo: dado un knowledge base KB y una observación
7
+ // O, encontrar la hipótesis mínima H ⊆ Abducibles tal que
8
+ // KB ∪ H ⊨ O y KB ∪ H es consistente.
9
+ //
10
+ // API pública:
11
+ // - `findExplanations(problem, opts?)` → todas las explicaciones
12
+ // - `bestExplanation(problem, opts?)` → la mejor según preferencia
13
+ // - `defaultEntails(opts?)` → oráculo entailment Horn-like
14
+ // - `defaultConsistent(opts?)` → oráculo consistencia derivado
15
+ //
16
+ // Tipos: `AbductionProblem`, `Explanation`, `AbductionOptions`,
17
+ // `EntailmentOracle`, `ConsistencyOracle`, `Preference`, `Formula`.
18
+ Object.defineProperty(exports, "__esModule", { value: true });
19
+ exports.defaultConsistent = exports.defaultEntails = exports.bestExplanation = exports.findExplanations = void 0;
20
+ var find_1 = require("./find");
21
+ Object.defineProperty(exports, "findExplanations", { enumerable: true, get: function () { return find_1.findExplanations; } });
22
+ Object.defineProperty(exports, "bestExplanation", { enumerable: true, get: function () { return find_1.bestExplanation; } });
23
+ var entails_1 = require("./entails");
24
+ Object.defineProperty(exports, "defaultEntails", { enumerable: true, get: function () { return entails_1.defaultEntails; } });
25
+ Object.defineProperty(exports, "defaultConsistent", { enumerable: true, get: function () { return entails_1.defaultConsistent; } });
26
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/runtime/abduction/index.ts"],"names":[],"mappings":";AAAA,+DAA+D;AAC/D,wBAAwB;AACxB,+DAA+D;AAC/D,EAAE;AACF,sEAAsE;AACtE,0DAA0D;AAC1D,sCAAsC;AACtC,EAAE;AACF,eAAe;AACf,oEAAoE;AACpE,uEAAuE;AACvE,yEAAyE;AACzE,0EAA0E;AAC1E,EAAE;AACF,gEAAgE;AAChE,oEAAoE;;;AAEpE,+BAA2D;AAAlD,wGAAA,gBAAgB,OAAA;AAAE,uGAAA,eAAe,OAAA;AAC1C,qCAA8D;AAArD,yGAAA,cAAc,OAAA;AAAE,4GAAA,iBAAiB,OAAA"}