@stevenvo780/st-lang 4.5.1 → 4.6.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 (465) hide show
  1. package/dist/bdd/index.d.ts +4 -0
  2. package/dist/bdd/index.d.ts.map +1 -0
  3. package/dist/bdd/index.js +29 -0
  4. package/dist/bdd/index.js.map +1 -0
  5. package/dist/bdd/manager.d.ts +122 -0
  6. package/dist/bdd/manager.d.ts.map +1 -0
  7. package/dist/bdd/manager.js +524 -0
  8. package/dist/bdd/manager.js.map +1 -0
  9. package/dist/bdd/types.d.ts +20 -0
  10. package/dist/bdd/types.d.ts.map +1 -0
  11. package/dist/bdd/types.js +28 -0
  12. package/dist/bdd/types.js.map +1 -0
  13. package/dist/categorical/fin-set.d.ts +39 -0
  14. package/dist/categorical/fin-set.d.ts.map +1 -0
  15. package/dist/categorical/fin-set.js +217 -0
  16. package/dist/categorical/fin-set.js.map +1 -0
  17. package/dist/categorical/free.d.ts +23 -0
  18. package/dist/categorical/free.d.ts.map +1 -0
  19. package/dist/categorical/free.js +168 -0
  20. package/dist/categorical/free.js.map +1 -0
  21. package/dist/categorical/functor.d.ts +40 -0
  22. package/dist/categorical/functor.d.ts.map +1 -0
  23. package/dist/categorical/functor.js +139 -0
  24. package/dist/categorical/functor.js.map +1 -0
  25. package/dist/categorical/index.d.ts +11 -0
  26. package/dist/categorical/index.d.ts.map +1 -0
  27. package/dist/categorical/index.js +33 -0
  28. package/dist/categorical/index.js.map +1 -0
  29. package/dist/categorical/limits.d.ts +64 -0
  30. package/dist/categorical/limits.d.ts.map +1 -0
  31. package/dist/categorical/limits.js +248 -0
  32. package/dist/categorical/limits.js.map +1 -0
  33. package/dist/categorical/monoidal.d.ts +14 -0
  34. package/dist/categorical/monoidal.d.ts.map +1 -0
  35. package/dist/categorical/monoidal.js +148 -0
  36. package/dist/categorical/monoidal.js.map +1 -0
  37. package/dist/categorical/poset.d.ts +14 -0
  38. package/dist/categorical/poset.d.ts.map +1 -0
  39. package/dist/categorical/poset.js +115 -0
  40. package/dist/categorical/poset.js.map +1 -0
  41. package/dist/categorical/types.d.ts +111 -0
  42. package/dist/categorical/types.d.ts.map +1 -0
  43. package/dist/categorical/types.js +15 -0
  44. package/dist/categorical/types.js.map +1 -0
  45. package/dist/csp-hoare/analysis.d.ts +51 -0
  46. package/dist/csp-hoare/analysis.d.ts.map +1 -0
  47. package/dist/csp-hoare/analysis.js +317 -0
  48. package/dist/csp-hoare/analysis.js.map +1 -0
  49. package/dist/csp-hoare/examples.d.ts +33 -0
  50. package/dist/csp-hoare/examples.d.ts.map +1 -0
  51. package/dist/csp-hoare/examples.js +108 -0
  52. package/dist/csp-hoare/examples.js.map +1 -0
  53. package/dist/csp-hoare/index.d.ts +6 -0
  54. package/dist/csp-hoare/index.d.ts.map +1 -0
  55. package/dist/csp-hoare/index.js +50 -0
  56. package/dist/csp-hoare/index.js.map +1 -0
  57. package/dist/csp-hoare/semantics.d.ts +49 -0
  58. package/dist/csp-hoare/semantics.d.ts.map +1 -0
  59. package/dist/csp-hoare/semantics.js +494 -0
  60. package/dist/csp-hoare/semantics.js.map +1 -0
  61. package/dist/csp-hoare/types.d.ts +60 -0
  62. package/dist/csp-hoare/types.d.ts.map +1 -0
  63. package/dist/csp-hoare/types.js +31 -0
  64. package/dist/csp-hoare/types.js.map +1 -0
  65. package/dist/game-theory/common-games.d.ts +50 -0
  66. package/dist/game-theory/common-games.d.ts.map +1 -0
  67. package/dist/game-theory/common-games.js +112 -0
  68. package/dist/game-theory/common-games.js.map +1 -0
  69. package/dist/game-theory/dominance.d.ts +26 -0
  70. package/dist/game-theory/dominance.d.ts.map +1 -0
  71. package/dist/game-theory/dominance.js +203 -0
  72. package/dist/game-theory/dominance.js.map +1 -0
  73. package/dist/game-theory/index.d.ts +8 -0
  74. package/dist/game-theory/index.d.ts.map +1 -0
  75. package/dist/game-theory/index.js +47 -0
  76. package/dist/game-theory/index.js.map +1 -0
  77. package/dist/game-theory/lemke-howson.d.ts +3 -0
  78. package/dist/game-theory/lemke-howson.d.ts.map +1 -0
  79. package/dist/game-theory/lemke-howson.js +269 -0
  80. package/dist/game-theory/lemke-howson.js.map +1 -0
  81. package/dist/game-theory/linalg.d.ts +7 -0
  82. package/dist/game-theory/linalg.d.ts.map +1 -0
  83. package/dist/game-theory/linalg.js +69 -0
  84. package/dist/game-theory/linalg.js.map +1 -0
  85. package/dist/game-theory/pure-nash.d.ts +3 -0
  86. package/dist/game-theory/pure-nash.d.ts.map +1 -0
  87. package/dist/game-theory/pure-nash.js +86 -0
  88. package/dist/game-theory/pure-nash.js.map +1 -0
  89. package/dist/game-theory/support-enumeration.d.ts +3 -0
  90. package/dist/game-theory/support-enumeration.d.ts.map +1 -0
  91. package/dist/game-theory/support-enumeration.js +214 -0
  92. package/dist/game-theory/support-enumeration.js.map +1 -0
  93. package/dist/game-theory/types.d.ts +57 -0
  94. package/dist/game-theory/types.d.ts.map +1 -0
  95. package/dist/game-theory/types.js +191 -0
  96. package/dist/game-theory/types.js.map +1 -0
  97. package/dist/hindley-milner/index.d.ts +7 -0
  98. package/dist/hindley-milner/index.d.ts.map +1 -0
  99. package/dist/hindley-milner/index.js +60 -0
  100. package/dist/hindley-milner/index.js.map +1 -0
  101. package/dist/hindley-milner/infer.d.ts +26 -0
  102. package/dist/hindley-milner/infer.d.ts.map +1 -0
  103. package/dist/hindley-milner/infer.js +278 -0
  104. package/dist/hindley-milner/infer.js.map +1 -0
  105. package/dist/hindley-milner/substitution.d.ts +21 -0
  106. package/dist/hindley-milner/substitution.d.ts.map +1 -0
  107. package/dist/hindley-milner/substitution.js +215 -0
  108. package/dist/hindley-milner/substitution.js.map +1 -0
  109. package/dist/hindley-milner/types.d.ts +84 -0
  110. package/dist/hindley-milner/types.d.ts.map +1 -0
  111. package/dist/hindley-milner/types.js +166 -0
  112. package/dist/hindley-milner/types.js.map +1 -0
  113. package/dist/hott/equality.d.ts +4 -0
  114. package/dist/hott/equality.d.ts.map +1 -0
  115. package/dist/hott/equality.js +108 -0
  116. package/dist/hott/equality.js.map +1 -0
  117. package/dist/hott/index.d.ts +13 -0
  118. package/dist/hott/index.d.ts.map +1 -0
  119. package/dist/hott/index.js +77 -0
  120. package/dist/hott/index.js.map +1 -0
  121. package/dist/hott/infer.d.ts +11 -0
  122. package/dist/hott/infer.d.ts.map +1 -0
  123. package/dist/hott/infer.js +465 -0
  124. package/dist/hott/infer.js.map +1 -0
  125. package/dist/hott/normalize.d.ts +5 -0
  126. package/dist/hott/normalize.d.ts.map +1 -0
  127. package/dist/hott/normalize.js +240 -0
  128. package/dist/hott/normalize.js.map +1 -0
  129. package/dist/hott/path-algebra.d.ts +25 -0
  130. package/dist/hott/path-algebra.d.ts.map +1 -0
  131. package/dist/hott/path-algebra.js +67 -0
  132. package/dist/hott/path-algebra.js.map +1 -0
  133. package/dist/hott/substitute.d.ts +3 -0
  134. package/dist/hott/substitute.d.ts.map +1 -0
  135. package/dist/hott/substitute.js +131 -0
  136. package/dist/hott/substitute.js.map +1 -0
  137. package/dist/hott/types.d.ts +126 -0
  138. package/dist/hott/types.d.ts.map +1 -0
  139. package/dist/hott/types.js +346 -0
  140. package/dist/hott/types.js.map +1 -0
  141. package/dist/index.d.ts +16 -1
  142. package/dist/index.d.ts.map +1 -1
  143. package/dist/index.js +83 -3
  144. package/dist/index.js.map +1 -1
  145. package/dist/information-theory/index.d.ts +29 -0
  146. package/dist/information-theory/index.d.ts.map +1 -0
  147. package/dist/information-theory/index.js +323 -0
  148. package/dist/information-theory/index.js.map +1 -0
  149. package/dist/lemma-synthesis/index.d.ts +124 -0
  150. package/dist/lemma-synthesis/index.d.ts.map +1 -0
  151. package/dist/lemma-synthesis/index.js +640 -0
  152. package/dist/lemma-synthesis/index.js.map +1 -0
  153. package/dist/namespaces/logic.d.ts +42 -0
  154. package/dist/namespaces/logic.d.ts.map +1 -0
  155. package/dist/namespaces/logic.js +112 -0
  156. package/dist/namespaces/logic.js.map +1 -0
  157. package/dist/namespaces/proof-systems.d.ts +18 -0
  158. package/dist/namespaces/proof-systems.d.ts.map +1 -0
  159. package/dist/namespaces/proof-systems.js +59 -0
  160. package/dist/namespaces/proof-systems.js.map +1 -0
  161. package/dist/namespaces/reasoning.d.ts +26 -0
  162. package/dist/namespaces/reasoning.d.ts.map +1 -0
  163. package/dist/namespaces/reasoning.js +72 -0
  164. package/dist/namespaces/reasoning.js.map +1 -0
  165. package/dist/namespaces/semantics.d.ts +21 -0
  166. package/dist/namespaces/semantics.d.ts.map +1 -0
  167. package/dist/namespaces/semantics.js +64 -0
  168. package/dist/namespaces/semantics.js.map +1 -0
  169. package/dist/namespaces/solvers.d.ts +22 -0
  170. package/dist/namespaces/solvers.d.ts.map +1 -0
  171. package/dist/namespaces/solvers.js +66 -0
  172. package/dist/namespaces/solvers.js.map +1 -0
  173. package/dist/namespaces/type-theory.d.ts +22 -0
  174. package/dist/namespaces/type-theory.d.ts.map +1 -0
  175. package/dist/namespaces/type-theory.js +65 -0
  176. package/dist/namespaces/type-theory.js.map +1 -0
  177. package/dist/optimization/branch-and-bound.d.ts +11 -0
  178. package/dist/optimization/branch-and-bound.d.ts.map +1 -0
  179. package/dist/optimization/branch-and-bound.js +311 -0
  180. package/dist/optimization/branch-and-bound.js.map +1 -0
  181. package/dist/optimization/index.d.ts +5 -0
  182. package/dist/optimization/index.d.ts.map +1 -0
  183. package/dist/optimization/index.js +20 -0
  184. package/dist/optimization/index.js.map +1 -0
  185. package/dist/optimization/simplex.d.ts +8 -0
  186. package/dist/optimization/simplex.d.ts.map +1 -0
  187. package/dist/optimization/simplex.js +408 -0
  188. package/dist/optimization/simplex.js.map +1 -0
  189. package/dist/optimization/standard-form.d.ts +11 -0
  190. package/dist/optimization/standard-form.d.ts.map +1 -0
  191. package/dist/optimization/standard-form.js +112 -0
  192. package/dist/optimization/standard-form.js.map +1 -0
  193. package/dist/optimization/types.d.ts +44 -0
  194. package/dist/optimization/types.d.ts.map +1 -0
  195. package/dist/optimization/types.js +15 -0
  196. package/dist/optimization/types.js.map +1 -0
  197. package/dist/profiles/hol/connectives.d.ts +46 -0
  198. package/dist/profiles/hol/connectives.d.ts.map +1 -0
  199. package/dist/profiles/hol/connectives.js +104 -0
  200. package/dist/profiles/hol/connectives.js.map +1 -0
  201. package/dist/profiles/hol/index.d.ts +7 -0
  202. package/dist/profiles/hol/index.d.ts.map +1 -0
  203. package/dist/profiles/hol/index.js +77 -0
  204. package/dist/profiles/hol/index.js.map +1 -0
  205. package/dist/profiles/hol/rules.d.ts +31 -0
  206. package/dist/profiles/hol/rules.d.ts.map +1 -0
  207. package/dist/profiles/hol/rules.js +258 -0
  208. package/dist/profiles/hol/rules.js.map +1 -0
  209. package/dist/profiles/hol/term.d.ts +52 -0
  210. package/dist/profiles/hol/term.d.ts.map +1 -0
  211. package/dist/profiles/hol/term.js +345 -0
  212. package/dist/profiles/hol/term.js.map +1 -0
  213. package/dist/profiles/hol/type-system.d.ts +38 -0
  214. package/dist/profiles/hol/type-system.d.ts.map +1 -0
  215. package/dist/profiles/hol/type-system.js +133 -0
  216. package/dist/profiles/hol/type-system.js.map +1 -0
  217. package/dist/profiles/hol/types.d.ts +59 -0
  218. package/dist/profiles/hol/types.d.ts.map +1 -0
  219. package/dist/profiles/hol/types.js +26 -0
  220. package/dist/profiles/hol/types.js.map +1 -0
  221. package/dist/smt-lib/ast.d.ts +138 -0
  222. package/dist/smt-lib/ast.d.ts.map +1 -0
  223. package/dist/smt-lib/ast.js +73 -0
  224. package/dist/smt-lib/ast.js.map +1 -0
  225. package/dist/smt-lib/emitter.d.ts +12 -0
  226. package/dist/smt-lib/emitter.d.ts.map +1 -0
  227. package/dist/smt-lib/emitter.js +174 -0
  228. package/dist/smt-lib/emitter.js.map +1 -0
  229. package/dist/smt-lib/index.d.ts +6 -0
  230. package/dist/smt-lib/index.d.ts.map +1 -0
  231. package/dist/smt-lib/index.js +31 -0
  232. package/dist/smt-lib/index.js.map +1 -0
  233. package/dist/smt-lib/parser.d.ts +13 -0
  234. package/dist/smt-lib/parser.d.ts.map +1 -0
  235. package/dist/smt-lib/parser.js +614 -0
  236. package/dist/smt-lib/parser.js.map +1 -0
  237. package/dist/smt-lib/tokenizer.d.ts +16 -0
  238. package/dist/smt-lib/tokenizer.d.ts.map +1 -0
  239. package/dist/smt-lib/tokenizer.js +234 -0
  240. package/dist/smt-lib/tokenizer.js.map +1 -0
  241. package/dist/tactic-dsl/combinators.d.ts +6 -0
  242. package/dist/tactic-dsl/combinators.d.ts.map +1 -0
  243. package/dist/tactic-dsl/combinators.js +98 -0
  244. package/dist/tactic-dsl/combinators.js.map +1 -0
  245. package/dist/tactic-dsl/index.d.ts +39 -0
  246. package/dist/tactic-dsl/index.d.ts.map +1 -0
  247. package/dist/tactic-dsl/index.js +162 -0
  248. package/dist/tactic-dsl/index.js.map +1 -0
  249. package/dist/tactic-dsl/tactics.d.ts +21 -0
  250. package/dist/tactic-dsl/tactics.d.ts.map +1 -0
  251. package/dist/tactic-dsl/tactics.js +536 -0
  252. package/dist/tactic-dsl/tactics.js.map +1 -0
  253. package/dist/tactic-dsl/types.d.ts +54 -0
  254. package/dist/tactic-dsl/types.d.ts.map +1 -0
  255. package/dist/tactic-dsl/types.js +226 -0
  256. package/dist/tactic-dsl/types.js.map +1 -0
  257. package/dist/tests/api/namespaces.test.d.ts +9 -0
  258. package/dist/tests/api/namespaces.test.d.ts.map +1 -0
  259. package/dist/tests/api/namespaces.test.js +218 -0
  260. package/dist/tests/api/namespaces.test.js.map +1 -0
  261. package/dist/tests/bdd/manager.test.d.ts +2 -0
  262. package/dist/tests/bdd/manager.test.d.ts.map +1 -0
  263. package/dist/tests/bdd/manager.test.js +472 -0
  264. package/dist/tests/bdd/manager.test.js.map +1 -0
  265. package/dist/tests/categorical/categorical.test.d.ts +2 -0
  266. package/dist/tests/categorical/categorical.test.d.ts.map +1 -0
  267. package/dist/tests/categorical/categorical.test.js +300 -0
  268. package/dist/tests/categorical/categorical.test.js.map +1 -0
  269. package/dist/tests/csp-hoare/csp-hoare.test.d.ts +2 -0
  270. package/dist/tests/csp-hoare/csp-hoare.test.d.ts.map +1 -0
  271. package/dist/tests/csp-hoare/csp-hoare.test.js +313 -0
  272. package/dist/tests/csp-hoare/csp-hoare.test.js.map +1 -0
  273. package/dist/tests/game-theory/game-theory.test.d.ts +2 -0
  274. package/dist/tests/game-theory/game-theory.test.d.ts.map +1 -0
  275. package/dist/tests/game-theory/game-theory.test.js +252 -0
  276. package/dist/tests/game-theory/game-theory.test.js.map +1 -0
  277. package/dist/tests/hindley-milner/hindley-milner.test.d.ts +2 -0
  278. package/dist/tests/hindley-milner/hindley-milner.test.d.ts.map +1 -0
  279. package/dist/tests/hindley-milner/hindley-milner.test.js +327 -0
  280. package/dist/tests/hindley-milner/hindley-milner.test.js.map +1 -0
  281. package/dist/tests/hol/hol.test.d.ts +2 -0
  282. package/dist/tests/hol/hol.test.d.ts.map +1 -0
  283. package/dist/tests/hol/hol.test.js +340 -0
  284. package/dist/tests/hol/hol.test.js.map +1 -0
  285. package/dist/tests/hott/hott.test.d.ts +2 -0
  286. package/dist/tests/hott/hott.test.d.ts.map +1 -0
  287. package/dist/tests/hott/hott.test.js +271 -0
  288. package/dist/tests/hott/hott.test.js.map +1 -0
  289. package/dist/tests/information-theory/information-theory.test.d.ts +2 -0
  290. package/dist/tests/information-theory/information-theory.test.d.ts.map +1 -0
  291. package/dist/tests/information-theory/information-theory.test.js +291 -0
  292. package/dist/tests/information-theory/information-theory.test.js.map +1 -0
  293. package/dist/tests/lemma-synthesis/lemma-synthesis.test.d.ts +2 -0
  294. package/dist/tests/lemma-synthesis/lemma-synthesis.test.d.ts.map +1 -0
  295. package/dist/tests/lemma-synthesis/lemma-synthesis.test.js +460 -0
  296. package/dist/tests/lemma-synthesis/lemma-synthesis.test.js.map +1 -0
  297. package/dist/tests/optimization/ilp.test.d.ts +2 -0
  298. package/dist/tests/optimization/ilp.test.d.ts.map +1 -0
  299. package/dist/tests/optimization/ilp.test.js +204 -0
  300. package/dist/tests/optimization/ilp.test.js.map +1 -0
  301. package/dist/tests/optimization/lp.test.d.ts +2 -0
  302. package/dist/tests/optimization/lp.test.d.ts.map +1 -0
  303. package/dist/tests/optimization/lp.test.js +224 -0
  304. package/dist/tests/optimization/lp.test.js.map +1 -0
  305. package/dist/tests/properties/agm.property.test.d.ts +2 -0
  306. package/dist/tests/properties/agm.property.test.d.ts.map +1 -0
  307. package/dist/tests/properties/agm.property.test.js +75 -0
  308. package/dist/tests/properties/agm.property.test.js.map +1 -0
  309. package/dist/tests/properties/anti-unification.property.test.d.ts +2 -0
  310. package/dist/tests/properties/anti-unification.property.test.d.ts.map +1 -0
  311. package/dist/tests/properties/anti-unification.property.test.js +43 -0
  312. package/dist/tests/properties/anti-unification.property.test.js.map +1 -0
  313. package/dist/tests/properties/argumentation.property.test.d.ts +2 -0
  314. package/dist/tests/properties/argumentation.property.test.d.ts.map +1 -0
  315. package/dist/tests/properties/argumentation.property.test.js +51 -0
  316. package/dist/tests/properties/argumentation.property.test.js.map +1 -0
  317. package/dist/tests/properties/bayesian.property.test.d.ts +2 -0
  318. package/dist/tests/properties/bayesian.property.test.d.ts.map +1 -0
  319. package/dist/tests/properties/bayesian.property.test.js +32 -0
  320. package/dist/tests/properties/bayesian.property.test.js.map +1 -0
  321. package/dist/tests/properties/bisimulation.property.test.d.ts +2 -0
  322. package/dist/tests/properties/bisimulation.property.test.d.ts.map +1 -0
  323. package/dist/tests/properties/bisimulation.property.test.js +50 -0
  324. package/dist/tests/properties/bisimulation.property.test.js.map +1 -0
  325. package/dist/tests/properties/cdcl.property.test.d.ts +2 -0
  326. package/dist/tests/properties/cdcl.property.test.d.ts.map +1 -0
  327. package/dist/tests/properties/cdcl.property.test.js +70 -0
  328. package/dist/tests/properties/cdcl.property.test.js.map +1 -0
  329. package/dist/tests/properties/coinduction.property.test.d.ts +2 -0
  330. package/dist/tests/properties/coinduction.property.test.d.ts.map +1 -0
  331. package/dist/tests/properties/coinduction.property.test.js +34 -0
  332. package/dist/tests/properties/coinduction.property.test.js.map +1 -0
  333. package/dist/tests/properties/constructive-reals.property.test.d.ts +2 -0
  334. package/dist/tests/properties/constructive-reals.property.test.d.ts.map +1 -0
  335. package/dist/tests/properties/constructive-reals.property.test.js +59 -0
  336. package/dist/tests/properties/constructive-reals.property.test.js.map +1 -0
  337. package/dist/tests/properties/csp.property.test.d.ts +2 -0
  338. package/dist/tests/properties/csp.property.test.d.ts.map +1 -0
  339. package/dist/tests/properties/csp.property.test.js +58 -0
  340. package/dist/tests/properties/csp.property.test.js.map +1 -0
  341. package/dist/tests/properties/generators.d.ts +78 -0
  342. package/dist/tests/properties/generators.d.ts.map +1 -0
  343. package/dist/tests/properties/generators.js +348 -0
  344. package/dist/tests/properties/generators.js.map +1 -0
  345. package/dist/tests/properties/ho-unify.property.test.d.ts +2 -0
  346. package/dist/tests/properties/ho-unify.property.test.d.ts.map +1 -0
  347. package/dist/tests/properties/ho-unify.property.test.js +46 -0
  348. package/dist/tests/properties/ho-unify.property.test.js.map +1 -0
  349. package/dist/tests/properties/hyperreal.property.test.d.ts +2 -0
  350. package/dist/tests/properties/hyperreal.property.test.d.ts.map +1 -0
  351. package/dist/tests/properties/hyperreal.property.test.js +33 -0
  352. package/dist/tests/properties/hyperreal.property.test.js.map +1 -0
  353. package/dist/tests/properties/intuit-nj.property.test.d.ts +2 -0
  354. package/dist/tests/properties/intuit-nj.property.test.d.ts.map +1 -0
  355. package/dist/tests/properties/intuit-nj.property.test.js +57 -0
  356. package/dist/tests/properties/intuit-nj.property.test.js.map +1 -0
  357. package/dist/tests/properties/lambda-calc.property.test.d.ts +2 -0
  358. package/dist/tests/properties/lambda-calc.property.test.d.ts.map +1 -0
  359. package/dist/tests/properties/lambda-calc.property.test.js +35 -0
  360. package/dist/tests/properties/lambda-calc.property.test.js.map +1 -0
  361. package/dist/tests/properties/mln.property.test.d.ts +2 -0
  362. package/dist/tests/properties/mln.property.test.d.ts.map +1 -0
  363. package/dist/tests/properties/mln.property.test.js +41 -0
  364. package/dist/tests/properties/mln.property.test.js.map +1 -0
  365. package/dist/tests/properties/mltt.property.test.d.ts +2 -0
  366. package/dist/tests/properties/mltt.property.test.d.ts.map +1 -0
  367. package/dist/tests/properties/mltt.property.test.js +33 -0
  368. package/dist/tests/properties/mltt.property.test.js.map +1 -0
  369. package/dist/tests/properties/nbe.property.test.d.ts +2 -0
  370. package/dist/tests/properties/nbe.property.test.d.ts.map +1 -0
  371. package/dist/tests/properties/nbe.property.test.js +44 -0
  372. package/dist/tests/properties/nbe.property.test.js.map +1 -0
  373. package/dist/tests/properties/planning.property.test.d.ts +2 -0
  374. package/dist/tests/properties/planning.property.test.d.ts.map +1 -0
  375. package/dist/tests/properties/planning.property.test.js +51 -0
  376. package/dist/tests/properties/planning.property.test.js.map +1 -0
  377. package/dist/tests/properties/profile-bridge.property.test.d.ts +2 -0
  378. package/dist/tests/properties/profile-bridge.property.test.d.ts.map +1 -0
  379. package/dist/tests/properties/profile-bridge.property.test.js +71 -0
  380. package/dist/tests/properties/profile-bridge.property.test.js.map +1 -0
  381. package/dist/tests/properties/refinement-types.property.test.d.ts +2 -0
  382. package/dist/tests/properties/refinement-types.property.test.d.ts.map +1 -0
  383. package/dist/tests/properties/refinement-types.property.test.js +37 -0
  384. package/dist/tests/properties/refinement-types.property.test.js.map +1 -0
  385. package/dist/tests/properties/sequent-g3.property.test.d.ts +2 -0
  386. package/dist/tests/properties/sequent-g3.property.test.d.ts.map +1 -0
  387. package/dist/tests/properties/sequent-g3.property.test.js +34 -0
  388. package/dist/tests/properties/sequent-g3.property.test.js.map +1 -0
  389. package/dist/tests/properties/symbolic-diff.property.test.d.ts +2 -0
  390. package/dist/tests/properties/symbolic-diff.property.test.d.ts.map +1 -0
  391. package/dist/tests/properties/symbolic-diff.property.test.js +49 -0
  392. package/dist/tests/properties/symbolic-diff.property.test.js.map +1 -0
  393. package/dist/tests/properties/system-f.property.test.d.ts +2 -0
  394. package/dist/tests/properties/system-f.property.test.d.ts.map +1 -0
  395. package/dist/tests/properties/system-f.property.test.js +37 -0
  396. package/dist/tests/properties/system-f.property.test.js.map +1 -0
  397. package/dist/tests/properties/theorem-cache.property.test.d.ts +2 -0
  398. package/dist/tests/properties/theorem-cache.property.test.d.ts.map +1 -0
  399. package/dist/tests/properties/theorem-cache.property.test.js +38 -0
  400. package/dist/tests/properties/theorem-cache.property.test.js.map +1 -0
  401. package/dist/tests/properties/trs.property.test.d.ts +2 -0
  402. package/dist/tests/properties/trs.property.test.d.ts.map +1 -0
  403. package/dist/tests/properties/trs.property.test.js +34 -0
  404. package/dist/tests/properties/trs.property.test.js.map +1 -0
  405. package/dist/tests/properties/unification.property.test.d.ts +2 -0
  406. package/dist/tests/properties/unification.property.test.d.ts.map +1 -0
  407. package/dist/tests/properties/unification.property.test.js +42 -0
  408. package/dist/tests/properties/unification.property.test.js.map +1 -0
  409. package/dist/tests/smt-lib/emitter.test.d.ts +2 -0
  410. package/dist/tests/smt-lib/emitter.test.d.ts.map +1 -0
  411. package/dist/tests/smt-lib/emitter.test.js +155 -0
  412. package/dist/tests/smt-lib/emitter.test.js.map +1 -0
  413. package/dist/tests/smt-lib/parser.test.d.ts +2 -0
  414. package/dist/tests/smt-lib/parser.test.d.ts.map +1 -0
  415. package/dist/tests/smt-lib/parser.test.js +164 -0
  416. package/dist/tests/smt-lib/parser.test.js.map +1 -0
  417. package/dist/tests/smt-lib/tokenizer.test.d.ts +2 -0
  418. package/dist/tests/smt-lib/tokenizer.test.d.ts.map +1 -0
  419. package/dist/tests/smt-lib/tokenizer.test.js +59 -0
  420. package/dist/tests/smt-lib/tokenizer.test.js.map +1 -0
  421. package/dist/tests/tactic-dsl/tactic-dsl.test.d.ts +2 -0
  422. package/dist/tests/tactic-dsl/tactic-dsl.test.d.ts.map +1 -0
  423. package/dist/tests/tactic-dsl/tactic-dsl.test.js +259 -0
  424. package/dist/tests/tactic-dsl/tactic-dsl.test.js.map +1 -0
  425. package/dist/tests/tptp/bridge.test.d.ts +2 -0
  426. package/dist/tests/tptp/bridge.test.d.ts.map +1 -0
  427. package/dist/tests/tptp/bridge.test.js +154 -0
  428. package/dist/tests/tptp/bridge.test.js.map +1 -0
  429. package/dist/tests/tptp/emitter.test.d.ts +2 -0
  430. package/dist/tests/tptp/emitter.test.d.ts.map +1 -0
  431. package/dist/tests/tptp/emitter.test.js +128 -0
  432. package/dist/tests/tptp/emitter.test.js.map +1 -0
  433. package/dist/tests/tptp/parser.test.d.ts +2 -0
  434. package/dist/tests/tptp/parser.test.d.ts.map +1 -0
  435. package/dist/tests/tptp/parser.test.js +192 -0
  436. package/dist/tests/tptp/parser.test.js.map +1 -0
  437. package/dist/tests/tptp/tokenizer.test.d.ts +2 -0
  438. package/dist/tests/tptp/tokenizer.test.d.ts.map +1 -0
  439. package/dist/tests/tptp/tokenizer.test.js +60 -0
  440. package/dist/tests/tptp/tokenizer.test.js.map +1 -0
  441. package/dist/tptp/ast.d.ts +73 -0
  442. package/dist/tptp/ast.d.ts.map +1 -0
  443. package/dist/tptp/ast.js +35 -0
  444. package/dist/tptp/ast.js.map +1 -0
  445. package/dist/tptp/bridge.d.ts +14 -0
  446. package/dist/tptp/bridge.d.ts.map +1 -0
  447. package/dist/tptp/bridge.js +146 -0
  448. package/dist/tptp/bridge.js.map +1 -0
  449. package/dist/tptp/emitter.d.ts +5 -0
  450. package/dist/tptp/emitter.d.ts.map +1 -0
  451. package/dist/tptp/emitter.js +103 -0
  452. package/dist/tptp/emitter.js.map +1 -0
  453. package/dist/tptp/index.d.ts +7 -0
  454. package/dist/tptp/index.d.ts.map +1 -0
  455. package/dist/tptp/index.js +31 -0
  456. package/dist/tptp/index.js.map +1 -0
  457. package/dist/tptp/parser.d.ts +23 -0
  458. package/dist/tptp/parser.d.ts.map +1 -0
  459. package/dist/tptp/parser.js +440 -0
  460. package/dist/tptp/parser.js.map +1 -0
  461. package/dist/tptp/tokenizer.d.ts +14 -0
  462. package/dist/tptp/tokenizer.d.ts.map +1 -0
  463. package/dist/tptp/tokenizer.js +264 -0
  464. package/dist/tptp/tokenizer.js.map +1 -0
  465. package/package.json +5 -1
@@ -0,0 +1,536 @@
1
+ "use strict";
2
+ // ============================================================
3
+ // Tactic DSL — tactics built-in
4
+ // ============================================================
5
+ //
6
+ // Cada tactic recibe un ProofState y devuelve un ProofState nuevo
7
+ // (inmutable). Si la tactic no aplica al goal actual, lanza
8
+ // TacticError. Eso permite que `orElse` capture la falla y pruebe
9
+ // otra alternativa.
10
+ //
11
+ // Convención: el goal "activo" es siempre `state.goals[0]`. Las
12
+ // reglas que generan sub-goals (split, induction, destruct, …) los
13
+ // insertan al frente para que se trabajen en orden.
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports._resetGoalCounter = _resetGoalCounter;
16
+ exports.intro = intro;
17
+ exports.exact = exact;
18
+ exports.assumption = assumption;
19
+ exports.apply = apply;
20
+ exports.rewrite = rewrite;
21
+ exports.rfl = rfl;
22
+ exports.trivial = trivial;
23
+ exports.split = split;
24
+ exports.left = left;
25
+ exports.right = right;
26
+ exports.destruct = destruct;
27
+ exports.induction = induction;
28
+ exports.caseAnalysis = caseAnalysis;
29
+ exports.unfold = unfold;
30
+ exports.simp = simp;
31
+ const types_1 = require("./types");
32
+ let goalCounter = 0;
33
+ function freshGoalId(prefix = 'g') {
34
+ goalCounter++;
35
+ return `${prefix}${goalCounter}`;
36
+ }
37
+ // Reset para tests deterministas (no exportado en el API público).
38
+ function _resetGoalCounter() {
39
+ goalCounter = 0;
40
+ }
41
+ function activeGoal(state, tactic) {
42
+ if (state.done || state.goals.length === 0) {
43
+ throw new types_1.TacticError(tactic, 'no hay goals activos');
44
+ }
45
+ const g = state.goals[0];
46
+ if (!g) {
47
+ throw new types_1.TacticError(tactic, 'goal frontal indefinido');
48
+ }
49
+ return g;
50
+ }
51
+ function withNewGoals(state, replace) {
52
+ const rest = state.goals.slice(1);
53
+ const next = [...replace, ...rest];
54
+ return {
55
+ goals: next,
56
+ history: state.history,
57
+ done: next.length === 0,
58
+ };
59
+ }
60
+ function recordHistory(before, after, tactic, args) {
61
+ const invocation = { tactic, args, before, after };
62
+ return {
63
+ ...after,
64
+ history: [...before.history, invocation],
65
+ };
66
+ }
67
+ // ---------- intro ----------
68
+ // `intro(name?)` — para goal `P -> Q`, descarga `P` con nombre `name`
69
+ // (o auto) y deja goal `Q`. Soporta también `~P` (≡ `P -> False`).
70
+ function intro(name) {
71
+ return (state) => {
72
+ const goal = activeGoal(state, 'intro');
73
+ const f = (0, types_1.parseFormula)(goal.concl);
74
+ let hypType;
75
+ let newConcl;
76
+ if (f.kind === 'imp') {
77
+ hypType = f.left;
78
+ newConcl = f.right;
79
+ }
80
+ else if (f.kind === 'not') {
81
+ hypType = f.body;
82
+ newConcl = { kind: 'false' };
83
+ }
84
+ else {
85
+ throw new types_1.TacticError('intro', `goal no es una implicación: ${goal.concl}`);
86
+ }
87
+ const hypName = name ?? autoFreshHypName(goal.hyps);
88
+ if (goal.hyps[hypName] !== undefined) {
89
+ throw new types_1.TacticError('intro', `nombre de hipótesis '${hypName}' ya existe`);
90
+ }
91
+ const newGoal = {
92
+ id: goal.id,
93
+ hyps: { ...goal.hyps, [hypName]: (0, types_1.formulaToString)(hypType) },
94
+ concl: (0, types_1.formulaToString)(newConcl),
95
+ };
96
+ const after = withNewGoals(state, [newGoal]);
97
+ return recordHistory(state, after, 'intro', [name ?? null]);
98
+ };
99
+ }
100
+ function autoFreshHypName(hyps) {
101
+ let i = 1;
102
+ while (hyps[`H${i}`] !== undefined)
103
+ i++;
104
+ return `H${i}`;
105
+ }
106
+ // ---------- exact ----------
107
+ // `exact(term)` — cierra el goal si `term` (interpretado como nombre
108
+ // de una hipótesis O como string igual al goal) coincide con la
109
+ // conclusión.
110
+ function exact(term) {
111
+ return (state) => {
112
+ const goal = activeGoal(state, 'exact');
113
+ const hypType = goal.hyps[term];
114
+ if (hypType !== undefined && (0, types_1.formulaEq)(hypType, goal.concl)) {
115
+ const after = withNewGoals(state, []);
116
+ return recordHistory(state, after, 'exact', [term]);
117
+ }
118
+ if ((0, types_1.formulaEq)(term, goal.concl)) {
119
+ const after = withNewGoals(state, []);
120
+ return recordHistory(state, after, 'exact', [term]);
121
+ }
122
+ throw new types_1.TacticError('exact', `'${term}' no coincide con goal '${goal.concl}' (hyps: ${Object.keys(goal.hyps).join(', ')})`);
123
+ };
124
+ }
125
+ // ---------- assumption ----------
126
+ // Cierra el goal si alguna hipótesis tiene el mismo tipo que la conclusión.
127
+ function assumption() {
128
+ return (state) => {
129
+ const goal = activeGoal(state, 'assumption');
130
+ for (const [name, ty] of Object.entries(goal.hyps)) {
131
+ if ((0, types_1.formulaEq)(ty, goal.concl)) {
132
+ const after = withNewGoals(state, []);
133
+ return recordHistory(state, after, 'assumption', [name]);
134
+ }
135
+ }
136
+ throw new types_1.TacticError('assumption', `ninguna hipótesis prueba '${goal.concl}' (tenía: ${formatHypList(goal.hyps)})`);
137
+ };
138
+ }
139
+ function formatHypList(hyps) {
140
+ const entries = Object.entries(hyps);
141
+ if (entries.length === 0)
142
+ return '∅';
143
+ return entries.map(([n, t]) => `${n}:${t}`).join(', ');
144
+ }
145
+ // ---------- apply ----------
146
+ // `apply(thm)` — backward chaining sobre una hipótesis `thm`.
147
+ // Si `thm : A -> B` y goal es `B`, deja goal `A`.
148
+ // Si `thm : A -> B -> C` y goal es `C`, deja goals `A`, `B`.
149
+ // args opcional: lista de hipótesis/strings que satisfacen las premisas
150
+ // inmediatamente.
151
+ function apply(thm, args) {
152
+ return (state) => {
153
+ const goal = activeGoal(state, 'apply');
154
+ const thmType = goal.hyps[thm];
155
+ if (thmType === undefined) {
156
+ throw new types_1.TacticError('apply', `'${thm}' no está en hipótesis`);
157
+ }
158
+ // Aplanar la flecha en (premisas[], conclusión).
159
+ const f = (0, types_1.parseFormula)(thmType);
160
+ const premises = [];
161
+ let cur = f;
162
+ while (cur.kind === 'imp') {
163
+ premises.push(cur.left);
164
+ cur = cur.right;
165
+ }
166
+ if (!(0, types_1.formulaEq)((0, types_1.formulaToString)(cur), goal.concl)) {
167
+ throw new types_1.TacticError('apply', `conclusión de '${thm}' (${(0, types_1.formulaToString)(cur)}) no unifica con goal '${goal.concl}'`);
168
+ }
169
+ // Descontar argumentos ya provistos: cada arg debe ser una hipótesis
170
+ // cuyo tipo case con la siguiente premisa.
171
+ let remaining = premises;
172
+ if (args && args.length > 0) {
173
+ if (args.length > premises.length) {
174
+ throw new types_1.TacticError('apply', `demasiados args (${args.length} > ${premises.length})`);
175
+ }
176
+ for (let i = 0; i < args.length; i++) {
177
+ const argName = args[i];
178
+ const argType = goal.hyps[argName];
179
+ const expected = premises[i];
180
+ if (argType === undefined || expected === undefined) {
181
+ throw new types_1.TacticError('apply', `arg '${argName}' no es hipótesis válida`);
182
+ }
183
+ if (!(0, types_1.formulaEq)(argType, (0, types_1.formulaToString)(expected))) {
184
+ throw new types_1.TacticError('apply', `arg '${argName}:${argType}' no encaja con premisa ${i + 1} (${(0, types_1.formulaToString)(expected)})`);
185
+ }
186
+ }
187
+ remaining = premises.slice(args.length);
188
+ }
189
+ const subGoals = remaining.map((p) => ({
190
+ id: freshGoalId(goal.id + '_'),
191
+ hyps: { ...goal.hyps },
192
+ concl: (0, types_1.formulaToString)(p),
193
+ }));
194
+ const after = withNewGoals(state, subGoals);
195
+ return recordHistory(state, after, 'apply', [thm, args ?? []]);
196
+ };
197
+ }
198
+ // ---------- rewrite ----------
199
+ // `rewrite(eqName, dir?)` — usa la hipótesis `eqName: lhs = rhs` para
200
+ // reemplazar ocurrencias de lhs por rhs en la conclusión (o al revés).
201
+ function rewrite(eq, dir = 'left-to-right') {
202
+ return (state) => {
203
+ const goal = activeGoal(state, 'rewrite');
204
+ const eqType = goal.hyps[eq];
205
+ if (eqType === undefined) {
206
+ throw new types_1.TacticError('rewrite', `'${eq}' no está en hipótesis`);
207
+ }
208
+ const f = (0, types_1.parseFormula)(eqType);
209
+ if (f.kind !== 'eq') {
210
+ throw new types_1.TacticError('rewrite', `'${eq}:${eqType}' no es una igualdad`);
211
+ }
212
+ const lhsStr = (0, types_1.formulaToString)(f.left);
213
+ const rhsStr = (0, types_1.formulaToString)(f.right);
214
+ const from = dir === 'left-to-right' ? lhsStr : rhsStr;
215
+ const to = dir === 'left-to-right' ? rhsStr : lhsStr;
216
+ const newConcl = (0, types_1.substitute)(goal.concl, from, to);
217
+ if (newConcl === goal.concl) {
218
+ throw new types_1.TacticError('rewrite', `no se encontró '${from}' en la conclusión '${goal.concl}'`);
219
+ }
220
+ const newGoal = {
221
+ id: goal.id,
222
+ hyps: { ...goal.hyps },
223
+ concl: (0, types_1.normalizeFormula)(newConcl),
224
+ };
225
+ const after = withNewGoals(state, [newGoal]);
226
+ return recordHistory(state, after, 'rewrite', [eq, dir]);
227
+ };
228
+ }
229
+ // ---------- rfl ----------
230
+ // Cierra goals de la forma `a = a` (reflexividad sintáctica tras normalizar).
231
+ function rfl() {
232
+ return (state) => {
233
+ const goal = activeGoal(state, 'rfl');
234
+ const f = (0, types_1.parseFormula)(goal.concl);
235
+ if (f.kind !== 'eq') {
236
+ throw new types_1.TacticError('rfl', `goal no es una igualdad: ${goal.concl}`);
237
+ }
238
+ if ((0, types_1.formulaToString)(f.left) !== (0, types_1.formulaToString)(f.right)) {
239
+ throw new types_1.TacticError('rfl', `no es reflexiva: ${goal.concl}`);
240
+ }
241
+ const after = withNewGoals(state, []);
242
+ return recordHistory(state, after, 'rfl', []);
243
+ };
244
+ }
245
+ // ---------- trivial ----------
246
+ // Cierra goals obvios: True, o conclusión equivalente a una hipótesis True.
247
+ function trivial() {
248
+ return (state) => {
249
+ const goal = activeGoal(state, 'trivial');
250
+ const f = (0, types_1.parseFormula)(goal.concl);
251
+ if (f.kind === 'true') {
252
+ const after = withNewGoals(state, []);
253
+ return recordHistory(state, after, 'trivial', []);
254
+ }
255
+ // True ∈ hyps no cierra ningún goal, pero si hay False en hyps, ex falso:
256
+ for (const ty of Object.values(goal.hyps)) {
257
+ const hf = (0, types_1.parseFormula)(ty);
258
+ if (hf.kind === 'false') {
259
+ const after = withNewGoals(state, []);
260
+ return recordHistory(state, after, 'trivial', ['ex_falso']);
261
+ }
262
+ }
263
+ throw new types_1.TacticError('trivial', `goal '${goal.concl}' no es trivialmente cierto`);
264
+ };
265
+ }
266
+ // ---------- split ----------
267
+ // ∧-intro: goal `P /\ Q` produce dos sub-goals `P` y `Q`.
268
+ function split() {
269
+ return (state) => {
270
+ const goal = activeGoal(state, 'split');
271
+ const f = (0, types_1.parseFormula)(goal.concl);
272
+ if (f.kind !== 'and') {
273
+ throw new types_1.TacticError('split', `goal no es conjunción: ${goal.concl}`);
274
+ }
275
+ const subs = [
276
+ { id: freshGoalId(goal.id + '_L'), hyps: { ...goal.hyps }, concl: (0, types_1.formulaToString)(f.left) },
277
+ { id: freshGoalId(goal.id + '_R'), hyps: { ...goal.hyps }, concl: (0, types_1.formulaToString)(f.right) },
278
+ ];
279
+ const after = withNewGoals(state, subs);
280
+ return recordHistory(state, after, 'split', []);
281
+ };
282
+ }
283
+ // ---------- left / right ----------
284
+ // ∨-intro: goal `P \/ Q` deja sub-goal `P` (left) o `Q` (right).
285
+ function left() {
286
+ return (state) => {
287
+ const goal = activeGoal(state, 'left');
288
+ const f = (0, types_1.parseFormula)(goal.concl);
289
+ if (f.kind !== 'or') {
290
+ throw new types_1.TacticError('left', `goal no es disyunción: ${goal.concl}`);
291
+ }
292
+ const sub = { id: goal.id, hyps: { ...goal.hyps }, concl: (0, types_1.formulaToString)(f.left) };
293
+ const after = withNewGoals(state, [sub]);
294
+ return recordHistory(state, after, 'left', []);
295
+ };
296
+ }
297
+ function right() {
298
+ return (state) => {
299
+ const goal = activeGoal(state, 'right');
300
+ const f = (0, types_1.parseFormula)(goal.concl);
301
+ if (f.kind !== 'or') {
302
+ throw new types_1.TacticError('right', `goal no es disyunción: ${goal.concl}`);
303
+ }
304
+ const sub = { id: goal.id, hyps: { ...goal.hyps }, concl: (0, types_1.formulaToString)(f.right) };
305
+ const after = withNewGoals(state, [sub]);
306
+ return recordHistory(state, after, 'right', []);
307
+ };
308
+ }
309
+ // ---------- destruct ----------
310
+ // Caso por hipótesis. Para `H: P /\ Q` desglosa en dos hipótesis `H_L:P`,
311
+ // `H_R:Q` en el mismo goal. Para `H: P \/ Q` produce dos sub-goals
312
+ // (cada uno con la hipótesis correspondiente). Para `H: P -> Q` no aplica.
313
+ function destruct(name) {
314
+ return (state) => {
315
+ const goal = activeGoal(state, 'destruct');
316
+ const hypType = goal.hyps[name];
317
+ if (hypType === undefined) {
318
+ throw new types_1.TacticError('destruct', `'${name}' no está en hipótesis`);
319
+ }
320
+ const f = (0, types_1.parseFormula)(hypType);
321
+ if (f.kind === 'and') {
322
+ const next = { ...goal.hyps };
323
+ delete next[name];
324
+ next[`${name}_L`] = (0, types_1.formulaToString)(f.left);
325
+ next[`${name}_R`] = (0, types_1.formulaToString)(f.right);
326
+ const newGoal = { id: goal.id, hyps: next, concl: goal.concl };
327
+ const after = withNewGoals(state, [newGoal]);
328
+ return recordHistory(state, after, 'destruct', [name]);
329
+ }
330
+ if (f.kind === 'or') {
331
+ const baseHyps = { ...goal.hyps };
332
+ delete baseHyps[name];
333
+ const left = {
334
+ id: freshGoalId(goal.id + '_L'),
335
+ hyps: { ...baseHyps, [`${name}_L`]: (0, types_1.formulaToString)(f.left) },
336
+ concl: goal.concl,
337
+ };
338
+ const right = {
339
+ id: freshGoalId(goal.id + '_R'),
340
+ hyps: { ...baseHyps, [`${name}_R`]: (0, types_1.formulaToString)(f.right) },
341
+ concl: goal.concl,
342
+ };
343
+ const after = withNewGoals(state, [left, right]);
344
+ return recordHistory(state, after, 'destruct', [name]);
345
+ }
346
+ if (f.kind === 'false') {
347
+ const after = withNewGoals(state, []);
348
+ return recordHistory(state, after, 'destruct', [name, 'ex_falso']);
349
+ }
350
+ throw new types_1.TacticError('destruct', `'${name}:${hypType}' no es ∧, ∨, ni ⊥ — no se puede destructurar`);
351
+ };
352
+ }
353
+ // ---------- induction ----------
354
+ // Esquema mínimo sobre Nat. Para una hipótesis `n: Nat`, produce dos goals:
355
+ // zero-case: concl[n := zero]
356
+ // succ-case: hyps ∪ { IH: concl[n := k] }, concl[n := succ(k)]
357
+ // El user puede declarar otros tipos de inducción registrándolos antes,
358
+ // pero la versión base sólo cubre Nat.
359
+ function induction(name) {
360
+ return (state) => {
361
+ const goal = activeGoal(state, 'induction');
362
+ const hypType = goal.hyps[name];
363
+ if (hypType === undefined) {
364
+ throw new types_1.TacticError('induction', `'${name}' no está en hipótesis`);
365
+ }
366
+ if (hypType !== 'Nat' && hypType !== 'nat' && hypType !== 'ℕ') {
367
+ throw new types_1.TacticError('induction', `inducción soportada solo sobre Nat (recibió '${name}:${hypType}')`);
368
+ }
369
+ // hipótesis sin el nombre del inductor.
370
+ const baseHyps = { ...goal.hyps };
371
+ delete baseHyps[name];
372
+ // Reusamos `name` como el binder del caso sucesor cuando es posible
373
+ // (queda libre tras retirar la hipótesis del inductor). Esto da goals
374
+ // legibles tipo `P(succ(n))` en vez de `P(succ(n1))`.
375
+ const zeroConcl = (0, types_1.substitute)(goal.concl, name, 'zero');
376
+ const succVar = pickFreshVar(baseHyps, name);
377
+ const succConcl = (0, types_1.substitute)(goal.concl, name, `succ(${succVar})`);
378
+ const ihConcl = (0, types_1.substitute)(goal.concl, name, succVar);
379
+ const zeroGoal = {
380
+ id: freshGoalId(goal.id + '_zero'),
381
+ hyps: { ...baseHyps },
382
+ concl: (0, types_1.normalizeFormula)(zeroConcl),
383
+ };
384
+ const succGoal = {
385
+ id: freshGoalId(goal.id + '_succ'),
386
+ hyps: { ...baseHyps, [succVar]: 'Nat', IH: (0, types_1.normalizeFormula)(ihConcl) },
387
+ concl: (0, types_1.normalizeFormula)(succConcl),
388
+ };
389
+ const after = withNewGoals(state, [zeroGoal, succGoal]);
390
+ return recordHistory(state, after, 'induction', [name]);
391
+ };
392
+ }
393
+ function pickFreshVar(hyps, hint) {
394
+ if (hyps[hint] === undefined)
395
+ return hint;
396
+ let i = 1;
397
+ while (hyps[`${hint}${i}`] !== undefined)
398
+ i++;
399
+ return `${hint}${i}`;
400
+ }
401
+ // ---------- case ----------
402
+ // Alias de `destruct` con semántica explícita de "análisis por casos".
403
+ // Mantenemos el nombre `case` por afinidad con Coq pero el constructor
404
+ // JS reservado nos obliga a usar `caseAnalysis`/`caseT`. Exportamos
405
+ // como `case` desde index via re-export con alias.
406
+ function caseAnalysis(name) {
407
+ return destruct(name);
408
+ }
409
+ function unfold(def, dict = {}) {
410
+ return (state) => {
411
+ const goal = activeGoal(state, 'unfold');
412
+ const body = dict[def];
413
+ if (body === undefined) {
414
+ throw new types_1.TacticError('unfold', `definición '${def}' no registrada`);
415
+ }
416
+ const newConcl = (0, types_1.substitute)(goal.concl, def, body);
417
+ if (newConcl === goal.concl) {
418
+ throw new types_1.TacticError('unfold', `'${def}' no aparece en goal`);
419
+ }
420
+ const newGoal = {
421
+ id: goal.id,
422
+ hyps: { ...goal.hyps },
423
+ concl: (0, types_1.normalizeFormula)(newConcl),
424
+ };
425
+ const after = withNewGoals(state, [newGoal]);
426
+ return recordHistory(state, after, 'unfold', [def]);
427
+ };
428
+ }
429
+ // ---------- simp ----------
430
+ // Simplificación rudimentaria:
431
+ // True /\ X → X
432
+ // X /\ True → X
433
+ // False \/ X → X
434
+ // X \/ False → X
435
+ // ~~X → X
436
+ // Se aplica recursivamente hasta punto fijo. Si no cambia nada, falla.
437
+ function simp() {
438
+ return (state) => {
439
+ const goal = activeGoal(state, 'simp');
440
+ const original = (0, types_1.normalizeFormula)(goal.concl);
441
+ let cur = (0, types_1.parseFormula)(goal.concl);
442
+ let changed = true;
443
+ let safety = 0;
444
+ while (changed) {
445
+ changed = false;
446
+ safety++;
447
+ if (safety > 100)
448
+ break;
449
+ const before = (0, types_1.formulaToString)(cur);
450
+ cur = simpStep(cur, () => {
451
+ changed = true;
452
+ });
453
+ if ((0, types_1.formulaToString)(cur) !== before)
454
+ changed = true;
455
+ }
456
+ const next = (0, types_1.formulaToString)(cur);
457
+ if (next === original) {
458
+ throw new types_1.TacticError('simp', `nada que simplificar en '${goal.concl}'`);
459
+ }
460
+ const newGoal = { id: goal.id, hyps: { ...goal.hyps }, concl: next };
461
+ const after = withNewGoals(state, [newGoal]);
462
+ return recordHistory(state, after, 'simp', []);
463
+ };
464
+ }
465
+ function simpStep(f, mark) {
466
+ switch (f.kind) {
467
+ case 'atom':
468
+ case 'true':
469
+ case 'false':
470
+ return f;
471
+ case 'not': {
472
+ const inner = simpStep(f.body, mark);
473
+ if (inner.kind === 'not') {
474
+ mark();
475
+ return inner.body;
476
+ }
477
+ return { kind: 'not', body: inner };
478
+ }
479
+ case 'and': {
480
+ const L = simpStep(f.left, mark);
481
+ const R = simpStep(f.right, mark);
482
+ if (L.kind === 'true') {
483
+ mark();
484
+ return R;
485
+ }
486
+ if (R.kind === 'true') {
487
+ mark();
488
+ return L;
489
+ }
490
+ if (L.kind === 'false' || R.kind === 'false') {
491
+ mark();
492
+ return { kind: 'false' };
493
+ }
494
+ return { kind: 'and', left: L, right: R };
495
+ }
496
+ case 'or': {
497
+ const L = simpStep(f.left, mark);
498
+ const R = simpStep(f.right, mark);
499
+ if (L.kind === 'false') {
500
+ mark();
501
+ return R;
502
+ }
503
+ if (R.kind === 'false') {
504
+ mark();
505
+ return L;
506
+ }
507
+ if (L.kind === 'true' || R.kind === 'true') {
508
+ mark();
509
+ return { kind: 'true' };
510
+ }
511
+ return { kind: 'or', left: L, right: R };
512
+ }
513
+ case 'imp': {
514
+ const L = simpStep(f.left, mark);
515
+ const R = simpStep(f.right, mark);
516
+ if (L.kind === 'true') {
517
+ mark();
518
+ return R;
519
+ }
520
+ if (R.kind === 'true') {
521
+ mark();
522
+ return { kind: 'true' };
523
+ }
524
+ if (L.kind === 'false') {
525
+ mark();
526
+ return { kind: 'true' };
527
+ }
528
+ return { kind: 'imp', left: L, right: R };
529
+ }
530
+ case 'eq': {
531
+ // intentionally leave equality untouched: it requires semantic info.
532
+ return f;
533
+ }
534
+ }
535
+ }
536
+ //# sourceMappingURL=tactics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tactics.js","sourceRoot":"","sources":["../../src/tactic-dsl/tactics.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,54 @@
1
+ export type Formula = {
2
+ kind: 'atom';
3
+ name: string;
4
+ } | {
5
+ kind: 'true';
6
+ } | {
7
+ kind: 'false';
8
+ } | {
9
+ kind: 'not';
10
+ body: Formula;
11
+ } | {
12
+ kind: 'and';
13
+ left: Formula;
14
+ right: Formula;
15
+ } | {
16
+ kind: 'or';
17
+ left: Formula;
18
+ right: Formula;
19
+ } | {
20
+ kind: 'imp';
21
+ left: Formula;
22
+ right: Formula;
23
+ } | {
24
+ kind: 'eq';
25
+ left: Formula;
26
+ right: Formula;
27
+ };
28
+ export interface Goal {
29
+ id: string;
30
+ hyps: Record<string, string>;
31
+ concl: string;
32
+ }
33
+ export interface ProofState {
34
+ goals: Goal[];
35
+ history: TacticInvocation[];
36
+ done: boolean;
37
+ }
38
+ export interface TacticInvocation {
39
+ tactic: string;
40
+ args: unknown[];
41
+ before: ProofState;
42
+ after: ProofState;
43
+ }
44
+ export type Tactic = (state: ProofState) => ProofState;
45
+ export declare class TacticError extends Error {
46
+ tactic: string;
47
+ constructor(tactic: string, message: string);
48
+ }
49
+ export declare function parseFormula(src: string): Formula;
50
+ export declare function formulaToString(f: Formula): string;
51
+ export declare function normalizeFormula(src: string): string;
52
+ export declare function formulaEq(a: string, b: string): boolean;
53
+ export declare function substitute(target: string, lhs: string, rhs: string): string;
54
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/tactic-dsl/types.ts"],"names":[],"mappings":"AAqBA,MAAM,MAAM,OAAO,GACf;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC9B;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAChB;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,GACjB;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,OAAO,CAAA;CAAE,GAC9B;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,GAC9C;IAAE,IAAI,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,GAC7C;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,GAC9C;IAAE,IAAI,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,CAAC;AAElD,MAAM,WAAW,IAAI;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,OAAO,EAAE,gBAAgB,EAAE,CAAC;IAC5B,IAAI,EAAE,OAAO,CAAC;CACf;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,OAAO,EAAE,CAAC;IAChB,MAAM,EAAE,UAAU,CAAC;IACnB,KAAK,EAAE,UAAU,CAAC;CACnB;AAED,MAAM,MAAM,MAAM,GAAG,CAAC,KAAK,EAAE,UAAU,KAAK,UAAU,CAAC;AAEvD,qBAAa,WAAY,SAAQ,KAAK;IAE3B,MAAM,EAAE,MAAM;gBAAd,MAAM,EAAE,MAAM,EACrB,OAAO,EAAE,MAAM;CAKlB;AAyID,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAQjD;AAOD,wBAAgB,eAAe,CAAC,CAAC,EAAE,OAAO,GAAG,MAAM,CAmBlD;AAID,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAMpD;AAED,wBAAgB,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAEvD;AASD,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAS3E"}