@stevenvo780/st-lang 4.8.0 → 4.9.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 (145) hide show
  1. package/dist/logic/profiles/quantum/index.d.ts +153 -0
  2. package/dist/logic/profiles/quantum/index.d.ts.map +1 -0
  3. package/dist/logic/profiles/quantum/index.js +788 -0
  4. package/dist/logic/profiles/quantum/index.js.map +1 -0
  5. package/dist/namespaces/reasoning.d.ts +2 -1
  6. package/dist/namespaces/reasoning.d.ts.map +1 -1
  7. package/dist/namespaces/reasoning.js +3 -1
  8. package/dist/namespaces/reasoning.js.map +1 -1
  9. package/dist/proof-systems/certificate/canonical.d.ts +18 -0
  10. package/dist/proof-systems/certificate/canonical.d.ts.map +1 -0
  11. package/dist/proof-systems/certificate/canonical.js +79 -0
  12. package/dist/proof-systems/certificate/canonical.js.map +1 -0
  13. package/dist/proof-systems/certificate/generate.d.ts +39 -0
  14. package/dist/proof-systems/certificate/generate.d.ts.map +1 -0
  15. package/dist/proof-systems/certificate/generate.js +259 -0
  16. package/dist/proof-systems/certificate/generate.js.map +1 -0
  17. package/dist/proof-systems/certificate/index.d.ts +7 -0
  18. package/dist/proof-systems/certificate/index.d.ts.map +1 -0
  19. package/dist/proof-systems/certificate/index.js +23 -0
  20. package/dist/proof-systems/certificate/index.js.map +1 -0
  21. package/dist/proof-systems/certificate/lfsc.d.ts +15 -0
  22. package/dist/proof-systems/certificate/lfsc.d.ts.map +1 -0
  23. package/dist/proof-systems/certificate/lfsc.js +395 -0
  24. package/dist/proof-systems/certificate/lfsc.js.map +1 -0
  25. package/dist/proof-systems/certificate/rules.d.ts +8 -0
  26. package/dist/proof-systems/certificate/rules.d.ts.map +1 -0
  27. package/dist/proof-systems/certificate/rules.js +369 -0
  28. package/dist/proof-systems/certificate/rules.js.map +1 -0
  29. package/dist/proof-systems/certificate/types.d.ts +114 -0
  30. package/dist/proof-systems/certificate/types.d.ts.map +1 -0
  31. package/dist/proof-systems/certificate/types.js +18 -0
  32. package/dist/proof-systems/certificate/types.js.map +1 -0
  33. package/dist/proof-systems/certificate/verify.d.ts +20 -0
  34. package/dist/proof-systems/certificate/verify.d.ts.map +1 -0
  35. package/dist/proof-systems/certificate/verify.js +171 -0
  36. package/dist/proof-systems/certificate/verify.js.map +1 -0
  37. package/dist/reasoning/ban-logic/analyze.d.ts +31 -0
  38. package/dist/reasoning/ban-logic/analyze.d.ts.map +1 -0
  39. package/dist/reasoning/ban-logic/analyze.js +113 -0
  40. package/dist/reasoning/ban-logic/analyze.js.map +1 -0
  41. package/dist/reasoning/ban-logic/index.d.ts +7 -0
  42. package/dist/reasoning/ban-logic/index.d.ts.map +1 -0
  43. package/dist/reasoning/ban-logic/index.js +66 -0
  44. package/dist/reasoning/ban-logic/index.js.map +1 -0
  45. package/dist/reasoning/ban-logic/protocols.d.ts +54 -0
  46. package/dist/reasoning/ban-logic/protocols.d.ts.map +1 -0
  47. package/dist/reasoning/ban-logic/protocols.js +219 -0
  48. package/dist/reasoning/ban-logic/protocols.js.map +1 -0
  49. package/dist/reasoning/ban-logic/rules.d.ts +83 -0
  50. package/dist/reasoning/ban-logic/rules.d.ts.map +1 -0
  51. package/dist/reasoning/ban-logic/rules.js +409 -0
  52. package/dist/reasoning/ban-logic/rules.js.map +1 -0
  53. package/dist/reasoning/ban-logic/terms.d.ts +26 -0
  54. package/dist/reasoning/ban-logic/terms.d.ts.map +1 -0
  55. package/dist/reasoning/ban-logic/terms.js +262 -0
  56. package/dist/reasoning/ban-logic/terms.js.map +1 -0
  57. package/dist/reasoning/ban-logic/types.d.ts +107 -0
  58. package/dist/reasoning/ban-logic/types.d.ts.map +1 -0
  59. package/dist/reasoning/ban-logic/types.js +27 -0
  60. package/dist/reasoning/ban-logic/types.js.map +1 -0
  61. package/dist/reasoning/differential-privacy/index.d.ts +121 -0
  62. package/dist/reasoning/differential-privacy/index.d.ts.map +1 -0
  63. package/dist/reasoning/differential-privacy/index.js +417 -0
  64. package/dist/reasoning/differential-privacy/index.js.map +1 -0
  65. package/dist/tests/logic/profiles/quantum/quantum.test.d.ts +2 -0
  66. package/dist/tests/logic/profiles/quantum/quantum.test.d.ts.map +1 -0
  67. package/dist/tests/logic/profiles/quantum/quantum.test.js +209 -0
  68. package/dist/tests/logic/profiles/quantum/quantum.test.js.map +1 -0
  69. package/dist/tests/proof-systems/certificate/certificate.test.d.ts +2 -0
  70. package/dist/tests/proof-systems/certificate/certificate.test.d.ts.map +1 -0
  71. package/dist/tests/proof-systems/certificate/certificate.test.js +449 -0
  72. package/dist/tests/proof-systems/certificate/certificate.test.js.map +1 -0
  73. package/dist/tests/reasoning/ban-logic/ban-logic.test.d.ts +2 -0
  74. package/dist/tests/reasoning/ban-logic/ban-logic.test.d.ts.map +1 -0
  75. package/dist/tests/reasoning/ban-logic/ban-logic.test.js +270 -0
  76. package/dist/tests/reasoning/ban-logic/ban-logic.test.js.map +1 -0
  77. package/dist/tests/reasoning/differential-privacy/differential-privacy.test.d.ts +2 -0
  78. package/dist/tests/reasoning/differential-privacy/differential-privacy.test.d.ts.map +1 -0
  79. package/dist/tests/reasoning/differential-privacy/differential-privacy.test.js +388 -0
  80. package/dist/tests/reasoning/differential-privacy/differential-privacy.test.js.map +1 -0
  81. package/dist/tests/tooling/mathlib/mathlib.test.d.ts +2 -0
  82. package/dist/tests/tooling/mathlib/mathlib.test.d.ts.map +1 -0
  83. package/dist/tests/tooling/mathlib/mathlib.test.js +214 -0
  84. package/dist/tests/tooling/mathlib/mathlib.test.js.map +1 -0
  85. package/dist/tests/type-theory/effects/effects.test.d.ts +2 -0
  86. package/dist/tests/type-theory/effects/effects.test.d.ts.map +1 -0
  87. package/dist/tests/type-theory/effects/effects.test.js +242 -0
  88. package/dist/tests/type-theory/effects/effects.test.js.map +1 -0
  89. package/dist/tooling/mathlib/group.d.ts +27 -0
  90. package/dist/tooling/mathlib/group.d.ts.map +1 -0
  91. package/dist/tooling/mathlib/group.js +89 -0
  92. package/dist/tooling/mathlib/group.js.map +1 -0
  93. package/dist/tooling/mathlib/index.d.ts +8 -0
  94. package/dist/tooling/mathlib/index.d.ts.map +1 -0
  95. package/dist/tooling/mathlib/index.js +40 -0
  96. package/dist/tooling/mathlib/index.js.map +1 -0
  97. package/dist/tooling/mathlib/instances.d.ts +29 -0
  98. package/dist/tooling/mathlib/instances.d.ts.map +1 -0
  99. package/dist/tooling/mathlib/instances.js +139 -0
  100. package/dist/tooling/mathlib/instances.js.map +1 -0
  101. package/dist/tooling/mathlib/lemmas.d.ts +3 -0
  102. package/dist/tooling/mathlib/lemmas.d.ts.map +1 -0
  103. package/dist/tooling/mathlib/lemmas.js +72 -0
  104. package/dist/tooling/mathlib/lemmas.js.map +1 -0
  105. package/dist/tooling/mathlib/order.d.ts +29 -0
  106. package/dist/tooling/mathlib/order.d.ts.map +1 -0
  107. package/dist/tooling/mathlib/order.js +91 -0
  108. package/dist/tooling/mathlib/order.js.map +1 -0
  109. package/dist/tooling/mathlib/ring.d.ts +15 -0
  110. package/dist/tooling/mathlib/ring.d.ts.map +1 -0
  111. package/dist/tooling/mathlib/ring.js +91 -0
  112. package/dist/tooling/mathlib/ring.js.map +1 -0
  113. package/dist/tooling/mathlib/types.d.ts +62 -0
  114. package/dist/tooling/mathlib/types.d.ts.map +1 -0
  115. package/dist/tooling/mathlib/types.js +7 -0
  116. package/dist/tooling/mathlib/types.js.map +1 -0
  117. package/dist/type-theory/effects/core.d.ts +27 -0
  118. package/dist/type-theory/effects/core.d.ts.map +1 -0
  119. package/dist/type-theory/effects/core.js +79 -0
  120. package/dist/type-theory/effects/core.js.map +1 -0
  121. package/dist/type-theory/effects/exception.d.ts +18 -0
  122. package/dist/type-theory/effects/exception.d.ts.map +1 -0
  123. package/dist/type-theory/effects/exception.js +59 -0
  124. package/dist/type-theory/effects/exception.js.map +1 -0
  125. package/dist/type-theory/effects/index.d.ts +11 -0
  126. package/dist/type-theory/effects/index.d.ts.map +1 -0
  127. package/dist/type-theory/effects/index.js +50 -0
  128. package/dist/type-theory/effects/index.js.map +1 -0
  129. package/dist/type-theory/effects/reader.d.ts +20 -0
  130. package/dist/type-theory/effects/reader.d.ts.map +1 -0
  131. package/dist/type-theory/effects/reader.js +62 -0
  132. package/dist/type-theory/effects/reader.js.map +1 -0
  133. package/dist/type-theory/effects/state.d.ts +31 -0
  134. package/dist/type-theory/effects/state.d.ts.map +1 -0
  135. package/dist/type-theory/effects/state.js +91 -0
  136. package/dist/type-theory/effects/state.js.map +1 -0
  137. package/dist/type-theory/effects/types.d.ts +45 -0
  138. package/dist/type-theory/effects/types.d.ts.map +1 -0
  139. package/dist/type-theory/effects/types.js +21 -0
  140. package/dist/type-theory/effects/types.js.map +1 -0
  141. package/dist/type-theory/effects/writer.d.ts +30 -0
  142. package/dist/type-theory/effects/writer.d.ts.map +1 -0
  143. package/dist/type-theory/effects/writer.js +79 -0
  144. package/dist/type-theory/effects/writer.js.map +1 -0
  145. package/package.json +1 -1
@@ -0,0 +1,139 @@
1
+ "use strict";
2
+ // ============================================================
3
+ // ST Mathlib — Instancias estándar
4
+ // Z aditivo, anillo Z, racionales como campo, Z/nZ, S_3.
5
+ // ============================================================
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.sym3 = exports.sym3Elements = exports.rationalsField = exports.intRing = exports.intAdditiveGroup = void 0;
8
+ exports.rational = rational;
9
+ exports.rationalEq = rationalEq;
10
+ exports.rationalDiv = rationalDiv;
11
+ exports.zModN = zModN;
12
+ exports.zModNElements = zModNElements;
13
+ exports.zModNDiv = zModNDiv;
14
+ exports.perm3Eq = perm3Eq;
15
+ // ------------------------------------------------------------
16
+ // (Z, +): grupo abeliano aditivo de enteros.
17
+ // ------------------------------------------------------------
18
+ exports.intAdditiveGroup = {
19
+ op: (a, b) => a + b,
20
+ identity: 0n,
21
+ inverse: (a) => -a,
22
+ };
23
+ // ------------------------------------------------------------
24
+ // (Z, +, ·): anillo conmutativo con unidad.
25
+ // ------------------------------------------------------------
26
+ exports.intRing = {
27
+ add: (a, b) => a + b,
28
+ mul: (a, b) => a * b,
29
+ zero: 0n,
30
+ one: 1n,
31
+ neg: (a) => -a,
32
+ };
33
+ function gcd(a, b) {
34
+ let x = a < 0n ? -a : a;
35
+ let y = b < 0n ? -b : b;
36
+ while (y !== 0n) {
37
+ const t = y;
38
+ y = x % y;
39
+ x = t;
40
+ }
41
+ return x === 0n ? 1n : x;
42
+ }
43
+ function rational(num, den) {
44
+ if (den === 0n)
45
+ throw new Error('rational: denominador cero');
46
+ const sign = den < 0n ? -1n : 1n;
47
+ const n = num * sign;
48
+ const d = den * sign;
49
+ const g = gcd(n < 0n ? -n : n, d);
50
+ return { num: n / g, den: d / g };
51
+ }
52
+ function rationalEq(a, b) {
53
+ return a.num === b.num && a.den === b.den;
54
+ }
55
+ exports.rationalsField = {
56
+ add: (a, b) => rational(a.num * b.den + b.num * a.den, a.den * b.den),
57
+ mul: (a, b) => rational(a.num * b.num, a.den * b.den),
58
+ zero: { num: 0n, den: 1n },
59
+ one: { num: 1n, den: 1n },
60
+ neg: (a) => ({ num: -a.num, den: a.den }),
61
+ };
62
+ /**
63
+ * División en Q. `undefined` solo cuando b = 0/1 (división por cero).
64
+ */
65
+ function rationalDiv(a, b) {
66
+ if (b.num === 0n)
67
+ return undefined;
68
+ return rational(a.num * b.den, a.den * b.num);
69
+ }
70
+ // ------------------------------------------------------------
71
+ // Z/nZ: enteros módulo n. Es campo sii n es primo.
72
+ // ------------------------------------------------------------
73
+ function mod(a, n) {
74
+ const r = a % n;
75
+ return r < 0n ? r + n : r;
76
+ }
77
+ function zModN(n) {
78
+ if (n <= 0n)
79
+ throw new Error('zModN: n debe ser positivo');
80
+ return {
81
+ add: (a, b) => mod(a + b, n),
82
+ mul: (a, b) => mod(a * b, n),
83
+ zero: 0n,
84
+ one: mod(1n, n),
85
+ neg: (a) => mod(-a, n),
86
+ };
87
+ }
88
+ /**
89
+ * Lista los n representantes canónicos {0, 1, ..., n-1}.
90
+ */
91
+ function zModNElements(n) {
92
+ const out = [];
93
+ for (let i = 0n; i < n; i++)
94
+ out.push(i);
95
+ return out;
96
+ }
97
+ /**
98
+ * División modular: busca b tal que a · b ≡ 1 (mod n) por fuerza bruta
99
+ * sobre el dominio finito. Devuelve undefined si no existe inverso.
100
+ */
101
+ function zModNDiv(n) {
102
+ return (a, b) => {
103
+ if (b === 0n)
104
+ return undefined;
105
+ for (let x = 0n; x < n; x++) {
106
+ if (mod(b * x, n) === 1n)
107
+ return mod(a * x, n);
108
+ }
109
+ return undefined;
110
+ };
111
+ }
112
+ exports.sym3Elements = [
113
+ [0, 1, 2], // identidad
114
+ [1, 0, 2], // transposición (0 1)
115
+ [2, 1, 0], // transposición (0 2)
116
+ [0, 2, 1], // transposición (1 2)
117
+ [1, 2, 0], // ciclo (0 1 2)
118
+ [2, 0, 1], // ciclo (0 2 1)
119
+ ];
120
+ function composePerm3(a, b) {
121
+ // (a ∘ b)(i) = a(b(i))
122
+ return [a[b[0]], a[b[1]], a[b[2]]];
123
+ }
124
+ function invertPerm3(a) {
125
+ const out = [0, 0, 0];
126
+ out[a[0]] = 0;
127
+ out[a[1]] = 1;
128
+ out[a[2]] = 2;
129
+ return out;
130
+ }
131
+ function perm3Eq(a, b) {
132
+ return a[0] === b[0] && a[1] === b[1] && a[2] === b[2];
133
+ }
134
+ exports.sym3 = {
135
+ op: composePerm3,
136
+ identity: [0, 1, 2],
137
+ inverse: invertPerm3,
138
+ };
139
+ //# sourceMappingURL=instances.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"instances.js","sourceRoot":"","sources":["../../../src/tooling/mathlib/instances.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { Lemma } from './types';
2
+ export declare const STANDARD_LEMMAS: Lemma[];
3
+ //# sourceMappingURL=lemmas.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lemmas.d.ts","sourceRoot":"","sources":["../../../src/tooling/mathlib/lemmas.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAsB,KAAK,EAAE,MAAM,SAAS,CAAC;AAMzD,eAAO,MAAM,eAAe,EAAE,KAAK,EA4DlC,CAAC"}
@@ -0,0 +1,72 @@
1
+ "use strict";
2
+ // ============================================================
3
+ // ST Mathlib — Lemas estándar
4
+ // Afirmaciones reutilizables con criterio de aplicabilidad.
5
+ // ============================================================
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.STANDARD_LEMMAS = void 0;
8
+ function hasOps(structure, ...names) {
9
+ return names.every((n) => structure.operations.has(n));
10
+ }
11
+ exports.STANDARD_LEMMAS = [
12
+ {
13
+ name: 'group.identity_unique',
14
+ statement: 'En un grupo, la identidad es única.',
15
+ applicableTo: (s) => hasOps(s, 'op'),
16
+ proof: "Si e y e' son ambas identidades, e = e · e' = e'.",
17
+ },
18
+ {
19
+ name: 'group.inverse_unique',
20
+ statement: 'En un grupo, el inverso de cada elemento es único.',
21
+ applicableTo: (s) => hasOps(s, 'op'),
22
+ proof: 'Si b y c son inversos de a, b = b · e = b · (a · c) = (b · a) · c = e · c = c.',
23
+ },
24
+ {
25
+ name: 'group.cancellation_left',
26
+ statement: 'a · b = a · c ⇒ b = c.',
27
+ applicableTo: (s) => hasOps(s, 'op'),
28
+ proof: 'Multiplicando a la izquierda por a⁻¹.',
29
+ },
30
+ {
31
+ name: 'group.inverse_of_product',
32
+ statement: '(a · b)⁻¹ = b⁻¹ · a⁻¹.',
33
+ applicableTo: (s) => hasOps(s, 'op'),
34
+ proof: 'Por verificación directa: (a · b)(b⁻¹ · a⁻¹) = a · (b · b⁻¹) · a⁻¹ = a · a⁻¹ = e.',
35
+ },
36
+ {
37
+ name: 'group.double_inverse',
38
+ statement: '(a⁻¹)⁻¹ = a.',
39
+ applicableTo: (s) => hasOps(s, 'op'),
40
+ proof: 'El inverso de a⁻¹ es a, porque a⁻¹ · a = e.',
41
+ },
42
+ {
43
+ name: 'ring.zero_times_anything',
44
+ statement: '0 · a = a · 0 = 0.',
45
+ applicableTo: (s) => hasOps(s, 'add', 'mul'),
46
+ proof: '0 · a = (0 + 0) · a = 0 · a + 0 · a; cancelando, 0 · a = 0.',
47
+ },
48
+ {
49
+ name: 'ring.neg_one_times',
50
+ statement: '(-1) · a = -a.',
51
+ applicableTo: (s) => hasOps(s, 'add', 'mul'),
52
+ proof: 'a + (-1) · a = (1 + -1) · a = 0 · a = 0, así que (-1) · a = -a.',
53
+ },
54
+ {
55
+ name: 'ring.neg_neg',
56
+ statement: '-(-a) = a.',
57
+ applicableTo: (s) => hasOps(s, 'add'),
58
+ proof: 'Propiedad del grupo abeliano aditivo.',
59
+ },
60
+ {
61
+ name: 'order.reflexive_implies_self_join',
62
+ statement: 'En un poset reflexivo, sup{a,a} = a.',
63
+ applicableTo: (s) => hasOps(s, 'leq') || s.axioms.some((ax) => ax.name === 'reflexive'),
64
+ },
65
+ {
66
+ name: 'field.no_zero_divisors',
67
+ statement: 'En un campo, a · b = 0 ⇒ a = 0 ∨ b = 0.',
68
+ applicableTo: (s) => hasOps(s, 'add', 'mul'),
69
+ proof: 'Si a ≠ 0, multiplicando por a⁻¹ se obtiene b = 0.',
70
+ },
71
+ ];
72
+ //# sourceMappingURL=lemmas.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lemmas.js","sourceRoot":"","sources":["../../../src/tooling/mathlib/lemmas.ts"],"names":[],"mappings":";AAAA,+DAA+D;AAC/D,8BAA8B;AAC9B,4DAA4D;AAC5D,+DAA+D;;;AAI/D,SAAS,MAAM,CAAC,SAAsC,EAAE,GAAG,KAAe;IACxE,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACzD,CAAC;AAEY,QAAA,eAAe,GAAY;IACtC;QACE,IAAI,EAAE,uBAAuB;QAC7B,SAAS,EAAE,qCAAqC;QAChD,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC;QACpC,KAAK,EAAE,mDAAmD;KAC3D;IACD;QACE,IAAI,EAAE,sBAAsB;QAC5B,SAAS,EAAE,oDAAoD;QAC/D,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC;QACpC,KAAK,EAAE,gFAAgF;KACxF;IACD;QACE,IAAI,EAAE,yBAAyB;QAC/B,SAAS,EAAE,wBAAwB;QACnC,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC;QACpC,KAAK,EAAE,uCAAuC;KAC/C;IACD;QACE,IAAI,EAAE,0BAA0B;QAChC,SAAS,EAAE,wBAAwB;QACnC,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC;QACpC,KAAK,EAAE,mFAAmF;KAC3F;IACD;QACE,IAAI,EAAE,sBAAsB;QAC5B,SAAS,EAAE,cAAc;QACzB,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC;QACpC,KAAK,EAAE,6CAA6C;KACrD;IACD;QACE,IAAI,EAAE,0BAA0B;QAChC,SAAS,EAAE,oBAAoB;QAC/B,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC;QAC5C,KAAK,EAAE,6DAA6D;KACrE;IACD;QACE,IAAI,EAAE,oBAAoB;QAC1B,SAAS,EAAE,gBAAgB;QAC3B,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC;QAC5C,KAAK,EAAE,iEAAiE;KACzE;IACD;QACE,IAAI,EAAE,cAAc;QACpB,SAAS,EAAE,YAAY;QACvB,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC;QACrC,KAAK,EAAE,uCAAuC;KAC/C;IACD;QACE,IAAI,EAAE,mCAAmC;QACzC,SAAS,EAAE,sCAAsC;QACjD,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,KAAK,WAAW,CAAC;KACxF;IACD;QACE,IAAI,EAAE,wBAAwB;QAC9B,SAAS,EAAE,yCAAyC;QACpD,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC;QAC5C,KAAK,EAAE,mDAAmD;KAC3D;CACF,CAAC"}
@@ -0,0 +1,29 @@
1
+ import type { PartialOrder } from './types';
2
+ /**
3
+ * Para todo a en `elements`: a ≤ a.
4
+ */
5
+ export declare function isReflexive<T>(po: PartialOrder<T>, elements: T[]): boolean;
6
+ /**
7
+ * Para todo a,b: a ≤ b ∧ b ≤ a ⇒ a = b.
8
+ * La igualdad se decide con `===` para tipos primitivos; para
9
+ * tipos compuestos se acepta un `eq` custom.
10
+ */
11
+ export declare function isAntisymmetric<T>(po: PartialOrder<T>, elements: T[], eq?: (a: T, b: T) => boolean): boolean;
12
+ /**
13
+ * Para todo a,b,c: a ≤ b ∧ b ≤ c ⇒ a ≤ c.
14
+ */
15
+ export declare function isTransitive<T>(po: PartialOrder<T>, elements: T[]): boolean;
16
+ /**
17
+ * Un poset es lattice si cada par {a,b} tiene supremo (join) e
18
+ * ínfimo (meet) dentro de `elements`. Esto verifica existencia
19
+ * estructural usando el orden parcial (no requiere ops explícitas).
20
+ */
21
+ export declare function isLattice<T>(po: PartialOrder<T>, elements: T[], eq?: (a: T, b: T) => boolean): boolean;
22
+ /**
23
+ * Reporte completo del orden parcial sobre el conjunto dado.
24
+ */
25
+ export declare function verifyPartialOrder<T>(po: PartialOrder<T>, elements: T[], eq?: (a: T, b: T) => boolean): {
26
+ valid: boolean;
27
+ failures: string[];
28
+ };
29
+ //# sourceMappingURL=order.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"order.d.ts","sourceRoot":"","sources":["../../../src/tooling/mathlib/order.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAE5C;;GAEG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,EAAE,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,GAAG,OAAO,CAK1E;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAC/B,EAAE,EAAE,YAAY,CAAC,CAAC,CAAC,EACnB,QAAQ,EAAE,CAAC,EAAE,EACb,EAAE,GAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,OAA2B,GAC9C,OAAO,CAOT;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE,EAAE,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,GAAG,OAAO,CAS3E;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,CAAC,EACzB,EAAE,EAAE,YAAY,CAAC,CAAC,CAAC,EACnB,QAAQ,EAAE,CAAC,EAAE,EACb,EAAE,GAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,OAA2B,GAC9C,OAAO,CAoBT;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,EAClC,EAAE,EAAE,YAAY,CAAC,CAAC,CAAC,EACnB,QAAQ,EAAE,CAAC,EAAE,EACb,EAAE,GAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,OAA2B,GAC9C;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;CAAE,CAMxC"}
@@ -0,0 +1,91 @@
1
+ "use strict";
2
+ // ============================================================
3
+ // ST Mathlib — Order theory
4
+ // Reflexividad, antisimetría, transitividad y lattice check.
5
+ // ============================================================
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.isReflexive = isReflexive;
8
+ exports.isAntisymmetric = isAntisymmetric;
9
+ exports.isTransitive = isTransitive;
10
+ exports.isLattice = isLattice;
11
+ exports.verifyPartialOrder = verifyPartialOrder;
12
+ /**
13
+ * Para todo a en `elements`: a ≤ a.
14
+ */
15
+ function isReflexive(po, elements) {
16
+ for (const a of elements) {
17
+ if (!po.leq(a, a))
18
+ return false;
19
+ }
20
+ return true;
21
+ }
22
+ /**
23
+ * Para todo a,b: a ≤ b ∧ b ≤ a ⇒ a = b.
24
+ * La igualdad se decide con `===` para tipos primitivos; para
25
+ * tipos compuestos se acepta un `eq` custom.
26
+ */
27
+ function isAntisymmetric(po, elements, eq = (a, b) => a === b) {
28
+ for (const a of elements) {
29
+ for (const b of elements) {
30
+ if (po.leq(a, b) && po.leq(b, a) && !eq(a, b))
31
+ return false;
32
+ }
33
+ }
34
+ return true;
35
+ }
36
+ /**
37
+ * Para todo a,b,c: a ≤ b ∧ b ≤ c ⇒ a ≤ c.
38
+ */
39
+ function isTransitive(po, elements) {
40
+ for (const a of elements) {
41
+ for (const b of elements) {
42
+ for (const c of elements) {
43
+ if (po.leq(a, b) && po.leq(b, c) && !po.leq(a, c))
44
+ return false;
45
+ }
46
+ }
47
+ }
48
+ return true;
49
+ }
50
+ /**
51
+ * Un poset es lattice si cada par {a,b} tiene supremo (join) e
52
+ * ínfimo (meet) dentro de `elements`. Esto verifica existencia
53
+ * estructural usando el orden parcial (no requiere ops explícitas).
54
+ */
55
+ function isLattice(po, elements, eq = (a, b) => a === b) {
56
+ for (const a of elements) {
57
+ for (const b of elements) {
58
+ // join (supremo): existe c tal que a ≤ c, b ≤ c, y para todo d cota superior, c ≤ d.
59
+ const upperBounds = elements.filter((c) => po.leq(a, c) && po.leq(b, c));
60
+ if (upperBounds.length === 0)
61
+ return false;
62
+ const join = upperBounds.find((c) => upperBounds.every((d) => po.leq(c, d)));
63
+ if (!join)
64
+ return false;
65
+ // meet (ínfimo): existe c tal que c ≤ a, c ≤ b, y para todo d cota inferior, d ≤ c.
66
+ const lowerBounds = elements.filter((c) => po.leq(c, a) && po.leq(c, b));
67
+ if (lowerBounds.length === 0)
68
+ return false;
69
+ const meet = lowerBounds.find((c) => lowerBounds.every((d) => po.leq(d, c)));
70
+ if (!meet)
71
+ return false;
72
+ // Sanity: join único y meet único (usando eq).
73
+ void eq; // eq se acepta para overload con tipos compuestos; no se usa en short-circuit.
74
+ }
75
+ }
76
+ return true;
77
+ }
78
+ /**
79
+ * Reporte completo del orden parcial sobre el conjunto dado.
80
+ */
81
+ function verifyPartialOrder(po, elements, eq = (a, b) => a === b) {
82
+ const failures = [];
83
+ if (!isReflexive(po, elements))
84
+ failures.push('reflexividad');
85
+ if (!isAntisymmetric(po, elements, eq))
86
+ failures.push('antisimetría');
87
+ if (!isTransitive(po, elements))
88
+ failures.push('transitividad');
89
+ return { valid: failures.length === 0, failures };
90
+ }
91
+ //# sourceMappingURL=order.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"order.js","sourceRoot":"","sources":["../../../src/tooling/mathlib/order.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import type { Ring, VerificationResult } from './types';
2
+ /**
3
+ * Verifica los axiomas de anillo (con identidad multiplicativa):
4
+ * - (R, +, 0) grupo abeliano.
5
+ * - (R, ·, 1) monoide (asociatividad + identidad).
6
+ * - · distribuye sobre + por ambos lados.
7
+ */
8
+ export declare function verifyRing<T>(r: Ring<T>, elements: T[], eq?: (a: T, b: T) => boolean): VerificationResult;
9
+ /**
10
+ * Un anillo conmutativo R es campo si todo elemento no nulo tiene
11
+ * inverso multiplicativo dentro del conjunto. `div` debe devolver
12
+ * un T para argumentos válidos o `undefined` cuando no existe inverso.
13
+ */
14
+ export declare function isField<T>(r: Ring<T>, elements: T[], div: (a: T, b: T) => T | undefined, eq?: (a: T, b: T) => boolean): boolean;
15
+ //# sourceMappingURL=ring.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ring.d.ts","sourceRoot":"","sources":["../../../src/tooling/mathlib/ring.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,IAAI,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAExD;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAC1B,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EACV,QAAQ,EAAE,CAAC,EAAE,EACb,EAAE,GAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,OAA2B,GAC9C,kBAAkB,CAiDpB;AAED;;;;GAIG;AACH,wBAAgB,OAAO,CAAC,CAAC,EACvB,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EACV,QAAQ,EAAE,CAAC,EAAE,EACb,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,SAAS,EAClC,EAAE,GAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,OAA2B,GAC9C,OAAO,CAYT"}
@@ -0,0 +1,91 @@
1
+ "use strict";
2
+ // ============================================================
3
+ // ST Mathlib — Ring theory
4
+ // Verificación de axiomas de anillo y check de campo.
5
+ // ============================================================
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.verifyRing = verifyRing;
8
+ exports.isField = isField;
9
+ const group_1 = require("./group");
10
+ /**
11
+ * Verifica los axiomas de anillo (con identidad multiplicativa):
12
+ * - (R, +, 0) grupo abeliano.
13
+ * - (R, ·, 1) monoide (asociatividad + identidad).
14
+ * - · distribuye sobre + por ambos lados.
15
+ */
16
+ function verifyRing(r, elements, eq = (a, b) => a === b) {
17
+ const failures = [];
18
+ // Grupo abeliano aditivo.
19
+ const addMagma = { op: r.add };
20
+ if (!(0, group_1.isAssociative)(addMagma, elements, eq))
21
+ failures.push('asociatividad aditiva');
22
+ if (!(0, group_1.hasIdentity)(addMagma, elements, r.zero, eq))
23
+ failures.push('identidad aditiva (0)');
24
+ if (!(0, group_1.hasInverses)({ op: r.add, identity: r.zero, inverse: r.neg }, elements, eq)) {
25
+ failures.push('inversos aditivos');
26
+ }
27
+ if (!(0, group_1.isCommutative)(addMagma, elements, eq))
28
+ failures.push('conmutatividad aditiva');
29
+ // Monoide multiplicativo.
30
+ const mulMagma = { op: r.mul };
31
+ if (!(0, group_1.isAssociative)(mulMagma, elements, eq))
32
+ failures.push('asociatividad multiplicativa');
33
+ if (!(0, group_1.hasIdentity)(mulMagma, elements, r.one, eq))
34
+ failures.push('identidad multiplicativa (1)');
35
+ // Distributividad: a·(b+c) = a·b + a·c y (a+b)·c = a·c + b·c.
36
+ for (const a of elements) {
37
+ for (const b of elements) {
38
+ for (const c of elements) {
39
+ const left = r.mul(a, r.add(b, c));
40
+ const right = r.add(r.mul(a, b), r.mul(a, c));
41
+ if (!eq(left, right)) {
42
+ failures.push('distributividad por izquierda');
43
+ break;
44
+ }
45
+ }
46
+ if (failures.includes('distributividad por izquierda'))
47
+ break;
48
+ }
49
+ if (failures.includes('distributividad por izquierda'))
50
+ break;
51
+ }
52
+ for (const a of elements) {
53
+ for (const b of elements) {
54
+ for (const c of elements) {
55
+ const left = r.mul(r.add(a, b), c);
56
+ const right = r.add(r.mul(a, c), r.mul(b, c));
57
+ if (!eq(left, right)) {
58
+ failures.push('distributividad por derecha');
59
+ break;
60
+ }
61
+ }
62
+ if (failures.includes('distributividad por derecha'))
63
+ break;
64
+ }
65
+ if (failures.includes('distributividad por derecha'))
66
+ break;
67
+ }
68
+ return { valid: failures.length === 0, failures };
69
+ }
70
+ /**
71
+ * Un anillo conmutativo R es campo si todo elemento no nulo tiene
72
+ * inverso multiplicativo dentro del conjunto. `div` debe devolver
73
+ * un T para argumentos válidos o `undefined` cuando no existe inverso.
74
+ */
75
+ function isField(r, elements, div, eq = (a, b) => a === b) {
76
+ // Conmutatividad multiplicativa (requerido para campo).
77
+ if (!(0, group_1.isCommutative)({ op: r.mul }, elements, eq))
78
+ return false;
79
+ // Todo elemento no cero tiene inverso multiplicativo.
80
+ for (const a of elements) {
81
+ if (eq(a, r.zero))
82
+ continue;
83
+ const inv = div(r.one, a);
84
+ if (inv === undefined)
85
+ return false;
86
+ if (!eq(r.mul(a, inv), r.one))
87
+ return false;
88
+ }
89
+ return true;
90
+ }
91
+ //# sourceMappingURL=ring.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ring.js","sourceRoot":"","sources":["../../../src/tooling/mathlib/ring.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,62 @@
1
+ /**
2
+ * Estructura algebraica genérica: un dominio de elementos + un
3
+ * diccionario de operaciones + una lista de axiomas declarados.
4
+ *
5
+ * `elements` puede ser un arreglo finito (para grupos finitos como S_3)
6
+ * o un generador indexado (para anillos infinitos como Z donde se
7
+ * muestrea un subconjunto representativo).
8
+ */
9
+ export interface AlgebraicStructure<T> {
10
+ name: string;
11
+ elements: T[] | ((idx: number) => T);
12
+ operations: Map<string, (...args: T[]) => T>;
13
+ axioms: AlgebraAxiom[];
14
+ }
15
+ /**
16
+ * Un axioma con su fórmula informal (template) y un verificador
17
+ * computacional opcional que decide si los elementos lo cumplen.
18
+ */
19
+ export interface AlgebraAxiom {
20
+ name: string;
21
+ formula: string;
22
+ verifier?: (elements: unknown[], ops: Map<string, unknown>) => boolean;
23
+ }
24
+ export interface PartialOrder<T> {
25
+ leq(a: T, b: T): boolean;
26
+ }
27
+ export interface TotalOrder<T> extends PartialOrder<T> {
28
+ compare(a: T, b: T): -1 | 0 | 1;
29
+ }
30
+ export interface Magma<T> {
31
+ op: (a: T, b: T) => T;
32
+ }
33
+ export interface Semigroup<T> extends Magma<T> {
34
+ readonly _semigroup?: true;
35
+ }
36
+ export interface Monoid<T> extends Semigroup<T> {
37
+ identity: T;
38
+ }
39
+ export interface Group<T> extends Monoid<T> {
40
+ inverse: (a: T) => T;
41
+ }
42
+ export interface AbelianGroup<T> extends Group<T> {
43
+ readonly _abelian?: true;
44
+ }
45
+ export interface Ring<T> {
46
+ add: (a: T, b: T) => T;
47
+ mul: (a: T, b: T) => T;
48
+ zero: T;
49
+ one: T;
50
+ neg: (a: T) => T;
51
+ }
52
+ export interface Lemma {
53
+ name: string;
54
+ statement: string;
55
+ applicableTo: (structure: AlgebraicStructure<unknown>) => boolean;
56
+ proof?: string;
57
+ }
58
+ export interface VerificationResult {
59
+ valid: boolean;
60
+ failures: string[];
61
+ }
62
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/tooling/mathlib/types.ts"],"names":[],"mappings":"AAKA;;;;;;;GAOG;AACH,MAAM,WAAW,kBAAkB,CAAC,CAAC;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,MAAM,KAAK,CAAC,CAAC,CAAC;IACrC,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;IAC7C,MAAM,EAAE,YAAY,EAAE,CAAC;CACxB;AAED;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC;CACxE;AAMD,MAAM,WAAW,YAAY,CAAC,CAAC;IAC7B,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,UAAU,CAAC,CAAC,CAAE,SAAQ,YAAY,CAAC,CAAC,CAAC;IACpD,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;CACjC;AAMD,MAAM,WAAW,KAAK,CAAC,CAAC;IACtB,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;CACvB;AAID,MAAM,WAAW,SAAS,CAAC,CAAC,CAAE,SAAQ,KAAK,CAAC,CAAC,CAAC;IAC5C,QAAQ,CAAC,UAAU,CAAC,EAAE,IAAI,CAAC;CAC5B;AAED,MAAM,WAAW,MAAM,CAAC,CAAC,CAAE,SAAQ,SAAS,CAAC,CAAC,CAAC;IAC7C,QAAQ,EAAE,CAAC,CAAC;CACb;AAED,MAAM,WAAW,KAAK,CAAC,CAAC,CAAE,SAAQ,MAAM,CAAC,CAAC,CAAC;IACzC,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;CACtB;AAED,MAAM,WAAW,YAAY,CAAC,CAAC,CAAE,SAAQ,KAAK,CAAC,CAAC,CAAC;IAC/C,QAAQ,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC;CAC1B;AAMD,MAAM,WAAW,IAAI,CAAC,CAAC;IACrB,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;IACvB,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;IACvB,IAAI,EAAE,CAAC,CAAC;IACR,GAAG,EAAE,CAAC,CAAC;IACP,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;CAClB;AAMD,MAAM,WAAW,KAAK;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,CAAC,SAAS,EAAE,kBAAkB,CAAC,OAAO,CAAC,KAAK,OAAO,CAAC;IAClE,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAMD,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,OAAO,CAAC;IACf,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB"}
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ // ============================================================
3
+ // ST Mathlib — Tipos base para estructuras algebraicas
4
+ // Inspirado en Lean mathlib, subset mínimo para enseñanza.
5
+ // ============================================================
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/tooling/mathlib/types.ts"],"names":[],"mappings":";AAAA,+DAA+D;AAC/D,uDAAuD;AACvD,2DAA2D;AAC3D,+DAA+D"}
@@ -0,0 +1,27 @@
1
+ import type { Eff, Effect, Handler } from './types';
2
+ /** Inyecta un valor puro en la mónada. */
3
+ export declare function pure<A>(value: A): Eff<never, A>;
4
+ /**
5
+ * Construye una computación que ejecuta una operación `tag` con `input`
6
+ * y entrega su resultado al consumidor. La continuación es la identidad:
7
+ * "haz la operación y devuelve su salida".
8
+ */
9
+ export declare function perform<EName extends string, I, O>(tag: EName, input: I): Eff<Effect<EName, I, O>, O>;
10
+ /** Bind monádico (>>= en notación de Haskell). */
11
+ export declare function bind<E, A, B>(eff: Eff<E, A>, fn: (a: A) => Eff<E, B>): Eff<E, B>;
12
+ /** Alias funtorial: aplica una función pura al resultado. */
13
+ export declare function map<E, A, B>(eff: Eff<E, A>, fn: (a: A) => B): Eff<E, B>;
14
+ /** Secuencia una lista de computaciones y colecta sus resultados. */
15
+ export declare function sequence<E, A>(effs: ReadonlyArray<Eff<E, A>>): Eff<E, A[]>;
16
+ /**
17
+ * Interpreta un efecto concreto. Recorre el árbol: las hojas `pure`
18
+ * pasan tal cual; los nodos `impure` cuyo `tag` coincida con el
19
+ * handler son delegados a `handle`; el resto se propaga.
20
+ */
21
+ export declare function handle<E1, E2, A>(eff: Eff<E1, A>, handler: Handler<string, unknown, unknown, E2, A>): Eff<E2, A>;
22
+ /**
23
+ * Extrae el valor de una computación 100% pura. Lanza si quedan efectos
24
+ * sin interpretar — útil tras componer todos los handlers.
25
+ */
26
+ export declare function run<A>(eff: Eff<never, A>): A;
27
+ //# sourceMappingURL=core.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../../src/type-theory/effects/core.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAEpD,0CAA0C;AAC1C,wBAAgB,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAE/C;AAED;;;;GAIG;AACH,wBAAgB,OAAO,CAAC,KAAK,SAAS,MAAM,EAAE,CAAC,EAAE,CAAC,EAChD,GAAG,EAAE,KAAK,EACV,KAAK,EAAE,CAAC,GACP,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAO7B;AAED,kDAAkD;AAClD,wBAAgB,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAShF;AAED,6DAA6D;AAC7D,wBAAgB,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAEvE;AAED,qEAAqE;AACrE,wBAAgB,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,aAAa,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAK1E;AAED;;;;GAIG;AACH,wBAAgB,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAC9B,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,EACf,OAAO,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,GAChD,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAeZ;AAED;;;GAGG;AACH,wBAAgB,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,CAG5C"}