@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,540 @@
1
+ "use strict";
2
+ // ============================================================
3
+ // ST Proof Minification — Núcleo
4
+ // ============================================================
5
+ //
6
+ // Transformaciones puras sobre árboles de pruebas. Ninguna operación
7
+ // muta el input — siempre se clonan los nodos al construir el output.
8
+ //
9
+ // Soundness: cada regla preserva la conclusión raíz y la conformidad
10
+ // estructural (premises siempre válidas, sin referencias colgantes).
11
+ // El minificador NO re-checkea la prueba — asume que el input ya es
12
+ // válido.
13
+ //
14
+ // Determinismo: las pasadas se aplican en orden fijo (detrivialize →
15
+ // compact-mp → cut-elimination-local → remove-unused). El bucle
16
+ // global termina cuando una iteración no cambia el árbol o se alcanza
17
+ // `maxIterations`.
18
+ Object.defineProperty(exports, "__esModule", { value: true });
19
+ exports.countNodes = countNodes;
20
+ exports.depthOf = depthOf;
21
+ exports.compactModusPonensChain = compactModusPonensChain;
22
+ exports.removeUnusedSubproofs = removeUnusedSubproofs;
23
+ exports.minifyProof = minifyProof;
24
+ const DEFAULT_MAX_ITERATIONS = 16;
25
+ const ALL_RULES = [
26
+ 'detrivialize',
27
+ 'compact-mp',
28
+ 'cut-elimination-local',
29
+ 'remove-unused',
30
+ ];
31
+ // ── Reconocedores de reglas (nombres equivalentes) ────────────
32
+ const LEAF_RULES = new Set([
33
+ 'axiom',
34
+ 'ax',
35
+ 'hypothesis',
36
+ 'hyp',
37
+ 'assumption',
38
+ 'asm',
39
+ 'premise',
40
+ 'init',
41
+ 'identity',
42
+ 'id',
43
+ ]);
44
+ const MP_RULES = new Set([
45
+ '→E',
46
+ '->E',
47
+ 'MP',
48
+ 'mp',
49
+ 'modus-ponens',
50
+ 'modus_ponens',
51
+ 'impl-elim',
52
+ 'implication-elimination',
53
+ '⊃E',
54
+ ]);
55
+ const IMPL_INTRO_RULES = new Set(['→I', '->I', 'impl-intro', 'implication-introduction', '⊃I']);
56
+ const AND_INTRO_RULES = new Set([
57
+ '∧I',
58
+ '&I',
59
+ 'and-intro',
60
+ 'conj-intro',
61
+ 'conjunction-introduction',
62
+ ]);
63
+ const AND_ELIM_RULES = new Set([
64
+ '∧E',
65
+ '∧E1',
66
+ '∧E2',
67
+ '&E',
68
+ '&E1',
69
+ '&E2',
70
+ 'and-elim',
71
+ 'and-elim1',
72
+ 'and-elim2',
73
+ 'conj-elim',
74
+ 'conjunction-elimination',
75
+ ]);
76
+ const CUT_RULES = new Set(['cut', 'Cut', 'CUT']);
77
+ const WEAKEN_RULES = new Set(['weakening', 'weaken', 'WL', 'WR', 'exchange', 'XL', 'XR']);
78
+ function isLeafRule(rule) {
79
+ return LEAF_RULES.has(rule);
80
+ }
81
+ function isMPRule(rule) {
82
+ return MP_RULES.has(rule);
83
+ }
84
+ function isImplIntroRule(rule) {
85
+ return IMPL_INTRO_RULES.has(rule);
86
+ }
87
+ function isAndIntroRule(rule) {
88
+ return AND_INTRO_RULES.has(rule);
89
+ }
90
+ function isAndElimRule(rule) {
91
+ return AND_ELIM_RULES.has(rule);
92
+ }
93
+ function isCutRule(rule) {
94
+ return CUT_RULES.has(rule);
95
+ }
96
+ function isWeakenRule(rule) {
97
+ return WEAKEN_RULES.has(rule);
98
+ }
99
+ // ── Utilidades de árbol ───────────────────────────────────────
100
+ /** Normaliza una conclusión para comparación (trim + collapse ws). */
101
+ function normalize(formula) {
102
+ return formula.trim().replace(/\s+/g, ' ');
103
+ }
104
+ function cloneNode(n) {
105
+ const out = {
106
+ conclusion: n.conclusion,
107
+ rule: n.rule,
108
+ premises: n.premises.map(cloneNode),
109
+ };
110
+ if (n.metadata !== undefined) {
111
+ out.metadata = { ...n.metadata };
112
+ }
113
+ return out;
114
+ }
115
+ /** Cuenta los nodos de un árbol (raíz incluida). */
116
+ function countNodes(n) {
117
+ let total = 1;
118
+ for (const p of n.premises)
119
+ total += countNodes(p);
120
+ return total;
121
+ }
122
+ /** Profundidad máxima (raíz = 0). */
123
+ function depthOf(n) {
124
+ if (n.premises.length === 0)
125
+ return 0;
126
+ let max = 0;
127
+ for (const p of n.premises) {
128
+ const d = depthOf(p);
129
+ if (d > max)
130
+ max = d;
131
+ }
132
+ return 1 + max;
133
+ }
134
+ /** Serialización canónica para hashing/dedup. */
135
+ function canonicalKey(n) {
136
+ const kids = n.premises.map(canonicalKey).join('|');
137
+ return `${n.rule}::${normalize(n.conclusion)}::(${kids})`;
138
+ }
139
+ // ── 1. Detrivialize ───────────────────────────────────────────
140
+ //
141
+ // (a) Si un nodo de eliminación tiene como premisa inmediata su propio
142
+ // introductor con la misma conclusion final, colapsa al sub-árbol
143
+ // que justificó la intro. Ejemplo clásico:
144
+ //
145
+ // ⌜A⌝ (∧I)
146
+ // ⌜B⌝ ──────────────
147
+ // A ∧ B
148
+ // (∧E1)
149
+ // A
150
+ //
151
+ // → simplemente la sub-prueba de A.
152
+ //
153
+ // (b) Dedup de premises: si dos premises directas son estructuralmente
154
+ // iguales, se conserva una sola copia.
155
+ function detrivialize(node) {
156
+ // Primero reducimos los hijos.
157
+ const reducedPremises = node.premises.map(detrivialize);
158
+ // (a) ∧E ∘ ∧I → premisa correspondiente.
159
+ if (isAndElimRule(node.rule) &&
160
+ reducedPremises.length === 1 &&
161
+ isAndIntroRule(reducedPremises[0].rule) &&
162
+ reducedPremises[0].premises.length === 2) {
163
+ const intro = reducedPremises[0];
164
+ const target = normalize(node.conclusion);
165
+ // Elegir la premisa de la intro cuya conclusion coincide con la
166
+ // conclusion del eliminador.
167
+ for (const p of intro.premises) {
168
+ if (normalize(p.conclusion) === target) {
169
+ return cloneNode(p);
170
+ }
171
+ }
172
+ }
173
+ // (a') →E ∘ →I trivial: si la intro produjo A→B a partir de "asumir
174
+ // A, derivar B" donde B es exactamente la conclusion final y el
175
+ // antecedente A ya estaba como axioma/hipótesis fuera, el MP
176
+ // colapsa al sub-árbol que derivó B. Caso conservador: la sub-prueba
177
+ // de B debe ser una hoja (no re-ejecutamos sustituciones).
178
+ if (isMPRule(node.rule) &&
179
+ reducedPremises.length === 2 &&
180
+ isImplIntroRule(reducedPremises[0].rule) &&
181
+ reducedPremises[0].premises.length === 1) {
182
+ const intro = reducedPremises[0];
183
+ const body = intro.premises[0];
184
+ if (normalize(body.conclusion) === normalize(node.conclusion) && isLeafRule(body.rule)) {
185
+ return cloneNode(body);
186
+ }
187
+ }
188
+ // (b) Dedup de premises directas. Importante para conjunciones o
189
+ // pasos que repiten la misma justificación.
190
+ const dedupedPremises = [];
191
+ const seenKeys = new Set();
192
+ for (const p of reducedPremises) {
193
+ const k = canonicalKey(p);
194
+ if (seenKeys.has(k))
195
+ continue;
196
+ seenKeys.add(k);
197
+ dedupedPremises.push(p);
198
+ }
199
+ return {
200
+ conclusion: node.conclusion,
201
+ rule: node.rule,
202
+ premises: dedupedPremises,
203
+ ...(node.metadata !== undefined ? { metadata: { ...node.metadata } } : {}),
204
+ };
205
+ }
206
+ // ── 2. Compact MP chains ──────────────────────────────────────
207
+ //
208
+ // Una cadena de modus ponens se ve así (n = 3):
209
+ //
210
+ // A A→B
211
+ // ───────── MP
212
+ // B B→C
213
+ // ──────────────── MP
214
+ // C C→D
215
+ // ─────────────── MP
216
+ // D
217
+ //
218
+ // El minificador detecta esta estructura y produce un único nodo MP*
219
+ // con todas las hipótesis y todas las implicaciones como premisas
220
+ // hermanas (estructura plana), con `metadata.chain = ['A','B','C','D']`
221
+ // y `rule = 'MP*'`.
222
+ function compactModusPonensChain(proof) {
223
+ // Top-down: primero intentamos compactar EN la raíz; si compactamos
224
+ // recursamos en las premisas resultantes (que serán hojas de la
225
+ // cadena). Si no compactamos en la raíz, recursamos en cada premisa
226
+ // individualmente.
227
+ if (isMPRule(proof.rule) && proof.premises.length === 2) {
228
+ const compacted = tryCompactChain(proof);
229
+ if (compacted !== null) {
230
+ // Las premisas de un MP* son las implicaciones + el antecedente
231
+ // más profundo. Aplicamos recursión a cada una por si tienen
232
+ // sub-cadenas independientes.
233
+ return {
234
+ ...compacted,
235
+ premises: compacted.premises.map(compactModusPonensChain),
236
+ };
237
+ }
238
+ }
239
+ // No compactamos esta raíz; recursamos sobre premisas.
240
+ return {
241
+ conclusion: proof.conclusion,
242
+ rule: proof.rule,
243
+ premises: proof.premises.map(compactModusPonensChain),
244
+ ...(proof.metadata !== undefined ? { metadata: { ...proof.metadata } } : {}),
245
+ };
246
+ }
247
+ /**
248
+ * Intenta detectar una cadena de modus ponens partiendo del nodo dado.
249
+ * Devuelve el nodo compactado o `null` si no hay cadena de tamaño ≥ 2.
250
+ */
251
+ function tryCompactChain(node) {
252
+ const conclusions = [];
253
+ const impls = [];
254
+ let cursor = node;
255
+ const visited = new Set();
256
+ let mpDepth = 0;
257
+ while (cursor && isMPRule(cursor.rule) && cursor.premises.length === 2 && !visited.has(cursor)) {
258
+ visited.add(cursor);
259
+ mpDepth++;
260
+ const [a, b] = cursor.premises;
261
+ const target = normalize(cursor.conclusion);
262
+ const aConc = normalize(a.conclusion);
263
+ const bConc = normalize(b.conclusion);
264
+ const isAImpl = matchesImplication(aConc, target);
265
+ const isBImpl = matchesImplication(bConc, target);
266
+ let antecedent;
267
+ let implication;
268
+ if (isAImpl && !isBImpl) {
269
+ implication = a;
270
+ antecedent = b;
271
+ }
272
+ else if (isBImpl && !isAImpl) {
273
+ implication = b;
274
+ antecedent = a;
275
+ }
276
+ else {
277
+ // Ambiguo o ambas son implicaciones: no compactamos esta cadena.
278
+ return null;
279
+ }
280
+ impls.push(implication);
281
+ conclusions.push(antecedent.conclusion);
282
+ if (isMPRule(antecedent.rule) && antecedent.premises.length === 2) {
283
+ cursor = antecedent;
284
+ }
285
+ else {
286
+ conclusions.push(cursor.conclusion);
287
+ impls.push(antecedent);
288
+ break;
289
+ }
290
+ }
291
+ // Sólo compactamos si hubo al menos 2 MPs encadenados.
292
+ if (mpDepth < 2)
293
+ return null;
294
+ return {
295
+ conclusion: node.conclusion,
296
+ rule: 'MP*',
297
+ premises: impls,
298
+ metadata: {
299
+ chain: conclusions,
300
+ compactedFrom: 'modus-ponens-chain',
301
+ length: conclusions.length,
302
+ },
303
+ };
304
+ }
305
+ /**
306
+ * Heurística: ¿`impl` parece ser una implicación cuyo consecuente es
307
+ * `target`? Reconoce los conectores `→`, `->`, `⊃`, ` implies `.
308
+ * NO hace parsing real — sólo string-matching del lado derecho.
309
+ */
310
+ function matchesImplication(impl, target) {
311
+ const connectors = ['→', '->', '⊃', ' implies '];
312
+ for (const conn of connectors) {
313
+ const idx = impl.lastIndexOf(conn);
314
+ if (idx < 0)
315
+ continue;
316
+ let rhs = impl.slice(idx + conn.length).trim();
317
+ // Strip outer parens si está balanceado.
318
+ rhs = stripOuterParens(rhs);
319
+ const tgt = stripOuterParens(target);
320
+ if (rhs === tgt)
321
+ return true;
322
+ }
323
+ return false;
324
+ }
325
+ function stripOuterParens(s) {
326
+ let cur = s.trim();
327
+ while (cur.startsWith('(') && cur.endsWith(')')) {
328
+ let depth = 0;
329
+ let balanced = true;
330
+ for (let i = 0; i < cur.length; i++) {
331
+ const ch = cur[i];
332
+ if (ch === '(')
333
+ depth++;
334
+ else if (ch === ')') {
335
+ depth--;
336
+ if (depth === 0 && i < cur.length - 1) {
337
+ balanced = false;
338
+ break;
339
+ }
340
+ }
341
+ }
342
+ if (!balanced)
343
+ break;
344
+ cur = cur.slice(1, -1).trim();
345
+ }
346
+ return cur;
347
+ }
348
+ // ── 3. Local cut elimination ──────────────────────────────────
349
+ //
350
+ // Caso elemental: nodo `cut` con cut-formula A donde una de las dos
351
+ // premisas es exactamente una hoja con conclusion A (la regla de
352
+ // identidad). En ese caso el cut es trivial y se reemplaza por la
353
+ // otra premisa, que ya derivaba la conclusion.
354
+ function eliminateLocalCuts(node) {
355
+ const reducedPremises = node.premises.map(eliminateLocalCuts);
356
+ const next = {
357
+ conclusion: node.conclusion,
358
+ rule: node.rule,
359
+ premises: reducedPremises,
360
+ ...(node.metadata !== undefined ? { metadata: { ...node.metadata } } : {}),
361
+ };
362
+ if (!isCutRule(next.rule))
363
+ return next;
364
+ if (next.premises.length !== 2)
365
+ return next;
366
+ const [left, right] = next.premises;
367
+ // Si la rama izquierda es una hoja-identidad cuya conclusión coincide
368
+ // con la conclusión del cut, la rama derecha YA derivó la conclusión.
369
+ if (isLeafRule(left.rule) && normalize(left.conclusion) === normalize(next.conclusion)) {
370
+ return cloneNode(right);
371
+ }
372
+ if (isLeafRule(right.rule) && normalize(right.conclusion) === normalize(next.conclusion)) {
373
+ return cloneNode(left);
374
+ }
375
+ return next;
376
+ }
377
+ // ── 4. Remove unused subproofs ────────────────────────────────
378
+ //
379
+ // Para pasos de weakening/exchange, la(s) sub-prueba(s) que no
380
+ // contribuyen a la conclusión del nodo padre se pueden recortar. Aquí
381
+ // definimos "no contribuye" como: la conclusion del sub-árbol no
382
+ // coincide con ninguna conclusion en el camino raíz→nodo, y tampoco
383
+ // es premisa formal del nodo (caso weakening).
384
+ //
385
+ // Aplicación práctica: nodos weakening con N premisas donde sólo una
386
+ // coincide con la conclusion del padre → se conservan únicamente las
387
+ // premisas relevantes.
388
+ function removeUnusedSubproofs(proof) {
389
+ const cleaned = cleanWeakenings(proof);
390
+ return pruneOrphanPremises(cleaned);
391
+ }
392
+ function cleanWeakenings(node) {
393
+ const reduced = node.premises.map(cleanWeakenings);
394
+ if (isWeakenRule(node.rule)) {
395
+ const target = normalize(node.conclusion);
396
+ // Buscamos la(s) premisa(s) que derivan exactamente la conclusion.
397
+ const relevant = reduced.filter((p) => containsConclusion(p, target));
398
+ if (relevant.length >= 1 && relevant.length < reduced.length) {
399
+ return {
400
+ conclusion: node.conclusion,
401
+ rule: node.rule,
402
+ premises: relevant,
403
+ ...(node.metadata !== undefined ? { metadata: { ...node.metadata } } : {}),
404
+ };
405
+ }
406
+ // Si todas las premisas son irrelevantes (caso degenerado): mantén
407
+ // sólo la primera para no perder el árbol.
408
+ if (relevant.length === 0 && reduced.length > 0) {
409
+ return {
410
+ conclusion: node.conclusion,
411
+ rule: node.rule,
412
+ premises: [reduced[0]],
413
+ ...(node.metadata !== undefined ? { metadata: { ...node.metadata } } : {}),
414
+ };
415
+ }
416
+ }
417
+ return {
418
+ conclusion: node.conclusion,
419
+ rule: node.rule,
420
+ premises: reduced,
421
+ ...(node.metadata !== undefined ? { metadata: { ...node.metadata } } : {}),
422
+ };
423
+ }
424
+ /**
425
+ * Recorta sub-pruebas huérfanas: una sub-prueba es huérfana si su
426
+ * conclusion no aparece en ninguna parte del árbol (ni como premisa
427
+ * referenciada, ni como conclusion intermedia útil) excepto a sí
428
+ * misma. Conservador: sólo opera sobre nodos con >2 premisas donde
429
+ * todas menos una son axiomas/hipótesis cuya conclusion nunca aparece.
430
+ */
431
+ function pruneOrphanPremises(node) {
432
+ const reduced = node.premises.map(pruneOrphanPremises);
433
+ if (reduced.length <= 1) {
434
+ return {
435
+ conclusion: node.conclusion,
436
+ rule: node.rule,
437
+ premises: reduced,
438
+ ...(node.metadata !== undefined ? { metadata: { ...node.metadata } } : {}),
439
+ };
440
+ }
441
+ // Conjunto de conclusiones que aparecen en el árbol completo bajo
442
+ // las premisas que SÍ son no-hojas: si una hoja-hipótesis tiene
443
+ // conclusion que no aparece como sub-fórmula de ningún otro nodo,
444
+ // probablemente sea dead weight.
445
+ const liveConclusions = new Set();
446
+ for (const p of reduced) {
447
+ collectNonLeafConclusions(p, liveConclusions);
448
+ }
449
+ liveConclusions.add(normalize(node.conclusion));
450
+ // Filtramos hojas cuya conclusion no aparece como sub-string de
451
+ // ninguna conclusion viva. Esto es heurístico (no semántico) — sirve
452
+ // sólo para casos donde la hipótesis es claramente independiente.
453
+ const pruned = [];
454
+ for (const p of reduced) {
455
+ if (isLeafRule(p.rule) && !appearsInAnyConclusion(normalize(p.conclusion), liveConclusions)) {
456
+ // huérfano: no incluir.
457
+ continue;
458
+ }
459
+ pruned.push(p);
460
+ }
461
+ // Aseguramos al menos una premisa si node no es hoja por naturaleza.
462
+ if (pruned.length === 0 && reduced.length > 0) {
463
+ pruned.push(reduced[0]);
464
+ }
465
+ return {
466
+ conclusion: node.conclusion,
467
+ rule: node.rule,
468
+ premises: pruned,
469
+ ...(node.metadata !== undefined ? { metadata: { ...node.metadata } } : {}),
470
+ };
471
+ }
472
+ function collectNonLeafConclusions(n, set) {
473
+ if (!isLeafRule(n.rule)) {
474
+ set.add(normalize(n.conclusion));
475
+ }
476
+ for (const p of n.premises)
477
+ collectNonLeafConclusions(p, set);
478
+ }
479
+ function appearsInAnyConclusion(needle, hay) {
480
+ if (hay.has(needle))
481
+ return true;
482
+ for (const conc of hay) {
483
+ if (conc.includes(needle))
484
+ return true;
485
+ }
486
+ return false;
487
+ }
488
+ function containsConclusion(n, target) {
489
+ if (normalize(n.conclusion) === target)
490
+ return true;
491
+ for (const p of n.premises) {
492
+ if (containsConclusion(p, target))
493
+ return true;
494
+ }
495
+ return false;
496
+ }
497
+ // ── API principal ─────────────────────────────────────────────
498
+ /**
499
+ * Minifica un árbol de pruebas iterando las reglas hasta punto fijo
500
+ * o agotar `maxIterations`.
501
+ */
502
+ function minifyProof(proof, opts = {}) {
503
+ const maxIterations = opts.maxIterations ?? DEFAULT_MAX_ITERATIONS;
504
+ const rules = opts.rules ?? ALL_RULES;
505
+ const ruleSet = new Set(rules);
506
+ const originalNodes = countNodes(proof);
507
+ const originalDepth = depthOf(proof);
508
+ let current = cloneNode(proof);
509
+ let iterations = 0;
510
+ for (let i = 0; i < maxIterations; i++) {
511
+ iterations++;
512
+ const before = canonicalKey(current);
513
+ if (ruleSet.has('detrivialize'))
514
+ current = detrivialize(current);
515
+ if (ruleSet.has('compact-mp'))
516
+ current = compactModusPonensChain(current);
517
+ if (ruleSet.has('cut-elimination-local'))
518
+ current = eliminateLocalCuts(current);
519
+ if (ruleSet.has('remove-unused'))
520
+ current = removeUnusedSubproofs(current);
521
+ const after = canonicalKey(current);
522
+ if (before === after)
523
+ break; // punto fijo
524
+ }
525
+ const minNodes = countNodes(current);
526
+ const minDepth = depthOf(current);
527
+ const removed = originalNodes - minNodes;
528
+ const pct = originalNodes === 0 ? 0 : (removed / originalNodes) * 100;
529
+ return {
530
+ original: { nodes: originalNodes, depth: originalDepth },
531
+ minified: current,
532
+ reduction: {
533
+ nodesRemoved: removed,
534
+ depthDelta: originalDepth - minDepth,
535
+ percentage: Math.round(pct * 100) / 100,
536
+ },
537
+ iterations,
538
+ };
539
+ }
540
+ //# sourceMappingURL=minify.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"minify.js","sourceRoot":"","sources":["../../../src/runtime/proof-minify/minify.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,89 @@
1
+ /**
2
+ * Nodo genérico de un árbol de pruebas.
3
+ *
4
+ * - `conclusion`: representación textual de la fórmula derivada en el
5
+ * nodo. La comparación entre conclusiones se hace por igualdad de
6
+ * strings normalizados (trim + colapsar whitespace interno).
7
+ * - `rule`: nombre de la regla que justifica la conclusión a partir
8
+ * de las premises. Convenciones reconocidas:
9
+ * * `axiom`, `hypothesis`, `assumption`, `premise`: hoja sin
10
+ * premises (o se ignoran las que tenga).
11
+ * * `→E`, `->E`, `MP`, `modus-ponens`, `impl-elim`: eliminación
12
+ * de implicación (modus ponens). Espera 2 premises: la
13
+ * implicación y el antecedente.
14
+ * * `→I`, `->I`, `impl-intro`: introducción de implicación.
15
+ * * `∧I`, `&I`, `and-intro`, `conj-intro`: conjunción intro.
16
+ * * `∧E1`, `∧E2`, `and-elim`, `conj-elim`: conjunción elim.
17
+ * * `cut`: corte en sequent calculus (elimina-able localmente
18
+ * cuando ambas ramas tienen el mismo cut-formula como hoja).
19
+ * El resto se trata como reglas opacas (no se reducen pero sí se
20
+ * detectan como redundantes/no usadas).
21
+ * - `premises`: subárboles. Para hojas, lista vacía.
22
+ * - `metadata`: opcional, free-form. Si el minificador encuentra dos
23
+ * nodos idénticos por conclusión+rule, prefiere el que tenga menos
24
+ * metadata (estable por orden de aparición).
25
+ */
26
+ export interface GenericProofNode {
27
+ conclusion: string;
28
+ rule: string;
29
+ premises: GenericProofNode[];
30
+ metadata?: Record<string, unknown>;
31
+ }
32
+ /**
33
+ * Reglas de reducción soportadas. El minificador las aplica en orden
34
+ * fijo dentro de cada iteración:
35
+ *
36
+ * 1. `detrivialize` — quita pares intro/elim adyacentes y
37
+ * quita usos redundantes de la misma
38
+ * premisa (dedup por conclusión).
39
+ * 2. `compact-mp` — colapsa cadenas A→B, A ⊢ B, B→C ⊢ C,
40
+ * C→D ⊢ D... cuando el árbol intermedio
41
+ * sólo se usa para alimentar el siguiente
42
+ * MP. La cadena queda en `metadata.chain`.
43
+ * 3. `cut-elimination-local` — caso simple de eliminación de cut
44
+ * cuando una rama del cut es una
45
+ * hipótesis idéntica a la otra rama.
46
+ * 4. `remove-unused` — recorre el árbol y descarta sub-pruebas
47
+ * cuyo resultado nunca aparece como
48
+ * conclusion en el camino hacia la raíz
49
+ * (sólo aplica a nodos del tipo
50
+ * `weakening`/`exchange` o sub-árboles
51
+ * huérfanos en una lista de premises).
52
+ */
53
+ export type MinifyRule = 'detrivialize' | 'compact-mp' | 'cut-elimination-local' | 'remove-unused';
54
+ export interface MinifyOptions {
55
+ /**
56
+ * Tope superior de pasadas globales. Default: 16. El bucle se corta
57
+ * antes si una iteración entera no cambia el árbol (punto fijo).
58
+ */
59
+ maxIterations?: number;
60
+ /**
61
+ * Subconjunto de reglas a aplicar. Default: todas. El orden de
62
+ * aplicación dentro de una iteración es fijo independientemente del
63
+ * orden en este array — se respeta el orden documentado.
64
+ */
65
+ rules?: MinifyRule[];
66
+ }
67
+ export interface MinifyResult {
68
+ /** Estadísticas del árbol original. */
69
+ original: {
70
+ /** Número de nodos (incluida la raíz). */
71
+ nodes: number;
72
+ /** Profundidad máxima (raíz = 0). */
73
+ depth: number;
74
+ };
75
+ /** Árbol minificado. La raíz preserva la conclusion original. */
76
+ minified: GenericProofNode;
77
+ /** Métricas de reducción. */
78
+ reduction: {
79
+ /** Nodos eliminados (original.nodes - minified.nodes). */
80
+ nodesRemoved: number;
81
+ /** Diferencia de profundidad (puede ser 0 si no compactó MP). */
82
+ depthDelta: number;
83
+ /** Porcentaje de reducción de nodos, redondeado a 2 decimales. */
84
+ percentage: number;
85
+ };
86
+ /** Iteraciones consumidas antes del punto fijo (1-indexed). */
87
+ iterations: number;
88
+ }
89
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/runtime/proof-minify/types.ts"],"names":[],"mappings":"AAcA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,gBAAgB,EAAE,CAAC;IAC7B,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,MAAM,UAAU,GAAG,cAAc,GAAG,YAAY,GAAG,uBAAuB,GAAG,eAAe,CAAC;AAEnG,MAAM,WAAW,aAAa;IAC5B;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;;OAIG;IACH,KAAK,CAAC,EAAE,UAAU,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,YAAY;IAC3B,uCAAuC;IACvC,QAAQ,EAAE;QACR,0CAA0C;QAC1C,KAAK,EAAE,MAAM,CAAC;QACd,qCAAqC;QACrC,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;IACF,iEAAiE;IACjE,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,6BAA6B;IAC7B,SAAS,EAAE;QACT,0DAA0D;QAC1D,YAAY,EAAE,MAAM,CAAC;QACrB,iEAAiE;QACjE,UAAU,EAAE,MAAM,CAAC;QACnB,kEAAkE;QAClE,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,+DAA+D;IAC/D,UAAU,EAAE,MAAM,CAAC;CACpB"}
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ // ============================================================
3
+ // ST Proof Minification — Tipos públicos
4
+ // ============================================================
5
+ //
6
+ // Representación genérica de un árbol de prueba que sirve tanto para
7
+ // natural deduction (intro/elim), cálculo de secuentes (G3, cut),
8
+ // resolución, paso modus-ponens encadenado, etc. La idea es que el
9
+ // reductor sea agnóstico al perfil lógico y opere sobre la estructura
10
+ // `(conclusion, rule, premises)` con strings textuales.
11
+ //
12
+ // El minificador NO valida que la prueba sea correcta — asume que el
13
+ // input ya es válido y se limita a aplicar transformaciones que
14
+ // preservan la conclusión y la corrección del árbol.
15
+ Object.defineProperty(exports, "__esModule", { value: true });
16
+ //# sourceMappingURL=types.js.map