@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,369 @@
1
+ "use strict";
2
+ // ============================================================
3
+ // Refinement types — Parser y evaluador de predicados
4
+ // ============================================================
5
+ //
6
+ // Los predicados se escriben como cadenas: "x > 0 && x < 100".
7
+ // Aquí va un parser recursivo-descendente minimalista y un
8
+ // evaluador sobre un entorno de variables. La gramática soportada:
9
+ //
10
+ // expr := or
11
+ // or := and ('||' and)*
12
+ // and := cmp ('&&' cmp)*
13
+ // cmp := add (op add)? op ∈ { <, <=, >, >=, ==, != }
14
+ // add := mul (('+'|'-') mul)*
15
+ // mul := unary (('*'|'/') unary)*
16
+ // unary := '!' unary | '-' unary | atom
17
+ // atom := number | bool | ident | '(' expr ')'
18
+ //
19
+ // El módulo no pretende cubrir aritmética completa: alcanza para
20
+ // los predicados típicos de un sistema didáctico (rangos, igualdades).
21
+ Object.defineProperty(exports, "__esModule", { value: true });
22
+ exports.parsePredicate = parsePredicate;
23
+ exports.freeVars = freeVars;
24
+ exports.substVar = substVar;
25
+ exports.renameVar = renameVar;
26
+ exports.predicateToString = predicateToString;
27
+ exports.evalPredicate = evalPredicate;
28
+ function tokenize(input) {
29
+ const out = [];
30
+ let i = 0;
31
+ const s = input;
32
+ while (i < s.length) {
33
+ const c = s[i] ?? '';
34
+ if (c === ' ' || c === '\t' || c === '\n' || c === '\r') {
35
+ i++;
36
+ continue;
37
+ }
38
+ if (c === '(') {
39
+ out.push({ type: 'lparen' });
40
+ i++;
41
+ continue;
42
+ }
43
+ if (c === ')') {
44
+ out.push({ type: 'rparen' });
45
+ i++;
46
+ continue;
47
+ }
48
+ // string literal
49
+ if (c === '"') {
50
+ let j = i + 1;
51
+ let buf = '';
52
+ while (j < s.length && s[j] !== '"') {
53
+ buf += s[j];
54
+ j++;
55
+ }
56
+ out.push({ type: 'str', value: buf });
57
+ i = j + 1;
58
+ continue;
59
+ }
60
+ // multichar operators
61
+ const two = s.slice(i, i + 2);
62
+ if (['<=', '>=', '==', '!=', '&&', '||'].includes(two)) {
63
+ out.push({ type: 'op', value: two });
64
+ i += 2;
65
+ continue;
66
+ }
67
+ if ('+-*/<>!'.includes(c)) {
68
+ out.push({ type: 'op', value: c });
69
+ i++;
70
+ continue;
71
+ }
72
+ // number
73
+ if (c >= '0' && c <= '9') {
74
+ let j = i;
75
+ while (j < s.length) {
76
+ const ch = s[j] ?? '';
77
+ if (!((ch >= '0' && ch <= '9') || ch === '.'))
78
+ break;
79
+ j++;
80
+ }
81
+ out.push({ type: 'num', value: Number(s.slice(i, j)) });
82
+ i = j;
83
+ continue;
84
+ }
85
+ // ident / keyword
86
+ if ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z') || c === '_') {
87
+ let j = i;
88
+ while (j < s.length) {
89
+ const ch = s[j] ?? '';
90
+ if (!((ch >= 'a' && ch <= 'z') ||
91
+ (ch >= 'A' && ch <= 'Z') ||
92
+ (ch >= '0' && ch <= '9') ||
93
+ ch === '_'))
94
+ break;
95
+ j++;
96
+ }
97
+ const word = s.slice(i, j);
98
+ if (word === 'true')
99
+ out.push({ type: 'bool', value: true });
100
+ else if (word === 'false')
101
+ out.push({ type: 'bool', value: false });
102
+ else
103
+ out.push({ type: 'ident', value: word });
104
+ i = j;
105
+ continue;
106
+ }
107
+ throw new Error(`predicate lexer: caracter inesperado "${c}" en posición ${i}`);
108
+ }
109
+ out.push({ type: 'eof' });
110
+ return out;
111
+ }
112
+ // ---------- Parser ----------
113
+ class Parser {
114
+ tokens;
115
+ pos = 0;
116
+ constructor(tokens) {
117
+ this.tokens = tokens;
118
+ }
119
+ peek() {
120
+ return this.tokens[this.pos] ?? { type: 'eof' };
121
+ }
122
+ next() {
123
+ const t = this.tokens[this.pos] ?? { type: 'eof' };
124
+ this.pos++;
125
+ return t;
126
+ }
127
+ parseExpr() {
128
+ const e = this.parseOr();
129
+ if (this.peek().type !== 'eof') {
130
+ throw new Error('predicate parser: tokens sobrantes');
131
+ }
132
+ return e;
133
+ }
134
+ parseOr() {
135
+ let left = this.parseAnd();
136
+ while (this.peek().type === 'op' && this.peek().value === '||') {
137
+ this.next();
138
+ const right = this.parseAnd();
139
+ left = { kind: 'binop', op: '||', left, right };
140
+ }
141
+ return left;
142
+ }
143
+ parseAnd() {
144
+ let left = this.parseCmp();
145
+ while (this.peek().type === 'op' && this.peek().value === '&&') {
146
+ this.next();
147
+ const right = this.parseCmp();
148
+ left = { kind: 'binop', op: '&&', left, right };
149
+ }
150
+ return left;
151
+ }
152
+ parseCmp() {
153
+ const left = this.parseAdd();
154
+ const t = this.peek();
155
+ if (t.type === 'op' && ['<', '<=', '>', '>=', '==', '!='].includes(t.value)) {
156
+ this.next();
157
+ const right = this.parseAdd();
158
+ return {
159
+ kind: 'binop',
160
+ op: t.value,
161
+ left,
162
+ right,
163
+ };
164
+ }
165
+ return left;
166
+ }
167
+ parseAdd() {
168
+ let left = this.parseMul();
169
+ while (this.peek().type === 'op' &&
170
+ ['+', '-'].includes(this.peek().value)) {
171
+ const op = this.next().value;
172
+ const right = this.parseMul();
173
+ left = { kind: 'binop', op, left, right };
174
+ }
175
+ return left;
176
+ }
177
+ parseMul() {
178
+ let left = this.parseUnary();
179
+ while (this.peek().type === 'op' &&
180
+ ['*', '/'].includes(this.peek().value)) {
181
+ const op = this.next().value;
182
+ const right = this.parseUnary();
183
+ left = { kind: 'binop', op, left, right };
184
+ }
185
+ return left;
186
+ }
187
+ parseUnary() {
188
+ const t = this.peek();
189
+ if (t.type === 'op' && (t.value === '!' || t.value === '-')) {
190
+ this.next();
191
+ const arg = this.parseUnary();
192
+ return { kind: 'unop', op: t.value, arg };
193
+ }
194
+ return this.parseAtom();
195
+ }
196
+ parseAtom() {
197
+ const t = this.next();
198
+ if (t.type === 'num')
199
+ return { kind: 'num', value: t.value };
200
+ if (t.type === 'bool')
201
+ return { kind: 'bool', value: t.value };
202
+ if (t.type === 'str')
203
+ return { kind: 'str', value: t.value };
204
+ if (t.type === 'ident')
205
+ return { kind: 'var', name: t.value };
206
+ if (t.type === 'lparen') {
207
+ const e = this.parseOr();
208
+ const close = this.next();
209
+ if (close.type !== 'rparen')
210
+ throw new Error('predicate parser: falta ")"');
211
+ return e;
212
+ }
213
+ throw new Error(`predicate parser: token inesperado ${JSON.stringify(t)}`);
214
+ }
215
+ }
216
+ const PARSE_CACHE = new Map();
217
+ function parsePredicate(src) {
218
+ const trimmed = (src ?? '').trim();
219
+ if (trimmed === '' || trimmed === 'true')
220
+ return { kind: 'bool', value: true };
221
+ if (trimmed === 'false')
222
+ return { kind: 'bool', value: false };
223
+ const cached = PARSE_CACHE.get(trimmed);
224
+ if (cached)
225
+ return cached;
226
+ const expr = new Parser(tokenize(trimmed)).parseExpr();
227
+ PARSE_CACHE.set(trimmed, expr);
228
+ return expr;
229
+ }
230
+ // ---------- Free variables ----------
231
+ function freeVars(e, acc = new Set()) {
232
+ switch (e.kind) {
233
+ case 'num':
234
+ case 'bool':
235
+ case 'str':
236
+ return acc;
237
+ case 'var':
238
+ acc.add(e.name);
239
+ return acc;
240
+ case 'unop':
241
+ return freeVars(e.arg, acc);
242
+ case 'binop':
243
+ freeVars(e.left, acc);
244
+ freeVars(e.right, acc);
245
+ return acc;
246
+ }
247
+ }
248
+ // ---------- Substitution (rename var → expr) ----------
249
+ function substVar(e, name, replacement) {
250
+ switch (e.kind) {
251
+ case 'num':
252
+ case 'bool':
253
+ case 'str':
254
+ return e;
255
+ case 'var':
256
+ return e.name === name ? replacement : e;
257
+ case 'unop':
258
+ return { kind: 'unop', op: e.op, arg: substVar(e.arg, name, replacement) };
259
+ case 'binop':
260
+ return {
261
+ kind: 'binop',
262
+ op: e.op,
263
+ left: substVar(e.left, name, replacement),
264
+ right: substVar(e.right, name, replacement),
265
+ };
266
+ }
267
+ }
268
+ function renameVar(predicate, fromName, toName) {
269
+ if (fromName === toName)
270
+ return predicate;
271
+ const ast = parsePredicate(predicate);
272
+ const renamed = substVar(ast, fromName, { kind: 'var', name: toName });
273
+ return predicateToString(renamed);
274
+ }
275
+ // ---------- Pretty-print de la AST a cadena canónica ----------
276
+ function predicateToString(e) {
277
+ switch (e.kind) {
278
+ case 'num':
279
+ return String(e.value);
280
+ case 'bool':
281
+ return e.value ? 'true' : 'false';
282
+ case 'str':
283
+ return JSON.stringify(e.value);
284
+ case 'var':
285
+ return e.name;
286
+ case 'unop':
287
+ return `${e.op}(${predicateToString(e.arg)})`;
288
+ case 'binop':
289
+ return `(${predicateToString(e.left)} ${e.op} ${predicateToString(e.right)})`;
290
+ }
291
+ }
292
+ function evalPredicate(e, env) {
293
+ switch (e.kind) {
294
+ case 'num':
295
+ return e.value;
296
+ case 'bool':
297
+ return e.value;
298
+ case 'str':
299
+ return e.value;
300
+ case 'var':
301
+ if (!(e.name in env)) {
302
+ throw new Error(`evalPredicate: variable libre "${e.name}" no está en el entorno`);
303
+ }
304
+ return env[e.name];
305
+ case 'unop': {
306
+ const v = evalPredicate(e.arg, env);
307
+ if (e.op === '!') {
308
+ if (typeof v !== 'boolean')
309
+ throw new Error('evalPredicate: ! aplicado a no-booleano');
310
+ return !v;
311
+ }
312
+ // op === '-'
313
+ if (typeof v !== 'number')
314
+ throw new Error('evalPredicate: - aplicado a no-número');
315
+ return -v;
316
+ }
317
+ case 'binop': {
318
+ const l = evalPredicate(e.left, env);
319
+ const r = evalPredicate(e.right, env);
320
+ switch (e.op) {
321
+ case '+':
322
+ if (typeof l === 'number' && typeof r === 'number')
323
+ return l + r;
324
+ if (typeof l === 'string' && typeof r === 'string')
325
+ return l + r;
326
+ throw new Error('evalPredicate: + sólo entre dos números o dos strings');
327
+ case '-':
328
+ case '*':
329
+ case '/': {
330
+ if (typeof l !== 'number' || typeof r !== 'number')
331
+ throw new Error(`evalPredicate: ${e.op} sólo entre números`);
332
+ if (e.op === '-')
333
+ return l - r;
334
+ if (e.op === '*')
335
+ return l * r;
336
+ if (r === 0)
337
+ throw new Error('evalPredicate: división por cero');
338
+ return l / r;
339
+ }
340
+ case '<':
341
+ case '<=':
342
+ case '>':
343
+ case '>=':
344
+ if (typeof l !== 'number' || typeof r !== 'number')
345
+ throw new Error(`evalPredicate: ${e.op} requiere números`);
346
+ if (e.op === '<')
347
+ return l < r;
348
+ if (e.op === '<=')
349
+ return l <= r;
350
+ if (e.op === '>')
351
+ return l > r;
352
+ return l >= r;
353
+ case '==':
354
+ return l === r;
355
+ case '!=':
356
+ return l !== r;
357
+ case '&&':
358
+ if (typeof l !== 'boolean' || typeof r !== 'boolean')
359
+ throw new Error('evalPredicate: && requiere booleanos');
360
+ return l && r;
361
+ case '||':
362
+ if (typeof l !== 'boolean' || typeof r !== 'boolean')
363
+ throw new Error('evalPredicate: || requiere booleanos');
364
+ return l || r;
365
+ }
366
+ }
367
+ }
368
+ }
369
+ //# sourceMappingURL=predicate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"predicate.js","sourceRoot":"","sources":["../../src/refinement-types/predicate.ts"],"names":[],"mappings":";AAAA,+DAA+D;AAC/D,sDAAsD;AACtD,+DAA+D;AAC/D,EAAE;AACF,+DAA+D;AAC/D,2DAA2D;AAC3D,mEAAmE;AACnE,EAAE;AACF,iBAAiB;AACjB,8BAA8B;AAC9B,8BAA8B;AAC9B,+DAA+D;AAC/D,mCAAmC;AACnC,uCAAuC;AACvC,2CAA2C;AAC3C,mDAAmD;AACnD,EAAE;AACF,iEAAiE;AACjE,uEAAuE;;AAiOvE,wCASC;AAID,4BAgBC;AAID,4BAkBC;AAED,8BAKC;AAID,8CAeC;AAOD,sCAkEC;AA5VD,SAAS,QAAQ,CAAC,KAAa;IAC7B,MAAM,GAAG,GAAY,EAAE,CAAC;IACxB,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,MAAM,CAAC,GAAG,KAAK,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC;QACpB,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACrB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;YACxD,CAAC,EAAE,CAAC;YACJ,SAAS;QACX,CAAC;QACD,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;YACd,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;YAC7B,CAAC,EAAE,CAAC;YACJ,SAAS;QACX,CAAC;QACD,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;YACd,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;YAC7B,CAAC,EAAE,CAAC;YACJ,SAAS;QACX,CAAC;QACD,iBAAiB;QACjB,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;YACd,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACd,IAAI,GAAG,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;gBACpC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;gBACZ,CAAC,EAAE,CAAC;YACN,CAAC;YACD,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;YACtC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACV,SAAS;QACX,CAAC;QACD,sBAAsB;QACtB,MAAM,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QAC9B,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACvD,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;YACrC,CAAC,IAAI,CAAC,CAAC;YACP,SAAS;QACX,CAAC;QACD,IAAI,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;YAC1B,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;YACnC,CAAC,EAAE,CAAC;YACJ,SAAS;QACX,CAAC;QACD,SAAS;QACT,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;YACzB,IAAI,CAAC,GAAG,CAAC,CAAC;YACV,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC;gBACpB,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;gBACtB,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,IAAI,EAAE,IAAI,GAAG,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC;oBAAE,MAAM;gBACrD,CAAC,EAAE,CAAC;YACN,CAAC;YACD,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACxD,CAAC,GAAG,CAAC,CAAC;YACN,SAAS;QACX,CAAC;QACD,kBAAkB;QAClB,IAAI,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;YAClE,IAAI,CAAC,GAAG,CAAC,CAAC;YACV,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC;gBACpB,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;gBACtB,IACE,CAAC,CACC,CAAC,EAAE,IAAI,GAAG,IAAI,EAAE,IAAI,GAAG,CAAC;oBACxB,CAAC,EAAE,IAAI,GAAG,IAAI,EAAE,IAAI,GAAG,CAAC;oBACxB,CAAC,EAAE,IAAI,GAAG,IAAI,EAAE,IAAI,GAAG,CAAC;oBACxB,EAAE,KAAK,GAAG,CACX;oBAED,MAAM;gBACR,CAAC,EAAE,CAAC;YACN,CAAC;YACD,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAC3B,IAAI,IAAI,KAAK,MAAM;gBAAE,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;iBACxD,IAAI,IAAI,KAAK,OAAO;gBAAE,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;;gBAC/D,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YAC9C,CAAC,GAAG,CAAC,CAAC;YACN,SAAS;QACX,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC;IAClF,CAAC;IACD,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAC1B,OAAO,GAAG,CAAC;AACb,CAAC;AAED,+BAA+B;AAE/B,MAAM,MAAM;IAEU;IADZ,GAAG,GAAG,CAAC,CAAC;IAChB,YAAoB,MAAe;QAAf,WAAM,GAAN,MAAM,CAAS;IAAG,CAAC;IAE/B,IAAI;QACV,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;IAClD,CAAC;IACO,IAAI;QACV,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;QACnD,IAAI,CAAC,GAAG,EAAE,CAAC;QACX,OAAO,CAAC,CAAC;IACX,CAAC;IAED,SAAS;QACP,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;QACzB,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;YAC/B,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;QACxD,CAAC;QACD,OAAO,CAAC,CAAC;IACX,CAAC;IAEO,OAAO;QACb,IAAI,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC3B,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,KAAK,IAAI,IAAK,IAAI,CAAC,IAAI,EAAwB,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;YACtF,IAAI,CAAC,IAAI,EAAE,CAAC;YACZ,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC9B,IAAI,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;QAClD,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,QAAQ;QACd,IAAI,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC3B,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,KAAK,IAAI,IAAK,IAAI,CAAC,IAAI,EAAwB,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;YACtF,IAAI,CAAC,IAAI,EAAE,CAAC;YACZ,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC9B,IAAI,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;QAClD,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,QAAQ;QACd,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC7B,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QACtB,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;YAC5E,IAAI,CAAC,IAAI,EAAE,CAAC;YACZ,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC9B,OAAO;gBACL,IAAI,EAAE,OAAO;gBACb,EAAE,EAAE,CAAC,CAAC,KAA8C;gBACpD,IAAI;gBACJ,KAAK;aACN,CAAC;QACJ,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,QAAQ;QACd,IAAI,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC3B,OACE,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,KAAK,IAAI;YACzB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAE,IAAI,CAAC,IAAI,EAAwB,CAAC,KAAK,CAAC,EAC7D,CAAC;YACD,MAAM,EAAE,GAAI,IAAI,CAAC,IAAI,EAAwB,CAAC,KAAkB,CAAC;YACjE,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC9B,IAAI,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;QAC5C,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,QAAQ;QACd,IAAI,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAC7B,OACE,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,KAAK,IAAI;YACzB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAE,IAAI,CAAC,IAAI,EAAwB,CAAC,KAAK,CAAC,EAC7D,CAAC;YACD,MAAM,EAAE,GAAI,IAAI,CAAC,IAAI,EAAwB,CAAC,KAAkB,CAAC;YACjE,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;YAChC,IAAI,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;QAC5C,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,UAAU;QAChB,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QACtB,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,KAAK,GAAG,IAAI,CAAC,CAAC,KAAK,KAAK,GAAG,CAAC,EAAE,CAAC;YAC5D,IAAI,CAAC,IAAI,EAAE,CAAC;YACZ,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;YAC9B,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC;QAC5C,CAAC;QACD,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC;IAC1B,CAAC;IAEO,SAAS;QACf,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QACtB,IAAI,CAAC,CAAC,IAAI,KAAK,KAAK;YAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;QAC7D,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM;YAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;QAC/D,IAAI,CAAC,CAAC,IAAI,KAAK,KAAK;YAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;QAC7D,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO;YAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;QAC9D,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACxB,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;YACzB,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;YAC1B,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ;gBAAE,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;YAC5E,OAAO,CAAC,CAAC;QACX,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,sCAAsC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAC7E,CAAC;CACF;AAED,MAAM,WAAW,GAAG,IAAI,GAAG,EAAiB,CAAC;AAE7C,SAAgB,cAAc,CAAC,GAAW;IACxC,MAAM,OAAO,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACnC,IAAI,OAAO,KAAK,EAAE,IAAI,OAAO,KAAK,MAAM;QAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IAC/E,IAAI,OAAO,KAAK,OAAO;QAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;IAC/D,MAAM,MAAM,GAAG,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACxC,IAAI,MAAM;QAAE,OAAO,MAAM,CAAC;IAC1B,MAAM,IAAI,GAAG,IAAI,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;IACvD,WAAW,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAC/B,OAAO,IAAI,CAAC;AACd,CAAC;AAED,uCAAuC;AAEvC,SAAgB,QAAQ,CAAC,CAAQ,EAAE,MAAmB,IAAI,GAAG,EAAE;IAC7D,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;QACf,KAAK,KAAK,CAAC;QACX,KAAK,MAAM,CAAC;QACZ,KAAK,KAAK;YACR,OAAO,GAAG,CAAC;QACb,KAAK,KAAK;YACR,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YAChB,OAAO,GAAG,CAAC;QACb,KAAK,MAAM;YACT,OAAO,QAAQ,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAC9B,KAAK,OAAO;YACV,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;YACtB,QAAQ,CAAC,CAAC,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YACvB,OAAO,GAAG,CAAC;IACf,CAAC;AACH,CAAC;AAED,yDAAyD;AAEzD,SAAgB,QAAQ,CAAC,CAAQ,EAAE,IAAY,EAAE,WAAkB;IACjE,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;QACf,KAAK,KAAK,CAAC;QACX,KAAK,MAAM,CAAC;QACZ,KAAK,KAAK;YACR,OAAO,CAAC,CAAC;QACX,KAAK,KAAK;YACR,OAAO,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3C,KAAK,MAAM;YACT,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,WAAW,CAAC,EAAE,CAAC;QAC7E,KAAK,OAAO;YACV,OAAO;gBACL,IAAI,EAAE,OAAO;gBACb,EAAE,EAAE,CAAC,CAAC,EAAE;gBACR,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,WAAW,CAAC;gBACzC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,WAAW,CAAC;aAC5C,CAAC;IACN,CAAC;AACH,CAAC;AAED,SAAgB,SAAS,CAAC,SAAiB,EAAE,QAAgB,EAAE,MAAc;IAC3E,IAAI,QAAQ,KAAK,MAAM;QAAE,OAAO,SAAS,CAAC;IAC1C,MAAM,GAAG,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC;IACtC,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;IACvE,OAAO,iBAAiB,CAAC,OAAO,CAAC,CAAC;AACpC,CAAC;AAED,iEAAiE;AAEjE,SAAgB,iBAAiB,CAAC,CAAQ;IACxC,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;QACf,KAAK,KAAK;YACR,OAAO,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QACzB,KAAK,MAAM;YACT,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;QACpC,KAAK,KAAK;YACR,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QACjC,KAAK,KAAK;YACR,OAAO,CAAC,CAAC,IAAI,CAAC;QAChB,KAAK,MAAM;YACT,OAAO,GAAG,CAAC,CAAC,EAAE,IAAI,iBAAiB,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;QAChD,KAAK,OAAO;YACV,OAAO,IAAI,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,iBAAiB,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC;IAClF,CAAC;AACH,CAAC;AAOD,SAAgB,aAAa,CAAC,CAAQ,EAAE,GAAS;IAC/C,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;QACf,KAAK,KAAK;YACR,OAAO,CAAC,CAAC,KAAK,CAAC;QACjB,KAAK,MAAM;YACT,OAAO,CAAC,CAAC,KAAK,CAAC;QACjB,KAAK,KAAK;YACR,OAAO,CAAC,CAAC,KAAK,CAAC;QACjB,KAAK,KAAK;YACR,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC;gBACrB,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC,IAAI,yBAAyB,CAAC,CAAC;YACrF,CAAC;YACD,OAAO,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACrB,KAAK,MAAM,CAAC,CAAC,CAAC;YACZ,MAAM,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YACpC,IAAI,CAAC,CAAC,EAAE,KAAK,GAAG,EAAE,CAAC;gBACjB,IAAI,OAAO,CAAC,KAAK,SAAS;oBAAE,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;gBACvF,OAAO,CAAC,CAAC,CAAC;YACZ,CAAC;YACD,aAAa;YACb,IAAI,OAAO,CAAC,KAAK,QAAQ;gBAAE,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;YACpF,OAAO,CAAC,CAAC,CAAC;QACZ,CAAC;QACD,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,MAAM,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;YACrC,MAAM,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YACtC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC;gBACb,KAAK,GAAG;oBACN,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,QAAQ;wBAAE,OAAO,CAAC,GAAG,CAAC,CAAC;oBACjE,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,QAAQ;wBAAE,OAAO,CAAC,GAAG,CAAC,CAAC;oBACjE,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;gBAC3E,KAAK,GAAG,CAAC;gBACT,KAAK,GAAG,CAAC;gBACT,KAAK,GAAG,CAAC,CAAC,CAAC;oBACT,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,QAAQ;wBAChD,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC,EAAE,qBAAqB,CAAC,CAAC;oBAC/D,IAAI,CAAC,CAAC,EAAE,KAAK,GAAG;wBAAE,OAAO,CAAC,GAAG,CAAC,CAAC;oBAC/B,IAAI,CAAC,CAAC,EAAE,KAAK,GAAG;wBAAE,OAAO,CAAC,GAAG,CAAC,CAAC;oBAC/B,IAAI,CAAC,KAAK,CAAC;wBAAE,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;oBACjE,OAAO,CAAC,GAAG,CAAC,CAAC;gBACf,CAAC;gBACD,KAAK,GAAG,CAAC;gBACT,KAAK,IAAI,CAAC;gBACV,KAAK,GAAG,CAAC;gBACT,KAAK,IAAI;oBACP,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,QAAQ;wBAChD,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC,EAAE,mBAAmB,CAAC,CAAC;oBAC7D,IAAI,CAAC,CAAC,EAAE,KAAK,GAAG;wBAAE,OAAO,CAAC,GAAG,CAAC,CAAC;oBAC/B,IAAI,CAAC,CAAC,EAAE,KAAK,IAAI;wBAAE,OAAO,CAAC,IAAI,CAAC,CAAC;oBACjC,IAAI,CAAC,CAAC,EAAE,KAAK,GAAG;wBAAE,OAAO,CAAC,GAAG,CAAC,CAAC;oBAC/B,OAAO,CAAC,IAAI,CAAC,CAAC;gBAChB,KAAK,IAAI;oBACP,OAAO,CAAC,KAAK,CAAC,CAAC;gBACjB,KAAK,IAAI;oBACP,OAAO,CAAC,KAAK,CAAC,CAAC;gBACjB,KAAK,IAAI;oBACP,IAAI,OAAO,CAAC,KAAK,SAAS,IAAI,OAAO,CAAC,KAAK,SAAS;wBAClD,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;oBAC1D,OAAO,CAAC,IAAI,CAAC,CAAC;gBAChB,KAAK,IAAI;oBACP,IAAI,OAAO,CAAC,KAAK,SAAS,IAAI,OAAO,CAAC,KAAK,SAAS;wBAClD,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;oBAC1D,OAAO,CAAC,IAAI,CAAC,CAAC;YAClB,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC"}
@@ -0,0 +1,24 @@
1
+ export interface SolverOpts {
2
+ /** Cota inclusiva para enteros: dominio [-intBound, +intBound]. */
3
+ intBound?: number;
4
+ /** Cota total de intentos para abortar enumeración excesiva. */
5
+ maxAttempts?: number;
6
+ }
7
+ export interface CheckResult {
8
+ satisfiable: boolean;
9
+ counter?: Record<string, number | boolean>;
10
+ }
11
+ /**
12
+ * checkVC — devuelve si la conjunción de predicados es satisfacible.
13
+ * Si lo es, incluye un testigo `counter` con la asignación encontrada.
14
+ * El nombre "counter" se conserva por compatibilidad con la firma
15
+ * típica de verificadores que buscan contraejemplos de implicaciones.
16
+ */
17
+ export declare function checkVC(predicates: string[], opts?: SolverOpts): CheckResult;
18
+ /**
19
+ * implies — chequea si `premises ⇒ conclusion` es válido en el dominio
20
+ * acotado. Implementado como búsqueda de contraejemplo a
21
+ * `premises ∧ ¬conclusion`.
22
+ */
23
+ export declare function implies(premises: string[], conclusion: string, opts?: SolverOpts): boolean;
24
+ //# sourceMappingURL=solver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"solver.d.ts","sourceRoot":"","sources":["../../src/refinement-types/solver.ts"],"names":[],"mappings":"AA2BA,MAAM,WAAW,UAAU;IACzB,mEAAmE;IACnE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gEAAgE;IAChE,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,WAAW;IAC1B,WAAW,EAAE,OAAO,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC;CAC5C;AAsGD;;;;;GAKG;AACH,wBAAgB,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,IAAI,GAAE,UAAe,GAAG,WAAW,CAoEhF;AAED;;;;GAIG;AACH,wBAAgB,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,GAAE,UAAe,GAAG,OAAO,CAM9F"}
@@ -0,0 +1,207 @@
1
+ "use strict";
2
+ // ============================================================
3
+ // Refinement types — Solver bounded de VCs
4
+ // ============================================================
5
+ //
6
+ // Las VCs (verification conditions) son listas de predicados que
7
+ // se conjuntan. checkVC(P) responde:
8
+ // - satisfiable: ¿existe asignación que haga ⋀P verdadero?
9
+ // - counter: dicha asignación si la hay (testigo).
10
+ //
11
+ // Algoritmo: enumeración acotada sobre Int en [-bound, +bound]
12
+ // y sobre Bool. Es deliberadamente simple — Liquid Haskell usa Z3,
13
+ // nosotros usamos búsqueda finita suficiente para los tests
14
+ // del módulo y para subtipado de rangos pequeños.
15
+ //
16
+ // Para chequear "P ⇒ Q" (validez del implicador), se busca un
17
+ // contraejemplo a "P ∧ ¬Q": si NO se halla en el dominio acotado,
18
+ // se reporta válido.
19
+ Object.defineProperty(exports, "__esModule", { value: true });
20
+ exports.checkVC = checkVC;
21
+ exports.implies = implies;
22
+ const predicate_1 = require("./predicate");
23
+ /**
24
+ * Heurística para clasificar variables libres en booleanas o enteras.
25
+ * Una variable se marca como booleana si aparece como operando directo
26
+ * de !, &&, || o en comparaciones contra booleanos literales.
27
+ */
28
+ function classifyVars(ast) {
29
+ const kinds = new Map();
30
+ function visit(e, expectedBool) {
31
+ switch (e.kind) {
32
+ case 'num':
33
+ case 'bool':
34
+ case 'str':
35
+ return;
36
+ case 'var':
37
+ if (expectedBool) {
38
+ const prev = kinds.get(e.name);
39
+ if (!prev)
40
+ kinds.set(e.name, 'bool');
41
+ }
42
+ else if (!kinds.has(e.name)) {
43
+ kinds.set(e.name, 'int');
44
+ }
45
+ return;
46
+ case 'unop':
47
+ visit(e.arg, e.op === '!');
48
+ return;
49
+ case 'binop': {
50
+ switch (e.op) {
51
+ case '&&':
52
+ case '||':
53
+ visit(e.left, true);
54
+ visit(e.right, true);
55
+ return;
56
+ case '+':
57
+ case '-':
58
+ case '*':
59
+ case '/':
60
+ case '<':
61
+ case '<=':
62
+ case '>':
63
+ case '>=':
64
+ visit(e.left, false);
65
+ visit(e.right, false);
66
+ return;
67
+ case '==':
68
+ case '!=': {
69
+ const rightBool = e.right.kind === 'bool' || e.left.kind === 'bool';
70
+ visit(e.left, rightBool);
71
+ visit(e.right, rightBool);
72
+ return;
73
+ }
74
+ }
75
+ }
76
+ }
77
+ }
78
+ visit(ast, true); // top-level expected boolean
79
+ return kinds;
80
+ }
81
+ function collectVars(predicates) {
82
+ const all = new Map();
83
+ const asts = [];
84
+ for (const src of predicates) {
85
+ const ast = (0, predicate_1.parsePredicate)(src);
86
+ asts.push(ast);
87
+ const local = classifyVars(ast);
88
+ const free = (0, predicate_1.freeVars)(ast);
89
+ for (const v of free) {
90
+ const newKind = local.get(v) ?? 'int';
91
+ const prev = all.get(v);
92
+ if (!prev)
93
+ all.set(v, newKind);
94
+ else if (prev !== newKind) {
95
+ // conflicto: optamos por 'int' (más informativo)
96
+ all.set(v, 'int');
97
+ }
98
+ }
99
+ }
100
+ const vars = Array.from(all.entries()).map(([name, kind]) => ({ name, kind }));
101
+ return { vars, asts };
102
+ }
103
+ function envValueAt(info, index, intBound) {
104
+ if (info.kind === 'bool') {
105
+ return index % 2 === 0;
106
+ }
107
+ // enumerar 0, 1, -1, 2, -2, ..., intBound, -intBound
108
+ if (index === 0)
109
+ return 0;
110
+ const half = Math.ceil(index / 2);
111
+ if (half > intBound)
112
+ return intBound + 1; // fuera de cota — caller deberá filtrar
113
+ return index % 2 === 1 ? half : -half;
114
+ }
115
+ function domainSize(info, intBound) {
116
+ if (info.kind === 'bool')
117
+ return 2;
118
+ return 2 * intBound + 1;
119
+ }
120
+ /**
121
+ * checkVC — devuelve si la conjunción de predicados es satisfacible.
122
+ * Si lo es, incluye un testigo `counter` con la asignación encontrada.
123
+ * El nombre "counter" se conserva por compatibilidad con la firma
124
+ * típica de verificadores que buscan contraejemplos de implicaciones.
125
+ */
126
+ function checkVC(predicates, opts = {}) {
127
+ const intBound = opts.intBound ?? 8;
128
+ const maxAttempts = opts.maxAttempts ?? 50_000;
129
+ // VC vacía o sólo "true": trivialmente satisfacible con env vacío.
130
+ if (predicates.length === 0) {
131
+ return { satisfiable: true, counter: {} };
132
+ }
133
+ const { vars, asts } = collectVars(predicates);
134
+ // Caso sin variables libres: evaluar directo.
135
+ if (vars.length === 0) {
136
+ try {
137
+ for (const a of asts) {
138
+ const v = (0, predicate_1.evalPredicate)(a, {});
139
+ if (v !== true)
140
+ return { satisfiable: false };
141
+ }
142
+ return { satisfiable: true, counter: {} };
143
+ }
144
+ catch {
145
+ return { satisfiable: false };
146
+ }
147
+ }
148
+ const sizes = vars.map((v) => domainSize(v, intBound));
149
+ const total = sizes.reduce((a, b) => a * b, 1);
150
+ const attempts = Math.min(total, maxAttempts);
151
+ for (let i = 0; i < attempts; i++) {
152
+ const env = {};
153
+ let idx = i;
154
+ let outOfDomain = false;
155
+ for (let j = 0; j < vars.length; j++) {
156
+ const info = vars[j];
157
+ const size = sizes[j];
158
+ const localIdx = idx % size;
159
+ idx = Math.floor(idx / size);
160
+ const val = envValueAt(info, localIdx, intBound);
161
+ if (typeof val === 'number' && Math.abs(val) > intBound) {
162
+ outOfDomain = true;
163
+ break;
164
+ }
165
+ env[info.name] = val;
166
+ }
167
+ if (outOfDomain)
168
+ continue;
169
+ let allTrue = true;
170
+ try {
171
+ for (const a of asts) {
172
+ const v = (0, predicate_1.evalPredicate)(a, env);
173
+ if (v !== true) {
174
+ allTrue = false;
175
+ break;
176
+ }
177
+ }
178
+ }
179
+ catch {
180
+ allTrue = false;
181
+ }
182
+ if (allTrue) {
183
+ const counter = {};
184
+ for (const v of vars) {
185
+ const val = env[v.name];
186
+ if (typeof val === 'number' || typeof val === 'boolean') {
187
+ counter[v.name] = val;
188
+ }
189
+ }
190
+ return { satisfiable: true, counter };
191
+ }
192
+ }
193
+ return { satisfiable: false };
194
+ }
195
+ /**
196
+ * implies — chequea si `premises ⇒ conclusion` es válido en el dominio
197
+ * acotado. Implementado como búsqueda de contraejemplo a
198
+ * `premises ∧ ¬conclusion`.
199
+ */
200
+ function implies(premises, conclusion, opts = {}) {
201
+ const negated = `!(${conclusion})`;
202
+ const res = checkVC([...premises, negated], opts);
203
+ // Si NO encontramos asignación que satisfaga premises ∧ ¬conclusion,
204
+ // entonces la implicación es válida (en el dominio acotado).
205
+ return !res.satisfiable;
206
+ }
207
+ //# sourceMappingURL=solver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"solver.js","sourceRoot":"","sources":["../../src/refinement-types/solver.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import type { RefType } from './types';
2
+ import { type SolverOpts } from './solver';
3
+ export interface SubtypeOpts extends SolverOpts {
4
+ /** Predicados adicionales del contexto que pueden asumirse válidos. */
5
+ extraAssumptions?: string[];
6
+ }
7
+ /**
8
+ * isSubtype — devuelve true si T1 <: T2 bajo las suposiciones del contexto.
9
+ *
10
+ * - Para tipos base iguales: chequea P(x) ⇒ Q(x) renombrando el binding.
11
+ * - Para arrows: contravarianza en `from`, covarianza en `to`.
12
+ */
13
+ export declare function isSubtype(t1: RefType, t2: RefType, opts?: SubtypeOpts): boolean;
14
+ //# sourceMappingURL=subtype.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subtype.d.ts","sourceRoot":"","sources":["../../src/refinement-types/subtype.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,OAAO,EAAY,MAAM,SAAS,CAAC;AACjD,OAAO,EAAW,KAAK,UAAU,EAAE,MAAM,UAAU,CAAC;AAGpD,MAAM,WAAW,WAAY,SAAQ,UAAU;IAC7C,uEAAuE;IACvE,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC7B;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,GAAE,WAAgB,GAAG,OAAO,CAEnF"}