@stevenvo780/st-lang 4.1.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 (553) hide show
  1. package/dist/belief-revision/agm.d.ts +76 -0
  2. package/dist/belief-revision/agm.d.ts.map +1 -0
  3. package/dist/belief-revision/agm.js +249 -0
  4. package/dist/belief-revision/agm.js.map +1 -0
  5. package/dist/belief-revision/index.d.ts +6 -0
  6. package/dist/belief-revision/index.d.ts.map +1 -0
  7. package/dist/belief-revision/index.js +33 -0
  8. package/dist/belief-revision/index.js.map +1 -0
  9. package/dist/belief-revision/parser.d.ts +16 -0
  10. package/dist/belief-revision/parser.d.ts.map +1 -0
  11. package/dist/belief-revision/parser.js +199 -0
  12. package/dist/belief-revision/parser.js.map +1 -0
  13. package/dist/belief-revision/sat.d.ts +19 -0
  14. package/dist/belief-revision/sat.d.ts.map +1 -0
  15. package/dist/belief-revision/sat.js +90 -0
  16. package/dist/belief-revision/sat.js.map +1 -0
  17. package/dist/belief-revision/types.d.ts +51 -0
  18. package/dist/belief-revision/types.d.ts.map +1 -0
  19. package/dist/belief-revision/types.js +10 -0
  20. package/dist/belief-revision/types.js.map +1 -0
  21. package/dist/curry-howard/index.d.ts +7 -0
  22. package/dist/curry-howard/index.d.ts.map +1 -0
  23. package/dist/curry-howard/index.js +46 -0
  24. package/dist/curry-howard/index.js.map +1 -0
  25. package/dist/curry-howard/infer.d.ts +9 -0
  26. package/dist/curry-howard/infer.d.ts.map +1 -0
  27. package/dist/curry-howard/infer.js +129 -0
  28. package/dist/curry-howard/infer.js.map +1 -0
  29. package/dist/curry-howard/proof.d.ts +7 -0
  30. package/dist/curry-howard/proof.d.ts.map +1 -0
  31. package/dist/curry-howard/proof.js +282 -0
  32. package/dist/curry-howard/proof.js.map +1 -0
  33. package/dist/curry-howard/reduce.d.ts +7 -0
  34. package/dist/curry-howard/reduce.d.ts.map +1 -0
  35. package/dist/curry-howard/reduce.js +266 -0
  36. package/dist/curry-howard/reduce.js.map +1 -0
  37. package/dist/curry-howard/types.d.ts +91 -0
  38. package/dist/curry-howard/types.d.ts.map +1 -0
  39. package/dist/curry-howard/types.js +149 -0
  40. package/dist/curry-howard/types.js.map +1 -0
  41. package/dist/fol-prover-equality/demodulate.d.ts +29 -0
  42. package/dist/fol-prover-equality/demodulate.d.ts.map +1 -0
  43. package/dist/fol-prover-equality/demodulate.js +197 -0
  44. package/dist/fol-prover-equality/demodulate.js.map +1 -0
  45. package/dist/fol-prover-equality/index.d.ts +8 -0
  46. package/dist/fol-prover-equality/index.d.ts.map +1 -0
  47. package/dist/fol-prover-equality/index.js +24 -0
  48. package/dist/fol-prover-equality/index.js.map +1 -0
  49. package/dist/fol-prover-equality/paramodulate.d.ts +46 -0
  50. package/dist/fol-prover-equality/paramodulate.d.ts.map +1 -0
  51. package/dist/fol-prover-equality/paramodulate.js +159 -0
  52. package/dist/fol-prover-equality/paramodulate.js.map +1 -0
  53. package/dist/fol-prover-equality/prove.d.ts +7 -0
  54. package/dist/fol-prover-equality/prove.d.ts.map +1 -0
  55. package/dist/fol-prover-equality/prove.js +307 -0
  56. package/dist/fol-prover-equality/prove.js.map +1 -0
  57. package/dist/fol-prover-equality/term-utils.d.ts +43 -0
  58. package/dist/fol-prover-equality/term-utils.d.ts.map +1 -0
  59. package/dist/fol-prover-equality/term-utils.js +230 -0
  60. package/dist/fol-prover-equality/term-utils.js.map +1 -0
  61. package/dist/fol-prover-equality/types.d.ts +20 -0
  62. package/dist/fol-prover-equality/types.d.ts.map +1 -0
  63. package/dist/fol-prover-equality/types.js +5 -0
  64. package/dist/fol-prover-equality/types.js.map +1 -0
  65. package/dist/index.d.ts +8 -0
  66. package/dist/index.d.ts.map +1 -1
  67. package/dist/index.js +53 -1
  68. package/dist/index.js.map +1 -1
  69. package/dist/lambda-calc/church.d.ts +8 -0
  70. package/dist/lambda-calc/church.d.ts.map +1 -0
  71. package/dist/lambda-calc/church.js +67 -0
  72. package/dist/lambda-calc/church.js.map +1 -0
  73. package/dist/lambda-calc/combinators.d.ts +8 -0
  74. package/dist/lambda-calc/combinators.d.ts.map +1 -0
  75. package/dist/lambda-calc/combinators.js +24 -0
  76. package/dist/lambda-calc/combinators.js.map +1 -0
  77. package/dist/lambda-calc/index.d.ts +8 -0
  78. package/dist/lambda-calc/index.d.ts.map +1 -0
  79. package/dist/lambda-calc/index.js +48 -0
  80. package/dist/lambda-calc/index.js.map +1 -0
  81. package/dist/lambda-calc/reduce.d.ts +18 -0
  82. package/dist/lambda-calc/reduce.d.ts.map +1 -0
  83. package/dist/lambda-calc/reduce.js +174 -0
  84. package/dist/lambda-calc/reduce.js.map +1 -0
  85. package/dist/lambda-calc/substitution.d.ts +6 -0
  86. package/dist/lambda-calc/substitution.d.ts.map +1 -0
  87. package/dist/lambda-calc/substitution.js +120 -0
  88. package/dist/lambda-calc/substitution.js.map +1 -0
  89. package/dist/lambda-calc/types.d.ts +19 -0
  90. package/dist/lambda-calc/types.d.ts.map +1 -0
  91. package/dist/lambda-calc/types.js +72 -0
  92. package/dist/lambda-calc/types.js.map +1 -0
  93. package/dist/profiles/ctl/check.d.ts +13 -0
  94. package/dist/profiles/ctl/check.d.ts.map +1 -0
  95. package/dist/profiles/ctl/check.js +359 -0
  96. package/dist/profiles/ctl/check.js.map +1 -0
  97. package/dist/profiles/ctl/index.d.ts +5 -0
  98. package/dist/profiles/ctl/index.d.ts.map +1 -0
  99. package/dist/profiles/ctl/index.js +23 -0
  100. package/dist/profiles/ctl/index.js.map +1 -0
  101. package/dist/profiles/ctl/types.d.ts +74 -0
  102. package/dist/profiles/ctl/types.d.ts.map +1 -0
  103. package/dist/profiles/ctl/types.js +53 -0
  104. package/dist/profiles/ctl/types.js.map +1 -0
  105. package/dist/profiles/ctl/witness.d.ts +20 -0
  106. package/dist/profiles/ctl/witness.d.ts.map +1 -0
  107. package/dist/profiles/ctl/witness.js +149 -0
  108. package/dist/profiles/ctl/witness.js.map +1 -0
  109. package/dist/profiles/default-logic/entailment.d.ts +14 -0
  110. package/dist/profiles/default-logic/entailment.d.ts.map +1 -0
  111. package/dist/profiles/default-logic/entailment.js +36 -0
  112. package/dist/profiles/default-logic/entailment.js.map +1 -0
  113. package/dist/profiles/default-logic/extensions.d.ts +35 -0
  114. package/dist/profiles/default-logic/extensions.d.ts.map +1 -0
  115. package/dist/profiles/default-logic/extensions.js +276 -0
  116. package/dist/profiles/default-logic/extensions.js.map +1 -0
  117. package/dist/profiles/default-logic/index.d.ts +5 -0
  118. package/dist/profiles/default-logic/index.d.ts.map +1 -0
  119. package/dist/profiles/default-logic/index.js +33 -0
  120. package/dist/profiles/default-logic/index.js.map +1 -0
  121. package/dist/profiles/default-logic/types.d.ts +29 -0
  122. package/dist/profiles/default-logic/types.d.ts.map +1 -0
  123. package/dist/profiles/default-logic/types.js +25 -0
  124. package/dist/profiles/default-logic/types.js.map +1 -0
  125. package/dist/profiles/description-logic/index.d.ts +5 -0
  126. package/dist/profiles/description-logic/index.d.ts.map +1 -0
  127. package/dist/profiles/description-logic/index.js +39 -0
  128. package/dist/profiles/description-logic/index.js.map +1 -0
  129. package/dist/profiles/description-logic/nnf.d.ts +13 -0
  130. package/dist/profiles/description-logic/nnf.d.ts.map +1 -0
  131. package/dist/profiles/description-logic/nnf.js +123 -0
  132. package/dist/profiles/description-logic/nnf.js.map +1 -0
  133. package/dist/profiles/description-logic/tableau.d.ts +27 -0
  134. package/dist/profiles/description-logic/tableau.d.ts.map +1 -0
  135. package/dist/profiles/description-logic/tableau.js +491 -0
  136. package/dist/profiles/description-logic/tableau.js.map +1 -0
  137. package/dist/profiles/description-logic/types.d.ts +45 -0
  138. package/dist/profiles/description-logic/types.d.ts.map +1 -0
  139. package/dist/profiles/description-logic/types.js +71 -0
  140. package/dist/profiles/description-logic/types.js.map +1 -0
  141. package/dist/profiles/hybrid-logic/index.d.ts +5 -0
  142. package/dist/profiles/hybrid-logic/index.d.ts.map +1 -0
  143. package/dist/profiles/hybrid-logic/index.js +34 -0
  144. package/dist/profiles/hybrid-logic/index.js.map +1 -0
  145. package/dist/profiles/hybrid-logic/sat.d.ts +15 -0
  146. package/dist/profiles/hybrid-logic/sat.d.ts.map +1 -0
  147. package/dist/profiles/hybrid-logic/sat.js +142 -0
  148. package/dist/profiles/hybrid-logic/sat.js.map +1 -0
  149. package/dist/profiles/hybrid-logic/semantics.d.ts +20 -0
  150. package/dist/profiles/hybrid-logic/semantics.d.ts.map +1 -0
  151. package/dist/profiles/hybrid-logic/semantics.js +107 -0
  152. package/dist/profiles/hybrid-logic/semantics.js.map +1 -0
  153. package/dist/profiles/hybrid-logic/types.d.ts +78 -0
  154. package/dist/profiles/hybrid-logic/types.d.ts.map +1 -0
  155. package/dist/profiles/hybrid-logic/types.js +107 -0
  156. package/dist/profiles/hybrid-logic/types.js.map +1 -0
  157. package/dist/profiles/intuitionistic-nj/formula.d.ts +19 -0
  158. package/dist/profiles/intuitionistic-nj/formula.d.ts.map +1 -0
  159. package/dist/profiles/intuitionistic-nj/formula.js +99 -0
  160. package/dist/profiles/intuitionistic-nj/formula.js.map +1 -0
  161. package/dist/profiles/intuitionistic-nj/index.d.ts +5 -0
  162. package/dist/profiles/intuitionistic-nj/index.d.ts.map +1 -0
  163. package/dist/profiles/intuitionistic-nj/index.js +24 -0
  164. package/dist/profiles/intuitionistic-nj/index.js.map +1 -0
  165. package/dist/profiles/intuitionistic-nj/kripke.d.ts +17 -0
  166. package/dist/profiles/intuitionistic-nj/kripke.d.ts.map +1 -0
  167. package/dist/profiles/intuitionistic-nj/kripke.js +206 -0
  168. package/dist/profiles/intuitionistic-nj/kripke.js.map +1 -0
  169. package/dist/profiles/intuitionistic-nj/prover.d.ts +13 -0
  170. package/dist/profiles/intuitionistic-nj/prover.d.ts.map +1 -0
  171. package/dist/profiles/intuitionistic-nj/prover.js +418 -0
  172. package/dist/profiles/intuitionistic-nj/prover.js.map +1 -0
  173. package/dist/profiles/intuitionistic-nj/types.d.ts +55 -0
  174. package/dist/profiles/intuitionistic-nj/types.d.ts.map +1 -0
  175. package/dist/profiles/intuitionistic-nj/types.js +21 -0
  176. package/dist/profiles/intuitionistic-nj/types.js.map +1 -0
  177. package/dist/profiles/ltl-sat/index.d.ts +4 -0
  178. package/dist/profiles/ltl-sat/index.d.ts.map +1 -0
  179. package/dist/profiles/ltl-sat/index.js +40 -0
  180. package/dist/profiles/ltl-sat/index.js.map +1 -0
  181. package/dist/profiles/ltl-sat/sat.d.ts +8 -0
  182. package/dist/profiles/ltl-sat/sat.d.ts.map +1 -0
  183. package/dist/profiles/ltl-sat/sat.js +140 -0
  184. package/dist/profiles/ltl-sat/sat.js.map +1 -0
  185. package/dist/profiles/ltl-sat/tableau.d.ts +19 -0
  186. package/dist/profiles/ltl-sat/tableau.d.ts.map +1 -0
  187. package/dist/profiles/ltl-sat/tableau.js +358 -0
  188. package/dist/profiles/ltl-sat/tableau.js.map +1 -0
  189. package/dist/profiles/ltl-sat/types.d.ts +52 -0
  190. package/dist/profiles/ltl-sat/types.d.ts.map +1 -0
  191. package/dist/profiles/ltl-sat/types.js +101 -0
  192. package/dist/profiles/ltl-sat/types.js.map +1 -0
  193. package/dist/profiles/many-valued/index.d.ts +39 -0
  194. package/dist/profiles/many-valued/index.d.ts.map +1 -0
  195. package/dist/profiles/many-valued/index.js +250 -0
  196. package/dist/profiles/many-valued/index.js.map +1 -0
  197. package/dist/profiles/modal-frame-axioms/formula.d.ts +23 -0
  198. package/dist/profiles/modal-frame-axioms/formula.d.ts.map +1 -0
  199. package/dist/profiles/modal-frame-axioms/formula.js +158 -0
  200. package/dist/profiles/modal-frame-axioms/formula.js.map +1 -0
  201. package/dist/profiles/modal-frame-axioms/index.d.ts +6 -0
  202. package/dist/profiles/modal-frame-axioms/index.d.ts.map +1 -0
  203. package/dist/profiles/modal-frame-axioms/index.js +41 -0
  204. package/dist/profiles/modal-frame-axioms/index.js.map +1 -0
  205. package/dist/profiles/modal-frame-axioms/systems.d.ts +29 -0
  206. package/dist/profiles/modal-frame-axioms/systems.d.ts.map +1 -0
  207. package/dist/profiles/modal-frame-axioms/systems.js +96 -0
  208. package/dist/profiles/modal-frame-axioms/systems.js.map +1 -0
  209. package/dist/profiles/modal-frame-axioms/tableau.d.ts +12 -0
  210. package/dist/profiles/modal-frame-axioms/tableau.d.ts.map +1 -0
  211. package/dist/profiles/modal-frame-axioms/tableau.js +299 -0
  212. package/dist/profiles/modal-frame-axioms/tableau.js.map +1 -0
  213. package/dist/profiles/modal-frame-axioms/types.d.ts +61 -0
  214. package/dist/profiles/modal-frame-axioms/types.d.ts.map +1 -0
  215. package/dist/profiles/modal-frame-axioms/types.js +27 -0
  216. package/dist/profiles/modal-frame-axioms/types.js.map +1 -0
  217. package/dist/profiles/sequent-g3/index.d.ts +5 -0
  218. package/dist/profiles/sequent-g3/index.d.ts.map +1 -0
  219. package/dist/profiles/sequent-g3/index.js +23 -0
  220. package/dist/profiles/sequent-g3/index.js.map +1 -0
  221. package/dist/profiles/sequent-g3/latex.d.ts +7 -0
  222. package/dist/profiles/sequent-g3/latex.d.ts.map +1 -0
  223. package/dist/profiles/sequent-g3/latex.js +107 -0
  224. package/dist/profiles/sequent-g3/latex.js.map +1 -0
  225. package/dist/profiles/sequent-g3/normalize.d.ts +15 -0
  226. package/dist/profiles/sequent-g3/normalize.d.ts.map +1 -0
  227. package/dist/profiles/sequent-g3/normalize.js +121 -0
  228. package/dist/profiles/sequent-g3/normalize.js.map +1 -0
  229. package/dist/profiles/sequent-g3/prover.d.ts +16 -0
  230. package/dist/profiles/sequent-g3/prover.d.ts.map +1 -0
  231. package/dist/profiles/sequent-g3/prover.js +348 -0
  232. package/dist/profiles/sequent-g3/prover.js.map +1 -0
  233. package/dist/profiles/sequent-g3/types.d.ts +30 -0
  234. package/dist/profiles/sequent-g3/types.d.ts.map +1 -0
  235. package/dist/profiles/sequent-g3/types.js +16 -0
  236. package/dist/profiles/sequent-g3/types.js.map +1 -0
  237. package/dist/profiles/substructural/index.d.ts +4 -0
  238. package/dist/profiles/substructural/index.d.ts.map +1 -0
  239. package/dist/profiles/substructural/index.js +22 -0
  240. package/dist/profiles/substructural/index.js.map +1 -0
  241. package/dist/profiles/substructural/prover.d.ts +13 -0
  242. package/dist/profiles/substructural/prover.d.ts.map +1 -0
  243. package/dist/profiles/substructural/prover.js +481 -0
  244. package/dist/profiles/substructural/prover.js.map +1 -0
  245. package/dist/profiles/substructural/types.d.ts +72 -0
  246. package/dist/profiles/substructural/types.d.ts.map +1 -0
  247. package/dist/profiles/substructural/types.js +27 -0
  248. package/dist/profiles/substructural/types.js.map +1 -0
  249. package/dist/runtime/abduction/entails.d.ts +21 -0
  250. package/dist/runtime/abduction/entails.d.ts.map +1 -0
  251. package/dist/runtime/abduction/entails.js +308 -0
  252. package/dist/runtime/abduction/entails.js.map +1 -0
  253. package/dist/runtime/abduction/find.d.ts +18 -0
  254. package/dist/runtime/abduction/find.d.ts.map +1 -0
  255. package/dist/runtime/abduction/find.js +202 -0
  256. package/dist/runtime/abduction/find.js.map +1 -0
  257. package/dist/runtime/abduction/index.d.ts +4 -0
  258. package/dist/runtime/abduction/index.d.ts.map +1 -0
  259. package/dist/runtime/abduction/index.js +26 -0
  260. package/dist/runtime/abduction/index.js.map +1 -0
  261. package/dist/runtime/abduction/types.d.ts +78 -0
  262. package/dist/runtime/abduction/types.d.ts.map +1 -0
  263. package/dist/runtime/abduction/types.js +23 -0
  264. package/dist/runtime/abduction/types.js.map +1 -0
  265. package/dist/runtime/bayesian/factor.d.ts +22 -0
  266. package/dist/runtime/bayesian/factor.d.ts.map +1 -0
  267. package/dist/runtime/bayesian/factor.js +249 -0
  268. package/dist/runtime/bayesian/factor.js.map +1 -0
  269. package/dist/runtime/bayesian/index.d.ts +3 -0
  270. package/dist/runtime/bayesian/index.d.ts.map +1 -0
  271. package/dist/runtime/bayesian/index.js +25 -0
  272. package/dist/runtime/bayesian/index.js.map +1 -0
  273. package/dist/runtime/bayesian/inference.d.ts +6 -0
  274. package/dist/runtime/bayesian/inference.d.ts.map +1 -0
  275. package/dist/runtime/bayesian/inference.js +260 -0
  276. package/dist/runtime/bayesian/inference.js.map +1 -0
  277. package/dist/runtime/bayesian/types.d.ts +19 -0
  278. package/dist/runtime/bayesian/types.d.ts.map +1 -0
  279. package/dist/runtime/bayesian/types.js +9 -0
  280. package/dist/runtime/bayesian/types.js.map +1 -0
  281. package/dist/runtime/bisimulation/index.d.ts +4 -0
  282. package/dist/runtime/bisimulation/index.d.ts.map +1 -0
  283. package/dist/runtime/bisimulation/index.js +21 -0
  284. package/dist/runtime/bisimulation/index.js.map +1 -0
  285. package/dist/runtime/bisimulation/operations.d.ts +40 -0
  286. package/dist/runtime/bisimulation/operations.d.ts.map +1 -0
  287. package/dist/runtime/bisimulation/operations.js +219 -0
  288. package/dist/runtime/bisimulation/operations.js.map +1 -0
  289. package/dist/runtime/bisimulation/paige-tarjan.d.ts +8 -0
  290. package/dist/runtime/bisimulation/paige-tarjan.d.ts.map +1 -0
  291. package/dist/runtime/bisimulation/paige-tarjan.js +199 -0
  292. package/dist/runtime/bisimulation/paige-tarjan.js.map +1 -0
  293. package/dist/runtime/bisimulation/types.d.ts +26 -0
  294. package/dist/runtime/bisimulation/types.d.ts.map +1 -0
  295. package/dist/runtime/bisimulation/types.js +22 -0
  296. package/dist/runtime/bisimulation/types.js.map +1 -0
  297. package/dist/runtime/countermodel-min/index.d.ts +3 -0
  298. package/dist/runtime/countermodel-min/index.d.ts.map +1 -0
  299. package/dist/runtime/countermodel-min/index.js +9 -0
  300. package/dist/runtime/countermodel-min/index.js.map +1 -0
  301. package/dist/runtime/countermodel-min/minimize.d.ts +17 -0
  302. package/dist/runtime/countermodel-min/minimize.d.ts.map +1 -0
  303. package/dist/runtime/countermodel-min/minimize.js +0 -0
  304. package/dist/runtime/countermodel-min/minimize.js.map +1 -0
  305. package/dist/runtime/countermodel-min/types.d.ts +40 -0
  306. package/dist/runtime/countermodel-min/types.d.ts.map +1 -0
  307. package/dist/runtime/countermodel-min/types.js +6 -0
  308. package/dist/runtime/countermodel-min/types.js.map +1 -0
  309. package/dist/runtime/fca/context.d.ts +46 -0
  310. package/dist/runtime/fca/context.d.ts.map +1 -0
  311. package/dist/runtime/fca/context.js +155 -0
  312. package/dist/runtime/fca/context.js.map +1 -0
  313. package/dist/runtime/fca/implications.d.ts +10 -0
  314. package/dist/runtime/fca/implications.d.ts.map +1 -0
  315. package/dist/runtime/fca/implications.js +33 -0
  316. package/dist/runtime/fca/implications.js.map +1 -0
  317. package/dist/runtime/fca/index.d.ts +6 -0
  318. package/dist/runtime/fca/index.d.ts.map +1 -0
  319. package/dist/runtime/fca/index.js +39 -0
  320. package/dist/runtime/fca/index.js.map +1 -0
  321. package/dist/runtime/fca/lattice.d.ts +10 -0
  322. package/dist/runtime/fca/lattice.d.ts.map +1 -0
  323. package/dist/runtime/fca/lattice.js +86 -0
  324. package/dist/runtime/fca/lattice.js.map +1 -0
  325. package/dist/runtime/fca/next-closure.d.ts +12 -0
  326. package/dist/runtime/fca/next-closure.d.ts.map +1 -0
  327. package/dist/runtime/fca/next-closure.js +99 -0
  328. package/dist/runtime/fca/next-closure.js.map +1 -0
  329. package/dist/runtime/fca/types.d.ts +31 -0
  330. package/dist/runtime/fca/types.d.ts.map +1 -0
  331. package/dist/runtime/fca/types.js +30 -0
  332. package/dist/runtime/fca/types.js.map +1 -0
  333. package/dist/runtime/mus/extract.d.ts +34 -0
  334. package/dist/runtime/mus/extract.d.ts.map +1 -0
  335. package/dist/runtime/mus/extract.js +243 -0
  336. package/dist/runtime/mus/extract.js.map +1 -0
  337. package/dist/runtime/mus/index.d.ts +4 -0
  338. package/dist/runtime/mus/index.d.ts.map +1 -0
  339. package/dist/runtime/mus/index.js +12 -0
  340. package/dist/runtime/mus/index.js.map +1 -0
  341. package/dist/runtime/mus/quickxplain.d.ts +10 -0
  342. package/dist/runtime/mus/quickxplain.d.ts.map +1 -0
  343. package/dist/runtime/mus/quickxplain.js +100 -0
  344. package/dist/runtime/mus/quickxplain.js.map +1 -0
  345. package/dist/runtime/mus/types.d.ts +59 -0
  346. package/dist/runtime/mus/types.d.ts.map +1 -0
  347. package/dist/runtime/mus/types.js +20 -0
  348. package/dist/runtime/mus/types.js.map +1 -0
  349. package/dist/runtime/proof-minify/index.d.ts +3 -0
  350. package/dist/runtime/proof-minify/index.d.ts.map +1 -0
  351. package/dist/runtime/proof-minify/index.js +13 -0
  352. package/dist/runtime/proof-minify/index.js.map +1 -0
  353. package/dist/runtime/proof-minify/minify.d.ts +13 -0
  354. package/dist/runtime/proof-minify/minify.d.ts.map +1 -0
  355. package/dist/runtime/proof-minify/minify.js +540 -0
  356. package/dist/runtime/proof-minify/minify.js.map +1 -0
  357. package/dist/runtime/proof-minify/types.d.ts +89 -0
  358. package/dist/runtime/proof-minify/types.d.ts.map +1 -0
  359. package/dist/runtime/proof-minify/types.js +16 -0
  360. package/dist/runtime/proof-minify/types.js.map +1 -0
  361. package/dist/runtime/symbolic-diff/constructors.d.ts +16 -0
  362. package/dist/runtime/symbolic-diff/constructors.d.ts.map +1 -0
  363. package/dist/runtime/symbolic-diff/constructors.js +75 -0
  364. package/dist/runtime/symbolic-diff/constructors.js.map +1 -0
  365. package/dist/runtime/symbolic-diff/differentiate.d.ts +22 -0
  366. package/dist/runtime/symbolic-diff/differentiate.d.ts.map +1 -0
  367. package/dist/runtime/symbolic-diff/differentiate.js +107 -0
  368. package/dist/runtime/symbolic-diff/differentiate.js.map +1 -0
  369. package/dist/runtime/symbolic-diff/evaluate.d.ts +3 -0
  370. package/dist/runtime/symbolic-diff/evaluate.d.ts.map +1 -0
  371. package/dist/runtime/symbolic-diff/evaluate.js +47 -0
  372. package/dist/runtime/symbolic-diff/evaluate.js.map +1 -0
  373. package/dist/runtime/symbolic-diff/index.d.ts +9 -0
  374. package/dist/runtime/symbolic-diff/index.d.ts.map +1 -0
  375. package/dist/runtime/symbolic-diff/index.js +34 -0
  376. package/dist/runtime/symbolic-diff/index.js.map +1 -0
  377. package/dist/runtime/symbolic-diff/parse.d.ts +16 -0
  378. package/dist/runtime/symbolic-diff/parse.d.ts.map +1 -0
  379. package/dist/runtime/symbolic-diff/parse.js +206 -0
  380. package/dist/runtime/symbolic-diff/parse.js.map +1 -0
  381. package/dist/runtime/symbolic-diff/simplify.d.ts +11 -0
  382. package/dist/runtime/symbolic-diff/simplify.d.ts.map +1 -0
  383. package/dist/runtime/symbolic-diff/simplify.js +214 -0
  384. package/dist/runtime/symbolic-diff/simplify.js.map +1 -0
  385. package/dist/runtime/symbolic-diff/stringify.d.ts +3 -0
  386. package/dist/runtime/symbolic-diff/stringify.d.ts.map +1 -0
  387. package/dist/runtime/symbolic-diff/stringify.js +69 -0
  388. package/dist/runtime/symbolic-diff/stringify.js.map +1 -0
  389. package/dist/runtime/symbolic-diff/types.d.ts +35 -0
  390. package/dist/runtime/symbolic-diff/types.d.ts.map +1 -0
  391. package/dist/runtime/symbolic-diff/types.js +9 -0
  392. package/dist/runtime/symbolic-diff/types.js.map +1 -0
  393. package/dist/runtime/term-rewriting/critical-pairs.d.ts +38 -0
  394. package/dist/runtime/term-rewriting/critical-pairs.d.ts.map +1 -0
  395. package/dist/runtime/term-rewriting/critical-pairs.js +109 -0
  396. package/dist/runtime/term-rewriting/critical-pairs.js.map +1 -0
  397. package/dist/runtime/term-rewriting/index.d.ts +9 -0
  398. package/dist/runtime/term-rewriting/index.d.ts.map +1 -0
  399. package/dist/runtime/term-rewriting/index.js +38 -0
  400. package/dist/runtime/term-rewriting/index.js.map +1 -0
  401. package/dist/runtime/term-rewriting/knuth-bendix.d.ts +29 -0
  402. package/dist/runtime/term-rewriting/knuth-bendix.d.ts.map +1 -0
  403. package/dist/runtime/term-rewriting/knuth-bendix.js +196 -0
  404. package/dist/runtime/term-rewriting/knuth-bendix.js.map +1 -0
  405. package/dist/runtime/term-rewriting/lpo.d.ts +17 -0
  406. package/dist/runtime/term-rewriting/lpo.d.ts.map +1 -0
  407. package/dist/runtime/term-rewriting/lpo.js +158 -0
  408. package/dist/runtime/term-rewriting/lpo.js.map +1 -0
  409. package/dist/runtime/term-rewriting/rewrite.d.ts +44 -0
  410. package/dist/runtime/term-rewriting/rewrite.d.ts.map +1 -0
  411. package/dist/runtime/term-rewriting/rewrite.js +189 -0
  412. package/dist/runtime/term-rewriting/rewrite.js.map +1 -0
  413. package/dist/runtime/term-rewriting/term-utils.d.ts +64 -0
  414. package/dist/runtime/term-rewriting/term-utils.d.ts.map +1 -0
  415. package/dist/runtime/term-rewriting/term-utils.js +360 -0
  416. package/dist/runtime/term-rewriting/term-utils.js.map +1 -0
  417. package/dist/runtime/term-rewriting/types.d.ts +66 -0
  418. package/dist/runtime/term-rewriting/types.d.ts.map +1 -0
  419. package/dist/runtime/term-rewriting/types.js +21 -0
  420. package/dist/runtime/term-rewriting/types.js.map +1 -0
  421. package/dist/solver/cdcl-v2-incremental/index.d.ts +3 -0
  422. package/dist/solver/cdcl-v2-incremental/index.d.ts.map +1 -0
  423. package/dist/solver/cdcl-v2-incremental/index.js +16 -0
  424. package/dist/solver/cdcl-v2-incremental/index.js.map +1 -0
  425. package/dist/solver/cdcl-v2-incremental/solver.d.ts +83 -0
  426. package/dist/solver/cdcl-v2-incremental/solver.d.ts.map +1 -0
  427. package/dist/solver/cdcl-v2-incremental/solver.js +727 -0
  428. package/dist/solver/cdcl-v2-incremental/solver.js.map +1 -0
  429. package/dist/solver/cdcl-v2-incremental/types.d.ts +47 -0
  430. package/dist/solver/cdcl-v2-incremental/types.d.ts.map +1 -0
  431. package/dist/solver/cdcl-v2-incremental/types.js +13 -0
  432. package/dist/solver/cdcl-v2-incremental/types.js.map +1 -0
  433. package/dist/tests/abduction/abduction.test.d.ts +2 -0
  434. package/dist/tests/abduction/abduction.test.d.ts.map +1 -0
  435. package/dist/tests/abduction/abduction.test.js +380 -0
  436. package/dist/tests/abduction/abduction.test.js.map +1 -0
  437. package/dist/tests/bayesian/bayesian.test.d.ts +2 -0
  438. package/dist/tests/bayesian/bayesian.test.d.ts.map +1 -0
  439. package/dist/tests/bayesian/bayesian.test.js +328 -0
  440. package/dist/tests/bayesian/bayesian.test.js.map +1 -0
  441. package/dist/tests/belief-revision/agm.test.d.ts +2 -0
  442. package/dist/tests/belief-revision/agm.test.d.ts.map +1 -0
  443. package/dist/tests/belief-revision/agm.test.js +173 -0
  444. package/dist/tests/belief-revision/agm.test.js.map +1 -0
  445. package/dist/tests/bisimulation/paige-tarjan.test.d.ts +2 -0
  446. package/dist/tests/bisimulation/paige-tarjan.test.d.ts.map +1 -0
  447. package/dist/tests/bisimulation/paige-tarjan.test.js +254 -0
  448. package/dist/tests/bisimulation/paige-tarjan.test.js.map +1 -0
  449. package/dist/tests/countermodel-min/minimize.test.d.ts +2 -0
  450. package/dist/tests/countermodel-min/minimize.test.d.ts.map +1 -0
  451. package/dist/tests/countermodel-min/minimize.test.js +241 -0
  452. package/dist/tests/countermodel-min/minimize.test.js.map +1 -0
  453. package/dist/tests/ctl/check.test.d.ts +2 -0
  454. package/dist/tests/ctl/check.test.d.ts.map +1 -0
  455. package/dist/tests/ctl/check.test.js +337 -0
  456. package/dist/tests/ctl/check.test.js.map +1 -0
  457. package/dist/tests/curry-howard/infer.test.d.ts +2 -0
  458. package/dist/tests/curry-howard/infer.test.d.ts.map +1 -0
  459. package/dist/tests/curry-howard/infer.test.js +93 -0
  460. package/dist/tests/curry-howard/infer.test.js.map +1 -0
  461. package/dist/tests/curry-howard/proof.test.d.ts +2 -0
  462. package/dist/tests/curry-howard/proof.test.d.ts.map +1 -0
  463. package/dist/tests/curry-howard/proof.test.js +105 -0
  464. package/dist/tests/curry-howard/proof.test.js.map +1 -0
  465. package/dist/tests/curry-howard/reduce.test.d.ts +2 -0
  466. package/dist/tests/curry-howard/reduce.test.d.ts.map +1 -0
  467. package/dist/tests/curry-howard/reduce.test.js +109 -0
  468. package/dist/tests/curry-howard/reduce.test.js.map +1 -0
  469. package/dist/tests/default-logic/extensions.test.d.ts +2 -0
  470. package/dist/tests/default-logic/extensions.test.d.ts.map +1 -0
  471. package/dist/tests/default-logic/extensions.test.js +323 -0
  472. package/dist/tests/default-logic/extensions.test.js.map +1 -0
  473. package/dist/tests/description-logic/alc.test.d.ts +2 -0
  474. package/dist/tests/description-logic/alc.test.d.ts.map +1 -0
  475. package/dist/tests/description-logic/alc.test.js +253 -0
  476. package/dist/tests/description-logic/alc.test.js.map +1 -0
  477. package/dist/tests/fca/fca.test.d.ts +2 -0
  478. package/dist/tests/fca/fca.test.d.ts.map +1 -0
  479. package/dist/tests/fca/fca.test.js +317 -0
  480. package/dist/tests/fca/fca.test.js.map +1 -0
  481. package/dist/tests/fol-prover-equality/prove.test.d.ts +2 -0
  482. package/dist/tests/fol-prover-equality/prove.test.d.ts.map +1 -0
  483. package/dist/tests/fol-prover-equality/prove.test.js +179 -0
  484. package/dist/tests/fol-prover-equality/prove.test.js.map +1 -0
  485. package/dist/tests/hybrid-logic/semantics.test.d.ts +2 -0
  486. package/dist/tests/hybrid-logic/semantics.test.d.ts.map +1 -0
  487. package/dist/tests/hybrid-logic/semantics.test.js +169 -0
  488. package/dist/tests/hybrid-logic/semantics.test.js.map +1 -0
  489. package/dist/tests/intuitionistic-nj/nj.test.d.ts +2 -0
  490. package/dist/tests/intuitionistic-nj/nj.test.d.ts.map +1 -0
  491. package/dist/tests/intuitionistic-nj/nj.test.js +216 -0
  492. package/dist/tests/intuitionistic-nj/nj.test.js.map +1 -0
  493. package/dist/tests/lambda-calc/lambda-calc.test.d.ts +2 -0
  494. package/dist/tests/lambda-calc/lambda-calc.test.d.ts.map +1 -0
  495. package/dist/tests/lambda-calc/lambda-calc.test.js +164 -0
  496. package/dist/tests/lambda-calc/lambda-calc.test.js.map +1 -0
  497. package/dist/tests/ltl-sat/sat.test.d.ts +2 -0
  498. package/dist/tests/ltl-sat/sat.test.d.ts.map +1 -0
  499. package/dist/tests/ltl-sat/sat.test.js +160 -0
  500. package/dist/tests/ltl-sat/sat.test.js.map +1 -0
  501. package/dist/tests/many-valued/many-valued.test.d.ts +2 -0
  502. package/dist/tests/many-valued/many-valued.test.d.ts.map +1 -0
  503. package/dist/tests/many-valued/many-valued.test.js +150 -0
  504. package/dist/tests/many-valued/many-valued.test.js.map +1 -0
  505. package/dist/tests/modal-frame-axioms/frame-axioms.test.d.ts +2 -0
  506. package/dist/tests/modal-frame-axioms/frame-axioms.test.d.ts.map +1 -0
  507. package/dist/tests/modal-frame-axioms/frame-axioms.test.js +236 -0
  508. package/dist/tests/modal-frame-axioms/frame-axioms.test.js.map +1 -0
  509. package/dist/tests/mus/extract.test.d.ts +2 -0
  510. package/dist/tests/mus/extract.test.d.ts.map +1 -0
  511. package/dist/tests/mus/extract.test.js +352 -0
  512. package/dist/tests/mus/extract.test.js.map +1 -0
  513. package/dist/tests/proof-minify/minify.test.d.ts +2 -0
  514. package/dist/tests/proof-minify/minify.test.d.ts.map +1 -0
  515. package/dist/tests/proof-minify/minify.test.js +281 -0
  516. package/dist/tests/proof-minify/minify.test.js.map +1 -0
  517. package/dist/tests/sat-v2-incremental/basic.test.d.ts +2 -0
  518. package/dist/tests/sat-v2-incremental/basic.test.d.ts.map +1 -0
  519. package/dist/tests/sat-v2-incremental/basic.test.js +352 -0
  520. package/dist/tests/sat-v2-incremental/basic.test.js.map +1 -0
  521. package/dist/tests/sequent-g3/prover.test.d.ts +2 -0
  522. package/dist/tests/sequent-g3/prover.test.d.ts.map +1 -0
  523. package/dist/tests/sequent-g3/prover.test.js +205 -0
  524. package/dist/tests/sequent-g3/prover.test.js.map +1 -0
  525. package/dist/tests/substructural/prover.test.d.ts +2 -0
  526. package/dist/tests/substructural/prover.test.d.ts.map +1 -0
  527. package/dist/tests/substructural/prover.test.js +271 -0
  528. package/dist/tests/substructural/prover.test.js.map +1 -0
  529. package/dist/tests/symbolic-diff/symbolic-diff.test.d.ts +2 -0
  530. package/dist/tests/symbolic-diff/symbolic-diff.test.d.ts.map +1 -0
  531. package/dist/tests/symbolic-diff/symbolic-diff.test.js +278 -0
  532. package/dist/tests/symbolic-diff/symbolic-diff.test.js.map +1 -0
  533. package/dist/tests/term-rewriting/critical-pairs.test.d.ts +2 -0
  534. package/dist/tests/term-rewriting/critical-pairs.test.d.ts.map +1 -0
  535. package/dist/tests/term-rewriting/critical-pairs.test.js +34 -0
  536. package/dist/tests/term-rewriting/critical-pairs.test.js.map +1 -0
  537. package/dist/tests/term-rewriting/knuth-bendix.test.d.ts +2 -0
  538. package/dist/tests/term-rewriting/knuth-bendix.test.d.ts.map +1 -0
  539. package/dist/tests/term-rewriting/knuth-bendix.test.js +94 -0
  540. package/dist/tests/term-rewriting/knuth-bendix.test.js.map +1 -0
  541. package/dist/tests/term-rewriting/lpo.test.d.ts +2 -0
  542. package/dist/tests/term-rewriting/lpo.test.d.ts.map +1 -0
  543. package/dist/tests/term-rewriting/lpo.test.js +57 -0
  544. package/dist/tests/term-rewriting/lpo.test.js.map +1 -0
  545. package/dist/tests/term-rewriting/rewrite.test.d.ts +2 -0
  546. package/dist/tests/term-rewriting/rewrite.test.d.ts.map +1 -0
  547. package/dist/tests/term-rewriting/rewrite.test.js +56 -0
  548. package/dist/tests/term-rewriting/rewrite.test.js.map +1 -0
  549. package/dist/tests/term-rewriting/term-utils.test.d.ts +2 -0
  550. package/dist/tests/term-rewriting/term-utils.test.d.ts.map +1 -0
  551. package/dist/tests/term-rewriting/term-utils.test.js +58 -0
  552. package/dist/tests/term-rewriting/term-utils.test.js.map +1 -0
  553. package/package.json +1 -1
@@ -0,0 +1,64 @@
1
+ import type { Substitution, Term } from './types';
2
+ /**
3
+ * Igualdad estructural de términos (iterativa para soportar
4
+ * términos muy profundos sin stack overflow).
5
+ */
6
+ export declare function termEquals(a: Term, b: Term): boolean;
7
+ /**
8
+ * Clona un término (iterativo, soporta árboles profundos).
9
+ */
10
+ export declare function cloneTerm(t: Term): Term;
11
+ /**
12
+ * Conjunto de variables que aparecen en t.
13
+ */
14
+ export declare function varsOf(t: Term, acc?: Set<string>): Set<string>;
15
+ /**
16
+ * Aplica una sustitución a t (iterativo, soporta términos profundos).
17
+ *
18
+ * Para variables, sigue la cadena de bindings con detección de
19
+ * ciclos (un MGU de Robinson puede tener cadenas x → y → f(z)
20
+ * que sólo terminan tras varios saltos).
21
+ */
22
+ export declare function applySubst(t: Term, subst: Substitution): Term;
23
+ /**
24
+ * Occurs check: ¿aparece la variable v en t?
25
+ *
26
+ * Indispensable para evitar unificar x con f(x) creando términos
27
+ * infinitos como f(f(f(...))).
28
+ */
29
+ export declare function occursIn(v: string, t: Term): boolean;
30
+ /**
31
+ * Matching (pattern matching): encuentra σ tal que σ(pattern) = target.
32
+ *
33
+ * A diferencia de la unificación, solo las variables del pattern
34
+ * pueden ligarse. Si target contiene variables, se tratan como
35
+ * constantes opacas. Devuelve null si no hay match.
36
+ */
37
+ export declare function match(pattern: Term, target: Term, subst?: Substitution): Substitution | null;
38
+ /**
39
+ * Unificación de Robinson. Devuelve un MGU (most general unifier)
40
+ * o null si los términos no unifican.
41
+ *
42
+ * Implementación recursiva con occurs check.
43
+ */
44
+ export declare function unify(s: Term, t: Term, subst?: Substitution): Substitution | null;
45
+ /**
46
+ * Renombra todas las variables de t agregándole un sufijo (`_<suffix>`).
47
+ *
48
+ * Necesario antes de unificar dos reglas en KB completion: las variables
49
+ * deben ser disjuntas para que LHS₁ y LHS₂ no compartan nombres
50
+ * espuriamente.
51
+ */
52
+ export declare function renameVars(t: Term, suffix: string): Term;
53
+ /**
54
+ * Tamaño del término (número de nodos). Iterativo para evitar
55
+ * stack overflow en términos muy profundos.
56
+ */
57
+ export declare function termSize(t: Term): number;
58
+ /**
59
+ * Helpers para construir términos (azúcar para tests).
60
+ */
61
+ export declare function v(name: string): Term;
62
+ export declare function f(name: string, ...args: Term[]): Term;
63
+ export declare function c(name: string): Term;
64
+ //# sourceMappingURL=term-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"term-utils.d.ts","sourceRoot":"","sources":["../../../src/runtime/term-rewriting/term-utils.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAElD;;;GAGG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,GAAG,OAAO,CAsBpD;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,IAAI,GAAG,IAAI,CAEvC;AAsDD;;GAEG;AACH,wBAAgB,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,GAAE,GAAG,CAAC,MAAM,CAAa,GAAG,GAAG,CAAC,MAAM,CAAC,CASzE;AAED;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,YAAY,GAAG,IAAI,CAsD7D;AAWD;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,GAAG,OAAO,CAYpD;AAED;;;;;;GAMG;AACH,wBAAgB,KAAK,CACnB,OAAO,EAAE,IAAI,EACb,MAAM,EAAE,IAAI,EACZ,KAAK,GAAE,YAAwB,GAC9B,YAAY,GAAG,IAAI,CA2BrB;AAED;;;;;GAKG;AACH,wBAAgB,KAAK,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,GAAE,YAAwB,GAAG,YAAY,GAAG,IAAI,CA8B5F;AAiBD;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAExD;AAED;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EAAE,IAAI,GAAG,MAAM,CAYxC;AAED;;GAEG;AACH,wBAAgB,CAAC,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAEpC;AAED,wBAAgB,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,CAErD;AAED,wBAAgB,CAAC,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAEpC"}
@@ -0,0 +1,360 @@
1
+ "use strict";
2
+ // ============================================================
3
+ // ST Term Rewriting — Utilidades de términos
4
+ // ============================================================
5
+ //
6
+ // Operaciones básicas sobre términos de primer orden:
7
+ // - igualdad estructural
8
+ // - sustitución
9
+ // - matching (un sentido) y unificación (Robinson)
10
+ // - occurs check
11
+ // - recolección de variables
12
+ // - clonación
13
+ //
14
+ // Las sustituciones son Map<string, Term>. Componer dos
15
+ // sustituciones σ ∘ τ se hace aplicando τ a los rangos de σ
16
+ // y uniendo: composeSubst(σ, τ).
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ exports.termEquals = termEquals;
19
+ exports.cloneTerm = cloneTerm;
20
+ exports.varsOf = varsOf;
21
+ exports.applySubst = applySubst;
22
+ exports.occursIn = occursIn;
23
+ exports.match = match;
24
+ exports.unify = unify;
25
+ exports.renameVars = renameVars;
26
+ exports.termSize = termSize;
27
+ exports.v = v;
28
+ exports.f = f;
29
+ exports.c = c;
30
+ /**
31
+ * Igualdad estructural de términos (iterativa para soportar
32
+ * términos muy profundos sin stack overflow).
33
+ */
34
+ function termEquals(a, b) {
35
+ const stack = [[a, b]];
36
+ while (stack.length > 0) {
37
+ const pair = stack.pop();
38
+ if (pair === undefined)
39
+ break;
40
+ const [x, y] = pair;
41
+ if (x.kind !== y.kind)
42
+ return false;
43
+ if (x.kind === 'var' && y.kind === 'var') {
44
+ if (x.name !== y.name)
45
+ return false;
46
+ continue;
47
+ }
48
+ if (x.kind === 'func' && y.kind === 'func') {
49
+ if (x.name !== y.name || x.args.length !== y.args.length)
50
+ return false;
51
+ for (let i = 0; i < x.args.length; i++) {
52
+ const xi = x.args[i];
53
+ const yi = y.args[i];
54
+ if (xi === undefined || yi === undefined)
55
+ return false;
56
+ stack.push([xi, yi]);
57
+ }
58
+ }
59
+ }
60
+ return true;
61
+ }
62
+ /**
63
+ * Clona un término (iterativo, soporta árboles profundos).
64
+ */
65
+ function cloneTerm(t) {
66
+ return mapTerm(t, (leaf) => ({ kind: 'var', name: leaf.name }));
67
+ }
68
+ /**
69
+ * Helper: map post-order iterativo sobre un término.
70
+ * `varMap` decide cómo transformar variables (la única transformación
71
+ * que necesitamos hacer top-down en los usos actuales).
72
+ */
73
+ function mapTerm(t, varMap) {
74
+ const stack = [{ node: t, result: null, children: [] }];
75
+ let pending = null;
76
+ while (stack.length > 0) {
77
+ const frame = stack[stack.length - 1];
78
+ if (frame === undefined)
79
+ break;
80
+ if (pending !== null) {
81
+ frame.children.push(pending);
82
+ pending = null;
83
+ }
84
+ if (frame.node.kind === 'var') {
85
+ pending = varMap(frame.node);
86
+ stack.pop();
87
+ continue;
88
+ }
89
+ // func
90
+ if (frame.children.length < frame.node.args.length) {
91
+ const nextArg = frame.node.args[frame.children.length];
92
+ if (nextArg === undefined) {
93
+ // shouldn't happen; safeguard
94
+ pending = { kind: 'func', name: frame.node.name, args: frame.children };
95
+ stack.pop();
96
+ continue;
97
+ }
98
+ stack.push({ node: nextArg, result: null, children: [] });
99
+ continue;
100
+ }
101
+ // Todos los args procesados
102
+ pending = { kind: 'func', name: frame.node.name, args: frame.children };
103
+ stack.pop();
104
+ }
105
+ if (pending === null) {
106
+ throw new Error('mapTerm: unreachable — pending result is null');
107
+ }
108
+ return pending;
109
+ }
110
+ /**
111
+ * Conjunto de variables que aparecen en t.
112
+ */
113
+ function varsOf(t, acc = new Set()) {
114
+ const stack = [t];
115
+ while (stack.length > 0) {
116
+ const node = stack.pop();
117
+ if (node === undefined)
118
+ break;
119
+ if (node.kind === 'var')
120
+ acc.add(node.name);
121
+ else
122
+ for (const a of node.args)
123
+ stack.push(a);
124
+ }
125
+ return acc;
126
+ }
127
+ /**
128
+ * Aplica una sustitución a t (iterativo, soporta términos profundos).
129
+ *
130
+ * Para variables, sigue la cadena de bindings con detección de
131
+ * ciclos (un MGU de Robinson puede tener cadenas x → y → f(z)
132
+ * que sólo terminan tras varios saltos).
133
+ */
134
+ function applySubst(t, subst) {
135
+ // Implementación recursiva mediante `mapTerm`: cada variable se
136
+ // resuelve siguiendo la cadena; si el resultado es func, sus args
137
+ // también deben sustituirse — eso ya lo hace mapTerm porque las
138
+ // varMap devuelven Terms y cualquier subterm interno pasaría por
139
+ // la misma lógica. PERO mapTerm no recursa en el resultado de
140
+ // varMap; sólo procesa la estructura original. Para que las
141
+ // sustituciones en cadena se apliquen, resolvemos la cadena hasta
142
+ // un valor final, y sus args sub se aplican recursivamente.
143
+ //
144
+ // Como pueden ser profundos, lo hacemos en dos pasadas:
145
+ // 1. resolveVar(name): sigue cadena con detección de ciclos,
146
+ // devuelve un Term (que puede ser otra var, una func, o el
147
+ // var original si no está mapeada).
148
+ // 2. mapTerm con varMap = resolveVar, luego para cualquier func
149
+ // resultante seguimos procesando sus args. Pero como mapTerm
150
+ // ya está procesando la estructura, el resultado de varMap
151
+ // no se vuelve a explorar.
152
+ //
153
+ // Solución: hacemos un fixed-point sobre el resultado final, pero
154
+ // sin recursión profunda — reaplicamos mapTerm hasta que la
155
+ // aplicación no cambie. Para términos no patológicos esto es ≤1-2
156
+ // pasadas.
157
+ const resolveVar = (leaf) => {
158
+ const seen = new Set();
159
+ let current = leaf;
160
+ while (current.kind === 'var') {
161
+ if (seen.has(current.name))
162
+ return current;
163
+ seen.add(current.name);
164
+ const next = subst.get(current.name);
165
+ if (next === undefined)
166
+ return current;
167
+ current = next;
168
+ }
169
+ return current;
170
+ };
171
+ // Aplicamos una vez: mapeo cada variable a su resolución directa
172
+ // (que puede ser func con vars adentro).
173
+ let result = mapTerm(t, resolveVar);
174
+ // Si la sustitución tiene cadenas (x → y donde y también está
175
+ // mapeada a algo), una sola pasada no basta. Iteramos con un fix-
176
+ // point bounded; cycle-safe gracias a `seen` en resolveVar.
177
+ for (let pass = 0; pass < 4; pass++) {
178
+ const next = mapTerm(result, resolveVar);
179
+ // Detección rápida: si el resultado tiene la misma raíz/estructura
180
+ // de aridad, asumimos estable. Para corrección estricta usamos
181
+ // termEquals, pero eso sería O(n) extra por pasada — mejor lo
182
+ // dejamos limitado a 4 pasadas que cubren prácticamente todos
183
+ // los casos de KB.
184
+ if (termEqualsShallow(next, result))
185
+ return next;
186
+ result = next;
187
+ }
188
+ return result;
189
+ }
190
+ /**
191
+ * Igualdad rápida (raíz + aridad) — usada por applySubst para
192
+ * decidir fixed-point sin pagar termEquals completo.
193
+ */
194
+ function termEqualsShallow(a, b) {
195
+ if (a === b)
196
+ return true;
197
+ return termEquals(a, b);
198
+ }
199
+ /**
200
+ * Occurs check: ¿aparece la variable v en t?
201
+ *
202
+ * Indispensable para evitar unificar x con f(x) creando términos
203
+ * infinitos como f(f(f(...))).
204
+ */
205
+ function occursIn(v, t) {
206
+ const stack = [t];
207
+ while (stack.length > 0) {
208
+ const node = stack.pop();
209
+ if (node === undefined)
210
+ break;
211
+ if (node.kind === 'var') {
212
+ if (node.name === v)
213
+ return true;
214
+ }
215
+ else {
216
+ for (const a of node.args)
217
+ stack.push(a);
218
+ }
219
+ }
220
+ return false;
221
+ }
222
+ /**
223
+ * Matching (pattern matching): encuentra σ tal que σ(pattern) = target.
224
+ *
225
+ * A diferencia de la unificación, solo las variables del pattern
226
+ * pueden ligarse. Si target contiene variables, se tratan como
227
+ * constantes opacas. Devuelve null si no hay match.
228
+ */
229
+ function match(pattern, target, subst = new Map()) {
230
+ // Iterativo: stack de pares (pattern, target) que faltan unificar.
231
+ const sigma = new Map(subst);
232
+ const stack = [[pattern, target]];
233
+ while (stack.length > 0) {
234
+ const pair = stack.pop();
235
+ if (pair === undefined)
236
+ break;
237
+ const [p, q] = pair;
238
+ if (p.kind === 'var') {
239
+ const existing = sigma.get(p.name);
240
+ if (existing !== undefined) {
241
+ if (!termEquals(existing, q))
242
+ return null;
243
+ continue;
244
+ }
245
+ sigma.set(p.name, q);
246
+ continue;
247
+ }
248
+ if (q.kind !== 'func')
249
+ return null;
250
+ if (p.name !== q.name || p.args.length !== q.args.length)
251
+ return null;
252
+ for (let i = 0; i < p.args.length; i++) {
253
+ const pa = p.args[i];
254
+ const qa = q.args[i];
255
+ if (pa === undefined || qa === undefined)
256
+ return null;
257
+ stack.push([pa, qa]);
258
+ }
259
+ }
260
+ return sigma;
261
+ }
262
+ /**
263
+ * Unificación de Robinson. Devuelve un MGU (most general unifier)
264
+ * o null si los términos no unifican.
265
+ *
266
+ * Implementación recursiva con occurs check.
267
+ */
268
+ function unify(s, t, subst = new Map()) {
269
+ const sigma = new Map(subst);
270
+ const stack = [[s, t]];
271
+ while (stack.length > 0) {
272
+ const pair = stack.pop();
273
+ if (pair === undefined)
274
+ break;
275
+ const a = walk(pair[0], sigma);
276
+ const b = walk(pair[1], sigma);
277
+ if (a.kind === 'var' && b.kind === 'var' && a.name === b.name)
278
+ continue;
279
+ if (a.kind === 'var') {
280
+ if (occursIn(a.name, b))
281
+ return null;
282
+ sigma.set(a.name, b);
283
+ continue;
284
+ }
285
+ if (b.kind === 'var') {
286
+ if (occursIn(b.name, a))
287
+ return null;
288
+ sigma.set(b.name, a);
289
+ continue;
290
+ }
291
+ // Ambos func
292
+ if (a.name !== b.name || a.args.length !== b.args.length)
293
+ return null;
294
+ for (let i = 0; i < a.args.length; i++) {
295
+ const ai = a.args[i];
296
+ const bi = b.args[i];
297
+ if (ai === undefined || bi === undefined)
298
+ return null;
299
+ stack.push([ai, bi]);
300
+ }
301
+ }
302
+ return sigma;
303
+ }
304
+ /**
305
+ * Sigue la cadena de sustituciones para una variable, hasta llegar
306
+ * a un valor no-variable o a una variable libre. Evita recursión
307
+ * profunda durante unify.
308
+ */
309
+ function walk(t, subst) {
310
+ let current = t;
311
+ while (current.kind === 'var') {
312
+ const next = subst.get(current.name);
313
+ if (next === undefined)
314
+ return current;
315
+ current = next;
316
+ }
317
+ return current;
318
+ }
319
+ /**
320
+ * Renombra todas las variables de t agregándole un sufijo (`_<suffix>`).
321
+ *
322
+ * Necesario antes de unificar dos reglas en KB completion: las variables
323
+ * deben ser disjuntas para que LHS₁ y LHS₂ no compartan nombres
324
+ * espuriamente.
325
+ */
326
+ function renameVars(t, suffix) {
327
+ return mapTerm(t, (leaf) => ({ kind: 'var', name: `${leaf.name}_${suffix}` }));
328
+ }
329
+ /**
330
+ * Tamaño del término (número de nodos). Iterativo para evitar
331
+ * stack overflow en términos muy profundos.
332
+ */
333
+ function termSize(t) {
334
+ let count = 0;
335
+ const stack = [t];
336
+ while (stack.length > 0) {
337
+ const node = stack.pop();
338
+ if (node === undefined)
339
+ break;
340
+ count++;
341
+ if (node.kind === 'func') {
342
+ for (const a of node.args)
343
+ stack.push(a);
344
+ }
345
+ }
346
+ return count;
347
+ }
348
+ /**
349
+ * Helpers para construir términos (azúcar para tests).
350
+ */
351
+ function v(name) {
352
+ return { kind: 'var', name };
353
+ }
354
+ function f(name, ...args) {
355
+ return { kind: 'func', name, args };
356
+ }
357
+ function c(name) {
358
+ return { kind: 'func', name, args: [] };
359
+ }
360
+ //# sourceMappingURL=term-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"term-utils.js","sourceRoot":"","sources":["../../../src/runtime/term-rewriting/term-utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,66 @@
1
+ /**
2
+ * Término de primer orden.
3
+ *
4
+ * - `var`: variable de unificación (e.g., x, y, z).
5
+ * - `func`: símbolo de función con aridad implícita por len(args).
6
+ * args = [] significa constante (e.g., 0, e, true).
7
+ */
8
+ export type Term = {
9
+ kind: 'var';
10
+ name: string;
11
+ } | {
12
+ kind: 'func';
13
+ name: string;
14
+ args: Term[];
15
+ };
16
+ /**
17
+ * Regla de reescritura l → r.
18
+ *
19
+ * Invariante: vars(r) ⊆ vars(l). Si no se cumple, normalización
20
+ * puede introducir variables libres y romper la lógica.
21
+ */
22
+ export interface RewriteRule {
23
+ lhs: Term;
24
+ rhs: Term;
25
+ }
26
+ /**
27
+ * Term Rewriting System.
28
+ */
29
+ export interface TRS {
30
+ rules: RewriteRule[];
31
+ }
32
+ /**
33
+ * Sustitución: mapa variable → término.
34
+ */
35
+ export type Substitution = Map<string, Term>;
36
+ /**
37
+ * Resultado de Knuth-Bendix completion.
38
+ *
39
+ * - `trs`: sistema final (potencialmente extendido).
40
+ * - `completed`: true si convergió (sin critical pairs unjoinables).
41
+ * - `criticalPairs`: total de pares críticos examinados.
42
+ * - `steps`: iteraciones del loop principal.
43
+ */
44
+ export interface KBResult {
45
+ trs: TRS;
46
+ completed: boolean;
47
+ criticalPairs: number;
48
+ steps: number;
49
+ }
50
+ /**
51
+ * Opciones para Knuth-Bendix completion.
52
+ *
53
+ * - `ordering`: estrategia para orientar nuevas ecuaciones.
54
+ * Por default LPO (Lexicographic Path Order).
55
+ * - `maxSteps`: cota para evitar loops infinitos cuando el sistema
56
+ * no es completable (KB es semi-decidible).
57
+ * - `precedence`: orden parcial sobre símbolos de función
58
+ * (map name → priority; mayor = mayor en el orden).
59
+ * Requerido para LPO.
60
+ */
61
+ export interface KBOptions {
62
+ ordering?: 'lpo' | 'kbo';
63
+ maxSteps?: number;
64
+ precedence?: Map<string, number>;
65
+ }
66
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/runtime/term-rewriting/types.ts"],"names":[],"mappings":"AAmBA;;;;;;GAMG;AACH,MAAM,MAAM,IAAI,GAAG;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,IAAI,EAAE,CAAA;CAAE,CAAC;AAEhG;;;;;GAKG;AACH,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,IAAI,CAAC;IACV,GAAG,EAAE,IAAI,CAAC;CACX;AAED;;GAEG;AACH,MAAM,WAAW,GAAG;IAClB,KAAK,EAAE,WAAW,EAAE,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AAE7C;;;;;;;GAOG;AACH,MAAM,WAAW,QAAQ;IACvB,GAAG,EAAE,GAAG,CAAC;IACT,SAAS,EAAE,OAAO,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;;;;;;;;GAUG;AACH,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC"}
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ // ============================================================
3
+ // ST Term Rewriting — Tipos públicos
4
+ // ============================================================
5
+ //
6
+ // Un Term Rewriting System (TRS) es un conjunto de reglas
7
+ // l → r
8
+ // donde l y r son términos de primer orden y vars(r) ⊆ vars(l).
9
+ //
10
+ // La reescritura aplica una regla buscando un subtérmino que
11
+ // unifique (match) con el LHS y lo reemplaza por la sustitución
12
+ // del RHS. Se itera hasta llegar a forma normal (sin redex
13
+ // aplicables) o hasta saturar maxSteps.
14
+ //
15
+ // Aplicaciones:
16
+ // - Normalización en pruebas con igualdad (decision procedures).
17
+ // - Simplificación simbólica.
18
+ // - Modelado de teorías ecuacionales (grupos, anillos, listas).
19
+ // - Confluencia + terminación ⇒ decisión de equivalencia.
20
+ Object.defineProperty(exports, "__esModule", { value: true });
21
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/runtime/term-rewriting/types.ts"],"names":[],"mappings":";AAAA,+DAA+D;AAC/D,qCAAqC;AACrC,+DAA+D;AAC/D,EAAE;AACF,0DAA0D;AAC1D,UAAU;AACV,gEAAgE;AAChE,EAAE;AACF,6DAA6D;AAC7D,gEAAgE;AAChE,2DAA2D;AAC3D,wCAAwC;AACxC,EAAE;AACF,gBAAgB;AAChB,mEAAmE;AACnE,gCAAgC;AAChC,kEAAkE;AAClE,4DAA4D"}
@@ -0,0 +1,3 @@
1
+ export { IncrementalCDCL } from './solver';
2
+ export type { IncrementalSolveResult, IncrementalSolverOptions, IncrementalStats, SolverSummary, } from './types';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/solver/cdcl-v2-incremental/index.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAC3C,YAAY,EACV,sBAAsB,EACtB,wBAAwB,EACxB,gBAAgB,EAChB,aAAa,GACd,MAAM,SAAS,CAAC"}
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ // CDCL incremental — entry point público.
3
+ //
4
+ // API:
5
+ // const s = new IncrementalCDCL(numVars?);
6
+ // s.addClause([1, -2, 3]); // cláusulas DIMACS
7
+ // s.push(); // checkpoint opcional
8
+ // const r = s.solve([assump1, ...]); // sat/unsat con assumptions opcionales
9
+ // s.pop(); // rollback al checkpoint
10
+ //
11
+ // Ver `types.ts` para los tipos de resultado.
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.IncrementalCDCL = void 0;
14
+ var solver_1 = require("./solver");
15
+ Object.defineProperty(exports, "IncrementalCDCL", { enumerable: true, get: function () { return solver_1.IncrementalCDCL; } });
16
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/solver/cdcl-v2-incremental/index.ts"],"names":[],"mappings":";AAAA,0CAA0C;AAC1C,EAAE;AACF,OAAO;AACP,6CAA6C;AAC7C,4DAA4D;AAC5D,gEAAgE;AAChE,iFAAiF;AACjF,mEAAmE;AACnE,EAAE;AACF,8CAA8C;;;AAE9C,mCAA2C;AAAlC,yGAAA,eAAe,OAAA"}
@@ -0,0 +1,83 @@
1
+ import type { IncrementalSolveResult, IncrementalSolverOptions, SolverSummary } from './types';
2
+ export declare class IncrementalCDCL {
3
+ private numVars;
4
+ private readonly opts;
5
+ private clauses;
6
+ private learnedFlag;
7
+ private learnedMeta;
8
+ private clauseInc;
9
+ private varVal;
10
+ private varLevel;
11
+ private varAnte;
12
+ private trail;
13
+ private trailLim;
14
+ private qHead;
15
+ private watches;
16
+ private vsids;
17
+ private phases;
18
+ private checkpoints;
19
+ private varToAssumption;
20
+ private totalDecisions;
21
+ private totalConflicts;
22
+ private totalLearned;
23
+ constructor(numVars?: number, options?: IncrementalSolverOptions);
24
+ /** Declara y devuelve una variable nueva (1-indexada). */
25
+ newVar(): number;
26
+ /** Agrega una cláusula permanente. Validación: literales !== 0 y |lit| <= numVars. */
27
+ addClause(literals: ReadonlyArray<number>): void;
28
+ /** Crea un checkpoint para rollback con `pop()`. */
29
+ push(): void;
30
+ /** Revierte hasta `levels` checkpoints atrás. Default: 1. */
31
+ pop(levels?: number): void;
32
+ /**
33
+ * Resuelve bajo el conjunto opcional de assumptions.
34
+ *
35
+ * Cada assumption es un literal con signo: positivo = var asumida true,
36
+ * negativo = var asumida false. Si el problema es UNSAT bajo esas
37
+ * assumptions, `failedAssumptions` contiene el subconjunto que produjo
38
+ * el conflicto.
39
+ */
40
+ solve(assumptions?: ReadonlyArray<number>): IncrementalSolveResult;
41
+ /** Devuelve la polaridad de una variable en el último modelo SAT (o undefined). */
42
+ modelValue(varId: number): boolean | undefined;
43
+ /** Limpia todo el estado, dejando 0 vars / 0 cláusulas. */
44
+ reset(): void;
45
+ /** Resumen del estado actual del solver. */
46
+ stats(): SolverSummary;
47
+ private growVarArrays;
48
+ private regrowHeuristics;
49
+ private rebuildWatches;
50
+ private countLearned;
51
+ private rollbackTo;
52
+ private currentLevel;
53
+ private litIsTrue;
54
+ private litIsFalse;
55
+ private enqueue;
56
+ /** Propagación booleana con watched literals. Devuelve índice de cláusula en conflicto o NO_CONFLICT. */
57
+ private propagate;
58
+ private backtrackToLevel;
59
+ /** Reset completo del trail incluyendo asignaciones de nivel 0. Usado entre
60
+ * llamadas a solve() para garantizar idempotencia. */
61
+ private resetAllAssignments;
62
+ private addLearnedClauseAt;
63
+ private runSolve;
64
+ /**
65
+ * Cuando un assumption `lit` está bloqueado por unit propagation desde
66
+ * unidades originales (sin assumptions activas), devuelve [lit] solo:
67
+ * ese assumption es incompatible con la base. Para v1, este es el caso
68
+ * trivial — sin lookup hacia atrás del antecedente.
69
+ */
70
+ private deriveCoreFromBlockedAssumption;
71
+ /**
72
+ * Dado un índice de cláusula en conflicto y la lista actual de assumptions
73
+ * enqueued, regresa el subconjunto de assumptions cuya negación está
74
+ * presente (recursivamente, vía antecedentes) en el cone de conflicto.
75
+ *
76
+ * Implementación O(|trail|): marca seen cada variable involucrada en el
77
+ * conflicto, recorre antecedentes hasta agotar; cualquier var marcada cuyo
78
+ * assumption literal sea distinto de 0 entra al core.
79
+ */
80
+ private deriveFailedAssumptions;
81
+ private maybeReduceLearned;
82
+ }
83
+ //# sourceMappingURL=solver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"solver.d.ts","sourceRoot":"","sources":["../../../src/solver/cdcl-v2-incremental/solver.ts"],"names":[],"mappings":"AAoCA,OAAO,KAAK,EACV,sBAAsB,EACtB,wBAAwB,EAExB,aAAa,EACd,MAAM,SAAS,CAAC;AAoBjB,qBAAa,eAAe;IAC1B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAGnB;IAKF,OAAO,CAAC,OAAO,CAAoB;IACnC,OAAO,CAAC,WAAW,CAAgB;IACnC,OAAO,CAAC,WAAW,CAAkC;IACrD,OAAO,CAAC,SAAS,CAAO;IAGxB,OAAO,CAAC,MAAM,CAAY;IAC1B,OAAO,CAAC,QAAQ,CAAa;IAC7B,OAAO,CAAC,OAAO,CAAa;IAG5B,OAAO,CAAC,KAAK,CAAgB;IAC7B,OAAO,CAAC,QAAQ,CAAgB;IAChC,OAAO,CAAC,KAAK,CAAK;IAGlB,OAAO,CAAC,OAAO,CAAkB;IAGjC,OAAO,CAAC,KAAK,CAAQ;IACrB,OAAO,CAAC,MAAM,CAAa;IAG3B,OAAO,CAAC,WAAW,CAAyB;IAK5C,OAAO,CAAC,eAAe,CAAa;IAGpC,OAAO,CAAC,cAAc,CAAK;IAC3B,OAAO,CAAC,cAAc,CAAK;IAC3B,OAAO,CAAC,YAAY,CAAK;gBAEb,OAAO,SAAI,EAAE,OAAO,CAAC,EAAE,wBAAwB;IA6B3D,0DAA0D;IAC1D,MAAM,IAAI,MAAM;IAShB,sFAAsF;IACtF,SAAS,CAAC,QAAQ,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,IAAI;IAuBhD,oDAAoD;IACpD,IAAI,IAAI,IAAI;IAQZ,6DAA6D;IAC7D,GAAG,CAAC,MAAM,SAAI,GAAG,IAAI;IASrB;;;;;;;OAOG;IACH,KAAK,CAAC,WAAW,GAAE,aAAa,CAAC,MAAM,CAAM,GAAG,sBAAsB;IAetE,mFAAmF;IACnF,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS;IAQ9C,2DAA2D;IAC3D,KAAK,IAAI,IAAI;IAsBb,4CAA4C;IAC5C,KAAK,IAAI,aAAa;IActB,OAAO,CAAC,aAAa;IAuBrB,OAAO,CAAC,gBAAgB;IAoBxB,OAAO,CAAC,cAAc;IAetB,OAAO,CAAC,YAAY;IAMpB,OAAO,CAAC,UAAU;IA2ClB,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,OAAO;IAYf,yGAAyG;IACzG,OAAO,CAAC,SAAS;IA2DjB,OAAO,CAAC,gBAAgB;IAexB;0DACsD;IACtD,OAAO,CAAC,mBAAmB;IAa3B,OAAO,CAAC,kBAAkB;IA0B1B,OAAO,CAAC,QAAQ;IA4MhB;;;;;OAKG;IACH,OAAO,CAAC,+BAA+B;IAIvC;;;;;;;;OAQG;IACH,OAAO,CAAC,uBAAuB;IAwC/B,OAAO,CAAC,kBAAkB;CA6B3B"}