@stevenvo780/st-lang 4.5.1 → 4.5.2

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 (285) 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/game-theory/common-games.d.ts +50 -0
  14. package/dist/game-theory/common-games.d.ts.map +1 -0
  15. package/dist/game-theory/common-games.js +112 -0
  16. package/dist/game-theory/common-games.js.map +1 -0
  17. package/dist/game-theory/dominance.d.ts +26 -0
  18. package/dist/game-theory/dominance.d.ts.map +1 -0
  19. package/dist/game-theory/dominance.js +203 -0
  20. package/dist/game-theory/dominance.js.map +1 -0
  21. package/dist/game-theory/index.d.ts +8 -0
  22. package/dist/game-theory/index.d.ts.map +1 -0
  23. package/dist/game-theory/index.js +47 -0
  24. package/dist/game-theory/index.js.map +1 -0
  25. package/dist/game-theory/lemke-howson.d.ts +3 -0
  26. package/dist/game-theory/lemke-howson.d.ts.map +1 -0
  27. package/dist/game-theory/lemke-howson.js +269 -0
  28. package/dist/game-theory/lemke-howson.js.map +1 -0
  29. package/dist/game-theory/linalg.d.ts +7 -0
  30. package/dist/game-theory/linalg.d.ts.map +1 -0
  31. package/dist/game-theory/linalg.js +69 -0
  32. package/dist/game-theory/linalg.js.map +1 -0
  33. package/dist/game-theory/pure-nash.d.ts +3 -0
  34. package/dist/game-theory/pure-nash.d.ts.map +1 -0
  35. package/dist/game-theory/pure-nash.js +86 -0
  36. package/dist/game-theory/pure-nash.js.map +1 -0
  37. package/dist/game-theory/support-enumeration.d.ts +3 -0
  38. package/dist/game-theory/support-enumeration.d.ts.map +1 -0
  39. package/dist/game-theory/support-enumeration.js +214 -0
  40. package/dist/game-theory/support-enumeration.js.map +1 -0
  41. package/dist/game-theory/types.d.ts +57 -0
  42. package/dist/game-theory/types.d.ts.map +1 -0
  43. package/dist/game-theory/types.js +191 -0
  44. package/dist/game-theory/types.js.map +1 -0
  45. package/dist/index.d.ts +9 -1
  46. package/dist/index.d.ts.map +1 -1
  47. package/dist/index.js +36 -1
  48. package/dist/index.js.map +1 -1
  49. package/dist/information-theory/index.d.ts +29 -0
  50. package/dist/information-theory/index.d.ts.map +1 -0
  51. package/dist/information-theory/index.js +323 -0
  52. package/dist/information-theory/index.js.map +1 -0
  53. package/dist/namespaces/logic.d.ts +42 -0
  54. package/dist/namespaces/logic.d.ts.map +1 -0
  55. package/dist/namespaces/logic.js +112 -0
  56. package/dist/namespaces/logic.js.map +1 -0
  57. package/dist/namespaces/proof-systems.d.ts +18 -0
  58. package/dist/namespaces/proof-systems.d.ts.map +1 -0
  59. package/dist/namespaces/proof-systems.js +59 -0
  60. package/dist/namespaces/proof-systems.js.map +1 -0
  61. package/dist/namespaces/reasoning.d.ts +26 -0
  62. package/dist/namespaces/reasoning.d.ts.map +1 -0
  63. package/dist/namespaces/reasoning.js +72 -0
  64. package/dist/namespaces/reasoning.js.map +1 -0
  65. package/dist/namespaces/semantics.d.ts +21 -0
  66. package/dist/namespaces/semantics.d.ts.map +1 -0
  67. package/dist/namespaces/semantics.js +64 -0
  68. package/dist/namespaces/semantics.js.map +1 -0
  69. package/dist/namespaces/solvers.d.ts +22 -0
  70. package/dist/namespaces/solvers.d.ts.map +1 -0
  71. package/dist/namespaces/solvers.js +66 -0
  72. package/dist/namespaces/solvers.js.map +1 -0
  73. package/dist/namespaces/type-theory.d.ts +22 -0
  74. package/dist/namespaces/type-theory.d.ts.map +1 -0
  75. package/dist/namespaces/type-theory.js +65 -0
  76. package/dist/namespaces/type-theory.js.map +1 -0
  77. package/dist/optimization/branch-and-bound.d.ts +11 -0
  78. package/dist/optimization/branch-and-bound.d.ts.map +1 -0
  79. package/dist/optimization/branch-and-bound.js +311 -0
  80. package/dist/optimization/branch-and-bound.js.map +1 -0
  81. package/dist/optimization/index.d.ts +5 -0
  82. package/dist/optimization/index.d.ts.map +1 -0
  83. package/dist/optimization/index.js +20 -0
  84. package/dist/optimization/index.js.map +1 -0
  85. package/dist/optimization/simplex.d.ts +8 -0
  86. package/dist/optimization/simplex.d.ts.map +1 -0
  87. package/dist/optimization/simplex.js +408 -0
  88. package/dist/optimization/simplex.js.map +1 -0
  89. package/dist/optimization/standard-form.d.ts +11 -0
  90. package/dist/optimization/standard-form.d.ts.map +1 -0
  91. package/dist/optimization/standard-form.js +112 -0
  92. package/dist/optimization/standard-form.js.map +1 -0
  93. package/dist/optimization/types.d.ts +44 -0
  94. package/dist/optimization/types.d.ts.map +1 -0
  95. package/dist/optimization/types.js +15 -0
  96. package/dist/optimization/types.js.map +1 -0
  97. package/dist/profiles/hol/connectives.d.ts +46 -0
  98. package/dist/profiles/hol/connectives.d.ts.map +1 -0
  99. package/dist/profiles/hol/connectives.js +104 -0
  100. package/dist/profiles/hol/connectives.js.map +1 -0
  101. package/dist/profiles/hol/index.d.ts +7 -0
  102. package/dist/profiles/hol/index.d.ts.map +1 -0
  103. package/dist/profiles/hol/index.js +77 -0
  104. package/dist/profiles/hol/index.js.map +1 -0
  105. package/dist/profiles/hol/rules.d.ts +31 -0
  106. package/dist/profiles/hol/rules.d.ts.map +1 -0
  107. package/dist/profiles/hol/rules.js +258 -0
  108. package/dist/profiles/hol/rules.js.map +1 -0
  109. package/dist/profiles/hol/term.d.ts +52 -0
  110. package/dist/profiles/hol/term.d.ts.map +1 -0
  111. package/dist/profiles/hol/term.js +345 -0
  112. package/dist/profiles/hol/term.js.map +1 -0
  113. package/dist/profiles/hol/type-system.d.ts +38 -0
  114. package/dist/profiles/hol/type-system.d.ts.map +1 -0
  115. package/dist/profiles/hol/type-system.js +133 -0
  116. package/dist/profiles/hol/type-system.js.map +1 -0
  117. package/dist/profiles/hol/types.d.ts +59 -0
  118. package/dist/profiles/hol/types.d.ts.map +1 -0
  119. package/dist/profiles/hol/types.js +26 -0
  120. package/dist/profiles/hol/types.js.map +1 -0
  121. package/dist/smt-lib/ast.d.ts +138 -0
  122. package/dist/smt-lib/ast.d.ts.map +1 -0
  123. package/dist/smt-lib/ast.js +73 -0
  124. package/dist/smt-lib/ast.js.map +1 -0
  125. package/dist/smt-lib/emitter.d.ts +12 -0
  126. package/dist/smt-lib/emitter.d.ts.map +1 -0
  127. package/dist/smt-lib/emitter.js +174 -0
  128. package/dist/smt-lib/emitter.js.map +1 -0
  129. package/dist/smt-lib/index.d.ts +6 -0
  130. package/dist/smt-lib/index.d.ts.map +1 -0
  131. package/dist/smt-lib/index.js +31 -0
  132. package/dist/smt-lib/index.js.map +1 -0
  133. package/dist/smt-lib/parser.d.ts +13 -0
  134. package/dist/smt-lib/parser.d.ts.map +1 -0
  135. package/dist/smt-lib/parser.js +614 -0
  136. package/dist/smt-lib/parser.js.map +1 -0
  137. package/dist/smt-lib/tokenizer.d.ts +16 -0
  138. package/dist/smt-lib/tokenizer.d.ts.map +1 -0
  139. package/dist/smt-lib/tokenizer.js +234 -0
  140. package/dist/smt-lib/tokenizer.js.map +1 -0
  141. package/dist/tests/api/namespaces.test.d.ts +9 -0
  142. package/dist/tests/api/namespaces.test.d.ts.map +1 -0
  143. package/dist/tests/api/namespaces.test.js +218 -0
  144. package/dist/tests/api/namespaces.test.js.map +1 -0
  145. package/dist/tests/bdd/manager.test.d.ts +2 -0
  146. package/dist/tests/bdd/manager.test.d.ts.map +1 -0
  147. package/dist/tests/bdd/manager.test.js +472 -0
  148. package/dist/tests/bdd/manager.test.js.map +1 -0
  149. package/dist/tests/game-theory/game-theory.test.d.ts +2 -0
  150. package/dist/tests/game-theory/game-theory.test.d.ts.map +1 -0
  151. package/dist/tests/game-theory/game-theory.test.js +252 -0
  152. package/dist/tests/game-theory/game-theory.test.js.map +1 -0
  153. package/dist/tests/hol/hol.test.d.ts +2 -0
  154. package/dist/tests/hol/hol.test.d.ts.map +1 -0
  155. package/dist/tests/hol/hol.test.js +340 -0
  156. package/dist/tests/hol/hol.test.js.map +1 -0
  157. package/dist/tests/information-theory/information-theory.test.d.ts +2 -0
  158. package/dist/tests/information-theory/information-theory.test.d.ts.map +1 -0
  159. package/dist/tests/information-theory/information-theory.test.js +291 -0
  160. package/dist/tests/information-theory/information-theory.test.js.map +1 -0
  161. package/dist/tests/optimization/ilp.test.d.ts +2 -0
  162. package/dist/tests/optimization/ilp.test.d.ts.map +1 -0
  163. package/dist/tests/optimization/ilp.test.js +204 -0
  164. package/dist/tests/optimization/ilp.test.js.map +1 -0
  165. package/dist/tests/optimization/lp.test.d.ts +2 -0
  166. package/dist/tests/optimization/lp.test.d.ts.map +1 -0
  167. package/dist/tests/optimization/lp.test.js +224 -0
  168. package/dist/tests/optimization/lp.test.js.map +1 -0
  169. package/dist/tests/properties/agm.property.test.d.ts +2 -0
  170. package/dist/tests/properties/agm.property.test.d.ts.map +1 -0
  171. package/dist/tests/properties/agm.property.test.js +75 -0
  172. package/dist/tests/properties/agm.property.test.js.map +1 -0
  173. package/dist/tests/properties/anti-unification.property.test.d.ts +2 -0
  174. package/dist/tests/properties/anti-unification.property.test.d.ts.map +1 -0
  175. package/dist/tests/properties/anti-unification.property.test.js +43 -0
  176. package/dist/tests/properties/anti-unification.property.test.js.map +1 -0
  177. package/dist/tests/properties/argumentation.property.test.d.ts +2 -0
  178. package/dist/tests/properties/argumentation.property.test.d.ts.map +1 -0
  179. package/dist/tests/properties/argumentation.property.test.js +51 -0
  180. package/dist/tests/properties/argumentation.property.test.js.map +1 -0
  181. package/dist/tests/properties/bayesian.property.test.d.ts +2 -0
  182. package/dist/tests/properties/bayesian.property.test.d.ts.map +1 -0
  183. package/dist/tests/properties/bayesian.property.test.js +32 -0
  184. package/dist/tests/properties/bayesian.property.test.js.map +1 -0
  185. package/dist/tests/properties/bisimulation.property.test.d.ts +2 -0
  186. package/dist/tests/properties/bisimulation.property.test.d.ts.map +1 -0
  187. package/dist/tests/properties/bisimulation.property.test.js +50 -0
  188. package/dist/tests/properties/bisimulation.property.test.js.map +1 -0
  189. package/dist/tests/properties/cdcl.property.test.d.ts +2 -0
  190. package/dist/tests/properties/cdcl.property.test.d.ts.map +1 -0
  191. package/dist/tests/properties/cdcl.property.test.js +70 -0
  192. package/dist/tests/properties/cdcl.property.test.js.map +1 -0
  193. package/dist/tests/properties/coinduction.property.test.d.ts +2 -0
  194. package/dist/tests/properties/coinduction.property.test.d.ts.map +1 -0
  195. package/dist/tests/properties/coinduction.property.test.js +34 -0
  196. package/dist/tests/properties/coinduction.property.test.js.map +1 -0
  197. package/dist/tests/properties/constructive-reals.property.test.d.ts +2 -0
  198. package/dist/tests/properties/constructive-reals.property.test.d.ts.map +1 -0
  199. package/dist/tests/properties/constructive-reals.property.test.js +59 -0
  200. package/dist/tests/properties/constructive-reals.property.test.js.map +1 -0
  201. package/dist/tests/properties/csp.property.test.d.ts +2 -0
  202. package/dist/tests/properties/csp.property.test.d.ts.map +1 -0
  203. package/dist/tests/properties/csp.property.test.js +58 -0
  204. package/dist/tests/properties/csp.property.test.js.map +1 -0
  205. package/dist/tests/properties/generators.d.ts +78 -0
  206. package/dist/tests/properties/generators.d.ts.map +1 -0
  207. package/dist/tests/properties/generators.js +348 -0
  208. package/dist/tests/properties/generators.js.map +1 -0
  209. package/dist/tests/properties/ho-unify.property.test.d.ts +2 -0
  210. package/dist/tests/properties/ho-unify.property.test.d.ts.map +1 -0
  211. package/dist/tests/properties/ho-unify.property.test.js +46 -0
  212. package/dist/tests/properties/ho-unify.property.test.js.map +1 -0
  213. package/dist/tests/properties/hyperreal.property.test.d.ts +2 -0
  214. package/dist/tests/properties/hyperreal.property.test.d.ts.map +1 -0
  215. package/dist/tests/properties/hyperreal.property.test.js +33 -0
  216. package/dist/tests/properties/hyperreal.property.test.js.map +1 -0
  217. package/dist/tests/properties/intuit-nj.property.test.d.ts +2 -0
  218. package/dist/tests/properties/intuit-nj.property.test.d.ts.map +1 -0
  219. package/dist/tests/properties/intuit-nj.property.test.js +57 -0
  220. package/dist/tests/properties/intuit-nj.property.test.js.map +1 -0
  221. package/dist/tests/properties/lambda-calc.property.test.d.ts +2 -0
  222. package/dist/tests/properties/lambda-calc.property.test.d.ts.map +1 -0
  223. package/dist/tests/properties/lambda-calc.property.test.js +35 -0
  224. package/dist/tests/properties/lambda-calc.property.test.js.map +1 -0
  225. package/dist/tests/properties/mln.property.test.d.ts +2 -0
  226. package/dist/tests/properties/mln.property.test.d.ts.map +1 -0
  227. package/dist/tests/properties/mln.property.test.js +41 -0
  228. package/dist/tests/properties/mln.property.test.js.map +1 -0
  229. package/dist/tests/properties/mltt.property.test.d.ts +2 -0
  230. package/dist/tests/properties/mltt.property.test.d.ts.map +1 -0
  231. package/dist/tests/properties/mltt.property.test.js +33 -0
  232. package/dist/tests/properties/mltt.property.test.js.map +1 -0
  233. package/dist/tests/properties/nbe.property.test.d.ts +2 -0
  234. package/dist/tests/properties/nbe.property.test.d.ts.map +1 -0
  235. package/dist/tests/properties/nbe.property.test.js +44 -0
  236. package/dist/tests/properties/nbe.property.test.js.map +1 -0
  237. package/dist/tests/properties/planning.property.test.d.ts +2 -0
  238. package/dist/tests/properties/planning.property.test.d.ts.map +1 -0
  239. package/dist/tests/properties/planning.property.test.js +51 -0
  240. package/dist/tests/properties/planning.property.test.js.map +1 -0
  241. package/dist/tests/properties/profile-bridge.property.test.d.ts +2 -0
  242. package/dist/tests/properties/profile-bridge.property.test.d.ts.map +1 -0
  243. package/dist/tests/properties/profile-bridge.property.test.js +71 -0
  244. package/dist/tests/properties/profile-bridge.property.test.js.map +1 -0
  245. package/dist/tests/properties/refinement-types.property.test.d.ts +2 -0
  246. package/dist/tests/properties/refinement-types.property.test.d.ts.map +1 -0
  247. package/dist/tests/properties/refinement-types.property.test.js +37 -0
  248. package/dist/tests/properties/refinement-types.property.test.js.map +1 -0
  249. package/dist/tests/properties/sequent-g3.property.test.d.ts +2 -0
  250. package/dist/tests/properties/sequent-g3.property.test.d.ts.map +1 -0
  251. package/dist/tests/properties/sequent-g3.property.test.js +34 -0
  252. package/dist/tests/properties/sequent-g3.property.test.js.map +1 -0
  253. package/dist/tests/properties/symbolic-diff.property.test.d.ts +2 -0
  254. package/dist/tests/properties/symbolic-diff.property.test.d.ts.map +1 -0
  255. package/dist/tests/properties/symbolic-diff.property.test.js +49 -0
  256. package/dist/tests/properties/symbolic-diff.property.test.js.map +1 -0
  257. package/dist/tests/properties/system-f.property.test.d.ts +2 -0
  258. package/dist/tests/properties/system-f.property.test.d.ts.map +1 -0
  259. package/dist/tests/properties/system-f.property.test.js +37 -0
  260. package/dist/tests/properties/system-f.property.test.js.map +1 -0
  261. package/dist/tests/properties/theorem-cache.property.test.d.ts +2 -0
  262. package/dist/tests/properties/theorem-cache.property.test.d.ts.map +1 -0
  263. package/dist/tests/properties/theorem-cache.property.test.js +38 -0
  264. package/dist/tests/properties/theorem-cache.property.test.js.map +1 -0
  265. package/dist/tests/properties/trs.property.test.d.ts +2 -0
  266. package/dist/tests/properties/trs.property.test.d.ts.map +1 -0
  267. package/dist/tests/properties/trs.property.test.js +34 -0
  268. package/dist/tests/properties/trs.property.test.js.map +1 -0
  269. package/dist/tests/properties/unification.property.test.d.ts +2 -0
  270. package/dist/tests/properties/unification.property.test.d.ts.map +1 -0
  271. package/dist/tests/properties/unification.property.test.js +42 -0
  272. package/dist/tests/properties/unification.property.test.js.map +1 -0
  273. package/dist/tests/smt-lib/emitter.test.d.ts +2 -0
  274. package/dist/tests/smt-lib/emitter.test.d.ts.map +1 -0
  275. package/dist/tests/smt-lib/emitter.test.js +155 -0
  276. package/dist/tests/smt-lib/emitter.test.js.map +1 -0
  277. package/dist/tests/smt-lib/parser.test.d.ts +2 -0
  278. package/dist/tests/smt-lib/parser.test.d.ts.map +1 -0
  279. package/dist/tests/smt-lib/parser.test.js +164 -0
  280. package/dist/tests/smt-lib/parser.test.js.map +1 -0
  281. package/dist/tests/smt-lib/tokenizer.test.d.ts +2 -0
  282. package/dist/tests/smt-lib/tokenizer.test.d.ts.map +1 -0
  283. package/dist/tests/smt-lib/tokenizer.test.js +59 -0
  284. package/dist/tests/smt-lib/tokenizer.test.js.map +1 -0
  285. package/package.json +2 -1
@@ -0,0 +1,70 @@
1
+ "use strict";
2
+ // ============================================================
3
+ // Property: CDCL v2 — consistencia SAT/UNSAT
4
+ // ============================================================
5
+ //
6
+ // ∀ random 3-SAT clauses, el resultado del solver es consistente:
7
+ // - si sat=true ⇒ el modelo retornado satisface TODAS las cláusulas.
8
+ // - si unsat=true ⇒ no existe asignación que satisfaga todas las cláusulas
9
+ // (verificado por enumeración brute-force, sólo viable con pocas vars).
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ const vitest_1 = require("vitest");
12
+ const generators_1 = require("./generators");
13
+ const cdcl_v2_1 = require("../../solver/cdcl-v2");
14
+ function clauseSatisfied(clause, model) {
15
+ for (let i = 0; i < clause.length; i++) {
16
+ const lit = clause[i];
17
+ const v = Math.abs(lit);
18
+ // El solver default usa keys "x1", "x2", ... (sin atomNames).
19
+ const assigned = model[`x${v}`];
20
+ if (assigned === undefined)
21
+ continue;
22
+ if ((lit > 0 && assigned) || (lit < 0 && !assigned))
23
+ return true;
24
+ }
25
+ return false;
26
+ }
27
+ function enumerateAllAssignments(numVars, clauses) {
28
+ // Brute-force: si existe asignación que satisface, retorna true.
29
+ // Solo seguro hasta ~10 vars (2^10 = 1024).
30
+ const total = 1 << numVars;
31
+ for (let mask = 0; mask < total; mask++) {
32
+ const model = {};
33
+ for (let v = 1; v <= numVars; v++) {
34
+ model[`x${v}`] = ((mask >> (v - 1)) & 1) === 1;
35
+ }
36
+ if (clauses.every((c) => clauseSatisfied(c, model)))
37
+ return true;
38
+ }
39
+ return false;
40
+ }
41
+ (0, vitest_1.describe)('property: CDCL v2 consistency', () => {
42
+ (0, vitest_1.it)('SAT result yields model that satisfies every clause', () => {
43
+ generators_1.fc.assert(generators_1.fc.property((0, generators_1.dimacs3SAT)(6, 4), ({ clauses, numVars }) => {
44
+ const r = (0, cdcl_v2_1.solveCDCLv2)(clauses, numVars, { timeoutMs: 2000 });
45
+ if (!('sat' in r) || !r.sat)
46
+ return true; // skip UNSAT casos
47
+ // Verificar: cada cláusula satisfecha.
48
+ for (const c of clauses) {
49
+ if (!clauseSatisfied(c, r.model)) {
50
+ throw new Error(`Modelo SAT no satisface cláusula ${Array.from(c).join(' ')}: model=${JSON.stringify(r.model)}`);
51
+ }
52
+ }
53
+ return true;
54
+ }), { numRuns: 200 });
55
+ });
56
+ (0, vitest_1.it)('UNSAT result agrees with brute-force enumeration', () => {
57
+ generators_1.fc.assert(generators_1.fc.property((0, generators_1.dimacs3SAT)(6, 4), ({ clauses, numVars }) => {
58
+ const r = (0, cdcl_v2_1.solveCDCLv2)(clauses, numVars, { timeoutMs: 2000 });
59
+ if (!('unsat' in r) || !r.unsat)
60
+ return true; // skip SAT casos
61
+ // brute-force: no debe existir asignación.
62
+ const existsSat = enumerateAllAssignments(numVars, clauses);
63
+ if (existsSat) {
64
+ throw new Error(`Solver declaró UNSAT pero existe asignación satisfactoria. clauses=${clauses.map((c) => Array.from(c).join(' ')).join('|')}`);
65
+ }
66
+ return true;
67
+ }), { numRuns: 100 });
68
+ });
69
+ });
70
+ //# sourceMappingURL=cdcl.property.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cdcl.property.test.js","sourceRoot":"","sources":["../../../src/tests/properties/cdcl.property.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=coinduction.property.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"coinduction.property.test.d.ts","sourceRoot":"","sources":["../../../src/tests/properties/coinduction.property.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ // ============================================================
3
+ // Property: Coinduction — take(s, n) tiene n elementos
4
+ // ============================================================
5
+ //
6
+ // ∀ Stream s, n ∈ [0, 50]: take(s, n).length === n.
7
+ // También: isBisimilar(s, s) === true para profundidad razonable.
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ const vitest_1 = require("vitest");
10
+ const generators_1 = require("./generators");
11
+ const coinduction_1 = require("../../coinduction");
12
+ const streamArb = generators_1.fc.oneof(generators_1.fc.integer({ min: -100, max: 100 }).map((x) => (0, coinduction_1.repeat)(x)), generators_1.fc
13
+ .tuple(generators_1.fc.integer({ min: -100, max: 100 }), generators_1.fc.integer({ min: -5, max: 5 }))
14
+ .map(([seed, step]) => (0, coinduction_1.iterate)((x) => x + step, seed)), generators_1.fc.constant(coinduction_1.naturals), generators_1.fc.constant(coinduction_1.fibonacci));
15
+ (0, vitest_1.describe)('property: coinduction streams', () => {
16
+ (0, vitest_1.it)('take(s, n).length === n', () => {
17
+ generators_1.fc.assert(generators_1.fc.property(streamArb, generators_1.fc.integer({ min: 0, max: 50 }), (s, n) => {
18
+ const arr = (0, coinduction_1.take)(s, n);
19
+ if (arr.length !== n) {
20
+ throw new Error(`take(s, ${n}).length === ${arr.length}`);
21
+ }
22
+ return true;
23
+ }), { numRuns: 200 });
24
+ });
25
+ (0, vitest_1.it)('isBisimilar(s, s) is true', () => {
26
+ generators_1.fc.assert(generators_1.fc.property(streamArb, (s) => {
27
+ if (!(0, coinduction_1.isBisimilar)(s, s, 20)) {
28
+ throw new Error(`isBisimilar(s, s) === false`);
29
+ }
30
+ return true;
31
+ }), { numRuns: 100 });
32
+ });
33
+ });
34
+ //# sourceMappingURL=coinduction.property.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"coinduction.property.test.js","sourceRoot":"","sources":["../../../src/tests/properties/coinduction.property.test.ts"],"names":[],"mappings":";AAAA,+DAA+D;AAC/D,uDAAuD;AACvD,+DAA+D;AAC/D,EAAE;AACF,oDAAoD;AACpD,kEAAkE;;AAElE,mCAAsC;AACtC,6CAAkC;AAClC,mDAA4F;AAG5F,MAAM,SAAS,GAAiC,eAAE,CAAC,KAAK,CACtD,eAAE,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAA,oBAAM,EAAC,CAAC,CAAC,CAAC,EACzD,eAAE;KACC,KAAK,CAAC,eAAE,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,eAAE,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;KAC3E,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,IAAA,qBAAO,EAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,IAAI,CAAC,CAAC,EACxD,eAAE,CAAC,QAAQ,CAAC,sBAAQ,CAAC,EACrB,eAAE,CAAC,QAAQ,CAAC,uBAAS,CAAC,CACvB,CAAC;AAEF,IAAA,iBAAQ,EAAC,+BAA+B,EAAE,GAAG,EAAE;IAC7C,IAAA,WAAE,EAAC,yBAAyB,EAAE,GAAG,EAAE;QACjC,eAAE,CAAC,MAAM,CACP,eAAE,CAAC,QAAQ,CAAC,SAAS,EAAE,eAAE,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YAC/D,MAAM,GAAG,GAAG,IAAA,kBAAI,EAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACvB,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACrB,MAAM,IAAI,KAAK,CAAC,WAAW,CAAC,gBAAgB,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;YAC5D,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC,CAAC,EACF,EAAE,OAAO,EAAE,GAAG,EAAE,CACjB,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,2BAA2B,EAAE,GAAG,EAAE;QACnC,eAAE,CAAC,MAAM,CACP,eAAE,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE;YAC3B,IAAI,CAAC,IAAA,yBAAW,EAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;gBAC3B,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;YACjD,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=constructive-reals.property.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constructive-reals.property.test.d.ts","sourceRoot":"","sources":["../../../src/tests/properties/constructive-reals.property.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+ // ============================================================
3
+ // Property: Constructive reals — add(x, y) ≈ approx(x) + approx(y)
4
+ // ============================================================
5
+ //
6
+ // ∀ x, y CReal (de fromInt / fromRational): la aproximación de
7
+ // add(x, y) a precisión p coincide con approx(x, p+1) + approx(y, p+1)
8
+ // dentro del error nominal 2^{-p}.
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ const vitest_1 = require("vitest");
11
+ const generators_1 = require("./generators");
12
+ const constructive_reals_1 = require("../../constructive-reals");
13
+ function evalAt(r, p) {
14
+ const { numerator, denominator } = r.approx(p);
15
+ return Number(numerator) / Number(denominator);
16
+ }
17
+ const intArb = generators_1.fc.integer({ min: -50, max: 50 });
18
+ const rationalArb = generators_1.fc
19
+ .tuple(generators_1.fc.integer({ min: -50, max: 50 }), generators_1.fc.integer({ min: 1, max: 50 }))
20
+ .map(([n, d]) => (0, constructive_reals_1.fromRational)(n, d));
21
+ const cRealArb = generators_1.fc.oneof(intArb.map((n) => (0, constructive_reals_1.fromInt)(n)), rationalArb);
22
+ (0, vitest_1.describe)('property: constructive reals — add commutativity and approximation', () => {
23
+ (0, vitest_1.it)('add(x, y) ≈ x + y at precision 30', () => {
24
+ generators_1.fc.assert(generators_1.fc.property(cRealArb, cRealArb, (x, y) => {
25
+ const sum = (0, constructive_reals_1.add)(x, y);
26
+ const sumNum = evalAt(sum, 30);
27
+ const xNum = evalAt(x, 30);
28
+ const yNum = evalAt(y, 30);
29
+ const error = Math.abs(sumNum - (xNum + yNum));
30
+ // Cota laxa: 2^{-25} (ya considerando errores acumulados).
31
+ if (error > Math.pow(2, -25)) {
32
+ throw new Error(`add inexacto: sum=${sumNum}, x+y=${xNum + yNum}, error=${error}`);
33
+ }
34
+ return true;
35
+ }), { numRuns: 100 });
36
+ });
37
+ (0, vitest_1.it)('add is commutative: add(x, y) ≈ add(y, x)', () => {
38
+ generators_1.fc.assert(generators_1.fc.property(cRealArb, cRealArb, (x, y) => {
39
+ const a = evalAt((0, constructive_reals_1.add)(x, y), 30);
40
+ const b = evalAt((0, constructive_reals_1.add)(y, x), 30);
41
+ if (Math.abs(a - b) > Math.pow(2, -25)) {
42
+ throw new Error(`add no conmutativa: ${a} ≠ ${b}`);
43
+ }
44
+ return true;
45
+ }), { numRuns: 100 });
46
+ });
47
+ (0, vitest_1.it)('sub(x, y) ≈ x - y', () => {
48
+ generators_1.fc.assert(generators_1.fc.property(cRealArb, cRealArb, (x, y) => {
49
+ const diffNum = evalAt((0, constructive_reals_1.sub)(x, y), 30);
50
+ const xNum = evalAt(x, 30);
51
+ const yNum = evalAt(y, 30);
52
+ if (Math.abs(diffNum - (xNum - yNum)) > Math.pow(2, -25)) {
53
+ throw new Error(`sub inexacto`);
54
+ }
55
+ return true;
56
+ }), { numRuns: 100 });
57
+ });
58
+ });
59
+ //# sourceMappingURL=constructive-reals.property.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constructive-reals.property.test.js","sourceRoot":"","sources":["../../../src/tests/properties/constructive-reals.property.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=csp.property.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"csp.property.test.d.ts","sourceRoot":"","sources":["../../../src/tests/properties/csp.property.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+ // ============================================================
3
+ // Property: CSP AC-3 — dominios reducidos son subset del input
4
+ // ============================================================
5
+ //
6
+ // ∀ instancia CSP binaria: AC-3 produce dominios donde
7
+ // reducedDomains[v] ⊆ originalDomains[v] ∀ v.
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ const vitest_1 = require("vitest");
10
+ const generators_1 = require("./generators");
11
+ const csp_1 = require("../../runtime/csp");
12
+ const cspArb = generators_1.fc
13
+ .integer({ min: 2, max: 4 })
14
+ .chain((n) => {
15
+ const vars = Array.from({ length: n }, (_, i) => `x${i}`);
16
+ return generators_1.fc
17
+ .array(generators_1.fc
18
+ .tuple(generators_1.fc.integer({ min: 0, max: n - 1 }), generators_1.fc.integer({ min: 0, max: n - 1 }), generators_1.fc.constantFrom('ne', 'lt'))
19
+ .filter(([a, b]) => a !== b), { minLength: 0, maxLength: 4 })
20
+ .map((triples) => {
21
+ const domains = new Map();
22
+ for (const v of vars)
23
+ domains.set(v, [1, 2, 3, 4]);
24
+ const constraints = triples.map(([i, j, kind]) => {
25
+ const ci = vars[i];
26
+ const cj = vars[j];
27
+ if (kind === 'ne') {
28
+ return {
29
+ vars: [ci, cj],
30
+ predicate: (vals) => vals[0] !== vals[1],
31
+ };
32
+ }
33
+ return {
34
+ vars: [ci, cj],
35
+ predicate: (vals) => vals[0] < vals[1],
36
+ };
37
+ });
38
+ return { variables: vars, domains, constraints };
39
+ });
40
+ });
41
+ (0, vitest_1.describe)('property: CSP AC-3 reduces domains monotonically', () => {
42
+ (0, vitest_1.it)('reducedDomains[v] ⊆ originalDomains[v]', () => {
43
+ generators_1.fc.assert(generators_1.fc.property(cspArb, (csp) => {
44
+ const { reducedDomains } = (0, csp_1.ac3)(csp);
45
+ for (const v of csp.variables) {
46
+ const orig = new Set(csp.domains.get(v));
47
+ const reduced = reducedDomains.get(v) ?? [];
48
+ for (const x of reduced) {
49
+ if (!orig.has(x)) {
50
+ throw new Error(`AC-3 introdujo valor nuevo ${x} en ${v}`);
51
+ }
52
+ }
53
+ }
54
+ return true;
55
+ }), { numRuns: 100 });
56
+ });
57
+ });
58
+ //# sourceMappingURL=csp.property.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"csp.property.test.js","sourceRoot":"","sources":["../../../src/tests/properties/csp.property.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,78 @@
1
+ import * as fc from 'fast-check';
2
+ import type { Formula } from '../../types';
3
+ import type { HOTerm } from '../../higher-order-unify';
4
+ import type { Term as LamTerm } from '../../lambda-calc/types';
5
+ import type { Term as TRSTerm } from '../../runtime/term-rewriting/types';
6
+ import type { Term as AUTerm } from '../../runtime/anti-unification/types';
7
+ import type { FType, FTerm } from '../../system-f/types';
8
+ import type { MLTTTerm } from '../../mltt/types';
9
+ import type { Expr } from '../../runtime/symbolic-diff/types';
10
+ import type { LTS } from '../../runtime/bisimulation/types';
11
+ export declare const atomName: () => fc.Arbitrary<string>;
12
+ export declare const varName: () => fc.Arbitrary<string>;
13
+ export declare const funcName: () => fc.Arbitrary<string>;
14
+ export declare const constName: () => fc.Arbitrary<string>;
15
+ export declare const propFormula: (maxDepth?: number) => fc.Arbitrary<Formula>;
16
+ /**
17
+ * Genera una instancia 3-SAT pequeña: numVars en [3, maxVars],
18
+ * y cantidad de cláusulas hasta `ratio * numVars`. Cada cláusula
19
+ * tiene 3 literales (con repetición permitida pero forzando que
20
+ * ningún literal y su negación coexistan en la misma cláusula —
21
+ * evitamos cláusulas trivialmente true por tautología).
22
+ */
23
+ export declare const dimacs3SAT: (maxVars?: number, maxRatio?: number) => fc.Arbitrary<{
24
+ clauses: Int32Array[];
25
+ numVars: number;
26
+ }>;
27
+ /** Term del módulo anti-unification (admite `const`). */
28
+ export declare const auTerm: (maxDepth?: number) => fc.Arbitrary<AUTerm>;
29
+ /** Term del módulo term-rewriting (sin `const`; usa `func` con []). */
30
+ export declare const trsTerm: (maxDepth?: number) => fc.Arbitrary<TRSTerm>;
31
+ /** Term sin variables (closed) — útil para que las reglas TRS produzcan
32
+ * reductos completos. */
33
+ export declare const trsClosedTerm: (maxDepth?: number) => fc.Arbitrary<TRSTerm>;
34
+ /**
35
+ * Genera un término HO de la "forma patrón" (Miller): meta-vars
36
+ * aparecen aplicadas únicamente a variables ligadas distintas.
37
+ * Construye términos del tipo λx.λy. M x y, var x, etc.
38
+ */
39
+ export declare const hoPatternTerm: (maxDepth?: number) => fc.Arbitrary<HOTerm>;
40
+ export declare const lamTerm: (maxDepth?: number) => fc.Arbitrary<LamTerm>;
41
+ export declare const fTermSimple: () => fc.Arbitrary<{
42
+ term: FTerm;
43
+ type: FType;
44
+ }>;
45
+ export declare const mlttSimpleTerm: () => fc.Arbitrary<MLTTTerm>;
46
+ export declare const symExpr: (maxDepth?: number) => fc.Arbitrary<Expr>;
47
+ /** Versión "segura" (sin div ni log/exp con base inestable) — derivable
48
+ * numéricamente con diferencias finitas. */
49
+ export declare const symExprSafe: (maxDepth?: number) => fc.Arbitrary<Expr>;
50
+ /** Genera una red bayesiana de cadena A → B → C con valores binarios. */
51
+ export declare const tinyBayesNet: () => fc.Arbitrary<{
52
+ variables: Array<{
53
+ name: string;
54
+ values: string[];
55
+ }>;
56
+ cpts: Array<{
57
+ variable: string;
58
+ parents: string[];
59
+ entries: Record<string, Record<string, number>>;
60
+ }>;
61
+ }>;
62
+ export declare const tinyLTS: () => fc.Arbitrary<LTS>;
63
+ export declare const beliefSetAndFormula: () => fc.Arbitrary<{
64
+ initial: string[];
65
+ phi: string;
66
+ }>;
67
+ export declare const tinyAF: () => fc.Arbitrary<{
68
+ arguments: Set<string>;
69
+ attacks: Array<[string, string]>;
70
+ }>;
71
+ export declare const hyperrealArb: () => fc.Arbitrary<{
72
+ standard: number;
73
+ infinitesimal: number;
74
+ }>;
75
+ import type { RefType } from '../../refinement-types/types';
76
+ export declare const refTypeIntSimple: () => fc.Arbitrary<RefType>;
77
+ export { fc };
78
+ //# sourceMappingURL=generators.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generators.d.ts","sourceRoot":"","sources":["../../../src/tests/properties/generators.ts"],"names":[],"mappings":"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"}