@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,185 @@
1
+ "use strict";
2
+ // ============================================================
3
+ // ST Anti-Unification — n-way lgg
4
+ // ============================================================
5
+ //
6
+ // La anti-unification se generaliza a n términos plegando con la
7
+ // versión binaria:
8
+ //
9
+ // lgg(t1, t2, ..., tn) = lgg(lgg(...lgg(t1, t2)..., tn-1), tn)
10
+ //
11
+ // Plotkin demostró que lgg es asociativo y conmutativo módulo
12
+ // renombre de variables: el orden del pliegue no cambia la
13
+ // generalización resultante (salvo nombres de variables).
14
+ //
15
+ // Sin embargo, las substLeft/substRight intermedias acumulan
16
+ // información, así que para el resultado n-ario devolvemos:
17
+ //
18
+ // - generalization: el lgg de los n términos.
19
+ // - variables: las fresh vars introducidas.
20
+ // - substLeft, substRight: aquí pierden sentido binario; en el
21
+ // resultado n-ario los reusamos para el PRIMER y ÚLTIMO término
22
+ // respectivamente. Para acceso completo, los clientes deberían
23
+ // re-derivar `match(generalization, ti)` para cada i.
24
+ //
25
+ // Para conservar acceso completo a las n sustituciones, exponemos
26
+ // también `antiUnifyManyDetailed` que devuelve un array de mapas.
27
+ Object.defineProperty(exports, "__esModule", { value: true });
28
+ exports.applySubst = void 0;
29
+ exports.antiUnifyMany = antiUnifyMany;
30
+ exports.antiUnifyManyDetailed = antiUnifyManyDetailed;
31
+ exports.generalizationOrder = generalizationOrder;
32
+ const anti_unify_1 = require("./anti-unify");
33
+ const term_utils_1 = require("./term-utils");
34
+ Object.defineProperty(exports, "applySubst", { enumerable: true, get: function () { return term_utils_1.applySubst; } });
35
+ /**
36
+ * Anti-unification n-aria. Reduce con la versión binaria.
37
+ *
38
+ * Para n=0 lanza error (no hay generalización sensata).
39
+ * Para n=1 devuelve el término sin variables nuevas.
40
+ */
41
+ function antiUnifyMany(terms, freshSupply) {
42
+ if (terms.length === 0) {
43
+ throw new Error('antiUnifyMany: array vacío, no hay lgg');
44
+ }
45
+ const supply = freshSupply ?? (0, anti_unify_1.defaultFreshSupply)();
46
+ const first = terms[0];
47
+ if (first === undefined) {
48
+ throw new Error('antiUnifyMany: índice 0 indefinido');
49
+ }
50
+ if (terms.length === 1) {
51
+ return {
52
+ generalization: first,
53
+ substLeft: new Map(),
54
+ substRight: new Map(),
55
+ variables: [],
56
+ };
57
+ }
58
+ // Pliegue izquierdo binario. Reusamos el mismo supply para que
59
+ // las fresh vars tengan numeración monótona.
60
+ let acc = (0, anti_unify_1.antiUnify)(first, terms[1], supply);
61
+ for (let i = 2; i < terms.length; i++) {
62
+ const ti = terms[i];
63
+ if (ti === undefined) {
64
+ throw new Error(`antiUnifyMany: índice ${i} indefinido`);
65
+ }
66
+ const next = (0, anti_unify_1.antiUnify)(acc.generalization, ti, supply);
67
+ acc = {
68
+ generalization: next.generalization,
69
+ substLeft: acc.substLeft, // del primer término — se preserva semántica original.
70
+ substRight: next.substRight, // del último término.
71
+ variables: next.variables,
72
+ };
73
+ }
74
+ // `variables` de acc puede no incluir las vars de pasos anteriores
75
+ // que sobrevivieron en la generalización final. Re-derivamos desde
76
+ // las vars que aparecen en `acc.generalization`.
77
+ const vars = Array.from((0, term_utils_1.varsOf)(acc.generalization));
78
+ return { ...acc, variables: vars };
79
+ }
80
+ /**
81
+ * Versión "detailed" — devuelve las n sustituciones independientes.
82
+ *
83
+ * Esta es la forma más útil para clientes que quieren ver cómo se
84
+ * instancia cada uno de los n términos desde la generalización.
85
+ */
86
+ function antiUnifyManyDetailed(terms, freshSupply) {
87
+ const lgg = antiUnifyMany(terms, freshSupply);
88
+ const substs = [];
89
+ // Para cada término ti, hacemos matching de la generalización
90
+ // contra ti. La generalización siempre matchea (es el lgg) y la
91
+ // sustitución es única.
92
+ for (const ti of terms) {
93
+ const m = matchGeneralization(lgg.generalization, ti);
94
+ if (m === null) {
95
+ // Inconsistencia: no debería ocurrir si antiUnifyMany es
96
+ // correcto. Lanzamos para no esconder bugs.
97
+ throw new Error('antiUnifyManyDetailed: matching de la generalización falló (bug interno)');
98
+ }
99
+ substs.push(m);
100
+ }
101
+ return {
102
+ generalization: lgg.generalization,
103
+ substs,
104
+ variables: lgg.variables,
105
+ };
106
+ }
107
+ /**
108
+ * Matching unidireccional: σ(pattern) = target. Variables del
109
+ * pattern se ligan; el target se trata como término concreto.
110
+ *
111
+ * Es una versión local porque term-utils del módulo no exporta
112
+ * matching (lo evitamos para no duplicar el módulo de unify).
113
+ */
114
+ function matchGeneralization(pattern, target) {
115
+ const subst = new Map();
116
+ const stack = [[pattern, target]];
117
+ while (stack.length > 0) {
118
+ const pair = stack.pop();
119
+ if (pair === undefined)
120
+ break;
121
+ const [p, q] = pair;
122
+ if (p.kind === 'var') {
123
+ const existing = subst.get(p.name);
124
+ if (existing !== undefined) {
125
+ if (!(0, term_utils_1.termEquals)(existing, q))
126
+ return null;
127
+ continue;
128
+ }
129
+ subst.set(p.name, q);
130
+ continue;
131
+ }
132
+ // p es func o const; q debe ser del mismo "head".
133
+ if (q.kind === 'var')
134
+ return null;
135
+ if (p.name !== q.name)
136
+ return null;
137
+ const pa = p.args ?? [];
138
+ const qa = q.args ?? [];
139
+ if (pa.length !== qa.length)
140
+ return null;
141
+ for (let i = 0; i < pa.length; i++) {
142
+ const pi = pa[i];
143
+ const qi = qa[i];
144
+ if (pi === undefined || qi === undefined)
145
+ return null;
146
+ stack.push([pi, qi]);
147
+ }
148
+ }
149
+ return subst;
150
+ }
151
+ /**
152
+ * Orden de generalidad entre dos términos.
153
+ *
154
+ * Definición: g1 ≤ g2 ⇔ existe sustitución σ con σ(g1) = g2.
155
+ * Es decir, g1 es MÁS GENERAL que g2 (g2 es una instancia de g1).
156
+ *
157
+ * Resultados:
158
+ * - -1 si g1 es ESTRICTAMENTE más general que g2 (g1 < g2 en
159
+ * generalidad inversa — equivalente: σ(g1)=g2 pero no
160
+ * σ'(g2)=g1).
161
+ * - 0 si son equivalentes módulo renombre (cada uno instancia
162
+ * del otro vía sustitución de variables).
163
+ * - +1 si g2 es estrictamente más general que g1.
164
+ * - null si son INCOMPARABLES (no hay σ en ningún sentido).
165
+ *
166
+ * Nota: la convención del usuario en la spec es
167
+ * generalizationOrder(X, f(X)) → -1 (X más general).
168
+ * Esto es coherente: X es más general que f(X), y devolvemos -1.
169
+ */
170
+ function generalizationOrder(g1, g2) {
171
+ const sigma12 = matchGeneralization(g1, g2); // g1 → g2 ?
172
+ const sigma21 = matchGeneralization(g2, g1); // g2 → g1 ?
173
+ if (sigma12 !== null && sigma21 !== null)
174
+ return 0;
175
+ if (sigma12 !== null) {
176
+ // σ(g1) = g2; ahora distingue si es un renombre puro (igualdad
177
+ // módulo nombres) o una instanciación estricta. Como sigma21 es
178
+ // null, no es renombre — es estricta.
179
+ return -1;
180
+ }
181
+ if (sigma21 !== null)
182
+ return 1;
183
+ return null;
184
+ }
185
+ //# sourceMappingURL=many.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"many.js","sourceRoot":"","sources":["../../../src/runtime/anti-unification/many.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ import type { Term } from './types';
2
+ /**
3
+ * Igualdad estructural de términos (iterativa, soporta árboles
4
+ * profundos sin stack overflow).
5
+ *
6
+ * Tolera la dualidad const/func-con-args=[]: un `const a` y un
7
+ * `func a` con args=[] cuentan como iguales para no penalizar al
8
+ * cliente que mezcle ambas convenciones.
9
+ */
10
+ export declare function termEquals(a: Term, b: Term): boolean;
11
+ /**
12
+ * Serialización canónica de un término. Usada para comparar pares
13
+ * (t1, t2) en la tabla de desacuerdos del algoritmo de Plotkin.
14
+ *
15
+ * Usa caracteres no-alfanuméricos como separadores para evitar
16
+ * ambigüedades con nombres que contengan paréntesis o comas.
17
+ */
18
+ export declare function termKey(t: Term): string;
19
+ /**
20
+ * Conjunto de variables que aparecen en t (iterativo).
21
+ */
22
+ export declare function varsOf(t: Term, acc?: Set<string>): Set<string>;
23
+ /**
24
+ * Aplica una sustitución a un término (no compone cadenas — la
25
+ * sustitución es plana, no recursiva, porque las generadas por
26
+ * antiUnify son siempre con vars frescas a la izquierda y términos
27
+ * cerrados-respecto-a-vars-frescas a la derecha).
28
+ */
29
+ export declare function applySubst(t: Term, subst: Map<string, Term>): Term;
30
+ /**
31
+ * Tamaño del término (cantidad de nodos).
32
+ */
33
+ export declare function termSize(t: Term): number;
34
+ /** Variable. */
35
+ export declare function v(name: string): Term;
36
+ /** Constante (sin args). */
37
+ export declare function c(name: string): Term;
38
+ /** Aplicación de función. */
39
+ export declare function f(name: string, ...args: Term[]): Term;
40
+ //# sourceMappingURL=term-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"term-utils.d.ts","sourceRoot":"","sources":["../../../src/runtime/anti-unification/term-utils.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAEpC;;;;;;;GAOG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,GAAG,OAAO,CAyBpD;AAED;;;;;;GAMG;AACH,wBAAgB,OAAO,CAAC,CAAC,EAAE,IAAI,GAAG,MAAM,CAcvC;AAsBD;;GAEG;AACH,wBAAgB,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,GAAE,GAAG,CAAC,MAAM,CAAa,GAAG,GAAG,CAAC,MAAM,CAAC,CAYzE;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,IAAI,CAiBlE;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EAAE,IAAI,GAAG,MAAM,CAMxC;AAMD,gBAAgB;AAChB,wBAAgB,CAAC,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAEpC;AAED,4BAA4B;AAC5B,wBAAgB,CAAC,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAEpC;AAED,6BAA6B;AAC7B,wBAAgB,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,CAErD"}
@@ -0,0 +1,173 @@
1
+ "use strict";
2
+ // ============================================================
3
+ // ST Anti-Unification — Utilidades de términos
4
+ // ============================================================
5
+ //
6
+ // Helpers locales al módulo de anti-unification. Se mantienen
7
+ // separados de term-rewriting/term-utils porque el shape de Term
8
+ // es distinto (admite `kind: 'const'` con `args?` opcional).
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.termEquals = termEquals;
11
+ exports.termKey = termKey;
12
+ exports.varsOf = varsOf;
13
+ exports.applySubst = applySubst;
14
+ exports.termSize = termSize;
15
+ exports.v = v;
16
+ exports.c = c;
17
+ exports.f = f;
18
+ /**
19
+ * Igualdad estructural de términos (iterativa, soporta árboles
20
+ * profundos sin stack overflow).
21
+ *
22
+ * Tolera la dualidad const/func-con-args=[]: un `const a` y un
23
+ * `func a` con args=[] cuentan como iguales para no penalizar al
24
+ * cliente que mezcle ambas convenciones.
25
+ */
26
+ function termEquals(a, b) {
27
+ const stack = [[a, b]];
28
+ while (stack.length > 0) {
29
+ const pair = stack.pop();
30
+ if (pair === undefined)
31
+ break;
32
+ const [x, y] = pair;
33
+ // Variables: igualdad por nombre.
34
+ if (x.kind === 'var' || y.kind === 'var') {
35
+ if (x.kind !== y.kind)
36
+ return false;
37
+ if (x.name !== y.name)
38
+ return false;
39
+ continue;
40
+ }
41
+ // func/const con mismo nombre y misma aridad.
42
+ if (x.name !== y.name)
43
+ return false;
44
+ const xa = x.args ?? [];
45
+ const ya = y.args ?? [];
46
+ if (xa.length !== ya.length)
47
+ return false;
48
+ for (let i = 0; i < xa.length; i++) {
49
+ const xi = xa[i];
50
+ const yi = ya[i];
51
+ if (xi === undefined || yi === undefined)
52
+ return false;
53
+ stack.push([xi, yi]);
54
+ }
55
+ }
56
+ return true;
57
+ }
58
+ /**
59
+ * Serialización canónica de un término. Usada para comparar pares
60
+ * (t1, t2) en la tabla de desacuerdos del algoritmo de Plotkin.
61
+ *
62
+ * Usa caracteres no-alfanuméricos como separadores para evitar
63
+ * ambigüedades con nombres que contengan paréntesis o comas.
64
+ */
65
+ function termKey(t) {
66
+ // Iterativo con encoding postorden simple. Para términos típicos
67
+ // el costo es lineal en el tamaño del término.
68
+ const out = [];
69
+ walkPreorder(t, (node) => {
70
+ if (node.kind === 'var') {
71
+ out.push(`§v⟨${node.name}⟩`);
72
+ }
73
+ else if (node.kind === 'const') {
74
+ out.push(`§c⟨${node.name}⟩`);
75
+ }
76
+ else {
77
+ out.push(`§f⟨${node.name}/${(node.args ?? []).length}⟩`);
78
+ }
79
+ });
80
+ return out.join('');
81
+ }
82
+ /**
83
+ * Recorrido preorden iterativo de un término.
84
+ */
85
+ function walkPreorder(t, visit) {
86
+ const stack = [t];
87
+ while (stack.length > 0) {
88
+ const node = stack.pop();
89
+ if (node === undefined)
90
+ break;
91
+ visit(node);
92
+ if (node.kind === 'func') {
93
+ const args = node.args ?? [];
94
+ // Push en orden inverso para que el recorrido salga izq→der.
95
+ for (let i = args.length - 1; i >= 0; i--) {
96
+ const a = args[i];
97
+ if (a !== undefined)
98
+ stack.push(a);
99
+ }
100
+ }
101
+ }
102
+ }
103
+ /**
104
+ * Conjunto de variables que aparecen en t (iterativo).
105
+ */
106
+ function varsOf(t, acc = new Set()) {
107
+ const stack = [t];
108
+ while (stack.length > 0) {
109
+ const node = stack.pop();
110
+ if (node === undefined)
111
+ break;
112
+ if (node.kind === 'var') {
113
+ acc.add(node.name);
114
+ }
115
+ else if (node.kind === 'func') {
116
+ for (const a of node.args ?? [])
117
+ stack.push(a);
118
+ }
119
+ }
120
+ return acc;
121
+ }
122
+ /**
123
+ * Aplica una sustitución a un término (no compone cadenas — la
124
+ * sustitución es plana, no recursiva, porque las generadas por
125
+ * antiUnify son siempre con vars frescas a la izquierda y términos
126
+ * cerrados-respecto-a-vars-frescas a la derecha).
127
+ */
128
+ function applySubst(t, subst) {
129
+ if (t.kind === 'var') {
130
+ const bound = subst.get(t.name);
131
+ if (bound === undefined)
132
+ return t;
133
+ return bound;
134
+ }
135
+ if (t.kind === 'const')
136
+ return t;
137
+ const args = t.args ?? [];
138
+ const newArgs = new Array(args.length);
139
+ for (let i = 0; i < args.length; i++) {
140
+ const a = args[i];
141
+ if (a === undefined) {
142
+ throw new Error('applySubst: arg undefined en términos func');
143
+ }
144
+ newArgs[i] = applySubst(a, subst);
145
+ }
146
+ return { kind: 'func', name: t.name, args: newArgs };
147
+ }
148
+ /**
149
+ * Tamaño del término (cantidad de nodos).
150
+ */
151
+ function termSize(t) {
152
+ let n = 0;
153
+ walkPreorder(t, () => {
154
+ n++;
155
+ });
156
+ return n;
157
+ }
158
+ // ---------------------------------------------------------------
159
+ // Constructores azúcar para tests y uso directo.
160
+ // ---------------------------------------------------------------
161
+ /** Variable. */
162
+ function v(name) {
163
+ return { kind: 'var', name };
164
+ }
165
+ /** Constante (sin args). */
166
+ function c(name) {
167
+ return { kind: 'const', name };
168
+ }
169
+ /** Aplicación de función. */
170
+ function f(name, ...args) {
171
+ return { kind: 'func', name, args };
172
+ }
173
+ //# sourceMappingURL=term-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"term-utils.js","sourceRoot":"","sources":["../../../src/runtime/anti-unification/term-utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Término de primer orden para anti-unification.
3
+ *
4
+ * - `var`: variable de unificación.
5
+ * - `func`: símbolo de función con aridad implícita por len(args).
6
+ * - `const`: constante (sin args). Equivalente a `func` con args=[]
7
+ * pero distinguible sintácticamente.
8
+ */
9
+ export interface Term {
10
+ kind: 'var' | 'func' | 'const';
11
+ name: string;
12
+ args?: Term[];
13
+ }
14
+ /**
15
+ * Resultado de anti-unification.
16
+ *
17
+ * - `generalization`: el lgg (least general generalization) — el
18
+ * término más específico tal que ambos t1 y t2 son instancias.
19
+ * - `substLeft`: σ_L tal que σ_L(generalization) = t1.
20
+ * - `substRight`: σ_R tal que σ_R(generalization) = t2.
21
+ * - `variables`: variables frescas introducidas en `generalization`
22
+ * por desacuerdos (en orden de aparición).
23
+ *
24
+ * Invariante: para toda v ∈ variables, substLeft.get(v) y
25
+ * substRight.get(v) están definidas y son distintas estructuralmente
26
+ * (si fueran iguales, no habría hecho falta introducir la fresh var).
27
+ */
28
+ export interface AntiUnificationResult {
29
+ generalization: Term;
30
+ substLeft: Map<string, Term>;
31
+ substRight: Map<string, Term>;
32
+ variables: string[];
33
+ }
34
+ /**
35
+ * Fuente de variables frescas. Una función que cada vez que se
36
+ * invoca devuelve un nombre nuevo (no usado previamente).
37
+ *
38
+ * Default (cuando no se pasa): genera `_g0`, `_g1`, `_g2`, …
39
+ */
40
+ export type FreshSupply = () => string;
41
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/runtime/anti-unification/types.ts"],"names":[],"mappings":"AAwBA;;;;;;;GAOG;AACH,MAAM,WAAW,IAAI;IACnB,IAAI,EAAE,KAAK,GAAG,MAAM,GAAG,OAAO,CAAC;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC;CACf;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,qBAAqB;IACpC,cAAc,EAAE,IAAI,CAAC;IACrB,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC7B,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC9B,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAED;;;;;GAKG;AACH,MAAM,MAAM,WAAW,GAAG,MAAM,MAAM,CAAC"}
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ // ============================================================
3
+ // ST Anti-Unification — Tipos públicos
4
+ // ============================================================
5
+ //
6
+ // Anti-unification (también: lgg = least general generalization,
7
+ // most-specific generalization) es el dual de la unificación.
8
+ //
9
+ // Dados dos términos t1, t2, calcula el TERM más específico g
10
+ // tal que existen sustituciones σ1, σ2 con:
11
+ //
12
+ // σ1(g) = t1 y σ2(g) = t2
13
+ //
14
+ // Aplicaciones:
15
+ // - Machine learning de patrones (Plotkin 1970, Reynolds 1970).
16
+ // - Descubrimiento de generalizations en demostraciones.
17
+ // - Inducción por ejemplo en programación lógica.
18
+ // - Síntesis de lemas en sistemas de prueba.
19
+ //
20
+ // La firma del módulo usa un Term ligeramente más expresivo que
21
+ // term-rewriting/types.ts: admite `const` explícitamente además
22
+ // de `var` y `func`. En la práctica `const` es azúcar para `func`
23
+ // con `args: []`, pero se mantiene como kind separado por claridad
24
+ // pedagógica (el módulo es referenciado desde ejemplos educativos).
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/runtime/anti-unification/types.ts"],"names":[],"mappings":";AAAA,+DAA+D;AAC/D,uCAAuC;AACvC,+DAA+D;AAC/D,EAAE;AACF,iEAAiE;AACjE,8DAA8D;AAC9D,EAAE;AACF,8DAA8D;AAC9D,4CAA4C;AAC5C,EAAE;AACF,sCAAsC;AACtC,EAAE;AACF,gBAAgB;AAChB,kEAAkE;AAClE,2DAA2D;AAC3D,oDAAoD;AACpD,+CAA+C;AAC/C,EAAE;AACF,gEAAgE;AAChE,gEAAgE;AAChE,kEAAkE;AAClE,mEAAmE;AACnE,oEAAoE"}
@@ -0,0 +1,20 @@
1
+ import type { CSP } from './types';
2
+ /**
3
+ * Aplica AC-3 sobre una copia de los dominios del CSP.
4
+ * Devuelve { consistent, reducedDomains }: si `consistent` es false,
5
+ * el CSP es UNSAT por consistencia de arco (algún dominio quedó vacío).
6
+ *
7
+ * La firma deja los dominios originales intactos: el caller decide si
8
+ * adoptar `reducedDomains` o conservar los originales.
9
+ */
10
+ export declare function ac3<V, D>(csp: CSP<V, D>): {
11
+ consistent: boolean;
12
+ reducedDomains: Map<V, D[]>;
13
+ };
14
+ /**
15
+ * Helper público para uso en backtracking incremental: aplica AC-3
16
+ * sobre un set de dominios ya provisto (mutación in-place permitida)
17
+ * y devuelve `true` si los dominios siguen consistentes.
18
+ */
19
+ export declare function ac3InPlace<V, D>(csp: CSP<V, D>, domains: Map<V, D[]>): boolean;
20
+ //# sourceMappingURL=ac3.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ac3.d.ts","sourceRoot":"","sources":["../../../src/runtime/csp/ac3.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,GAAG,EAAc,MAAM,SAAS,CAAC;AA8D/C;;;;;;;GAOG;AACH,wBAAgB,GAAG,CAAC,CAAC,EAAE,CAAC,EACtB,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GACb;IACD,UAAU,EAAE,OAAO,CAAC;IACpB,cAAc,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;CAC7B,CAqCA;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,OAAO,CA2B9E"}