@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,41 @@
1
+ "use strict";
2
+ // ============================================================
3
+ // Property: MLN — hard constraints fuerzan -∞ en mundos violadores
4
+ // ============================================================
5
+ //
6
+ // ∀ MLN con peso Infinity en una fórmula F:
7
+ // ∀ world tal que F NO se satisface ⇒ weight(world) === -Infinity.
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ const vitest_1 = require("vitest");
10
+ const generators_1 = require("./generators");
11
+ const markov_logic_1 = require("../../runtime/markov-logic");
12
+ (0, vitest_1.describe)('property: MLN hard constraints', () => {
13
+ (0, vitest_1.it)('hard constraint violated ⇒ weight = -∞', () => {
14
+ generators_1.fc.assert(generators_1.fc.property(generators_1.fc.boolean(), generators_1.fc.boolean(), (alicePred, bobPred) => {
15
+ // Hard constraint: ∀x. Friends(x, x) — todos amigos de sí mismos.
16
+ const theory = {
17
+ formulas: [
18
+ { formula: 'Friends(x, x)', weight: Infinity },
19
+ ],
20
+ constants: { Person: ['Alice', 'Bob'] },
21
+ predicates: [{ name: 'Friends', types: ['Person', 'Person'] }],
22
+ };
23
+ const world = {
24
+ groundAtoms: {
25
+ 'Friends(Alice,Alice)': alicePred,
26
+ 'Friends(Bob,Bob)': bobPred,
27
+ },
28
+ };
29
+ const w = (0, markov_logic_1.weight)(theory, world);
30
+ const violated = !alicePred || !bobPred;
31
+ if (violated && Number.isFinite(w)) {
32
+ throw new Error(`World viola hard pero weight finita: alicePred=${alicePred}, bobPred=${bobPred}, w=${w}`);
33
+ }
34
+ if (!violated && !Number.isFinite(w) && w === Number.NEGATIVE_INFINITY) {
35
+ throw new Error(`World no viola hard pero weight = -∞`);
36
+ }
37
+ return true;
38
+ }), { numRuns: 100 });
39
+ });
40
+ });
41
+ //# sourceMappingURL=mln.property.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mln.property.test.js","sourceRoot":"","sources":["../../../src/tests/properties/mln.property.test.ts"],"names":[],"mappings":";AAAA,+DAA+D;AAC/D,mEAAmE;AACnE,+DAA+D;AAC/D,EAAE;AACF,4CAA4C;AAC5C,qEAAqE;;AAErE,mCAAsC;AACtC,6CAAkC;AAClC,6DAAoD;AAGpD,IAAA,iBAAQ,EAAC,gCAAgC,EAAE,GAAG,EAAE;IAC9C,IAAA,WAAE,EAAC,wCAAwC,EAAE,GAAG,EAAE;QAChD,eAAE,CAAC,MAAM,CACP,eAAE,CAAC,QAAQ,CAAC,eAAE,CAAC,OAAO,EAAE,EAAE,eAAE,CAAC,OAAO,EAAE,EAAE,CAAC,SAAS,EAAE,OAAO,EAAE,EAAE;YAC7D,kEAAkE;YAClE,MAAM,MAAM,GAAc;gBACxB,QAAQ,EAAE;oBACR,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,QAAQ,EAAE;iBAC/C;gBACD,SAAS,EAAE,EAAE,MAAM,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE;gBACvC,UAAU,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,CAAC;aAC/D,CAAC;YACF,MAAM,KAAK,GAAa;gBACtB,WAAW,EAAE;oBACX,sBAAsB,EAAE,SAAS;oBACjC,kBAAkB,EAAE,OAAO;iBAC5B;aACF,CAAC;YACF,MAAM,CAAC,GAAG,IAAA,qBAAM,EAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YAChC,MAAM,QAAQ,GAAG,CAAC,SAAS,IAAI,CAAC,OAAO,CAAC;YACxC,IAAI,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;gBACnC,MAAM,IAAI,KAAK,CACb,kDAAkD,SAAS,aAAa,OAAO,OAAO,CAAC,EAAE,CAC1F,CAAC;YACJ,CAAC;YACD,IAAI,CAAC,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC,iBAAiB,EAAE,CAAC;gBACvE,MAAM,IAAI,KAAK,CACb,sCAAsC,CACvC,CAAC;YACJ,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC,CAAC,EACF,EAAE,OAAO,EAAE,GAAG,EAAE,CACjB,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=mltt.property.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mltt.property.test.d.ts","sourceRoot":"","sources":["../../../src/tests/properties/mltt.property.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ // ============================================================
3
+ // Property: MLTT — normalize preserva tipo en términos bien-tipados
4
+ // ============================================================
5
+ //
6
+ // ∀ MLTTTerm t bien-tipado: inferType(normalize(t)) =β inferType(t).
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ const vitest_1 = require("vitest");
9
+ const generators_1 = require("./generators");
10
+ const mltt_1 = require("../../mltt");
11
+ const normalize_1 = require("../../mltt/normalize");
12
+ const equality_1 = require("../../mltt/equality");
13
+ (0, vitest_1.describe)('property: MLTT normalize preserves type', () => {
14
+ (0, vitest_1.it)('inferType(normalize(t)) ≡ inferType(t) for well-typed terms', () => {
15
+ generators_1.fc.assert(generators_1.fc.property((0, generators_1.mlttSimpleTerm)(), (t) => {
16
+ const tInf = (0, mltt_1.inferType)(t);
17
+ if ((0, mltt_1.isInferError)(tInf)) {
18
+ // El generador produce sólo well-typed; si dispara, es regresión.
19
+ throw new Error(`Término well-typed reportado como error: ${JSON.stringify(t)}, error=${tInf.error}`);
20
+ }
21
+ const normT = (0, normalize_1.normalize)(t);
22
+ const tInf2 = (0, mltt_1.inferType)(normT);
23
+ if ((0, mltt_1.isInferError)(tInf2)) {
24
+ throw new Error(`Normalize rompió well-typedness: t=${JSON.stringify(t)}, normT=${JSON.stringify(normT)}, error=${tInf2.error}`);
25
+ }
26
+ if (!(0, equality_1.alphaBetaEq)(tInf, tInf2)) {
27
+ throw new Error(`Tipo no preservado: t=${JSON.stringify(t)}, tipo1=${JSON.stringify(tInf)}, tipo2=${JSON.stringify(tInf2)}`);
28
+ }
29
+ return true;
30
+ }), { numRuns: 100 });
31
+ });
32
+ });
33
+ //# sourceMappingURL=mltt.property.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mltt.property.test.js","sourceRoot":"","sources":["../../../src/tests/properties/mltt.property.test.ts"],"names":[],"mappings":";AAAA,+DAA+D;AAC/D,oEAAoE;AACpE,+DAA+D;AAC/D,EAAE;AACF,qEAAqE;;AAErE,mCAAsC;AACtC,6CAAkD;AAClD,qCAAqD;AACrD,oDAAkE;AAClE,kDAAkD;AAElD,IAAA,iBAAQ,EAAC,yCAAyC,EAAE,GAAG,EAAE;IACvD,IAAA,WAAE,EAAC,6DAA6D,EAAE,GAAG,EAAE;QACrE,eAAE,CAAC,MAAM,CACP,eAAE,CAAC,QAAQ,CAAC,IAAA,2BAAc,GAAE,EAAE,CAAC,CAAC,EAAE,EAAE;YAClC,MAAM,IAAI,GAAG,IAAA,gBAAS,EAAC,CAAC,CAAC,CAAC;YAC1B,IAAI,IAAA,mBAAY,EAAC,IAAI,CAAC,EAAE,CAAC;gBACvB,kEAAkE;gBAClE,MAAM,IAAI,KAAK,CACb,4CAA4C,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,IAAI,CAAC,KAAK,EAAE,CACrF,CAAC;YACJ,CAAC;YACD,MAAM,KAAK,GAAG,IAAA,qBAAa,EAAC,CAAC,CAAC,CAAC;YAC/B,MAAM,KAAK,GAAG,IAAA,gBAAS,EAAC,KAAK,CAAC,CAAC;YAC/B,IAAI,IAAA,mBAAY,EAAC,KAAK,CAAC,EAAE,CAAC;gBACxB,MAAM,IAAI,KAAK,CACb,sCAAsC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,WAAW,KAAK,CAAC,KAAK,EAAE,CAChH,CAAC;YACJ,CAAC;YACD,IAAI,CAAC,IAAA,sBAAW,EAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC;gBAC9B,MAAM,IAAI,KAAK,CACb,yBAAyB,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAC5G,CAAC;YACJ,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC,CAAC,EACF,EAAE,OAAO,EAAE,GAAG,EAAE,CACjB,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=nbe.property.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nbe.property.test.d.ts","sourceRoot":"","sources":["../../../src/tests/properties/nbe.property.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ // ============================================================
3
+ // Property: NbE — idempotencia
4
+ // ============================================================
5
+ //
6
+ // ∀ Term t bien-tipado: normalize(normalize(t)) ≡ normalize(t)
7
+ // (idempotencia de la normalización por evaluación + reificación).
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ const vitest_1 = require("vitest");
10
+ const generators_1 = require("./generators");
11
+ const nbe_1 = require("../../nbe");
12
+ // Generador de términos NbE bien-tipados pequeños:
13
+ // usamos tipo (A → A) → A → A — el tipo de Church numerals.
14
+ const TA = (0, nbe_1.tBase)('A');
15
+ const TAA = (0, nbe_1.tArr)(TA, TA);
16
+ const TChurch = (0, nbe_1.tArr)(TAA, TAA);
17
+ // Generamos Church numerals + variantes con η-redex.
18
+ function churchNumeral(n) {
19
+ // λf:A→A. λx:A. f (f (... f x))
20
+ let body = (0, nbe_1.v)('x');
21
+ for (let i = 0; i < n; i++)
22
+ body = (0, nbe_1.ap)((0, nbe_1.v)('f'), body);
23
+ return (0, nbe_1.lam)('f', TAA, (0, nbe_1.lam)('x', TA, body));
24
+ }
25
+ const churchArb = generators_1.fc
26
+ .integer({ min: 0, max: 5 })
27
+ .map((n) => churchNumeral(n));
28
+ // También algunos con η-redex artificial: λf. λx. (λg. f g) x — debería
29
+ // normalizar a Church 1.
30
+ const etaRedexArb = generators_1.fc.constant((0, nbe_1.lam)('f', TAA, (0, nbe_1.lam)('x', TA, (0, nbe_1.ap)((0, nbe_1.lam)('g', TAA, (0, nbe_1.ap)((0, nbe_1.v)('f'), (0, nbe_1.v)('g'))), (0, nbe_1.v)('x')))));
31
+ const termArb = generators_1.fc.oneof(churchArb, etaRedexArb);
32
+ (0, vitest_1.describe)('property: NbE normalize is idempotent', () => {
33
+ (0, vitest_1.it)('normalize(normalize(t)) ≡ normalize(t) α', () => {
34
+ generators_1.fc.assert(generators_1.fc.property(termArb, (t) => {
35
+ const n1 = (0, nbe_1.normalize)(t, TChurch);
36
+ const n2 = (0, nbe_1.normalize)(n1, TChurch);
37
+ if (!(0, nbe_1.alphaEq)(n1, n2)) {
38
+ throw new Error(`NbE no idempotente: t=${JSON.stringify(t)}, n1=${JSON.stringify(n1)}, n2=${JSON.stringify(n2)}`);
39
+ }
40
+ return true;
41
+ }), { numRuns: 100 });
42
+ });
43
+ });
44
+ //# sourceMappingURL=nbe.property.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nbe.property.test.js","sourceRoot":"","sources":["../../../src/tests/properties/nbe.property.test.ts"],"names":[],"mappings":";AAAA,+DAA+D;AAC/D,+BAA+B;AAC/B,+DAA+D;AAC/D,EAAE;AACF,+DAA+D;AAC/D,mEAAmE;;AAEnE,mCAAsC;AACtC,6CAAkC;AAClC,mCAAwE;AAGxE,mDAAmD;AACnD,4DAA4D;AAC5D,MAAM,EAAE,GAAY,IAAA,WAAK,EAAC,GAAG,CAAC,CAAC;AAC/B,MAAM,GAAG,GAAY,IAAA,UAAI,EAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AAClC,MAAM,OAAO,GAAY,IAAA,UAAI,EAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAExC,qDAAqD;AACrD,SAAS,aAAa,CAAC,CAAS;IAC9B,gCAAgC;IAChC,IAAI,IAAI,GAAY,IAAA,OAAC,EAAC,GAAG,CAAC,CAAC;IAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;QAAE,IAAI,GAAG,IAAA,QAAE,EAAC,IAAA,OAAC,EAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;IACpD,OAAO,IAAA,SAAG,EAAC,GAAG,EAAE,GAAG,EAAE,IAAA,SAAG,EAAC,GAAG,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC;AAC3C,CAAC;AAED,MAAM,SAAS,GAA0B,eAAE;KACxC,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;KAC3B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;AAEhC,wEAAwE;AACxE,yBAAyB;AACzB,MAAM,WAAW,GAA0B,eAAE,CAAC,QAAQ,CACpD,IAAA,SAAG,EAAC,GAAG,EAAE,GAAG,EAAE,IAAA,SAAG,EAAC,GAAG,EAAE,EAAE,EAAE,IAAA,QAAE,EAAC,IAAA,SAAG,EAAC,GAAG,EAAE,GAAG,EAAE,IAAA,QAAE,EAAC,IAAA,OAAC,EAAC,GAAG,CAAC,EAAE,IAAA,OAAC,EAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAA,OAAC,EAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAC3E,CAAC;AAEF,MAAM,OAAO,GAAG,eAAE,CAAC,KAAK,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;AAEjD,IAAA,iBAAQ,EAAC,uCAAuC,EAAE,GAAG,EAAE;IACrD,IAAA,WAAE,EAAC,0CAA0C,EAAE,GAAG,EAAE;QAClD,eAAE,CAAC,MAAM,CACP,eAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE;YACzB,MAAM,EAAE,GAAG,IAAA,eAAS,EAAC,CAAC,EAAE,OAAO,CAAC,CAAC;YACjC,MAAM,EAAE,GAAG,IAAA,eAAS,EAAC,EAAE,EAAE,OAAO,CAAC,CAAC;YAClC,IAAI,CAAC,IAAA,aAAO,EAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;gBACrB,MAAM,IAAI,KAAK,CACb,yBAAyB,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,QAAQ,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,CACjG,CAAC;YACJ,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC,CAAC,EACF,EAAE,OAAO,EAAE,GAAG,EAAE,CACjB,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=planning.property.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"planning.property.test.d.ts","sourceRoot":"","sources":["../../../src/tests/properties/planning.property.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ // ============================================================
3
+ // Property: STRIPS planning — applyAll(plan, S₀) satisface goal
4
+ // ============================================================
5
+ //
6
+ // ∀ instancia STRIPS pequeña donde bfsPlan retorna un plan:
7
+ // aplicar el plan al estado inicial produce un estado que satisface
8
+ // el goal.
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ const vitest_1 = require("vitest");
11
+ const generators_1 = require("./generators");
12
+ const planning_1 = require("../../runtime/planning");
13
+ // Generador de un problema mini estilo blocksworld 1D:
14
+ // objetos a..b en posiciones discretas; acción move(?x, ?y).
15
+ const problemArb = generators_1.fc
16
+ .tuple(generators_1.fc.constantFrom('p1', 'p2', 'p3'), generators_1.fc.constantFrom('p1', 'p2', 'p3'))
17
+ .filter(([s, g]) => s !== g)
18
+ .map(([start, goal]) => ({
19
+ predicates: ['at'],
20
+ objects: { Pos: ['p1', 'p2', 'p3'] },
21
+ actions: [
22
+ {
23
+ name: 'move',
24
+ parameters: ['?from', '?to'],
25
+ preconditions: ['at(?from)'],
26
+ addList: ['at(?to)'],
27
+ delList: ['at(?from)'],
28
+ },
29
+ ],
30
+ initialState: new Set([`at(${start})`]),
31
+ goal: new Set([`at(${goal})`]),
32
+ }));
33
+ (0, vitest_1.describe)('property: STRIPS plan is correct', () => {
34
+ (0, vitest_1.it)('applyAll(plan, initial) satisfies goal', () => {
35
+ generators_1.fc.assert(generators_1.fc.property(problemArb, (problem) => {
36
+ const plan = (0, planning_1.bfsPlan)(problem, { maxDepth: 10, maxNodes: 1000 });
37
+ if (plan === null)
38
+ return true; // skip — no se encontró plan
39
+ let state = new Set(problem.initialState);
40
+ for (const step of plan.actions) {
41
+ const g = (0, planning_1.ground)(step.action, step.bindings);
42
+ state = (0, planning_1.applyAction)(state, g);
43
+ }
44
+ if (!(0, planning_1.goalSatisfied)(state, problem.goal)) {
45
+ throw new Error(`Plan no satisface goal: plan=${JSON.stringify(plan.actions)}, finalState=${[...state].join(',')}, goal=${[...problem.goal].join(',')}`);
46
+ }
47
+ return true;
48
+ }), { numRuns: 100 });
49
+ });
50
+ });
51
+ //# sourceMappingURL=planning.property.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"planning.property.test.js","sourceRoot":"","sources":["../../../src/tests/properties/planning.property.test.ts"],"names":[],"mappings":";AAAA,+DAA+D;AAC/D,gEAAgE;AAChE,+DAA+D;AAC/D,EAAE;AACF,4DAA4D;AAC5D,sEAAsE;AACtE,aAAa;;AAEb,mCAAsC;AACtC,6CAAkC;AAClC,qDAAqF;AAGrF,uDAAuD;AACvD,6DAA6D;AAC7D,MAAM,UAAU,GAAgC,eAAE;KAC/C,KAAK,CACJ,eAAE,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EACjC,eAAE,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAClC;KACA,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;KAC3B,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;IACvB,UAAU,EAAE,CAAC,IAAI,CAAC;IAClB,OAAO,EAAE,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE;IACpC,OAAO,EAAE;QACP;YACE,IAAI,EAAE,MAAM;YACZ,UAAU,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC;YAC5B,aAAa,EAAE,CAAC,WAAW,CAAC;YAC5B,OAAO,EAAE,CAAC,SAAS,CAAC;YACpB,OAAO,EAAE,CAAC,WAAW,CAAC;SACvB;KACF;IACD,YAAY,EAAE,IAAI,GAAG,CAAO,CAAC,MAAM,KAAK,GAAG,CAAC,CAAC;IAC7C,IAAI,EAAE,IAAI,GAAG,CAAO,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC;CACrC,CAAC,CAAC,CAAC;AAEN,IAAA,iBAAQ,EAAC,kCAAkC,EAAE,GAAG,EAAE;IAChD,IAAA,WAAE,EAAC,wCAAwC,EAAE,GAAG,EAAE;QAChD,eAAE,CAAC,MAAM,CACP,eAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC,OAAO,EAAE,EAAE;YAClC,MAAM,IAAI,GAAG,IAAA,kBAAO,EAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;YAChE,IAAI,IAAI,KAAK,IAAI;gBAAE,OAAO,IAAI,CAAC,CAAC,6BAA6B;YAC7D,IAAI,KAAK,GAAG,IAAI,GAAG,CAAO,OAAO,CAAC,YAAY,CAAC,CAAC;YAChD,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBAChC,MAAM,CAAC,GAAG,IAAA,iBAAM,EAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAC7C,KAAK,GAAG,IAAA,sBAAW,EAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YAChC,CAAC;YACD,IAAI,CAAC,IAAA,wBAAa,EAAC,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;gBACxC,MAAM,IAAI,KAAK,CACb,gCAAgC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CACxI,CAAC;YACJ,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC,CAAC,EACF,EAAE,OAAO,EAAE,GAAG,EAAE,CACjB,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=profile-bridge.property.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"profile-bridge.property.test.d.ts","sourceRoot":"","sources":["../../../src/tests/properties/profile-bridge.property.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,71 @@
1
+ "use strict";
2
+ // ============================================================
3
+ // Property: Profile Bridge — Glivenko: classical-valid ⇒ intuit-valid
4
+ // ============================================================
5
+ //
6
+ // Teorema de Glivenko (proposicional): φ es clásicamente válida sii
7
+ // ¬¬φ es intuicionísticamente válida.
8
+ //
9
+ // Acá testeamos la dirección "fácil" del bridge:
10
+ // ∀ φ propositional tal que classical-provable(φ) =true:
11
+ // intuit-provable(glivenkoTranslation(φ)) = true.
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ const vitest_1 = require("vitest");
14
+ const generators_1 = require("./generators");
15
+ const sequent_g3_1 = require("../../profiles/sequent-g3");
16
+ const profile_bridge_1 = require("../../profile-bridge");
17
+ const intuitionistic_nj_1 = require("../../profiles/intuitionistic-nj");
18
+ // Convierte Formula (clásico) a IntuitFormula.
19
+ function classicalToIntuit(phi) {
20
+ switch (phi.kind) {
21
+ case 'atom':
22
+ return { kind: 'atom', name: phi.name ?? 'p' };
23
+ case 'and':
24
+ return {
25
+ kind: 'and',
26
+ left: classicalToIntuit(phi.args[0]),
27
+ right: classicalToIntuit(phi.args[1]),
28
+ };
29
+ case 'or':
30
+ return {
31
+ kind: 'or',
32
+ left: classicalToIntuit(phi.args[0]),
33
+ right: classicalToIntuit(phi.args[1]),
34
+ };
35
+ case 'implies':
36
+ return {
37
+ kind: 'implies',
38
+ left: classicalToIntuit(phi.args[0]),
39
+ right: classicalToIntuit(phi.args[1]),
40
+ };
41
+ case 'not':
42
+ return { kind: 'not', arg: classicalToIntuit(phi.args[0]) };
43
+ case 'true':
44
+ // En IntuitFormula no hay 'true' directo; usamos ⊥→⊥.
45
+ return { kind: 'implies', left: { kind: 'bottom' }, right: { kind: 'bottom' } };
46
+ case 'false':
47
+ return { kind: 'bottom' };
48
+ default:
49
+ // Default: tratarlo como atom opaco (no debería pasar con propFormula).
50
+ return { kind: 'atom', name: 'p' };
51
+ }
52
+ }
53
+ (0, vitest_1.describe)('property: Glivenko — classical-valid ⇒ intuit-valid via ¬¬', () => {
54
+ (0, vitest_1.it)('classical-provable(φ) ⇒ intuit-provable(¬¬φ)', () => {
55
+ generators_1.fc.assert(generators_1.fc.property((0, generators_1.propFormula)(2), (phi) => {
56
+ const classicalR = (0, sequent_g3_1.proveFormula)(phi, { budget: 5000 });
57
+ if (!classicalR.provable)
58
+ return true; // skip — no es teorema clásico
59
+ // Aplicar Glivenko: la traducción devuelve un Formula clásico
60
+ // pero con la forma de ¬¬φ; lo pasamos al perfil intuit.
61
+ const translated = (0, profile_bridge_1.glivenkoTranslation)(phi);
62
+ const intuitGoal = classicalToIntuit(translated);
63
+ const intuitR = (0, intuitionistic_nj_1.proveIntuitionistically)([], intuitGoal, { budget: 8000 });
64
+ if (intuitR === null) {
65
+ throw new Error(`Classical-provable pero intuit-NO-provable Glivenko: phi=${JSON.stringify(phi)}, intuitGoal=${JSON.stringify(intuitGoal)}`);
66
+ }
67
+ return true;
68
+ }), { numRuns: 100 });
69
+ });
70
+ });
71
+ //# sourceMappingURL=profile-bridge.property.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"profile-bridge.property.test.js","sourceRoot":"","sources":["../../../src/tests/properties/profile-bridge.property.test.ts"],"names":[],"mappings":";AAAA,+DAA+D;AAC/D,sEAAsE;AACtE,+DAA+D;AAC/D,EAAE;AACF,oEAAoE;AACpE,sCAAsC;AACtC,EAAE;AACF,iDAAiD;AACjD,2DAA2D;AAC3D,sDAAsD;;AAEtD,mCAAsC;AACtC,6CAA+C;AAC/C,0DAA2E;AAC3E,yDAA2D;AAC3D,wEAA2E;AAI3E,+CAA+C;AAC/C,SAAS,iBAAiB,CAAC,GAAY;IACrC,QAAQ,GAAG,CAAC,IAAI,EAAE,CAAC;QACjB,KAAK,MAAM;YACT,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,GAAG,EAAE,CAAC;QACjD,KAAK,KAAK;YACR,OAAO;gBACL,IAAI,EAAE,KAAK;gBACX,IAAI,EAAE,iBAAiB,CAAC,GAAG,CAAC,IAAK,CAAC,CAAC,CAAE,CAAC;gBACtC,KAAK,EAAE,iBAAiB,CAAC,GAAG,CAAC,IAAK,CAAC,CAAC,CAAE,CAAC;aACxC,CAAC;QACJ,KAAK,IAAI;YACP,OAAO;gBACL,IAAI,EAAE,IAAI;gBACV,IAAI,EAAE,iBAAiB,CAAC,GAAG,CAAC,IAAK,CAAC,CAAC,CAAE,CAAC;gBACtC,KAAK,EAAE,iBAAiB,CAAC,GAAG,CAAC,IAAK,CAAC,CAAC,CAAE,CAAC;aACxC,CAAC;QACJ,KAAK,SAAS;YACZ,OAAO;gBACL,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,iBAAiB,CAAC,GAAG,CAAC,IAAK,CAAC,CAAC,CAAE,CAAC;gBACtC,KAAK,EAAE,iBAAiB,CAAC,GAAG,CAAC,IAAK,CAAC,CAAC,CAAE,CAAC;aACxC,CAAC;QACJ,KAAK,KAAK;YACR,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,iBAAiB,CAAC,GAAG,CAAC,IAAK,CAAC,CAAC,CAAE,CAAC,EAAE,CAAC;QAChE,KAAK,MAAM;YACT,sDAAsD;YACtD,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,CAAC;QAClF,KAAK,OAAO;YACV,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;QAC5B;YACE,wEAAwE;YACxE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;IACvC,CAAC;AACH,CAAC;AAED,IAAA,iBAAQ,EAAC,4DAA4D,EAAE,GAAG,EAAE;IAC1E,IAAA,WAAE,EAAC,8CAA8C,EAAE,GAAG,EAAE;QACtD,eAAE,CAAC,MAAM,CACP,eAAE,CAAC,QAAQ,CAAC,IAAA,wBAAW,EAAC,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE;YAClC,MAAM,UAAU,GAAG,IAAA,yBAAc,EAAC,GAAG,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;YACzD,IAAI,CAAC,UAAU,CAAC,QAAQ;gBAAE,OAAO,IAAI,CAAC,CAAC,+BAA+B;YACtE,8DAA8D;YAC9D,yDAAyD;YACzD,MAAM,UAAU,GAAG,IAAA,oCAAmB,EAAC,GAAG,CAAC,CAAC;YAC5C,MAAM,UAAU,GAAG,iBAAiB,CAAC,UAAU,CAAC,CAAC;YACjD,MAAM,OAAO,GAAG,IAAA,2CAAuB,EAAC,EAAE,EAAE,UAAU,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;YAC1E,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;gBACrB,MAAM,IAAI,KAAK,CACb,4DAA4D,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,gBAAgB,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,CAC5H,CAAC;YACJ,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC,CAAC,EACF,EAAE,OAAO,EAAE,GAAG,EAAE,CACjB,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=refinement-types.property.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"refinement-types.property.test.d.ts","sourceRoot":"","sources":["../../../src/tests/properties/refinement-types.property.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ // ============================================================
3
+ // Property: Refinement types — subtipado transitivo
4
+ // ============================================================
5
+ //
6
+ // ∀ t1, t2, t3 RefType:
7
+ // isSubtype(t1, t2) ∧ isSubtype(t2, t3) ⇒ isSubtype(t1, t3).
8
+ //
9
+ // Foco: tipos Int con refinamientos lineales simples.
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ const vitest_1 = require("vitest");
12
+ const generators_1 = require("./generators");
13
+ const refinement_types_1 = require("../../refinement-types");
14
+ (0, vitest_1.describe)('property: refinement-types subtype transitivity', () => {
15
+ (0, vitest_1.it)('t1 <: t2 ∧ t2 <: t3 ⇒ t1 <: t3', () => {
16
+ generators_1.fc.assert(generators_1.fc.property((0, generators_1.refTypeIntSimple)(), (0, generators_1.refTypeIntSimple)(), (0, generators_1.refTypeIntSimple)(), (t1, t2, t3) => {
17
+ const ab = (0, refinement_types_1.isSubtype)(t1, t2);
18
+ const bc = (0, refinement_types_1.isSubtype)(t2, t3);
19
+ if (!ab || !bc)
20
+ return true;
21
+ const ac = (0, refinement_types_1.isSubtype)(t1, t3);
22
+ if (!ac) {
23
+ throw new Error(`transitividad violada: t1=${t1.predicate}, t2=${t2.predicate}, t3=${t3.predicate}`);
24
+ }
25
+ return true;
26
+ }), { numRuns: 200 });
27
+ });
28
+ (0, vitest_1.it)('reflexividad: t <: t para todo t', () => {
29
+ generators_1.fc.assert(generators_1.fc.property((0, generators_1.refTypeIntSimple)(), (t) => {
30
+ if (!(0, refinement_types_1.isSubtype)(t, t)) {
31
+ throw new Error(`t <: t falló para predicate="${t.predicate}"`);
32
+ }
33
+ return true;
34
+ }), { numRuns: 100 });
35
+ });
36
+ });
37
+ //# sourceMappingURL=refinement-types.property.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"refinement-types.property.test.js","sourceRoot":"","sources":["../../../src/tests/properties/refinement-types.property.test.ts"],"names":[],"mappings":";AAAA,+DAA+D;AAC/D,oDAAoD;AACpD,+DAA+D;AAC/D,EAAE;AACF,wBAAwB;AACxB,+DAA+D;AAC/D,EAAE;AACF,sDAAsD;;AAEtD,mCAAsC;AACtC,6CAAoD;AACpD,6DAAmD;AAEnD,IAAA,iBAAQ,EAAC,iDAAiD,EAAE,GAAG,EAAE;IAC/D,IAAA,WAAE,EAAC,gCAAgC,EAAE,GAAG,EAAE;QACxC,eAAE,CAAC,MAAM,CACP,eAAE,CAAC,QAAQ,CAAC,IAAA,6BAAgB,GAAE,EAAE,IAAA,6BAAgB,GAAE,EAAE,IAAA,6BAAgB,GAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;YACrF,MAAM,EAAE,GAAG,IAAA,4BAAS,EAAC,EAAE,EAAE,EAAE,CAAC,CAAC;YAC7B,MAAM,EAAE,GAAG,IAAA,4BAAS,EAAC,EAAE,EAAE,EAAE,CAAC,CAAC;YAC7B,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE;gBAAE,OAAO,IAAI,CAAC;YAC5B,MAAM,EAAE,GAAG,IAAA,4BAAS,EAAC,EAAE,EAAE,EAAE,CAAC,CAAC;YAC7B,IAAI,CAAC,EAAE,EAAE,CAAC;gBACR,MAAM,IAAI,KAAK,CACb,6BAA6B,EAAE,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,EAAE,CACpF,CAAC;YACJ,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC,CAAC,EACF,EAAE,OAAO,EAAE,GAAG,EAAE,CACjB,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,kCAAkC,EAAE,GAAG,EAAE;QAC1C,eAAE,CAAC,MAAM,CACP,eAAE,CAAC,QAAQ,CAAC,IAAA,6BAAgB,GAAE,EAAE,CAAC,CAAC,EAAE,EAAE;YACpC,IAAI,CAAC,IAAA,4BAAS,EAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;gBACrB,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC;YAClE,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC,CAAC,EACF,EAAE,OAAO,EAAE,GAAG,EAAE,CACjB,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=sequent-g3.property.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sequent-g3.property.test.d.ts","sourceRoot":"","sources":["../../../src/tests/properties/sequent-g3.property.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ // ============================================================
3
+ // Property: Sequent G3 — tautologías detectadas tienen proof válido
4
+ // ============================================================
5
+ //
6
+ // ∀ Formula φ tal que proveFormula(φ) reporta provable=true:
7
+ // - existe un proof tree.
8
+ // - el proof tree tiene goal cuyo lado derecho contiene φ.
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ const vitest_1 = require("vitest");
11
+ const generators_1 = require("./generators");
12
+ const sequent_g3_1 = require("../../profiles/sequent-g3");
13
+ function isClosed(tree) {
14
+ if (!tree.closed)
15
+ return false;
16
+ return (tree.premises ?? []).every(isClosed);
17
+ }
18
+ (0, vitest_1.describe)('property: Sequent G3 — provable formulas have closed proofs', () => {
19
+ (0, vitest_1.it)('provable=true ⇒ proof tree exists and is closed', () => {
20
+ generators_1.fc.assert(generators_1.fc.property((0, generators_1.propFormula)(3), (phi) => {
21
+ const r = (0, sequent_g3_1.proveFormula)(phi, { budget: 5000 });
22
+ if (!r.provable)
23
+ return true; // skip — no es teorema
24
+ if (!r.proof) {
25
+ throw new Error(`provable=true pero proof undefined`);
26
+ }
27
+ if (!isClosed(r.proof)) {
28
+ throw new Error(`proof tree no está cerrado`);
29
+ }
30
+ return true;
31
+ }), { numRuns: 200 });
32
+ });
33
+ });
34
+ //# sourceMappingURL=sequent-g3.property.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sequent-g3.property.test.js","sourceRoot":"","sources":["../../../src/tests/properties/sequent-g3.property.test.ts"],"names":[],"mappings":";AAAA,+DAA+D;AAC/D,oEAAoE;AACpE,+DAA+D;AAC/D,EAAE;AACF,6DAA6D;AAC7D,4BAA4B;AAC5B,6DAA6D;;AAE7D,mCAAsC;AACtC,6CAA+C;AAC/C,0DAAyD;AAGzD,SAAS,QAAQ,CAAC,IAAe;IAC/B,IAAI,CAAC,IAAI,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IAC/B,OAAO,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;AAC/C,CAAC;AAED,IAAA,iBAAQ,EAAC,6DAA6D,EAAE,GAAG,EAAE;IAC3E,IAAA,WAAE,EAAC,iDAAiD,EAAE,GAAG,EAAE;QACzD,eAAE,CAAC,MAAM,CACP,eAAE,CAAC,QAAQ,CAAC,IAAA,wBAAW,EAAC,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE;YAClC,MAAM,CAAC,GAAG,IAAA,yBAAY,EAAC,GAAG,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;YAC9C,IAAI,CAAC,CAAC,CAAC,QAAQ;gBAAE,OAAO,IAAI,CAAC,CAAC,uBAAuB;YACrD,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;gBACb,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;YACxD,CAAC;YACD,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;gBACvB,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;YAChD,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC,CAAC,EACF,EAAE,OAAO,EAAE,GAAG,EAAE,CACjB,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=symbolic-diff.property.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"symbolic-diff.property.test.d.ts","sourceRoot":"","sources":["../../../src/tests/properties/symbolic-diff.property.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+ // ============================================================
3
+ // Property: Symbolic diff — coincide con derivada numérica
4
+ // ============================================================
5
+ //
6
+ // ∀ Expr e (polinomio random), ∀ x₀ random:
7
+ // evaluate(differentiate(e, "x"), x₀) ≈ (e(x₀+h) - e(x₀-h)) / (2h)
8
+ // con h pequeño. Cota laxa para tolerar errores numéricos.
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ const vitest_1 = require("vitest");
11
+ const generators_1 = require("./generators");
12
+ const symbolic_diff_1 = require("../../runtime/symbolic-diff");
13
+ function evalSafe(e, env) {
14
+ try {
15
+ const v = (0, symbolic_diff_1.evaluate)(e, env);
16
+ if (!Number.isFinite(v))
17
+ return null;
18
+ return v;
19
+ }
20
+ catch {
21
+ return null;
22
+ }
23
+ }
24
+ (0, vitest_1.describe)('property: symbolic-diff matches numerical derivative', () => {
25
+ (0, vitest_1.it)('symbolic diff ≈ central finite difference', () => {
26
+ generators_1.fc.assert(generators_1.fc.property((0, generators_1.symExpr)(3), generators_1.fc.double({ min: -3, max: 3, noNaN: true, noDefaultInfinity: true }), generators_1.fc.double({ min: -3, max: 3, noNaN: true, noDefaultInfinity: true }), (e, x0, y0) => {
27
+ const env0 = { x: x0, y: y0 };
28
+ const h = 1e-4;
29
+ const envP = { x: x0 + h, y: y0 };
30
+ const envM = { x: x0 - h, y: y0 };
31
+ const dE = (0, symbolic_diff_1.differentiate)(e, 'x');
32
+ const symbolic = evalSafe(dE, env0);
33
+ const numericP = evalSafe(e, envP);
34
+ const numericM = evalSafe(e, envM);
35
+ if (symbolic === null || numericP === null || numericM === null)
36
+ return true;
37
+ const numeric = (numericP - numericM) / (2 * h);
38
+ if (!Number.isFinite(numeric))
39
+ return true;
40
+ // Tolerancia laxa: relativa 1% + abs 1e-3.
41
+ const tol = Math.max(1e-3, 0.01 * Math.abs(numeric));
42
+ if (Math.abs(symbolic - numeric) > tol) {
43
+ throw new Error(`dE inconsistente: simbólico=${symbolic}, numérico=${numeric}, expr=${JSON.stringify(e)}, x0=${x0}`);
44
+ }
45
+ return true;
46
+ }), { numRuns: 200 });
47
+ });
48
+ });
49
+ //# sourceMappingURL=symbolic-diff.property.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"symbolic-diff.property.test.js","sourceRoot":"","sources":["../../../src/tests/properties/symbolic-diff.property.test.ts"],"names":[],"mappings":";AAAA,+DAA+D;AAC/D,2DAA2D;AAC3D,+DAA+D;AAC/D,EAAE;AACF,4CAA4C;AAC5C,qEAAqE;AACrE,2DAA2D;;AAE3D,mCAAsC;AACtC,6CAA2C;AAC3C,+DAAsE;AAGtE,SAAS,QAAQ,CAAC,CAAO,EAAE,GAA2B;IACpD,IAAI,CAAC;QACH,MAAM,CAAC,GAAG,IAAA,wBAAQ,EAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QAC3B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;YAAE,OAAO,IAAI,CAAC;QACrC,OAAO,CAAC,CAAC;IACX,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,IAAA,iBAAQ,EAAC,sDAAsD,EAAE,GAAG,EAAE;IACpE,IAAA,WAAE,EAAC,2CAA2C,EAAE,GAAG,EAAE;QACnD,eAAE,CAAC,MAAM,CACP,eAAE,CAAC,QAAQ,CACT,IAAA,oBAAO,EAAC,CAAC,CAAC,EACV,eAAE,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC,EACpE,eAAE,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC,EACpE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;YACZ,MAAM,IAAI,GAA2B,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;YACtD,MAAM,CAAC,GAAG,IAAI,CAAC;YACf,MAAM,IAAI,GAA2B,EAAE,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;YAC1D,MAAM,IAAI,GAA2B,EAAE,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;YAC1D,MAAM,EAAE,GAAG,IAAA,6BAAa,EAAC,CAAC,EAAE,GAAG,CAAC,CAAC;YACjC,MAAM,QAAQ,GAAG,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;YACpC,MAAM,QAAQ,GAAG,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;YACnC,MAAM,QAAQ,GAAG,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;YACnC,IAAI,QAAQ,KAAK,IAAI,IAAI,QAAQ,KAAK,IAAI,IAAI,QAAQ,KAAK,IAAI;gBAAE,OAAO,IAAI,CAAC;YAC7E,MAAM,OAAO,GAAG,CAAC,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAChD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC;gBAAE,OAAO,IAAI,CAAC;YAC3C,2CAA2C;YAC3C,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;YACrD,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,GAAG,OAAO,CAAC,GAAG,GAAG,EAAE,CAAC;gBACvC,MAAM,IAAI,KAAK,CACb,+BAA+B,QAAQ,cAAc,OAAO,UAAU,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,CACpG,CAAC;YACJ,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC,CACF,EACD,EAAE,OAAO,EAAE,GAAG,EAAE,CACjB,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=system-f.property.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"system-f.property.test.d.ts","sourceRoot":"","sources":["../../../src/tests/properties/system-f.property.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ // ============================================================
3
+ // Property: System F — typeOf determinístico para well-typed
4
+ // ============================================================
5
+ //
6
+ // ∀ FTerm bien-tipado t: typeOf(t) llamado dos veces da el mismo
7
+ // tipo (no hay state global). Y typeOf(t) no devuelve error.
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ const vitest_1 = require("vitest");
10
+ const generators_1 = require("./generators");
11
+ const system_f_1 = require("../../system-f");
12
+ function makeCtx() {
13
+ // Declaramos A y B como variables de tipo para que el well-formed check pase.
14
+ const ctx = (0, system_f_1.emptyContext)();
15
+ ctx.type.add('A');
16
+ ctx.type.add('B');
17
+ return ctx;
18
+ }
19
+ (0, vitest_1.describe)('property: System F typeOf is deterministic on well-typed terms', () => {
20
+ (0, vitest_1.it)('typeOf(t) consistent across calls', () => {
21
+ generators_1.fc.assert(generators_1.fc.property((0, generators_1.fTermSimple)(), ({ term, type: expected }) => {
22
+ const r1 = (0, system_f_1.typeOf)(term, makeCtx());
23
+ const r2 = (0, system_f_1.typeOf)(term, makeCtx());
24
+ if ((0, system_f_1.isTypeError)(r1) || (0, system_f_1.isTypeError)(r2)) {
25
+ throw new Error(`Term well-typed reportado como error: ${JSON.stringify(term)}, r1=${JSON.stringify(r1)}, r2=${JSON.stringify(r2)}`);
26
+ }
27
+ if (!(0, system_f_1.alphaEqType)(r1, r2)) {
28
+ throw new Error(`typeOf no determinístico: r1=${JSON.stringify(r1)}, r2=${JSON.stringify(r2)}`);
29
+ }
30
+ if (!(0, system_f_1.alphaEqType)(r1, expected)) {
31
+ throw new Error(`Tipo inferido ≠ esperado: inferido=${JSON.stringify(r1)}, esperado=${JSON.stringify(expected)}`);
32
+ }
33
+ return true;
34
+ }), { numRuns: 100 });
35
+ });
36
+ });
37
+ //# sourceMappingURL=system-f.property.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"system-f.property.test.js","sourceRoot":"","sources":["../../../src/tests/properties/system-f.property.test.ts"],"names":[],"mappings":";AAAA,+DAA+D;AAC/D,6DAA6D;AAC7D,+DAA+D;AAC/D,EAAE;AACF,iEAAiE;AACjE,6DAA6D;;AAE7D,mCAAsC;AACtC,6CAA+C;AAC/C,6CAAgF;AAEhF,SAAS,OAAO;IACd,8EAA8E;IAC9E,MAAM,GAAG,GAAG,IAAA,uBAAY,GAAE,CAAC;IAC3B,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAClB,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAClB,OAAO,GAAG,CAAC;AACb,CAAC;AAED,IAAA,iBAAQ,EAAC,gEAAgE,EAAE,GAAG,EAAE;IAC9E,IAAA,WAAE,EAAC,mCAAmC,EAAE,GAAG,EAAE;QAC3C,eAAE,CAAC,MAAM,CACP,eAAE,CAAC,QAAQ,CAAC,IAAA,wBAAW,GAAE,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE;YACtD,MAAM,EAAE,GAAG,IAAA,iBAAM,EAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;YACnC,MAAM,EAAE,GAAG,IAAA,iBAAM,EAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;YACnC,IAAI,IAAA,sBAAW,EAAC,EAAE,CAAC,IAAI,IAAA,sBAAW,EAAC,EAAE,CAAC,EAAE,CAAC;gBACvC,MAAM,IAAI,KAAK,CACb,yCAAyC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,QAAQ,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,CACpH,CAAC;YACJ,CAAC;YACD,IAAI,CAAC,IAAA,sBAAW,EAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;gBACzB,MAAM,IAAI,KAAK,CACb,gCAAgC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,QAAQ,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,CAC/E,CAAC;YACJ,CAAC;YACD,IAAI,CAAC,IAAA,sBAAW,EAAC,EAAE,EAAE,QAAQ,CAAC,EAAE,CAAC;gBAC/B,MAAM,IAAI,KAAK,CACb,sCAAsC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,cAAc,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CACjG,CAAC;YACJ,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC,CAAC,EACF,EAAE,OAAO,EAAE,GAAG,EAAE,CACjB,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=theorem-cache.property.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theorem-cache.property.test.d.ts","sourceRoot":"","sources":["../../../src/tests/properties/theorem-cache.property.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ // ============================================================
3
+ // Property: Theorem cache — store(f) ⇒ retrieve(f) === stored
4
+ // ============================================================
5
+ //
6
+ // ∀ fórmula f, profile p, prueba opaca:
7
+ // tras cache.store({formula: f, profile: p, proof: ...}),
8
+ // cache.retrieve(f, p) devuelve la misma prueba.
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ const vitest_1 = require("vitest");
11
+ const generators_1 = require("./generators");
12
+ const theorem_cache_1 = require("../../runtime/theorem-cache");
13
+ (0, vitest_1.describe)('property: TheoremCache store/retrieve round-trip', () => {
14
+ (0, vitest_1.it)('store(f, p, proof) ⇒ retrieve(f, p).proof === proof', () => {
15
+ generators_1.fc.assert(generators_1.fc.property(generators_1.fc
16
+ .tuple(generators_1.fc.string({ minLength: 1, maxLength: 32 }), generators_1.fc.constantFrom('classical', 'intuit', 'modal'), generators_1.fc.integer({ min: 0, max: 1000000 }))
17
+ .map(([f, p, payload]) => ({ f, p, payload })), ({ f, p, payload }) => {
18
+ const cache = new theorem_cache_1.TheoremCache();
19
+ cache.store({
20
+ formula: f,
21
+ normalizedFormula: '',
22
+ profile: p,
23
+ proof: { payload },
24
+ metadata: { provedAt: new Date().toISOString(), ms: 1 },
25
+ });
26
+ const retrieved = cache.retrieve(f, p);
27
+ if (retrieved === undefined) {
28
+ throw new Error(`retrieve devolvió undefined para "${f}" / "${p}"`);
29
+ }
30
+ const proof = retrieved.proof;
31
+ if (proof?.payload !== payload) {
32
+ throw new Error(`proof no coincide: stored=${payload}, retrieved=${proof?.payload}`);
33
+ }
34
+ return true;
35
+ }), { numRuns: 100 });
36
+ });
37
+ });
38
+ //# sourceMappingURL=theorem-cache.property.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theorem-cache.property.test.js","sourceRoot":"","sources":["../../../src/tests/properties/theorem-cache.property.test.ts"],"names":[],"mappings":";AAAA,+DAA+D;AAC/D,8DAA8D;AAC9D,+DAA+D;AAC/D,EAAE;AACF,wCAAwC;AACxC,4DAA4D;AAC5D,mDAAmD;;AAEnD,mCAAsC;AACtC,6CAAkC;AAClC,+DAA2D;AAE3D,IAAA,iBAAQ,EAAC,kDAAkD,EAAE,GAAG,EAAE;IAChE,IAAA,WAAE,EAAC,qDAAqD,EAAE,GAAG,EAAE;QAC7D,eAAE,CAAC,MAAM,CACP,eAAE,CAAC,QAAQ,CACT,eAAE;aACC,KAAK,CACJ,eAAE,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,EAC1C,eAAE,CAAC,YAAY,CAAC,WAAW,EAAE,QAAQ,EAAE,OAAO,CAAC,EAC/C,eAAE,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,CACrC;aACA,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,EAChD,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;YACpB,MAAM,KAAK,GAAG,IAAI,4BAAY,EAAE,CAAC;YACjC,KAAK,CAAC,KAAK,CAAC;gBACV,OAAO,EAAE,CAAC;gBACV,iBAAiB,EAAE,EAAE;gBACrB,OAAO,EAAE,CAAC;gBACV,KAAK,EAAE,EAAE,OAAO,EAAE;gBAClB,QAAQ,EAAE,EAAE,QAAQ,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE;aACxD,CAAC,CAAC;YACH,MAAM,SAAS,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACvC,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;gBAC5B,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YACtE,CAAC;YACD,MAAM,KAAK,GAAG,SAAS,CAAC,KAAwC,CAAC;YACjE,IAAI,KAAK,EAAE,OAAO,KAAK,OAAO,EAAE,CAAC;gBAC/B,MAAM,IAAI,KAAK,CACb,6BAA6B,OAAO,eAAe,KAAK,EAAE,OAAO,EAAE,CACpE,CAAC;YACJ,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC,CACF,EACD,EAAE,OAAO,EAAE,GAAG,EAAE,CACjB,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=trs.property.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trs.property.test.d.ts","sourceRoot":"","sources":["../../../src/tests/properties/trs.property.test.ts"],"names":[],"mappings":""}