@stevenvo780/st-lang 4.14.0 → 4.14.1

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 (406) hide show
  1. package/README.md +6 -6
  2. package/dist/ast/nodes.d.ts +50 -0
  3. package/dist/ast/nodes.d.ts.map +1 -1
  4. package/dist/format/stnb/parser.d.ts +14 -0
  5. package/dist/format/stnb/parser.d.ts.map +1 -0
  6. package/dist/format/stnb/parser.js +123 -0
  7. package/dist/format/stnb/parser.js.map +1 -0
  8. package/dist/format/stnb/types.d.ts +45 -0
  9. package/dist/format/stnb/types.d.ts.map +1 -0
  10. package/dist/format/stnb/types.js +7 -0
  11. package/dist/format/stnb/types.js.map +1 -0
  12. package/dist/logic/profile-bridge/index.d.ts.map +1 -1
  13. package/dist/logic/profile-bridge/index.js +20 -3
  14. package/dist/logic/profile-bridge/index.js.map +1 -1
  15. package/dist/logic/profiles/classical/propositional.d.ts.map +1 -1
  16. package/dist/logic/profiles/classical/propositional.js.map +1 -1
  17. package/dist/logic/profiles/ctl/check.d.ts.map +1 -1
  18. package/dist/logic/profiles/ctl/check.js +21 -11
  19. package/dist/logic/profiles/ctl/check.js.map +1 -1
  20. package/dist/logic/profiles/ctl/witness.d.ts.map +1 -1
  21. package/dist/logic/profiles/ctl/witness.js +2 -0
  22. package/dist/logic/profiles/ctl/witness.js.map +1 -1
  23. package/dist/logic/profiles/description-logic/types.d.ts +15 -0
  24. package/dist/logic/profiles/description-logic/types.d.ts.map +1 -1
  25. package/dist/logic/profiles/description-logic/types.js +13 -0
  26. package/dist/logic/profiles/description-logic/types.js.map +1 -1
  27. package/dist/logic/profiles/hybrid-logic/types.d.ts +17 -0
  28. package/dist/logic/profiles/hybrid-logic/types.d.ts.map +1 -1
  29. package/dist/logic/profiles/hybrid-logic/types.js +17 -0
  30. package/dist/logic/profiles/hybrid-logic/types.js.map +1 -1
  31. package/dist/logic/profiles/intuitionistic-nj/kripke.d.ts.map +1 -1
  32. package/dist/logic/profiles/intuitionistic-nj/kripke.js +8 -5
  33. package/dist/logic/profiles/intuitionistic-nj/kripke.js.map +1 -1
  34. package/dist/logic/profiles/ltl-sat/tableau.d.ts +31 -0
  35. package/dist/logic/profiles/ltl-sat/tableau.d.ts.map +1 -1
  36. package/dist/logic/profiles/ltl-sat/tableau.js +18 -0
  37. package/dist/logic/profiles/ltl-sat/tableau.js.map +1 -1
  38. package/dist/logic/profiles/ltl-sat/types.d.ts +15 -0
  39. package/dist/logic/profiles/ltl-sat/types.d.ts.map +1 -1
  40. package/dist/logic/profiles/ltl-sat/types.js +2 -1
  41. package/dist/logic/profiles/ltl-sat/types.js.map +1 -1
  42. package/dist/logic/profiles/modal-frame-axioms/formula.d.ts +10 -0
  43. package/dist/logic/profiles/modal-frame-axioms/formula.d.ts.map +1 -1
  44. package/dist/logic/profiles/modal-frame-axioms/formula.js +10 -0
  45. package/dist/logic/profiles/modal-frame-axioms/formula.js.map +1 -1
  46. package/dist/logic/profiles/mu-calculus/check.d.ts.map +1 -1
  47. package/dist/logic/profiles/mu-calculus/check.js +7 -4
  48. package/dist/logic/profiles/mu-calculus/check.js.map +1 -1
  49. package/dist/logic/profiles/natural-deduction-nk/formula.d.ts +8 -0
  50. package/dist/logic/profiles/natural-deduction-nk/formula.d.ts.map +1 -1
  51. package/dist/logic/profiles/natural-deduction-nk/formula.js +8 -0
  52. package/dist/logic/profiles/natural-deduction-nk/formula.js.map +1 -1
  53. package/dist/logic/profiles/quantum/index.d.ts.map +1 -1
  54. package/dist/logic/profiles/quantum/index.js +11 -8
  55. package/dist/logic/profiles/quantum/index.js.map +1 -1
  56. package/dist/logic/profiles/sequent-lj/index.d.ts +90 -0
  57. package/dist/logic/profiles/sequent-lj/index.d.ts.map +1 -0
  58. package/dist/logic/profiles/sequent-lj/index.js +903 -0
  59. package/dist/logic/profiles/sequent-lj/index.js.map +1 -0
  60. package/dist/logic/profiles/shared/tableau-engine.d.ts.map +1 -1
  61. package/dist/logic/profiles/shared/tableau-engine.js +0 -17
  62. package/dist/logic/profiles/shared/tableau-engine.js.map +1 -1
  63. package/dist/namespaces/proof-systems.d.ts +1 -1
  64. package/dist/namespaces/proof-systems.d.ts.map +1 -1
  65. package/dist/namespaces/proof-systems.js.map +1 -1
  66. package/dist/namespaces/semantics.d.ts +1 -1
  67. package/dist/namespaces/semantics.d.ts.map +1 -1
  68. package/dist/namespaces/semantics.js.map +1 -1
  69. package/dist/proof-systems/distributed-exchange/index.d.ts +29 -0
  70. package/dist/proof-systems/distributed-exchange/index.d.ts.map +1 -1
  71. package/dist/proof-systems/distributed-exchange/index.js +18 -0
  72. package/dist/proof-systems/distributed-exchange/index.js.map +1 -1
  73. package/dist/proof-systems/fol-prover/types.d.ts +16 -0
  74. package/dist/proof-systems/fol-prover/types.d.ts.map +1 -1
  75. package/dist/proof-systems/fol-prover/types.js +7 -0
  76. package/dist/proof-systems/fol-prover/types.js.map +1 -1
  77. package/dist/proof-systems/fol-prover-advanced/index.d.ts +3 -3
  78. package/dist/proof-systems/fol-prover-advanced/index.d.ts.map +1 -1
  79. package/dist/proof-systems/fol-prover-advanced/index.js.map +1 -1
  80. package/dist/proof-systems/fol-prover-advanced/ordering.js +1 -1
  81. package/dist/proof-systems/fol-prover-advanced/prover.d.ts.map +1 -1
  82. package/dist/proof-systems/fol-prover-advanced/prover.js +19 -12
  83. package/dist/proof-systems/fol-prover-advanced/prover.js.map +1 -1
  84. package/dist/proof-systems/fol-prover-advanced/resolve.d.ts.map +1 -1
  85. package/dist/proof-systems/fol-prover-advanced/resolve.js +7 -7
  86. package/dist/proof-systems/fol-prover-advanced/resolve.js.map +1 -1
  87. package/dist/proof-systems/fol-prover-advanced/subsumption.d.ts.map +1 -1
  88. package/dist/proof-systems/fol-prover-advanced/subsumption.js.map +1 -1
  89. package/dist/proof-systems/fol-prover-advanced/types.d.ts +12 -0
  90. package/dist/proof-systems/fol-prover-advanced/types.d.ts.map +1 -1
  91. package/dist/proof-systems/fol-prover-advanced/unify.js +2 -2
  92. package/dist/proof-systems/fol-prover-equality/term-utils.d.ts +46 -0
  93. package/dist/proof-systems/fol-prover-equality/term-utils.d.ts.map +1 -1
  94. package/dist/proof-systems/fol-prover-equality/term-utils.js +46 -0
  95. package/dist/proof-systems/fol-prover-equality/term-utils.js.map +1 -1
  96. package/dist/proof-systems/proof-nets/correctness.d.ts.map +1 -1
  97. package/dist/proof-systems/proof-nets/correctness.js +24 -12
  98. package/dist/proof-systems/proof-nets/correctness.js.map +1 -1
  99. package/dist/proof-systems/proof-nets/types.d.ts +18 -0
  100. package/dist/proof-systems/proof-nets/types.d.ts.map +1 -1
  101. package/dist/proof-systems/proof-nets/types.js +6 -0
  102. package/dist/proof-systems/proof-nets/types.js.map +1 -1
  103. package/dist/proof-systems/tableau-framework/TableauProver.d.ts.map +1 -1
  104. package/dist/proof-systems/tableau-framework/TableauProver.js +5 -5
  105. package/dist/proof-systems/tableau-framework/TableauProver.js.map +1 -1
  106. package/dist/proof-systems/tableau-framework/propositional.d.ts.map +1 -1
  107. package/dist/proof-systems/tableau-framework/propositional.js +21 -21
  108. package/dist/proof-systems/tableau-framework/propositional.js.map +1 -1
  109. package/dist/reasoning/ban-logic/terms.d.ts +24 -0
  110. package/dist/reasoning/ban-logic/terms.d.ts.map +1 -1
  111. package/dist/reasoning/ban-logic/terms.js +24 -0
  112. package/dist/reasoning/ban-logic/terms.js.map +1 -1
  113. package/dist/reasoning/bayesian/factor.js +8 -8
  114. package/dist/reasoning/bayesian/factor.js.map +1 -1
  115. package/dist/reasoning/bayesian/inference.d.ts.map +1 -1
  116. package/dist/reasoning/bayesian/inference.js +11 -5
  117. package/dist/reasoning/bayesian/inference.js.map +1 -1
  118. package/dist/reasoning/combinatorics/generators.js.map +1 -1
  119. package/dist/reasoning/combinatorics/index.d.ts +3 -3
  120. package/dist/reasoning/combinatorics/index.d.ts.map +1 -1
  121. package/dist/reasoning/combinatorics/index.js.map +1 -1
  122. package/dist/reasoning/combinatorics/set-partitions.js.map +1 -1
  123. package/dist/reasoning/combinatorics/special-numbers.d.ts.map +1 -1
  124. package/dist/reasoning/combinatorics/special-numbers.js.map +1 -1
  125. package/dist/reasoning/constructive-analysis/cauchy.js +2 -2
  126. package/dist/reasoning/constructive-analysis/compact.js +1 -1
  127. package/dist/reasoning/constructive-analysis/continuity.d.ts.map +1 -1
  128. package/dist/reasoning/constructive-analysis/continuity.js +4 -4
  129. package/dist/reasoning/constructive-analysis/continuity.js.map +1 -1
  130. package/dist/reasoning/constructive-analysis/index.d.ts.map +1 -1
  131. package/dist/reasoning/constructive-analysis/index.js.map +1 -1
  132. package/dist/reasoning/constructive-analysis/ivt.d.ts.map +1 -1
  133. package/dist/reasoning/constructive-analysis/ivt.js +2 -2
  134. package/dist/reasoning/constructive-analysis/ivt.js.map +1 -1
  135. package/dist/reasoning/constructive-reals/index.d.ts.map +1 -1
  136. package/dist/reasoning/constructive-reals/index.js +4 -8
  137. package/dist/reasoning/constructive-reals/index.js.map +1 -1
  138. package/dist/reasoning/galois-fields/index.d.ts +64 -0
  139. package/dist/reasoning/galois-fields/index.d.ts.map +1 -1
  140. package/dist/reasoning/galois-fields/index.js +56 -6
  141. package/dist/reasoning/galois-fields/index.js.map +1 -1
  142. package/dist/reasoning/graph-theory/index.d.ts +31 -0
  143. package/dist/reasoning/graph-theory/index.d.ts.map +1 -1
  144. package/dist/reasoning/graph-theory/index.js +28 -10
  145. package/dist/reasoning/graph-theory/index.js.map +1 -1
  146. package/dist/reasoning/hoare-logic/index.d.ts +34 -0
  147. package/dist/reasoning/hoare-logic/index.d.ts.map +1 -1
  148. package/dist/reasoning/hoare-logic/index.js +26 -0
  149. package/dist/reasoning/hoare-logic/index.js.map +1 -1
  150. package/dist/reasoning/hyperreal/index.d.ts +30 -0
  151. package/dist/reasoning/hyperreal/index.d.ts.map +1 -1
  152. package/dist/reasoning/hyperreal/index.js +25 -0
  153. package/dist/reasoning/hyperreal/index.js.map +1 -1
  154. package/dist/reasoning/information-theory/index.d.ts +34 -0
  155. package/dist/reasoning/information-theory/index.d.ts.map +1 -1
  156. package/dist/reasoning/information-theory/index.js +27 -44
  157. package/dist/reasoning/information-theory/index.js.map +1 -1
  158. package/dist/reasoning/lemma-synthesis/index.d.ts +36 -0
  159. package/dist/reasoning/lemma-synthesis/index.d.ts.map +1 -1
  160. package/dist/reasoning/lemma-synthesis/index.js +12 -0
  161. package/dist/reasoning/lemma-synthesis/index.js.map +1 -1
  162. package/dist/reasoning/linear-algebra/index.d.ts +38 -0
  163. package/dist/reasoning/linear-algebra/index.d.ts.map +1 -1
  164. package/dist/reasoning/linear-algebra/index.js +34 -5
  165. package/dist/reasoning/linear-algebra/index.js.map +1 -1
  166. package/dist/reasoning/markov-logic/grounding.js +1 -1
  167. package/dist/reasoning/markov-logic/grounding.js.map +1 -1
  168. package/dist/reasoning/markov-logic/inference.js +1 -1
  169. package/dist/reasoning/markov-logic/inference.js.map +1 -1
  170. package/dist/reasoning/order-theory/index.d.ts +121 -0
  171. package/dist/reasoning/order-theory/index.d.ts.map +1 -0
  172. package/dist/reasoning/order-theory/index.js +562 -0
  173. package/dist/reasoning/order-theory/index.js.map +1 -0
  174. package/dist/reasoning/peano-arithmetic/index.d.ts +114 -0
  175. package/dist/reasoning/peano-arithmetic/index.d.ts.map +1 -0
  176. package/dist/reasoning/peano-arithmetic/index.js +650 -0
  177. package/dist/reasoning/peano-arithmetic/index.js.map +1 -0
  178. package/dist/reasoning/polynomial-ring/index.d.ts +80 -0
  179. package/dist/reasoning/polynomial-ring/index.d.ts.map +1 -1
  180. package/dist/reasoning/polynomial-ring/index.js +75 -0
  181. package/dist/reasoning/polynomial-ring/index.js.map +1 -1
  182. package/dist/reasoning/separation-logic/index.d.ts +30 -0
  183. package/dist/reasoning/separation-logic/index.d.ts.map +1 -1
  184. package/dist/reasoning/separation-logic/index.js +21 -0
  185. package/dist/reasoning/separation-logic/index.js.map +1 -1
  186. package/dist/reasoning/set-theory/hf-functions.js +3 -3
  187. package/dist/reasoning/set-theory/hf-sets.js +1 -1
  188. package/dist/reasoning/set-theory/index.d.ts +3 -3
  189. package/dist/reasoning/set-theory/index.d.ts.map +1 -1
  190. package/dist/reasoning/set-theory/zfc-axioms.js +4 -4
  191. package/dist/reasoning/tactic-dsl/tactics.d.ts +87 -0
  192. package/dist/reasoning/tactic-dsl/tactics.d.ts.map +1 -1
  193. package/dist/reasoning/tactic-dsl/tactics.js +86 -36
  194. package/dist/reasoning/tactic-dsl/tactics.js.map +1 -1
  195. package/dist/reasoning/topology/index.d.ts +81 -0
  196. package/dist/reasoning/topology/index.d.ts.map +1 -1
  197. package/dist/reasoning/topology/index.js +69 -45
  198. package/dist/reasoning/topology/index.js.map +1 -1
  199. package/dist/runtime/countermodel-min/minimize.js +0 -0
  200. package/dist/runtime/countermodel-min/minimize.js.map +1 -1
  201. package/dist/runtime/csp-hoare/semantics.d.ts +12 -0
  202. package/dist/runtime/csp-hoare/semantics.d.ts.map +1 -1
  203. package/dist/runtime/csp-hoare/semantics.js +12 -0
  204. package/dist/runtime/csp-hoare/semantics.js.map +1 -1
  205. package/dist/runtime/symbolic-diff/constructors.d.ts +20 -0
  206. package/dist/runtime/symbolic-diff/constructors.d.ts.map +1 -1
  207. package/dist/runtime/symbolic-diff/constructors.js +20 -0
  208. package/dist/runtime/symbolic-diff/constructors.js.map +1 -1
  209. package/dist/runtime/term-rewriting/term-utils.d.ts.map +1 -1
  210. package/dist/runtime/term-rewriting/term-utils.js +33 -2
  211. package/dist/runtime/term-rewriting/term-utils.js.map +1 -1
  212. package/dist/runtime/typecheck/checker.js +2 -2
  213. package/dist/runtime/typecheck/checker.js.map +1 -1
  214. package/dist/runtime/typecheck/levenshtein.js +1 -1
  215. package/dist/runtime/typecheck/levenshtein.js.map +1 -1
  216. package/dist/semantics/categorical/fin-set.d.ts.map +1 -1
  217. package/dist/semantics/categorical/fin-set.js +8 -1
  218. package/dist/semantics/categorical/fin-set.js.map +1 -1
  219. package/dist/semantics/categorical/free.d.ts.map +1 -1
  220. package/dist/semantics/categorical/free.js +8 -2
  221. package/dist/semantics/categorical/free.js.map +1 -1
  222. package/dist/semantics/categorical/limits.d.ts.map +1 -1
  223. package/dist/semantics/categorical/limits.js +13 -4
  224. package/dist/semantics/categorical/limits.js.map +1 -1
  225. package/dist/semantics/categorical/monoidal.d.ts.map +1 -1
  226. package/dist/semantics/categorical/monoidal.js +3 -1
  227. package/dist/semantics/categorical/monoidal.js.map +1 -1
  228. package/dist/semantics/text-layer/compiler.d.ts +46 -0
  229. package/dist/semantics/text-layer/compiler.d.ts.map +1 -1
  230. package/dist/semantics/text-layer/compiler.js +46 -11
  231. package/dist/semantics/text-layer/compiler.js.map +1 -1
  232. package/dist/solver/cdcl-v2/index.d.ts +8 -0
  233. package/dist/solver/cdcl-v2/index.d.ts.map +1 -1
  234. package/dist/solver/cdcl-v2/index.js +8 -0
  235. package/dist/solver/cdcl-v2/index.js.map +1 -1
  236. package/dist/solver/smt-z3/z3-wasm-backend.d.ts +0 -1
  237. package/dist/solver/smt-z3/z3-wasm-backend.d.ts.map +1 -1
  238. package/dist/solver/smt-z3/z3-wasm-backend.js +2 -3
  239. package/dist/solver/smt-z3/z3-wasm-backend.js.map +1 -1
  240. package/dist/tests/agora-integration-fixtures.test.js +7 -2
  241. package/dist/tests/agora-integration-fixtures.test.js.map +1 -1
  242. package/dist/tests/coverage-90/coverage-90-cdcl-v2-deep.test.d.ts +2 -0
  243. package/dist/tests/coverage-90/coverage-90-cdcl-v2-deep.test.d.ts.map +1 -0
  244. package/dist/tests/coverage-90/coverage-90-cdcl-v2-deep.test.js +123 -0
  245. package/dist/tests/coverage-90/coverage-90-cdcl-v2-deep.test.js.map +1 -0
  246. package/dist/tests/coverage-90/coverage-90-certificate-rules.test.d.ts +2 -0
  247. package/dist/tests/coverage-90/coverage-90-certificate-rules.test.d.ts.map +1 -0
  248. package/dist/tests/coverage-90/coverage-90-certificate-rules.test.js +172 -0
  249. package/dist/tests/coverage-90/coverage-90-certificate-rules.test.js.map +1 -0
  250. package/dist/tests/coverage-90/coverage-90-interpreter-extra.test.d.ts +2 -0
  251. package/dist/tests/coverage-90/coverage-90-interpreter-extra.test.d.ts.map +1 -0
  252. package/dist/tests/coverage-90/coverage-90-interpreter-extra.test.js +326 -0
  253. package/dist/tests/coverage-90/coverage-90-interpreter-extra.test.js.map +1 -0
  254. package/dist/tests/coverage-90/coverage-90-interpreter-features.test.d.ts +2 -0
  255. package/dist/tests/coverage-90/coverage-90-interpreter-features.test.d.ts.map +1 -0
  256. package/dist/tests/coverage-90/coverage-90-interpreter-features.test.js +418 -0
  257. package/dist/tests/coverage-90/coverage-90-interpreter-features.test.js.map +1 -0
  258. package/dist/tests/coverage-90/coverage-90-modal-temporal.test.d.ts +2 -0
  259. package/dist/tests/coverage-90/coverage-90-modal-temporal.test.d.ts.map +1 -0
  260. package/dist/tests/coverage-90/coverage-90-modal-temporal.test.js +162 -0
  261. package/dist/tests/coverage-90/coverage-90-modal-temporal.test.js.map +1 -0
  262. package/dist/tests/coverage-90/coverage-90-nk-prover.test.d.ts +2 -0
  263. package/dist/tests/coverage-90/coverage-90-nk-prover.test.d.ts.map +1 -0
  264. package/dist/tests/coverage-90/coverage-90-nk-prover.test.js +104 -0
  265. package/dist/tests/coverage-90/coverage-90-nk-prover.test.js.map +1 -0
  266. package/dist/tests/coverage-90/coverage-90-parser-deep.test.d.ts +2 -0
  267. package/dist/tests/coverage-90/coverage-90-parser-deep.test.d.ts.map +1 -0
  268. package/dist/tests/coverage-90/coverage-90-parser-deep.test.js +262 -0
  269. package/dist/tests/coverage-90/coverage-90-parser-deep.test.js.map +1 -0
  270. package/dist/tests/coverage-90/coverage-90-sat-engines.test.d.ts +2 -0
  271. package/dist/tests/coverage-90/coverage-90-sat-engines.test.d.ts.map +1 -0
  272. package/dist/tests/coverage-90/coverage-90-sat-engines.test.js +101 -0
  273. package/dist/tests/coverage-90/coverage-90-sat-engines.test.js.map +1 -0
  274. package/dist/tests/coverage-90/coverage-90-sequent-lk.test.d.ts +2 -0
  275. package/dist/tests/coverage-90/coverage-90-sequent-lk.test.d.ts.map +1 -0
  276. package/dist/tests/coverage-90/coverage-90-sequent-lk.test.js +219 -0
  277. package/dist/tests/coverage-90/coverage-90-sequent-lk.test.js.map +1 -0
  278. package/dist/tests/coverage-90/coverage-90-smt-lib-parser.test.d.ts +2 -0
  279. package/dist/tests/coverage-90/coverage-90-smt-lib-parser.test.d.ts.map +1 -0
  280. package/dist/tests/coverage-90/coverage-90-smt-lib-parser.test.js +154 -0
  281. package/dist/tests/coverage-90/coverage-90-smt-lib-parser.test.js.map +1 -0
  282. package/dist/tests/coverage-95/first-order.test.js.map +1 -1
  283. package/dist/tests/coverage-95/fol-prover.test.js.map +1 -1
  284. package/dist/tests/integration/cross-modules.test.js +43 -19
  285. package/dist/tests/integration/cross-modules.test.js.map +1 -1
  286. package/dist/tests/logic/ctl/check.test.js.map +1 -1
  287. package/dist/tests/logic/profile-bridge/translations.test.js +3 -3
  288. package/dist/tests/logic/profile-bridge/translations.test.js.map +1 -1
  289. package/dist/tests/logic/profiles/sequent-lj/lj.test.d.ts +2 -0
  290. package/dist/tests/logic/profiles/sequent-lj/lj.test.d.ts.map +1 -0
  291. package/dist/tests/logic/profiles/sequent-lj/lj.test.js +400 -0
  292. package/dist/tests/logic/profiles/sequent-lj/lj.test.js.map +1 -0
  293. package/dist/tests/logic/sequent-g3/prover.test.js.map +1 -1
  294. package/dist/tests/logic/substructural/prover.test.js.map +1 -1
  295. package/dist/tests/proof-systems/fol-prover-advanced/prover.test.js +40 -13
  296. package/dist/tests/proof-systems/fol-prover-advanced/prover.test.js.map +1 -1
  297. package/dist/tests/proof-systems/higher-order-unify/ho-unify.test.js.map +1 -1
  298. package/dist/tests/proof-systems/tableau-framework/tableau.test.js +8 -8
  299. package/dist/tests/proof-systems/tableau-framework/tableau.test.js.map +1 -1
  300. package/dist/tests/properties/agm.property.test.js +1 -1
  301. package/dist/tests/properties/agm.property.test.js.map +1 -1
  302. package/dist/tests/properties/anti-unification.property.test.js.map +1 -1
  303. package/dist/tests/properties/argumentation.property.test.js.map +1 -1
  304. package/dist/tests/properties/bisimulation.property.test.js.map +1 -1
  305. package/dist/tests/properties/cdcl.property.test.js.map +1 -1
  306. package/dist/tests/properties/coinduction.property.test.js.map +1 -1
  307. package/dist/tests/properties/constructive-reals.property.test.js.map +1 -1
  308. package/dist/tests/properties/csp.property.test.js +1 -3
  309. package/dist/tests/properties/csp.property.test.js.map +1 -1
  310. package/dist/tests/properties/generators.d.ts +1 -1
  311. package/dist/tests/properties/generators.d.ts.map +1 -1
  312. package/dist/tests/properties/generators.js +22 -30
  313. package/dist/tests/properties/generators.js.map +1 -1
  314. package/dist/tests/properties/intuit-nj.property.test.js +3 -1
  315. package/dist/tests/properties/intuit-nj.property.test.js.map +1 -1
  316. package/dist/tests/properties/lambda-calc.property.test.js.map +1 -1
  317. package/dist/tests/properties/mln.property.test.js +1 -3
  318. package/dist/tests/properties/mln.property.test.js.map +1 -1
  319. package/dist/tests/properties/planning.property.test.js.map +1 -1
  320. package/dist/tests/properties/profile-bridge.property.test.js.map +1 -1
  321. package/dist/tests/properties/theorem-cache.property.test.js.map +1 -1
  322. package/dist/tests/protocol-text-layer.test.js.map +1 -1
  323. package/dist/tests/reasoning/combinatorics/combinatorics.test.js +1 -1
  324. package/dist/tests/reasoning/constructive-analysis/constructive-analysis.test.js +9 -9
  325. package/dist/tests/reasoning/constructive-analysis/constructive-analysis.test.js.map +1 -1
  326. package/dist/tests/reasoning/linear-algebra/linear-algebra.test.js +80 -38
  327. package/dist/tests/reasoning/linear-algebra/linear-algebra.test.js.map +1 -1
  328. package/dist/tests/reasoning/order-theory/order-theory.test.d.ts +2 -0
  329. package/dist/tests/reasoning/order-theory/order-theory.test.d.ts.map +1 -0
  330. package/dist/tests/reasoning/order-theory/order-theory.test.js +211 -0
  331. package/dist/tests/reasoning/order-theory/order-theory.test.js.map +1 -0
  332. package/dist/tests/reasoning/peano-arithmetic/peano.test.d.ts +2 -0
  333. package/dist/tests/reasoning/peano-arithmetic/peano.test.d.ts.map +1 -0
  334. package/dist/tests/reasoning/peano-arithmetic/peano.test.js +159 -0
  335. package/dist/tests/reasoning/peano-arithmetic/peano.test.js.map +1 -0
  336. package/dist/tests/reasoning/set-theory/hf-functions.test.js +11 -11
  337. package/dist/tests/reasoning/set-theory/zfc-axioms.test.js +1 -1
  338. package/dist/tests/semantics/text-layer-v2/claim-graph.test.js.map +1 -1
  339. package/dist/tests/solver/smt-lib/emitter.test.js.map +1 -1
  340. package/dist/tests/solver/smt-z3/z3-wasm-backend.test.js.map +1 -1
  341. package/dist/tests/tooling/test-harness/test-harness.test.js +9 -6
  342. package/dist/tests/tooling/test-harness/test-harness.test.js.map +1 -1
  343. package/dist/tooling/lsp/types.d.ts +13 -0
  344. package/dist/tooling/lsp/types.d.ts.map +1 -1
  345. package/dist/tooling/lsp/types.js +1 -0
  346. package/dist/tooling/lsp/types.js.map +1 -1
  347. package/dist/tooling/test-harness/combinators.d.ts.map +1 -1
  348. package/dist/tooling/test-harness/combinators.js +4 -4
  349. package/dist/tooling/test-harness/combinators.js.map +1 -1
  350. package/dist/tooling/test-harness/coverage.js +1 -1
  351. package/dist/tooling/test-harness/generators.d.ts.map +1 -1
  352. package/dist/tooling/test-harness/generators.js.map +1 -1
  353. package/dist/tooling/test-harness/index.d.ts +1 -1
  354. package/dist/tooling/test-harness/index.d.ts.map +1 -1
  355. package/dist/tooling/test-harness/index.js.map +1 -1
  356. package/dist/tooling/test-harness/snapshot.d.ts.map +1 -1
  357. package/dist/tooling/test-harness/snapshot.js +2 -2
  358. package/dist/tooling/test-harness/snapshot.js.map +1 -1
  359. package/dist/type-theory/cubical/types.d.ts +25 -0
  360. package/dist/type-theory/cubical/types.d.ts.map +1 -1
  361. package/dist/type-theory/cubical/types.js +20 -0
  362. package/dist/type-theory/cubical/types.js.map +1 -1
  363. package/dist/type-theory/curry-howard/types.d.ts +27 -0
  364. package/dist/type-theory/curry-howard/types.d.ts.map +1 -1
  365. package/dist/type-theory/curry-howard/types.js +18 -0
  366. package/dist/type-theory/curry-howard/types.js.map +1 -1
  367. package/dist/type-theory/hindley-milner/substitution.d.ts +39 -0
  368. package/dist/type-theory/hindley-milner/substitution.d.ts.map +1 -1
  369. package/dist/type-theory/hindley-milner/substitution.js +37 -0
  370. package/dist/type-theory/hindley-milner/substitution.js.map +1 -1
  371. package/dist/type-theory/hindley-milner/types.d.ts +25 -0
  372. package/dist/type-theory/hindley-milner/types.d.ts.map +1 -1
  373. package/dist/type-theory/hindley-milner/types.js +22 -2
  374. package/dist/type-theory/hindley-milner/types.js.map +1 -1
  375. package/dist/type-theory/hol/rules.d.ts +36 -0
  376. package/dist/type-theory/hol/rules.d.ts.map +1 -1
  377. package/dist/type-theory/hol/rules.js +36 -0
  378. package/dist/type-theory/hol/rules.js.map +1 -1
  379. package/dist/type-theory/hott/types.d.ts +32 -0
  380. package/dist/type-theory/hott/types.d.ts.map +1 -1
  381. package/dist/type-theory/hott/types.js +31 -1
  382. package/dist/type-theory/hott/types.js.map +1 -1
  383. package/dist/type-theory/lambda-cube/types.d.ts +17 -0
  384. package/dist/type-theory/lambda-cube/types.d.ts.map +1 -1
  385. package/dist/type-theory/lambda-cube/types.js +13 -0
  386. package/dist/type-theory/lambda-cube/types.js.map +1 -1
  387. package/dist/type-theory/mltt/types.d.ts +19 -0
  388. package/dist/type-theory/mltt/types.d.ts.map +1 -1
  389. package/dist/type-theory/mltt/types.js +15 -1
  390. package/dist/type-theory/mltt/types.js.map +1 -1
  391. package/dist/type-theory/nbe/types.d.ts +21 -0
  392. package/dist/type-theory/nbe/types.d.ts.map +1 -1
  393. package/dist/type-theory/nbe/types.js +13 -1
  394. package/dist/type-theory/nbe/types.js.map +1 -1
  395. package/dist/type-theory/refinement-types/types.d.ts +38 -0
  396. package/dist/type-theory/refinement-types/types.d.ts.map +1 -1
  397. package/dist/type-theory/refinement-types/types.js +35 -0
  398. package/dist/type-theory/refinement-types/types.js.map +1 -1
  399. package/dist/type-theory/system-f/types.d.ts +30 -0
  400. package/dist/type-theory/system-f/types.d.ts.map +1 -1
  401. package/dist/type-theory/system-f/types.js +24 -3
  402. package/dist/type-theory/system-f/types.js.map +1 -1
  403. package/dist/types/index.d.ts +42 -0
  404. package/dist/types/index.d.ts.map +1 -1
  405. package/dist/types/index.js.map +1 -1
  406. package/package.json +1 -1
@@ -20,24 +20,32 @@ exports.eqType = eqType;
20
20
  exports.typeToString = typeToString;
21
21
  exports.termToString = termToString;
22
22
  // ---------- Constructores convenientes ----------
23
+ /** Tipo atómico (variable proposicional). */
23
24
  const atom = (name) => ({ kind: 'atom', name });
24
25
  exports.atom = atom;
26
+ /** Tipo flecha `from → to` (implicación). */
25
27
  const arrow = (from, to) => ({ kind: 'arrow', from, to });
26
28
  exports.arrow = arrow;
29
+ /** Tipo producto `left ∧ right` (conjunción). */
27
30
  const product = (left, right) => ({
28
31
  kind: 'product',
29
32
  left,
30
33
  right,
31
34
  });
32
35
  exports.product = product;
36
+ /** Tipo suma `left ∨ right` (disyunción). */
33
37
  const sum = (left, right) => ({ kind: 'sum', left, right });
34
38
  exports.sum = sum;
39
+ /** Tipo bottom `⊥` (falsedad / tipo vacío). */
35
40
  const bottom = () => ({ kind: 'bottom' });
36
41
  exports.bottom = bottom;
42
+ /** Variable λ. */
37
43
  const vr = (name) => ({ kind: 'var', name });
38
44
  exports.vr = vr;
45
+ /** Aplicación de función (modus ponens). */
39
46
  const app = (fn, arg) => ({ kind: 'app', fn, arg });
40
47
  exports.app = app;
48
+ /** Abstracción λ (implicación-intro): `λparam:paramType. body`. */
41
49
  const abs = (param, paramType, body) => ({
42
50
  kind: 'abs',
43
51
  param,
@@ -45,28 +53,34 @@ const abs = (param, paramType, body) => ({
45
53
  body,
46
54
  });
47
55
  exports.abs = abs;
56
+ /** Par `⟨f, s⟩` (conjunción-intro). */
48
57
  const pair = (f, s) => ({
49
58
  kind: 'pair',
50
59
  fst: f,
51
60
  snd: s,
52
61
  });
53
62
  exports.pair = pair;
63
+ /** Proyección izquierda `fst(p)` (∧E-L). */
54
64
  const fst = (p) => ({ kind: 'fst', pair: p });
55
65
  exports.fst = fst;
66
+ /** Proyección derecha `snd(p)` (∧E-R). */
56
67
  const snd = (p) => ({ kind: 'snd', pair: p });
57
68
  exports.snd = snd;
69
+ /** Inyección izquierda `inl(left)` (∨I-L); requiere el tipo del lado derecho. */
58
70
  const inl = (left, rightType) => ({
59
71
  kind: 'inl',
60
72
  left,
61
73
  rightType,
62
74
  });
63
75
  exports.inl = inl;
76
+ /** Inyección derecha `inr(right)` (∨I-R); requiere el tipo del lado izquierdo. */
64
77
  const inr = (right, leftType) => ({
65
78
  kind: 'inr',
66
79
  right,
67
80
  leftType,
68
81
  });
69
82
  exports.inr = inr;
83
+ /** Eliminación de disyunción `case scrutinee of inl(lb)→leftBody | inr(rb)→rightBody` (∨E). */
70
84
  const cse = (scrutinee, leftBind, leftBody, rightBind, rightBody) => ({
71
85
  kind: 'case',
72
86
  scrutinee,
@@ -76,6 +90,7 @@ const cse = (scrutinee, leftBind, leftBody, rightBind, rightBody) => ({
76
90
  rightBody,
77
91
  });
78
92
  exports.cse = cse;
93
+ /** Ex falso: dado `proofOfFalse : ⊥`, produce cualquier tipo `resultType` (⊥E). */
79
94
  const absurd = (proofOfFalse, resultType) => ({
80
95
  kind: 'absurd',
81
96
  proofOfFalse,
@@ -83,6 +98,7 @@ const absurd = (proofOfFalse, resultType) => ({
83
98
  });
84
99
  exports.absurd = absurd;
85
100
  // ---------- Igualdad estructural de tipos ----------
101
+ /** Igualdad estructural entre dos tipos proposicionales. */
86
102
  function eqType(a, b) {
87
103
  if (a.kind !== b.kind)
88
104
  return false;
@@ -106,6 +122,7 @@ function eqType(a, b) {
106
122
  }
107
123
  }
108
124
  // ---------- Serialización legible ----------
125
+ /** Serializa un tipo proposicional a texto con notación estándar (→, ∧, ∨, ⊥). */
109
126
  function typeToString(t) {
110
127
  switch (t.kind) {
111
128
  case 'atom':
@@ -122,6 +139,7 @@ function typeToString(t) {
122
139
  return `(${typeToString(t.left)} ∨ ${typeToString(t.right)})`;
123
140
  }
124
141
  }
142
+ /** Serializa un término λ a texto con notación estándar (λ, fst, snd, inl, inr, case, absurd). */
125
143
  function termToString(t) {
126
144
  switch (t.kind) {
127
145
  case 'var':
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/type-theory/curry-howard/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/type-theory/curry-howard/types.ts"],"names":[],"mappings":"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"}
@@ -1,21 +1,60 @@
1
1
  import type { Type, TypeScheme } from './types';
2
2
  import { schemeFreeVars } from './types';
3
+ /** Sustitución de variables de tipo: mapea nombre de tvar → Type. */
3
4
  export type Substitution = Map<string, Type>;
5
+ /** Crea una sustitución vacía (identidad). */
4
6
  export declare const emptySubst: () => Substitution;
7
+ /**
8
+ * Aplica la sustitución `s` al tipo `t`, siguiendo cadenas de tvars.
9
+ * Si `s` está vacía retorna `t` sin copiar.
10
+ */
5
11
  export declare function applySubst(t: Type, s: Substitution): Type;
12
+ /**
13
+ * Aplica `s` a un esquema de tipos, evitando sustituir las variables
14
+ * ligadas por el cuantificador ∀.
15
+ */
6
16
  export declare function applySubstScheme(sc: TypeScheme, s: Substitution): TypeScheme;
17
+ /**
18
+ * Composición `s1 ∘ s2`: primero aplica `s2`, luego `s1`.
19
+ * Implementado como: aplicar `s1` a los valores de `s2` y luego añadir
20
+ * las entradas de `s1` que `s2` no tocó.
21
+ */
7
22
  export declare function composeSubsts(s1: Substitution, s2: Substitution): Substitution;
23
+ /** Reinicia el contador global de variables frescas (útil para tests reproducibles). */
8
24
  export declare function resetFreshSupply(): void;
25
+ /**
26
+ * Genera una nueva variable de tipo con nombre `prefix0`, `prefix1`, …
27
+ * El contador es global al módulo; usar `resetFreshSupply()` en tests.
28
+ */
9
29
  export declare function freshTypeVar(prefix?: string): Type;
30
+ /**
31
+ * Comprueba si la variable `name` aparece en `t` como subtérmino.
32
+ * Unificarlos sin este check crearía un tipo recursivo infinito.
33
+ */
10
34
  export declare function occursIn(name: string, t: Type): boolean;
35
+ /** Resultado de unificación: sustitución MGU o descriptor de error. */
11
36
  export type UnifyResult = Substitution | {
12
37
  error: string;
13
38
  };
39
+ /** Type guard para detectar un resultado de error de unificación. */
14
40
  export declare function isUnifyError(r: UnifyResult): r is {
15
41
  error: string;
16
42
  };
43
+ /**
44
+ * Unificación de primer orden Robinson con occurs-check.
45
+ * @returns La sustitución MGU `u` tal que `u(t1) ≡ u(t2)`, o `{ error }` si no unifica.
46
+ */
17
47
  export declare function unify(t1: Type, t2: Type): UnifyResult;
48
+ /**
49
+ * Generaliza `t` cerrando las variables libres que no están en el entorno.
50
+ * Solo debe llamarse al tipar la RHS de un `let`.
51
+ * @param envFreeVars - Variables libres presentes en el entorno actual.
52
+ */
18
53
  export declare function generalize(envFreeVars: Set<string>, t: Type): TypeScheme;
54
+ /**
55
+ * Abre un esquema polimórfico reemplazando cada cuantificador con una
56
+ * variable de tipo fresca. Usada cuando se usa una variable polimórfica.
57
+ */
19
58
  export declare function instantiate(sc: TypeScheme): Type;
20
59
  export { schemeFreeVars };
21
60
  //# sourceMappingURL=substitution.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"substitution.d.ts","sourceRoot":"","sources":["../../../src/type-theory/hindley-milner/substitution.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAChD,OAAO,EAAE,cAAc,EAA8B,MAAM,SAAS,CAAC;AAErE,MAAM,MAAM,YAAY,GAAG,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AAE7C,eAAO,MAAM,UAAU,QAAO,YAAyB,CAAC;AAExD,wBAAgB,UAAU,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,YAAY,GAAG,IAAI,CAGzD;AA6BD,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,YAAY,GAAG,UAAU,CAU5E;AAED,wBAAgB,aAAa,CAAC,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,YAAY,GAAG,YAAY,CAO9E;AAQD,wBAAgB,gBAAgB,IAAI,IAAI,CAEvC;AAED,wBAAgB,YAAY,CAAC,MAAM,SAAM,GAAG,IAAI,CAG/C;AAKD,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,GAAG,OAAO,CAWvD;AAKD,MAAM,MAAM,WAAW,GAAG,YAAY,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAE3D,wBAAgB,YAAY,CAAC,CAAC,EAAE,WAAW,GAAG,CAAC,IAAI;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAEnE;AAED,wBAAgB,KAAK,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,GAAG,WAAW,CAsCrD;AAmCD,wBAAgB,UAAU,CAAC,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,IAAI,GAAG,UAAU,CASxE;AAED,wBAAgB,WAAW,CAAC,EAAE,EAAE,UAAU,GAAG,IAAI,CAOhD;AAGD,OAAO,EAAE,cAAc,EAAE,CAAC"}
1
+ {"version":3,"file":"substitution.d.ts","sourceRoot":"","sources":["../../../src/type-theory/hindley-milner/substitution.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAChD,OAAO,EAAE,cAAc,EAA8B,MAAM,SAAS,CAAC;AAErE,qEAAqE;AACrE,MAAM,MAAM,YAAY,GAAG,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AAE7C,8CAA8C;AAC9C,eAAO,MAAM,UAAU,QAAO,YAAyB,CAAC;AAExD;;;GAGG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,YAAY,GAAG,IAAI,CAGzD;AA6BD;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,YAAY,GAAG,UAAU,CAU5E;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,YAAY,GAAG,YAAY,CAO9E;AAQD,wFAAwF;AACxF,wBAAgB,gBAAgB,IAAI,IAAI,CAEvC;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,MAAM,SAAM,GAAG,IAAI,CAG/C;AAKD;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,GAAG,OAAO,CAWvD;AAKD,uEAAuE;AACvE,MAAM,MAAM,WAAW,GAAG,YAAY,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAE3D,qEAAqE;AACrE,wBAAgB,YAAY,CAAC,CAAC,EAAE,WAAW,GAAG,CAAC,IAAI;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAEnE;AAED;;;GAGG;AACH,wBAAgB,KAAK,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,GAAG,WAAW,CAsCrD;AAmCD;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,IAAI,GAAG,UAAU,CASxE;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,EAAE,EAAE,UAAU,GAAG,IAAI,CAOhD;AAGD,OAAO,EAAE,cAAc,EAAE,CAAC"}
@@ -30,8 +30,13 @@ exports.generalize = generalize;
30
30
  exports.instantiate = instantiate;
31
31
  const types_1 = require("./types");
32
32
  Object.defineProperty(exports, "schemeFreeVars", { enumerable: true, get: function () { return types_1.schemeFreeVars; } });
33
+ /** Crea una sustitución vacía (identidad). */
33
34
  const emptySubst = () => new Map();
34
35
  exports.emptySubst = emptySubst;
36
+ /**
37
+ * Aplica la sustitución `s` al tipo `t`, siguiendo cadenas de tvars.
38
+ * Si `s` está vacía retorna `t` sin copiar.
39
+ */
35
40
  function applySubst(t, s) {
36
41
  if (s.size === 0)
37
42
  return t;
@@ -65,6 +70,10 @@ function applySubstChase(t, s, seen) {
65
70
  };
66
71
  }
67
72
  }
73
+ /**
74
+ * Aplica `s` a un esquema de tipos, evitando sustituir las variables
75
+ * ligadas por el cuantificador ∀.
76
+ */
68
77
  function applySubstScheme(sc, s) {
69
78
  if (s.size === 0)
70
79
  return sc;
@@ -79,6 +88,11 @@ function applySubstScheme(sc, s) {
79
88
  }
80
89
  return { forall: sc.forall, body: applySubst(sc.body, restricted) };
81
90
  }
91
+ /**
92
+ * Composición `s1 ∘ s2`: primero aplica `s2`, luego `s1`.
93
+ * Implementado como: aplicar `s1` a los valores de `s2` y luego añadir
94
+ * las entradas de `s1` que `s2` no tocó.
95
+ */
82
96
  function composeSubsts(s1, s2) {
83
97
  const result = new Map();
84
98
  for (const [k, v] of s2)
@@ -94,9 +108,14 @@ function composeSubsts(s1, s2) {
94
108
  // freshCounter es módulo-global. resetFreshSupply() permite que los
95
109
  // tests obtengan nombres reproducibles.
96
110
  let freshCounter = 0;
111
+ /** Reinicia el contador global de variables frescas (útil para tests reproducibles). */
97
112
  function resetFreshSupply() {
98
113
  freshCounter = 0;
99
114
  }
115
+ /**
116
+ * Genera una nueva variable de tipo con nombre `prefix0`, `prefix1`, …
117
+ * El contador es global al módulo; usar `resetFreshSupply()` en tests.
118
+ */
100
119
  function freshTypeVar(prefix = 't') {
101
120
  const name = `${prefix}${freshCounter++}`;
102
121
  return { kind: 'tvar', name };
@@ -104,6 +123,10 @@ function freshTypeVar(prefix = 't') {
104
123
  // ---------- Occurs check ----------
105
124
  // α aparece en t como subtérmino? Si sí, unificarlos crearía un
106
125
  // tipo recursivo (infinito).
126
+ /**
127
+ * Comprueba si la variable `name` aparece en `t` como subtérmino.
128
+ * Unificarlos sin este check crearía un tipo recursivo infinito.
129
+ */
107
130
  function occursIn(name, t) {
108
131
  switch (t.kind) {
109
132
  case 'tvar':
@@ -116,9 +139,14 @@ function occursIn(name, t) {
116
139
  return t.args.some((a) => occursIn(name, a));
117
140
  }
118
141
  }
142
+ /** Type guard para detectar un resultado de error de unificación. */
119
143
  function isUnifyError(r) {
120
144
  return typeof r === 'object' && r !== null && !(r instanceof Map) && 'error' in r;
121
145
  }
146
+ /**
147
+ * Unificación de primer orden Robinson con occurs-check.
148
+ * @returns La sustitución MGU `u` tal que `u(t1) ≡ u(t2)`, o `{ error }` si no unifica.
149
+ */
122
150
  function unify(t1, t2) {
123
151
  if (t1.kind === 'tvar')
124
152
  return bindVar(t1.name, t2);
@@ -192,6 +220,11 @@ function bindVar(name, t) {
192
220
  // instantiate abre un esquema reemplazando cada cuantificador con una
193
221
  // variable fresca: es la regla que vuelve a "abrir" un binding cuando
194
222
  // se usa una variable polimórfica.
223
+ /**
224
+ * Generaliza `t` cerrando las variables libres que no están en el entorno.
225
+ * Solo debe llamarse al tipar la RHS de un `let`.
226
+ * @param envFreeVars - Variables libres presentes en el entorno actual.
227
+ */
195
228
  function generalize(envFreeVars, t) {
196
229
  const tFv = (0, types_1.typeFreeVars)(t);
197
230
  const quantified = [];
@@ -203,6 +236,10 @@ function generalize(envFreeVars, t) {
203
236
  quantified.sort();
204
237
  return { forall: quantified, body: t };
205
238
  }
239
+ /**
240
+ * Abre un esquema polimórfico reemplazando cada cuantificador con una
241
+ * variable de tipo fresca. Usada cuando se usa una variable polimórfica.
242
+ */
206
243
  function instantiate(sc) {
207
244
  if (sc.forall.length === 0)
208
245
  return sc.body;
@@ -1 +1 @@
1
- {"version":3,"file":"substitution.js","sourceRoot":"","sources":["../../../src/type-theory/hindley-milner/substitution.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"substitution.js","sourceRoot":"","sources":["../../../src/type-theory/hindley-milner/substitution.ts"],"names":[],"mappings":";AAAA,+DAA+D;AAC/D,0DAA0D;AAC1D,+DAA+D;AAC/D,EAAE;AACF,iEAAiE;AACjE,gDAAgD;AAChD,EAAE;AACF,uEAAuE;AACvE,wBAAwB;AACxB,EAAE;AACF,8BAA8B;AAC9B,EAAE;AACF,kEAAkE;AAClE,iCAAiC;AACjC,EAAE;AACF,8DAA8D;AAC9D,iEAAiE;;;AAejE,gCAGC;AAiCD,4CAUC;AAOD,sCAOC;AASD,4CAEC;AAMD,oCAGC;AASD,4BAWC;AASD,oCAEC;AAMD,sBAsCC;AAwCD,gCASC;AAMD,kCAOC;AArOD,mCAAqE;AAwO5D,+FAxOA,sBAAc,OAwOA;AAnOvB,8CAA8C;AACvC,MAAM,UAAU,GAAG,GAAiB,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC;AAA3C,QAAA,UAAU,cAAiC;AAExD;;;GAGG;AACH,SAAgB,UAAU,CAAC,CAAO,EAAE,CAAe;IACjD,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC;IAC3B,OAAO,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;AAC1C,CAAC;AAED,SAAS,eAAe,CAAC,CAAO,EAAE,CAAe,EAAE,IAAiB;IAClE,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;QACf,KAAK,MAAM,CAAC,CAAC,CAAC;YACZ,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACxB,IAAI,CAAC,KAAK,SAAS;gBAAE,OAAO,CAAC,CAAC;YAC9B,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;gBAAE,OAAO,CAAC,CAAC,CAAC,iEAAiE;YACjG,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC;YAC/B,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACrB,OAAO,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC;QACzC,CAAC;QACD,KAAK,QAAQ;YACX,OAAO,CAAC,CAAC;QACX,KAAK,OAAO;YACV,OAAO;gBACL,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,eAAe,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC;gBACtC,EAAE,EAAE,eAAe,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC;aACnC,CAAC;QACJ,KAAK,MAAM;YACT,OAAO;gBACL,IAAI,EAAE,MAAM;gBACZ,EAAE,EAAE,CAAC,CAAC,EAAE;gBACR,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;aACrD,CAAC;IACN,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,SAAgB,gBAAgB,CAAC,EAAc,EAAE,CAAe;IAC9D,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAC5B,+CAA+C;IAC/C,IAAI,UAAU,GAAiB,CAAC,CAAC;IACjC,IAAI,EAAE,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzB,UAAU,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC;QACxB,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC,MAAM;YAAE,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAChD,IAAI,UAAU,CAAC,IAAI,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;IACvC,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,UAAU,CAAC,EAAE,CAAC;AACtE,CAAC;AAED;;;;GAIG;AACH,SAAgB,aAAa,CAAC,EAAgB,EAAE,EAAgB;IAC9D,MAAM,MAAM,GAAiB,IAAI,GAAG,EAAE,CAAC;IACvC,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE;QAAE,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IAC1D,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;QACxB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;YAAE,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACvC,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,wDAAwD;AACxD,EAAE;AACF,oEAAoE;AACpE,wCAAwC;AACxC,IAAI,YAAY,GAAG,CAAC,CAAC;AAErB,wFAAwF;AACxF,SAAgB,gBAAgB;IAC9B,YAAY,GAAG,CAAC,CAAC;AACnB,CAAC;AAED;;;GAGG;AACH,SAAgB,YAAY,CAAC,MAAM,GAAG,GAAG;IACvC,MAAM,IAAI,GAAG,GAAG,MAAM,GAAG,YAAY,EAAE,EAAE,CAAC;IAC1C,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;AAChC,CAAC;AAED,qCAAqC;AACrC,gEAAgE;AAChE,6BAA6B;AAC7B;;;GAGG;AACH,SAAgB,QAAQ,CAAC,IAAY,EAAE,CAAO;IAC5C,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;QACf,KAAK,MAAM;YACT,OAAO,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC;QACzB,KAAK,QAAQ;YACX,OAAO,KAAK,CAAC;QACf,KAAK,OAAO;YACV,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;QACxD,KAAK,MAAM;YACT,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IACjD,CAAC;AACH,CAAC;AAQD,qEAAqE;AACrE,SAAgB,YAAY,CAAC,CAAc;IACzC,OAAO,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,YAAY,GAAG,CAAC,IAAI,OAAO,IAAI,CAAC,CAAC;AACpF,CAAC;AAED;;;GAGG;AACH,SAAgB,KAAK,CAAC,EAAQ,EAAE,EAAQ;IACtC,IAAI,EAAE,CAAC,IAAI,KAAK,MAAM;QAAE,OAAO,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACpD,IAAI,EAAE,CAAC,IAAI,KAAK,MAAM;QAAE,OAAO,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAEpD,IAAI,EAAE,CAAC,IAAI,KAAK,QAAQ,IAAI,EAAE,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QACjD,IAAI,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC,IAAI;YAAE,OAAO,IAAA,kBAAU,GAAE,CAAC;QAC7C,OAAO,EAAE,KAAK,EAAE,gBAAgB,EAAE,CAAC,IAAI,SAAS,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC;IAC9D,CAAC;IAED,IAAI,EAAE,CAAC,IAAI,KAAK,OAAO,IAAI,EAAE,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QAC/C,MAAM,KAAK,GAAG,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;QACtC,IAAI,YAAY,CAAC,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC;QACtC,MAAM,GAAG,GAAG,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC;QACtE,IAAI,YAAY,CAAC,GAAG,CAAC;YAAE,OAAO,GAAG,CAAC;QAClC,OAAO,aAAa,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACnC,CAAC;IAED,IAAI,EAAE,CAAC,IAAI,KAAK,MAAM,IAAI,EAAE,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QAC7C,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE;YAAE,OAAO,EAAE,KAAK,EAAE,gBAAgB,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;QAC7E,IAAI,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACtC,OAAO;gBACL,KAAK,EAAE,qBAAqB,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,MAAM,OAAO,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE;aAC5E,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,GAAiB,IAAA,kBAAU,GAAE,CAAC;QACnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACxC,MAAM,EAAE,GAAG,UAAU,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACrC,MAAM,EAAE,GAAG,UAAU,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACrC,MAAM,IAAI,GAAG,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;YAC3B,IAAI,YAAY,CAAC,IAAI,CAAC;gBAAE,OAAO,IAAI,CAAC;YACpC,CAAC,GAAG,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QAC7B,CAAC;QACD,OAAO,CAAC,CAAC;IACX,CAAC;IAED,OAAO;QACL,KAAK,EAAE,gBAAgB,YAAY,CAAC,EAAE,CAAC,SAAS,YAAY,CAAC,EAAE,CAAC,EAAE;KACnE,CAAC;AACJ,CAAC;AAED,SAAS,YAAY,CAAC,CAAO;IAC3B,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;QACf,KAAK,MAAM;YACT,OAAO,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;QAC1B,KAAK,QAAQ;YACX,OAAO,CAAC,CAAC,IAAI,CAAC;QAChB,KAAK,OAAO;YACV,OAAO,eAAe,CAAC;QACzB,KAAK,MAAM;YACT,OAAO,GAAG,CAAC,CAAC,EAAE,mBAAmB,CAAC;IACtC,CAAC;AACH,CAAC;AAED,SAAS,OAAO,CAAC,IAAY,EAAE,CAAO;IACpC,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI;QAAE,OAAO,IAAA,kBAAU,GAAE,CAAC;IAC9D,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;QACtB,OAAO,EAAE,KAAK,EAAE,wBAAwB,IAAI,cAAc,IAAA,oBAAY,EAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IAChF,CAAC;IACD,MAAM,CAAC,GAAiB,IAAI,GAAG,EAAE,CAAC;IAClC,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IACf,OAAO,CAAC,CAAC;AACX,CAAC;AAED,iDAAiD;AACjD,EAAE;AACF,oEAAoE;AACpE,qEAAqE;AACrE,6CAA6C;AAC7C,EAAE;AACF,sEAAsE;AACtE,sEAAsE;AACtE,mCAAmC;AAEnC;;;;GAIG;AACH,SAAgB,UAAU,CAAC,WAAwB,EAAE,CAAO;IAC1D,MAAM,GAAG,GAAG,IAAA,oBAAY,EAAC,CAAC,CAAC,CAAC;IAC5B,MAAM,UAAU,GAAa,EAAE,CAAC;IAChC,KAAK,MAAM,CAAC,IAAI,GAAG,EAAE,CAAC;QACpB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;YAAE,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC9C,CAAC;IACD,qDAAqD;IACrD,UAAU,CAAC,IAAI,EAAE,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;AACzC,CAAC;AAED;;;GAGG;AACH,SAAgB,WAAW,CAAC,EAAc;IACxC,IAAI,EAAE,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC,IAAI,CAAC;IAC3C,MAAM,CAAC,GAAiB,IAAI,GAAG,EAAE,CAAC;IAClC,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,CAAC;QAC1B,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9B,CAAC;IACD,OAAO,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AAChC,CAAC"}
@@ -1,3 +1,4 @@
1
+ /** Monotipo del sistema Hindley-Milner: variable, constante, función o constructor aplicado. */
1
2
  export type Type = {
2
3
  kind: 'tvar';
3
4
  name: string;
@@ -13,10 +14,12 @@ export type Type = {
13
14
  fn: string;
14
15
  args: Type[];
15
16
  };
17
+ /** Esquema de tipo polimórfico: cuantificación universal sobre variables de tipo (rank-1). */
16
18
  export interface TypeScheme {
17
19
  forall: string[];
18
20
  body: Type;
19
21
  }
22
+ /** Expresión del cálculo λ let-polimórfico: variable, literal, aplicación, lambda, let, letRec e if. */
20
23
  export type Expr = {
21
24
  kind: 'var';
22
25
  name: string;
@@ -49,30 +52,52 @@ export type Expr = {
49
52
  then: Expr;
50
53
  else: Expr;
51
54
  };
55
+ /** Constructor de variable de tipo (e.g. `α`). */
52
56
  export declare const tVar: (name: string) => Type;
57
+ /** Constructor de constante de tipo (e.g. `Int`, `Bool`). */
53
58
  export declare const tConst: (name: string) => Type;
59
+ /** Constructor de tipo flecha: `from → to`. */
54
60
  export declare const tArrow: (from: Type, to: Type) => Type;
61
+ /** Constructor de aplicación de constructor de tipo: `fn args...` (e.g. `List Int`). */
55
62
  export declare const tApp: (fn: string, ...args: Type[]) => Type;
63
+ /** Crea un esquema polimórfico cuantificando las variables de `forall` sobre `body`. */
56
64
  export declare const scheme: (forall: string[], body: Type) => TypeScheme;
65
+ /** Envuelve un monotipo como esquema sin variables cuantificadas. */
57
66
  export declare const mono: (body: Type) => TypeScheme;
67
+ /** Constructor de variable de expresión. */
58
68
  export declare const eVar: (name: string) => Expr;
69
+ /** Constructor de literal (número, booleano o string). */
59
70
  export declare const eLit: (value: number | boolean | string) => Expr;
71
+ /** Constructor de aplicación de función: `fn arg`. */
60
72
  export declare const eApp: (fn: Expr, arg: Expr) => Expr;
73
+ /** Constructor de lambda: `λparam. body`. */
61
74
  export declare const eLam: (param: string, body: Expr) => Expr;
75
+ /** Constructor de `let bind = value in body` (introduce polimorfismo). */
62
76
  export declare const eLet: (bind: string, value: Expr, body: Expr) => Expr;
77
+ /** Constructor de `let rec { defs } in body`: definiciones mutuamente recursivas. */
63
78
  export declare const eLetRec: (defs: Array<{
64
79
  name: string;
65
80
  body: Expr;
66
81
  }>, body: Expr) => Expr;
82
+ /** Constructor de `if cond then then_ else else_`. */
67
83
  export declare const eIf: (cond: Expr, then_: Expr, else_: Expr) => Expr;
84
+ /** Aplica `fn` a múltiples argumentos de izquierda a derecha: `fn a b c` ≡ `eApp(eApp(fn,a),b,c)`. */
68
85
  export declare const eAppN: (fn: Expr, ...args: Expr[]) => Expr;
86
+ /** Tipo primitivo `Int`. */
69
87
  export declare const TInt: Type;
88
+ /** Tipo primitivo `Bool`. */
70
89
  export declare const TBool: Type;
90
+ /** Tipo primitivo `String`. */
71
91
  export declare const TStr: Type;
92
+ /** Recolecta las variables de tipo libres (no vinculadas) en `t`. */
72
93
  export declare function typeFreeVars(t: Type, acc?: Set<string>): Set<string>;
94
+ /** Recolecta las variables de tipo libres en el cuerpo del esquema excluyendo las cuantificadas. */
73
95
  export declare function schemeFreeVars(s: TypeScheme): Set<string>;
96
+ /** Serializa un tipo a una cadena legible con precedencias correctas para flechas y constructores. */
74
97
  export declare function typeToString(t: Type): string;
98
+ /** Serializa un esquema de tipo a su representación `forall α. T` o simplemente `T` si es mono. */
75
99
  export declare function schemeToString(s: TypeScheme): string;
100
+ /** Entorno de tipos inmutable. Mapea nombres de variables a sus esquemas polimórficos. */
76
101
  export declare class TypeEnv {
77
102
  readonly bindings: Map<string, TypeScheme>;
78
103
  constructor(bindings?: Map<string, TypeScheme>);
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/type-theory/hindley-milner/types.ts"],"names":[],"mappings":"AAwBA,MAAM,MAAM,IAAI,GACZ;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC9B;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAChC;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,IAAI,CAAC;IAAC,EAAE,EAAE,IAAI,CAAA;CAAE,GACvC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,IAAI,EAAE,CAAA;CAAE,CAAC;AAE/C,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,IAAI,EAAE,IAAI,CAAC;CACZ;AAED,MAAM,MAAM,IAAI,GACZ;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC7B;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,CAAA;CAAE,GACjD;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,EAAE,EAAE,IAAI,CAAC;IAAC,GAAG,EAAE,IAAI,CAAA;CAAE,GACpC;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,IAAI,CAAA;CAAE,GAC1C;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,IAAI,CAAA;CAAE,GACtD;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,IAAI,CAAA;KAAE,CAAC,CAAC;IAAC,IAAI,EAAE,IAAI,CAAA;CAAE,GACzE;IAAE,IAAI,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,IAAI,CAAA;CAAE,CAAC;AAGvD,eAAO,MAAM,IAAI,GAAI,MAAM,MAAM,KAAG,IAAgC,CAAC;AACrE,eAAO,MAAM,MAAM,GAAI,MAAM,MAAM,KAAG,IAAkC,CAAC;AACzE,eAAO,MAAM,MAAM,GAAI,MAAM,IAAI,EAAE,IAAI,IAAI,KAAG,IAAqC,CAAC;AACpF,eAAO,MAAM,IAAI,GAAI,IAAI,MAAM,EAAE,GAAG,MAAM,IAAI,EAAE,KAAG,IAAoC,CAAC;AAExF,eAAO,MAAM,MAAM,GAAI,QAAQ,MAAM,EAAE,EAAE,MAAM,IAAI,KAAG,UAAgC,CAAC;AACvF,eAAO,MAAM,IAAI,GAAI,MAAM,IAAI,KAAG,UAAoC,CAAC;AAEvE,eAAO,MAAM,IAAI,GAAI,MAAM,MAAM,KAAG,IAA+B,CAAC;AACpE,eAAO,MAAM,IAAI,GAAI,OAAO,MAAM,GAAG,OAAO,GAAG,MAAM,KAAG,IAAgC,CAAC;AACzF,eAAO,MAAM,IAAI,GAAI,IAAI,IAAI,EAAE,KAAK,IAAI,KAAG,IAAkC,CAAC;AAC9E,eAAO,MAAM,IAAI,GAAI,OAAO,MAAM,EAAE,MAAM,IAAI,KAAG,IAAsC,CAAC;AACxF,eAAO,MAAM,IAAI,GAAI,MAAM,MAAM,EAAE,OAAO,IAAI,EAAE,MAAM,IAAI,KAAG,IAK3D,CAAC;AACH,eAAO,MAAM,OAAO,GAAI,MAAM,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,IAAI,CAAA;CAAE,CAAC,EAAE,MAAM,IAAI,KAAG,IAI9E,CAAC;AACH,eAAO,MAAM,GAAG,GAAI,MAAM,IAAI,EAAE,OAAO,IAAI,EAAE,OAAO,IAAI,KAAG,IAKzD,CAAC;AAGH,eAAO,MAAM,KAAK,GAAI,IAAI,IAAI,EAAE,GAAG,MAAM,IAAI,EAAE,KAAG,IAA6B,CAAC;AAGhF,eAAO,MAAM,IAAI,MAAgB,CAAC;AAClC,eAAO,MAAM,KAAK,MAAiB,CAAC;AACpC,eAAO,MAAM,IAAI,MAAmB,CAAC;AAGrC,wBAAgB,YAAY,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,GAAE,GAAG,CAAC,MAAM,CAAa,GAAG,GAAG,CAAC,MAAM,CAAC,CAe/E;AAED,wBAAgB,cAAc,CAAC,CAAC,EAAE,UAAU,GAAG,GAAG,CAAC,MAAM,CAAC,CAIzD;AAGD,wBAAgB,YAAY,CAAC,CAAC,EAAE,IAAI,GAAG,MAAM,CAwB5C;AAED,wBAAgB,cAAc,CAAC,CAAC,EAAE,UAAU,GAAG,MAAM,CAGpD;AAMD,qBAAa,OAAO;IAClB,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;gBAE/B,QAAQ,GAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAa;IAIzD,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,GAAG,OAAO;IAM7C,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,GAAG,OAAO;IAMzD,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS;IAI5C,QAAQ,IAAI,GAAG,CAAC,MAAM,CAAC;CAOxB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/type-theory/hindley-milner/types.ts"],"names":[],"mappings":"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"}
@@ -29,26 +29,37 @@ exports.schemeFreeVars = schemeFreeVars;
29
29
  exports.typeToString = typeToString;
30
30
  exports.schemeToString = schemeToString;
31
31
  // ---------- Constructores convenientes ----------
32
+ /** Constructor de variable de tipo (e.g. `α`). */
32
33
  const tVar = (name) => ({ kind: 'tvar', name });
33
34
  exports.tVar = tVar;
35
+ /** Constructor de constante de tipo (e.g. `Int`, `Bool`). */
34
36
  const tConst = (name) => ({ kind: 'tconst', name });
35
37
  exports.tConst = tConst;
38
+ /** Constructor de tipo flecha: `from → to`. */
36
39
  const tArrow = (from, to) => ({ kind: 'arrow', from, to });
37
40
  exports.tArrow = tArrow;
41
+ /** Constructor de aplicación de constructor de tipo: `fn args...` (e.g. `List Int`). */
38
42
  const tApp = (fn, ...args) => ({ kind: 'tapp', fn, args });
39
43
  exports.tApp = tApp;
44
+ /** Crea un esquema polimórfico cuantificando las variables de `forall` sobre `body`. */
40
45
  const scheme = (forall, body) => ({ forall, body });
41
46
  exports.scheme = scheme;
47
+ /** Envuelve un monotipo como esquema sin variables cuantificadas. */
42
48
  const mono = (body) => ({ forall: [], body });
43
49
  exports.mono = mono;
50
+ /** Constructor de variable de expresión. */
44
51
  const eVar = (name) => ({ kind: 'var', name });
45
52
  exports.eVar = eVar;
53
+ /** Constructor de literal (número, booleano o string). */
46
54
  const eLit = (value) => ({ kind: 'lit', value });
47
55
  exports.eLit = eLit;
56
+ /** Constructor de aplicación de función: `fn arg`. */
48
57
  const eApp = (fn, arg) => ({ kind: 'app', fn, arg });
49
58
  exports.eApp = eApp;
59
+ /** Constructor de lambda: `λparam. body`. */
50
60
  const eLam = (param, body) => ({ kind: 'lam', param, body });
51
61
  exports.eLam = eLam;
62
+ /** Constructor de `let bind = value in body` (introduce polimorfismo). */
52
63
  const eLet = (bind, value, body) => ({
53
64
  kind: 'let',
54
65
  bind,
@@ -56,12 +67,14 @@ const eLet = (bind, value, body) => ({
56
67
  body,
57
68
  });
58
69
  exports.eLet = eLet;
70
+ /** Constructor de `let rec { defs } in body`: definiciones mutuamente recursivas. */
59
71
  const eLetRec = (defs, body) => ({
60
72
  kind: 'letRec',
61
73
  defs,
62
74
  body,
63
75
  });
64
76
  exports.eLetRec = eLetRec;
77
+ /** Constructor de `if cond then then_ else else_`. */
65
78
  const eIf = (cond, then_, else_) => ({
66
79
  kind: 'if',
67
80
  cond,
@@ -69,14 +82,17 @@ const eIf = (cond, then_, else_) => ({
69
82
  else: else_,
70
83
  });
71
84
  exports.eIf = eIf;
72
- // Azúcar: aplicaciones múltiples a izquierda.
85
+ /** Aplica `fn` a múltiples argumentos de izquierda a derecha: `fn a b c` ≡ `eApp(eApp(fn,a),b,c)`. */
73
86
  const eAppN = (fn, ...args) => args.reduce(exports.eApp, fn);
74
87
  exports.eAppN = eAppN;
75
- // Constantes base de los tipos primitivos.
88
+ /** Tipo primitivo `Int`. */
76
89
  exports.TInt = (0, exports.tConst)('Int');
90
+ /** Tipo primitivo `Bool`. */
77
91
  exports.TBool = (0, exports.tConst)('Bool');
92
+ /** Tipo primitivo `String`. */
78
93
  exports.TStr = (0, exports.tConst)('String');
79
94
  // ---------- Variables libres de un Type / TypeScheme ----------
95
+ /** Recolecta las variables de tipo libres (no vinculadas) en `t`. */
80
96
  function typeFreeVars(t, acc = new Set()) {
81
97
  switch (t.kind) {
82
98
  case 'tvar':
@@ -94,6 +110,7 @@ function typeFreeVars(t, acc = new Set()) {
94
110
  return acc;
95
111
  }
96
112
  }
113
+ /** Recolecta las variables de tipo libres en el cuerpo del esquema excluyendo las cuantificadas. */
97
114
  function schemeFreeVars(s) {
98
115
  const fv = typeFreeVars(s.body);
99
116
  for (const b of s.forall)
@@ -101,6 +118,7 @@ function schemeFreeVars(s) {
101
118
  return fv;
102
119
  }
103
120
  // ---------- Impresión legible ----------
121
+ /** Serializa un tipo a una cadena legible con precedencias correctas para flechas y constructores. */
104
122
  function typeToString(t) {
105
123
  switch (t.kind) {
106
124
  case 'tvar':
@@ -125,6 +143,7 @@ function typeToString(t) {
125
143
  }
126
144
  }
127
145
  }
146
+ /** Serializa un esquema de tipo a su representación `forall α. T` o simplemente `T` si es mono. */
128
147
  function schemeToString(s) {
129
148
  if (s.forall.length === 0)
130
149
  return typeToString(s.body);
@@ -134,6 +153,7 @@ function schemeToString(s) {
134
153
  // Inmutable: extend() devuelve un nuevo TypeEnv que comparte estructura
135
154
  // con el anterior. El test de `freeVars()` recorre todos los schemes
136
155
  // para soportar generalización correcta.
156
+ /** Entorno de tipos inmutable. Mapea nombres de variables a sus esquemas polimórficos. */
137
157
  class TypeEnv {
138
158
  bindings;
139
159
  constructor(bindings = new Map()) {
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/type-theory/hindley-milner/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/type-theory/hindley-milner/types.ts"],"names":[],"mappings":"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"}
@@ -1,14 +1,50 @@
1
1
  import { HOLTerm, HOLTheorem, HOLType } from './types';
2
2
  import { funTy } from './type-system';
3
3
  import { freeVars } from './term';
4
+ /** Regla REFL: produce el teorema `⊢ t = t` para cualquier término `t`. */
4
5
  export declare function refl(t: HOLTerm): HOLTheorem;
6
+ /**
7
+ * Regla TRANS: dados `⊢ a = b` y `⊢ b = c` produce `⊢ a = c`.
8
+ * @throws Si alguna premisa no es una igualdad o los extremos no encajan.
9
+ */
5
10
  export declare function trans(thm1: HOLTheorem, thm2: HOLTheorem): HOLTheorem;
11
+ /**
12
+ * Regla MK_COMB: dados `⊢ f = g` y `⊢ x = y` produce `⊢ f x = g y`.
13
+ * @throws Si alguna premisa no es igualdad o `f` no tiene tipo función.
14
+ */
6
15
  export declare function mkCombRule(thm1: HOLTheorem, thm2: HOLTheorem): HOLTheorem;
16
+ /**
17
+ * Regla ABS: dado `⊢ s = t` produce `⊢ (λv.s) = (λv.t)`.
18
+ * `v` no puede aparecer libre en las hipótesis de `thm1`.
19
+ * @throws Si `v` no es variable, la premisa no es igualdad, o la condición de variable es violada.
20
+ */
7
21
  export declare function abs(v: HOLTerm, thm1: HOLTheorem): HOLTheorem;
22
+ /**
23
+ * Regla BETA: dado `(λv.t) v` produce `⊢ (λv.t) v = t`.
24
+ * Solo acepta la forma exacta donde el argumento es el propio binder; usar INST para otros.
25
+ * @throws Si `t` no es una aplicación de lambda o el argumento no coincide con el binder.
26
+ */
8
27
  export declare function beta(t: HOLTerm): HOLTheorem;
28
+ /**
29
+ * Regla ASSUME: produce `p ⊢ p` (hipótesis no descargada).
30
+ * @throws Si `p` no tiene tipo `bool`.
31
+ */
9
32
  export declare function assume(p: HOLTerm): HOLTheorem;
33
+ /**
34
+ * Regla EQ_MP: dados `⊢ p = q` y `⊢ p` produce `⊢ q` (modus ponens vía igualdad booleana).
35
+ * @throws Si la primera premisa no es igualdad de bools, o la segunda no es α-igual al LHS.
36
+ */
10
37
  export declare function eqMp(thm1: HOLTheorem, thm2: HOLTheorem): HOLTheorem;
38
+ /**
39
+ * Regla DEDUCT_ANTISYM_RULE: dados `A ⊢ p` y `B ⊢ q` produce
40
+ * `(A \ {q}) ∪ (B \ {p}) ⊢ p ↔ q`.
41
+ * @throws Si alguna conclusión no es de tipo `bool`.
42
+ */
11
43
  export declare function deductAntisymRule(thm1: HOLTheorem, thm2: HOLTheorem): HOLTheorem;
44
+ /**
45
+ * Regla INST_TYPE: instancia variables de tipo en `thm1` según `subst`.
46
+ * Deduplica hipótesis que colapsen tras la sustitución.
47
+ */
12
48
  export declare function instType(subst: Record<string, HOLType>, thm1: HOLTheorem): HOLTheorem;
13
49
  interface InstEntry {
14
50
  name: string;
@@ -1 +1 @@
1
- {"version":3,"file":"rules.d.ts","sourceRoot":"","sources":["../../../src/type-theory/hol/rules.ts"],"names":[],"mappings":"AAoBA,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AACvD,OAAO,EAAU,KAAK,EAAmC,MAAM,eAAe,CAAC;AAC/E,OAAO,EAGL,QAAQ,EAUT,MAAM,QAAQ,CAAC;AAiChB,wBAAgB,IAAI,CAAC,CAAC,EAAE,OAAO,GAAG,UAAU,CAI3C;AAID,wBAAgB,KAAK,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,GAAG,UAAU,CAepE;AAID,wBAAgB,UAAU,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,GAAG,UAAU,CAoBzE;AAID,wBAAgB,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,GAAG,UAAU,CAmB5D;AAMD,wBAAgB,IAAI,CAAC,CAAC,EAAE,OAAO,GAAG,UAAU,CAc3C;AAID,wBAAgB,MAAM,CAAC,CAAC,EAAE,OAAO,GAAG,UAAU,CAM7C;AAID,wBAAgB,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,GAAG,UAAU,CAcnE;AAQD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,GAAG,UAAU,CAWhF;AAID,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,UAAU,GAAG,UAAU,CAUrF;AAID,UAAU,SAAS;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE,OAAO,CAAC;CAChB;AAED;;;;GAIG;AACH,wBAAgB,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,UAAU,GAAG,UAAU,CAajF;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,UAAU,GAAG,UAAU,CA8C5E;AAID,OAAO,EAAE,UAAU,IAAI,MAAM,EAAE,CAAC;AAGhC,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC"}
1
+ {"version":3,"file":"rules.d.ts","sourceRoot":"","sources":["../../../src/type-theory/hol/rules.ts"],"names":[],"mappings":"AAoBA,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AACvD,OAAO,EAAU,KAAK,EAAmC,MAAM,eAAe,CAAC;AAC/E,OAAO,EAGL,QAAQ,EAUT,MAAM,QAAQ,CAAC;AAiChB,2EAA2E;AAC3E,wBAAgB,IAAI,CAAC,CAAC,EAAE,OAAO,GAAG,UAAU,CAI3C;AAID;;;GAGG;AACH,wBAAgB,KAAK,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,GAAG,UAAU,CAepE;AAID;;;GAGG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,GAAG,UAAU,CAoBzE;AAID;;;;GAIG;AACH,wBAAgB,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,GAAG,UAAU,CAmB5D;AAMD;;;;GAIG;AACH,wBAAgB,IAAI,CAAC,CAAC,EAAE,OAAO,GAAG,UAAU,CAc3C;AAID;;;GAGG;AACH,wBAAgB,MAAM,CAAC,CAAC,EAAE,OAAO,GAAG,UAAU,CAM7C;AAID;;;GAGG;AACH,wBAAgB,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,GAAG,UAAU,CAcnE;AAQD;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,GAAG,UAAU,CAWhF;AAID;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,UAAU,GAAG,UAAU,CAUrF;AAID,UAAU,SAAS;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE,OAAO,CAAC;CAChB;AAED;;;;GAIG;AACH,wBAAgB,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,UAAU,GAAG,UAAU,CAajF;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,UAAU,GAAG,UAAU,CA8C5E;AAID,OAAO,EAAE,UAAU,IAAI,MAAM,EAAE,CAAC;AAGhC,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC"}