@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,36 @@
1
+ export type Polarity = 'pos' | 'neg';
2
+ export type MLLFormula = {
3
+ kind: 'atom';
4
+ name: string;
5
+ polarity: Polarity;
6
+ } | {
7
+ kind: 'tensor';
8
+ left: MLLFormula;
9
+ right: MLLFormula;
10
+ } | {
11
+ kind: 'par';
12
+ left: MLLFormula;
13
+ right: MLLFormula;
14
+ };
15
+ export type LinkKind = 'axiom' | 'cut' | 'tensor' | 'par';
16
+ export interface ProofNetLink {
17
+ kind: LinkKind;
18
+ ports: number[];
19
+ }
20
+ export interface ProofNetNode {
21
+ id: number;
22
+ formula: MLLFormula;
23
+ }
24
+ export interface ProofNet {
25
+ nodes: ProofNetNode[];
26
+ links: ProofNetLink[];
27
+ conclusions: number[];
28
+ }
29
+ export declare const atomPos: (name: string) => MLLFormula;
30
+ export declare const atomNeg: (name: string) => MLLFormula;
31
+ export declare const tensor: (left: MLLFormula, right: MLLFormula) => MLLFormula;
32
+ export declare const par: (left: MLLFormula, right: MLLFormula) => MLLFormula;
33
+ export declare function dual(f: MLLFormula): MLLFormula;
34
+ export declare function formulaEquals(a: MLLFormula, b: MLLFormula): boolean;
35
+ export declare function formulaToString(f: MLLFormula): string;
36
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/proof-nets/types.ts"],"names":[],"mappings":"AAwBA,MAAM,MAAM,QAAQ,GAAG,KAAK,GAAG,KAAK,CAAC;AAErC,MAAM,MAAM,UAAU,GAClB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,QAAQ,CAAA;CAAE,GAClD;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,UAAU,CAAC;IAAC,KAAK,EAAE,UAAU,CAAA;CAAE,GACvD;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,UAAU,CAAC;IAAC,KAAK,EAAE,UAAU,CAAA;CAAE,CAAC;AAEzD,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,KAAK,GAAG,QAAQ,GAAG,KAAK,CAAC;AAO1D,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,QAAQ,CAAC;IACf,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,UAAU,CAAC;CACrB;AAED,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,YAAY,EAAE,CAAC;IACtB,KAAK,EAAE,YAAY,EAAE,CAAC;IACtB,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAID,eAAO,MAAM,OAAO,GAAI,MAAM,MAAM,KAAG,UAIrC,CAAC;AAEH,eAAO,MAAM,OAAO,GAAI,MAAM,MAAM,KAAG,UAIrC,CAAC;AAEH,eAAO,MAAM,MAAM,GAAI,MAAM,UAAU,EAAE,OAAO,UAAU,KAAG,UAI3D,CAAC;AAEH,eAAO,MAAM,GAAG,GAAI,MAAM,UAAU,EAAE,OAAO,UAAU,KAAG,UAIxD,CAAC;AAGH,wBAAgB,IAAI,CAAC,CAAC,EAAE,UAAU,GAAG,UAAU,CAS9C;AAED,wBAAgB,aAAa,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,GAAG,OAAO,CAWnE;AAED,wBAAgB,eAAe,CAAC,CAAC,EAAE,UAAU,GAAG,MAAM,CASrD"}
@@ -0,0 +1,89 @@
1
+ "use strict";
2
+ // ============================================================
3
+ // Proof Nets — Tipos para MLL (Multiplicative Linear Logic)
4
+ // ============================================================
5
+ //
6
+ // Proof nets de Girard: representación gráfica de pruebas en
7
+ // linear logic sin "bureaucracy" de orden estructural.
8
+ //
9
+ // Para MLL puro sólo aparecen dos conectivos:
10
+ // ⊗ (tensor) — multiplicativo positivo
11
+ // ⅋ (par) — multiplicativo negativo
12
+ //
13
+ // Los átomos llevan polaridad explícita (A vs A⊥); la dualidad
14
+ // satisface (A⊥)⊥ = A, (A⊗B)⊥ = A⊥ ⅋ B⊥, (A⅋B)⊥ = A⊥ ⊗ B⊥.
15
+ //
16
+ // Un nodo del net es la ocurrencia de una fórmula en algún punto
17
+ // del grafo. Un link une nodos con la semántica habitual:
18
+ // axiom : dos nodos duales, frescos como hojas del net.
19
+ // cut : dos nodos duales, no aportan a la conclusión.
20
+ // tensor : tres nodos {premisa-izq, premisa-der, conclusión}.
21
+ // par : tres nodos {premisa-izq, premisa-der, conclusión}.
22
+ //
23
+ // Las conclusiones del net son los ids de los nodos que viven en
24
+ // el "borde": ni premisa de tensor/par, ni participan en un cut.
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.par = exports.tensor = exports.atomNeg = exports.atomPos = void 0;
27
+ exports.dual = dual;
28
+ exports.formulaEquals = formulaEquals;
29
+ exports.formulaToString = formulaToString;
30
+ // ---------- Constructores convenientes para fórmulas ----------
31
+ const atomPos = (name) => ({
32
+ kind: 'atom',
33
+ name,
34
+ polarity: 'pos',
35
+ });
36
+ exports.atomPos = atomPos;
37
+ const atomNeg = (name) => ({
38
+ kind: 'atom',
39
+ name,
40
+ polarity: 'neg',
41
+ });
42
+ exports.atomNeg = atomNeg;
43
+ const tensor = (left, right) => ({
44
+ kind: 'tensor',
45
+ left,
46
+ right,
47
+ });
48
+ exports.tensor = tensor;
49
+ const par = (left, right) => ({
50
+ kind: 'par',
51
+ left,
52
+ right,
53
+ });
54
+ exports.par = par;
55
+ // Dualidad lineal: involutiva, distribuye De Morgan sobre ⊗ / ⅋.
56
+ function dual(f) {
57
+ switch (f.kind) {
58
+ case 'atom':
59
+ return { kind: 'atom', name: f.name, polarity: f.polarity === 'pos' ? 'neg' : 'pos' };
60
+ case 'tensor':
61
+ return { kind: 'par', left: dual(f.left), right: dual(f.right) };
62
+ case 'par':
63
+ return { kind: 'tensor', left: dual(f.left), right: dual(f.right) };
64
+ }
65
+ }
66
+ function formulaEquals(a, b) {
67
+ if (a.kind !== b.kind)
68
+ return false;
69
+ switch (a.kind) {
70
+ case 'atom':
71
+ return a.name === b.name && a.polarity === b.polarity;
72
+ case 'tensor':
73
+ case 'par': {
74
+ const bb = b;
75
+ return formulaEquals(a.left, bb.left) && formulaEquals(a.right, bb.right);
76
+ }
77
+ }
78
+ }
79
+ function formulaToString(f) {
80
+ switch (f.kind) {
81
+ case 'atom':
82
+ return f.polarity === 'pos' ? f.name : `${f.name}⊥`;
83
+ case 'tensor':
84
+ return `(${formulaToString(f.left)} ⊗ ${formulaToString(f.right)})`;
85
+ case 'par':
86
+ return `(${formulaToString(f.left)} ⅋ ${formulaToString(f.right)})`;
87
+ }
88
+ }
89
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/proof-nets/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import { type RefType, type RTerm } from './types';
2
+ export interface TypeCheckResult {
3
+ ok: boolean;
4
+ errors: string[];
5
+ type?: RefType;
6
+ vcs: string[];
7
+ }
8
+ export type RCtx = Map<string, RefType>;
9
+ /**
10
+ * typeCheck — API principal: chequea o sintetiza el tipo de `term`.
11
+ * Si `expected` se provee, valida contra ese tipo.
12
+ */
13
+ export declare function typeCheck(term: RTerm, expected?: RefType, ctx?: RCtx): TypeCheckResult;
14
+ /**
15
+ * generateVC — colecta los predicados que deben mantenerse para que
16
+ * `term` sea bien tipado en `ctx`. Útil para inspección / debugging.
17
+ */
18
+ export declare function generateVC(term: RTerm, ctx?: RCtx): string[];
19
+ //# sourceMappingURL=checker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checker.d.ts","sourceRoot":"","sources":["../../src/refinement-types/checker.ts"],"names":[],"mappings":"AAeA,OAAO,EACL,KAAK,OAAO,EACZ,KAAK,KAAK,EAOX,MAAM,SAAS,CAAC;AAIjB,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,GAAG,EAAE,MAAM,EAAE,CAAC;CACf;AAED,MAAM,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAgNxC;;;GAGG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE,GAAG,GAAE,IAAgB,GAAG,eAAe,CASjG;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,GAAE,IAAgB,GAAG,MAAM,EAAE,CAKvE"}
@@ -0,0 +1,248 @@
1
+ "use strict";
2
+ // ============================================================
3
+ // Refinement types — Type checker bidireccional
4
+ // ============================================================
5
+ //
6
+ // El checker es bidireccional en el sentido estándar:
7
+ // - synth : term → RefType (inferir el tipo)
8
+ // - check : term × RefType (chequear contra un tipo esperado)
9
+ //
10
+ // Genera predicados de verificación (VCs) cuando es necesario:
11
+ // - Aplicación: el argumento debe cumplir la precondición del parámetro.
12
+ // - Anotación let: el valor debe cumplir el predicado anotado.
13
+ // - Anotación contra `expected`: el tipo inferido debe ser subtipo.
14
+ //
15
+ // Las VCs se descargan con el solver acotado.
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.typeCheck = typeCheck;
18
+ exports.generateVC = generateVC;
19
+ const types_1 = require("./types");
20
+ const subtype_1 = require("./subtype");
21
+ const predicate_1 = require("./predicate");
22
+ function freshBinding(used, base = 'v') {
23
+ let i = 0;
24
+ let name = `_${base}${i}`;
25
+ while (used.has(name)) {
26
+ i++;
27
+ name = `_${base}${i}`;
28
+ }
29
+ used.add(name);
30
+ return name;
31
+ }
32
+ function ctxAssumptions(ctx) {
33
+ const out = [];
34
+ for (const [name, ty] of ctx.entries()) {
35
+ const pred = ty.predicate.trim();
36
+ if (pred === '' || pred === 'true')
37
+ continue;
38
+ if (typeof ty.base !== 'string')
39
+ continue; // arrows no aportan asunciones aritméticas
40
+ out.push((0, predicate_1.renameVar)(pred, ty.binding, name));
41
+ }
42
+ return out;
43
+ }
44
+ function singletonInt(value) {
45
+ return { base: 'Int', binding: 'v', predicate: `v == ${value}` };
46
+ }
47
+ function singletonBool(value) {
48
+ return { base: 'Bool', binding: 'v', predicate: `v == ${value}` };
49
+ }
50
+ function singletonString() {
51
+ return (0, types_1.tString)('v', 'true');
52
+ }
53
+ function eqBase(a, b) {
54
+ if (typeof a === 'string' || typeof b === 'string')
55
+ return a === b;
56
+ return eqBase(a.from.base, b.from.base) && eqBase(a.to.base, b.to.base);
57
+ }
58
+ /**
59
+ * synthesize — infiere un RefType para `term` en el contexto dado.
60
+ * Devuelve también la lista de VCs acumuladas y los errores fatales.
61
+ */
62
+ function synthesize(term, ctx, errors, vcs) {
63
+ switch (term.kind) {
64
+ case 'lit':
65
+ if (typeof term.value === 'number')
66
+ return singletonInt(term.value);
67
+ if (typeof term.value === 'boolean')
68
+ return singletonBool(term.value);
69
+ return singletonString();
70
+ case 'var': {
71
+ const ty = ctx.get(term.name);
72
+ if (!ty) {
73
+ errors.push(`variable libre "${term.name}"`);
74
+ return undefined;
75
+ }
76
+ // Reflejamos el predicado de ctx como singleton sobre la variable.
77
+ if (typeof ty.base === 'string') {
78
+ const used = new Set(ctx.keys());
79
+ used.add(term.name);
80
+ const fresh = freshBinding(used);
81
+ const refl = `${fresh} == ${term.name}`;
82
+ const renamedPred = ty.predicate.trim() === '' || ty.predicate.trim() === 'true'
83
+ ? refl
84
+ : `(${refl}) && ${(0, predicate_1.renameVar)(ty.predicate, ty.binding, term.name)}`;
85
+ return { base: ty.base, binding: fresh, predicate: renamedPred };
86
+ }
87
+ return ty;
88
+ }
89
+ case 'binop': {
90
+ const lt = synthesize(term.left, ctx, errors, vcs);
91
+ const rt = synthesize(term.right, ctx, errors, vcs);
92
+ if (!lt || !rt)
93
+ return undefined;
94
+ const arith = ['+', '-', '*'].includes(term.op);
95
+ const cmp = ['<', '<=', '>', '>=', '==', '!='].includes(term.op);
96
+ const bool = ['&&', '||'].includes(term.op);
97
+ if (arith) {
98
+ if (lt.base !== 'Int' || rt.base !== 'Int') {
99
+ errors.push(`binop ${term.op}: requiere Int, recibido ${(0, types_1.refTypeToString)(lt)} y ${(0, types_1.refTypeToString)(rt)}`);
100
+ return undefined;
101
+ }
102
+ return (0, types_1.tInt)('v', 'true');
103
+ }
104
+ if (cmp) {
105
+ if (lt.base !== rt.base) {
106
+ errors.push(`binop ${term.op}: lados de tipos distintos`);
107
+ return undefined;
108
+ }
109
+ return (0, types_1.tBool)('v', 'true');
110
+ }
111
+ if (bool) {
112
+ if (lt.base !== 'Bool' || rt.base !== 'Bool') {
113
+ errors.push(`binop ${term.op}: requiere Bool`);
114
+ return undefined;
115
+ }
116
+ return (0, types_1.tBool)('v', 'true');
117
+ }
118
+ errors.push(`binop desconocido ${term.op}`);
119
+ return undefined;
120
+ }
121
+ case 'if': {
122
+ const ct = synthesize(term.cond, ctx, errors, vcs);
123
+ if (!ct)
124
+ return undefined;
125
+ if (ct.base !== 'Bool') {
126
+ errors.push(`if: condición no booleana: ${(0, types_1.refTypeToString)(ct)}`);
127
+ return undefined;
128
+ }
129
+ const tt = synthesize(term.then, ctx, errors, vcs);
130
+ const et = synthesize(term.else, ctx, errors, vcs);
131
+ if (!tt || !et)
132
+ return undefined;
133
+ if (!eqBase(tt.base, et.base)) {
134
+ errors.push(`if: ramas de tipos distintos (${(0, types_1.refTypeToString)(tt)} vs ${(0, types_1.refTypeToString)(et)})`);
135
+ return undefined;
136
+ }
137
+ return { base: tt.base, binding: '_v', predicate: 'true' };
138
+ }
139
+ case 'lam': {
140
+ const newCtx = new Map(ctx);
141
+ newCtx.set(term.param, term.paramType);
142
+ const bodyTy = synthesize(term.body, newCtx, errors, vcs);
143
+ if (!bodyTy)
144
+ return undefined;
145
+ return {
146
+ base: { kind: 'arrow', from: term.paramType, to: bodyTy },
147
+ binding: '_f',
148
+ predicate: 'true',
149
+ };
150
+ }
151
+ case 'app': {
152
+ const ft = synthesize(term.fn, ctx, errors, vcs);
153
+ if (!ft)
154
+ return undefined;
155
+ if (typeof ft.base === 'string' || ft.base.kind !== 'arrow') {
156
+ errors.push(`app: lado izquierdo no es función: ${(0, types_1.refTypeToString)(ft)}`);
157
+ return undefined;
158
+ }
159
+ const paramTy = ft.base.from;
160
+ const resTy = ft.base.to;
161
+ // Chequeamos que el argumento sea subtipo del paramType.
162
+ const ok = check(term.arg, paramTy, ctx, errors, vcs);
163
+ if (!ok)
164
+ return undefined;
165
+ return resTy;
166
+ }
167
+ case 'let': {
168
+ const valTy = synthesize(term.value, ctx, errors, vcs);
169
+ if (!valTy)
170
+ return undefined;
171
+ let boundTy = valTy;
172
+ if (term.bindType) {
173
+ const ok = check(term.value, term.bindType, ctx, errors, vcs);
174
+ if (!ok)
175
+ return undefined;
176
+ boundTy = term.bindType;
177
+ }
178
+ const newCtx = new Map(ctx);
179
+ newCtx.set(term.bind, boundTy);
180
+ return synthesize(term.body, newCtx, errors, vcs);
181
+ }
182
+ }
183
+ }
184
+ function check(term, expected, ctx, errors, vcs) {
185
+ const synth = synthesize(term, ctx, errors, vcs);
186
+ if (!synth)
187
+ return false;
188
+ if (!eqBase(synth.base, expected.base)) {
189
+ errors.push(`check: tipo base esperado ${(0, types_1.refTypeToString)(expected)}, obtenido ${(0, types_1.refTypeToString)(synth)} en ${(0, types_1.termToString)(term)}`);
190
+ return false;
191
+ }
192
+ // Fast-path: si el término es un literal, evaluamos el predicado esperado
193
+ // sustituyendo concretamente — esto es exacto y evita depender de la cota
194
+ // del solver bounded para literales grandes.
195
+ if (term.kind === 'lit') {
196
+ const predSrc = expected.predicate.trim();
197
+ if (predSrc === '' || predSrc === 'true')
198
+ return true;
199
+ try {
200
+ const ast = (0, predicate_1.parsePredicate)(predSrc);
201
+ const val = (0, predicate_1.evalPredicate)(ast, { [expected.binding]: term.value });
202
+ if (val === true)
203
+ return true;
204
+ const vc = `${expected.binding} = ${JSON.stringify(term.value)} ⇒ ${predSrc}`;
205
+ vcs.push(vc);
206
+ errors.push(`check: literal ${(0, types_1.termToString)(term)} no satisface ${(0, types_1.refTypeToString)(expected)}`);
207
+ return false;
208
+ }
209
+ catch (err) {
210
+ errors.push(`check: error evaluando predicado: ${String(err)}`);
211
+ return false;
212
+ }
213
+ }
214
+ const assumptions = ctxAssumptions(ctx);
215
+ const sub = (0, subtype_1.isSubtype)(synth, expected, { extraAssumptions: assumptions });
216
+ if (!sub) {
217
+ const vc = `${synth.predicate} ⇒ ${expected.predicate}`;
218
+ vcs.push(vc);
219
+ errors.push(`check: no se pudo verificar ${(0, types_1.refTypeToString)(synth)} <: ${(0, types_1.refTypeToString)(expected)} (VC: ${vc})`);
220
+ return false;
221
+ }
222
+ return true;
223
+ }
224
+ /**
225
+ * typeCheck — API principal: chequea o sintetiza el tipo de `term`.
226
+ * Si `expected` se provee, valida contra ese tipo.
227
+ */
228
+ function typeCheck(term, expected, ctx = new Map()) {
229
+ const errors = [];
230
+ const vcs = [];
231
+ if (expected) {
232
+ const ok = check(term, expected, ctx, errors, vcs);
233
+ return { ok, errors, type: ok ? expected : undefined, vcs };
234
+ }
235
+ const ty = synthesize(term, ctx, errors, vcs);
236
+ return { ok: errors.length === 0, errors, type: ty, vcs };
237
+ }
238
+ /**
239
+ * generateVC — colecta los predicados que deben mantenerse para que
240
+ * `term` sea bien tipado en `ctx`. Útil para inspección / debugging.
241
+ */
242
+ function generateVC(term, ctx = new Map()) {
243
+ const errors = [];
244
+ const vcs = [];
245
+ synthesize(term, ctx, errors, vcs);
246
+ return vcs;
247
+ }
248
+ //# sourceMappingURL=checker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checker.js","sourceRoot":"","sources":["../../src/refinement-types/checker.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ export type { BaseType, RefType, RTerm } from './types';
2
+ export { tInt, tBool, tString, tArrow, refine, rLit, rVar, rBinop, rIf, rLam, rApp, rLet, eqBase, eqRefType, baseToString, refTypeToString, termToString, } from './types';
3
+ export { typeCheck, generateVC } from './checker';
4
+ export type { TypeCheckResult, RCtx } from './checker';
5
+ export { isSubtype } from './subtype';
6
+ export type { SubtypeOpts } from './subtype';
7
+ export { checkVC, implies } from './solver';
8
+ export type { CheckResult, SolverOpts } from './solver';
9
+ export { parsePredicate, evalPredicate, freeVars as predicateFreeVars, substVar as predicateSubstVar, renameVar as predicateRenameVar, predicateToString, } from './predicate';
10
+ export type { PExpr, PEnv, PValue } from './predicate';
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/refinement-types/index.ts"],"names":[],"mappings":"AAeA,YAAY,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AACxD,OAAO,EACL,IAAI,EACJ,KAAK,EACL,OAAO,EACP,MAAM,EACN,MAAM,EACN,IAAI,EACJ,IAAI,EACJ,MAAM,EACN,GAAG,EACH,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,MAAM,EACN,SAAS,EACT,YAAY,EACZ,eAAe,EACf,YAAY,GACb,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAClD,YAAY,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEvD,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,YAAY,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAE7C,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAC5C,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAExD,OAAO,EACL,cAAc,EACd,aAAa,EACb,QAAQ,IAAI,iBAAiB,EAC7B,QAAQ,IAAI,iBAAiB,EAC7B,SAAS,IAAI,kBAAkB,EAC/B,iBAAiB,GAClB,MAAM,aAAa,CAAC;AACrB,YAAY,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ // ============================================================
3
+ // Refinement types — Punto de entrada público
4
+ // ============================================================
5
+ //
6
+ // Tipos refinados al estilo Liquid Haskell didáctico:
7
+ // { x : Int | P(x) }
8
+ //
9
+ // Capacidades:
10
+ // - typeCheck : sintetiza o chequea tipos refinados con VC
11
+ // generation y descarga acotada.
12
+ // - isSubtype : subtipado por implicación, contravarianza en
13
+ // parámetros de arrow.
14
+ // - generateVC: extrae los predicados que deben mantenerse.
15
+ // - checkVC : solver acotado SAT-like sobre enteros + booleanos.
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.predicateToString = exports.predicateRenameVar = exports.predicateSubstVar = exports.predicateFreeVars = exports.evalPredicate = exports.parsePredicate = exports.implies = exports.checkVC = exports.isSubtype = exports.generateVC = exports.typeCheck = exports.termToString = exports.refTypeToString = exports.baseToString = exports.eqRefType = exports.eqBase = 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
+ var types_1 = require("./types");
19
+ Object.defineProperty(exports, "tInt", { enumerable: true, get: function () { return types_1.tInt; } });
20
+ Object.defineProperty(exports, "tBool", { enumerable: true, get: function () { return types_1.tBool; } });
21
+ Object.defineProperty(exports, "tString", { enumerable: true, get: function () { return types_1.tString; } });
22
+ Object.defineProperty(exports, "tArrow", { enumerable: true, get: function () { return types_1.tArrow; } });
23
+ Object.defineProperty(exports, "refine", { enumerable: true, get: function () { return types_1.refine; } });
24
+ Object.defineProperty(exports, "rLit", { enumerable: true, get: function () { return types_1.rLit; } });
25
+ Object.defineProperty(exports, "rVar", { enumerable: true, get: function () { return types_1.rVar; } });
26
+ Object.defineProperty(exports, "rBinop", { enumerable: true, get: function () { return types_1.rBinop; } });
27
+ Object.defineProperty(exports, "rIf", { enumerable: true, get: function () { return types_1.rIf; } });
28
+ Object.defineProperty(exports, "rLam", { enumerable: true, get: function () { return types_1.rLam; } });
29
+ Object.defineProperty(exports, "rApp", { enumerable: true, get: function () { return types_1.rApp; } });
30
+ Object.defineProperty(exports, "rLet", { enumerable: true, get: function () { return types_1.rLet; } });
31
+ Object.defineProperty(exports, "eqBase", { enumerable: true, get: function () { return types_1.eqBase; } });
32
+ Object.defineProperty(exports, "eqRefType", { enumerable: true, get: function () { return types_1.eqRefType; } });
33
+ Object.defineProperty(exports, "baseToString", { enumerable: true, get: function () { return types_1.baseToString; } });
34
+ Object.defineProperty(exports, "refTypeToString", { enumerable: true, get: function () { return types_1.refTypeToString; } });
35
+ Object.defineProperty(exports, "termToString", { enumerable: true, get: function () { return types_1.termToString; } });
36
+ var checker_1 = require("./checker");
37
+ Object.defineProperty(exports, "typeCheck", { enumerable: true, get: function () { return checker_1.typeCheck; } });
38
+ Object.defineProperty(exports, "generateVC", { enumerable: true, get: function () { return checker_1.generateVC; } });
39
+ var subtype_1 = require("./subtype");
40
+ Object.defineProperty(exports, "isSubtype", { enumerable: true, get: function () { return subtype_1.isSubtype; } });
41
+ var solver_1 = require("./solver");
42
+ Object.defineProperty(exports, "checkVC", { enumerable: true, get: function () { return solver_1.checkVC; } });
43
+ Object.defineProperty(exports, "implies", { enumerable: true, get: function () { return solver_1.implies; } });
44
+ var predicate_1 = require("./predicate");
45
+ Object.defineProperty(exports, "parsePredicate", { enumerable: true, get: function () { return predicate_1.parsePredicate; } });
46
+ Object.defineProperty(exports, "evalPredicate", { enumerable: true, get: function () { return predicate_1.evalPredicate; } });
47
+ Object.defineProperty(exports, "predicateFreeVars", { enumerable: true, get: function () { return predicate_1.freeVars; } });
48
+ Object.defineProperty(exports, "predicateSubstVar", { enumerable: true, get: function () { return predicate_1.substVar; } });
49
+ Object.defineProperty(exports, "predicateRenameVar", { enumerable: true, get: function () { return predicate_1.renameVar; } });
50
+ Object.defineProperty(exports, "predicateToString", { enumerable: true, get: function () { return predicate_1.predicateToString; } });
51
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/refinement-types/index.ts"],"names":[],"mappings":";AAAA,+DAA+D;AAC/D,8CAA8C;AAC9C,+DAA+D;AAC/D,EAAE;AACF,sDAAsD;AACtD,uBAAuB;AACvB,EAAE;AACF,eAAe;AACf,6DAA6D;AAC7D,iDAAiD;AACjD,+DAA+D;AAC/D,uCAAuC;AACvC,8DAA8D;AAC9D,qEAAqE;;;AAGrE,iCAkBiB;AAjBf,6FAAA,IAAI,OAAA;AACJ,8FAAA,KAAK,OAAA;AACL,gGAAA,OAAO,OAAA;AACP,+FAAA,MAAM,OAAA;AACN,+FAAA,MAAM,OAAA;AACN,6FAAA,IAAI,OAAA;AACJ,6FAAA,IAAI,OAAA;AACJ,+FAAA,MAAM,OAAA;AACN,4FAAA,GAAG,OAAA;AACH,6FAAA,IAAI,OAAA;AACJ,6FAAA,IAAI,OAAA;AACJ,6FAAA,IAAI,OAAA;AACJ,+FAAA,MAAM,OAAA;AACN,kGAAA,SAAS,OAAA;AACT,qGAAA,YAAY,OAAA;AACZ,wGAAA,eAAe,OAAA;AACf,qGAAA,YAAY,OAAA;AAGd,qCAAkD;AAAzC,oGAAA,SAAS,OAAA;AAAE,qGAAA,UAAU,OAAA;AAG9B,qCAAsC;AAA7B,oGAAA,SAAS,OAAA;AAGlB,mCAA4C;AAAnC,iGAAA,OAAO,OAAA;AAAE,iGAAA,OAAO,OAAA;AAGzB,yCAOqB;AANnB,2GAAA,cAAc,OAAA;AACd,0GAAA,aAAa,OAAA;AACb,8GAAA,QAAQ,OAAqB;AAC7B,8GAAA,QAAQ,OAAqB;AAC7B,+GAAA,SAAS,OAAsB;AAC/B,8GAAA,iBAAiB,OAAA"}
@@ -0,0 +1,31 @@
1
+ export type PExpr = {
2
+ kind: 'num';
3
+ value: number;
4
+ } | {
5
+ kind: 'bool';
6
+ value: boolean;
7
+ } | {
8
+ kind: 'str';
9
+ value: string;
10
+ } | {
11
+ kind: 'var';
12
+ name: string;
13
+ } | {
14
+ kind: 'unop';
15
+ op: '!' | '-';
16
+ arg: PExpr;
17
+ } | {
18
+ kind: 'binop';
19
+ op: '+' | '-' | '*' | '/' | '<' | '<=' | '>' | '>=' | '==' | '!=' | '&&' | '||';
20
+ left: PExpr;
21
+ right: PExpr;
22
+ };
23
+ export declare function parsePredicate(src: string): PExpr;
24
+ export declare function freeVars(e: PExpr, acc?: Set<string>): Set<string>;
25
+ export declare function substVar(e: PExpr, name: string, replacement: PExpr): PExpr;
26
+ export declare function renameVar(predicate: string, fromName: string, toName: string): string;
27
+ export declare function predicateToString(e: PExpr): string;
28
+ export type PValue = number | boolean | string;
29
+ export type PEnv = Record<string, PValue>;
30
+ export declare function evalPredicate(e: PExpr, env: PEnv): PValue;
31
+ //# sourceMappingURL=predicate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"predicate.d.ts","sourceRoot":"","sources":["../../src/refinement-types/predicate.ts"],"names":[],"mappings":"AAoBA,MAAM,MAAM,KAAK,GACb;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAC9B;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,GAChC;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAC9B;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC7B;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,GAAG,GAAG,GAAG,CAAC;IAAC,GAAG,EAAE,KAAK,CAAA;CAAE,GAC3C;IACE,IAAI,EAAE,OAAO,CAAC;IACd,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IAChF,IAAI,EAAE,KAAK,CAAC;IACZ,KAAK,EAAE,KAAK,CAAC;CACd,CAAC;AAoNN,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,KAAK,CASjD;AAID,wBAAgB,QAAQ,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,GAAE,GAAG,CAAC,MAAM,CAAa,GAAG,GAAG,CAAC,MAAM,CAAC,CAgB5E;AAID,wBAAgB,QAAQ,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,GAAG,KAAK,CAkB1E;AAED,wBAAgB,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAKrF;AAID,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,KAAK,GAAG,MAAM,CAelD;AAID,MAAM,MAAM,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;AAC/C,MAAM,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAE1C,wBAAgB,aAAa,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,GAAG,MAAM,CAkEzD"}