@stevenvo780/st-lang 4.13.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 (430) 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 +164 -0
  147. package/dist/reasoning/hoare-logic/index.d.ts.map +1 -0
  148. package/dist/reasoning/hoare-logic/index.js +561 -0
  149. package/dist/reasoning/hoare-logic/index.js.map +1 -0
  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/model-checking/index.d.ts +113 -0
  171. package/dist/reasoning/model-checking/index.d.ts.map +1 -0
  172. package/dist/reasoning/model-checking/index.js +786 -0
  173. package/dist/reasoning/model-checking/index.js.map +1 -0
  174. package/dist/reasoning/order-theory/index.d.ts +121 -0
  175. package/dist/reasoning/order-theory/index.d.ts.map +1 -0
  176. package/dist/reasoning/order-theory/index.js +562 -0
  177. package/dist/reasoning/order-theory/index.js.map +1 -0
  178. package/dist/reasoning/peano-arithmetic/index.d.ts +114 -0
  179. package/dist/reasoning/peano-arithmetic/index.d.ts.map +1 -0
  180. package/dist/reasoning/peano-arithmetic/index.js +650 -0
  181. package/dist/reasoning/peano-arithmetic/index.js.map +1 -0
  182. package/dist/reasoning/polynomial-ring/index.d.ts +80 -0
  183. package/dist/reasoning/polynomial-ring/index.d.ts.map +1 -1
  184. package/dist/reasoning/polynomial-ring/index.js +75 -0
  185. package/dist/reasoning/polynomial-ring/index.js.map +1 -1
  186. package/dist/reasoning/separation-logic/index.d.ts +220 -0
  187. package/dist/reasoning/separation-logic/index.d.ts.map +1 -0
  188. package/dist/reasoning/separation-logic/index.js +779 -0
  189. package/dist/reasoning/separation-logic/index.js.map +1 -0
  190. package/dist/reasoning/set-theory/hf-functions.js +3 -3
  191. package/dist/reasoning/set-theory/hf-sets.js +1 -1
  192. package/dist/reasoning/set-theory/index.d.ts +3 -3
  193. package/dist/reasoning/set-theory/index.d.ts.map +1 -1
  194. package/dist/reasoning/set-theory/zfc-axioms.js +4 -4
  195. package/dist/reasoning/tactic-dsl/tactics.d.ts +87 -0
  196. package/dist/reasoning/tactic-dsl/tactics.d.ts.map +1 -1
  197. package/dist/reasoning/tactic-dsl/tactics.js +86 -36
  198. package/dist/reasoning/tactic-dsl/tactics.js.map +1 -1
  199. package/dist/reasoning/topology/index.d.ts +81 -0
  200. package/dist/reasoning/topology/index.d.ts.map +1 -1
  201. package/dist/reasoning/topology/index.js +69 -45
  202. package/dist/reasoning/topology/index.js.map +1 -1
  203. package/dist/reasoning/universal-algebra/index.d.ts +196 -0
  204. package/dist/reasoning/universal-algebra/index.d.ts.map +1 -0
  205. package/dist/reasoning/universal-algebra/index.js +865 -0
  206. package/dist/reasoning/universal-algebra/index.js.map +1 -0
  207. package/dist/runtime/countermodel-min/minimize.js +0 -0
  208. package/dist/runtime/countermodel-min/minimize.js.map +1 -1
  209. package/dist/runtime/csp-hoare/semantics.d.ts +12 -0
  210. package/dist/runtime/csp-hoare/semantics.d.ts.map +1 -1
  211. package/dist/runtime/csp-hoare/semantics.js +12 -0
  212. package/dist/runtime/csp-hoare/semantics.js.map +1 -1
  213. package/dist/runtime/symbolic-diff/constructors.d.ts +20 -0
  214. package/dist/runtime/symbolic-diff/constructors.d.ts.map +1 -1
  215. package/dist/runtime/symbolic-diff/constructors.js +20 -0
  216. package/dist/runtime/symbolic-diff/constructors.js.map +1 -1
  217. package/dist/runtime/term-rewriting/term-utils.d.ts.map +1 -1
  218. package/dist/runtime/term-rewriting/term-utils.js +33 -2
  219. package/dist/runtime/term-rewriting/term-utils.js.map +1 -1
  220. package/dist/runtime/typecheck/checker.js +2 -2
  221. package/dist/runtime/typecheck/checker.js.map +1 -1
  222. package/dist/runtime/typecheck/levenshtein.js +1 -1
  223. package/dist/runtime/typecheck/levenshtein.js.map +1 -1
  224. package/dist/semantics/categorical/fin-set.d.ts.map +1 -1
  225. package/dist/semantics/categorical/fin-set.js +8 -1
  226. package/dist/semantics/categorical/fin-set.js.map +1 -1
  227. package/dist/semantics/categorical/free.d.ts.map +1 -1
  228. package/dist/semantics/categorical/free.js +8 -2
  229. package/dist/semantics/categorical/free.js.map +1 -1
  230. package/dist/semantics/categorical/limits.d.ts.map +1 -1
  231. package/dist/semantics/categorical/limits.js +13 -4
  232. package/dist/semantics/categorical/limits.js.map +1 -1
  233. package/dist/semantics/categorical/monoidal.d.ts.map +1 -1
  234. package/dist/semantics/categorical/monoidal.js +3 -1
  235. package/dist/semantics/categorical/monoidal.js.map +1 -1
  236. package/dist/semantics/text-layer/compiler.d.ts +46 -0
  237. package/dist/semantics/text-layer/compiler.d.ts.map +1 -1
  238. package/dist/semantics/text-layer/compiler.js +46 -11
  239. package/dist/semantics/text-layer/compiler.js.map +1 -1
  240. package/dist/solver/cdcl-v2/index.d.ts +8 -0
  241. package/dist/solver/cdcl-v2/index.d.ts.map +1 -1
  242. package/dist/solver/cdcl-v2/index.js +8 -0
  243. package/dist/solver/cdcl-v2/index.js.map +1 -1
  244. package/dist/solver/smt-z3/z3-wasm-backend.d.ts +0 -1
  245. package/dist/solver/smt-z3/z3-wasm-backend.d.ts.map +1 -1
  246. package/dist/solver/smt-z3/z3-wasm-backend.js +2 -3
  247. package/dist/solver/smt-z3/z3-wasm-backend.js.map +1 -1
  248. package/dist/tests/agora-integration-fixtures.test.js +7 -2
  249. package/dist/tests/agora-integration-fixtures.test.js.map +1 -1
  250. package/dist/tests/coverage-90/coverage-90-cdcl-v2-deep.test.d.ts +2 -0
  251. package/dist/tests/coverage-90/coverage-90-cdcl-v2-deep.test.d.ts.map +1 -0
  252. package/dist/tests/coverage-90/coverage-90-cdcl-v2-deep.test.js +123 -0
  253. package/dist/tests/coverage-90/coverage-90-cdcl-v2-deep.test.js.map +1 -0
  254. package/dist/tests/coverage-90/coverage-90-certificate-rules.test.d.ts +2 -0
  255. package/dist/tests/coverage-90/coverage-90-certificate-rules.test.d.ts.map +1 -0
  256. package/dist/tests/coverage-90/coverage-90-certificate-rules.test.js +172 -0
  257. package/dist/tests/coverage-90/coverage-90-certificate-rules.test.js.map +1 -0
  258. package/dist/tests/coverage-90/coverage-90-interpreter-extra.test.d.ts +2 -0
  259. package/dist/tests/coverage-90/coverage-90-interpreter-extra.test.d.ts.map +1 -0
  260. package/dist/tests/coverage-90/coverage-90-interpreter-extra.test.js +326 -0
  261. package/dist/tests/coverage-90/coverage-90-interpreter-extra.test.js.map +1 -0
  262. package/dist/tests/coverage-90/coverage-90-interpreter-features.test.d.ts +2 -0
  263. package/dist/tests/coverage-90/coverage-90-interpreter-features.test.d.ts.map +1 -0
  264. package/dist/tests/coverage-90/coverage-90-interpreter-features.test.js +418 -0
  265. package/dist/tests/coverage-90/coverage-90-interpreter-features.test.js.map +1 -0
  266. package/dist/tests/coverage-90/coverage-90-modal-temporal.test.d.ts +2 -0
  267. package/dist/tests/coverage-90/coverage-90-modal-temporal.test.d.ts.map +1 -0
  268. package/dist/tests/coverage-90/coverage-90-modal-temporal.test.js +162 -0
  269. package/dist/tests/coverage-90/coverage-90-modal-temporal.test.js.map +1 -0
  270. package/dist/tests/coverage-90/coverage-90-nk-prover.test.d.ts +2 -0
  271. package/dist/tests/coverage-90/coverage-90-nk-prover.test.d.ts.map +1 -0
  272. package/dist/tests/coverage-90/coverage-90-nk-prover.test.js +104 -0
  273. package/dist/tests/coverage-90/coverage-90-nk-prover.test.js.map +1 -0
  274. package/dist/tests/coverage-90/coverage-90-parser-deep.test.d.ts +2 -0
  275. package/dist/tests/coverage-90/coverage-90-parser-deep.test.d.ts.map +1 -0
  276. package/dist/tests/coverage-90/coverage-90-parser-deep.test.js +262 -0
  277. package/dist/tests/coverage-90/coverage-90-parser-deep.test.js.map +1 -0
  278. package/dist/tests/coverage-90/coverage-90-sat-engines.test.d.ts +2 -0
  279. package/dist/tests/coverage-90/coverage-90-sat-engines.test.d.ts.map +1 -0
  280. package/dist/tests/coverage-90/coverage-90-sat-engines.test.js +101 -0
  281. package/dist/tests/coverage-90/coverage-90-sat-engines.test.js.map +1 -0
  282. package/dist/tests/coverage-90/coverage-90-sequent-lk.test.d.ts +2 -0
  283. package/dist/tests/coverage-90/coverage-90-sequent-lk.test.d.ts.map +1 -0
  284. package/dist/tests/coverage-90/coverage-90-sequent-lk.test.js +219 -0
  285. package/dist/tests/coverage-90/coverage-90-sequent-lk.test.js.map +1 -0
  286. package/dist/tests/coverage-90/coverage-90-smt-lib-parser.test.d.ts +2 -0
  287. package/dist/tests/coverage-90/coverage-90-smt-lib-parser.test.d.ts.map +1 -0
  288. package/dist/tests/coverage-90/coverage-90-smt-lib-parser.test.js +154 -0
  289. package/dist/tests/coverage-90/coverage-90-smt-lib-parser.test.js.map +1 -0
  290. package/dist/tests/coverage-95/first-order.test.js.map +1 -1
  291. package/dist/tests/coverage-95/fol-prover.test.js.map +1 -1
  292. package/dist/tests/integration/cross-modules.test.js +43 -19
  293. package/dist/tests/integration/cross-modules.test.js.map +1 -1
  294. package/dist/tests/logic/ctl/check.test.js.map +1 -1
  295. package/dist/tests/logic/profile-bridge/translations.test.js +3 -3
  296. package/dist/tests/logic/profile-bridge/translations.test.js.map +1 -1
  297. package/dist/tests/logic/profiles/sequent-lj/lj.test.d.ts +2 -0
  298. package/dist/tests/logic/profiles/sequent-lj/lj.test.d.ts.map +1 -0
  299. package/dist/tests/logic/profiles/sequent-lj/lj.test.js +400 -0
  300. package/dist/tests/logic/profiles/sequent-lj/lj.test.js.map +1 -0
  301. package/dist/tests/logic/sequent-g3/prover.test.js.map +1 -1
  302. package/dist/tests/logic/substructural/prover.test.js.map +1 -1
  303. package/dist/tests/proof-systems/fol-prover-advanced/prover.test.js +40 -13
  304. package/dist/tests/proof-systems/fol-prover-advanced/prover.test.js.map +1 -1
  305. package/dist/tests/proof-systems/higher-order-unify/ho-unify.test.js.map +1 -1
  306. package/dist/tests/proof-systems/tableau-framework/tableau.test.js +8 -8
  307. package/dist/tests/proof-systems/tableau-framework/tableau.test.js.map +1 -1
  308. package/dist/tests/properties/agm.property.test.js +1 -1
  309. package/dist/tests/properties/agm.property.test.js.map +1 -1
  310. package/dist/tests/properties/anti-unification.property.test.js.map +1 -1
  311. package/dist/tests/properties/argumentation.property.test.js.map +1 -1
  312. package/dist/tests/properties/bisimulation.property.test.js.map +1 -1
  313. package/dist/tests/properties/cdcl.property.test.js.map +1 -1
  314. package/dist/tests/properties/coinduction.property.test.js.map +1 -1
  315. package/dist/tests/properties/constructive-reals.property.test.js.map +1 -1
  316. package/dist/tests/properties/csp.property.test.js +1 -3
  317. package/dist/tests/properties/csp.property.test.js.map +1 -1
  318. package/dist/tests/properties/generators.d.ts +1 -1
  319. package/dist/tests/properties/generators.d.ts.map +1 -1
  320. package/dist/tests/properties/generators.js +22 -30
  321. package/dist/tests/properties/generators.js.map +1 -1
  322. package/dist/tests/properties/intuit-nj.property.test.js +3 -1
  323. package/dist/tests/properties/intuit-nj.property.test.js.map +1 -1
  324. package/dist/tests/properties/lambda-calc.property.test.js.map +1 -1
  325. package/dist/tests/properties/mln.property.test.js +1 -3
  326. package/dist/tests/properties/mln.property.test.js.map +1 -1
  327. package/dist/tests/properties/planning.property.test.js.map +1 -1
  328. package/dist/tests/properties/profile-bridge.property.test.js.map +1 -1
  329. package/dist/tests/properties/theorem-cache.property.test.js.map +1 -1
  330. package/dist/tests/protocol-text-layer.test.js.map +1 -1
  331. package/dist/tests/reasoning/combinatorics/combinatorics.test.js +1 -1
  332. package/dist/tests/reasoning/constructive-analysis/constructive-analysis.test.js +9 -9
  333. package/dist/tests/reasoning/constructive-analysis/constructive-analysis.test.js.map +1 -1
  334. package/dist/tests/reasoning/hoare-logic/hoare-logic.test.d.ts +2 -0
  335. package/dist/tests/reasoning/hoare-logic/hoare-logic.test.d.ts.map +1 -0
  336. package/dist/tests/reasoning/hoare-logic/hoare-logic.test.js +340 -0
  337. package/dist/tests/reasoning/hoare-logic/hoare-logic.test.js.map +1 -0
  338. package/dist/tests/reasoning/linear-algebra/linear-algebra.test.js +80 -38
  339. package/dist/tests/reasoning/linear-algebra/linear-algebra.test.js.map +1 -1
  340. package/dist/tests/reasoning/model-checking/model-checking.test.d.ts +2 -0
  341. package/dist/tests/reasoning/model-checking/model-checking.test.d.ts.map +1 -0
  342. package/dist/tests/reasoning/model-checking/model-checking.test.js +222 -0
  343. package/dist/tests/reasoning/model-checking/model-checking.test.js.map +1 -0
  344. package/dist/tests/reasoning/order-theory/order-theory.test.d.ts +2 -0
  345. package/dist/tests/reasoning/order-theory/order-theory.test.d.ts.map +1 -0
  346. package/dist/tests/reasoning/order-theory/order-theory.test.js +211 -0
  347. package/dist/tests/reasoning/order-theory/order-theory.test.js.map +1 -0
  348. package/dist/tests/reasoning/peano-arithmetic/peano.test.d.ts +2 -0
  349. package/dist/tests/reasoning/peano-arithmetic/peano.test.d.ts.map +1 -0
  350. package/dist/tests/reasoning/peano-arithmetic/peano.test.js +159 -0
  351. package/dist/tests/reasoning/peano-arithmetic/peano.test.js.map +1 -0
  352. package/dist/tests/reasoning/separation-logic/separation-logic.test.d.ts +2 -0
  353. package/dist/tests/reasoning/separation-logic/separation-logic.test.d.ts.map +1 -0
  354. package/dist/tests/reasoning/separation-logic/separation-logic.test.js +311 -0
  355. package/dist/tests/reasoning/separation-logic/separation-logic.test.js.map +1 -0
  356. package/dist/tests/reasoning/set-theory/hf-functions.test.js +11 -11
  357. package/dist/tests/reasoning/set-theory/zfc-axioms.test.js +1 -1
  358. package/dist/tests/reasoning/universal-algebra/universal-algebra.test.d.ts +2 -0
  359. package/dist/tests/reasoning/universal-algebra/universal-algebra.test.d.ts.map +1 -0
  360. package/dist/tests/reasoning/universal-algebra/universal-algebra.test.js +289 -0
  361. package/dist/tests/reasoning/universal-algebra/universal-algebra.test.js.map +1 -0
  362. package/dist/tests/semantics/text-layer-v2/claim-graph.test.js.map +1 -1
  363. package/dist/tests/solver/smt-lib/emitter.test.js.map +1 -1
  364. package/dist/tests/solver/smt-z3/z3-wasm-backend.test.js.map +1 -1
  365. package/dist/tests/tooling/test-harness/test-harness.test.js +9 -6
  366. package/dist/tests/tooling/test-harness/test-harness.test.js.map +1 -1
  367. package/dist/tooling/lsp/types.d.ts +13 -0
  368. package/dist/tooling/lsp/types.d.ts.map +1 -1
  369. package/dist/tooling/lsp/types.js +1 -0
  370. package/dist/tooling/lsp/types.js.map +1 -1
  371. package/dist/tooling/test-harness/combinators.d.ts.map +1 -1
  372. package/dist/tooling/test-harness/combinators.js +4 -4
  373. package/dist/tooling/test-harness/combinators.js.map +1 -1
  374. package/dist/tooling/test-harness/coverage.js +1 -1
  375. package/dist/tooling/test-harness/generators.d.ts.map +1 -1
  376. package/dist/tooling/test-harness/generators.js.map +1 -1
  377. package/dist/tooling/test-harness/index.d.ts +1 -1
  378. package/dist/tooling/test-harness/index.d.ts.map +1 -1
  379. package/dist/tooling/test-harness/index.js.map +1 -1
  380. package/dist/tooling/test-harness/snapshot.d.ts.map +1 -1
  381. package/dist/tooling/test-harness/snapshot.js +2 -2
  382. package/dist/tooling/test-harness/snapshot.js.map +1 -1
  383. package/dist/type-theory/cubical/types.d.ts +25 -0
  384. package/dist/type-theory/cubical/types.d.ts.map +1 -1
  385. package/dist/type-theory/cubical/types.js +20 -0
  386. package/dist/type-theory/cubical/types.js.map +1 -1
  387. package/dist/type-theory/curry-howard/types.d.ts +27 -0
  388. package/dist/type-theory/curry-howard/types.d.ts.map +1 -1
  389. package/dist/type-theory/curry-howard/types.js +18 -0
  390. package/dist/type-theory/curry-howard/types.js.map +1 -1
  391. package/dist/type-theory/hindley-milner/substitution.d.ts +39 -0
  392. package/dist/type-theory/hindley-milner/substitution.d.ts.map +1 -1
  393. package/dist/type-theory/hindley-milner/substitution.js +37 -0
  394. package/dist/type-theory/hindley-milner/substitution.js.map +1 -1
  395. package/dist/type-theory/hindley-milner/types.d.ts +25 -0
  396. package/dist/type-theory/hindley-milner/types.d.ts.map +1 -1
  397. package/dist/type-theory/hindley-milner/types.js +22 -2
  398. package/dist/type-theory/hindley-milner/types.js.map +1 -1
  399. package/dist/type-theory/hol/rules.d.ts +36 -0
  400. package/dist/type-theory/hol/rules.d.ts.map +1 -1
  401. package/dist/type-theory/hol/rules.js +36 -0
  402. package/dist/type-theory/hol/rules.js.map +1 -1
  403. package/dist/type-theory/hott/types.d.ts +32 -0
  404. package/dist/type-theory/hott/types.d.ts.map +1 -1
  405. package/dist/type-theory/hott/types.js +31 -1
  406. package/dist/type-theory/hott/types.js.map +1 -1
  407. package/dist/type-theory/lambda-cube/types.d.ts +17 -0
  408. package/dist/type-theory/lambda-cube/types.d.ts.map +1 -1
  409. package/dist/type-theory/lambda-cube/types.js +13 -0
  410. package/dist/type-theory/lambda-cube/types.js.map +1 -1
  411. package/dist/type-theory/mltt/types.d.ts +19 -0
  412. package/dist/type-theory/mltt/types.d.ts.map +1 -1
  413. package/dist/type-theory/mltt/types.js +15 -1
  414. package/dist/type-theory/mltt/types.js.map +1 -1
  415. package/dist/type-theory/nbe/types.d.ts +21 -0
  416. package/dist/type-theory/nbe/types.d.ts.map +1 -1
  417. package/dist/type-theory/nbe/types.js +13 -1
  418. package/dist/type-theory/nbe/types.js.map +1 -1
  419. package/dist/type-theory/refinement-types/types.d.ts +38 -0
  420. package/dist/type-theory/refinement-types/types.d.ts.map +1 -1
  421. package/dist/type-theory/refinement-types/types.js +35 -0
  422. package/dist/type-theory/refinement-types/types.js.map +1 -1
  423. package/dist/type-theory/system-f/types.d.ts +30 -0
  424. package/dist/type-theory/system-f/types.d.ts.map +1 -1
  425. package/dist/type-theory/system-f/types.js +24 -3
  426. package/dist/type-theory/system-f/types.js.map +1 -1
  427. package/dist/types/index.d.ts +42 -0
  428. package/dist/types/index.d.ts.map +1 -1
  429. package/dist/types/index.js.map +1 -1
  430. package/package.json +1 -1
@@ -0,0 +1,561 @@
1
+ "use strict";
2
+ // ============================================================
3
+ // ST Hoare Logic — Verificación de programas imperativos
4
+ // ============================================================
5
+ //
6
+ // Lógica de Hoare para un lenguaje IMP minimal (asignación, skip,
7
+ // secuencia, condicional, bucle). El motor calcula precondiciones
8
+ // más débiles (weakest precondition, wp) y postcondiciones más
9
+ // fuertes (strongest postcondition, sp), genera condiciones de
10
+ // verificación (VCs) y las refuta por búsqueda aleatoria sobre el
11
+ // universo entero acotado.
12
+ //
13
+ // Tripleta de Hoare:
14
+ // {P} c {Q} ≡ ejecutar c desde un estado que cumple P deja un
15
+ // estado que cumple Q (corrección parcial).
16
+ //
17
+ // Reglas (Hoare):
18
+ // skip : {P} skip {P}
19
+ // assign : {P[E/x]} x := E {P}
20
+ // seq : {P} c1 {R}, {R} c2 {Q} ⊢ {P} c1; c2 {Q}
21
+ // if : {P ∧ B} c1 {Q}, {P ∧ ¬B} c2 {Q} ⊢ {P} if B then c1 else c2 {Q}
22
+ // while : {I ∧ B} c {I} ⊢ {I} while B do c {I ∧ ¬B}
23
+ // weakening : P → P', {P'} c {Q'}, Q' → Q ⊢ {P} c {Q}
24
+ //
25
+ // Para `while` exigimos invariant explícito (campo `invariant`) o
26
+ // el VC pasa a ser trivial-falso (no podemos probar terminación
27
+ // parcial sin invariant). Las VCs se evalúan por muestreo aleatorio
28
+ // + estados sintéticos extraídos del programa: si alguna falla,
29
+ // devolvemos un contramodelo.
30
+ Object.defineProperty(exports, "__esModule", { value: true });
31
+ exports.whileS = exports.ifS = exports.assign = exports.skip = exports.le = exports.lt = exports.eq = exports.or = exports.and = exports.not = exports.binop = exports.v = exports.bool = exports.num = void 0;
32
+ exports.seq = seq;
33
+ exports.substitute = substitute;
34
+ exports.freeVars = freeVars;
35
+ exports.stmtVars = stmtVars;
36
+ exports.evalExpr = evalExpr;
37
+ exports.execStmt = execStmt;
38
+ exports.wp = wp;
39
+ exports.spExtension = spExtension;
40
+ exports.generateVCs = generateVCs;
41
+ exports.verifyTriple = verifyTriple;
42
+ exports.programSwap = programSwap;
43
+ exports.programFactorial = programFactorial;
44
+ exports.programGCD = programGCD;
45
+ exports.programLinearSearch = programLinearSearch;
46
+ exports.factorial = factorial;
47
+ exports.gcd = gcd;
48
+ // ── Constructores de conveniencia ────────────────────────────
49
+ /** Constructor de literal numérico IMP. */
50
+ const num = (n) => ({ kind: 'const', value: n });
51
+ exports.num = num;
52
+ /** Constructor de literal booleano IMP. */
53
+ const bool = (b) => ({ kind: 'bool', value: b });
54
+ exports.bool = bool;
55
+ /** Constructor de referencia a variable IMP por nombre. */
56
+ const v = (name) => ({ kind: 'var', name });
57
+ exports.v = v;
58
+ /** Constructor de operación binaria IMP. */
59
+ const binop = (op, left, right) => ({
60
+ kind: 'binop',
61
+ op,
62
+ left,
63
+ right,
64
+ });
65
+ exports.binop = binop;
66
+ /** Constructor de negación de expresión IMP. */
67
+ const not = (arg) => ({ kind: 'not', arg });
68
+ exports.not = not;
69
+ /** Constructor de conjunción lógica IMP: `left && right`. */
70
+ const and = (left, right) => (0, exports.binop)('&&', left, right);
71
+ exports.and = and;
72
+ /** Constructor de disyunción lógica IMP: `left || right`. */
73
+ const or = (left, right) => (0, exports.binop)('||', left, right);
74
+ exports.or = or;
75
+ /** Constructor de igualdad IMP: `left == right`. */
76
+ const eq = (left, right) => (0, exports.binop)('==', left, right);
77
+ exports.eq = eq;
78
+ /** Constructor de menor estricto IMP: `left < right`. */
79
+ const lt = (left, right) => (0, exports.binop)('<', left, right);
80
+ exports.lt = lt;
81
+ /** Constructor de menor o igual IMP: `left <= right`. */
82
+ const le = (left, right) => (0, exports.binop)('<=', left, right);
83
+ exports.le = le;
84
+ /** Instrucción `skip` (no-op). */
85
+ const skip = () => ({ kind: 'skip' });
86
+ exports.skip = skip;
87
+ /** Instrucción de asignación: `varName := expr`. */
88
+ const assign = (varName, expr) => ({
89
+ kind: 'assign',
90
+ var: varName,
91
+ expr,
92
+ });
93
+ exports.assign = assign;
94
+ /** Secuencia de instrucciones (asociativa a la derecha). Con 0 args devuelve `skip`. */
95
+ function seq(...stmts) {
96
+ if (stmts.length === 0)
97
+ return (0, exports.skip)();
98
+ if (stmts.length === 1)
99
+ return stmts[0];
100
+ // Foldr para mantener asociatividad derecha estable.
101
+ let acc = stmts[stmts.length - 1];
102
+ for (let i = stmts.length - 2; i >= 0; i--) {
103
+ acc = { kind: 'seq', first: stmts[i], second: acc };
104
+ }
105
+ return acc;
106
+ }
107
+ /** Instrucción condicional `if cond then then_ else else_`. */
108
+ const ifS = (cond, then_, else_) => ({
109
+ kind: 'if',
110
+ cond,
111
+ then: then_,
112
+ else: else_,
113
+ });
114
+ exports.ifS = ifS;
115
+ /** Instrucción `while cond body` con invariante opcional para verificación. */
116
+ const whileS = (cond, body, invariant) => ({
117
+ kind: 'while',
118
+ cond,
119
+ invariant,
120
+ body,
121
+ });
122
+ exports.whileS = whileS;
123
+ // ── Sustitución sintáctica P[E/x] ────────────────────────────
124
+ /** Sustitución sintáctica `expr[replacement/varName]` en expresiones IMP. */
125
+ function substitute(expr, varName, replacement) {
126
+ switch (expr.kind) {
127
+ case 'const':
128
+ case 'bool':
129
+ return expr;
130
+ case 'var':
131
+ return expr.name === varName ? replacement : expr;
132
+ case 'binop':
133
+ return {
134
+ kind: 'binop',
135
+ op: expr.op,
136
+ left: substitute(expr.left, varName, replacement),
137
+ right: substitute(expr.right, varName, replacement),
138
+ };
139
+ case 'not':
140
+ return { kind: 'not', arg: substitute(expr.arg, varName, replacement) };
141
+ }
142
+ }
143
+ // ── Recolección de variables libres ──────────────────────────
144
+ /** Variables libres en la expresión IMP `expr`. Acumula en `acc` (o devuelve un nuevo Set). */
145
+ function freeVars(expr, acc = new Set()) {
146
+ switch (expr.kind) {
147
+ case 'const':
148
+ case 'bool':
149
+ return acc;
150
+ case 'var':
151
+ acc.add(expr.name);
152
+ return acc;
153
+ case 'binop':
154
+ freeVars(expr.left, acc);
155
+ freeVars(expr.right, acc);
156
+ return acc;
157
+ case 'not':
158
+ freeVars(expr.arg, acc);
159
+ return acc;
160
+ }
161
+ }
162
+ /** Variables mencionadas en la instrucción IMP `stmt` (asignadas y/o leídas). */
163
+ function stmtVars(stmt, acc = new Set()) {
164
+ switch (stmt.kind) {
165
+ case 'skip':
166
+ return acc;
167
+ case 'assign':
168
+ acc.add(stmt.var);
169
+ freeVars(stmt.expr, acc);
170
+ return acc;
171
+ case 'seq':
172
+ stmtVars(stmt.first, acc);
173
+ stmtVars(stmt.second, acc);
174
+ return acc;
175
+ case 'if':
176
+ freeVars(stmt.cond, acc);
177
+ stmtVars(stmt.then, acc);
178
+ stmtVars(stmt.else, acc);
179
+ return acc;
180
+ case 'while':
181
+ freeVars(stmt.cond, acc);
182
+ if (stmt.invariant)
183
+ freeVars(stmt.invariant, acc);
184
+ stmtVars(stmt.body, acc);
185
+ return acc;
186
+ }
187
+ }
188
+ /** Evalúa la expresión IMP `expr` en el estado `state`. Devuelve un número o booleano. */
189
+ function evalExpr(expr, state) {
190
+ switch (expr.kind) {
191
+ case 'const':
192
+ return expr.value;
193
+ case 'bool':
194
+ return expr.value;
195
+ case 'var': {
196
+ const value = state[expr.name];
197
+ // Variables no definidas valen 0 (estado total). Esto simplifica
198
+ // el muestreo aleatorio y los VCs sobre programas pequeños.
199
+ return value === undefined ? 0 : value;
200
+ }
201
+ case 'not': {
202
+ const a = evalExpr(expr.arg, state);
203
+ return !toBool(a);
204
+ }
205
+ case 'binop': {
206
+ const l = evalExpr(expr.left, state);
207
+ const r = evalExpr(expr.right, state);
208
+ switch (expr.op) {
209
+ case '+':
210
+ return toNum(l) + toNum(r);
211
+ case '-':
212
+ return toNum(l) - toNum(r);
213
+ case '*':
214
+ return toNum(l) * toNum(r);
215
+ case '/': {
216
+ const rn = toNum(r);
217
+ if (rn === 0)
218
+ return 0; // división por cero → 0 (estado total)
219
+ return Math.trunc(toNum(l) / rn);
220
+ }
221
+ case '%': {
222
+ const rn = toNum(r);
223
+ if (rn === 0)
224
+ return 0;
225
+ return toNum(l) % rn;
226
+ }
227
+ case '<':
228
+ return toNum(l) < toNum(r);
229
+ case '<=':
230
+ return toNum(l) <= toNum(r);
231
+ case '>':
232
+ return toNum(l) > toNum(r);
233
+ case '>=':
234
+ return toNum(l) >= toNum(r);
235
+ case '==':
236
+ return toNum(l) === toNum(r);
237
+ case '!=':
238
+ return toNum(l) !== toNum(r);
239
+ case '&&':
240
+ return toBool(l) && toBool(r);
241
+ case '||':
242
+ return toBool(l) || toBool(r);
243
+ }
244
+ }
245
+ }
246
+ }
247
+ function toNum(v) {
248
+ return typeof v === 'boolean' ? (v ? 1 : 0) : v;
249
+ }
250
+ function toBool(v) {
251
+ return typeof v === 'boolean' ? v : v !== 0;
252
+ }
253
+ /** Ejecuta `stmt` sobre `state` con un límite de `maxSteps` pasos. Devuelve el estado final o un error. */
254
+ function execStmt(stmt, state, maxSteps = 10_000) {
255
+ const counter = { steps: 0, limit: maxSteps };
256
+ try {
257
+ return execInternal(stmt, { ...state }, counter);
258
+ }
259
+ catch (err) {
260
+ return { error: err instanceof Error ? err.message : String(err) };
261
+ }
262
+ }
263
+ function execInternal(stmt, state, counter) {
264
+ if (counter.steps++ > counter.limit) {
265
+ throw new Error(`execStmt: límite de pasos excedido (${counter.limit})`);
266
+ }
267
+ switch (stmt.kind) {
268
+ case 'skip':
269
+ return state;
270
+ case 'assign': {
271
+ const value = evalExpr(stmt.expr, state);
272
+ state[stmt.var] = toNum(value);
273
+ return state;
274
+ }
275
+ case 'seq': {
276
+ execInternal(stmt.first, state, counter);
277
+ execInternal(stmt.second, state, counter);
278
+ return state;
279
+ }
280
+ case 'if': {
281
+ const cond = evalExpr(stmt.cond, state);
282
+ if (toBool(cond)) {
283
+ execInternal(stmt.then, state, counter);
284
+ }
285
+ else {
286
+ execInternal(stmt.else, state, counter);
287
+ }
288
+ return state;
289
+ }
290
+ case 'while': {
291
+ while (toBool(evalExpr(stmt.cond, state))) {
292
+ if (counter.steps++ > counter.limit) {
293
+ throw new Error(`execStmt: límite de pasos excedido en while (${counter.limit})`);
294
+ }
295
+ execInternal(stmt.body, state, counter);
296
+ }
297
+ return state;
298
+ }
299
+ }
300
+ }
301
+ // ── Weakest precondition (wp) ────────────────────────────────
302
+ /** Precondición más débil `wp(stmt, post)`. Para while requiere invariant anotado; sin él devuelve `false`. */
303
+ function wp(stmt, post) {
304
+ switch (stmt.kind) {
305
+ case 'skip':
306
+ return post;
307
+ case 'assign':
308
+ return substitute(post, stmt.var, stmt.expr);
309
+ case 'seq': {
310
+ const after = wp(stmt.second, post);
311
+ return wp(stmt.first, after);
312
+ }
313
+ case 'if': {
314
+ const wpThen = wp(stmt.then, post);
315
+ const wpElse = wp(stmt.else, post);
316
+ // (cond → wpThen) ∧ (¬cond → wpElse)
317
+ return (0, exports.and)((0, exports.or)((0, exports.not)(stmt.cond), wpThen), (0, exports.or)(stmt.cond, wpElse));
318
+ }
319
+ case 'while': {
320
+ // Sin invariant no podemos calcular wp exacto en general.
321
+ // Devolvemos `false` para forzar fallo de VC explícito.
322
+ if (!stmt.invariant)
323
+ return (0, exports.bool)(false);
324
+ // Con invariant I la wp es simplemente I; las verificaciones
325
+ // adicionales (mantenimiento, salida) se generan como VCs.
326
+ return stmt.invariant;
327
+ }
328
+ }
329
+ }
330
+ // ── Strongest postcondition (sp), versión sintáctica ─────────
331
+ //
332
+ // Implementación pragmática: para statements sin loops devolvemos
333
+ // una fórmula que describe el estado tras ejecutar `stmt`. Para
334
+ // loops sin invariant cae a `true` (no informativo).
335
+ /** Postcondición más fuerte aproximada `sp(stmt, pre)`. Para x := E cuando E no menciona x; sino devuelve `true`. */
336
+ function spExtension(stmt, pre) {
337
+ switch (stmt.kind) {
338
+ case 'skip':
339
+ return pre;
340
+ case 'assign': {
341
+ // Introducimos una variable fresca para el valor previo de stmt.var:
342
+ // sp(P, x := E) = ∃x'. P[x'/x] ∧ x = E[x'/x]
343
+ // Como no soportamos cuantificadores, aproximamos por la
344
+ // post-substitución del valor nuevo cuando E no menciona x.
345
+ // Si E menciona x, devolvemos `true` (no informativo).
346
+ const eVars = freeVars(stmt.expr);
347
+ if (!eVars.has(stmt.var)) {
348
+ return (0, exports.and)(pre, (0, exports.eq)((0, exports.v)(stmt.var), stmt.expr));
349
+ }
350
+ return (0, exports.bool)(true);
351
+ }
352
+ case 'seq':
353
+ return spExtension(stmt.second, spExtension(stmt.first, pre));
354
+ case 'if': {
355
+ const spThen = spExtension(stmt.then, (0, exports.and)(pre, stmt.cond));
356
+ const spElse = spExtension(stmt.else, (0, exports.and)(pre, (0, exports.not)(stmt.cond)));
357
+ return (0, exports.or)(spThen, spElse);
358
+ }
359
+ case 'while':
360
+ // Saliendo de un while, vale (I ∧ ¬cond) si hay invariant.
361
+ if (stmt.invariant)
362
+ return (0, exports.and)(stmt.invariant, (0, exports.not)(stmt.cond));
363
+ return (0, exports.bool)(true);
364
+ }
365
+ }
366
+ // ── Generación de condiciones de verificación (VCs) ──────────
367
+ /** Genera las condiciones de verificación (VCs) para la tripla de Hoare: pre, wp global y VCs de loops. */
368
+ function generateVCs(triple) {
369
+ const vcs = [];
370
+ // VC global: pre → wp(stmt, post)
371
+ vcs.push(implies(triple.pre, wp(triple.stmt, triple.post)));
372
+ collectLoopVCs(triple.stmt, triple.post, vcs);
373
+ return vcs;
374
+ }
375
+ function implies(p, q) {
376
+ return (0, exports.or)((0, exports.not)(p), q);
377
+ }
378
+ function collectLoopVCs(stmt, post, out) {
379
+ switch (stmt.kind) {
380
+ case 'skip':
381
+ case 'assign':
382
+ return;
383
+ case 'seq':
384
+ collectLoopVCs(stmt.first, wp(stmt.second, post), out);
385
+ collectLoopVCs(stmt.second, post, out);
386
+ return;
387
+ case 'if':
388
+ collectLoopVCs(stmt.then, post, out);
389
+ collectLoopVCs(stmt.else, post, out);
390
+ return;
391
+ case 'while': {
392
+ if (!stmt.invariant) {
393
+ // VC trivialmente falso: no hay invariant.
394
+ out.push((0, exports.bool)(false));
395
+ return;
396
+ }
397
+ const I = stmt.invariant;
398
+ // Mantenimiento: (I ∧ cond) → wp(body, I)
399
+ out.push(implies((0, exports.and)(I, stmt.cond), wp(stmt.body, I)));
400
+ // Salida: (I ∧ ¬cond) → post (sólo si este while es el último
401
+ // step antes de la post). Para keep it simple, lo generamos
402
+ // siempre — es una condición necesaria local en el contexto del
403
+ // VC global, no redundante.
404
+ out.push(implies((0, exports.and)(I, (0, exports.not)(stmt.cond)), post));
405
+ // Recurse sobre el body por loops anidados.
406
+ collectLoopVCs(stmt.body, I, out);
407
+ return;
408
+ }
409
+ }
410
+ }
411
+ /** Verifica la tripla `{pre} stmt {post}` por muestreo aleatorio de estados. */
412
+ function verifyTriple(triple, opts = {}) {
413
+ const samples = opts.samples ?? 200;
414
+ const range = opts.range ?? [-5, 10];
415
+ const vcs = generateVCs(triple);
416
+ const vars = new Set();
417
+ freeVars(triple.pre, vars);
418
+ freeVars(triple.post, vars);
419
+ stmtVars(triple.stmt, vars);
420
+ const varNames = [...vars];
421
+ const rand = makeRandom(opts.seed);
422
+ const failures = [];
423
+ // Determinismo: incluimos estados "corner": todos 0, todos 1, todos -1.
424
+ const cornerStates = [];
425
+ for (const c of [0, 1, -1, range[0], range[1]]) {
426
+ const st = {};
427
+ for (const name of varNames)
428
+ st[name] = c;
429
+ cornerStates.push(st);
430
+ }
431
+ const allSeed = [...cornerStates, ...(opts.seedStates ?? [])];
432
+ for (const vc of vcs) {
433
+ let counterexample;
434
+ // VCs literalmente `false` se reportan como fallo sintáctico sin
435
+ // necesidad de muestrear.
436
+ if (vc.kind === 'bool' && vc.value === false) {
437
+ failures.push({ vc });
438
+ continue;
439
+ }
440
+ // 1) corner + seed states
441
+ for (const st of allSeed) {
442
+ if (!evalVC(vc, st)) {
443
+ counterexample = st;
444
+ break;
445
+ }
446
+ }
447
+ // 2) random sampling
448
+ if (counterexample === undefined) {
449
+ for (let i = 0; i < samples; i++) {
450
+ const st = {};
451
+ for (const name of varNames) {
452
+ st[name] = randIntInRange(rand, range[0], range[1]);
453
+ }
454
+ if (!evalVC(vc, st)) {
455
+ counterexample = st;
456
+ break;
457
+ }
458
+ }
459
+ }
460
+ if (counterexample !== undefined) {
461
+ failures.push({ vc, state: counterexample });
462
+ }
463
+ }
464
+ return { valid: failures.length === 0, vcs, failures };
465
+ }
466
+ function evalVC(vc, state) {
467
+ return toBool(evalExpr(vc, state));
468
+ }
469
+ function makeRandom(seed) {
470
+ if (seed === undefined)
471
+ return Math.random;
472
+ // Mulberry32 — pequeño PRNG determinista.
473
+ let s = seed >>> 0;
474
+ return () => {
475
+ s = (s + 0x6d2b79f5) >>> 0;
476
+ let t = s;
477
+ t = Math.imul(t ^ (t >>> 15), t | 1);
478
+ t ^= t + Math.imul(t ^ (t >>> 7), t | 61);
479
+ return ((t ^ (t >>> 14)) >>> 0) / 4294967296;
480
+ };
481
+ }
482
+ function randIntInRange(rand, lo, hi) {
483
+ return Math.floor(rand() * (hi - lo + 1)) + lo;
484
+ }
485
+ // ── Programas estándar de la literatura ──────────────────────
486
+ /**
487
+ * Swap x ↔ y vía variable temporal `t`.
488
+ * t := x; x := y; y := t
489
+ * Tripleta canónica: {x = a ∧ y = b} swap {x = b ∧ y = a}
490
+ */
491
+ function programSwap() {
492
+ return seq((0, exports.assign)('t', (0, exports.v)('x')), (0, exports.assign)('x', (0, exports.v)('y')), (0, exports.assign)('y', (0, exports.v)('t')));
493
+ }
494
+ /**
495
+ * Factorial: r := 1; k := 0; while k < n do { k := k+1; r := r * k }
496
+ * Tripleta: {n = N ∧ N ≥ 0} fact {r = N!}
497
+ * Invariant: k ≤ n ∧ r = k! (codificable como r = k!, k entre 0 y n)
498
+ *
499
+ * Como la lógica de Hoare aquí no tiene factorial nativo, exponemos el
500
+ * código y el invariant en forma `r > 0 ∧ k ≤ n` (suficiente para
501
+ * los tests de mantenimiento sintácticos con muestreo: el ejecutor
502
+ * confirma corrección concreta para n pequeños).
503
+ */
504
+ function programFactorial() {
505
+ const body = seq((0, exports.assign)('k', (0, exports.binop)('+', (0, exports.v)('k'), (0, exports.num)(1))), (0, exports.assign)('r', (0, exports.binop)('*', (0, exports.v)('r'), (0, exports.v)('k'))));
506
+ const invariant = (0, exports.and)((0, exports.le)((0, exports.v)('k'), (0, exports.v)('n')), (0, exports.binop)('>=', (0, exports.v)('r'), (0, exports.num)(1)));
507
+ return seq((0, exports.assign)('r', (0, exports.num)(1)), (0, exports.assign)('k', (0, exports.num)(0)), (0, exports.whileS)((0, exports.binop)('<', (0, exports.v)('k'), (0, exports.v)('n')), body, invariant));
508
+ }
509
+ /**
510
+ * GCD por algoritmo de Euclides con restas:
511
+ * while x != y do { if x > y then x := x - y else y := y - x }
512
+ * Invariant: gcd(x, y) = gcd(a, b). Como no tenemos gcd nativo,
513
+ * usamos como invariant `x ≥ 1 ∧ y ≥ 1` (mantenido por restas
514
+ * positivas cuando x ≠ y y ambos positivos al entrar).
515
+ */
516
+ function programGCD() {
517
+ const body = (0, exports.ifS)((0, exports.binop)('>', (0, exports.v)('x'), (0, exports.v)('y')), (0, exports.assign)('x', (0, exports.binop)('-', (0, exports.v)('x'), (0, exports.v)('y'))), (0, exports.assign)('y', (0, exports.binop)('-', (0, exports.v)('y'), (0, exports.v)('x'))));
518
+ const invariant = (0, exports.and)((0, exports.binop)('>=', (0, exports.v)('x'), (0, exports.num)(1)), (0, exports.binop)('>=', (0, exports.v)('y'), (0, exports.num)(1)));
519
+ return (0, exports.whileS)((0, exports.binop)('!=', (0, exports.v)('x'), (0, exports.v)('y')), body, invariant);
520
+ }
521
+ /**
522
+ * Búsqueda lineal:
523
+ * i := 0; found := 0;
524
+ * while i < n && found == 0 do {
525
+ * if a == target then found := 1 else skip;
526
+ * i := i + 1
527
+ * }
528
+ * Modelo simplificado: `a` representa el elemento actual (no un array;
529
+ * el AST de IMP no tiene arrays). Sirve como esqueleto pedagógico
530
+ * para discutir el invariant `i ≤ n` y la post `found == 1 ∨ i == n`.
531
+ */
532
+ function programLinearSearch() {
533
+ const body = seq((0, exports.ifS)((0, exports.eq)((0, exports.v)('a'), (0, exports.v)('target')), (0, exports.assign)('found', (0, exports.num)(1)), (0, exports.skip)()), (0, exports.assign)('i', (0, exports.binop)('+', (0, exports.v)('i'), (0, exports.num)(1))));
534
+ const invariant = (0, exports.and)((0, exports.le)((0, exports.v)('i'), (0, exports.v)('n')), (0, exports.or)((0, exports.eq)((0, exports.v)('found'), (0, exports.num)(0)), (0, exports.eq)((0, exports.v)('found'), (0, exports.num)(1))));
535
+ return seq((0, exports.assign)('i', (0, exports.num)(0)), (0, exports.assign)('found', (0, exports.num)(0)), (0, exports.whileS)((0, exports.and)((0, exports.binop)('<', (0, exports.v)('i'), (0, exports.v)('n')), (0, exports.eq)((0, exports.v)('found'), (0, exports.num)(0))), body, invariant));
536
+ }
537
+ // ── Helper: cómputo factorial concreto (para los tests) ──────
538
+ /** Calcula el factorial de `n` en enteros (JavaScript). Solo para tests. */
539
+ function factorial(n) {
540
+ let r = 1;
541
+ for (let k = 1; k <= n; k++)
542
+ r *= k;
543
+ return r;
544
+ }
545
+ /** Máximo común divisor de `a` y `b` (Euclides). Solo para tests. */
546
+ function gcd(a, b) {
547
+ let x = Math.abs(a);
548
+ let y = Math.abs(b);
549
+ if (x === 0)
550
+ return y;
551
+ if (y === 0)
552
+ return x;
553
+ while (x !== y) {
554
+ if (x > y)
555
+ x -= y;
556
+ else
557
+ y -= x;
558
+ }
559
+ return x;
560
+ }
561
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/reasoning/hoare-logic/index.ts"],"names":[],"mappings":"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"}
@@ -1,13 +1,30 @@
1
+ /**
2
+ * A first-order hyperreal number `standard + infinitesimal · ε`,
3
+ * where ε is a formal infinitesimal (ε² ≈ 0).
4
+ */
1
5
  export interface Hyperreal {
2
6
  readonly standard: number;
3
7
  readonly infinitesimal: number;
4
8
  }
9
+ /**
10
+ * Constructs a {@link Hyperreal} from its standard and optional infinitesimal parts.
11
+ * `hr(x)` produces the standard real `x + 0ε`.
12
+ */
5
13
  export declare function hr(standard: number, infinitesimal?: number): Hyperreal;
14
+ /** The hyperreal zero: 0 + 0ε. */
6
15
  export declare const HR_ZERO: Hyperreal;
16
+ /** The hyperreal one: 1 + 0ε. */
7
17
  export declare const HR_ONE: Hyperreal;
18
+ /** The formal infinitesimal ε: 0 + 1ε. */
8
19
  export declare const HR_EPSILON: Hyperreal;
20
+ /** Returns `a + b` (component-wise addition). */
9
21
  export declare function add(a: Hyperreal, b: Hyperreal): Hyperreal;
22
+ /** Returns `a - b` (component-wise subtraction). */
10
23
  export declare function sub(a: Hyperreal, b: Hyperreal): Hyperreal;
24
+ /**
25
+ * Returns `a * b`, discarding O(ε²) terms:
26
+ * `(a.s + a.i ε)(b.s + b.i ε) = a.s·b.s + (a.s·b.i + a.i·b.s)·ε`.
27
+ */
11
28
  export declare function mul(a: Hyperreal, b: Hyperreal): Hyperreal;
12
29
  /**
13
30
  * Compara dos hiperreales lexicográficamente: primero la parte estándar,
@@ -18,17 +35,29 @@ export declare function mul(a: Hyperreal, b: Hyperreal): Hyperreal;
18
35
  * porque su magnitud es de orden O(1) en el coeficiente.
19
36
  */
20
37
  export declare function compare(a: Hyperreal, b: Hyperreal): -1 | 0 | 1;
38
+ /** Returns `true` when `a` and `b` are equal under the lexicographic order. */
21
39
  export declare function eq(a: Hyperreal, b: Hyperreal): boolean;
40
+ /** Returns `true` when `a < b` in the hyperreal order. */
22
41
  export declare function lt(a: Hyperreal, b: Hyperreal): boolean;
42
+ /** Returns `true` when `a > b` in the hyperreal order. */
23
43
  export declare function gt(a: Hyperreal, b: Hyperreal): boolean;
44
+ /** Probabilistic AND: `p ∧ q = p · q`. */
24
45
  export declare function hrAnd(p: Hyperreal, q: Hyperreal): Hyperreal;
46
+ /** Probabilistic OR (inclusion-exclusion): `p ∨ q = p + q − p·q`. */
25
47
  export declare function hrOr(p: Hyperreal, q: Hyperreal): Hyperreal;
48
+ /** Probabilistic NOT: `¬p = 1 − p`. */
26
49
  export declare function hrNot(p: Hyperreal): Hyperreal;
50
+ /** Probabilistic implication: `p → q = ¬p ∨ q`. */
27
51
  export declare function hrImplies(p: Hyperreal, q: Hyperreal): Hyperreal;
52
+ /** A closed interval `[lower, upper]` of hyperreal probabilities. */
28
53
  export interface UncertaintyBound {
29
54
  readonly lower: Hyperreal;
30
55
  readonly upper: Hyperreal;
31
56
  }
57
+ /**
58
+ * Constructs a validated {@link UncertaintyBound}.
59
+ * @throws When `lower > upper` in the hyperreal order.
60
+ */
32
61
  export declare function bound(lower: Hyperreal, upper: Hyperreal): UncertaintyBound;
33
62
  /**
34
63
  * Propaga una operación lógica sobre cotas de incertidumbre.
@@ -41,5 +70,6 @@ export declare function bound(lower: Hyperreal, upper: Hyperreal): UncertaintyBo
41
70
  * en q ⇒ lower = (upper_p → lower_q), upper = (lower_p → upper_q).
42
71
  */
43
72
  export declare function propagate(b: UncertaintyBound, op: 'and' | 'or' | 'not' | 'implies', other?: UncertaintyBound): UncertaintyBound;
73
+ /** Returns a human-readable string like `"0.9 + 3ε"` or `"1"` (when infinitesimal is 0). */
44
74
  export declare function hrToString(x: Hyperreal): string;
45
75
  //# sourceMappingURL=index.d.ts.map