@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,202 @@
1
+ "use strict";
2
+ // ============================================================
3
+ // ST Abduction — Núcleo: búsqueda de explicaciones
4
+ // ============================================================
5
+ //
6
+ // Estrategia: enumeración por tamaño creciente (BFS sobre subsets).
7
+ //
8
+ // for k in 0..maxSize:
9
+ // for cada subset H ⊆ abducibles con |H| = k:
10
+ // si KB ∪ H ⊨ O y KB ∪ H consistent:
11
+ // registrar H como explicación
12
+ // marcar todos sus supersets como redundantes (no parsimoniosos)
13
+ //
14
+ // Las explicaciones se reportan ordenadas por tamaño ascendente. La
15
+ // minimalidad por inclusión se verifica al final con una pasada O(N²)
16
+ // sobre las explicaciones encontradas (suficiente para |explicaciones|
17
+ // ≲ algunos miles; en problemas grandes acotar `maxHypotheses`).
18
+ //
19
+ // Para `preferred = 'minimal'`, solo se reportan las parsimoniosas.
20
+ // Para `minimum-cardinality`, se reportan únicamente las de tamaño
21
+ // igual al mínimo encontrado. Para `minimum-cost`, las de costo
22
+ // mínimo (requiere costFunction o se usa size).
23
+ Object.defineProperty(exports, "__esModule", { value: true });
24
+ exports.findExplanations = findExplanations;
25
+ exports.bestExplanation = bestExplanation;
26
+ const entails_1 = require("./entails");
27
+ function resolveOptions(abducibles, opts) {
28
+ const entails = opts?.entails ?? (0, entails_1.defaultEntails)();
29
+ const consistent = opts?.consistent ?? (0, entails_1.defaultConsistent)();
30
+ return {
31
+ entails,
32
+ consistent,
33
+ maxHypotheses: opts?.maxHypotheses ?? 1024,
34
+ maxSize: opts?.maxSize ?? abducibles.length,
35
+ costFunction: opts?.costFunction ?? (() => 1),
36
+ preferred: opts?.preferred ?? 'minimal',
37
+ };
38
+ }
39
+ /** Itera sobre todos los subsets de [0..n) de tamaño exactamente k (orden lex). */
40
+ function* combinations(n, k) {
41
+ if (k < 0 || k > n)
42
+ return;
43
+ if (k === 0) {
44
+ yield [];
45
+ return;
46
+ }
47
+ const idx = new Array(k);
48
+ for (let i = 0; i < k; i++)
49
+ idx[i] = i;
50
+ while (true) {
51
+ yield idx.slice();
52
+ // Avanzar al siguiente combination en orden lex.
53
+ let i = k - 1;
54
+ while (i >= 0 && idx[i] === n - k + i)
55
+ i--;
56
+ if (i < 0)
57
+ return;
58
+ idx[i] = idx[i] + 1;
59
+ for (let j = i + 1; j < k; j++)
60
+ idx[j] = idx[j - 1] + 1;
61
+ }
62
+ }
63
+ function isSubsetOf(a, b) {
64
+ if (a.length > b.length)
65
+ return false;
66
+ let i = 0;
67
+ let j = 0;
68
+ while (i < a.length && j < b.length) {
69
+ const ai = a[i];
70
+ const bj = b[j];
71
+ if (ai === bj) {
72
+ i++;
73
+ j++;
74
+ }
75
+ else if (ai < bj) {
76
+ return false;
77
+ }
78
+ else {
79
+ j++;
80
+ }
81
+ }
82
+ return i === a.length;
83
+ }
84
+ /**
85
+ * Encuentra todas las explicaciones de un problema abductivo.
86
+ *
87
+ * - Enumera subsets de abducibles en orden creciente de tamaño.
88
+ * - Filtra los inconsistentes y los que no implican la observación.
89
+ * - Calcula minimalidad por inclusión (parsimony) post-hoc.
90
+ * - Aplica el filtro `preferred` para el output final.
91
+ */
92
+ function findExplanations(problem, opts) {
93
+ const { kb, observation, abducibles } = problem;
94
+ const resolved = resolveOptions(abducibles, opts);
95
+ const n = abducibles.length;
96
+ const maxK = Math.min(resolved.maxSize, n);
97
+ // Pre-check: si KB ya implica O sin ninguna hipótesis, la explicación
98
+ // vacía es la única parsimoniosa.
99
+ // (Esto requiere consistencia de KB y derivación.)
100
+ const raw = [];
101
+ if (resolved.consistent(kb) && resolved.entails(kb, observation)) {
102
+ raw.push({ indices: [], hypotheses: [], costScore: 0 });
103
+ }
104
+ // Buscamos también H no vacíos. Si la vacía explica, según
105
+ // `preferred` puede ser todo lo que necesitamos (case-by-case).
106
+ outer: for (let k = 1; k <= maxK; k++) {
107
+ for (const idx of combinations(n, k)) {
108
+ const hypotheses = [];
109
+ let costScore = 0;
110
+ for (const i of idx) {
111
+ const f = abducibles[i];
112
+ if (f === undefined)
113
+ continue;
114
+ hypotheses.push(f);
115
+ costScore += resolved.costFunction(f);
116
+ }
117
+ const combined = [...kb, ...hypotheses];
118
+ // Skip duplicate trivial: si algún subset menor ya está en raw y es
119
+ // subset de este, este NO va a ser parsimonious. Lo enumeramos
120
+ // igual porque `preferred=all` debe verlos, pero podemos saltarlo
121
+ // si `preferred` ∈ {minimal, minimum-cardinality, minimum-cost}.
122
+ if (resolved.preferred !== 'all' &&
123
+ raw.some((r) => r.indices.length < idx.length && isSubsetOf(r.indices, idx))) {
124
+ continue;
125
+ }
126
+ if (!resolved.consistent(combined))
127
+ continue;
128
+ if (!resolved.entails(combined, observation))
129
+ continue;
130
+ raw.push({ indices: idx, hypotheses, costScore });
131
+ if (raw.length >= resolved.maxHypotheses)
132
+ break outer;
133
+ }
134
+ }
135
+ // Determinar parsimony por inclusión: una H es parsimoniosa sii no
136
+ // existe H' ∈ raw con H' ⊂ H (subconjunto propio).
137
+ const parsimonyMap = new Map();
138
+ const keyFor = (r) => r.indices.join(',');
139
+ for (const r of raw) {
140
+ let parsim = true;
141
+ for (const other of raw) {
142
+ if (other === r)
143
+ continue;
144
+ if (other.indices.length >= r.indices.length)
145
+ continue;
146
+ if (isSubsetOf(other.indices, r.indices)) {
147
+ parsim = false;
148
+ break;
149
+ }
150
+ }
151
+ parsimonyMap.set(keyFor(r), parsim);
152
+ }
153
+ // Convertir a Explanation[].
154
+ const explanations = raw.map((r) => ({
155
+ hypotheses: r.hypotheses,
156
+ size: r.hypotheses.length,
157
+ parsimonious: parsimonyMap.get(keyFor(r)) ?? false,
158
+ costScore: r.costScore,
159
+ }));
160
+ return applyPreference(explanations, resolved);
161
+ }
162
+ function applyPreference(expls, resolved) {
163
+ if (expls.length === 0)
164
+ return [];
165
+ switch (resolved.preferred) {
166
+ case 'all':
167
+ return expls.slice();
168
+ case 'minimal':
169
+ return expls.filter((e) => e.parsimonious);
170
+ case 'minimum-cardinality': {
171
+ const minimal = expls.filter((e) => e.parsimonious);
172
+ if (minimal.length === 0)
173
+ return [];
174
+ const minSize = minimal.reduce((m, e) => Math.min(m, e.size), Infinity);
175
+ return minimal.filter((e) => e.size === minSize);
176
+ }
177
+ case 'minimum-cost': {
178
+ const minimal = expls.filter((e) => e.parsimonious);
179
+ if (minimal.length === 0)
180
+ return [];
181
+ const minCost = minimal.reduce((m, e) => Math.min(m, e.costScore ?? Infinity), Infinity);
182
+ return minimal.filter((e) => (e.costScore ?? Infinity) === minCost);
183
+ }
184
+ default:
185
+ return expls.slice();
186
+ }
187
+ }
188
+ /**
189
+ * Devuelve UNA explicación: la "mejor" según `preferred`. Si hay
190
+ * empate, la primera en orden lex (consistente y reproducible).
191
+ *
192
+ * Devuelve `null` si no hay explicación posible.
193
+ */
194
+ function bestExplanation(problem, opts) {
195
+ // Para best-explanation, forzamos minimum-cost si hay costFunction;
196
+ // si no, minimum-cardinality. El cliente puede overridear con
197
+ // opts.preferred.
198
+ const preferred = opts?.preferred ?? (opts?.costFunction ? 'minimum-cost' : 'minimum-cardinality');
199
+ const all = findExplanations(problem, { ...opts, preferred });
200
+ return all.length > 0 ? all[0] : null;
201
+ }
202
+ //# sourceMappingURL=find.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"find.js","sourceRoot":"","sources":["../../../src/runtime/abduction/find.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export { findExplanations, bestExplanation } from './find';
2
+ export { defaultEntails, defaultConsistent } from './entails';
3
+ export type { AbductionOptions, AbductionProblem, ConsistencyOracle, EntailmentOracle, Explanation, Formula, Preference, } from './types';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/runtime/abduction/index.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC9D,YAAY,EACV,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,EAChB,WAAW,EACX,OAAO,EACP,UAAU,GACX,MAAM,SAAS,CAAC"}
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ // ============================================================
3
+ // ST Abduction — Barrel
4
+ // ============================================================
5
+ //
6
+ // Razonamiento abductivo: dado un knowledge base KB y una observación
7
+ // O, encontrar la hipótesis mínima H ⊆ Abducibles tal que
8
+ // KB ∪ H ⊨ O y KB ∪ H es consistente.
9
+ //
10
+ // API pública:
11
+ // - `findExplanations(problem, opts?)` → todas las explicaciones
12
+ // - `bestExplanation(problem, opts?)` → la mejor según preferencia
13
+ // - `defaultEntails(opts?)` → oráculo entailment Horn-like
14
+ // - `defaultConsistent(opts?)` → oráculo consistencia derivado
15
+ //
16
+ // Tipos: `AbductionProblem`, `Explanation`, `AbductionOptions`,
17
+ // `EntailmentOracle`, `ConsistencyOracle`, `Preference`, `Formula`.
18
+ Object.defineProperty(exports, "__esModule", { value: true });
19
+ exports.defaultConsistent = exports.defaultEntails = exports.bestExplanation = exports.findExplanations = void 0;
20
+ var find_1 = require("./find");
21
+ Object.defineProperty(exports, "findExplanations", { enumerable: true, get: function () { return find_1.findExplanations; } });
22
+ Object.defineProperty(exports, "bestExplanation", { enumerable: true, get: function () { return find_1.bestExplanation; } });
23
+ var entails_1 = require("./entails");
24
+ Object.defineProperty(exports, "defaultEntails", { enumerable: true, get: function () { return entails_1.defaultEntails; } });
25
+ Object.defineProperty(exports, "defaultConsistent", { enumerable: true, get: function () { return entails_1.defaultConsistent; } });
26
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/runtime/abduction/index.ts"],"names":[],"mappings":";AAAA,+DAA+D;AAC/D,wBAAwB;AACxB,+DAA+D;AAC/D,EAAE;AACF,sEAAsE;AACtE,0DAA0D;AAC1D,sCAAsC;AACtC,EAAE;AACF,eAAe;AACf,oEAAoE;AACpE,uEAAuE;AACvE,yEAAyE;AACzE,0EAA0E;AAC1E,EAAE;AACF,gEAAgE;AAChE,oEAAoE;;;AAEpE,+BAA2D;AAAlD,wGAAA,gBAAgB,OAAA;AAAE,uGAAA,eAAe,OAAA;AAC1C,qCAA8D;AAArD,yGAAA,cAAc,OAAA;AAAE,4GAAA,iBAAiB,OAAA"}
@@ -0,0 +1,78 @@
1
+ /** Una fórmula (formato libre — strings, opaque al motor). */
2
+ export type Formula = string;
3
+ /**
4
+ * Oráculo de consecuencia lógica: dado un conjunto de premisas P y
5
+ * una fórmula objetivo q, devuelve `true` sii P ⊨ q.
6
+ *
7
+ * El motor abductivo es agnóstico al sistema lógico. Quien usa la
8
+ * librería provee este oráculo (puede ser propositional, FOL,
9
+ * description logic, etc).
10
+ */
11
+ export type EntailmentOracle = (premises: ReadonlyArray<Formula>, target: Formula) => boolean;
12
+ /**
13
+ * Oráculo de consistencia: dado un conjunto de fórmulas, devuelve
14
+ * `true` sii admite al menos un modelo. Default razonable: si no
15
+ * lo dan, decimos consistente sii NO P ⊨ ⊥. Como no tenemos ⊥
16
+ * estándar en strings, en la práctica conviene pasar este oráculo.
17
+ */
18
+ export type ConsistencyOracle = (premises: ReadonlyArray<Formula>) => boolean;
19
+ /**
20
+ * Problema abductivo.
21
+ *
22
+ * - `kb`: background knowledge (axiomas del dominio).
23
+ * - `observation`: fórmula que queremos explicar.
24
+ * - `abducibles`: el conjunto de fórmulas elegibles como hipótesis.
25
+ * El razonador buscará H ⊆ abducibles.
26
+ */
27
+ export interface AbductionProblem {
28
+ kb: ReadonlyArray<Formula>;
29
+ observation: Formula;
30
+ abducibles: ReadonlyArray<Formula>;
31
+ }
32
+ /**
33
+ * Una explicación candidata.
34
+ *
35
+ * - `hypotheses`: subconjunto de abducibles.
36
+ * - `size`: cardinalidad (= hypotheses.length).
37
+ * - `parsimonious`: true sii no existe subconjunto propio que
38
+ * también explique la observación de forma consistente.
39
+ * (Equivale a "minimal por inclusión".)
40
+ * - `costScore`: suma de costos si se proveyó costFunction.
41
+ */
42
+ export interface Explanation {
43
+ hypotheses: ReadonlyArray<Formula>;
44
+ size: number;
45
+ parsimonious: boolean;
46
+ costScore?: number;
47
+ }
48
+ /**
49
+ * Criterio de preferencia sobre el conjunto de explicaciones.
50
+ *
51
+ * - `all`: todas las explicaciones encontradas (no filtra).
52
+ * - `minimal`: solo las minimal-por-inclusión (parsimonious).
53
+ * - `minimum-cardinality`: las de menor |H| entre las minimales.
54
+ * - `minimum-cost`: las de menor costo total (requiere costFunction).
55
+ */
56
+ export type Preference = 'all' | 'minimal' | 'minimum-cardinality' | 'minimum-cost';
57
+ export interface AbductionOptions {
58
+ /** Oráculo de entailment. Default: `defaultEntails` (propositional, ver entails.ts). */
59
+ entails?: EntailmentOracle;
60
+ /** Oráculo de consistencia. Default: derivado de `entails` (no entails ⊥-equiv). */
61
+ consistent?: ConsistencyOracle;
62
+ /**
63
+ * Tope de explicaciones a retornar. Útil cuando hay explosión
64
+ * combinatoria. Default: 1024.
65
+ */
66
+ maxHypotheses?: number;
67
+ /**
68
+ * Tope para |H|. Acota el espacio de búsqueda. Default: igual a
69
+ * |abducibles| (sin tope efectivo). Bajarlo es una buena idea
70
+ * para |abducibles| > 12.
71
+ */
72
+ maxSize?: number;
73
+ /** Función de costo por hipótesis. Default: 1 por hipótesis. */
74
+ costFunction?: (h: Formula) => number;
75
+ /** Cómo filtrar/ordenar el output. Default: `minimal`. */
76
+ preferred?: Preference;
77
+ }
78
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/runtime/abduction/types.ts"],"names":[],"mappings":"AAqBA,8DAA8D;AAC9D,MAAM,MAAM,OAAO,GAAG,MAAM,CAAC;AAE7B;;;;;;;GAOG;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,QAAQ,EAAE,aAAa,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,OAAO,KAAK,OAAO,CAAC;AAE9F;;;;;GAKG;AACH,MAAM,MAAM,iBAAiB,GAAG,CAAC,QAAQ,EAAE,aAAa,CAAC,OAAO,CAAC,KAAK,OAAO,CAAC;AAE9E;;;;;;;GAOG;AACH,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;IAC3B,WAAW,EAAE,OAAO,CAAC;IACrB,UAAU,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;CACpC;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,OAAO,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;GAOG;AACH,MAAM,MAAM,UAAU,GAAG,KAAK,GAAG,SAAS,GAAG,qBAAqB,GAAG,cAAc,CAAC;AAEpF,MAAM,WAAW,gBAAgB;IAC/B,wFAAwF;IACxF,OAAO,CAAC,EAAE,gBAAgB,CAAC;IAC3B,oFAAoF;IACpF,UAAU,CAAC,EAAE,iBAAiB,CAAC;IAC/B;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gEAAgE;IAChE,YAAY,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,MAAM,CAAC;IACtC,0DAA0D;IAC1D,SAAS,CAAC,EAAE,UAAU,CAAC;CACxB"}
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ // ============================================================
3
+ // ST Abduction — Tipos públicos
4
+ // ============================================================
5
+ //
6
+ // Razonamiento abductivo (Peirce 1903; Reiter 1987): dado un
7
+ // background knowledge KB y una observación O, encontrar
8
+ // hipótesis H ⊆ Abducibles tal que:
9
+ //
10
+ // 1. KB ∪ H ⊨ O (la hipótesis explica la observación)
11
+ // 2. KB ∪ H consistent (la hipótesis es compatible con KB)
12
+ // 3. H es minimal (no hay H' ⊂ H que cumpla 1 y 2)
13
+ //
14
+ // Usos típicos:
15
+ // - Diagnóstico (¿qué fallas explican estos síntomas?)
16
+ // - Inferencia best-fit (la hipótesis más simple/barata gana)
17
+ // - Generación de explicaciones (debugging de cadenas causales)
18
+ //
19
+ // El espacio de hipótesis se enumera sobre 2^|abducibles|. Para
20
+ // |abducibles| ≲ 16 la enumeración exhaustiva es viable. Para más
21
+ // grande, conviene un oráculo SAT incremental.
22
+ Object.defineProperty(exports, "__esModule", { value: true });
23
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/runtime/abduction/types.ts"],"names":[],"mappings":";AAAA,+DAA+D;AAC/D,gCAAgC;AAChC,+DAA+D;AAC/D,EAAE;AACF,6DAA6D;AAC7D,yDAAyD;AACzD,oCAAoC;AACpC,EAAE;AACF,8DAA8D;AAC9D,6DAA6D;AAC7D,qDAAqD;AACrD,EAAE;AACF,gBAAgB;AAChB,yDAAyD;AACzD,gEAAgE;AAChE,kEAAkE;AAClE,EAAE;AACF,gEAAgE;AAChE,kEAAkE;AAClE,+CAA+C"}
@@ -0,0 +1,22 @@
1
+ import type { BayesianNetwork, CPT, Evidence } from './types';
2
+ export interface Factor {
3
+ variables: string[];
4
+ domains: Record<string, string[]>;
5
+ values: Map<string, number>;
6
+ }
7
+ export declare function assignmentKey(variables: string[], assignment: Record<string, string>): string;
8
+ export declare function parseParentKey(parents: string[], key: string): Record<string, string>;
9
+ export declare function buildParentKey(parents: string[], assignment: Record<string, string>): string;
10
+ export declare function iterateAssignments(variables: string[], domains: Record<string, string[]>): Generator<Record<string, string>>;
11
+ export declare function factorFromCPT(cpt: CPT, variableDomains: Record<string, string[]>): Factor;
12
+ export declare function restrictFactor(factor: Factor, evidence: Evidence): Factor;
13
+ export declare function parseAssignmentKey(key: string): Record<string, string>;
14
+ export declare function multiplyFactors(a: Factor, b: Factor): Factor;
15
+ export declare function sumOut(factor: Factor, variable: string): Factor;
16
+ export declare function maxOut(factor: Factor, variable: string): {
17
+ factor: Factor;
18
+ backpointer: Map<string, string>;
19
+ };
20
+ export declare function normalizeFactor(factor: Factor): Factor;
21
+ export declare function variableDomainsOf(net: BayesianNetwork): Record<string, string[]>;
22
+ //# sourceMappingURL=factor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"factor.d.ts","sourceRoot":"","sources":["../../../src/runtime/bayesian/factor.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,eAAe,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAE9D,MAAM,WAAW,MAAM;IACrB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAGlC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC7B;AAID,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAO7F;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAYrF;AAGD,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAO5F;AAID,wBAAiB,kBAAkB,CACjC,SAAS,EAAE,MAAM,EAAE,EACnB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,GAChC,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CA0BnC;AAID,wBAAgB,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,GAAG,MAAM,CAqBzF;AAID,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,MAAM,CAsBzE;AAED,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAStE;AAID,wBAAgB,eAAe,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAgB5D;AAUD,wBAAgB,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAc/D;AAQD,wBAAgB,MAAM,CACpB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,GACf;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,CAwBtD;AAID,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAUtD;AAID,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAIhF"}
@@ -0,0 +1,249 @@
1
+ "use strict";
2
+ // ============================================================
3
+ // Bayesian Inference — Factor representation
4
+ // ============================================================
5
+ //
6
+ // Un Factor representa una función φ(X₁,…,Xₙ) → ℝ⁺ sobre un
7
+ // conjunto de variables discretas. Las CPTs se convierten a
8
+ // factores; los algoritmos de variable elimination producen
9
+ // y consumen factores con tres operaciones: restricción por
10
+ // evidencia, producto, y suma-marginalización.
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.assignmentKey = assignmentKey;
13
+ exports.parseParentKey = parseParentKey;
14
+ exports.buildParentKey = buildParentKey;
15
+ exports.iterateAssignments = iterateAssignments;
16
+ exports.factorFromCPT = factorFromCPT;
17
+ exports.restrictFactor = restrictFactor;
18
+ exports.parseAssignmentKey = parseAssignmentKey;
19
+ exports.multiplyFactors = multiplyFactors;
20
+ exports.sumOut = sumOut;
21
+ exports.maxOut = maxOut;
22
+ exports.normalizeFactor = normalizeFactor;
23
+ exports.variableDomainsOf = variableDomainsOf;
24
+ // ── Helpers de claves ─────────────────────────────────────────
25
+ function assignmentKey(variables, assignment) {
26
+ // Asume `variables` ya está ordenado consistentemente.
27
+ const parts = [];
28
+ for (const v of variables) {
29
+ parts.push(`${v}=${assignment[v]}`);
30
+ }
31
+ return parts.join('|');
32
+ }
33
+ function parseParentKey(parents, key) {
34
+ const out = {};
35
+ if (parents.length === 0)
36
+ return out;
37
+ const parts = key.split('|');
38
+ for (const part of parts) {
39
+ const eq = part.indexOf('=');
40
+ if (eq < 0)
41
+ continue;
42
+ const k = part.slice(0, eq);
43
+ const v = part.slice(eq + 1);
44
+ out[k] = v;
45
+ }
46
+ return out;
47
+ }
48
+ // Construye la clave canónica de padres en el orden declarado por el CPT.
49
+ function buildParentKey(parents, assignment) {
50
+ if (parents.length === 0)
51
+ return '';
52
+ const parts = [];
53
+ for (const p of parents) {
54
+ parts.push(`${p}=${assignment[p]}`);
55
+ }
56
+ return parts.join('|');
57
+ }
58
+ // ── Iteración cartesiana sobre dominios ──────────────────────
59
+ function* iterateAssignments(variables, domains) {
60
+ if (variables.length === 0) {
61
+ yield {};
62
+ return;
63
+ }
64
+ const sizes = variables.map((v) => domains[v]?.length ?? 0);
65
+ if (sizes.some((s) => s === 0))
66
+ return;
67
+ const idx = variables.map(() => 0);
68
+ while (true) {
69
+ const a = {};
70
+ for (let i = 0; i < variables.length; i++) {
71
+ const v = variables[i];
72
+ const dom = domains[v];
73
+ a[v] = dom[idx[i]];
74
+ }
75
+ yield a;
76
+ // incrementar como contador
77
+ let k = variables.length - 1;
78
+ while (k >= 0) {
79
+ idx[k] = (idx[k] ?? 0) + 1;
80
+ if (idx[k] < sizes[k])
81
+ break;
82
+ idx[k] = 0;
83
+ k--;
84
+ }
85
+ if (k < 0)
86
+ break;
87
+ }
88
+ }
89
+ // ── Construcción de factor desde CPT ─────────────────────────
90
+ function factorFromCPT(cpt, variableDomains) {
91
+ const factorVars = [cpt.variable, ...cpt.parents].slice().sort();
92
+ const domains = {};
93
+ for (const v of factorVars) {
94
+ const dom = variableDomains[v];
95
+ if (!dom)
96
+ throw new Error(`Variable "${v}" sin dominio definido`);
97
+ domains[v] = dom;
98
+ }
99
+ const values = new Map();
100
+ for (const assign of iterateAssignments(factorVars, domains)) {
101
+ const parentKey = buildParentKey(cpt.parents, assign);
102
+ const row = cpt.entries[parentKey];
103
+ if (!row) {
104
+ // Fila ausente: probabilidad 0 (red mal definida — pero no fallamos aquí).
105
+ values.set(assignmentKey(factorVars, assign), 0);
106
+ continue;
107
+ }
108
+ const p = row[assign[cpt.variable]];
109
+ values.set(assignmentKey(factorVars, assign), p ?? 0);
110
+ }
111
+ return { variables: factorVars, domains, values };
112
+ }
113
+ // ── Restricción por evidencia ────────────────────────────────
114
+ function restrictFactor(factor, evidence) {
115
+ const evVars = factor.variables.filter((v) => v in evidence);
116
+ if (evVars.length === 0)
117
+ return factor;
118
+ const newVars = factor.variables.filter((v) => !(v in evidence));
119
+ const newDomains = {};
120
+ for (const v of newVars)
121
+ newDomains[v] = factor.domains[v];
122
+ const values = new Map();
123
+ for (const [key, val] of factor.values) {
124
+ const assign = parseAssignmentKey(key);
125
+ let consistent = true;
126
+ for (const ev of evVars) {
127
+ if (assign[ev] !== evidence[ev]) {
128
+ consistent = false;
129
+ break;
130
+ }
131
+ }
132
+ if (!consistent)
133
+ continue;
134
+ const projected = {};
135
+ for (const v of newVars)
136
+ projected[v] = assign[v];
137
+ values.set(assignmentKey(newVars, projected), val);
138
+ }
139
+ return { variables: newVars, domains: newDomains, values };
140
+ }
141
+ function parseAssignmentKey(key) {
142
+ if (key === '')
143
+ return {};
144
+ const out = {};
145
+ for (const part of key.split('|')) {
146
+ const eq = part.indexOf('=');
147
+ if (eq < 0)
148
+ continue;
149
+ out[part.slice(0, eq)] = part.slice(eq + 1);
150
+ }
151
+ return out;
152
+ }
153
+ // ── Producto de factores ─────────────────────────────────────
154
+ function multiplyFactors(a, b) {
155
+ const varSet = new Set([...a.variables, ...b.variables]);
156
+ const newVars = Array.from(varSet).sort();
157
+ const domains = {};
158
+ for (const v of newVars) {
159
+ domains[v] = a.domains[v] ?? b.domains[v];
160
+ }
161
+ const values = new Map();
162
+ for (const assign of iterateAssignments(newVars, domains)) {
163
+ const aKey = assignmentKey(a.variables, projectAssignment(assign, a.variables));
164
+ const bKey = assignmentKey(b.variables, projectAssignment(assign, b.variables));
165
+ const va = a.values.get(aKey) ?? 0;
166
+ const vb = b.values.get(bKey) ?? 0;
167
+ values.set(assignmentKey(newVars, assign), va * vb);
168
+ }
169
+ return { variables: newVars, domains, values };
170
+ }
171
+ function projectAssignment(assign, vars) {
172
+ const out = {};
173
+ for (const v of vars)
174
+ out[v] = assign[v];
175
+ return out;
176
+ }
177
+ // ── Suma-marginalización ─────────────────────────────────────
178
+ function sumOut(factor, variable) {
179
+ if (!factor.variables.includes(variable))
180
+ return factor;
181
+ const newVars = factor.variables.filter((v) => v !== variable);
182
+ const newDomains = {};
183
+ for (const v of newVars)
184
+ newDomains[v] = factor.domains[v];
185
+ const values = new Map();
186
+ for (const [key, val] of factor.values) {
187
+ const assign = parseAssignmentKey(key);
188
+ const projected = {};
189
+ for (const v of newVars)
190
+ projected[v] = assign[v];
191
+ const pKey = assignmentKey(newVars, projected);
192
+ values.set(pKey, (values.get(pKey) ?? 0) + val);
193
+ }
194
+ return { variables: newVars, domains: newDomains, values };
195
+ }
196
+ // ── Max-marginalización (para MPE) ───────────────────────────
197
+ //
198
+ // Devuelve dos factores: el factor max-marginalizado y un mapa
199
+ // backpointer key→valor(varEliminada) usado para reconstruir el
200
+ // argmax.
201
+ function maxOut(factor, variable) {
202
+ if (!factor.variables.includes(variable)) {
203
+ return { factor, backpointer: new Map() };
204
+ }
205
+ const newVars = factor.variables.filter((v) => v !== variable);
206
+ const newDomains = {};
207
+ for (const v of newVars)
208
+ newDomains[v] = factor.domains[v];
209
+ const values = new Map();
210
+ const backpointer = new Map();
211
+ for (const [key, val] of factor.values) {
212
+ const assign = parseAssignmentKey(key);
213
+ const projected = {};
214
+ for (const v of newVars)
215
+ projected[v] = assign[v];
216
+ const pKey = assignmentKey(newVars, projected);
217
+ const prev = values.get(pKey);
218
+ if (prev === undefined || val > prev) {
219
+ values.set(pKey, val);
220
+ backpointer.set(`${pKey}::${variable}`, assign[variable]);
221
+ }
222
+ }
223
+ return {
224
+ factor: { variables: newVars, domains: newDomains, values },
225
+ backpointer,
226
+ };
227
+ }
228
+ // ── Normalización ────────────────────────────────────────────
229
+ function normalizeFactor(factor) {
230
+ let total = 0;
231
+ for (const v of factor.values.values())
232
+ total += v;
233
+ if (total === 0) {
234
+ // Evidencia inconsistente: devolver factor uniforme nulo.
235
+ return factor;
236
+ }
237
+ const values = new Map();
238
+ for (const [k, v] of factor.values)
239
+ values.set(k, v / total);
240
+ return { variables: factor.variables, domains: factor.domains, values };
241
+ }
242
+ // ── Utilidades de red ────────────────────────────────────────
243
+ function variableDomainsOf(net) {
244
+ const out = {};
245
+ for (const v of net.variables)
246
+ out[v.name] = v.values;
247
+ return out;
248
+ }
249
+ //# sourceMappingURL=factor.js.map