@stevenvo780/st-lang 4.3.0 → 4.5.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 (459) hide show
  1. package/dist/coinduction/index.d.ts +136 -0
  2. package/dist/coinduction/index.d.ts.map +1 -0
  3. package/dist/coinduction/index.js +318 -0
  4. package/dist/coinduction/index.js.map +1 -0
  5. package/dist/combinators-ski/abstract.d.ts +5 -0
  6. package/dist/combinators-ski/abstract.d.ts.map +1 -0
  7. package/dist/combinators-ski/abstract.js +88 -0
  8. package/dist/combinators-ski/abstract.js.map +1 -0
  9. package/dist/combinators-ski/index.d.ts +6 -0
  10. package/dist/combinators-ski/index.d.ts.map +1 -0
  11. package/dist/combinators-ski/index.js +30 -0
  12. package/dist/combinators-ski/index.js.map +1 -0
  13. package/dist/combinators-ski/reduce.d.ts +10 -0
  14. package/dist/combinators-ski/reduce.d.ts.map +1 -0
  15. package/dist/combinators-ski/reduce.js +118 -0
  16. package/dist/combinators-ski/reduce.js.map +1 -0
  17. package/dist/combinators-ski/types.d.ts +23 -0
  18. package/dist/combinators-ski/types.d.ts.map +1 -0
  19. package/dist/combinators-ski/types.js +102 -0
  20. package/dist/combinators-ski/types.js.map +1 -0
  21. package/dist/constructive-reals/index.d.ts +132 -0
  22. package/dist/constructive-reals/index.d.ts.map +1 -0
  23. package/dist/constructive-reals/index.js +723 -0
  24. package/dist/constructive-reals/index.js.map +1 -0
  25. package/dist/game-semantics/convert.d.ts +4 -0
  26. package/dist/game-semantics/convert.d.ts.map +1 -0
  27. package/dist/game-semantics/convert.js +28 -0
  28. package/dist/game-semantics/convert.js.map +1 -0
  29. package/dist/game-semantics/index.d.ts +6 -0
  30. package/dist/game-semantics/index.d.ts.map +1 -0
  31. package/dist/game-semantics/index.js +28 -0
  32. package/dist/game-semantics/index.js.map +1 -0
  33. package/dist/game-semantics/strategy.d.ts +34 -0
  34. package/dist/game-semantics/strategy.d.ts.map +1 -0
  35. package/dist/game-semantics/strategy.js +336 -0
  36. package/dist/game-semantics/strategy.js.map +1 -0
  37. package/dist/game-semantics/types.d.ts +64 -0
  38. package/dist/game-semantics/types.d.ts.map +1 -0
  39. package/dist/game-semantics/types.js +78 -0
  40. package/dist/game-semantics/types.js.map +1 -0
  41. package/dist/higher-order-unify/index.d.ts +5 -0
  42. package/dist/higher-order-unify/index.d.ts.map +1 -0
  43. package/dist/higher-order-unify/index.js +27 -0
  44. package/dist/higher-order-unify/index.js.map +1 -0
  45. package/dist/higher-order-unify/normalize.d.ts +14 -0
  46. package/dist/higher-order-unify/normalize.d.ts.map +1 -0
  47. package/dist/higher-order-unify/normalize.js +191 -0
  48. package/dist/higher-order-unify/normalize.js.map +1 -0
  49. package/dist/higher-order-unify/pattern.d.ts +4 -0
  50. package/dist/higher-order-unify/pattern.d.ts.map +1 -0
  51. package/dist/higher-order-unify/pattern.js +70 -0
  52. package/dist/higher-order-unify/pattern.js.map +1 -0
  53. package/dist/higher-order-unify/types.d.ts +19 -0
  54. package/dist/higher-order-unify/types.d.ts.map +1 -0
  55. package/dist/higher-order-unify/types.js +14 -0
  56. package/dist/higher-order-unify/types.js.map +1 -0
  57. package/dist/higher-order-unify/unify.d.ts +5 -0
  58. package/dist/higher-order-unify/unify.d.ts.map +1 -0
  59. package/dist/higher-order-unify/unify.js +306 -0
  60. package/dist/higher-order-unify/unify.js.map +1 -0
  61. package/dist/index.d.ts +4 -0
  62. package/dist/index.d.ts.map +1 -1
  63. package/dist/index.js +36 -2
  64. package/dist/index.js.map +1 -1
  65. package/dist/lambda-calc/church.d.ts.map +1 -1
  66. package/dist/lambda-calc/church.js.map +1 -1
  67. package/dist/lambda-calc/combinators.d.ts.map +1 -1
  68. package/dist/lambda-calc/combinators.js.map +1 -1
  69. package/dist/lambda-calc/index.d.ts +1 -1
  70. package/dist/lambda-calc/index.d.ts.map +1 -1
  71. package/dist/lambda-calc/index.js.map +1 -1
  72. package/dist/mltt/equality.d.ts +9 -0
  73. package/dist/mltt/equality.d.ts.map +1 -0
  74. package/dist/mltt/equality.js +79 -0
  75. package/dist/mltt/equality.js.map +1 -0
  76. package/dist/mltt/index.d.ts +8 -0
  77. package/dist/mltt/index.d.ts.map +1 -0
  78. package/dist/mltt/index.js +49 -0
  79. package/dist/mltt/index.js.map +1 -0
  80. package/dist/mltt/infer.d.ts +17 -0
  81. package/dist/mltt/infer.d.ts.map +1 -0
  82. package/dist/mltt/infer.js +269 -0
  83. package/dist/mltt/infer.js.map +1 -0
  84. package/dist/mltt/normalize.d.ts +7 -0
  85. package/dist/mltt/normalize.d.ts.map +1 -0
  86. package/dist/mltt/normalize.js +131 -0
  87. package/dist/mltt/normalize.js.map +1 -0
  88. package/dist/mltt/substitute.d.ts +4 -0
  89. package/dist/mltt/substitute.d.ts.map +1 -0
  90. package/dist/mltt/substitute.js +94 -0
  91. package/dist/mltt/substitute.js.map +1 -0
  92. package/dist/mltt/types.d.ts +72 -0
  93. package/dist/mltt/types.d.ts.map +1 -0
  94. package/dist/mltt/types.js +211 -0
  95. package/dist/mltt/types.js.map +1 -0
  96. package/dist/nbe/index.d.ts +3 -0
  97. package/dist/nbe/index.d.ts.map +1 -0
  98. package/dist/nbe/index.js +25 -0
  99. package/dist/nbe/index.js.map +1 -0
  100. package/dist/nbe/nbe.d.ts +7 -0
  101. package/dist/nbe/nbe.d.ts.map +1 -0
  102. package/dist/nbe/nbe.js +118 -0
  103. package/dist/nbe/nbe.js.map +1 -0
  104. package/dist/nbe/types.d.ts +54 -0
  105. package/dist/nbe/types.d.ts.map +1 -0
  106. package/dist/nbe/types.js +117 -0
  107. package/dist/nbe/types.js.map +1 -0
  108. package/dist/profile-bridge/index.d.ts +64 -0
  109. package/dist/profile-bridge/index.d.ts.map +1 -0
  110. package/dist/profile-bridge/index.js +328 -0
  111. package/dist/profile-bridge/index.js.map +1 -0
  112. package/dist/profiles/many-valued/index.d.ts.map +1 -1
  113. package/dist/profiles/many-valued/index.js.map +1 -1
  114. package/dist/profiles/mu-calculus/check.d.ts +15 -0
  115. package/dist/profiles/mu-calculus/check.d.ts.map +1 -0
  116. package/dist/profiles/mu-calculus/check.js +172 -0
  117. package/dist/profiles/mu-calculus/check.js.map +1 -0
  118. package/dist/profiles/mu-calculus/ctl-translate.d.ts +61 -0
  119. package/dist/profiles/mu-calculus/ctl-translate.d.ts.map +1 -0
  120. package/dist/profiles/mu-calculus/ctl-translate.js +181 -0
  121. package/dist/profiles/mu-calculus/ctl-translate.js.map +1 -0
  122. package/dist/profiles/mu-calculus/index.d.ts +7 -0
  123. package/dist/profiles/mu-calculus/index.d.ts.map +1 -0
  124. package/dist/profiles/mu-calculus/index.js +33 -0
  125. package/dist/profiles/mu-calculus/index.js.map +1 -0
  126. package/dist/profiles/mu-calculus/types.d.ts +51 -0
  127. package/dist/profiles/mu-calculus/types.d.ts.map +1 -0
  128. package/dist/profiles/mu-calculus/types.js +42 -0
  129. package/dist/profiles/mu-calculus/types.js.map +1 -0
  130. package/dist/profiles/mu-calculus/wellformed.d.ts +40 -0
  131. package/dist/profiles/mu-calculus/wellformed.d.ts.map +1 -0
  132. package/dist/profiles/mu-calculus/wellformed.js +160 -0
  133. package/dist/profiles/mu-calculus/wellformed.js.map +1 -0
  134. package/dist/profiles/sequent-lk/cut-elimination.d.ts +11 -0
  135. package/dist/profiles/sequent-lk/cut-elimination.d.ts.map +1 -0
  136. package/dist/profiles/sequent-lk/cut-elimination.js +216 -0
  137. package/dist/profiles/sequent-lk/cut-elimination.js.map +1 -0
  138. package/dist/profiles/sequent-lk/index.d.ts +5 -0
  139. package/dist/profiles/sequent-lk/index.d.ts.map +1 -0
  140. package/dist/profiles/sequent-lk/index.js +24 -0
  141. package/dist/profiles/sequent-lk/index.js.map +1 -0
  142. package/dist/profiles/sequent-lk/prover.d.ts +25 -0
  143. package/dist/profiles/sequent-lk/prover.d.ts.map +1 -0
  144. package/dist/profiles/sequent-lk/prover.js +532 -0
  145. package/dist/profiles/sequent-lk/prover.js.map +1 -0
  146. package/dist/profiles/sequent-lk/types.d.ts +55 -0
  147. package/dist/profiles/sequent-lk/types.d.ts.map +1 -0
  148. package/dist/profiles/sequent-lk/types.js +18 -0
  149. package/dist/profiles/sequent-lk/types.js.map +1 -0
  150. package/dist/profiles/sequent-lk/util.d.ts +18 -0
  151. package/dist/profiles/sequent-lk/util.d.ts.map +1 -0
  152. package/dist/profiles/sequent-lk/util.js +71 -0
  153. package/dist/profiles/sequent-lk/util.js.map +1 -0
  154. package/dist/proof-nets/construct.d.ts +3 -0
  155. package/dist/proof-nets/construct.d.ts.map +1 -0
  156. package/dist/proof-nets/construct.js +85 -0
  157. package/dist/proof-nets/construct.js.map +1 -0
  158. package/dist/proof-nets/correctness.d.ts +3 -0
  159. package/dist/proof-nets/correctness.d.ts.map +1 -0
  160. package/dist/proof-nets/correctness.js +213 -0
  161. package/dist/proof-nets/correctness.js.map +1 -0
  162. package/dist/proof-nets/cut-elim.d.ts +9 -0
  163. package/dist/proof-nets/cut-elim.d.ts.map +1 -0
  164. package/dist/proof-nets/cut-elim.js +149 -0
  165. package/dist/proof-nets/cut-elim.js.map +1 -0
  166. package/dist/proof-nets/index.d.ts +6 -0
  167. package/dist/proof-nets/index.d.ts.map +1 -0
  168. package/dist/proof-nets/index.js +33 -0
  169. package/dist/proof-nets/index.js.map +1 -0
  170. package/dist/proof-nets/types.d.ts +36 -0
  171. package/dist/proof-nets/types.d.ts.map +1 -0
  172. package/dist/proof-nets/types.js +89 -0
  173. package/dist/proof-nets/types.js.map +1 -0
  174. package/dist/refinement-types/checker.d.ts +19 -0
  175. package/dist/refinement-types/checker.d.ts.map +1 -0
  176. package/dist/refinement-types/checker.js +248 -0
  177. package/dist/refinement-types/checker.js.map +1 -0
  178. package/dist/refinement-types/index.d.ts +11 -0
  179. package/dist/refinement-types/index.d.ts.map +1 -0
  180. package/dist/refinement-types/index.js +51 -0
  181. package/dist/refinement-types/index.js.map +1 -0
  182. package/dist/refinement-types/predicate.d.ts +31 -0
  183. package/dist/refinement-types/predicate.d.ts.map +1 -0
  184. package/dist/refinement-types/predicate.js +369 -0
  185. package/dist/refinement-types/predicate.js.map +1 -0
  186. package/dist/refinement-types/solver.d.ts +24 -0
  187. package/dist/refinement-types/solver.d.ts.map +1 -0
  188. package/dist/refinement-types/solver.js +207 -0
  189. package/dist/refinement-types/solver.js.map +1 -0
  190. package/dist/refinement-types/subtype.d.ts +14 -0
  191. package/dist/refinement-types/subtype.d.ts.map +1 -0
  192. package/dist/refinement-types/subtype.js +39 -0
  193. package/dist/refinement-types/subtype.js.map +1 -0
  194. package/dist/refinement-types/types.d.ts +64 -0
  195. package/dist/refinement-types/types.d.ts.map +1 -0
  196. package/dist/refinement-types/types.js +130 -0
  197. package/dist/refinement-types/types.js.map +1 -0
  198. package/dist/runtime/anti-unification/anti-unify.d.ts +22 -0
  199. package/dist/runtime/anti-unification/anti-unify.d.ts.map +1 -0
  200. package/dist/runtime/anti-unification/anti-unify.js +154 -0
  201. package/dist/runtime/anti-unification/anti-unify.js.map +1 -0
  202. package/dist/runtime/anti-unification/index.d.ts +6 -0
  203. package/dist/runtime/anti-unification/index.d.ts.map +1 -0
  204. package/dist/runtime/anti-unification/index.js +23 -0
  205. package/dist/runtime/anti-unification/index.js.map +1 -0
  206. package/dist/runtime/anti-unification/many.d.ts +49 -0
  207. package/dist/runtime/anti-unification/many.d.ts.map +1 -0
  208. package/dist/runtime/anti-unification/many.js +185 -0
  209. package/dist/runtime/anti-unification/many.js.map +1 -0
  210. package/dist/runtime/anti-unification/term-utils.d.ts +40 -0
  211. package/dist/runtime/anti-unification/term-utils.d.ts.map +1 -0
  212. package/dist/runtime/anti-unification/term-utils.js +173 -0
  213. package/dist/runtime/anti-unification/term-utils.js.map +1 -0
  214. package/dist/runtime/anti-unification/types.d.ts +41 -0
  215. package/dist/runtime/anti-unification/types.d.ts.map +1 -0
  216. package/dist/runtime/anti-unification/types.js +26 -0
  217. package/dist/runtime/anti-unification/types.js.map +1 -0
  218. package/dist/runtime/csp/ac3.d.ts +20 -0
  219. package/dist/runtime/csp/ac3.d.ts.map +1 -0
  220. package/dist/runtime/csp/ac3.js +165 -0
  221. package/dist/runtime/csp/ac3.js.map +1 -0
  222. package/dist/runtime/csp/backtrack.d.ts +15 -0
  223. package/dist/runtime/csp/backtrack.d.ts.map +1 -0
  224. package/dist/runtime/csp/backtrack.js +233 -0
  225. package/dist/runtime/csp/backtrack.js.map +1 -0
  226. package/dist/runtime/csp/builtins.d.ts +27 -0
  227. package/dist/runtime/csp/builtins.d.ts.map +1 -0
  228. package/dist/runtime/csp/builtins.js +109 -0
  229. package/dist/runtime/csp/builtins.js.map +1 -0
  230. package/dist/runtime/csp/index.d.ts +5 -0
  231. package/dist/runtime/csp/index.d.ts.map +1 -0
  232. package/dist/runtime/csp/index.js +23 -0
  233. package/dist/runtime/csp/index.js.map +1 -0
  234. package/dist/runtime/csp/types.d.ts +54 -0
  235. package/dist/runtime/csp/types.d.ts.map +1 -0
  236. package/dist/runtime/csp/types.js +14 -0
  237. package/dist/runtime/csp/types.js.map +1 -0
  238. package/dist/runtime/markov-logic/grounding.d.ts +19 -0
  239. package/dist/runtime/markov-logic/grounding.d.ts.map +1 -0
  240. package/dist/runtime/markov-logic/grounding.js +252 -0
  241. package/dist/runtime/markov-logic/grounding.js.map +1 -0
  242. package/dist/runtime/markov-logic/index.d.ts +6 -0
  243. package/dist/runtime/markov-logic/index.d.ts.map +1 -0
  244. package/dist/runtime/markov-logic/index.js +47 -0
  245. package/dist/runtime/markov-logic/index.js.map +1 -0
  246. package/dist/runtime/markov-logic/inference.d.ts +77 -0
  247. package/dist/runtime/markov-logic/inference.d.ts.map +1 -0
  248. package/dist/runtime/markov-logic/inference.js +382 -0
  249. package/dist/runtime/markov-logic/inference.js.map +1 -0
  250. package/dist/runtime/markov-logic/parser.d.ts +25 -0
  251. package/dist/runtime/markov-logic/parser.d.ts.map +1 -0
  252. package/dist/runtime/markov-logic/parser.js +264 -0
  253. package/dist/runtime/markov-logic/parser.js.map +1 -0
  254. package/dist/runtime/markov-logic/types.d.ts +64 -0
  255. package/dist/runtime/markov-logic/types.d.ts.map +1 -0
  256. package/dist/runtime/markov-logic/types.js +17 -0
  257. package/dist/runtime/markov-logic/types.js.map +1 -0
  258. package/dist/runtime/pi-calculus/congruence.d.ts +15 -0
  259. package/dist/runtime/pi-calculus/congruence.d.ts.map +1 -0
  260. package/dist/runtime/pi-calculus/congruence.js +271 -0
  261. package/dist/runtime/pi-calculus/congruence.js.map +1 -0
  262. package/dist/runtime/pi-calculus/index.d.ts +6 -0
  263. package/dist/runtime/pi-calculus/index.d.ts.map +1 -0
  264. package/dist/runtime/pi-calculus/index.js +30 -0
  265. package/dist/runtime/pi-calculus/index.js.map +1 -0
  266. package/dist/runtime/pi-calculus/names.d.ts +28 -0
  267. package/dist/runtime/pi-calculus/names.d.ts.map +1 -0
  268. package/dist/runtime/pi-calculus/names.js +182 -0
  269. package/dist/runtime/pi-calculus/names.js.map +1 -0
  270. package/dist/runtime/pi-calculus/reduction.d.ts +25 -0
  271. package/dist/runtime/pi-calculus/reduction.d.ts.map +1 -0
  272. package/dist/runtime/pi-calculus/reduction.js +338 -0
  273. package/dist/runtime/pi-calculus/reduction.js.map +1 -0
  274. package/dist/runtime/pi-calculus/substitution.d.ts +11 -0
  275. package/dist/runtime/pi-calculus/substitution.d.ts.map +1 -0
  276. package/dist/runtime/pi-calculus/substitution.js +109 -0
  277. package/dist/runtime/pi-calculus/substitution.js.map +1 -0
  278. package/dist/runtime/pi-calculus/types.d.ts +38 -0
  279. package/dist/runtime/pi-calculus/types.d.ts.map +1 -0
  280. package/dist/runtime/pi-calculus/types.js +22 -0
  281. package/dist/runtime/pi-calculus/types.js.map +1 -0
  282. package/dist/runtime/planning/astar.d.ts +10 -0
  283. package/dist/runtime/planning/astar.d.ts.map +1 -0
  284. package/dist/runtime/planning/astar.js +155 -0
  285. package/dist/runtime/planning/astar.js.map +1 -0
  286. package/dist/runtime/planning/bfs.d.ts +17 -0
  287. package/dist/runtime/planning/bfs.d.ts.map +1 -0
  288. package/dist/runtime/planning/bfs.js +87 -0
  289. package/dist/runtime/planning/bfs.js.map +1 -0
  290. package/dist/runtime/planning/ground.d.ts +55 -0
  291. package/dist/runtime/planning/ground.d.ts.map +1 -0
  292. package/dist/runtime/planning/ground.js +154 -0
  293. package/dist/runtime/planning/ground.js.map +1 -0
  294. package/dist/runtime/planning/heuristic.d.ts +29 -0
  295. package/dist/runtime/planning/heuristic.d.ts.map +1 -0
  296. package/dist/runtime/planning/heuristic.js +172 -0
  297. package/dist/runtime/planning/heuristic.js.map +1 -0
  298. package/dist/runtime/planning/index.d.ts +6 -0
  299. package/dist/runtime/planning/index.d.ts.map +1 -0
  300. package/dist/runtime/planning/index.js +38 -0
  301. package/dist/runtime/planning/index.js.map +1 -0
  302. package/dist/runtime/planning/types.d.ts +100 -0
  303. package/dist/runtime/planning/types.d.ts.map +1 -0
  304. package/dist/runtime/planning/types.js +22 -0
  305. package/dist/runtime/planning/types.js.map +1 -0
  306. package/dist/runtime/symbolic-diff/differentiate.d.ts.map +1 -1
  307. package/dist/runtime/symbolic-diff/differentiate.js.map +1 -1
  308. package/dist/runtime/symbolic-diff/index.d.ts +1 -1
  309. package/dist/runtime/symbolic-diff/index.d.ts.map +1 -1
  310. package/dist/runtime/symbolic-diff/index.js.map +1 -1
  311. package/dist/runtime/symbolic-diff/parse.d.ts.map +1 -1
  312. package/dist/runtime/symbolic-diff/parse.js +7 -1
  313. package/dist/runtime/symbolic-diff/parse.js.map +1 -1
  314. package/dist/runtime/theorem-cache/cache.d.ts +100 -0
  315. package/dist/runtime/theorem-cache/cache.d.ts.map +1 -0
  316. package/dist/runtime/theorem-cache/cache.js +213 -0
  317. package/dist/runtime/theorem-cache/cache.js.map +1 -0
  318. package/dist/runtime/theorem-cache/canonical.d.ts +59 -0
  319. package/dist/runtime/theorem-cache/canonical.d.ts.map +1 -0
  320. package/dist/runtime/theorem-cache/canonical.js +105 -0
  321. package/dist/runtime/theorem-cache/canonical.js.map +1 -0
  322. package/dist/runtime/theorem-cache/index.d.ts +6 -0
  323. package/dist/runtime/theorem-cache/index.d.ts.map +1 -0
  324. package/dist/runtime/theorem-cache/index.js +16 -0
  325. package/dist/runtime/theorem-cache/index.js.map +1 -0
  326. package/dist/runtime/theorem-cache/pattern.d.ts +24 -0
  327. package/dist/runtime/theorem-cache/pattern.d.ts.map +1 -0
  328. package/dist/runtime/theorem-cache/pattern.js +80 -0
  329. package/dist/runtime/theorem-cache/pattern.js.map +1 -0
  330. package/dist/system-f/index.d.ts +7 -0
  331. package/dist/system-f/index.d.ts.map +1 -0
  332. package/dist/system-f/index.js +48 -0
  333. package/dist/system-f/index.js.map +1 -0
  334. package/dist/system-f/infer.d.ts +9 -0
  335. package/dist/system-f/infer.d.ts.map +1 -0
  336. package/dist/system-f/infer.js +94 -0
  337. package/dist/system-f/infer.js.map +1 -0
  338. package/dist/system-f/reduce.d.ts +15 -0
  339. package/dist/system-f/reduce.d.ts.map +1 -0
  340. package/dist/system-f/reduce.js +259 -0
  341. package/dist/system-f/reduce.js.map +1 -0
  342. package/dist/system-f/types.d.ts +53 -0
  343. package/dist/system-f/types.d.ts.map +1 -0
  344. package/dist/system-f/types.js +157 -0
  345. package/dist/system-f/types.js.map +1 -0
  346. package/dist/tableau-framework/TableauProver.d.ts +10 -0
  347. package/dist/tableau-framework/TableauProver.d.ts.map +1 -0
  348. package/dist/tableau-framework/TableauProver.js +118 -0
  349. package/dist/tableau-framework/TableauProver.js.map +1 -0
  350. package/dist/tableau-framework/index.d.ts +5 -0
  351. package/dist/tableau-framework/index.d.ts.map +1 -0
  352. package/dist/tableau-framework/index.js +11 -0
  353. package/dist/tableau-framework/index.js.map +1 -0
  354. package/dist/tableau-framework/propositional.d.ts +11 -0
  355. package/dist/tableau-framework/propositional.d.ts.map +1 -0
  356. package/dist/tableau-framework/propositional.js +143 -0
  357. package/dist/tableau-framework/propositional.js.map +1 -0
  358. package/dist/tableau-framework/types.d.ts +32 -0
  359. package/dist/tableau-framework/types.d.ts.map +1 -0
  360. package/dist/tableau-framework/types.js +6 -0
  361. package/dist/tableau-framework/types.js.map +1 -0
  362. package/dist/tests/anti-unification/anti-unify.test.d.ts +2 -0
  363. package/dist/tests/anti-unification/anti-unify.test.d.ts.map +1 -0
  364. package/dist/tests/anti-unification/anti-unify.test.js +219 -0
  365. package/dist/tests/anti-unification/anti-unify.test.js.map +1 -0
  366. package/dist/tests/coinduction/coinduction.test.d.ts +2 -0
  367. package/dist/tests/coinduction/coinduction.test.d.ts.map +1 -0
  368. package/dist/tests/coinduction/coinduction.test.js +217 -0
  369. package/dist/tests/coinduction/coinduction.test.js.map +1 -0
  370. package/dist/tests/combinators-ski/combinators-ski.test.d.ts +2 -0
  371. package/dist/tests/combinators-ski/combinators-ski.test.d.ts.map +1 -0
  372. package/dist/tests/combinators-ski/combinators-ski.test.js +211 -0
  373. package/dist/tests/combinators-ski/combinators-ski.test.js.map +1 -0
  374. package/dist/tests/constructive-reals/constructive-reals.test.d.ts +2 -0
  375. package/dist/tests/constructive-reals/constructive-reals.test.d.ts.map +1 -0
  376. package/dist/tests/constructive-reals/constructive-reals.test.js +357 -0
  377. package/dist/tests/constructive-reals/constructive-reals.test.js.map +1 -0
  378. package/dist/tests/coverage-fill-aristotelian.test.js +1 -1
  379. package/dist/tests/coverage-fill-aristotelian.test.js.map +1 -1
  380. package/dist/tests/coverage-fill-fallacies.test.js +1 -1
  381. package/dist/tests/coverage-fill-fallacies.test.js.map +1 -1
  382. package/dist/tests/coverage-fill-format.test.js +1 -1
  383. package/dist/tests/coverage-fill-format.test.js.map +1 -1
  384. package/dist/tests/coverage-fill-intuitionistic.test.js +1 -1
  385. package/dist/tests/coverage-fill-intuitionistic.test.js.map +1 -1
  386. package/dist/tests/coverage-fill-probabilistic.test.js +1 -1
  387. package/dist/tests/coverage-fill-probabilistic.test.js.map +1 -1
  388. package/dist/tests/csp/csp.test.d.ts +2 -0
  389. package/dist/tests/csp/csp.test.d.ts.map +1 -0
  390. package/dist/tests/csp/csp.test.js +292 -0
  391. package/dist/tests/csp/csp.test.js.map +1 -0
  392. package/dist/tests/game-semantics/game-semantics.test.d.ts +2 -0
  393. package/dist/tests/game-semantics/game-semantics.test.d.ts.map +1 -0
  394. package/dist/tests/game-semantics/game-semantics.test.js +143 -0
  395. package/dist/tests/game-semantics/game-semantics.test.js.map +1 -0
  396. package/dist/tests/higher-order-unify/ho-unify.test.d.ts +2 -0
  397. package/dist/tests/higher-order-unify/ho-unify.test.d.ts.map +1 -0
  398. package/dist/tests/higher-order-unify/ho-unify.test.js +264 -0
  399. package/dist/tests/higher-order-unify/ho-unify.test.js.map +1 -0
  400. package/dist/tests/integration/cross-modules.test.d.ts +8 -0
  401. package/dist/tests/integration/cross-modules.test.d.ts.map +1 -0
  402. package/dist/tests/integration/cross-modules.test.js +668 -0
  403. package/dist/tests/integration/cross-modules.test.js.map +1 -0
  404. package/dist/tests/lambda-calc/lambda-calc.test.js.map +1 -1
  405. package/dist/tests/many-valued/many-valued.test.js.map +1 -1
  406. package/dist/tests/markov-logic/markov-logic.test.d.ts +2 -0
  407. package/dist/tests/markov-logic/markov-logic.test.d.ts.map +1 -0
  408. package/dist/tests/markov-logic/markov-logic.test.js +349 -0
  409. package/dist/tests/markov-logic/markov-logic.test.js.map +1 -0
  410. package/dist/tests/mltt/mltt.test.d.ts +2 -0
  411. package/dist/tests/mltt/mltt.test.d.ts.map +1 -0
  412. package/dist/tests/mltt/mltt.test.js +181 -0
  413. package/dist/tests/mltt/mltt.test.js.map +1 -0
  414. package/dist/tests/mu-calculus/check.test.d.ts +2 -0
  415. package/dist/tests/mu-calculus/check.test.d.ts.map +1 -0
  416. package/dist/tests/mu-calculus/check.test.js +234 -0
  417. package/dist/tests/mu-calculus/check.test.js.map +1 -0
  418. package/dist/tests/nbe/nbe.test.d.ts +2 -0
  419. package/dist/tests/nbe/nbe.test.d.ts.map +1 -0
  420. package/dist/tests/nbe/nbe.test.js +121 -0
  421. package/dist/tests/nbe/nbe.test.js.map +1 -0
  422. package/dist/tests/pi-calculus/pi-calculus.test.d.ts +2 -0
  423. package/dist/tests/pi-calculus/pi-calculus.test.d.ts.map +1 -0
  424. package/dist/tests/pi-calculus/pi-calculus.test.js +273 -0
  425. package/dist/tests/pi-calculus/pi-calculus.test.js.map +1 -0
  426. package/dist/tests/planning/planning.test.d.ts +2 -0
  427. package/dist/tests/planning/planning.test.d.ts.map +1 -0
  428. package/dist/tests/planning/planning.test.js +397 -0
  429. package/dist/tests/planning/planning.test.js.map +1 -0
  430. package/dist/tests/profile-bridge/translations.test.d.ts +2 -0
  431. package/dist/tests/profile-bridge/translations.test.d.ts.map +1 -0
  432. package/dist/tests/profile-bridge/translations.test.js +266 -0
  433. package/dist/tests/profile-bridge/translations.test.js.map +1 -0
  434. package/dist/tests/proof-nets/proof-nets.test.d.ts +2 -0
  435. package/dist/tests/proof-nets/proof-nets.test.d.ts.map +1 -0
  436. package/dist/tests/proof-nets/proof-nets.test.js +263 -0
  437. package/dist/tests/proof-nets/proof-nets.test.js.map +1 -0
  438. package/dist/tests/refinement-types/refinement-types.test.d.ts +2 -0
  439. package/dist/tests/refinement-types/refinement-types.test.d.ts.map +1 -0
  440. package/dist/tests/refinement-types/refinement-types.test.js +174 -0
  441. package/dist/tests/refinement-types/refinement-types.test.js.map +1 -0
  442. package/dist/tests/sequent-lk/prover.test.d.ts +2 -0
  443. package/dist/tests/sequent-lk/prover.test.d.ts.map +1 -0
  444. package/dist/tests/sequent-lk/prover.test.js +317 -0
  445. package/dist/tests/sequent-lk/prover.test.js.map +1 -0
  446. package/dist/tests/symbolic-diff/symbolic-diff.test.js.map +1 -1
  447. package/dist/tests/system-f/system-f.test.d.ts +2 -0
  448. package/dist/tests/system-f/system-f.test.d.ts.map +1 -0
  449. package/dist/tests/system-f/system-f.test.js +217 -0
  450. package/dist/tests/system-f/system-f.test.js.map +1 -0
  451. package/dist/tests/tableau-framework/tableau.test.d.ts +2 -0
  452. package/dist/tests/tableau-framework/tableau.test.d.ts.map +1 -0
  453. package/dist/tests/tableau-framework/tableau.test.js +196 -0
  454. package/dist/tests/tableau-framework/tableau.test.js.map +1 -0
  455. package/dist/tests/theorem-cache/cache.test.d.ts +2 -0
  456. package/dist/tests/theorem-cache/cache.test.d.ts.map +1 -0
  457. package/dist/tests/theorem-cache/cache.test.js +510 -0
  458. package/dist/tests/theorem-cache/cache.test.js.map +1 -0
  459. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../../src/profiles/sequent-lk/util.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEpC;;;GAGG;AACH,wBAAgB,KAAK,CAAC,CAAC,EAAE,SAAS,GAAG,MAAM,CAa1C;AAED,wBAAgB,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,GAAG,OAAO,CAEtD;AAED,8EAA8E;AAC9E,wBAAgB,QAAQ,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAExC;AAED,wBAAgB,QAAQ,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,EAAE,CAIrD;AAED,0EAA0E;AAC1E,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,SAAS,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,SAAS,EAAE,CAI1E;AAED,0EAA0E;AAC1E,wBAAgB,cAAc,CAAC,EAAE,EAAE,SAAS,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,SAAS,EAAE,CAExE;AAED,wBAAgB,WAAW,CAAC,EAAE,EAAE,SAAS,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAEjE;AAED,2DAA2D;AAC3D,wBAAgB,KAAK,CAAC,CAAC,EAAE,SAAS,GAAG,MAAM,CAW1C"}
@@ -0,0 +1,71 @@
1
+ "use strict";
2
+ // ============================================================
3
+ // LK — Utilidades sintacticas locales
4
+ // ============================================================
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.lkKey = lkKey;
7
+ exports.eq = eq;
8
+ exports.cloneSeq = cloneSeq;
9
+ exports.removeAt = removeAt;
10
+ exports.removeFirstByKey = removeFirstByKey;
11
+ exports.removeAllByKey = removeAllByKey;
12
+ exports.containsKey = containsKey;
13
+ exports.depth = depth;
14
+ /**
15
+ * Clave canonica de una formula LK. Sirve para comparar igualdad
16
+ * sintactica entre formulas y construir conjuntos/multisets.
17
+ */
18
+ function lkKey(f) {
19
+ switch (f.kind) {
20
+ case 'atom':
21
+ return `a:${f.name}`;
22
+ case 'not':
23
+ return `n(${lkKey(f.arg)})`;
24
+ case 'and':
25
+ return `&(${lkKey(f.left)},${lkKey(f.right)})`;
26
+ case 'or':
27
+ return `|(${lkKey(f.left)},${lkKey(f.right)})`;
28
+ case 'implies':
29
+ return `>(${lkKey(f.left)},${lkKey(f.right)})`;
30
+ }
31
+ }
32
+ function eq(a, b) {
33
+ return lkKey(a) === lkKey(b);
34
+ }
35
+ /** Devuelve una copia superficial: util para construir premisas sin alias. */
36
+ function cloneSeq(xs) {
37
+ return xs.slice();
38
+ }
39
+ function removeAt(xs, idx) {
40
+ const copy = xs.slice();
41
+ copy.splice(idx, 1);
42
+ return copy;
43
+ }
44
+ /** Quita la primera ocurrencia de una formula identificable por `key`. */
45
+ function removeFirstByKey(xs, key) {
46
+ const idx = xs.findIndex((f) => lkKey(f) === key);
47
+ if (idx === -1)
48
+ return xs.slice();
49
+ return removeAt(xs, idx);
50
+ }
51
+ /** Quita todas las ocurrencias de una formula identificable por `key`. */
52
+ function removeAllByKey(xs, key) {
53
+ return xs.filter((f) => lkKey(f) !== key);
54
+ }
55
+ function containsKey(xs, key) {
56
+ return xs.some((f) => lkKey(f) === key);
57
+ }
58
+ /** Profundidad de una formula (sub-formulas estrictas). */
59
+ function depth(f) {
60
+ switch (f.kind) {
61
+ case 'atom':
62
+ return 0;
63
+ case 'not':
64
+ return depth(f.arg) + 1;
65
+ case 'and':
66
+ case 'or':
67
+ case 'implies':
68
+ return Math.max(depth(f.left), depth(f.right)) + 1;
69
+ }
70
+ }
71
+ //# sourceMappingURL=util.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"util.js","sourceRoot":"","sources":["../../../src/profiles/sequent-lk/util.ts"],"names":[],"mappings":";AAAA,+DAA+D;AAC/D,sCAAsC;AACtC,+DAA+D;;AAQ/D,sBAaC;AAED,gBAEC;AAGD,4BAEC;AAED,4BAIC;AAGD,4CAIC;AAGD,wCAEC;AAED,kCAEC;AAGD,sBAWC;AA9DD;;;GAGG;AACH,SAAgB,KAAK,CAAC,CAAY;IAChC,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;QACf,KAAK,MAAM;YACT,OAAO,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;QACvB,KAAK,KAAK;YACR,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;QAC9B,KAAK,KAAK;YACR,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC;QACjD,KAAK,IAAI;YACP,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC;QACjD,KAAK,SAAS;YACZ,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC;IACnD,CAAC;AACH,CAAC;AAED,SAAgB,EAAE,CAAC,CAAY,EAAE,CAAY;IAC3C,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC;AAC/B,CAAC;AAED,8EAA8E;AAC9E,SAAgB,QAAQ,CAAI,EAAO;IACjC,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC;AACpB,CAAC;AAED,SAAgB,QAAQ,CAAI,EAAO,EAAE,GAAW;IAC9C,MAAM,IAAI,GAAG,EAAE,CAAC,KAAK,EAAE,CAAC;IACxB,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IACpB,OAAO,IAAI,CAAC;AACd,CAAC;AAED,0EAA0E;AAC1E,SAAgB,gBAAgB,CAAC,EAAe,EAAE,GAAW;IAC3D,MAAM,GAAG,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;IAClD,IAAI,GAAG,KAAK,CAAC,CAAC;QAAE,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC;IAClC,OAAO,QAAQ,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;AAC3B,CAAC;AAED,0EAA0E;AAC1E,SAAgB,cAAc,CAAC,EAAe,EAAE,GAAW;IACzD,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;AAC5C,CAAC;AAED,SAAgB,WAAW,CAAC,EAAe,EAAE,GAAW;IACtD,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;AAC1C,CAAC;AAED,2DAA2D;AAC3D,SAAgB,KAAK,CAAC,CAAY;IAChC,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;QACf,KAAK,MAAM;YACT,OAAO,CAAC,CAAC;QACX,KAAK,KAAK;YACR,OAAO,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC1B,KAAK,KAAK,CAAC;QACX,KAAK,IAAI,CAAC;QACV,KAAK,SAAS;YACZ,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC;IACvD,CAAC;AACH,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { type MLLFormula, type ProofNet } from './types';
2
+ export declare function constructFromSequent(formulas: MLLFormula[]): ProofNet;
3
+ //# sourceMappingURL=construct.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"construct.d.ts","sourceRoot":"","sources":["../../src/proof-nets/construct.ts"],"names":[],"mappings":"AAmBA,OAAO,EACL,KAAK,UAAU,EACf,KAAK,QAAQ,EAKd,MAAM,SAAS,CAAC;AAmCjB,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,UAAU,EAAE,GAAG,QAAQ,CAqCrE"}
@@ -0,0 +1,85 @@
1
+ "use strict";
2
+ // ============================================================
3
+ // Proof Nets — Construcción a partir de un secuente
4
+ // ============================================================
5
+ //
6
+ // Dado ⊢ Γ con Γ una lista de fórmulas MLL, esta construcción
7
+ // produce un net candidato:
8
+ //
9
+ // 1. Para cada fórmula F_i de Γ se construye recursivamente su
10
+ // "árbol de descomposición": cada nodo interno se cablea con
11
+ // el link correspondiente (⊗ o ⅋), terminando en hojas que
12
+ // son átomos.
13
+ // 2. Los átomos hoja se emparejan por pares duales (A con A⊥)
14
+ // vía axiom links. El pairing es greedy: para cada átomo
15
+ // libre busca su primer dual libre.
16
+ //
17
+ // El net producido puede o no ser correcto: si Γ no es probable
18
+ // en MLL la correctitud Danos-Regnier fallará. Las conclusiones
19
+ // son las raíces de los árboles de descomposición.
20
+ Object.defineProperty(exports, "__esModule", { value: true });
21
+ exports.constructFromSequent = constructFromSequent;
22
+ const types_1 = require("./types");
23
+ function freshNode(b, formula) {
24
+ const id = b.nextId++;
25
+ b.nodes.push({ id, formula });
26
+ return id;
27
+ }
28
+ // Construye el árbol de descomposición de `f`. Devuelve el id del
29
+ // nodo raíz y la lista de ids de las hojas-átomo en orden de
30
+ // recorrido en profundidad por la izquierda.
31
+ function buildFormulaTree(b, f) {
32
+ if (f.kind === 'atom') {
33
+ const id = freshNode(b, f);
34
+ return { root: id, atomLeaves: [id] };
35
+ }
36
+ const left = buildFormulaTree(b, f.left);
37
+ const right = buildFormulaTree(b, f.right);
38
+ const root = freshNode(b, f);
39
+ b.links.push({
40
+ kind: f.kind === 'tensor' ? 'tensor' : 'par',
41
+ ports: [left.root, right.root, root],
42
+ });
43
+ return {
44
+ root,
45
+ atomLeaves: [...left.atomLeaves, ...right.atomLeaves],
46
+ };
47
+ }
48
+ function constructFromSequent(formulas) {
49
+ const b = { nodes: [], links: [], nextId: 0 };
50
+ const conclusions = [];
51
+ const atomLeaves = [];
52
+ for (const f of formulas) {
53
+ const tree = buildFormulaTree(b, f);
54
+ conclusions.push(tree.root);
55
+ atomLeaves.push(...tree.atomLeaves);
56
+ }
57
+ // Pairing greedy: para cada hoja sin asignar, busca la primera
58
+ // hoja dual sin asignar y crea un axiom link entre ambas.
59
+ const taken = new Set();
60
+ for (const i of atomLeaves) {
61
+ if (taken.has(i))
62
+ continue;
63
+ const fi = b.nodes[i].formula;
64
+ let partner = null;
65
+ for (const j of atomLeaves) {
66
+ if (j === i || taken.has(j))
67
+ continue;
68
+ const fj = b.nodes[j].formula;
69
+ if ((0, types_1.formulaEquals)(fj, (0, types_1.dual)(fi))) {
70
+ partner = j;
71
+ break;
72
+ }
73
+ }
74
+ if (partner === null) {
75
+ // Átomo sin par: se deja libre. El criterio de corrección
76
+ // detectará la inconsistencia (componente desconexa).
77
+ continue;
78
+ }
79
+ taken.add(i);
80
+ taken.add(partner);
81
+ b.links.push({ kind: 'axiom', ports: [i, partner] });
82
+ }
83
+ return { nodes: b.nodes, links: b.links, conclusions };
84
+ }
85
+ //# sourceMappingURL=construct.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"construct.js","sourceRoot":"","sources":["../../src/proof-nets/construct.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { type ProofNet } from './types';
2
+ export declare function isCorrect(net: ProofNet): boolean;
3
+ //# sourceMappingURL=correctness.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"correctness.d.ts","sourceRoot":"","sources":["../../src/proof-nets/correctness.ts"],"names":[],"mappings":"AA+BA,OAAO,EAAmB,KAAK,QAAQ,EAAuB,MAAM,SAAS,CAAC;AA+J9E,wBAAgB,SAAS,CAAC,GAAG,EAAE,QAAQ,GAAG,OAAO,CAmBhD"}
@@ -0,0 +1,213 @@
1
+ "use strict";
2
+ // ============================================================
3
+ // Proof Nets — Criterio de corrección de Danos-Regnier
4
+ // ============================================================
5
+ //
6
+ // Un net MLL es correcto sii para toda elección de "switch" sobre
7
+ // los par-links (cada ⅋ elige una de sus dos premisas para
8
+ // conservar la arista hacia la conclusión, descartando la otra),
9
+ // el grafo resultante es:
10
+ //
11
+ // - acíclico, y
12
+ // - conexo.
13
+ //
14
+ // Los demás links contribuyen aristas de forma fija:
15
+ // axiom : una arista entre sus dos nodos.
16
+ // cut : una arista entre sus dos nodos.
17
+ // tensor : dos aristas (premisa-izq — conclusión, premisa-der — conclusión).
18
+ // par : sólo UNA arista por switch (conclusión — premisa elegida).
19
+ //
20
+ // La validación enumera los 2^(#par) switches. Para MLL el número
21
+ // de par-links en una prueba típica es bajo; si fuera grande, el
22
+ // criterio se puede reformular en tiempo lineal (algoritmo de
23
+ // Guerrini), pero queda fuera del alcance educativo aquí.
24
+ //
25
+ // Además validamos consistencia local del net antes del criterio:
26
+ // - ports de cada link existen.
27
+ // - axiom/cut conectan fórmulas duales.
28
+ // - tensor/par conectan {A, B, A⊗B} resp. {A, B, A⅋B}.
29
+ // - cada nodo tiene la "valencia" correcta (los átomos terminan
30
+ // en exactamente un axiom o cut; los compuestos son
31
+ // premisa/conclusión de su link).
32
+ Object.defineProperty(exports, "__esModule", { value: true });
33
+ exports.isCorrect = isCorrect;
34
+ const types_1 = require("./types");
35
+ function indexNodes(net) {
36
+ const idx = new Map();
37
+ for (const n of net.nodes) {
38
+ if (idx.has(n.id))
39
+ return null; // ids duplicados
40
+ idx.set(n.id, { formula: n.formula });
41
+ }
42
+ return idx;
43
+ }
44
+ function structurallyValid(net) {
45
+ const idx = indexNodes(net);
46
+ if (!idx)
47
+ return false;
48
+ for (const link of net.links) {
49
+ for (const p of link.ports) {
50
+ if (!idx.has(p))
51
+ return false;
52
+ }
53
+ if (link.kind === 'axiom' || link.kind === 'cut') {
54
+ if (link.ports.length !== 2)
55
+ return false;
56
+ const [a, b] = link.ports;
57
+ const fa = idx.get(a).formula;
58
+ const fb = idx.get(b).formula;
59
+ if (!(0, types_1.formulaEquals)(fa, (0, types_1.dual)(fb)))
60
+ return false;
61
+ }
62
+ else {
63
+ if (link.ports.length !== 3)
64
+ return false;
65
+ const [l, r, c] = link.ports;
66
+ const fc = idx.get(c).formula;
67
+ const fl = idx.get(l).formula;
68
+ const fr = idx.get(r).formula;
69
+ if (fc.kind !== link.kind)
70
+ return false;
71
+ if (!(0, types_1.formulaEquals)(fc.left, fl) || !(0, types_1.formulaEquals)(fc.right, fr))
72
+ return false;
73
+ }
74
+ }
75
+ // Valencia mínima: cada átomo debe ser hoja de un axiom o de un
76
+ // cut. Sin esa condición un átomo "huérfano" pasaría el criterio
77
+ // DR trivialmente (1 componente, sin ciclos) pero no representa
78
+ // una prueba: lo rechazamos a nivel estructural.
79
+ const conclusionsSet = new Set(net.conclusions);
80
+ for (const node of net.nodes) {
81
+ if (node.formula.kind !== 'atom')
82
+ continue;
83
+ let touches = 0;
84
+ for (const link of net.links) {
85
+ if ((link.kind === 'axiom' || link.kind === 'cut') && link.ports.includes(node.id)) {
86
+ touches++;
87
+ }
88
+ }
89
+ if (touches !== 1) {
90
+ // Excepción didáctica: si el único uso restante es como
91
+ // premisa de un tensor/par del cual es hoja, tampoco es
92
+ // válido — debe terminar en axiom/cut.
93
+ return false;
94
+ }
95
+ }
96
+ // Suprimimos `conclusionsSet` (declarado por simetría con
97
+ // futuras extensiones para validar conclusiones explícitas).
98
+ void conclusionsSet;
99
+ return true;
100
+ }
101
+ function edgesForSwitching(net, switching) {
102
+ // `switching[i]` = elección del i-ésimo par-link (true = izquierda).
103
+ const edges = [];
104
+ let parIndex = 0;
105
+ for (const link of net.links) {
106
+ switch (link.kind) {
107
+ case 'axiom':
108
+ case 'cut': {
109
+ const [a, b] = link.ports;
110
+ edges.push([a, b]);
111
+ break;
112
+ }
113
+ case 'tensor': {
114
+ const [l, r, c] = link.ports;
115
+ edges.push([l, c]);
116
+ edges.push([r, c]);
117
+ break;
118
+ }
119
+ case 'par': {
120
+ const [l, r, c] = link.ports;
121
+ const chooseLeft = switching[parIndex++];
122
+ edges.push([chooseLeft ? l : r, c]);
123
+ break;
124
+ }
125
+ }
126
+ }
127
+ return edges;
128
+ }
129
+ // ---------- Acíclico + conexo por Union-Find ----------
130
+ class UnionFind {
131
+ parent = new Map();
132
+ rank = new Map();
133
+ add(x) {
134
+ if (!this.parent.has(x)) {
135
+ this.parent.set(x, x);
136
+ this.rank.set(x, 0);
137
+ }
138
+ }
139
+ find(x) {
140
+ let p = this.parent.get(x);
141
+ if (p !== x) {
142
+ p = this.find(p);
143
+ this.parent.set(x, p);
144
+ }
145
+ return p;
146
+ }
147
+ // Devuelve `false` si los nodos ya estaban en la misma componente
148
+ // (=> añadir la arista crearía un ciclo).
149
+ union(x, y) {
150
+ const rx = this.find(x);
151
+ const ry = this.find(y);
152
+ if (rx === ry)
153
+ return false;
154
+ const rkx = this.rank.get(rx);
155
+ const rky = this.rank.get(ry);
156
+ if (rkx < rky)
157
+ this.parent.set(rx, ry);
158
+ else if (rkx > rky)
159
+ this.parent.set(ry, rx);
160
+ else {
161
+ this.parent.set(ry, rx);
162
+ this.rank.set(rx, rkx + 1);
163
+ }
164
+ return true;
165
+ }
166
+ components() {
167
+ const roots = new Set();
168
+ for (const x of this.parent.keys())
169
+ roots.add(this.find(x));
170
+ return roots.size;
171
+ }
172
+ }
173
+ function switchingIsTree(net, edges) {
174
+ const uf = new UnionFind();
175
+ for (const n of net.nodes)
176
+ uf.add(n.id);
177
+ for (const [a, b] of edges) {
178
+ if (!uf.union(a, b))
179
+ return false; // ciclo
180
+ }
181
+ return uf.components() === 1;
182
+ }
183
+ // ---------- Enumeración de switchings ----------
184
+ function countParLinks(net) {
185
+ let n = 0;
186
+ for (const l of net.links)
187
+ if (l.kind === 'par')
188
+ n++;
189
+ return n;
190
+ }
191
+ function isCorrect(net) {
192
+ if (!structurallyValid(net))
193
+ return false;
194
+ // Net vacío: trivialmente correcto sólo si no tiene nodos.
195
+ if (net.nodes.length === 0)
196
+ return net.links.length === 0;
197
+ const k = countParLinks(net);
198
+ // 2^k switchings; protección anti-explosión para tests didácticos.
199
+ // Con k>20 cualquier net razonable ya excede el alcance educativo.
200
+ if (k > 20)
201
+ return false;
202
+ const total = 1 << k;
203
+ for (let mask = 0; mask < total; mask++) {
204
+ const switching = [];
205
+ for (let i = 0; i < k; i++)
206
+ switching.push(((mask >> i) & 1) === 1);
207
+ const edges = edgesForSwitching(net, switching);
208
+ if (!switchingIsTree(net, edges))
209
+ return false;
210
+ }
211
+ return true;
212
+ }
213
+ //# sourceMappingURL=correctness.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"correctness.js","sourceRoot":"","sources":["../../src/proof-nets/correctness.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import { type ProofNet } from './types';
2
+ export declare function reduceCutStep(net: ProofNet): {
3
+ net: ProofNet;
4
+ reduced: boolean;
5
+ };
6
+ export declare function reduceCut(net: ProofNet): ProofNet;
7
+ export declare function isCutFree(net: ProofNet): boolean;
8
+ export declare function normalizeCuts(net: ProofNet, maxSteps?: number): ProofNet;
9
+ //# sourceMappingURL=cut-elim.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cut-elim.d.ts","sourceRoot":"","sources":["../../src/proof-nets/cut-elim.ts"],"names":[],"mappings":"AAwBA,OAAO,EAAE,KAAK,QAAQ,EAA6D,MAAM,SAAS,CAAC;AAuCnG,wBAAgB,aAAa,CAAC,GAAG,EAAE,QAAQ,GAAG;IAAE,GAAG,EAAE,QAAQ,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAWhF;AAwED,wBAAgB,SAAS,CAAC,GAAG,EAAE,QAAQ,GAAG,QAAQ,CAEjD;AAED,wBAAgB,SAAS,CAAC,GAAG,EAAE,QAAQ,GAAG,OAAO,CAEhD;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,QAAQ,EAAE,QAAQ,SAAO,GAAG,QAAQ,CAQtE"}
@@ -0,0 +1,149 @@
1
+ "use strict";
2
+ // ============================================================
3
+ // Proof Nets — Eliminación de cortes
4
+ // ============================================================
5
+ //
6
+ // Para MLL la cut-elimination es local y confluente. Dos pasos
7
+ // fundamentales:
8
+ //
9
+ // (axiom-cut) axiom(a, a') + cut(a', b)
10
+ // ─────────────────────────
11
+ // las apariciones de a' se "atajan" hacia b:
12
+ // los links que tocaban a' tocan ahora a, y
13
+ // axiom + cut desaparecen.
14
+ //
15
+ // (mult-cut) tensor(l₁,r₁,c₁=A⊗B) + par(l₂,r₂,c₂=A⊥⅋B⊥) + cut(c₁,c₂)
16
+ // ──────────────────────────────────────────────────────
17
+ // dos cortes más pequeños: cut(l₁,l₂) y cut(r₁,r₂),
18
+ // desaparecen los links ⊗, ⅋ y el cut original.
19
+ // Los nodos c₁ y c₂ desaparecen.
20
+ //
21
+ // `reduceCut` aplica un paso (si existe alguno). `normalizeCuts`
22
+ // itera hasta normal form (sin cortes). Para MLL la terminación
23
+ // es trivial: cada paso reduce el número de conectivos en el
24
+ // borde del cut.
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.reduceCutStep = reduceCutStep;
27
+ exports.reduceCut = reduceCut;
28
+ exports.isCutFree = isCutFree;
29
+ exports.normalizeCuts = normalizeCuts;
30
+ const types_1 = require("./types");
31
+ // ---------- Helpers ----------
32
+ function cloneNet(net) {
33
+ return {
34
+ nodes: net.nodes.map((n) => ({ id: n.id, formula: n.formula })),
35
+ links: net.links.map((l) => ({ kind: l.kind, ports: [...l.ports] })),
36
+ conclusions: [...net.conclusions],
37
+ };
38
+ }
39
+ function findLinkByPort(links, port, exceptIndex) {
40
+ for (let i = 0; i < links.length; i++) {
41
+ if (i === exceptIndex)
42
+ continue;
43
+ if (links[i].ports.includes(port))
44
+ return { index: i, link: links[i] };
45
+ }
46
+ return null;
47
+ }
48
+ function removeIndices(arr, indices) {
49
+ const drop = new Set(indices);
50
+ return arr.filter((_, i) => !drop.has(i));
51
+ }
52
+ function removeNodesById(nodes, ids) {
53
+ const drop = new Set(ids);
54
+ return nodes.filter((n) => !drop.has(n.id));
55
+ }
56
+ // ---------- Pasos de reducción ----------
57
+ // Intenta aplicar UN paso de cut-elimination. Devuelve el nuevo
58
+ // net (mismo objeto si no había nada que reducir) y un boolean
59
+ // `reduced` indicando si efectivamente se redujo.
60
+ function reduceCutStep(net) {
61
+ for (let i = 0; i < net.links.length; i++) {
62
+ const cut = net.links[i];
63
+ if (cut.kind !== 'cut')
64
+ continue;
65
+ const [a, b] = cut.ports;
66
+ const stepAB = tryReduceAt(net, i, a, b);
67
+ if (stepAB)
68
+ return { net: stepAB, reduced: true };
69
+ const stepBA = tryReduceAt(net, i, b, a);
70
+ if (stepBA)
71
+ return { net: stepBA, reduced: true };
72
+ }
73
+ return { net, reduced: false };
74
+ }
75
+ function tryReduceAt(net, cutIndex, portOnAxiomSide, otherPort) {
76
+ // Caso 1: axiom-cut. El nodo `portOnAxiomSide` participa en un
77
+ // axiom link.
78
+ const ax = findLinkByPort(net.links, portOnAxiomSide, cutIndex);
79
+ if (ax && ax.link.kind === 'axiom') {
80
+ const [p, q] = ax.link.ports;
81
+ const other = p === portOnAxiomSide ? q : p;
82
+ // Eliminamos axiom + cut. Cualquier link futuro que apuntara
83
+ // a `portOnAxiomSide` ya no existe (era hoja del axiom). El
84
+ // axiom ahora pasa a conectar `other` con `otherPort`: lo
85
+ // representamos como un nuevo axiom link entre ambos (es
86
+ // congruente con la semántica de "los duales quedan ligados").
87
+ //
88
+ // Sin embargo: si `otherPort` también es hoja de otro axiom,
89
+ // entonces toda esta cadena se colapsa eventualmente. Aquí
90
+ // hacemos sólo un paso: removemos cut, removemos axiom viejo,
91
+ // creamos axiom nuevo (other, otherPort) si los formulas son
92
+ // duales (deberían serlo por estructura del cut).
93
+ const next = cloneNet(net);
94
+ next.links = removeIndices(next.links, [cutIndex, ax.index]);
95
+ next.links.push({ kind: 'axiom', ports: [other, otherPort] });
96
+ // El nodo `portOnAxiomSide` queda huérfano; se elimina.
97
+ // Si era una conclusión (no debería: era hoja axiom) la
98
+ // quitamos también para mantener consistencia.
99
+ next.nodes = removeNodesById(next.nodes, [portOnAxiomSide]);
100
+ next.conclusions = next.conclusions.filter((c) => c !== portOnAxiomSide);
101
+ return next;
102
+ }
103
+ // Caso 2: mult-cut. `portOnAxiomSide` es la conclusión de un
104
+ // tensor link y `otherPort` la conclusión de un par link con
105
+ // fórmula dual.
106
+ const tensorLink = findLinkByPort(net.links, portOnAxiomSide, cutIndex);
107
+ if (tensorLink &&
108
+ tensorLink.link.kind === 'tensor' &&
109
+ tensorLink.link.ports[2] === portOnAxiomSide) {
110
+ const parLink = findLinkByPort(net.links, otherPort, cutIndex);
111
+ if (parLink && parLink.link.kind === 'par' && parLink.link.ports[2] === otherPort) {
112
+ const tensorNode = net.nodes.find((n) => n.id === portOnAxiomSide);
113
+ const parNode = net.nodes.find((n) => n.id === otherPort);
114
+ if (tensorNode &&
115
+ parNode &&
116
+ tensorNode.formula.kind === 'tensor' &&
117
+ parNode.formula.kind === 'par' &&
118
+ (0, types_1.formulaEquals)(tensorNode.formula, (0, types_1.dual)(parNode.formula))) {
119
+ const [tL, tR] = tensorLink.link.ports;
120
+ const [pL, pR] = parLink.link.ports;
121
+ const next = cloneNet(net);
122
+ next.links = removeIndices(next.links, [cutIndex, tensorLink.index, parLink.index]);
123
+ next.links.push({ kind: 'cut', ports: [tL, pL] });
124
+ next.links.push({ kind: 'cut', ports: [tR, pR] });
125
+ next.nodes = removeNodesById(next.nodes, [portOnAxiomSide, otherPort]);
126
+ next.conclusions = next.conclusions.filter((c) => c !== portOnAxiomSide && c !== otherPort);
127
+ return next;
128
+ }
129
+ }
130
+ }
131
+ return null;
132
+ }
133
+ function reduceCut(net) {
134
+ return reduceCutStep(net).net;
135
+ }
136
+ function isCutFree(net) {
137
+ return !net.links.some((l) => l.kind === 'cut');
138
+ }
139
+ function normalizeCuts(net, maxSteps = 1000) {
140
+ let current = net;
141
+ for (let i = 0; i < maxSteps; i++) {
142
+ const step = reduceCutStep(current);
143
+ if (!step.reduced)
144
+ return step.net;
145
+ current = step.net;
146
+ }
147
+ return current;
148
+ }
149
+ //# sourceMappingURL=cut-elim.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cut-elim.js","sourceRoot":"","sources":["../../src/proof-nets/cut-elim.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export type { Polarity, MLLFormula, LinkKind, ProofNetLink, ProofNetNode, ProofNet } from './types';
2
+ export { atomPos, atomNeg, tensor, par, dual, formulaEquals, formulaToString } from './types';
3
+ export { constructFromSequent } from './construct';
4
+ export { isCorrect } from './correctness';
5
+ export { reduceCut, reduceCutStep, normalizeCuts, isCutFree } from './cut-elim';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/proof-nets/index.ts"],"names":[],"mappings":"AAaA,YAAY,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,YAAY,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAEpG,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE9F,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC"}
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ // ============================================================
3
+ // Proof Nets — Punto de entrada público
4
+ // ============================================================
5
+ //
6
+ // Proof nets de Girard para MLL (Multiplicative Linear Logic):
7
+ // - construcción a partir de un secuente,
8
+ // - verificación de corrección (criterio Danos-Regnier),
9
+ // - eliminación de cortes (axiom-cut y mult-cut).
10
+ //
11
+ // Diseño "didáctico" cercano al estándar de la literatura:
12
+ // nodos numerados, links {axiom, cut, tensor, par} con ports en
13
+ // orden canónico, conclusiones explícitas.
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.isCutFree = exports.normalizeCuts = exports.reduceCutStep = exports.reduceCut = exports.isCorrect = exports.constructFromSequent = exports.formulaToString = exports.formulaEquals = exports.dual = exports.par = exports.tensor = exports.atomNeg = exports.atomPos = void 0;
16
+ var types_1 = require("./types");
17
+ Object.defineProperty(exports, "atomPos", { enumerable: true, get: function () { return types_1.atomPos; } });
18
+ Object.defineProperty(exports, "atomNeg", { enumerable: true, get: function () { return types_1.atomNeg; } });
19
+ Object.defineProperty(exports, "tensor", { enumerable: true, get: function () { return types_1.tensor; } });
20
+ Object.defineProperty(exports, "par", { enumerable: true, get: function () { return types_1.par; } });
21
+ Object.defineProperty(exports, "dual", { enumerable: true, get: function () { return types_1.dual; } });
22
+ Object.defineProperty(exports, "formulaEquals", { enumerable: true, get: function () { return types_1.formulaEquals; } });
23
+ Object.defineProperty(exports, "formulaToString", { enumerable: true, get: function () { return types_1.formulaToString; } });
24
+ var construct_1 = require("./construct");
25
+ Object.defineProperty(exports, "constructFromSequent", { enumerable: true, get: function () { return construct_1.constructFromSequent; } });
26
+ var correctness_1 = require("./correctness");
27
+ Object.defineProperty(exports, "isCorrect", { enumerable: true, get: function () { return correctness_1.isCorrect; } });
28
+ var cut_elim_1 = require("./cut-elim");
29
+ Object.defineProperty(exports, "reduceCut", { enumerable: true, get: function () { return cut_elim_1.reduceCut; } });
30
+ Object.defineProperty(exports, "reduceCutStep", { enumerable: true, get: function () { return cut_elim_1.reduceCutStep; } });
31
+ Object.defineProperty(exports, "normalizeCuts", { enumerable: true, get: function () { return cut_elim_1.normalizeCuts; } });
32
+ Object.defineProperty(exports, "isCutFree", { enumerable: true, get: function () { return cut_elim_1.isCutFree; } });
33
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/proof-nets/index.ts"],"names":[],"mappings":";AAAA,+DAA+D;AAC/D,wCAAwC;AACxC,+DAA+D;AAC/D,EAAE;AACF,+DAA+D;AAC/D,4CAA4C;AAC5C,2DAA2D;AAC3D,oDAAoD;AACpD,EAAE;AACF,2DAA2D;AAC3D,gEAAgE;AAChE,2CAA2C;;;AAI3C,iCAA8F;AAArF,gGAAA,OAAO,OAAA;AAAE,gGAAA,OAAO,OAAA;AAAE,+FAAA,MAAM,OAAA;AAAE,4FAAA,GAAG,OAAA;AAAE,6FAAA,IAAI,OAAA;AAAE,sGAAA,aAAa,OAAA;AAAE,wGAAA,eAAe,OAAA;AAE5E,yCAAmD;AAA1C,iHAAA,oBAAoB,OAAA;AAC7B,6CAA0C;AAAjC,wGAAA,SAAS,OAAA;AAClB,uCAAgF;AAAvE,qGAAA,SAAS,OAAA;AAAE,yGAAA,aAAa,OAAA;AAAE,yGAAA,aAAa,OAAA;AAAE,qGAAA,SAAS,OAAA"}