@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,12 @@
1
+ import { FrameAxiom, ModalFormula, TableauResult } from './types';
2
+ export interface TableauOptions {
3
+ /** Máximo número de mundos a explorar. Default heurístico. */
4
+ maxWorlds?: number;
5
+ }
6
+ /**
7
+ * Construye un tableau extendido para `phi` bajo los axiomas
8
+ * de frame `axioms`. Devuelve `sat` con un modelo si existe; en
9
+ * caso contrario `closed=true`.
10
+ */
11
+ export declare function tableauWithAxioms(phi: ModalFormula, axioms: FrameAxiom[], options?: TableauOptions): TableauResult;
12
+ //# sourceMappingURL=tableau.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tableau.d.ts","sourceRoot":"","sources":["../../../src/profiles/modal-frame-axioms/tableau.ts"],"names":[],"mappings":"AAsBA,OAAO,EAAE,UAAU,EAAe,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AA4R/E,MAAM,WAAW,cAAc;IAC7B,8DAA8D;IAC9D,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,GAAG,EAAE,YAAY,EACjB,MAAM,EAAE,UAAU,EAAE,EACpB,OAAO,GAAE,cAAmB,GAC3B,aAAa,CAoBf"}
@@ -0,0 +1,299 @@
1
+ "use strict";
2
+ // ============================================================
3
+ // Tableau extendido con axiomas de frame (T, B, 4, 5, D)
4
+ // ============================================================
5
+ //
6
+ // Estrategia: enumeración acotada de modelos Kripke finitos que
7
+ // satisfacen las condiciones de frame impuestas por los axiomas
8
+ // elegidos. Toda lógica modal normal definida por un subconjunto
9
+ // de {T, B, 4, 5, D} tiene la propiedad del modelo finito (FMP),
10
+ // así que la búsqueda bounded es completa para tamaños suficientes.
11
+ //
12
+ // El nombre "tableau" se mantiene por la interfaz pública: el
13
+ // procedimiento es equivalente a saturar un tableau prefijado y
14
+ // extraer un Kripke model de la rama abierta, sólo que aquí se
15
+ // hace por enumeración directa de frames + valuaciones — más
16
+ // simple de auditar y más rápido para |sub(φ)| pequeño.
17
+ //
18
+ // Para evitar explosión combinatoria:
19
+ // - El tamaño del frame se elige según |sub(φ)| y los axiomas.
20
+ // - Se aplica clausura del frame antes de evaluar para
21
+ // enforce de las condiciones (transitivo, simétrico, etc.).
22
+ // - Las valuaciones se enumeran sólo sobre átomos que aparecen.
23
+ Object.defineProperty(exports, "__esModule", { value: true });
24
+ exports.tableauWithAxioms = tableauWithAxioms;
25
+ const formula_1 = require("./formula");
26
+ function edgeKey(size, from, to) {
27
+ return from * size + to;
28
+ }
29
+ function hasEdge(m, from, to) {
30
+ return m.edges.has(edgeKey(m.size, from, to));
31
+ }
32
+ function successors(m, w) {
33
+ const out = [];
34
+ for (let v = 0; v < m.size; v++) {
35
+ if (hasEdge(m, w, v))
36
+ out.push(v);
37
+ }
38
+ return out;
39
+ }
40
+ // ------------------------------------------------------------
41
+ // Forcing modal estándar (semántica Kripke)
42
+ // ------------------------------------------------------------
43
+ function forces(m, w, f) {
44
+ switch (f.kind) {
45
+ case 'atom':
46
+ return f.name !== undefined && m.val[w].has(f.name);
47
+ case 'not':
48
+ return !forces(m, w, (0, formula_1.subUnary)(f));
49
+ case 'and':
50
+ return forces(m, w, (0, formula_1.subLeft)(f)) && forces(m, w, (0, formula_1.subRight)(f));
51
+ case 'or':
52
+ return forces(m, w, (0, formula_1.subLeft)(f)) || forces(m, w, (0, formula_1.subRight)(f));
53
+ case 'implies':
54
+ return !forces(m, w, (0, formula_1.subLeft)(f)) || forces(m, w, (0, formula_1.subRight)(f));
55
+ case 'box': {
56
+ const inner = (0, formula_1.subUnary)(f);
57
+ for (const v of successors(m, w)) {
58
+ if (!forces(m, v, inner))
59
+ return false;
60
+ }
61
+ return true;
62
+ }
63
+ case 'diamond': {
64
+ const inner = (0, formula_1.subUnary)(f);
65
+ for (const v of successors(m, w)) {
66
+ if (forces(m, v, inner))
67
+ return true;
68
+ }
69
+ return false;
70
+ }
71
+ }
72
+ }
73
+ // ------------------------------------------------------------
74
+ // Aplicación de axiomas de frame — clausura sobre las aristas
75
+ // ------------------------------------------------------------
76
+ /**
77
+ * Aplica las condiciones de frame impuestas por los axiomas
78
+ * IN-PLACE sobre `edges`. Devuelve `false` si el frame no puede
79
+ * satisfacer las condiciones (e.g. D requiere serialidad y el
80
+ * mundo está aislado — se intentará añadir, pero el chequeo
81
+ * final lo confirma).
82
+ *
83
+ * Reglas:
84
+ * - T : ∀w. R(w,w) → añadir lazos.
85
+ * - B : R(w,v) → R(v,w) → simetrizar.
86
+ * - 4 : transitividad → cerrar transitivamente.
87
+ * - 5 : R(w,v)∧R(w,u)→R(v,u) → euclidianizar.
88
+ * - D : ∀w. ∃v. R(w,v) → si w sin sucesor, añadir lazo
89
+ * a w (siempre coherente con K+D).
90
+ *
91
+ * Las clausuras (B, 4, 5) se iteran hasta punto fijo porque se
92
+ * generan mutuamente.
93
+ */
94
+ function closeFrame(model, axioms) {
95
+ const size = model.size;
96
+ if (axioms.has('T')) {
97
+ for (let w = 0; w < size; w++) {
98
+ model.edges.add(edgeKey(size, w, w));
99
+ }
100
+ }
101
+ let changed = true;
102
+ while (changed) {
103
+ changed = false;
104
+ if (axioms.has('B')) {
105
+ const snapshot = [...model.edges];
106
+ for (const k of snapshot) {
107
+ const from = Math.floor(k / size);
108
+ const to = k % size;
109
+ const rev = edgeKey(size, to, from);
110
+ if (!model.edges.has(rev)) {
111
+ model.edges.add(rev);
112
+ changed = true;
113
+ }
114
+ }
115
+ }
116
+ if (axioms.has('4')) {
117
+ // Cierre transitivo (Floyd-Warshall sobre la matriz booleana)
118
+ for (let k = 0; k < size; k++) {
119
+ for (let i = 0; i < size; i++) {
120
+ if (!hasEdge(model, i, k))
121
+ continue;
122
+ for (let j = 0; j < size; j++) {
123
+ if (hasEdge(model, k, j) && !hasEdge(model, i, j)) {
124
+ model.edges.add(edgeKey(size, i, j));
125
+ changed = true;
126
+ }
127
+ }
128
+ }
129
+ }
130
+ }
131
+ if (axioms.has('5')) {
132
+ // Euclidianidad: si w R v y w R u entonces v R u.
133
+ for (let w = 0; w < size; w++) {
134
+ const succs = [];
135
+ for (let v = 0; v < size; v++) {
136
+ if (hasEdge(model, w, v))
137
+ succs.push(v);
138
+ }
139
+ for (const v of succs) {
140
+ for (const u of succs) {
141
+ if (!hasEdge(model, v, u)) {
142
+ model.edges.add(edgeKey(size, v, u));
143
+ changed = true;
144
+ }
145
+ }
146
+ }
147
+ }
148
+ }
149
+ }
150
+ if (axioms.has('D')) {
151
+ // Serialidad: cada mundo necesita ≥1 sucesor. Si falta, lo
152
+ // damos como auto-lazo (coherente con D, pero no añade T
153
+ // a otros mundos).
154
+ for (let w = 0; w < size; w++) {
155
+ let has = false;
156
+ for (let v = 0; v < size; v++) {
157
+ if (hasEdge(model, w, v)) {
158
+ has = true;
159
+ break;
160
+ }
161
+ }
162
+ if (!has) {
163
+ model.edges.add(edgeKey(size, w, w));
164
+ }
165
+ }
166
+ // Cerrar de nuevo simetría/transitividad/euclidiana si las
167
+ // nuevas aristas introducen requerimientos.
168
+ if (axioms.has('B') || axioms.has('4') || axioms.has('5')) {
169
+ closeFrame(model, new Set([...axioms].filter((a) => a !== 'D')));
170
+ }
171
+ }
172
+ }
173
+ // ------------------------------------------------------------
174
+ // Enumeración de frames y valuaciones
175
+ // ------------------------------------------------------------
176
+ /**
177
+ * Genera todos los frames de tamaño `size`. Para cada uno
178
+ * aplica la clausura del axioma y descarta duplicados sintácticos
179
+ * post-clausura.
180
+ */
181
+ function* generateFrames(size, axioms) {
182
+ const pairs = [];
183
+ for (let i = 0; i < size; i++) {
184
+ for (let j = 0; j < size; j++) {
185
+ // Si T está activo, todos los lazos están forzados — no
186
+ // los enumeramos como variables libres.
187
+ if (axioms.has('T') && i === j)
188
+ continue;
189
+ pairs.push([i, j]);
190
+ }
191
+ }
192
+ const total = 1 << pairs.length;
193
+ const seen = new Set();
194
+ for (let mask = 0; mask < total; mask++) {
195
+ const edges = new Set();
196
+ for (let b = 0; b < pairs.length; b++) {
197
+ if (mask & (1 << b)) {
198
+ const [from, to] = pairs[b];
199
+ edges.add(edgeKey(size, from, to));
200
+ }
201
+ }
202
+ const model = {
203
+ size,
204
+ edges,
205
+ val: Array.from({ length: size }, () => new Set()),
206
+ };
207
+ closeFrame(model, axioms);
208
+ const sig = [...model.edges].sort((a, b) => a - b).join(',');
209
+ if (seen.has(sig))
210
+ continue;
211
+ seen.add(sig);
212
+ yield model;
213
+ }
214
+ }
215
+ /**
216
+ * Enumera valuaciones sobre `atoms` para los `size` mundos
217
+ * (subconjunto arbitrario de átomos por mundo, sin restricción
218
+ * de monotonía — la lógica modal estándar no la exige).
219
+ */
220
+ function* generateValuations(size, atoms) {
221
+ const k = atoms.length;
222
+ const perWorld = 1 << k;
223
+ const total = Math.pow(perWorld, size);
224
+ for (let i = 0; i < total; i++) {
225
+ const val = [];
226
+ let idx = i;
227
+ for (let w = 0; w < size; w++) {
228
+ const mask = idx % perWorld;
229
+ idx = Math.floor(idx / perWorld);
230
+ const set = new Set();
231
+ for (let a = 0; a < k; a++) {
232
+ if (mask & (1 << a))
233
+ set.add(atoms[a]);
234
+ }
235
+ val.push(set);
236
+ }
237
+ yield val;
238
+ }
239
+ }
240
+ // ------------------------------------------------------------
241
+ // Cota de tamaño de modelo
242
+ // ------------------------------------------------------------
243
+ /**
244
+ * Tamaño máximo de modelo a explorar. Conservador: 2^|atoms|+1
245
+ * bastaría para la propiedad de filtración en muchas lógicas,
246
+ * pero acotado por un máximo absoluto para evitar explosiones.
247
+ *
248
+ * Override vía `options.maxWorlds` en la API pública.
249
+ */
250
+ function defaultMaxWorlds(atomCount) {
251
+ if (atomCount <= 1)
252
+ return 3;
253
+ if (atomCount <= 2)
254
+ return 3;
255
+ return 3;
256
+ }
257
+ // ------------------------------------------------------------
258
+ // Conversión modelo interno → público
259
+ // ------------------------------------------------------------
260
+ function toPublic(model, actual) {
261
+ const worlds = Array.from({ length: model.size }, (_, i) => `w${i}`);
262
+ const accessibility = [];
263
+ for (const k of model.edges) {
264
+ const from = Math.floor(k / model.size);
265
+ const to = k % model.size;
266
+ accessibility.push([`w${from}`, `w${to}`]);
267
+ }
268
+ accessibility.sort((a, b) => a[0] === b[0] ? a[1].localeCompare(b[1]) : a[0].localeCompare(b[0]));
269
+ const valuation = new Map();
270
+ for (let w = 0; w < model.size; w++) {
271
+ valuation.set(`w${w}`, new Set(model.val[w]));
272
+ }
273
+ return { worlds, accessibility, valuation, actual: `w${actual}` };
274
+ }
275
+ /**
276
+ * Construye un tableau extendido para `phi` bajo los axiomas
277
+ * de frame `axioms`. Devuelve `sat` con un modelo si existe; en
278
+ * caso contrario `closed=true`.
279
+ */
280
+ function tableauWithAxioms(phi, axioms, options = {}) {
281
+ const axiomSet = new Set(axioms);
282
+ const atoms = [...(0, formula_1.collectAtoms)(phi)];
283
+ // Si la fórmula no menciona átomos (e.g. □⊥ con notación
284
+ // sintética), igual hay que considerar valuaciones triviales.
285
+ const effectiveAtoms = atoms.length === 0 ? [] : atoms;
286
+ const maxWorlds = options.maxWorlds ?? defaultMaxWorlds(effectiveAtoms.length);
287
+ for (let size = 1; size <= maxWorlds; size++) {
288
+ for (const frame of generateFrames(size, axiomSet)) {
289
+ for (const val of generateValuations(size, effectiveAtoms)) {
290
+ frame.val = val;
291
+ if (forces(frame, 0, phi)) {
292
+ return { sat: true, closed: false, model: toPublic(frame, 0) };
293
+ }
294
+ }
295
+ }
296
+ }
297
+ return { sat: false, closed: true };
298
+ }
299
+ //# sourceMappingURL=tableau.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tableau.js","sourceRoot":"","sources":["../../../src/profiles/modal-frame-axioms/tableau.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,61 @@
1
+ /**
2
+ * Axiomas de frame disponibles. Cualquier subconjunto define una
3
+ * lógica modal normal.
4
+ */
5
+ export type FrameAxiom = 'T' | 'B' | '4' | '5' | 'D';
6
+ /**
7
+ * Sistemas modales nombrados que reconoce {@link systemAxioms}.
8
+ * Cualquier otra combinación puede construirse pasando los axiomas
9
+ * directamente a {@link tableauWithAxioms}.
10
+ */
11
+ export type ModalSystem = 'K' | 'T' | 'D' | 'B' | 'S4' | 'S5' | 'KD45' | 'KB' | 'K4' | 'K5';
12
+ /**
13
+ * Fórmula modal proposicional. Estructura discriminada por `kind`.
14
+ *
15
+ * Convenciones:
16
+ * - 'atom' usa `name`.
17
+ * - 'not' usa `arg`.
18
+ * - 'box' usa `arg` (□φ — necesidad).
19
+ * - 'diamond' usa `arg` (◇φ — posibilidad).
20
+ * - 'and' / 'or' / 'implies' usan `left` y `right`.
21
+ *
22
+ * Se mantiene también `args` como alternativa lista para
23
+ * compatibilidad con consumidores que prefieren n-arios.
24
+ */
25
+ export interface ModalFormula {
26
+ kind: 'atom' | 'not' | 'and' | 'or' | 'implies' | 'box' | 'diamond';
27
+ name?: string;
28
+ arg?: ModalFormula;
29
+ args?: ModalFormula[];
30
+ left?: ModalFormula;
31
+ right?: ModalFormula;
32
+ }
33
+ /**
34
+ * Modelo de Kripke devuelto cuando una fórmula es satisfacible.
35
+ *
36
+ * - `worlds` : nombres simbólicos de mundos (e.g. "w0", "w1").
37
+ * - `accessibility` : aristas dirigidas `[from, to]` del frame.
38
+ * - `valuation` : por mundo, los átomos verdaderos en ese mundo.
39
+ * - `actual` : mundo "real" donde se evalúa la fórmula
40
+ * (típicamente "w0").
41
+ */
42
+ export interface KripkeModel {
43
+ worlds: string[];
44
+ accessibility: Array<[string, string]>;
45
+ valuation: Map<string, Set<string>>;
46
+ actual: string;
47
+ }
48
+ /**
49
+ * Resultado del tableau / búsqueda de modelo.
50
+ *
51
+ * - `sat` : ¿existe modelo en el frame indicado?
52
+ * - `model` : si `sat`, modelo concreto (raíz = actual world).
53
+ * - `closed` : ¿el tableau cerró todas las ramas? (= ¬sat).
54
+ * Para una búsqueda saturada: closed ⇔ ¬sat.
55
+ */
56
+ export interface TableauResult {
57
+ sat: boolean;
58
+ model?: KripkeModel;
59
+ closed: boolean;
60
+ }
61
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/profiles/modal-frame-axioms/types.ts"],"names":[],"mappings":"AAyBA;;;GAGG;AACH,MAAM,MAAM,UAAU,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAErD;;;;GAIG;AACH,MAAM,MAAM,WAAW,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAE5F;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,GAAG,KAAK,GAAG,KAAK,GAAG,IAAI,GAAG,SAAS,GAAG,KAAK,GAAG,SAAS,CAAC;IACpE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,YAAY,CAAC;IACnB,IAAI,CAAC,EAAE,YAAY,EAAE,CAAC;IACtB,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB,KAAK,CAAC,EAAE,YAAY,CAAC;CACtB;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,aAAa,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACvC,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;IACpC,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,OAAO,CAAC;IACb,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,MAAM,EAAE,OAAO,CAAC;CACjB"}
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ // ============================================================
3
+ // Modal Frame Axioms — Tipos
4
+ // ============================================================
5
+ //
6
+ // Lógicas modales normales caracterizadas por axiomas de frame:
7
+ //
8
+ // T : □φ → φ reflexividad ∀w. R(w,w)
9
+ // B : φ → □◇φ simetría ∀w,v. R(w,v) → R(v,w)
10
+ // 4 : □φ → □□φ transitividad ∀w,v,u. R(w,v)∧R(v,u) → R(w,u)
11
+ // 5 : ◇φ → □◇φ euclidianidad ∀w,v,u. R(w,v)∧R(w,u) → R(v,u)
12
+ // D : □φ → ◇φ serialidad ∀w. ∃v. R(w,v)
13
+ //
14
+ // Sistemas estándar como composiciones:
15
+ //
16
+ // K = ∅ (sin axiomas, sólo K y N)
17
+ // T = {T} reflexivo
18
+ // D = {D} serial
19
+ // B = {T, B} reflexivo + simétrico (a veces KB = {B} sin T)
20
+ // K4 = {4} transitivo
21
+ // K5 = {5} euclidiano
22
+ // KB = {B} sólo simétrico
23
+ // S4 = {T, 4} reflexivo + transitivo
24
+ // S5 = {T, 4, 5} equivalencia (≡ T+B+4 ≡ T+5)
25
+ // KD45 = {D, 4, 5} serial + trans + eucl (modelo doxástico)
26
+ Object.defineProperty(exports, "__esModule", { value: true });
27
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/profiles/modal-frame-axioms/types.ts"],"names":[],"mappings":";AAAA,+DAA+D;AAC/D,6BAA6B;AAC7B,+DAA+D;AAC/D,EAAE;AACF,gEAAgE;AAChE,EAAE;AACF,sDAAsD;AACtD,iEAAiE;AACjE,0EAA0E;AAC1E,0EAA0E;AAC1E,0DAA0D;AAC1D,EAAE;AACF,wCAAwC;AACxC,EAAE;AACF,iDAAiD;AACjD,iCAAiC;AACjC,8BAA8B;AAC9B,uEAAuE;AACvE,kCAAkC;AAClC,kCAAkC;AAClC,sCAAsC;AACtC,8CAA8C;AAC9C,oDAAoD;AACpD,iEAAiE"}
@@ -0,0 +1,4 @@
1
+ export type { LinearFormula, LinearSequent, LinearProof, SequentRule, SubstructuralMode, } from './types';
2
+ export { proveLinear, proveAffine, proofToString, formulaKey } from './prover';
3
+ export type { ProveOptions, ProveResult } from './prover';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/profiles/substructural/index.ts"],"names":[],"mappings":"AAcA,YAAY,EACV,aAAa,EACb,aAAa,EACb,WAAW,EACX,WAAW,EACX,iBAAiB,GAClB,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAC/E,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC"}
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ // ============================================================
3
+ // Substructural Logics — Public entrypoint
4
+ // ============================================================
5
+ //
6
+ // Logicas substructurales (Linear y Affine) con calculo de
7
+ // secuentes intuicionistico unilateral. Conectivos multiplicativos
8
+ // (⊗, ⊸, 1), aditivos (&, ⊕) y el exponencial bang (!).
9
+ //
10
+ // import {
11
+ // LinearFormula,
12
+ // proveLinear,
13
+ // proveAffine,
14
+ // } from 'src/profiles/substructural';
15
+ Object.defineProperty(exports, "__esModule", { value: true });
16
+ exports.formulaKey = exports.proofToString = exports.proveAffine = exports.proveLinear = void 0;
17
+ var prover_1 = require("./prover");
18
+ Object.defineProperty(exports, "proveLinear", { enumerable: true, get: function () { return prover_1.proveLinear; } });
19
+ Object.defineProperty(exports, "proveAffine", { enumerable: true, get: function () { return prover_1.proveAffine; } });
20
+ Object.defineProperty(exports, "proofToString", { enumerable: true, get: function () { return prover_1.proofToString; } });
21
+ Object.defineProperty(exports, "formulaKey", { enumerable: true, get: function () { return prover_1.formulaKey; } });
22
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/profiles/substructural/index.ts"],"names":[],"mappings":";AAAA,+DAA+D;AAC/D,2CAA2C;AAC3C,+DAA+D;AAC/D,EAAE;AACF,2DAA2D;AAC3D,mEAAmE;AACnE,wDAAwD;AACxD,EAAE;AACF,aAAa;AACb,qBAAqB;AACrB,mBAAmB;AACnB,mBAAmB;AACnB,yCAAyC;;;AAUzC,mCAA+E;AAAtE,qGAAA,WAAW,OAAA;AAAE,qGAAA,WAAW,OAAA;AAAE,uGAAA,aAAa,OAAA;AAAE,oGAAA,UAAU,OAAA"}
@@ -0,0 +1,13 @@
1
+ import { LinearFormula, LinearProof, LinearSequent } from './types';
2
+ export declare function formulaKey(f: LinearFormula): string;
3
+ export interface ProveOptions {
4
+ budget?: number;
5
+ }
6
+ export interface ProveResult {
7
+ provable: boolean;
8
+ proof?: LinearProof;
9
+ }
10
+ export declare function proveLinear(seqInput: LinearSequent, options?: ProveOptions): LinearProof | null;
11
+ export declare function proveAffine(seqInput: LinearSequent, options?: ProveOptions): LinearProof | null;
12
+ export declare function proofToString(p: LinearProof, indent?: number): string;
13
+ //# sourceMappingURL=prover.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prover.d.ts","sourceRoot":"","sources":["../../../src/profiles/substructural/prover.ts"],"names":[],"mappings":"AA0CA,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,aAAa,EAAkC,MAAM,SAAS,CAAC;AAIpG,wBAAgB,UAAU,CAAC,CAAC,EAAE,aAAa,GAAG,MAAM,CAmBnD;AA6aD,MAAM,WAAW,YAAY;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,WAAW,CAAC;CACrB;AAqBD,wBAAgB,WAAW,CAAC,QAAQ,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,WAAW,GAAG,IAAI,CAG/F;AAED,wBAAgB,WAAW,CAAC,QAAQ,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,WAAW,GAAG,IAAI,CAG/F;AAED,wBAAgB,aAAa,CAAC,CAAC,EAAE,WAAW,EAAE,MAAM,SAAI,GAAG,MAAM,CAOhE"}