@stevenvo780/st-lang 4.3.0 → 4.4.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 (307) hide show
  1. package/dist/index.d.ts +4 -0
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +36 -2
  4. package/dist/index.js.map +1 -1
  5. package/dist/lambda-calc/church.d.ts.map +1 -1
  6. package/dist/lambda-calc/church.js.map +1 -1
  7. package/dist/lambda-calc/combinators.d.ts.map +1 -1
  8. package/dist/lambda-calc/combinators.js.map +1 -1
  9. package/dist/lambda-calc/index.d.ts +1 -1
  10. package/dist/lambda-calc/index.d.ts.map +1 -1
  11. package/dist/lambda-calc/index.js.map +1 -1
  12. package/dist/mltt/equality.d.ts +9 -0
  13. package/dist/mltt/equality.d.ts.map +1 -0
  14. package/dist/mltt/equality.js +79 -0
  15. package/dist/mltt/equality.js.map +1 -0
  16. package/dist/mltt/index.d.ts +8 -0
  17. package/dist/mltt/index.d.ts.map +1 -0
  18. package/dist/mltt/index.js +49 -0
  19. package/dist/mltt/index.js.map +1 -0
  20. package/dist/mltt/infer.d.ts +17 -0
  21. package/dist/mltt/infer.d.ts.map +1 -0
  22. package/dist/mltt/infer.js +269 -0
  23. package/dist/mltt/infer.js.map +1 -0
  24. package/dist/mltt/normalize.d.ts +7 -0
  25. package/dist/mltt/normalize.d.ts.map +1 -0
  26. package/dist/mltt/normalize.js +131 -0
  27. package/dist/mltt/normalize.js.map +1 -0
  28. package/dist/mltt/substitute.d.ts +4 -0
  29. package/dist/mltt/substitute.d.ts.map +1 -0
  30. package/dist/mltt/substitute.js +94 -0
  31. package/dist/mltt/substitute.js.map +1 -0
  32. package/dist/mltt/types.d.ts +72 -0
  33. package/dist/mltt/types.d.ts.map +1 -0
  34. package/dist/mltt/types.js +211 -0
  35. package/dist/mltt/types.js.map +1 -0
  36. package/dist/profiles/many-valued/index.d.ts.map +1 -1
  37. package/dist/profiles/many-valued/index.js.map +1 -1
  38. package/dist/profiles/mu-calculus/check.d.ts +15 -0
  39. package/dist/profiles/mu-calculus/check.d.ts.map +1 -0
  40. package/dist/profiles/mu-calculus/check.js +172 -0
  41. package/dist/profiles/mu-calculus/check.js.map +1 -0
  42. package/dist/profiles/mu-calculus/ctl-translate.d.ts +61 -0
  43. package/dist/profiles/mu-calculus/ctl-translate.d.ts.map +1 -0
  44. package/dist/profiles/mu-calculus/ctl-translate.js +181 -0
  45. package/dist/profiles/mu-calculus/ctl-translate.js.map +1 -0
  46. package/dist/profiles/mu-calculus/index.d.ts +7 -0
  47. package/dist/profiles/mu-calculus/index.d.ts.map +1 -0
  48. package/dist/profiles/mu-calculus/index.js +33 -0
  49. package/dist/profiles/mu-calculus/index.js.map +1 -0
  50. package/dist/profiles/mu-calculus/types.d.ts +51 -0
  51. package/dist/profiles/mu-calculus/types.d.ts.map +1 -0
  52. package/dist/profiles/mu-calculus/types.js +42 -0
  53. package/dist/profiles/mu-calculus/types.js.map +1 -0
  54. package/dist/profiles/mu-calculus/wellformed.d.ts +40 -0
  55. package/dist/profiles/mu-calculus/wellformed.d.ts.map +1 -0
  56. package/dist/profiles/mu-calculus/wellformed.js +160 -0
  57. package/dist/profiles/mu-calculus/wellformed.js.map +1 -0
  58. package/dist/profiles/sequent-lk/cut-elimination.d.ts +11 -0
  59. package/dist/profiles/sequent-lk/cut-elimination.d.ts.map +1 -0
  60. package/dist/profiles/sequent-lk/cut-elimination.js +216 -0
  61. package/dist/profiles/sequent-lk/cut-elimination.js.map +1 -0
  62. package/dist/profiles/sequent-lk/index.d.ts +5 -0
  63. package/dist/profiles/sequent-lk/index.d.ts.map +1 -0
  64. package/dist/profiles/sequent-lk/index.js +24 -0
  65. package/dist/profiles/sequent-lk/index.js.map +1 -0
  66. package/dist/profiles/sequent-lk/prover.d.ts +25 -0
  67. package/dist/profiles/sequent-lk/prover.d.ts.map +1 -0
  68. package/dist/profiles/sequent-lk/prover.js +532 -0
  69. package/dist/profiles/sequent-lk/prover.js.map +1 -0
  70. package/dist/profiles/sequent-lk/types.d.ts +55 -0
  71. package/dist/profiles/sequent-lk/types.d.ts.map +1 -0
  72. package/dist/profiles/sequent-lk/types.js +18 -0
  73. package/dist/profiles/sequent-lk/types.js.map +1 -0
  74. package/dist/profiles/sequent-lk/util.d.ts +18 -0
  75. package/dist/profiles/sequent-lk/util.d.ts.map +1 -0
  76. package/dist/profiles/sequent-lk/util.js +71 -0
  77. package/dist/profiles/sequent-lk/util.js.map +1 -0
  78. package/dist/refinement-types/checker.d.ts +19 -0
  79. package/dist/refinement-types/checker.d.ts.map +1 -0
  80. package/dist/refinement-types/checker.js +248 -0
  81. package/dist/refinement-types/checker.js.map +1 -0
  82. package/dist/refinement-types/index.d.ts +11 -0
  83. package/dist/refinement-types/index.d.ts.map +1 -0
  84. package/dist/refinement-types/index.js +51 -0
  85. package/dist/refinement-types/index.js.map +1 -0
  86. package/dist/refinement-types/predicate.d.ts +31 -0
  87. package/dist/refinement-types/predicate.d.ts.map +1 -0
  88. package/dist/refinement-types/predicate.js +369 -0
  89. package/dist/refinement-types/predicate.js.map +1 -0
  90. package/dist/refinement-types/solver.d.ts +24 -0
  91. package/dist/refinement-types/solver.d.ts.map +1 -0
  92. package/dist/refinement-types/solver.js +207 -0
  93. package/dist/refinement-types/solver.js.map +1 -0
  94. package/dist/refinement-types/subtype.d.ts +14 -0
  95. package/dist/refinement-types/subtype.d.ts.map +1 -0
  96. package/dist/refinement-types/subtype.js +39 -0
  97. package/dist/refinement-types/subtype.js.map +1 -0
  98. package/dist/refinement-types/types.d.ts +64 -0
  99. package/dist/refinement-types/types.d.ts.map +1 -0
  100. package/dist/refinement-types/types.js +130 -0
  101. package/dist/refinement-types/types.js.map +1 -0
  102. package/dist/runtime/anti-unification/anti-unify.d.ts +22 -0
  103. package/dist/runtime/anti-unification/anti-unify.d.ts.map +1 -0
  104. package/dist/runtime/anti-unification/anti-unify.js +154 -0
  105. package/dist/runtime/anti-unification/anti-unify.js.map +1 -0
  106. package/dist/runtime/anti-unification/index.d.ts +6 -0
  107. package/dist/runtime/anti-unification/index.d.ts.map +1 -0
  108. package/dist/runtime/anti-unification/index.js +23 -0
  109. package/dist/runtime/anti-unification/index.js.map +1 -0
  110. package/dist/runtime/anti-unification/many.d.ts +49 -0
  111. package/dist/runtime/anti-unification/many.d.ts.map +1 -0
  112. package/dist/runtime/anti-unification/many.js +185 -0
  113. package/dist/runtime/anti-unification/many.js.map +1 -0
  114. package/dist/runtime/anti-unification/term-utils.d.ts +40 -0
  115. package/dist/runtime/anti-unification/term-utils.d.ts.map +1 -0
  116. package/dist/runtime/anti-unification/term-utils.js +173 -0
  117. package/dist/runtime/anti-unification/term-utils.js.map +1 -0
  118. package/dist/runtime/anti-unification/types.d.ts +41 -0
  119. package/dist/runtime/anti-unification/types.d.ts.map +1 -0
  120. package/dist/runtime/anti-unification/types.js +26 -0
  121. package/dist/runtime/anti-unification/types.js.map +1 -0
  122. package/dist/runtime/csp/ac3.d.ts +20 -0
  123. package/dist/runtime/csp/ac3.d.ts.map +1 -0
  124. package/dist/runtime/csp/ac3.js +165 -0
  125. package/dist/runtime/csp/ac3.js.map +1 -0
  126. package/dist/runtime/csp/backtrack.d.ts +15 -0
  127. package/dist/runtime/csp/backtrack.d.ts.map +1 -0
  128. package/dist/runtime/csp/backtrack.js +233 -0
  129. package/dist/runtime/csp/backtrack.js.map +1 -0
  130. package/dist/runtime/csp/builtins.d.ts +27 -0
  131. package/dist/runtime/csp/builtins.d.ts.map +1 -0
  132. package/dist/runtime/csp/builtins.js +109 -0
  133. package/dist/runtime/csp/builtins.js.map +1 -0
  134. package/dist/runtime/csp/index.d.ts +5 -0
  135. package/dist/runtime/csp/index.d.ts.map +1 -0
  136. package/dist/runtime/csp/index.js +23 -0
  137. package/dist/runtime/csp/index.js.map +1 -0
  138. package/dist/runtime/csp/types.d.ts +54 -0
  139. package/dist/runtime/csp/types.d.ts.map +1 -0
  140. package/dist/runtime/csp/types.js +14 -0
  141. package/dist/runtime/csp/types.js.map +1 -0
  142. package/dist/runtime/markov-logic/grounding.d.ts +19 -0
  143. package/dist/runtime/markov-logic/grounding.d.ts.map +1 -0
  144. package/dist/runtime/markov-logic/grounding.js +252 -0
  145. package/dist/runtime/markov-logic/grounding.js.map +1 -0
  146. package/dist/runtime/markov-logic/index.d.ts +6 -0
  147. package/dist/runtime/markov-logic/index.d.ts.map +1 -0
  148. package/dist/runtime/markov-logic/index.js +47 -0
  149. package/dist/runtime/markov-logic/index.js.map +1 -0
  150. package/dist/runtime/markov-logic/inference.d.ts +77 -0
  151. package/dist/runtime/markov-logic/inference.d.ts.map +1 -0
  152. package/dist/runtime/markov-logic/inference.js +382 -0
  153. package/dist/runtime/markov-logic/inference.js.map +1 -0
  154. package/dist/runtime/markov-logic/parser.d.ts +25 -0
  155. package/dist/runtime/markov-logic/parser.d.ts.map +1 -0
  156. package/dist/runtime/markov-logic/parser.js +264 -0
  157. package/dist/runtime/markov-logic/parser.js.map +1 -0
  158. package/dist/runtime/markov-logic/types.d.ts +64 -0
  159. package/dist/runtime/markov-logic/types.d.ts.map +1 -0
  160. package/dist/runtime/markov-logic/types.js +17 -0
  161. package/dist/runtime/markov-logic/types.js.map +1 -0
  162. package/dist/runtime/pi-calculus/congruence.d.ts +15 -0
  163. package/dist/runtime/pi-calculus/congruence.d.ts.map +1 -0
  164. package/dist/runtime/pi-calculus/congruence.js +271 -0
  165. package/dist/runtime/pi-calculus/congruence.js.map +1 -0
  166. package/dist/runtime/pi-calculus/index.d.ts +6 -0
  167. package/dist/runtime/pi-calculus/index.d.ts.map +1 -0
  168. package/dist/runtime/pi-calculus/index.js +30 -0
  169. package/dist/runtime/pi-calculus/index.js.map +1 -0
  170. package/dist/runtime/pi-calculus/names.d.ts +28 -0
  171. package/dist/runtime/pi-calculus/names.d.ts.map +1 -0
  172. package/dist/runtime/pi-calculus/names.js +182 -0
  173. package/dist/runtime/pi-calculus/names.js.map +1 -0
  174. package/dist/runtime/pi-calculus/reduction.d.ts +25 -0
  175. package/dist/runtime/pi-calculus/reduction.d.ts.map +1 -0
  176. package/dist/runtime/pi-calculus/reduction.js +338 -0
  177. package/dist/runtime/pi-calculus/reduction.js.map +1 -0
  178. package/dist/runtime/pi-calculus/substitution.d.ts +11 -0
  179. package/dist/runtime/pi-calculus/substitution.d.ts.map +1 -0
  180. package/dist/runtime/pi-calculus/substitution.js +109 -0
  181. package/dist/runtime/pi-calculus/substitution.js.map +1 -0
  182. package/dist/runtime/pi-calculus/types.d.ts +38 -0
  183. package/dist/runtime/pi-calculus/types.d.ts.map +1 -0
  184. package/dist/runtime/pi-calculus/types.js +22 -0
  185. package/dist/runtime/pi-calculus/types.js.map +1 -0
  186. package/dist/runtime/planning/astar.d.ts +10 -0
  187. package/dist/runtime/planning/astar.d.ts.map +1 -0
  188. package/dist/runtime/planning/astar.js +155 -0
  189. package/dist/runtime/planning/astar.js.map +1 -0
  190. package/dist/runtime/planning/bfs.d.ts +17 -0
  191. package/dist/runtime/planning/bfs.d.ts.map +1 -0
  192. package/dist/runtime/planning/bfs.js +87 -0
  193. package/dist/runtime/planning/bfs.js.map +1 -0
  194. package/dist/runtime/planning/ground.d.ts +55 -0
  195. package/dist/runtime/planning/ground.d.ts.map +1 -0
  196. package/dist/runtime/planning/ground.js +154 -0
  197. package/dist/runtime/planning/ground.js.map +1 -0
  198. package/dist/runtime/planning/heuristic.d.ts +29 -0
  199. package/dist/runtime/planning/heuristic.d.ts.map +1 -0
  200. package/dist/runtime/planning/heuristic.js +172 -0
  201. package/dist/runtime/planning/heuristic.js.map +1 -0
  202. package/dist/runtime/planning/index.d.ts +6 -0
  203. package/dist/runtime/planning/index.d.ts.map +1 -0
  204. package/dist/runtime/planning/index.js +38 -0
  205. package/dist/runtime/planning/index.js.map +1 -0
  206. package/dist/runtime/planning/types.d.ts +100 -0
  207. package/dist/runtime/planning/types.d.ts.map +1 -0
  208. package/dist/runtime/planning/types.js +22 -0
  209. package/dist/runtime/planning/types.js.map +1 -0
  210. package/dist/runtime/symbolic-diff/differentiate.d.ts.map +1 -1
  211. package/dist/runtime/symbolic-diff/differentiate.js.map +1 -1
  212. package/dist/runtime/symbolic-diff/index.d.ts +1 -1
  213. package/dist/runtime/symbolic-diff/index.d.ts.map +1 -1
  214. package/dist/runtime/symbolic-diff/index.js.map +1 -1
  215. package/dist/runtime/symbolic-diff/parse.d.ts.map +1 -1
  216. package/dist/runtime/symbolic-diff/parse.js +7 -1
  217. package/dist/runtime/symbolic-diff/parse.js.map +1 -1
  218. package/dist/runtime/theorem-cache/cache.d.ts +100 -0
  219. package/dist/runtime/theorem-cache/cache.d.ts.map +1 -0
  220. package/dist/runtime/theorem-cache/cache.js +213 -0
  221. package/dist/runtime/theorem-cache/cache.js.map +1 -0
  222. package/dist/runtime/theorem-cache/canonical.d.ts +59 -0
  223. package/dist/runtime/theorem-cache/canonical.d.ts.map +1 -0
  224. package/dist/runtime/theorem-cache/canonical.js +105 -0
  225. package/dist/runtime/theorem-cache/canonical.js.map +1 -0
  226. package/dist/runtime/theorem-cache/index.d.ts +6 -0
  227. package/dist/runtime/theorem-cache/index.d.ts.map +1 -0
  228. package/dist/runtime/theorem-cache/index.js +16 -0
  229. package/dist/runtime/theorem-cache/index.js.map +1 -0
  230. package/dist/runtime/theorem-cache/pattern.d.ts +24 -0
  231. package/dist/runtime/theorem-cache/pattern.d.ts.map +1 -0
  232. package/dist/runtime/theorem-cache/pattern.js +80 -0
  233. package/dist/runtime/theorem-cache/pattern.js.map +1 -0
  234. package/dist/system-f/index.d.ts +7 -0
  235. package/dist/system-f/index.d.ts.map +1 -0
  236. package/dist/system-f/index.js +48 -0
  237. package/dist/system-f/index.js.map +1 -0
  238. package/dist/system-f/infer.d.ts +9 -0
  239. package/dist/system-f/infer.d.ts.map +1 -0
  240. package/dist/system-f/infer.js +94 -0
  241. package/dist/system-f/infer.js.map +1 -0
  242. package/dist/system-f/reduce.d.ts +15 -0
  243. package/dist/system-f/reduce.d.ts.map +1 -0
  244. package/dist/system-f/reduce.js +259 -0
  245. package/dist/system-f/reduce.js.map +1 -0
  246. package/dist/system-f/types.d.ts +53 -0
  247. package/dist/system-f/types.d.ts.map +1 -0
  248. package/dist/system-f/types.js +157 -0
  249. package/dist/system-f/types.js.map +1 -0
  250. package/dist/tests/anti-unification/anti-unify.test.d.ts +2 -0
  251. package/dist/tests/anti-unification/anti-unify.test.d.ts.map +1 -0
  252. package/dist/tests/anti-unification/anti-unify.test.js +219 -0
  253. package/dist/tests/anti-unification/anti-unify.test.js.map +1 -0
  254. package/dist/tests/coverage-fill-aristotelian.test.js +1 -1
  255. package/dist/tests/coverage-fill-aristotelian.test.js.map +1 -1
  256. package/dist/tests/coverage-fill-fallacies.test.js +1 -1
  257. package/dist/tests/coverage-fill-fallacies.test.js.map +1 -1
  258. package/dist/tests/coverage-fill-format.test.js +1 -1
  259. package/dist/tests/coverage-fill-format.test.js.map +1 -1
  260. package/dist/tests/coverage-fill-intuitionistic.test.js +1 -1
  261. package/dist/tests/coverage-fill-intuitionistic.test.js.map +1 -1
  262. package/dist/tests/coverage-fill-probabilistic.test.js +1 -1
  263. package/dist/tests/coverage-fill-probabilistic.test.js.map +1 -1
  264. package/dist/tests/csp/csp.test.d.ts +2 -0
  265. package/dist/tests/csp/csp.test.d.ts.map +1 -0
  266. package/dist/tests/csp/csp.test.js +292 -0
  267. package/dist/tests/csp/csp.test.js.map +1 -0
  268. package/dist/tests/lambda-calc/lambda-calc.test.js.map +1 -1
  269. package/dist/tests/many-valued/many-valued.test.js.map +1 -1
  270. package/dist/tests/markov-logic/markov-logic.test.d.ts +2 -0
  271. package/dist/tests/markov-logic/markov-logic.test.d.ts.map +1 -0
  272. package/dist/tests/markov-logic/markov-logic.test.js +349 -0
  273. package/dist/tests/markov-logic/markov-logic.test.js.map +1 -0
  274. package/dist/tests/mltt/mltt.test.d.ts +2 -0
  275. package/dist/tests/mltt/mltt.test.d.ts.map +1 -0
  276. package/dist/tests/mltt/mltt.test.js +181 -0
  277. package/dist/tests/mltt/mltt.test.js.map +1 -0
  278. package/dist/tests/mu-calculus/check.test.d.ts +2 -0
  279. package/dist/tests/mu-calculus/check.test.d.ts.map +1 -0
  280. package/dist/tests/mu-calculus/check.test.js +234 -0
  281. package/dist/tests/mu-calculus/check.test.js.map +1 -0
  282. package/dist/tests/pi-calculus/pi-calculus.test.d.ts +2 -0
  283. package/dist/tests/pi-calculus/pi-calculus.test.d.ts.map +1 -0
  284. package/dist/tests/pi-calculus/pi-calculus.test.js +273 -0
  285. package/dist/tests/pi-calculus/pi-calculus.test.js.map +1 -0
  286. package/dist/tests/planning/planning.test.d.ts +2 -0
  287. package/dist/tests/planning/planning.test.d.ts.map +1 -0
  288. package/dist/tests/planning/planning.test.js +397 -0
  289. package/dist/tests/planning/planning.test.js.map +1 -0
  290. package/dist/tests/refinement-types/refinement-types.test.d.ts +2 -0
  291. package/dist/tests/refinement-types/refinement-types.test.d.ts.map +1 -0
  292. package/dist/tests/refinement-types/refinement-types.test.js +174 -0
  293. package/dist/tests/refinement-types/refinement-types.test.js.map +1 -0
  294. package/dist/tests/sequent-lk/prover.test.d.ts +2 -0
  295. package/dist/tests/sequent-lk/prover.test.d.ts.map +1 -0
  296. package/dist/tests/sequent-lk/prover.test.js +317 -0
  297. package/dist/tests/sequent-lk/prover.test.js.map +1 -0
  298. package/dist/tests/symbolic-diff/symbolic-diff.test.js.map +1 -1
  299. package/dist/tests/system-f/system-f.test.d.ts +2 -0
  300. package/dist/tests/system-f/system-f.test.d.ts.map +1 -0
  301. package/dist/tests/system-f/system-f.test.js +217 -0
  302. package/dist/tests/system-f/system-f.test.js.map +1 -0
  303. package/dist/tests/theorem-cache/cache.test.d.ts +2 -0
  304. package/dist/tests/theorem-cache/cache.test.d.ts.map +1 -0
  305. package/dist/tests/theorem-cache/cache.test.js +510 -0
  306. package/dist/tests/theorem-cache/cache.test.js.map +1 -0
  307. package/package.json +1 -1
@@ -0,0 +1,216 @@
1
+ "use strict";
2
+ // ============================================================
3
+ // LK — Eliminacion de cortes (Hauptsatz de Gentzen, 1934)
4
+ // ============================================================
5
+ //
6
+ // El teorema fundamental dice que toda derivacion LK puede
7
+ // transformarse en una sin cortes. La prueba procede por
8
+ // induccion lexicografica sobre (rango, grado) del cut superior:
9
+ //
10
+ // * rango = altura del cut en el arbol
11
+ // * grado = profundidad de la formula cortada
12
+ //
13
+ // La implementacion aqui combina dos estrategias:
14
+ //
15
+ // 1. Reducciones "principales": cuando la formula cortada es
16
+ // principal en ambas premisas, se aplica la regla de
17
+ // reduccion correspondiente al conectivo (notable: ∧/∨/→/¬).
18
+ // 2. Reduccion estructural: para casos en que la reescritura
19
+ // directa no aplica (ej. cuts internos en sub-derivaciones
20
+ // con weakenings/contractions implicitas), reusamos el
21
+ // prover cut-free `proveLK` como oraculo: por el Hauptsatz,
22
+ // si el secuente es derivable con cortes, lo es sin ellos,
23
+ // y `proveLK` es completo para LK clasico cut-free.
24
+ //
25
+ // El resultado garantiza `hasCut(out) === false` cuando la entrada
26
+ // es valida y derivable.
27
+ Object.defineProperty(exports, "__esModule", { value: true });
28
+ exports.eliminateCut = eliminateCut;
29
+ const util_1 = require("./util");
30
+ const prover_1 = require("./prover");
31
+ function eliminateCutAtRoot(proof) {
32
+ if (proof.rule !== 'cut')
33
+ return proof;
34
+ const [p1, p2] = proof.premises;
35
+ if (!p1 || !p2 || !proof.cutFormula)
36
+ return proof;
37
+ const A = proof.cutFormula;
38
+ const ak = (0, util_1.lkKey)(A);
39
+ // Caso axioma: A ⊢ A cut A, Σ ⊢ Π ⟹ A, Σ ⊢ Π (= p2)
40
+ if (p1.rule === 'axiom' && p1.principalFormula && (0, util_1.lkKey)(p1.principalFormula) === ak) {
41
+ return p2;
42
+ }
43
+ if (p2.rule === 'axiom' && p2.principalFormula && (0, util_1.lkKey)(p2.principalFormula) === ak) {
44
+ return p1;
45
+ }
46
+ // Reduccion principal por conectivo del cut formula.
47
+ // Solo aplicable cuando A es principal en ambas premisas.
48
+ const principalOnLeft = p1.principalFormula && (0, util_1.lkKey)(p1.principalFormula) === ak;
49
+ const principalOnRight = p2.principalFormula && (0, util_1.lkKey)(p2.principalFormula) === ak;
50
+ if (principalOnLeft && principalOnRight) {
51
+ switch (A.kind) {
52
+ case 'not': {
53
+ // p1 termina en notR: Γ ⊢ ¬B, Δ por premisa B, Γ ⊢ Δ
54
+ // p2 termina en notL: ¬B, Σ ⊢ Π por premisa Σ ⊢ B, Π
55
+ // Reescribimos como cut sobre B:
56
+ // Σ ⊢ B, Π cut B, Γ ⊢ Δ ⟹ Σ, Γ ⊢ Π, Δ
57
+ const sub1 = p2.premises[0];
58
+ const sub2 = p1.premises[0];
59
+ if (!sub1 || !sub2)
60
+ break;
61
+ const newCut = {
62
+ goal: proof.goal,
63
+ rule: 'cut',
64
+ cutFormula: A.arg,
65
+ premises: [sub1, sub2],
66
+ };
67
+ return eliminateCut(newCut);
68
+ }
69
+ case 'and': {
70
+ // p1 termina en andR con A = B∧C, premisas: Γ ⊢ B, Δ y Γ ⊢ C, Δ
71
+ // p2 termina en andL con premisa B, C, Σ ⊢ Π
72
+ // Cut sobre B y C:
73
+ // Γ ⊢ B, Δ cut_B ( Γ ⊢ C, Δ cut_C B, C, Σ ⊢ Π )
74
+ const subB = p1.premises[0];
75
+ const subC = p1.premises[1];
76
+ const subBC = p2.premises[0];
77
+ if (!subB || !subC || !subBC)
78
+ break;
79
+ const innerCut = {
80
+ goal: {
81
+ left: [
82
+ ...subC.goal.left,
83
+ ...subBC.goal.left.filter((f) => (0, util_1.lkKey)(f) !== (0, util_1.lkKey)(A.right)),
84
+ ],
85
+ right: [
86
+ ...subC.goal.right.filter((f) => (0, util_1.lkKey)(f) !== (0, util_1.lkKey)(A.right)),
87
+ ...subBC.goal.right,
88
+ ],
89
+ },
90
+ rule: 'cut',
91
+ cutFormula: A.right,
92
+ premises: [subC, subBC],
93
+ };
94
+ const outerCut = {
95
+ goal: proof.goal,
96
+ rule: 'cut',
97
+ cutFormula: A.left,
98
+ premises: [subB, innerCut],
99
+ };
100
+ return eliminateCut(outerCut);
101
+ }
102
+ case 'or': {
103
+ // p1 termina en orR con A = B∨C, premisa: Γ ⊢ B, C, Δ
104
+ // p2 termina en orL: premisas B, Σ ⊢ Π y C, Σ ⊢ Π
105
+ const subBC = p1.premises[0];
106
+ const subB = p2.premises[0];
107
+ const subC = p2.premises[1];
108
+ if (!subBC || !subB || !subC)
109
+ break;
110
+ // Cut sobre B y luego C:
111
+ const innerCut = {
112
+ goal: {
113
+ left: [
114
+ ...subBC.goal.left,
115
+ ...subC.goal.left.filter((f) => (0, util_1.lkKey)(f) !== (0, util_1.lkKey)(A.right)),
116
+ ],
117
+ right: [
118
+ ...subBC.goal.right.filter((f) => (0, util_1.lkKey)(f) !== (0, util_1.lkKey)(A.right) && (0, util_1.lkKey)(f) !== (0, util_1.lkKey)(A.left)),
119
+ ...subC.goal.right,
120
+ ],
121
+ },
122
+ rule: 'cut',
123
+ cutFormula: A.right,
124
+ premises: [subBC, subC],
125
+ };
126
+ const outerCut = {
127
+ goal: proof.goal,
128
+ rule: 'cut',
129
+ cutFormula: A.left,
130
+ premises: [innerCut, subB],
131
+ };
132
+ return eliminateCut(outerCut);
133
+ }
134
+ case 'implies': {
135
+ // p1 termina en impR con A = B→C, premisa: B, Γ ⊢ C, Δ
136
+ // p2 termina en impL: premisas Σ ⊢ B, Π y C, Σ ⊢ Π
137
+ const subBC = p1.premises[0];
138
+ const subB = p2.premises[0];
139
+ const subC = p2.premises[1];
140
+ if (!subBC || !subB || !subC)
141
+ break;
142
+ // Cut sobre B: Σ ⊢ B, Π y B, Γ ⊢ C, Δ → Σ, Γ ⊢ C, Π, Δ
143
+ // Cut sobre C: ↑resultado y C, Σ ⊢ Π → Σ, Γ, Σ ⊢ Π, Δ
144
+ const innerCut = {
145
+ goal: {
146
+ left: [...subB.goal.left, ...subBC.goal.left.filter((f) => (0, util_1.lkKey)(f) !== (0, util_1.lkKey)(A.left))],
147
+ right: [
148
+ ...subB.goal.right.filter((f) => (0, util_1.lkKey)(f) !== (0, util_1.lkKey)(A.left)),
149
+ ...subBC.goal.right,
150
+ ],
151
+ },
152
+ rule: 'cut',
153
+ cutFormula: A.left,
154
+ premises: [subB, subBC],
155
+ };
156
+ const outerCut = {
157
+ goal: proof.goal,
158
+ rule: 'cut',
159
+ cutFormula: A.right,
160
+ premises: [innerCut, subC],
161
+ };
162
+ return eliminateCut(outerCut);
163
+ }
164
+ case 'atom':
165
+ // Si A es atomico y aparece como principal en ambas premisas,
166
+ // el cut puede ser eliminado por reduccion estructural: una de
167
+ // las premisas debe ser un axioma A ⊢ A. Si llegamos aqui sin
168
+ // resolverlo arriba, dejamos que el oraculo cut-free lo cubra.
169
+ break;
170
+ }
171
+ }
172
+ // Caso difícil: el cut no es principal en ambas premisas. En lugar
173
+ // de implementar las ~20 reducciones permutativas de Gentzen
174
+ // (commutative cuts), usamos el oraculo cut-free `proveLK`. Esto
175
+ // es sano porque LK admite eliminacion de cortes (Hauptsatz): si la
176
+ // derivacion original es valida, el secuente es derivable, luego
177
+ // tambien lo es sin cortes.
178
+ const cutFree = (0, prover_1.proveLK)(proof.goal);
179
+ if (cutFree)
180
+ return cutFree;
181
+ // Si el oraculo falla (no deberia para una derivacion valida),
182
+ // devolvemos lo que tengamos como mejor esfuerzo.
183
+ return proof;
184
+ }
185
+ /**
186
+ * Elimina todos los cortes de la derivacion. Devuelve una derivacion
187
+ * estructuralmente equivalente al mismo secuente sin nodos `cut`.
188
+ *
189
+ * Implementacion: eliminamos primero los cortes interiores (de las
190
+ * hojas hacia la raiz) y luego reducimos el cut de la raiz aplicando
191
+ * la regla principal correspondiente.
192
+ */
193
+ function eliminateCut(proof) {
194
+ // Recursion en premisas primero
195
+ const premises = proof.premises.map(eliminateCut);
196
+ const updated = { ...proof, premises };
197
+ if (updated.rule !== 'cut')
198
+ return updated;
199
+ const reduced = eliminateCutAtRoot(updated);
200
+ // Si tras una pasada todavia hay cortes, iteramos (con limite anti-loop).
201
+ let cur = reduced;
202
+ for (let i = 0; i < 32 && (0, prover_1.hasCut)(cur); i++) {
203
+ cur = { ...cur, premises: cur.premises.map(eliminateCut) };
204
+ if (cur.rule === 'cut')
205
+ cur = eliminateCutAtRoot(cur);
206
+ }
207
+ // Garantia final: si quedaron cortes, intentamos reprovar desde el
208
+ // mismo objetivo con el prover cut-free.
209
+ if ((0, prover_1.hasCut)(cur)) {
210
+ const cutFree = (0, prover_1.proveLK)(cur.goal);
211
+ if (cutFree && (0, prover_1.isValid)(cutFree))
212
+ return cutFree;
213
+ }
214
+ return cur;
215
+ }
216
+ //# sourceMappingURL=cut-elimination.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cut-elimination.js","sourceRoot":"","sources":["../../../src/profiles/sequent-lk/cut-elimination.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export type { LKFormula, LKRule, LKSequent, LKProof } from './types';
2
+ export { proveLK, proveLKFormula, hasCut, isValid } from './prover';
3
+ export { eliminateCut } from './cut-elimination';
4
+ export { lkKey, eq, depth } from './util';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/profiles/sequent-lk/index.ts"],"names":[],"mappings":"AAUA,YAAY,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AACrE,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACpE,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC"}
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ // ============================================================
3
+ // LK Sequent Calculus — Entrada publica del perfil
4
+ // ============================================================
5
+ //
6
+ // Calculo de secuentes LK de Gentzen (1934) para logica
7
+ // proposicional clasica con cut-elimination (Hauptsatz).
8
+ //
9
+ // import { proveLK, hasCut, eliminateCut, isValid }
10
+ // from 'src/profiles/sequent-lk';
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.depth = exports.eq = exports.lkKey = exports.eliminateCut = exports.isValid = exports.hasCut = exports.proveLKFormula = exports.proveLK = void 0;
13
+ var prover_1 = require("./prover");
14
+ Object.defineProperty(exports, "proveLK", { enumerable: true, get: function () { return prover_1.proveLK; } });
15
+ Object.defineProperty(exports, "proveLKFormula", { enumerable: true, get: function () { return prover_1.proveLKFormula; } });
16
+ Object.defineProperty(exports, "hasCut", { enumerable: true, get: function () { return prover_1.hasCut; } });
17
+ Object.defineProperty(exports, "isValid", { enumerable: true, get: function () { return prover_1.isValid; } });
18
+ var cut_elimination_1 = require("./cut-elimination");
19
+ Object.defineProperty(exports, "eliminateCut", { enumerable: true, get: function () { return cut_elimination_1.eliminateCut; } });
20
+ var util_1 = require("./util");
21
+ Object.defineProperty(exports, "lkKey", { enumerable: true, get: function () { return util_1.lkKey; } });
22
+ Object.defineProperty(exports, "eq", { enumerable: true, get: function () { return util_1.eq; } });
23
+ Object.defineProperty(exports, "depth", { enumerable: true, get: function () { return util_1.depth; } });
24
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/profiles/sequent-lk/index.ts"],"names":[],"mappings":";AAAA,+DAA+D;AAC/D,mDAAmD;AACnD,+DAA+D;AAC/D,EAAE;AACF,wDAAwD;AACxD,yDAAyD;AACzD,EAAE;AACF,sDAAsD;AACtD,sCAAsC;;;AAGtC,mCAAoE;AAA3D,iGAAA,OAAO,OAAA;AAAE,wGAAA,cAAc,OAAA;AAAE,gGAAA,MAAM,OAAA;AAAE,iGAAA,OAAO,OAAA;AACjD,qDAAiD;AAAxC,+GAAA,YAAY,OAAA;AACrB,+BAA0C;AAAjC,6FAAA,KAAK,OAAA;AAAE,0FAAA,EAAE,OAAA;AAAE,6FAAA,KAAK,OAAA"}
@@ -0,0 +1,25 @@
1
+ import { LKFormula, LKProof, LKSequent } from './types';
2
+ /**
3
+ * Demuestra el secuente `seq` en LK clasico (sin cortes).
4
+ * Devuelve `null` si no encuentra derivacion dentro del budget.
5
+ */
6
+ export declare function proveLK(seq: LKSequent, options?: {
7
+ budget?: number;
8
+ }): LKProof | null;
9
+ /** Atajo: ⊢ φ. */
10
+ export declare function proveLKFormula(formula: LKFormula, options?: {
11
+ budget?: number;
12
+ }): LKProof | null;
13
+ /**
14
+ * Verifica que `proof` sea una derivacion LK valida segun la regla
15
+ * declarada en cada nodo. La validacion es estructural — comprueba
16
+ * que las premisas y la conclusion encajen con el patron de la regla.
17
+ *
18
+ * Es deliberadamente flexible respecto al orden (multisets) y permite
19
+ * contraccion implicita en las reglas logicas (la formula principal
20
+ * puede aparecer en las premisas, como en presentaciones modernas).
21
+ */
22
+ export declare function isValid(proof: LKProof): boolean;
23
+ /** Cuenta si existe al menos un nodo `cut` en la derivacion. */
24
+ export declare function hasCut(proof: LKProof): boolean;
25
+ //# sourceMappingURL=prover.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prover.d.ts","sourceRoot":"","sources":["../../../src/profiles/sequent-lk/prover.ts"],"names":[],"mappings":"AAsBA,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAsLxD;;;GAGG;AACH,wBAAgB,OAAO,CAAC,GAAG,EAAE,SAAS,EAAE,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,OAAO,GAAG,IAAI,CAIzF;AAED,kBAAkB;AAClB,wBAAgB,cAAc,CAC5B,OAAO,EAAE,SAAS,EAClB,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAO,GAChC,OAAO,GAAG,IAAI,CAEhB;AAuBD;;;;;;;;GAQG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CA2N/C;AAED,gEAAgE;AAChE,wBAAgB,MAAM,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAG9C"}