@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,39 @@
1
+ "use strict";
2
+ // ============================================================
3
+ // Refinement types — Subtipado por implicación
4
+ // ============================================================
5
+ //
6
+ // Definición:
7
+ // { x : B | P(x) } <: { y : B | Q(y) }
8
+ // ⟺ B = B' ∧ ∀x. P(x) ⇒ Q[x/y]
9
+ //
10
+ // Para tipos arrow se aplica contravarianza en el parámetro y
11
+ // covarianza en el resultado, como en sistemas refinados estándar.
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.isSubtype = isSubtype;
14
+ const solver_1 = require("./solver");
15
+ const predicate_1 = require("./predicate");
16
+ /**
17
+ * isSubtype — devuelve true si T1 <: T2 bajo las suposiciones del contexto.
18
+ *
19
+ * - Para tipos base iguales: chequea P(x) ⇒ Q(x) renombrando el binding.
20
+ * - Para arrows: contravarianza en `from`, covarianza en `to`.
21
+ */
22
+ function isSubtype(t1, t2, opts = {}) {
23
+ return isSubBase(t1.base, t2.base, opts) && isSubRefinement(t1, t2, opts);
24
+ }
25
+ function isSubBase(b1, b2, opts) {
26
+ if (typeof b1 === 'string' || typeof b2 === 'string')
27
+ return b1 === b2;
28
+ // arrow: contravariant en from, covariant en to
29
+ return isSubtype(b2.from, b1.from, opts) && isSubtype(b1.to, b2.to, opts);
30
+ }
31
+ function isSubRefinement(t1, t2, opts) {
32
+ // Renombramos el binding de t2 al de t1 para chequear P(x) ⇒ Q(x).
33
+ const sharedName = t1.binding;
34
+ const p = t1.predicate.trim() === '' ? 'true' : t1.predicate;
35
+ const q = (0, predicate_1.renameVar)(t2.predicate.trim() === '' ? 'true' : t2.predicate, t2.binding, sharedName);
36
+ const premises = [p, ...(opts.extraAssumptions ?? [])];
37
+ return (0, solver_1.implies)(premises, q, opts);
38
+ }
39
+ //# sourceMappingURL=subtype.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subtype.js","sourceRoot":"","sources":["../../src/refinement-types/subtype.ts"],"names":[],"mappings":";AAAA,+DAA+D;AAC/D,+CAA+C;AAC/C,+DAA+D;AAC/D,EAAE;AACF,cAAc;AACd,yCAAyC;AACzC,sCAAsC;AACtC,EAAE;AACF,8DAA8D;AAC9D,mEAAmE;;AAiBnE,8BAEC;AAhBD,qCAAoD;AACpD,2CAAwC;AAOxC;;;;;GAKG;AACH,SAAgB,SAAS,CAAC,EAAW,EAAE,EAAW,EAAE,OAAoB,EAAE;IACxE,OAAO,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,eAAe,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;AAC5E,CAAC;AAED,SAAS,SAAS,CAAC,EAAY,EAAE,EAAY,EAAE,IAAiB;IAC9D,IAAI,OAAO,EAAE,KAAK,QAAQ,IAAI,OAAO,EAAE,KAAK,QAAQ;QAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IACvE,gDAAgD;IAChD,OAAO,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,SAAS,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;AAC5E,CAAC;AAED,SAAS,eAAe,CAAC,EAAW,EAAE,EAAW,EAAE,IAAiB;IAClE,mEAAmE;IACnE,MAAM,UAAU,GAAG,EAAE,CAAC,OAAO,CAAC;IAC9B,MAAM,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC;IAC7D,MAAM,CAAC,GAAG,IAAA,qBAAS,EAAC,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IAChG,MAAM,QAAQ,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,gBAAgB,IAAI,EAAE,CAAC,CAAC,CAAC;IACvD,OAAO,IAAA,gBAAO,EAAC,QAAQ,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;AACpC,CAAC"}
@@ -0,0 +1,64 @@
1
+ export type BaseType = 'Int' | 'Bool' | 'String' | {
2
+ kind: 'arrow';
3
+ from: RefType;
4
+ to: RefType;
5
+ };
6
+ export interface RefType {
7
+ base: BaseType;
8
+ /** Nombre de la variable de binding usada por el predicado (e.g. "x"). */
9
+ binding: string;
10
+ /** Predicado P(binding); cadena vacía o "true" significa "sin refinamiento". */
11
+ predicate: string;
12
+ }
13
+ export type RTerm = {
14
+ kind: 'lit';
15
+ value: number | boolean | string;
16
+ } | {
17
+ kind: 'var';
18
+ name: string;
19
+ } | {
20
+ kind: 'binop';
21
+ op: '+' | '-' | '*' | '<' | '<=' | '>' | '>=' | '==' | '!=' | '&&' | '||';
22
+ left: RTerm;
23
+ right: RTerm;
24
+ } | {
25
+ kind: 'if';
26
+ cond: RTerm;
27
+ then: RTerm;
28
+ else: RTerm;
29
+ } | {
30
+ kind: 'lam';
31
+ param: string;
32
+ paramType: RefType;
33
+ body: RTerm;
34
+ } | {
35
+ kind: 'app';
36
+ fn: RTerm;
37
+ arg: RTerm;
38
+ } | {
39
+ kind: 'let';
40
+ bind: string;
41
+ bindType?: RefType;
42
+ value: RTerm;
43
+ body: RTerm;
44
+ };
45
+ export declare const tInt: (binding?: string, predicate?: string) => RefType;
46
+ export declare const tBool: (binding?: string, predicate?: string) => RefType;
47
+ export declare const tString: (binding?: string, predicate?: string) => RefType;
48
+ export declare const tArrow: (from: RefType, to: RefType, binding?: string, predicate?: string) => RefType;
49
+ export declare const refine: (base: BaseType, binding: string, predicate: string) => RefType;
50
+ export declare const rLit: (value: number | boolean | string) => RTerm;
51
+ export declare const rVar: (name: string) => RTerm;
52
+ export declare const rBinop: (op: Extract<RTerm, {
53
+ kind: "binop";
54
+ }>["op"], left: RTerm, right: RTerm) => RTerm;
55
+ export declare const rIf: (cond: RTerm, t: RTerm, e: RTerm) => RTerm;
56
+ export declare const rLam: (param: string, paramType: RefType, body: RTerm) => RTerm;
57
+ export declare const rApp: (fn: RTerm, arg: RTerm) => RTerm;
58
+ export declare const rLet: (bind: string, value: RTerm, body: RTerm, bindType?: RefType) => RTerm;
59
+ export declare function eqBase(a: BaseType, b: BaseType): boolean;
60
+ export declare function eqRefType(a: RefType, b: RefType): boolean;
61
+ export declare function baseToString(b: BaseType): string;
62
+ export declare function refTypeToString(t: RefType): string;
63
+ export declare function termToString(t: RTerm): string;
64
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/refinement-types/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,130 @@
1
+ "use strict";
2
+ // ============================================================
3
+ // Refinement types — AST, tipos refinados y términos
4
+ // ============================================================
5
+ //
6
+ // Un tipo refinado expresa { x : B | P(x) } donde:
7
+ // - B es un tipo base (Int / Bool / String / arrow)
8
+ // - x es la variable de binding
9
+ // - P(x) es un predicado escrito como expresión sintáctica
10
+ // (cadenas de la forma "x > 0 && x < 100").
11
+ //
12
+ // El módulo es minimalista (al estilo Liquid Haskell didáctico):
13
+ // el solver de VCs no es Z3 — es un evaluador/SAT-search sobre
14
+ // enteros y booleanos suficiente para los predicados que se
15
+ // construyen en los tests y para casos pequeños de subtipado.
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.rLet = exports.rApp = exports.rLam = exports.rIf = exports.rBinop = exports.rVar = exports.rLit = exports.refine = exports.tArrow = exports.tString = exports.tBool = exports.tInt = void 0;
18
+ exports.eqBase = eqBase;
19
+ exports.eqRefType = eqRefType;
20
+ exports.baseToString = baseToString;
21
+ exports.refTypeToString = refTypeToString;
22
+ exports.termToString = termToString;
23
+ // ---------- Constructores convenientes ----------
24
+ const tInt = (binding = '_v', predicate = 'true') => ({
25
+ base: 'Int',
26
+ binding,
27
+ predicate,
28
+ });
29
+ exports.tInt = tInt;
30
+ const tBool = (binding = '_v', predicate = 'true') => ({
31
+ base: 'Bool',
32
+ binding,
33
+ predicate,
34
+ });
35
+ exports.tBool = tBool;
36
+ const tString = (binding = '_v', predicate = 'true') => ({
37
+ base: 'String',
38
+ binding,
39
+ predicate,
40
+ });
41
+ exports.tString = tString;
42
+ const tArrow = (from, to, binding = '_v', predicate = 'true') => ({
43
+ base: { kind: 'arrow', from, to },
44
+ binding,
45
+ predicate,
46
+ });
47
+ exports.tArrow = tArrow;
48
+ const refine = (base, binding, predicate) => ({
49
+ base,
50
+ binding,
51
+ predicate,
52
+ });
53
+ exports.refine = refine;
54
+ // ---------- Constructores de términos ----------
55
+ const rLit = (value) => ({ kind: 'lit', value });
56
+ exports.rLit = rLit;
57
+ const rVar = (name) => ({ kind: 'var', name });
58
+ exports.rVar = rVar;
59
+ const rBinop = (op, left, right) => ({ kind: 'binop', op, left, right });
60
+ exports.rBinop = rBinop;
61
+ const rIf = (cond, t, e) => ({
62
+ kind: 'if',
63
+ cond,
64
+ then: t,
65
+ else: e,
66
+ });
67
+ exports.rIf = rIf;
68
+ const rLam = (param, paramType, body) => ({
69
+ kind: 'lam',
70
+ param,
71
+ paramType,
72
+ body,
73
+ });
74
+ exports.rLam = rLam;
75
+ const rApp = (fn, arg) => ({ kind: 'app', fn, arg });
76
+ exports.rApp = rApp;
77
+ const rLet = (bind, value, body, bindType) => ({
78
+ kind: 'let',
79
+ bind,
80
+ bindType,
81
+ value,
82
+ body,
83
+ });
84
+ exports.rLet = rLet;
85
+ // ---------- Igualdad estructural de tipos base ----------
86
+ function eqBase(a, b) {
87
+ if (typeof a === 'string' || typeof b === 'string')
88
+ return a === b;
89
+ // both arrows
90
+ return eqRefType(a.from, b.from) && eqRefType(a.to, b.to);
91
+ }
92
+ function eqRefType(a, b) {
93
+ if (!eqBase(a.base, b.base))
94
+ return false;
95
+ // No exigimos la igualdad textual del predicado a este nivel; el chequeo de
96
+ // subtipado se ocupa de la equivalencia semántica (P ↔ Q).
97
+ return true;
98
+ }
99
+ // ---------- Serialización legible ----------
100
+ function baseToString(b) {
101
+ if (typeof b === 'string')
102
+ return b;
103
+ return `(${refTypeToString(b.from)}) -> (${refTypeToString(b.to)})`;
104
+ }
105
+ function refTypeToString(t) {
106
+ const pred = t.predicate.trim();
107
+ if (pred === '' || pred === 'true') {
108
+ return `{ ${t.binding} : ${baseToString(t.base)} }`;
109
+ }
110
+ return `{ ${t.binding} : ${baseToString(t.base)} | ${pred} }`;
111
+ }
112
+ function termToString(t) {
113
+ switch (t.kind) {
114
+ case 'lit':
115
+ return typeof t.value === 'string' ? JSON.stringify(t.value) : String(t.value);
116
+ case 'var':
117
+ return t.name;
118
+ case 'binop':
119
+ return `(${termToString(t.left)} ${t.op} ${termToString(t.right)})`;
120
+ case 'if':
121
+ return `if ${termToString(t.cond)} then ${termToString(t.then)} else ${termToString(t.else)}`;
122
+ case 'lam':
123
+ return `(λ ${t.param} : ${refTypeToString(t.paramType)} . ${termToString(t.body)})`;
124
+ case 'app':
125
+ return `(${termToString(t.fn)} ${termToString(t.arg)})`;
126
+ case 'let':
127
+ return `let ${t.bind}${t.bindType ? ` : ${refTypeToString(t.bindType)}` : ''} = ${termToString(t.value)} in ${termToString(t.body)}`;
128
+ }
129
+ }
130
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/refinement-types/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import type { AntiUnificationResult, FreshSupply, Term } from './types';
2
+ /**
3
+ * Fuente default de variables frescas: _g0, _g1, _g2, …
4
+ *
5
+ * Se devuelve una NUEVA instancia por llamada para evitar estado
6
+ * compartido entre invocaciones de antiUnify.
7
+ */
8
+ export declare function defaultFreshSupply(prefix?: string): FreshSupply;
9
+ /**
10
+ * Anti-unification de dos términos.
11
+ *
12
+ * Devuelve el lgg (least general generalization) junto con las
13
+ * sustituciones de izquierda y derecha que reconstruyen los
14
+ * términos originales.
15
+ *
16
+ * Complejidad: O(|t1| + |t2|) tiempo si la tabla se implementa con
17
+ * hashing O(1). Usamos `termKey` que serializa, así que es
18
+ * O((|t1| + |t2|)·k) donde k es el tamaño del subtérmino más grande
19
+ * que aparezca en un desacuerdo.
20
+ */
21
+ export declare function antiUnify(t1: Term, t2: Term, freshSupply?: FreshSupply): AntiUnificationResult;
22
+ //# sourceMappingURL=anti-unify.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anti-unify.d.ts","sourceRoot":"","sources":["../../../src/runtime/anti-unification/anti-unify.ts"],"names":[],"mappings":"AAyBA,OAAO,KAAK,EAAE,qBAAqB,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAGxE;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,GAAE,MAAa,GAAG,WAAW,CAGrE;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,SAAS,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,CAAC,EAAE,WAAW,GAAG,qBAAqB,CAc9F"}
@@ -0,0 +1,154 @@
1
+ "use strict";
2
+ // ============================================================
3
+ // ST Anti-Unification — Algoritmo de Plotkin (lgg)
4
+ // ============================================================
5
+ //
6
+ // Algoritmo (Plotkin 1970):
7
+ //
8
+ // au(t1, t2, table):
9
+ // si t1 ≡ t2 estructuralmente:
10
+ // return t1
11
+ // si ambos son func/const con mismo nombre y misma aridad:
12
+ // return func(name, [au(t1.args[i], t2.args[i]) for i])
13
+ // // desacuerdo: introducimos fresh var, reusando si ya existe
14
+ // // una asignada al MISMO par (t1, t2) — esto es clave para que
15
+ // // la generalización sea LEAST (most specific).
16
+ // si table tiene (t1, t2) → v entonces return v
17
+ // v := freshSupply()
18
+ // table[(t1, t2)] := v
19
+ // return v
20
+ //
21
+ // La tabla de correspondencias se mantiene globalmente durante la
22
+ // recursión para que múltiples ocurrencias del mismo desacuerdo
23
+ // reciban la misma fresh var. Sin esta tabla obtendríamos una
24
+ // generalización menos específica (e.g., au(p(a,a), p(b,b)) daría
25
+ // p(X, Y) en vez de p(X, X)).
26
+ Object.defineProperty(exports, "__esModule", { value: true });
27
+ exports.defaultFreshSupply = defaultFreshSupply;
28
+ exports.antiUnify = antiUnify;
29
+ const term_utils_1 = require("./term-utils");
30
+ /**
31
+ * Fuente default de variables frescas: _g0, _g1, _g2, …
32
+ *
33
+ * Se devuelve una NUEVA instancia por llamada para evitar estado
34
+ * compartido entre invocaciones de antiUnify.
35
+ */
36
+ function defaultFreshSupply(prefix = '_g') {
37
+ let counter = 0;
38
+ return () => `${prefix}${counter++}`;
39
+ }
40
+ /**
41
+ * Anti-unification de dos términos.
42
+ *
43
+ * Devuelve el lgg (least general generalization) junto con las
44
+ * sustituciones de izquierda y derecha que reconstruyen los
45
+ * términos originales.
46
+ *
47
+ * Complejidad: O(|t1| + |t2|) tiempo si la tabla se implementa con
48
+ * hashing O(1). Usamos `termKey` que serializa, así que es
49
+ * O((|t1| + |t2|)·k) donde k es el tamaño del subtérmino más grande
50
+ * que aparezca en un desacuerdo.
51
+ */
52
+ function antiUnify(t1, t2, freshSupply) {
53
+ const supply = freshSupply ?? defaultFreshSupply();
54
+ // Tabla de desacuerdos: clave canónica "t1║t2" → nombre de var fresca.
55
+ const table = new Map();
56
+ // Sustituciones de salida: para cada fresh var, qué término iba en
57
+ // cada lado.
58
+ const substLeft = new Map();
59
+ const substRight = new Map();
60
+ // Orden de introducción de las fresh vars (para `variables`).
61
+ const variables = [];
62
+ const generalization = antiUnifyAux(t1, t2, table, substLeft, substRight, variables, supply);
63
+ return { generalization, substLeft, substRight, variables };
64
+ }
65
+ /**
66
+ * Núcleo recursivo del algoritmo. Se mantiene recursivo (no iterativo)
67
+ * porque la mayoría de términos en la práctica son superficiales y la
68
+ * recursión sigue la estructura del término más pequeño.
69
+ *
70
+ * Si en algún momento aparecen términos patológicamente profundos,
71
+ * habría que reescribirlo con un stack explícito siguiendo el patrón
72
+ * de `mapTerm` en term-rewriting/term-utils.ts.
73
+ */
74
+ function antiUnifyAux(t1, t2, table, substLeft, substRight, variables, supply) {
75
+ // Caso base: estructuralmente iguales → la generalización es el
76
+ // término mismo, sin nuevas variables.
77
+ if ((0, term_utils_1.termEquals)(t1, t2))
78
+ return t1;
79
+ // Misma "cabeza" (mismo símbolo, misma aridad, mismo kind func/const)
80
+ // → recursamos argumento a argumento.
81
+ if (sameHead(t1, t2)) {
82
+ const args1 = t1.args ?? [];
83
+ const args2 = t2.args ?? [];
84
+ // sameHead garantiza aridad igual.
85
+ const newArgs = new Array(args1.length);
86
+ for (let i = 0; i < args1.length; i++) {
87
+ const a1 = args1[i];
88
+ const a2 = args2[i];
89
+ if (a1 === undefined || a2 === undefined) {
90
+ // Imposible si sameHead pasó, pero el chequeo apacigua a TS
91
+ // bajo noUncheckedIndexedAccess.
92
+ throw new Error('antiUnify: aridad inconsistente tras sameHead check');
93
+ }
94
+ newArgs[i] = antiUnifyAux(a1, a2, table, substLeft, substRight, variables, supply);
95
+ }
96
+ if (t1.kind === 'const') {
97
+ // const con args=[] ya cayó en termEquals; si llegamos aquí con
98
+ // kind=const es porque ambos tienen mismo nombre y 0 args, lo
99
+ // que ya implicaría termEquals=true. Defensa por si llega un
100
+ // const con args>0 mal construido.
101
+ return { kind: 'const', name: t1.name };
102
+ }
103
+ return { kind: 'func', name: t1.name, args: newArgs };
104
+ }
105
+ // Desacuerdo: pares distintos. Reutilizamos la fresh var si ya
106
+ // habíamos visto este par; de lo contrario generamos una nueva.
107
+ const key = pairKey(t1, t2);
108
+ const existing = table.get(key);
109
+ if (existing !== undefined) {
110
+ return { kind: 'var', name: existing };
111
+ }
112
+ const fresh = supply();
113
+ table.set(key, fresh);
114
+ substLeft.set(fresh, t1);
115
+ substRight.set(fresh, t2);
116
+ variables.push(fresh);
117
+ return { kind: 'var', name: fresh };
118
+ }
119
+ /**
120
+ * ¿t1 y t2 comparten la misma "cabeza" (símbolo + aridad + kind no-var)?
121
+ *
122
+ * Variables NUNCA tienen cabeza común con otra cosa: el caso `var, var`
123
+ * con mismos nombres ya lo absorbe `termEquals` arriba; con nombres
124
+ * distintos es un desacuerdo legítimo. Un `var` contra `func/const`
125
+ * también es desacuerdo (la variable es más general).
126
+ */
127
+ function sameHead(t1, t2) {
128
+ if (t1.kind === 'var' || t2.kind === 'var')
129
+ return false;
130
+ // Tratamos const como func(name, []) para comparar aridad.
131
+ if (t1.name !== t2.name)
132
+ return false;
133
+ const a1 = t1.args ?? [];
134
+ const a2 = t2.args ?? [];
135
+ if (a1.length !== a2.length)
136
+ return false;
137
+ // Si los kinds difieren (func vs const) pero la aridad es 0 y los
138
+ // nombres coinciden, todavía lo aceptamos como "misma cabeza" para
139
+ // ser tolerantes con clientes que mezclen ambas convenciones.
140
+ // Pero antes de aceptar, exigimos que si difieren los kinds, la
141
+ // aridad sea 0 — un `const` con args no debería existir.
142
+ if (t1.kind !== t2.kind && a1.length > 0)
143
+ return false;
144
+ return true;
145
+ }
146
+ /**
147
+ * Clave canónica para un par (t1, t2) usada en la tabla de
148
+ * desacuerdos. Usamos un separador que no puede aparecer en
149
+ * `termKey` para evitar colisiones.
150
+ */
151
+ function pairKey(t1, t2) {
152
+ return `${(0, term_utils_1.termKey)(t1)}║${(0, term_utils_1.termKey)(t2)}`;
153
+ }
154
+ //# sourceMappingURL=anti-unify.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anti-unify.js","sourceRoot":"","sources":["../../../src/runtime/anti-unification/anti-unify.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export type { Term, AntiUnificationResult, FreshSupply } from './types';
2
+ export { antiUnify, defaultFreshSupply } from './anti-unify';
3
+ export { termEquals, termKey, varsOf, applySubst, termSize, v, f, c } from './term-utils';
4
+ export { antiUnifyMany, antiUnifyManyDetailed, generalizationOrder } from './many';
5
+ export type { AntiUnificationManyResult } from './many';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/runtime/anti-unification/index.ts"],"names":[],"mappings":"AAIA,YAAY,EAAE,IAAI,EAAE,qBAAqB,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAExE,OAAO,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAE7D,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,cAAc,CAAC;AAE1F,OAAO,EAAE,aAAa,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,QAAQ,CAAC;AAEnF,YAAY,EAAE,yBAAyB,EAAE,MAAM,QAAQ,CAAC"}
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ // ============================================================
3
+ // ST Anti-Unification — Barrel de exportaciones
4
+ // ============================================================
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.generalizationOrder = exports.antiUnifyManyDetailed = exports.antiUnifyMany = exports.c = exports.f = exports.v = exports.termSize = exports.applySubst = exports.varsOf = exports.termKey = exports.termEquals = exports.defaultFreshSupply = exports.antiUnify = void 0;
7
+ var anti_unify_1 = require("./anti-unify");
8
+ Object.defineProperty(exports, "antiUnify", { enumerable: true, get: function () { return anti_unify_1.antiUnify; } });
9
+ Object.defineProperty(exports, "defaultFreshSupply", { enumerable: true, get: function () { return anti_unify_1.defaultFreshSupply; } });
10
+ var term_utils_1 = require("./term-utils");
11
+ Object.defineProperty(exports, "termEquals", { enumerable: true, get: function () { return term_utils_1.termEquals; } });
12
+ Object.defineProperty(exports, "termKey", { enumerable: true, get: function () { return term_utils_1.termKey; } });
13
+ Object.defineProperty(exports, "varsOf", { enumerable: true, get: function () { return term_utils_1.varsOf; } });
14
+ Object.defineProperty(exports, "applySubst", { enumerable: true, get: function () { return term_utils_1.applySubst; } });
15
+ Object.defineProperty(exports, "termSize", { enumerable: true, get: function () { return term_utils_1.termSize; } });
16
+ Object.defineProperty(exports, "v", { enumerable: true, get: function () { return term_utils_1.v; } });
17
+ Object.defineProperty(exports, "f", { enumerable: true, get: function () { return term_utils_1.f; } });
18
+ Object.defineProperty(exports, "c", { enumerable: true, get: function () { return term_utils_1.c; } });
19
+ var many_1 = require("./many");
20
+ Object.defineProperty(exports, "antiUnifyMany", { enumerable: true, get: function () { return many_1.antiUnifyMany; } });
21
+ Object.defineProperty(exports, "antiUnifyManyDetailed", { enumerable: true, get: function () { return many_1.antiUnifyManyDetailed; } });
22
+ Object.defineProperty(exports, "generalizationOrder", { enumerable: true, get: function () { return many_1.generalizationOrder; } });
23
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/runtime/anti-unification/index.ts"],"names":[],"mappings":";AAAA,+DAA+D;AAC/D,gDAAgD;AAChD,+DAA+D;;;AAI/D,2CAA6D;AAApD,uGAAA,SAAS,OAAA;AAAE,gHAAA,kBAAkB,OAAA;AAEtC,2CAA0F;AAAjF,wGAAA,UAAU,OAAA;AAAE,qGAAA,OAAO,OAAA;AAAE,oGAAA,MAAM,OAAA;AAAE,wGAAA,UAAU,OAAA;AAAE,sGAAA,QAAQ,OAAA;AAAE,+FAAA,CAAC,OAAA;AAAE,+FAAA,CAAC,OAAA;AAAE,+FAAA,CAAC,OAAA;AAEnE,+BAAmF;AAA1E,qGAAA,aAAa,OAAA;AAAE,6GAAA,qBAAqB,OAAA;AAAE,2GAAA,mBAAmB,OAAA"}
@@ -0,0 +1,49 @@
1
+ import type { AntiUnificationResult, FreshSupply, Term } from './types';
2
+ import { applySubst } from './term-utils';
3
+ /**
4
+ * Variante "detailed" del n-way lgg.
5
+ *
6
+ * Devuelve la generalización y un array `substs` de longitud n tal
7
+ * que substs[i] aplicada al generalization reproduce el término i.
8
+ */
9
+ export interface AntiUnificationManyResult {
10
+ generalization: Term;
11
+ substs: Map<string, Term>[];
12
+ variables: string[];
13
+ }
14
+ /**
15
+ * Anti-unification n-aria. Reduce con la versión binaria.
16
+ *
17
+ * Para n=0 lanza error (no hay generalización sensata).
18
+ * Para n=1 devuelve el término sin variables nuevas.
19
+ */
20
+ export declare function antiUnifyMany(terms: Term[], freshSupply?: FreshSupply): AntiUnificationResult;
21
+ /**
22
+ * Versión "detailed" — devuelve las n sustituciones independientes.
23
+ *
24
+ * Esta es la forma más útil para clientes que quieren ver cómo se
25
+ * instancia cada uno de los n términos desde la generalización.
26
+ */
27
+ export declare function antiUnifyManyDetailed(terms: Term[], freshSupply?: FreshSupply): AntiUnificationManyResult;
28
+ /**
29
+ * Orden de generalidad entre dos términos.
30
+ *
31
+ * Definición: g1 ≤ g2 ⇔ existe sustitución σ con σ(g1) = g2.
32
+ * Es decir, g1 es MÁS GENERAL que g2 (g2 es una instancia de g1).
33
+ *
34
+ * Resultados:
35
+ * - -1 si g1 es ESTRICTAMENTE más general que g2 (g1 < g2 en
36
+ * generalidad inversa — equivalente: σ(g1)=g2 pero no
37
+ * σ'(g2)=g1).
38
+ * - 0 si son equivalentes módulo renombre (cada uno instancia
39
+ * del otro vía sustitución de variables).
40
+ * - +1 si g2 es estrictamente más general que g1.
41
+ * - null si son INCOMPARABLES (no hay σ en ningún sentido).
42
+ *
43
+ * Nota: la convención del usuario en la spec es
44
+ * generalizationOrder(X, f(X)) → -1 (X más general).
45
+ * Esto es coherente: X es más general que f(X), y devolvemos -1.
46
+ */
47
+ export declare function generalizationOrder(g1: Term, g2: Term): -1 | 0 | 1 | null;
48
+ export { applySubst };
49
+ //# sourceMappingURL=many.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"many.d.ts","sourceRoot":"","sources":["../../../src/runtime/anti-unification/many.ts"],"names":[],"mappings":"AA0BA,OAAO,KAAK,EAAE,qBAAqB,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAExE,OAAO,EAAE,UAAU,EAAsB,MAAM,cAAc,CAAC;AAE9D;;;;;GAKG;AACH,MAAM,WAAW,yBAAyB;IACxC,cAAc,EAAE,IAAI,CAAC;IACrB,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC;IAC5B,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,WAAW,CAAC,EAAE,WAAW,GAAG,qBAAqB,CAyC7F;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,IAAI,EAAE,EACb,WAAW,CAAC,EAAE,WAAW,GACxB,yBAAyB,CAoB3B;AAyCD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAazE;AAID,OAAO,EAAE,UAAU,EAAE,CAAC"}