@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,34 @@
1
+ import type { MUSOptions, MUSResult, SATOracle, AssumptionSolver } from './types';
2
+ /**
3
+ * Extrae un MUS (Minimal Unsatisfiable Subset) del conjunto unsat
4
+ * `clauses` usando el oráculo SAT provisto.
5
+ *
6
+ * Convenciones:
7
+ * - Las cláusulas son arrays de literales enteros estilo DIMACS
8
+ * (positivo / negativo). El motor no inspecciona la semántica;
9
+ * todo lo delega al `satOracle`.
10
+ * - El conjunto retornado en `mus` son índices sobre `clauses`.
11
+ * - Si `clauses` ES satisfacible, devolvemos `mus = []` (no hay
12
+ * MUS posible).
13
+ * - Determinismo: orden numérico ascendente en todos los recorridos.
14
+ */
15
+ export declare function extractMUS(clauses: number[][], satOracle: SATOracle, opts?: MUSOptions): MUSResult;
16
+ /**
17
+ * Variante para SAT solvers incrementales con assumptions.
18
+ *
19
+ * El patrón típico es:
20
+ * - Por cada cláusula original `C_i`, añadir un selector literal
21
+ * `s_i` y convertirla en `C_i ∨ ¬s_i` (la cláusula está "off"
22
+ * cuando `s_i = false`).
23
+ * - Para "activar" un subset, pasar las correspondientes `s_i` como
24
+ * assumptions positivas.
25
+ * - Cuando el problema es unsat, el solver devuelve
26
+ * `failedAssumptions ⊆ assumptions` — el unsat core proyectado
27
+ * sobre los selectors.
28
+ *
29
+ * Esta función toma el `failedAssumptions` como punto de partida y
30
+ * lo minimiza con un pase deletion-based usando el mismo solver para
31
+ * garantizar minimalidad por inclusión.
32
+ */
33
+ export declare function extractMUSWithSelectors(clauses: number[][], selectors: number[], solver: AssumptionSolver, opts?: MUSOptions): MUSResult;
34
+ //# sourceMappingURL=extract.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extract.d.ts","sourceRoot":"","sources":["../../../src/runtime/mus/extract.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAgB,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAuHhG;;;;;;;;;;;;GAYG;AACH,wBAAgB,UAAU,CACxB,OAAO,EAAE,MAAM,EAAE,EAAE,EACnB,SAAS,EAAE,SAAS,EACpB,IAAI,GAAE,UAAe,GACpB,SAAS,CA8CX;AAID;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,MAAM,EAAE,EAAE,EACnB,SAAS,EAAE,MAAM,EAAE,EACnB,MAAM,EAAE,gBAAgB,EACxB,IAAI,GAAE,UAAe,GACpB,SAAS,CAsDX"}
@@ -0,0 +1,243 @@
1
+ "use strict";
2
+ // ============================================================
3
+ // ST MUS — Extracción de Minimal Unsatisfiable Subsets
4
+ // ============================================================
5
+ //
6
+ // Algoritmos implementados:
7
+ // - deletion-based (O(n) llamadas SAT)
8
+ // - insertion-based (variante MARCO-like sencilla)
9
+ // - QuickXplain (delegado a `quickxplain.ts`)
10
+ //
11
+ // El oráculo SAT es una caja negra: cualquier función que dado un
12
+ // array de cláusulas (literales enteros estilo DIMACS) devuelva
13
+ // `true` si tiene modelo. Sound y completo según el oráculo provisto.
14
+ //
15
+ // También exponemos `extractMUSWithSelectors` para SAT solvers
16
+ // incrementales que devuelven `failedAssumptions`: en ese caso
17
+ // usamos la API del solver para conseguir un núcleo y luego lo
18
+ // minimizamos.
19
+ Object.defineProperty(exports, "__esModule", { value: true });
20
+ exports.extractMUS = extractMUS;
21
+ exports.extractMUSWithSelectors = extractMUSWithSelectors;
22
+ const quickxplain_1 = require("./quickxplain");
23
+ const DEFAULT_MAX_ITERATIONS = 100_000;
24
+ function callOracle(state, ids) {
25
+ if (state.satCalls >= state.maxIterations)
26
+ return true; // forzar salida segura
27
+ const subset = [];
28
+ for (const id of ids) {
29
+ const c = state.byId.get(id);
30
+ if (c !== undefined)
31
+ subset.push(c);
32
+ }
33
+ state.satCalls++;
34
+ return state.oracle(subset);
35
+ }
36
+ // ── Deletion-based ─────────────────────────────────────────────
37
+ /**
38
+ * Recorre cada cláusula del conjunto inicial; si removerla deja al
39
+ * resto unsat, la descarta. Garantiza minimalidad por inclusión al
40
+ * terminar el pase porque cada cláusula sobreviviente es "necesaria"
41
+ * en el contexto del conjunto sobreviviente.
42
+ *
43
+ * Detalle sutil: el orden de visita importa para *cuál* MUS se
44
+ * encuentra (puede haber varios). Usamos el orden numérico (id
45
+ * ascendente) para determinismo.
46
+ */
47
+ function extractDeletion(state, allIds) {
48
+ let kept = allIds.slice().sort((a, b) => a - b);
49
+ for (const id of allIds.slice().sort((a, b) => a - b)) {
50
+ if (state.satCalls >= state.maxIterations)
51
+ break;
52
+ state.iterations++;
53
+ const candidate = kept.filter((x) => x !== id);
54
+ if (candidate.length === 0)
55
+ continue;
56
+ if (!callOracle(state, candidate)) {
57
+ // Sin esa cláusula sigue unsat → no es necesaria.
58
+ kept = candidate;
59
+ }
60
+ }
61
+ return kept;
62
+ }
63
+ // ── Insertion-based ────────────────────────────────────────────
64
+ /**
65
+ * Variante "linear search" de MUS extraction (a veces llamada
66
+ * dichotomic / insertion). Itera:
67
+ *
68
+ * 1. Mantiene `mus = []` (núcleo crecido) y `pool = allIds`.
69
+ * 2. Va añadiendo cláusulas de `pool` a un `working` set hasta que
70
+ * `mus ∪ working` se vuelve unsat. La última añadida es
71
+ * "transition" — la promueve a `mus`.
72
+ * 3. Reset `working = []` y repite, recortando `pool` a las que
73
+ * quedaron antes de la transition.
74
+ * 4. Termina cuando `mus` solo es unsat.
75
+ *
76
+ * Esto es esencialmente "augmenting MUS" / Junker's linear baseline.
77
+ * O(|MUS| · |C|) llamadas SAT en el peor caso, pero suele ser mucho
78
+ * más rápido en la práctica cuando |MUS| ≪ |C|.
79
+ */
80
+ function extractInsertion(state, allIds) {
81
+ const mus = [];
82
+ let pool = allIds.slice().sort((a, b) => a - b);
83
+ // Caso base: si `[]` ya es unsat, el MUS es vacío.
84
+ state.iterations++;
85
+ if (!callOracle(state, []))
86
+ return [];
87
+ while (state.satCalls < state.maxIterations) {
88
+ state.iterations++;
89
+ // Si solo `mus` ya es unsat, terminamos.
90
+ if (!callOracle(state, mus))
91
+ break;
92
+ let working = [];
93
+ let transition = -1;
94
+ const consumed = [];
95
+ for (const id of pool) {
96
+ if (state.satCalls >= state.maxIterations)
97
+ break;
98
+ working = working.concat(id);
99
+ consumed.push(id);
100
+ if (!callOracle(state, mus.concat(working))) {
101
+ transition = id;
102
+ break;
103
+ }
104
+ }
105
+ if (transition === -1) {
106
+ // Defensa: si nunca se hizo unsat, el conjunto no era unsat para
107
+ // empezar (o se acabó el presupuesto). Salimos.
108
+ break;
109
+ }
110
+ mus.push(transition);
111
+ // Para el próximo loop solo nos quedamos con las cláusulas que se
112
+ // consumieron antes de la transition (excluyendo la transition).
113
+ // Esas son las "potencialmente irrelevantes" que aún hay que
114
+ // testear; las que estaban después en `pool` quedan ya cubiertas
115
+ // implícitamente por `mus`.
116
+ pool = consumed.filter((x) => x !== transition);
117
+ }
118
+ mus.sort((a, b) => a - b);
119
+ return mus;
120
+ }
121
+ // ── API pública ────────────────────────────────────────────────
122
+ /**
123
+ * Extrae un MUS (Minimal Unsatisfiable Subset) del conjunto unsat
124
+ * `clauses` usando el oráculo SAT provisto.
125
+ *
126
+ * Convenciones:
127
+ * - Las cláusulas son arrays de literales enteros estilo DIMACS
128
+ * (positivo / negativo). El motor no inspecciona la semántica;
129
+ * todo lo delega al `satOracle`.
130
+ * - El conjunto retornado en `mus` son índices sobre `clauses`.
131
+ * - Si `clauses` ES satisfacible, devolvemos `mus = []` (no hay
132
+ * MUS posible).
133
+ * - Determinismo: orden numérico ascendente en todos los recorridos.
134
+ */
135
+ function extractMUS(clauses, satOracle, opts = {}) {
136
+ const algorithm = opts.algorithm ?? 'deletion';
137
+ const maxIterations = opts.maxIterations ?? DEFAULT_MAX_ITERATIONS;
138
+ // Pre-check: el conjunto completo debe ser unsat. Si es sat, no hay
139
+ // MUS — devolvemos vacío.
140
+ if (satOracle(clauses)) {
141
+ return { mus: [], iterations: 1, satCalls: 1 };
142
+ }
143
+ if (clauses.length === 0) {
144
+ // `[]` es trivialmente sat, así que el pre-check ya habría
145
+ // devuelto. Defensa: nunca llegamos aquí porque sat([]) = true.
146
+ return { mus: [], iterations: 1, satCalls: 1 };
147
+ }
148
+ const byId = new Map();
149
+ clauses.forEach((c, i) => byId.set(i, c));
150
+ const allIds = clauses.map((_, i) => i);
151
+ if (algorithm === 'qx') {
152
+ const qx = (0, quickxplain_1.quickxplain)(clauses, satOracle, maxIterations);
153
+ // QuickXplain ya devuelve un MUS minimal por inclusión.
154
+ return { mus: qx.mus, iterations: 1, satCalls: qx.satCalls + 1 };
155
+ }
156
+ const state = {
157
+ oracle: satOracle,
158
+ byId,
159
+ satCalls: 1, // contamos el pre-check inicial
160
+ iterations: 0,
161
+ maxIterations,
162
+ };
163
+ let mus;
164
+ if (algorithm === 'insertion') {
165
+ mus = extractInsertion(state, allIds);
166
+ }
167
+ else {
168
+ mus = extractDeletion(state, allIds);
169
+ }
170
+ return {
171
+ mus: mus.slice().sort((a, b) => a - b),
172
+ iterations: state.iterations,
173
+ satCalls: state.satCalls,
174
+ };
175
+ }
176
+ // ── Variante con assumptions / selectors ───────────────────────
177
+ /**
178
+ * Variante para SAT solvers incrementales con assumptions.
179
+ *
180
+ * El patrón típico es:
181
+ * - Por cada cláusula original `C_i`, añadir un selector literal
182
+ * `s_i` y convertirla en `C_i ∨ ¬s_i` (la cláusula está "off"
183
+ * cuando `s_i = false`).
184
+ * - Para "activar" un subset, pasar las correspondientes `s_i` como
185
+ * assumptions positivas.
186
+ * - Cuando el problema es unsat, el solver devuelve
187
+ * `failedAssumptions ⊆ assumptions` — el unsat core proyectado
188
+ * sobre los selectors.
189
+ *
190
+ * Esta función toma el `failedAssumptions` como punto de partida y
191
+ * lo minimiza con un pase deletion-based usando el mismo solver para
192
+ * garantizar minimalidad por inclusión.
193
+ */
194
+ function extractMUSWithSelectors(clauses, selectors, solver, opts = {}) {
195
+ const maxIterations = opts.maxIterations ?? DEFAULT_MAX_ITERATIONS;
196
+ if (clauses.length !== selectors.length) {
197
+ throw new Error(`extractMUSWithSelectors: clauses.length (${clauses.length}) !== selectors.length (${selectors.length})`);
198
+ }
199
+ let satCalls = 0;
200
+ let iterations = 0;
201
+ // Primera llamada con TODAS las assumptions activas.
202
+ satCalls++;
203
+ iterations++;
204
+ const initial = solver.solveWithAssumptions(selectors.slice());
205
+ if (initial.sat) {
206
+ return { mus: [], iterations, satCalls };
207
+ }
208
+ // Núcleo inicial: failedAssumptions si el solver lo da; sino, todos.
209
+ const selectorToIndex = new Map();
210
+ selectors.forEach((s, i) => selectorToIndex.set(s, i));
211
+ let core;
212
+ if (initial.failedAssumptions && initial.failedAssumptions.length > 0) {
213
+ core = initial.failedAssumptions
214
+ .map((s) => selectorToIndex.get(s))
215
+ .filter((idx) => idx !== undefined);
216
+ }
217
+ else {
218
+ core = clauses.map((_, i) => i);
219
+ }
220
+ core = Array.from(new Set(core)).sort((a, b) => a - b);
221
+ // Minimización deletion-based sobre el core con el mismo solver.
222
+ for (const idx of core.slice()) {
223
+ if (satCalls >= maxIterations)
224
+ break;
225
+ iterations++;
226
+ const candidate = core.filter((x) => x !== idx);
227
+ if (candidate.length === 0)
228
+ continue;
229
+ const assumptions = candidate.map((i) => selectors[i]);
230
+ satCalls++;
231
+ const res = solver.solveWithAssumptions(assumptions);
232
+ if (!res.sat) {
233
+ // Sin esa cláusula sigue unsat → no es necesaria.
234
+ core = candidate;
235
+ }
236
+ }
237
+ return {
238
+ mus: core.slice().sort((a, b) => a - b),
239
+ iterations,
240
+ satCalls,
241
+ };
242
+ }
243
+ //# sourceMappingURL=extract.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extract.js","sourceRoot":"","sources":["../../../src/runtime/mus/extract.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export { extractMUS, extractMUSWithSelectors } from './extract';
2
+ export { quickxplain } from './quickxplain';
3
+ export type { MUSAlgorithm, MUSOptions, MUSResult, SATOracle, AssumptionSolver } from './types';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/runtime/mus/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,UAAU,EAAE,uBAAuB,EAAE,MAAM,WAAW,CAAC;AAChE,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC"}
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ // ============================================================
3
+ // ST MUS — Barrel
4
+ // ============================================================
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.quickxplain = exports.extractMUSWithSelectors = exports.extractMUS = void 0;
7
+ var extract_1 = require("./extract");
8
+ Object.defineProperty(exports, "extractMUS", { enumerable: true, get: function () { return extract_1.extractMUS; } });
9
+ Object.defineProperty(exports, "extractMUSWithSelectors", { enumerable: true, get: function () { return extract_1.extractMUSWithSelectors; } });
10
+ var quickxplain_1 = require("./quickxplain");
11
+ Object.defineProperty(exports, "quickxplain", { enumerable: true, get: function () { return quickxplain_1.quickxplain; } });
12
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/runtime/mus/index.ts"],"names":[],"mappings":";AAAA,+DAA+D;AAC/D,kBAAkB;AAClB,+DAA+D;;;AAE/D,qCAAgE;AAAvD,qGAAA,UAAU,OAAA;AAAE,kHAAA,uBAAuB,OAAA;AAC5C,6CAA4C;AAAnC,0GAAA,WAAW,OAAA"}
@@ -0,0 +1,10 @@
1
+ import type { SATOracle } from './types';
2
+ /**
3
+ * Ejecuta QuickXplain sobre el conjunto de cláusulas indexadas y
4
+ * devuelve los índices del MUS hallado más el conteo de llamadas SAT.
5
+ */
6
+ export declare function quickxplain(clauses: number[][], oracle: SATOracle, maxIterations: number): {
7
+ mus: number[];
8
+ satCalls: number;
9
+ };
10
+ //# sourceMappingURL=quickxplain.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"quickxplain.d.ts","sourceRoot":"","sources":["../../../src/runtime/mus/quickxplain.ts"],"names":[],"mappings":"AAyBA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAoEzC;;;GAGG;AACH,wBAAgB,WAAW,CACzB,OAAO,EAAE,MAAM,EAAE,EAAE,EACnB,MAAM,EAAE,SAAS,EACjB,aAAa,EAAE,MAAM,GACpB;IAAE,GAAG,EAAE,MAAM,EAAE,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAerC"}
@@ -0,0 +1,100 @@
1
+ "use strict";
2
+ // ============================================================
3
+ // ST MUS — QuickXplain (Junker 2004)
4
+ // ============================================================
5
+ //
6
+ // Divide-y-vencerás para encontrar un MUS dentro de un conjunto
7
+ // `C = B ∪ U` donde `B` (background) ya se sabe consistente y
8
+ // queremos hallar el subconjunto mínimo de `U` que es responsable
9
+ // de la inconsistencia (junto con `B`).
10
+ //
11
+ // Pseudocódigo (versión simétrica clásica):
12
+ //
13
+ // QX(B, ∆, C):
14
+ // if ∆ ≠ ∅ ∧ ¬sat(B): return ∅ // ∆ no necesario
15
+ // if |C| = 1: return C // C es minimal
16
+ // C1, C2 = split(C)
17
+ // ∆1 = QX(B ∪ C1, C1, C2)
18
+ // ∆2 = QX(B ∪ ∆1, ∆1, C1)
19
+ // return ∆1 ∪ ∆2
20
+ //
21
+ // Cuidado: en la primera llamada `∆` debe ser ≠ ∅ para no caer en el
22
+ // short-circuit. Convención típica: pasar `∆ = C` en el wrap externo.
23
+ //
24
+ // Complejidad: O(2k + 2k · log(n/k)) llamadas SAT, donde n = |C| y
25
+ // k = |MUS|. Muy buena cuando k ≪ n.
26
+ Object.defineProperty(exports, "__esModule", { value: true });
27
+ exports.quickxplain = quickxplain;
28
+ /**
29
+ * Llama al oráculo con la unión de varios sets de ids. Si el contador
30
+ * de llamadas excede `maxIterations`, devuelve `true` (sat) para
31
+ * forzar la salida del algoritmo de forma segura.
32
+ */
33
+ function check(state, ...sets) {
34
+ if (state.satCalls >= state.maxIterations)
35
+ return true;
36
+ const seen = new Set();
37
+ for (const s of sets)
38
+ for (const id of s)
39
+ seen.add(id);
40
+ const subset = [];
41
+ for (const id of seen) {
42
+ const clause = state.byId.get(id);
43
+ if (clause !== undefined)
44
+ subset.push(clause);
45
+ }
46
+ state.satCalls++;
47
+ return state.oracle(subset);
48
+ }
49
+ function qxRec(state, background, delta, candidates) {
50
+ // Si añadir delta hizo que el background sea unsat, delta no es necesario.
51
+ if (delta.length > 0 && !check(state, background)) {
52
+ return [];
53
+ }
54
+ if (candidates.length === 1) {
55
+ return candidates.slice();
56
+ }
57
+ if (state.satCalls >= state.maxIterations) {
58
+ return candidates.slice();
59
+ }
60
+ const mid = Math.floor(candidates.length / 2);
61
+ const left = candidates.slice(0, mid);
62
+ const right = candidates.slice(mid);
63
+ const delta1 = qxRec(state, mergeUnique(background, left), left, right);
64
+ const delta2 = qxRec(state, mergeUnique(background, delta1), delta1, left);
65
+ return mergeUnique(delta1, delta2);
66
+ }
67
+ function mergeUnique(a, b) {
68
+ if (a.length === 0)
69
+ return b.slice();
70
+ if (b.length === 0)
71
+ return a.slice();
72
+ const seen = new Set(a);
73
+ const out = a.slice();
74
+ for (const id of b) {
75
+ if (!seen.has(id)) {
76
+ seen.add(id);
77
+ out.push(id);
78
+ }
79
+ }
80
+ return out;
81
+ }
82
+ /**
83
+ * Ejecuta QuickXplain sobre el conjunto de cláusulas indexadas y
84
+ * devuelve los índices del MUS hallado más el conteo de llamadas SAT.
85
+ */
86
+ function quickxplain(clauses, oracle, maxIterations) {
87
+ const byId = new Map();
88
+ clauses.forEach((c, i) => byId.set(i, c));
89
+ const ids = clauses.map((_, i) => i);
90
+ // Pre-check: si el conjunto completo ya es SAT, no hay MUS.
91
+ const state = { oracle, byId, satCalls: 0, maxIterations };
92
+ if (check(state, ids)) {
93
+ return { mus: [], satCalls: state.satCalls };
94
+ }
95
+ // En la primera llamada, ∆ = candidates para evitar short-circuit.
96
+ const mus = qxRec(state, [], ids, ids);
97
+ mus.sort((a, b) => a - b);
98
+ return { mus, satCalls: state.satCalls };
99
+ }
100
+ //# sourceMappingURL=quickxplain.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"quickxplain.js","sourceRoot":"","sources":["../../../src/runtime/mus/quickxplain.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,59 @@
1
+ /**
2
+ * Algoritmos disponibles para extracción de MUS.
3
+ *
4
+ * - `deletion`: por cada cláusula c, prueba si C \ {c} sigue unsat;
5
+ * si sí, descarta c definitivamente. O(n) llamadas al oráculo SAT.
6
+ * Sencillo, robusto, fácil de auditar.
7
+ *
8
+ * - `insertion`: empieza con conjunto vacío W, agrega cláusulas una
9
+ * por una. Cuando W se vuelve unsat, la última cláusula añadida es
10
+ * "necesaria" (la fija en el MUS y vacía W). Repite hasta cubrir
11
+ * todo. Útil cuando el MUS es pequeño respecto al total.
12
+ *
13
+ * - `qx`: QuickXplain (Junker 2004). Algoritmo divide-y-vencerás que
14
+ * resuelve "minimum conflict explanation" con O(2k · log(n/k))
15
+ * llamadas SAT, donde k es el tamaño del MUS. En la práctica mucho
16
+ * más rápido que deletion para MUS grandes embebidos en problemas
17
+ * inmensos.
18
+ */
19
+ export type MUSAlgorithm = 'deletion' | 'insertion' | 'qx';
20
+ export interface MUSOptions {
21
+ /** Algoritmo a usar. Default: `deletion`. */
22
+ algorithm?: MUSAlgorithm;
23
+ /** Tope superior de llamadas al oráculo SAT. Default: 100_000. */
24
+ maxIterations?: number;
25
+ }
26
+ export interface MUSResult {
27
+ /** Índices (sobre el array original `clauses`) que conforman el MUS. */
28
+ mus: number[];
29
+ /** Iteraciones de bucle externo (rondas del algoritmo). */
30
+ iterations: number;
31
+ /** Llamadas totales al oráculo SAT. */
32
+ satCalls: number;
33
+ }
34
+ /**
35
+ * Oráculo SAT: dado un conjunto de cláusulas (cada cláusula es una
36
+ * lista de literales enteros — convención DIMACS: positivo es literal
37
+ * positivo, negativo es negado), devuelve `true` sii el conjunto
38
+ * tiene un modelo, `false` si es unsat.
39
+ */
40
+ export type SATOracle = (subset: number[][]) => boolean;
41
+ /**
42
+ * Solver incremental con assumptions (estilo MiniSat / SAT4J):
43
+ * dadas N cláusulas hard y una lista de literales-asumidos, devuelve
44
+ * `{ sat: false, failedAssumptions: [...] }` cuando el problema es
45
+ * unsat — el array `failedAssumptions` contiene un subconjunto de las
46
+ * assumptions suficientes para que el problema sea unsat (el unsat
47
+ * core proyectado sobre assumptions).
48
+ *
49
+ * En la práctica `failedAssumptions` ya es un MUS (sobre la
50
+ * codificación por selectors) o un superset cercano; corremos un pase
51
+ * adicional de minimización para garantizar minimalidad.
52
+ */
53
+ export interface AssumptionSolver {
54
+ solveWithAssumptions: (assumptions: number[]) => {
55
+ sat: boolean;
56
+ failedAssumptions?: number[];
57
+ };
58
+ }
59
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/runtime/mus/types.ts"],"names":[],"mappings":"AAkBA;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,MAAM,YAAY,GAAG,UAAU,GAAG,WAAW,GAAG,IAAI,CAAC;AAE3D,MAAM,WAAW,UAAU;IACzB,6CAA6C;IAC7C,SAAS,CAAC,EAAE,YAAY,CAAC;IACzB,kEAAkE;IAClE,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,SAAS;IACxB,wEAAwE;IACxE,GAAG,EAAE,MAAM,EAAE,CAAC;IACd,2DAA2D;IAC3D,UAAU,EAAE,MAAM,CAAC;IACnB,uCAAuC;IACvC,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;;;GAKG;AACH,MAAM,MAAM,SAAS,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,KAAK,OAAO,CAAC;AAExD;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,gBAAgB;IAC/B,oBAAoB,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK;QAC/C,GAAG,EAAE,OAAO,CAAC;QACb,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;KAC9B,CAAC;CACH"}
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ // ============================================================
3
+ // ST MUS (Minimal Unsatisfiable Subset) — Tipos públicos
4
+ // ============================================================
5
+ //
6
+ // Un MUS de un conjunto unsat C de cláusulas es un subconjunto
7
+ // M ⊆ C tal que:
8
+ // 1. M es insatisfacible (unsat).
9
+ // 2. Para toda cláusula c ∈ M, M \ {c} es satisfacible (sat).
10
+ //
11
+ // Es decir: minimal por inclusión. NO necesariamente cardinality-
12
+ // minimum — eso sería el smallest MUS y es Σ₂ᵖ-hard.
13
+ //
14
+ // Usos típicos en debugging de constraints / type errors:
15
+ // - Aislar el "núcleo" del conflicto cuando un sistema reporta
16
+ // unsat sobre cientos de cláusulas.
17
+ // - Explicar a un usuario por qué su conjunto de premisas es
18
+ // contradictorio.
19
+ Object.defineProperty(exports, "__esModule", { value: true });
20
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/runtime/mus/types.ts"],"names":[],"mappings":";AAAA,+DAA+D;AAC/D,yDAAyD;AACzD,+DAA+D;AAC/D,EAAE;AACF,+DAA+D;AAC/D,iBAAiB;AACjB,oCAAoC;AACpC,gEAAgE;AAChE,EAAE;AACF,kEAAkE;AAClE,qDAAqD;AACrD,EAAE;AACF,0DAA0D;AAC1D,iEAAiE;AACjE,wCAAwC;AACxC,+DAA+D;AAC/D,sBAAsB"}
@@ -0,0 +1,3 @@
1
+ export { minifyProof, compactModusPonensChain, removeUnusedSubproofs, countNodes, depthOf, } from './minify';
2
+ export type { GenericProofNode, MinifyOptions, MinifyResult, MinifyRule } from './types';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/runtime/proof-minify/index.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,WAAW,EACX,uBAAuB,EACvB,qBAAqB,EACrB,UAAU,EACV,OAAO,GACR,MAAM,UAAU,CAAC;AAElB,YAAY,EAAE,gBAAgB,EAAE,aAAa,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC"}
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ // ============================================================
3
+ // ST Proof Minification — Barrel
4
+ // ============================================================
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.depthOf = exports.countNodes = exports.removeUnusedSubproofs = exports.compactModusPonensChain = exports.minifyProof = void 0;
7
+ var minify_1 = require("./minify");
8
+ Object.defineProperty(exports, "minifyProof", { enumerable: true, get: function () { return minify_1.minifyProof; } });
9
+ Object.defineProperty(exports, "compactModusPonensChain", { enumerable: true, get: function () { return minify_1.compactModusPonensChain; } });
10
+ Object.defineProperty(exports, "removeUnusedSubproofs", { enumerable: true, get: function () { return minify_1.removeUnusedSubproofs; } });
11
+ Object.defineProperty(exports, "countNodes", { enumerable: true, get: function () { return minify_1.countNodes; } });
12
+ Object.defineProperty(exports, "depthOf", { enumerable: true, get: function () { return minify_1.depthOf; } });
13
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/runtime/proof-minify/index.ts"],"names":[],"mappings":";AAAA,+DAA+D;AAC/D,iCAAiC;AACjC,+DAA+D;;;AAE/D,mCAMkB;AALhB,qGAAA,WAAW,OAAA;AACX,iHAAA,uBAAuB,OAAA;AACvB,+GAAA,qBAAqB,OAAA;AACrB,oGAAA,UAAU,OAAA;AACV,iGAAA,OAAO,OAAA"}
@@ -0,0 +1,13 @@
1
+ import type { GenericProofNode, MinifyOptions, MinifyResult } from './types';
2
+ /** Cuenta los nodos de un árbol (raíz incluida). */
3
+ export declare function countNodes(n: GenericProofNode): number;
4
+ /** Profundidad máxima (raíz = 0). */
5
+ export declare function depthOf(n: GenericProofNode): number;
6
+ export declare function compactModusPonensChain(proof: GenericProofNode): GenericProofNode;
7
+ export declare function removeUnusedSubproofs(proof: GenericProofNode): GenericProofNode;
8
+ /**
9
+ * Minifica un árbol de pruebas iterando las reglas hasta punto fijo
10
+ * o agotar `maxIterations`.
11
+ */
12
+ export declare function minifyProof(proof: GenericProofNode, opts?: MinifyOptions): MinifyResult;
13
+ //# sourceMappingURL=minify.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"minify.d.ts","sourceRoot":"","sources":["../../../src/runtime/proof-minify/minify.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,YAAY,EAAc,MAAM,SAAS,CAAC;AA2GzF,oDAAoD;AACpD,wBAAgB,UAAU,CAAC,CAAC,EAAE,gBAAgB,GAAG,MAAM,CAItD;AAED,qCAAqC;AACrC,wBAAgB,OAAO,CAAC,CAAC,EAAE,gBAAgB,GAAG,MAAM,CAQnD;AAqGD,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,gBAAgB,GAAG,gBAAgB,CAwBjF;AAgJD,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,gBAAgB,GAAG,gBAAgB,CAG/E;AA8GD;;;GAGG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,EAAE,IAAI,GAAE,aAAkB,GAAG,YAAY,CAuC3F"}