@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,181 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const vitest_1 = require("vitest");
4
+ const mltt_1 = require("../../mltt");
5
+ function unwrap(r) {
6
+ if ((0, mltt_1.isInferError)(r))
7
+ throw new Error(`unexpected error: ${r.error}`);
8
+ return r;
9
+ }
10
+ (0, vitest_1.describe)('MLTT / inferType — núcleo', () => {
11
+ (0, vitest_1.it)('λ (x : Nat). x infiere Π (x : Nat). Nat', () => {
12
+ const term = (0, mltt_1.mLam)('x', (0, mltt_1.mNat)(), (0, mltt_1.mVar)('x'));
13
+ const t = unwrap((0, mltt_1.inferType)(term));
14
+ (0, vitest_1.expect)((0, mltt_1.termToString)(t)).toBe('(Nat → Nat)');
15
+ });
16
+ (0, vitest_1.it)('zero : Nat', () => {
17
+ const t = unwrap((0, mltt_1.inferType)((0, mltt_1.mZero)()));
18
+ (0, vitest_1.expect)(t.kind).toBe('nat');
19
+ });
20
+ (0, vitest_1.it)('succ (succ zero) : Nat', () => {
21
+ const t = unwrap((0, mltt_1.inferType)((0, mltt_1.mSucc)((0, mltt_1.mSucc)((0, mltt_1.mZero)()))));
22
+ (0, vitest_1.expect)(t.kind).toBe('nat');
23
+ });
24
+ (0, vitest_1.it)('refl(zero) : Id(Nat, zero, zero)', () => {
25
+ const t = unwrap((0, mltt_1.inferType)((0, mltt_1.mRefl)((0, mltt_1.mZero)())));
26
+ (0, vitest_1.expect)(t.kind).toBe('identity');
27
+ (0, vitest_1.expect)((0, mltt_1.termToString)(t)).toBe('Id(Nat, zero, zero)');
28
+ });
29
+ (0, vitest_1.it)('Π (x : Nat). Nat : Type 0', () => {
30
+ const t = unwrap((0, mltt_1.inferType)((0, mltt_1.mPi)('x', (0, mltt_1.mNat)(), (0, mltt_1.mNat)())));
31
+ (0, vitest_1.expect)((0, mltt_1.termToString)(t)).toBe('Type');
32
+ (0, vitest_1.expect)(t.kind === 'universe' && t.level === 0).toBe(true);
33
+ });
34
+ (0, vitest_1.it)('Π (A : Type). Π (x : A). A : Type 1 (universo polimórfico simple)', () => {
35
+ const term = (0, mltt_1.mPi)('A', (0, mltt_1.mUniverse)(0), (0, mltt_1.mPi)('x', (0, mltt_1.mVar)('A'), (0, mltt_1.mVar)('A')));
36
+ const t = unwrap((0, mltt_1.inferType)(term));
37
+ (0, vitest_1.expect)(t.kind === 'universe' && t.level === 1).toBe(true);
38
+ });
39
+ (0, vitest_1.it)('Type 0 : Type 1', () => {
40
+ const t = unwrap((0, mltt_1.inferType)((0, mltt_1.mUniverse)(0)));
41
+ (0, vitest_1.expect)(t.kind === 'universe' && t.level === 1).toBe(true);
42
+ });
43
+ (0, vitest_1.it)('Type 3 : Type 4', () => {
44
+ const t = unwrap((0, mltt_1.inferType)((0, mltt_1.mUniverse)(3)));
45
+ (0, vitest_1.expect)(t.kind === 'universe' && t.level === 4).toBe(true);
46
+ });
47
+ (0, vitest_1.it)('Nat : Type 0', () => {
48
+ const t = unwrap((0, mltt_1.inferType)((0, mltt_1.mNat)()));
49
+ (0, vitest_1.expect)(t.kind === 'universe' && t.level === 0).toBe(true);
50
+ });
51
+ (0, vitest_1.it)('aplicación bien-tipada: (λ x:Nat. x) zero : Nat', () => {
52
+ const term = (0, mltt_1.mApp)((0, mltt_1.mLam)('x', (0, mltt_1.mNat)(), (0, mltt_1.mVar)('x')), (0, mltt_1.mZero)());
53
+ const t = unwrap((0, mltt_1.inferType)(term));
54
+ (0, vitest_1.expect)(t.kind).toBe('nat');
55
+ });
56
+ (0, vitest_1.it)('aplicación dependiente: identidad polimórfica aplicada a Nat y zero', () => {
57
+ // id : Π (A : Type). Π (x : A). A
58
+ const id = (0, mltt_1.mLam)('A', (0, mltt_1.mUniverse)(0), (0, mltt_1.mLam)('x', (0, mltt_1.mVar)('A'), (0, mltt_1.mVar)('x')));
59
+ const t = unwrap((0, mltt_1.inferType)(id));
60
+ // (id Nat) : Π (x : Nat). Nat
61
+ const idNat = (0, mltt_1.mApp)(id, (0, mltt_1.mNat)());
62
+ const tIdNat = unwrap((0, mltt_1.inferType)(idNat));
63
+ (0, vitest_1.expect)((0, mltt_1.normalize)(tIdNat).kind).toBe('pi');
64
+ // (id Nat zero) : Nat
65
+ const idNatZero = (0, mltt_1.mApp)(idNat, (0, mltt_1.mZero)());
66
+ const tIdNatZero = unwrap((0, mltt_1.inferType)(idNatZero));
67
+ (0, vitest_1.expect)((0, mltt_1.normalize)(tIdNatZero).kind).toBe('nat');
68
+ (0, vitest_1.expect)(t.kind).toBe('pi');
69
+ });
70
+ (0, vitest_1.it)('rechaza variable libre sin contexto', () => {
71
+ const r = (0, mltt_1.inferType)((0, mltt_1.mVar)('x'));
72
+ (0, vitest_1.expect)((0, mltt_1.isInferError)(r)).toBe(true);
73
+ });
74
+ (0, vitest_1.it)('rechaza aplicación con argumento de tipo incorrecto', () => {
75
+ // (λ x:Nat. x) Type → error
76
+ const term = (0, mltt_1.mApp)((0, mltt_1.mLam)('x', (0, mltt_1.mNat)(), (0, mltt_1.mVar)('x')), (0, mltt_1.mUniverse)(0));
77
+ const r = (0, mltt_1.inferType)(term);
78
+ (0, vitest_1.expect)((0, mltt_1.isInferError)(r)).toBe(true);
79
+ });
80
+ (0, vitest_1.it)('rechaza refl(a) si los lados no concuerdan en Id explícito mal armado', () => {
81
+ // Id(Nat, zero, Type) — derecha no es Nat
82
+ const term = (0, mltt_1.mId)((0, mltt_1.mNat)(), (0, mltt_1.mZero)(), (0, mltt_1.mUniverse)(0));
83
+ const r = (0, mltt_1.inferType)(term);
84
+ (0, vitest_1.expect)((0, mltt_1.isInferError)(r)).toBe(true);
85
+ });
86
+ });
87
+ (0, vitest_1.describe)('MLTT / Σ pares dependientes', () => {
88
+ (0, vitest_1.it)('pair ⟨zero, zero⟩ infiere Σ (_ : Nat). Nat', () => {
89
+ const t = unwrap((0, mltt_1.inferType)((0, mltt_1.mPair)((0, mltt_1.mZero)(), (0, mltt_1.mZero)())));
90
+ (0, vitest_1.expect)(t.kind).toBe('sigma');
91
+ });
92
+ (0, vitest_1.it)('fst ⟨zero, succ zero⟩ ↦ zero (ι1)', () => {
93
+ const p = (0, mltt_1.mPair)((0, mltt_1.mZero)(), (0, mltt_1.mSucc)((0, mltt_1.mZero)()));
94
+ (0, vitest_1.expect)((0, mltt_1.alphaEq)((0, mltt_1.normalize)((0, mltt_1.mFst)(p)), (0, mltt_1.mZero)())).toBe(true);
95
+ });
96
+ (0, vitest_1.it)('snd ⟨zero, succ zero⟩ ↦ succ zero (ι2)', () => {
97
+ const p = (0, mltt_1.mPair)((0, mltt_1.mZero)(), (0, mltt_1.mSucc)((0, mltt_1.mZero)()));
98
+ (0, vitest_1.expect)((0, mltt_1.alphaEq)((0, mltt_1.normalize)((0, mltt_1.mSnd)(p)), (0, mltt_1.mSucc)((0, mltt_1.mZero)()))).toBe(true);
99
+ });
100
+ (0, vitest_1.it)('checkType acepta ⟨zero, refl zero⟩ : Σ (n : Nat). Id(Nat, n, n)', () => {
101
+ const sigma = (0, mltt_1.mSigma)('n', (0, mltt_1.mNat)(), (0, mltt_1.mId)((0, mltt_1.mNat)(), (0, mltt_1.mVar)('n'), (0, mltt_1.mVar)('n')));
102
+ const pair = (0, mltt_1.mPair)((0, mltt_1.mZero)(), (0, mltt_1.mRefl)((0, mltt_1.mZero)()));
103
+ (0, vitest_1.expect)((0, mltt_1.checkType)(pair, sigma)).toBe(true);
104
+ });
105
+ (0, vitest_1.it)('checkType rechaza ⟨succ zero, refl zero⟩ : Σ (n : Nat). Id(Nat, n, n)', () => {
106
+ const sigma = (0, mltt_1.mSigma)('n', (0, mltt_1.mNat)(), (0, mltt_1.mId)((0, mltt_1.mNat)(), (0, mltt_1.mVar)('n'), (0, mltt_1.mVar)('n')));
107
+ const pair = (0, mltt_1.mPair)((0, mltt_1.mSucc)((0, mltt_1.mZero)()), (0, mltt_1.mRefl)((0, mltt_1.mZero)()));
108
+ (0, vitest_1.expect)((0, mltt_1.checkType)(pair, sigma)).toBe(false);
109
+ });
110
+ (0, vitest_1.it)('Σ (n : Nat). Nat : Type 0', () => {
111
+ const t = unwrap((0, mltt_1.inferType)((0, mltt_1.mSigma)('n', (0, mltt_1.mNat)(), (0, mltt_1.mNat)())));
112
+ (0, vitest_1.expect)(t.kind === 'universe' && t.level === 0).toBe(true);
113
+ });
114
+ });
115
+ (0, vitest_1.describe)('MLTT / β-reducción y normalización', () => {
116
+ (0, vitest_1.it)('(λ x:Nat. x) zero β→ zero', () => {
117
+ const t = (0, mltt_1.mApp)((0, mltt_1.mLam)('x', (0, mltt_1.mNat)(), (0, mltt_1.mVar)('x')), (0, mltt_1.mZero)());
118
+ (0, vitest_1.expect)((0, mltt_1.alphaEq)((0, mltt_1.reduceStep)(t), (0, mltt_1.mZero)())).toBe(true);
119
+ });
120
+ (0, vitest_1.it)('normalize idempotente sobre forma normal (succ zero)', () => {
121
+ (0, vitest_1.expect)((0, mltt_1.isNormal)((0, mltt_1.mSucc)((0, mltt_1.mZero)()))).toBe(true);
122
+ (0, vitest_1.expect)((0, mltt_1.alphaEq)((0, mltt_1.normalize)((0, mltt_1.mSucc)((0, mltt_1.mZero)())), (0, mltt_1.mSucc)((0, mltt_1.mZero)()))).toBe(true);
123
+ });
124
+ (0, vitest_1.it)('alphaBetaEq: (λ x:Nat. x) zero ≡ zero', () => {
125
+ (0, vitest_1.expect)((0, mltt_1.alphaBetaEq)((0, mltt_1.mApp)((0, mltt_1.mLam)('x', (0, mltt_1.mNat)(), (0, mltt_1.mVar)('x')), (0, mltt_1.mZero)()), (0, mltt_1.mZero)())).toBe(true);
126
+ });
127
+ (0, vitest_1.it)('alphaBetaEq distingue zero y succ zero', () => {
128
+ (0, vitest_1.expect)((0, mltt_1.alphaBetaEq)((0, mltt_1.mZero)(), (0, mltt_1.mSucc)((0, mltt_1.mZero)()))).toBe(false);
129
+ });
130
+ (0, vitest_1.it)('α-equivalencia: λ x:Nat. x ≡ λ y:Nat. y', () => {
131
+ const a = (0, mltt_1.mLam)('x', (0, mltt_1.mNat)(), (0, mltt_1.mVar)('x'));
132
+ const b = (0, mltt_1.mLam)('y', (0, mltt_1.mNat)(), (0, mltt_1.mVar)('y'));
133
+ (0, vitest_1.expect)((0, mltt_1.alphaEq)(a, b)).toBe(true);
134
+ });
135
+ (0, vitest_1.it)('reducción dentro de Π: Π (_ : (λx:Type. x) Nat). Nat normaliza a Nat → Nat', () => {
136
+ // dominio aplica una λ que reduce a Nat
137
+ const reducingDom = (0, mltt_1.mApp)((0, mltt_1.mLam)('x', (0, mltt_1.mUniverse)(0), (0, mltt_1.mVar)('x')), (0, mltt_1.mNat)());
138
+ const term = (0, mltt_1.mPi)('_', reducingDom, (0, mltt_1.mNat)());
139
+ const nf = (0, mltt_1.normalize)(term);
140
+ (0, vitest_1.expect)((0, mltt_1.alphaEq)(nf, (0, mltt_1.mArrow)((0, mltt_1.mNat)(), (0, mltt_1.mNat)()))).toBe(true);
141
+ });
142
+ });
143
+ (0, vitest_1.describe)('MLTT / checkType bidireccional', () => {
144
+ (0, vitest_1.it)('checkType acepta λ (x : Nat). x contra Nat → Nat', () => {
145
+ const term = (0, mltt_1.mLam)('x', (0, mltt_1.mNat)(), (0, mltt_1.mVar)('x'));
146
+ (0, vitest_1.expect)((0, mltt_1.checkType)(term, (0, mltt_1.mArrow)((0, mltt_1.mNat)(), (0, mltt_1.mNat)()))).toBe(true);
147
+ });
148
+ (0, vitest_1.it)('checkType acepta zero : Nat', () => {
149
+ (0, vitest_1.expect)((0, mltt_1.checkType)((0, mltt_1.mZero)(), (0, mltt_1.mNat)())).toBe(true);
150
+ });
151
+ (0, vitest_1.it)('checkType rechaza zero : Type', () => {
152
+ (0, vitest_1.expect)((0, mltt_1.checkType)((0, mltt_1.mZero)(), (0, mltt_1.mUniverse)(0))).toBe(false);
153
+ });
154
+ (0, vitest_1.it)('checkType acepta refl(succ zero) : Id(Nat, succ zero, succ zero)', () => {
155
+ (0, vitest_1.expect)((0, mltt_1.checkType)((0, mltt_1.mRefl)((0, mltt_1.mSucc)((0, mltt_1.mZero)())), (0, mltt_1.mId)((0, mltt_1.mNat)(), (0, mltt_1.mSucc)((0, mltt_1.mZero)()), (0, mltt_1.mSucc)((0, mltt_1.mZero)())))).toBe(true);
156
+ });
157
+ (0, vitest_1.it)('occursFree detecta dependencia en codomain de Π', () => {
158
+ // Π (x : Nat). Id(Nat, x, x) — x ocurre libre en codomain
159
+ const term = (0, mltt_1.mPi)('x', (0, mltt_1.mNat)(), (0, mltt_1.mId)((0, mltt_1.mNat)(), (0, mltt_1.mVar)('x'), (0, mltt_1.mVar)('x')));
160
+ if (term.kind !== 'pi')
161
+ throw new Error('expected pi');
162
+ (0, vitest_1.expect)((0, mltt_1.occursFree)('x', term.codomain)).toBe(true);
163
+ });
164
+ (0, vitest_1.it)('occursFree falso para familia constante Π (x : Nat). Nat', () => {
165
+ const term = (0, mltt_1.mPi)('x', (0, mltt_1.mNat)(), (0, mltt_1.mNat)());
166
+ if (term.kind !== 'pi')
167
+ throw new Error('expected pi');
168
+ (0, vitest_1.expect)((0, mltt_1.occursFree)('x', term.codomain)).toBe(false);
169
+ });
170
+ });
171
+ (0, vitest_1.describe)('MLTT / serialización', () => {
172
+ (0, vitest_1.it)('termToString para Π (x : Nat). Id(Nat, x, x)', () => {
173
+ const term = (0, mltt_1.mPi)('x', (0, mltt_1.mNat)(), (0, mltt_1.mId)((0, mltt_1.mNat)(), (0, mltt_1.mVar)('x'), (0, mltt_1.mVar)('x')));
174
+ (0, vitest_1.expect)((0, mltt_1.termToString)(term)).toBe('(Π (x : Nat). Id(Nat, x, x))');
175
+ });
176
+ (0, vitest_1.it)('termToString colapsa Π no-dependiente a →', () => {
177
+ const term = (0, mltt_1.mPi)('x', (0, mltt_1.mNat)(), (0, mltt_1.mNat)());
178
+ (0, vitest_1.expect)((0, mltt_1.termToString)(term)).toBe('(Nat → Nat)');
179
+ });
180
+ });
181
+ //# sourceMappingURL=mltt.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mltt.test.js","sourceRoot":"","sources":["../../../src/tests/mltt/mltt.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=check.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"check.test.d.ts","sourceRoot":"","sources":["../../../src/tests/mu-calculus/check.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,234 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const vitest_1 = require("vitest");
4
+ const mu_calculus_1 = require("../../profiles/mu-calculus");
5
+ // ── helpers para construir AST ────────────────────────────────
6
+ const atom = (name) => ({ kind: 'atom', name });
7
+ const v = (name) => ({ kind: 'var', name });
8
+ const not = (arg) => ({ kind: 'not', arg });
9
+ const and = (left, right) => ({ kind: 'and', left, right });
10
+ const or = (left, right) => ({ kind: 'or', left, right });
11
+ const box = (arg) => ({ kind: 'box', arg });
12
+ const diamond = (arg) => ({ kind: 'diamond', arg });
13
+ const mu = (bind, body) => ({ kind: 'mu', bind, body });
14
+ const nu = (bind, body) => ({ kind: 'nu', bind, body });
15
+ function k(states, transitions, labels = {}) {
16
+ const labelling = {};
17
+ for (const s of states)
18
+ labelling[s] = new Set(labels[s] ?? []);
19
+ return { states, transitions, labelling };
20
+ }
21
+ (0, vitest_1.describe)('μ-calculus — operadores modales base (◇/□)', () => {
22
+ // s0 --> s1{p}, s0 --> s2
23
+ const M = k(['s0', 's1', 's2'], [
24
+ ['s0', 's1'],
25
+ ['s0', 's2'],
26
+ ], { s1: ['p'] });
27
+ (0, vitest_1.it)('◇p: estados con algún sucesor que cumple p', () => {
28
+ const sat = (0, mu_calculus_1.modelCheck)(M, diamond(atom('p')));
29
+ (0, vitest_1.expect)(sat).toEqual(new Set(['s0']));
30
+ });
31
+ (0, vitest_1.it)('□p: estados cuyos sucesores TODOS cumplen p (deadlock incluido)', () => {
32
+ const sat = (0, mu_calculus_1.modelCheck)(M, box(atom('p')));
33
+ // s0: tiene un sucesor (s2) sin p ⇒ false
34
+ // s1, s2: deadlocks ⇒ vacuously true
35
+ (0, vitest_1.expect)(sat).toEqual(new Set(['s1', 's2']));
36
+ });
37
+ (0, vitest_1.it)('◇⊤ distingue deadlocks: solo estados con al menos un sucesor', () => {
38
+ const sat = (0, mu_calculus_1.modelCheck)(M, diamond(nu('T', v('T'))));
39
+ (0, vitest_1.expect)(sat).toEqual(new Set(['s0']));
40
+ });
41
+ });
42
+ (0, vitest_1.describe)('μ-calculus — least fixed-point (μ) y reachability', () => {
43
+ // Cadena: s0 -> s1 -> s2{p} -> s2 (auto-loop)
44
+ const M = k(['s0', 's1', 's2'], [
45
+ ['s0', 's1'],
46
+ ['s1', 's2'],
47
+ ['s2', 's2'],
48
+ ], { s2: ['p'] });
49
+ (0, vitest_1.it)('μX. p ∨ ◇X (EF p) — reachability hacia p', () => {
50
+ const phi = mu('X', or(atom('p'), diamond(v('X'))));
51
+ const sat = (0, mu_calculus_1.modelCheck)(M, phi);
52
+ (0, vitest_1.expect)(sat).toEqual(new Set(['s0', 's1', 's2']));
53
+ });
54
+ (0, vitest_1.it)('μX. p ∨ ◇X en grafo sin p alcanzable → ∅', () => {
55
+ const N = k(['a', 'b'], [['a', 'b']], {});
56
+ const phi = mu('X', or(atom('p'), diamond(v('X'))));
57
+ (0, vitest_1.expect)((0, mu_calculus_1.modelCheck)(N, phi)).toEqual(new Set());
58
+ });
59
+ });
60
+ (0, vitest_1.describe)('μ-calculus — greatest fixed-point (ν) e invariance', () => {
61
+ (0, vitest_1.it)('νX. p ∧ □X (AG p) — invariante sobre todos los caminos', () => {
62
+ // Todos los estados etiquetados p, con loop
63
+ const M = k(['s0', 's1'], [
64
+ ['s0', 's1'],
65
+ ['s1', 's0'],
66
+ ], { s0: ['p'], s1: ['p'] });
67
+ const phi = nu('X', and(atom('p'), box(v('X'))));
68
+ (0, vitest_1.expect)((0, mu_calculus_1.modelCheck)(M, phi)).toEqual(new Set(['s0', 's1']));
69
+ });
70
+ (0, vitest_1.it)('νX. p ∧ □X falla cuando algún estado alcanzable rompe p', () => {
71
+ const M = k(['s0', 's1', 's2'], [
72
+ ['s0', 's1'],
73
+ ['s1', 's2'],
74
+ ['s2', 's2'],
75
+ ], { s0: ['p'], s1: ['p'] });
76
+ const phi = nu('X', and(atom('p'), box(v('X'))));
77
+ // Ningún estado satisface AG p porque s2 (alcanzable desde todos) no la cumple
78
+ (0, vitest_1.expect)((0, mu_calculus_1.modelCheck)(M, phi)).toEqual(new Set());
79
+ });
80
+ (0, vitest_1.it)('νX. p ∧ ◇X (EG p) — existe camino infinito con p', () => {
81
+ // s0{p} -> s1{p} -> s0 (ciclo con p) ; s2{p} -> s3 (sin p, dead end)
82
+ const M = k(['s0', 's1', 's2', 's3'], [
83
+ ['s0', 's1'],
84
+ ['s1', 's0'],
85
+ ['s2', 's3'],
86
+ ], { s0: ['p'], s1: ['p'], s2: ['p'] });
87
+ const phi = nu('X', and(atom('p'), diamond(v('X'))));
88
+ (0, vitest_1.expect)((0, mu_calculus_1.modelCheck)(M, phi)).toEqual(new Set(['s0', 's1']));
89
+ });
90
+ });
91
+ (0, vitest_1.describe)('μ-calculus — Until (E[q U p])', () => {
92
+ (0, vitest_1.it)('μX. p ∨ (q ∧ ◇X) — alcanza p manteniendo q en el camino', () => {
93
+ // s0{q} -> s1{q} -> s2{p}; s0 -> s3 (sin q ni p)
94
+ const M = k(['s0', 's1', 's2', 's3'], [
95
+ ['s0', 's1'],
96
+ ['s1', 's2'],
97
+ ['s0', 's3'],
98
+ ], { s0: ['q'], s1: ['q'], s2: ['p'] });
99
+ const phi = mu('X', or(atom('p'), and(atom('q'), diamond(v('X')))));
100
+ // s2 cumple p ⇒ ok. s1 tiene q y sucesor s2 cumple φ. s0 tiene q y sucesor s1 cumple φ.
101
+ (0, vitest_1.expect)((0, mu_calculus_1.modelCheck)(M, phi)).toEqual(new Set(['s0', 's1', 's2']));
102
+ });
103
+ (0, vitest_1.it)('E[q U p] falla si el camino atraviesa estados sin q antes de p', () => {
104
+ // s0 (sin q) -> s1{p}: no satisface (necesita q en s0)
105
+ const M = k(['s0', 's1'], [['s0', 's1']], { s1: ['p'] });
106
+ const phi = mu('X', or(atom('p'), and(atom('q'), diamond(v('X')))));
107
+ (0, vitest_1.expect)((0, mu_calculus_1.modelCheck)(M, phi)).toEqual(new Set(['s1']));
108
+ });
109
+ });
110
+ (0, vitest_1.describe)('μ-calculus — alternation depth', () => {
111
+ (0, vitest_1.it)('proposición atómica: depth 0', () => {
112
+ (0, vitest_1.expect)((0, mu_calculus_1.alternationDepth)(atom('p'))).toBe(0);
113
+ });
114
+ (0, vitest_1.it)('un solo binder μ: depth 1', () => {
115
+ (0, vitest_1.expect)((0, mu_calculus_1.alternationDepth)(mu('X', or(atom('p'), diamond(v('X')))))).toBe(1);
116
+ });
117
+ (0, vitest_1.it)('un solo binder ν: depth 1', () => {
118
+ (0, vitest_1.expect)((0, mu_calculus_1.alternationDepth)(nu('X', and(atom('p'), box(v('X')))))).toBe(1);
119
+ });
120
+ (0, vitest_1.it)('μν alternantes: depth 2', () => {
121
+ // μX. νY. (p ∨ X) ∧ ◇Y
122
+ const phi = mu('X', nu('Y', and(or(atom('p'), v('X')), diamond(v('Y')))));
123
+ (0, vitest_1.expect)((0, mu_calculus_1.alternationDepth)(phi)).toBe(2);
124
+ });
125
+ (0, vitest_1.it)('μμ anidados sin alternancia: depth 1', () => {
126
+ const phi = mu('X', mu('Y', or(v('X'), v('Y'))));
127
+ (0, vitest_1.expect)((0, mu_calculus_1.alternationDepth)(phi)).toBe(1);
128
+ });
129
+ });
130
+ (0, vitest_1.describe)('μ-calculus — well-formedness', () => {
131
+ (0, vitest_1.it)('μX. p ∨ ◇X es positiva (X bajo 0 negaciones)', () => {
132
+ const phi = mu('X', or(atom('p'), diamond(v('X'))));
133
+ (0, vitest_1.expect)((0, mu_calculus_1.isWellFormed)(phi)).toBe(true);
134
+ });
135
+ (0, vitest_1.it)('μX. ¬X NO es bien formada (X bajo neg impar)', () => {
136
+ const phi = mu('X', not(v('X')));
137
+ (0, vitest_1.expect)((0, mu_calculus_1.isWellFormed)(phi)).toBe(false);
138
+ });
139
+ (0, vitest_1.it)('μX. ¬¬X es bien formada (X bajo neg par)', () => {
140
+ const phi = mu('X', not(not(v('X'))));
141
+ (0, vitest_1.expect)((0, mu_calculus_1.isWellFormed)(phi)).toBe(true);
142
+ });
143
+ (0, vitest_1.it)('detecta variables libres', () => {
144
+ const phi = or(atom('p'), v('X')); // X libre
145
+ (0, vitest_1.expect)((0, mu_calculus_1.isClosed)(phi)).toBe(false);
146
+ (0, vitest_1.expect)((0, mu_calculus_1.freeVars)(phi)).toEqual(new Set(['X']));
147
+ });
148
+ (0, vitest_1.it)('fórmula cerrada no reporta variables libres', () => {
149
+ const phi = nu('X', and(atom('p'), box(v('X'))));
150
+ (0, vitest_1.expect)((0, mu_calculus_1.isClosed)(phi)).toBe(true);
151
+ (0, vitest_1.expect)((0, mu_calculus_1.freeVars)(phi)).toEqual(new Set());
152
+ });
153
+ (0, vitest_1.it)('μX. p ∨ ◇(¬X) NO es bien formada — X bajo negación impar bajo ◇', () => {
154
+ const phi = mu('X', or(atom('p'), diamond(not(v('X')))));
155
+ (0, vitest_1.expect)((0, mu_calculus_1.isWellFormed)(phi)).toBe(false);
156
+ });
157
+ });
158
+ (0, vitest_1.describe)('μ-calculus — ctlToMu translator', () => {
159
+ (0, vitest_1.it)('EX p → ◇p', () => {
160
+ const mu1 = (0, mu_calculus_1.ctlToMu)({ kind: 'EX', arg: { kind: 'atom', name: 'p' } });
161
+ (0, vitest_1.expect)(mu1).toEqual({ kind: 'diamond', arg: { kind: 'atom', name: 'p' } });
162
+ });
163
+ (0, vitest_1.it)('AX p → □p', () => {
164
+ const mu1 = (0, mu_calculus_1.ctlToMu)({ kind: 'AX', arg: { kind: 'atom', name: 'p' } });
165
+ (0, vitest_1.expect)(mu1).toEqual({ kind: 'box', arg: { kind: 'atom', name: 'p' } });
166
+ });
167
+ (0, vitest_1.it)('EF p produce μX. p ∨ ◇X equivalente al manual', () => {
168
+ const M = k(['s0', 's1'], [['s0', 's1']], { s1: ['p'] });
169
+ const muForm = (0, mu_calculus_1.ctlToMu)({ kind: 'EF', arg: { kind: 'atom', name: 'p' } });
170
+ (0, vitest_1.expect)((0, mu_calculus_1.modelCheck)(M, muForm)).toEqual(new Set(['s0', 's1']));
171
+ });
172
+ (0, vitest_1.it)('AG p coincide con νX. p ∧ □X sobre modelos no triviales', () => {
173
+ const M = k(['s0', 's1'], [
174
+ ['s0', 's1'],
175
+ ['s1', 's0'],
176
+ ], { s0: ['p'], s1: ['p'] });
177
+ const auto = (0, mu_calculus_1.ctlToMu)({ kind: 'AG', arg: { kind: 'atom', name: 'p' } });
178
+ const manual = nu('X', and(atom('p'), box(v('X'))));
179
+ (0, vitest_1.expect)((0, mu_calculus_1.modelCheck)(M, auto)).toEqual((0, mu_calculus_1.modelCheck)(M, manual));
180
+ (0, vitest_1.expect)((0, mu_calculus_1.modelCheck)(M, auto)).toEqual(new Set(['s0', 's1']));
181
+ });
182
+ (0, vitest_1.it)('EG p detecta camino infinito con p', () => {
183
+ const M = k(['s0', 's1', 's2'], [
184
+ ['s0', 's1'],
185
+ ['s1', 's0'],
186
+ ['s2', 's2'],
187
+ ], { s0: ['p'], s1: ['p'] });
188
+ const phi = (0, mu_calculus_1.ctlToMu)({ kind: 'EG', arg: { kind: 'atom', name: 'p' } });
189
+ (0, vitest_1.expect)((0, mu_calculus_1.modelCheck)(M, phi)).toEqual(new Set(['s0', 's1']));
190
+ });
191
+ (0, vitest_1.it)('E[q U p] coincide con codificación manual', () => {
192
+ const M = k(['s0', 's1', 's2'], [
193
+ ['s0', 's1'],
194
+ ['s1', 's2'],
195
+ ], { s0: ['q'], s1: ['q'], s2: ['p'] });
196
+ const auto = (0, mu_calculus_1.ctlToMu)({
197
+ kind: 'EU',
198
+ left: { kind: 'atom', name: 'q' },
199
+ right: { kind: 'atom', name: 'p' },
200
+ });
201
+ (0, vitest_1.expect)((0, mu_calculus_1.modelCheck)(M, auto)).toEqual(new Set(['s0', 's1', 's2']));
202
+ });
203
+ (0, vitest_1.it)('not/and/or se traducen estructuralmente', () => {
204
+ const phi = (0, mu_calculus_1.ctlToMu)({
205
+ kind: 'and',
206
+ args: [
207
+ { kind: 'atom', name: 'p' },
208
+ { kind: 'not', arg: { kind: 'atom', name: 'q' } },
209
+ ],
210
+ });
211
+ const M = k(['s0', 's1'], [], { s0: ['p'], s1: ['p', 'q'] });
212
+ (0, vitest_1.expect)((0, mu_calculus_1.modelCheck)(M, phi)).toEqual(new Set(['s0']));
213
+ });
214
+ });
215
+ (0, vitest_1.describe)('μ-calculus — utilidades', () => {
216
+ (0, vitest_1.it)('muToString renderiza con símbolos estándar', () => {
217
+ const phi = mu('X', or(atom('p'), diamond(v('X'))));
218
+ (0, vitest_1.expect)((0, mu_calculus_1.muToString)(phi)).toBe('μX. (p ∨ ◇X)');
219
+ });
220
+ (0, vitest_1.it)('satisfiesAt es coherente con modelCheck', () => {
221
+ const M = k(['s0', 's1'], [['s0', 's1']], { s1: ['p'] });
222
+ const phi = diamond(atom('p'));
223
+ (0, vitest_1.expect)((0, mu_calculus_1.satisfiesAt)(M, phi, 's0')).toBe(true);
224
+ (0, vitest_1.expect)((0, mu_calculus_1.satisfiesAt)(M, phi, 's1')).toBe(false);
225
+ });
226
+ (0, vitest_1.it)('modelCheck lanza ante transición a estado desconocido', () => {
227
+ (0, vitest_1.expect)(() => (0, mu_calculus_1.modelCheck)({ states: ['s0'], transitions: [['s0', 'ghost']], labelling: { s0: new Set() } }, atom('p'))).toThrow(/estado desconocido/);
228
+ });
229
+ (0, vitest_1.it)('modelCheck lanza ante variable libre en evaluación', () => {
230
+ const M = k(['s0'], [], {});
231
+ (0, vitest_1.expect)(() => (0, mu_calculus_1.modelCheck)(M, v('X'))).toThrow(/variable libre/);
232
+ });
233
+ });
234
+ //# sourceMappingURL=check.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"check.test.js","sourceRoot":"","sources":["../../../src/tests/mu-calculus/check.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=nbe.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nbe.test.d.ts","sourceRoot":"","sources":["../../../src/tests/nbe/nbe.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,121 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const vitest_1 = require("vitest");
4
+ const nbe_1 = require("../../nbe");
5
+ // ---------- Tipos base reutilizables ----------
6
+ const P = (0, nbe_1.tBase)('P');
7
+ const Q = (0, nbe_1.tBase)('Q');
8
+ const PtoP = (0, nbe_1.tArr)(P, P);
9
+ const PtoPtoP = (0, nbe_1.tArr)(P, PtoP);
10
+ (0, vitest_1.describe)('NbE — Normalization by Evaluation para STLC', () => {
11
+ (0, vitest_1.it)('β-reduce: (λx:P. x) y ⇒ y', () => {
12
+ // y es libre de tipo P
13
+ const t = (0, nbe_1.ap)((0, nbe_1.lam)('x', P, (0, nbe_1.v)('x')), (0, nbe_1.v)('y'));
14
+ const nf = (0, nbe_1.normalize)(t, P);
15
+ (0, vitest_1.expect)((0, nbe_1.alphaEq)(nf, (0, nbe_1.v)('y'))).toBe(true);
16
+ });
17
+ (0, vitest_1.it)('η-long: identidad en P→P queda como λ_x0:P. _x0', () => {
18
+ const t = (0, nbe_1.lam)('x', P, (0, nbe_1.v)('x'));
19
+ const nf = (0, nbe_1.normalize)(t, PtoP);
20
+ // Esperamos λ?:P. ? (α-equivalente a la identidad)
21
+ (0, vitest_1.expect)((0, nbe_1.alphaEq)(nf, (0, nbe_1.lam)('y', P, (0, nbe_1.v)('y')))).toBe(true);
22
+ });
23
+ (0, vitest_1.it)('η-expansión de variable libre f : P→P ⇒ λ_x0:P. f _x0', () => {
24
+ const t = (0, nbe_1.v)('f'); // libre
25
+ const nf = (0, nbe_1.normalize)(t, PtoP);
26
+ (0, vitest_1.expect)((0, nbe_1.alphaEq)(nf, (0, nbe_1.lam)('z', P, (0, nbe_1.ap)((0, nbe_1.v)('f'), (0, nbe_1.v)('z'))))).toBe(true);
27
+ });
28
+ (0, vitest_1.it)('η-expansión profunda de f : (P→P)→(P→P)', () => {
29
+ const t = (0, nbe_1.v)('f');
30
+ const nf = (0, nbe_1.normalize)(t, (0, nbe_1.tArr)(PtoP, PtoP));
31
+ // λg:P→P. λx:P. f g x
32
+ const expected = (0, nbe_1.lam)('g', PtoP, (0, nbe_1.lam)('x', P, (0, nbe_1.ap)((0, nbe_1.ap)((0, nbe_1.v)('f'), (0, nbe_1.v)('g')), (0, nbe_1.v)('x'))));
33
+ (0, vitest_1.expect)((0, nbe_1.alphaEq)(nf, expected)).toBe(true);
34
+ });
35
+ (0, vitest_1.it)('forma normal ya normal: λx:P→P. λy:P. x y estable módulo α', () => {
36
+ const t = (0, nbe_1.lam)('x', PtoP, (0, nbe_1.lam)('y', P, (0, nbe_1.ap)((0, nbe_1.v)('x'), (0, nbe_1.v)('y'))));
37
+ const nf = (0, nbe_1.normalize)(t, (0, nbe_1.tArr)(PtoP, PtoP));
38
+ (0, vitest_1.expect)((0, nbe_1.alphaEq)(nf, t)).toBe(true);
39
+ });
40
+ (0, vitest_1.it)('β + η combinados: (λf:P→P. λx:P. f (f x)) (λy:P. y) ⇒ λ_x:P. _x', () => {
41
+ const inner = (0, nbe_1.lam)('y', P, (0, nbe_1.v)('y')); // id
42
+ const doubled = (0, nbe_1.lam)('f', PtoP, (0, nbe_1.lam)('x', P, (0, nbe_1.ap)((0, nbe_1.v)('f'), (0, nbe_1.ap)((0, nbe_1.v)('f'), (0, nbe_1.v)('x')))));
43
+ const t = (0, nbe_1.ap)(doubled, inner);
44
+ const nf = (0, nbe_1.normalize)(t, PtoP);
45
+ (0, vitest_1.expect)((0, nbe_1.alphaEq)(nf, (0, nbe_1.lam)('x', P, (0, nbe_1.v)('x')))).toBe(true);
46
+ });
47
+ (0, vitest_1.it)('K combinator (λx:P. λy:Q. x) aplicado a a:P ⇒ λy:Q. a', () => {
48
+ const K = (0, nbe_1.lam)('x', P, (0, nbe_1.lam)('y', Q, (0, nbe_1.v)('x')));
49
+ const t = (0, nbe_1.ap)(K, (0, nbe_1.v)('a'));
50
+ const nf = (0, nbe_1.normalize)(t, (0, nbe_1.tArr)(Q, P));
51
+ (0, vitest_1.expect)((0, nbe_1.alphaEq)(nf, (0, nbe_1.lam)('y', Q, (0, nbe_1.v)('a')))).toBe(true);
52
+ });
53
+ (0, vitest_1.it)('Church-style const: (λx:P. λy:P. y) a b ⇒ b', () => {
54
+ const term = (0, nbe_1.apN)((0, nbe_1.lam)('x', P, (0, nbe_1.lam)('y', P, (0, nbe_1.v)('y'))), (0, nbe_1.v)('a'), (0, nbe_1.v)('b'));
55
+ const nf = (0, nbe_1.normalize)(term, P);
56
+ (0, vitest_1.expect)((0, nbe_1.alphaEq)(nf, (0, nbe_1.v)('b'))).toBe(true);
57
+ });
58
+ (0, vitest_1.it)('aplicación atascada: f a con f libre P→P ⇒ f a (no se simplifica)', () => {
59
+ const t = (0, nbe_1.ap)((0, nbe_1.v)('f'), (0, nbe_1.v)('a'));
60
+ const nf = (0, nbe_1.normalize)(t, P);
61
+ (0, vitest_1.expect)((0, nbe_1.alphaEq)(nf, (0, nbe_1.ap)((0, nbe_1.v)('f'), (0, nbe_1.v)('a')))).toBe(true);
62
+ });
63
+ (0, vitest_1.it)('determinismo: misma entrada produce misma salida string-a-string', () => {
64
+ const t = (0, nbe_1.ap)((0, nbe_1.lam)('x', P, (0, nbe_1.v)('x')), (0, nbe_1.v)('y'));
65
+ const a = (0, nbe_1.termToString)((0, nbe_1.normalize)(t, P));
66
+ const b = (0, nbe_1.termToString)((0, nbe_1.normalize)(t, P));
67
+ const c = (0, nbe_1.termToString)((0, nbe_1.normalize)(t, P));
68
+ (0, vitest_1.expect)(a).toBe(b);
69
+ (0, vitest_1.expect)(b).toBe(c);
70
+ });
71
+ (0, vitest_1.it)('β-reducción con captura evitada: (λx:P. λy:P. x) y ⇒ λ_y:P. y_outer', () => {
72
+ // El "y" exterior es la variable libre; el binder interno NO debe
73
+ // capturarla. Como reify usa supply fresco, el binder queda como
74
+ // _x0 (u otro nombre fresco), no como "y".
75
+ const t = (0, nbe_1.ap)((0, nbe_1.lam)('x', P, (0, nbe_1.lam)('y', P, (0, nbe_1.v)('x'))), (0, nbe_1.v)('y'));
76
+ const nf = (0, nbe_1.normalize)(t, (0, nbe_1.tArr)(P, P));
77
+ // El resultado debe ser α-equivalente a λz:P. y
78
+ (0, vitest_1.expect)((0, nbe_1.alphaEq)(nf, (0, nbe_1.lam)('z', P, (0, nbe_1.v)('y')))).toBe(true);
79
+ });
80
+ (0, vitest_1.it)('aplicación n-aria: (λx:P. λy:P. λz:P. x) a b c ⇒ a', () => {
81
+ const f = (0, nbe_1.lam)('x', P, (0, nbe_1.lam)('y', P, (0, nbe_1.lam)('z', P, (0, nbe_1.v)('x'))));
82
+ const t = (0, nbe_1.apN)(f, (0, nbe_1.v)('a'), (0, nbe_1.v)('b'), (0, nbe_1.v)('c'));
83
+ const nf = (0, nbe_1.normalize)(t, P);
84
+ (0, vitest_1.expect)((0, nbe_1.alphaEq)(nf, (0, nbe_1.v)('a'))).toBe(true);
85
+ });
86
+ (0, vitest_1.it)('S-like: (λf:P→P→P. λx:P. f x x) (λa:P. λb:P. a) v ⇒ v', () => {
87
+ // f := proj1 (λa:P. λb:P. a)
88
+ // λx:P. f x x = λx:P. (λa.λb.a) x x ⇒ λx:P. x
89
+ // Aplicado a v ⇒ v
90
+ const proj1 = (0, nbe_1.lam)('a', P, (0, nbe_1.lam)('b', P, (0, nbe_1.v)('a')));
91
+ const w = (0, nbe_1.lam)('f', PtoPtoP, (0, nbe_1.lam)('x', P, (0, nbe_1.ap)((0, nbe_1.ap)((0, nbe_1.v)('f'), (0, nbe_1.v)('x')), (0, nbe_1.v)('x'))));
92
+ const t = (0, nbe_1.ap)((0, nbe_1.ap)(w, proj1), (0, nbe_1.v)('v_arg'));
93
+ const nf = (0, nbe_1.normalize)(t, P);
94
+ (0, vitest_1.expect)((0, nbe_1.alphaEq)(nf, (0, nbe_1.v)('v_arg'))).toBe(true);
95
+ });
96
+ (0, vitest_1.it)('evaluate produce una clausura para una λ', () => {
97
+ const val = (0, nbe_1.evaluate)((0, nbe_1.lam)('x', P, (0, nbe_1.v)('x')), new Map());
98
+ (0, vitest_1.expect)(val.kind).toBe('closure');
99
+ });
100
+ (0, vitest_1.it)('reify con supply explícito es reproducible', () => {
101
+ const t = (0, nbe_1.v)('f'); // libre, tipo P→P
102
+ const val = (0, nbe_1.evaluate)(t, new Map());
103
+ const a = (0, nbe_1.termToString)((0, nbe_1.reify)(val, PtoP, (0, nbe_1.makeFreshSupply)('q')));
104
+ const b = (0, nbe_1.termToString)((0, nbe_1.reify)(val, PtoP, (0, nbe_1.makeFreshSupply)('q')));
105
+ (0, vitest_1.expect)(a).toBe(b);
106
+ // El nombre fresco debe aparecer con el prefijo elegido.
107
+ (0, vitest_1.expect)(a.includes('q0')).toBe(true);
108
+ });
109
+ (0, vitest_1.it)('idempotencia: normalize(normalize(t)) ≡α normalize(t)', () => {
110
+ const t = (0, nbe_1.ap)((0, nbe_1.lam)('f', PtoP, (0, nbe_1.lam)('x', P, (0, nbe_1.ap)((0, nbe_1.v)('f'), (0, nbe_1.ap)((0, nbe_1.v)('f'), (0, nbe_1.v)('x'))))), (0, nbe_1.lam)('y', P, (0, nbe_1.v)('y')));
111
+ const nf1 = (0, nbe_1.normalize)(t, PtoP);
112
+ const nf2 = (0, nbe_1.normalize)(nf1, PtoP);
113
+ (0, vitest_1.expect)((0, nbe_1.alphaEq)(nf1, nf2)).toBe(true);
114
+ });
115
+ (0, vitest_1.it)('η-expansión en aplicación parcial: (λx:P→P. x) f con f:P→P ⇒ λ_x:P. f _x', () => {
116
+ const t = (0, nbe_1.ap)((0, nbe_1.lam)('x', PtoP, (0, nbe_1.v)('x')), (0, nbe_1.v)('f'));
117
+ const nf = (0, nbe_1.normalize)(t, PtoP);
118
+ (0, vitest_1.expect)((0, nbe_1.alphaEq)(nf, (0, nbe_1.lam)('z', P, (0, nbe_1.ap)((0, nbe_1.v)('f'), (0, nbe_1.v)('z'))))).toBe(true);
119
+ });
120
+ });
121
+ //# sourceMappingURL=nbe.test.js.map