@stevenvo780/st-lang 4.9.0 → 4.10.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 (121) hide show
  1. package/dist/logic/profiles/natural-deduction-nk/formula.d.ts +18 -0
  2. package/dist/logic/profiles/natural-deduction-nk/formula.d.ts.map +1 -0
  3. package/dist/logic/profiles/natural-deduction-nk/formula.js +102 -0
  4. package/dist/logic/profiles/natural-deduction-nk/formula.js.map +1 -0
  5. package/dist/logic/profiles/natural-deduction-nk/index.d.ts +5 -0
  6. package/dist/logic/profiles/natural-deduction-nk/index.d.ts.map +1 -0
  7. package/dist/logic/profiles/natural-deduction-nk/index.js +28 -0
  8. package/dist/logic/profiles/natural-deduction-nk/index.js.map +1 -0
  9. package/dist/logic/profiles/natural-deduction-nk/prover.d.ts +49 -0
  10. package/dist/logic/profiles/natural-deduction-nk/prover.d.ts.map +1 -0
  11. package/dist/logic/profiles/natural-deduction-nk/prover.js +557 -0
  12. package/dist/logic/profiles/natural-deduction-nk/prover.js.map +1 -0
  13. package/dist/logic/profiles/natural-deduction-nk/types.d.ts +48 -0
  14. package/dist/logic/profiles/natural-deduction-nk/types.d.ts.map +1 -0
  15. package/dist/logic/profiles/natural-deduction-nk/types.js +35 -0
  16. package/dist/logic/profiles/natural-deduction-nk/types.js.map +1 -0
  17. package/dist/reasoning/automata/dfa.d.ts +17 -0
  18. package/dist/reasoning/automata/dfa.d.ts.map +1 -0
  19. package/dist/reasoning/automata/dfa.js +276 -0
  20. package/dist/reasoning/automata/dfa.js.map +1 -0
  21. package/dist/reasoning/automata/index.d.ts +8 -0
  22. package/dist/reasoning/automata/index.d.ts.map +1 -0
  23. package/dist/reasoning/automata/index.js +64 -0
  24. package/dist/reasoning/automata/index.js.map +1 -0
  25. package/dist/reasoning/automata/languages.d.ts +10 -0
  26. package/dist/reasoning/automata/languages.d.ts.map +1 -0
  27. package/dist/reasoning/automata/languages.js +78 -0
  28. package/dist/reasoning/automata/languages.js.map +1 -0
  29. package/dist/reasoning/automata/nfa.d.ts +8 -0
  30. package/dist/reasoning/automata/nfa.d.ts.map +1 -0
  31. package/dist/reasoning/automata/nfa.js +122 -0
  32. package/dist/reasoning/automata/nfa.js.map +1 -0
  33. package/dist/reasoning/automata/pda.d.ts +10 -0
  34. package/dist/reasoning/automata/pda.d.ts.map +1 -0
  35. package/dist/reasoning/automata/pda.js +169 -0
  36. package/dist/reasoning/automata/pda.js.map +1 -0
  37. package/dist/reasoning/automata/regex.d.ts +6 -0
  38. package/dist/reasoning/automata/regex.d.ts.map +1 -0
  39. package/dist/reasoning/automata/regex.js +259 -0
  40. package/dist/reasoning/automata/regex.js.map +1 -0
  41. package/dist/reasoning/automata/types.d.ts +69 -0
  42. package/dist/reasoning/automata/types.d.ts.map +1 -0
  43. package/dist/reasoning/automata/types.js +29 -0
  44. package/dist/reasoning/automata/types.js.map +1 -0
  45. package/dist/reasoning/computability/index.d.ts +239 -0
  46. package/dist/reasoning/computability/index.d.ts.map +1 -0
  47. package/dist/reasoning/computability/index.js +851 -0
  48. package/dist/reasoning/computability/index.js.map +1 -0
  49. package/dist/reasoning/number-theory/crt.d.ts +9 -0
  50. package/dist/reasoning/number-theory/crt.d.ts.map +1 -0
  51. package/dist/reasoning/number-theory/crt.js +39 -0
  52. package/dist/reasoning/number-theory/crt.js.map +1 -0
  53. package/dist/reasoning/number-theory/diophantine.d.ts +10 -0
  54. package/dist/reasoning/number-theory/diophantine.d.ts.map +1 -0
  55. package/dist/reasoning/number-theory/diophantine.js +87 -0
  56. package/dist/reasoning/number-theory/diophantine.js.map +1 -0
  57. package/dist/reasoning/number-theory/factorization.d.ts +12 -0
  58. package/dist/reasoning/number-theory/factorization.d.ts.map +1 -0
  59. package/dist/reasoning/number-theory/factorization.js +136 -0
  60. package/dist/reasoning/number-theory/factorization.js.map +1 -0
  61. package/dist/reasoning/number-theory/gcd.d.ts +8 -0
  62. package/dist/reasoning/number-theory/gcd.d.ts.map +1 -0
  63. package/dist/reasoning/number-theory/gcd.js +51 -0
  64. package/dist/reasoning/number-theory/gcd.js.map +1 -0
  65. package/dist/reasoning/number-theory/index.d.ts +9 -0
  66. package/dist/reasoning/number-theory/index.d.ts.map +1 -0
  67. package/dist/reasoning/number-theory/index.js +46 -0
  68. package/dist/reasoning/number-theory/index.js.map +1 -0
  69. package/dist/reasoning/number-theory/modular.d.ts +6 -0
  70. package/dist/reasoning/number-theory/modular.d.ts.map +1 -0
  71. package/dist/reasoning/number-theory/modular.js +75 -0
  72. package/dist/reasoning/number-theory/modular.js.map +1 -0
  73. package/dist/reasoning/number-theory/primality.d.ts +6 -0
  74. package/dist/reasoning/number-theory/primality.d.ts.map +1 -0
  75. package/dist/reasoning/number-theory/primality.js +144 -0
  76. package/dist/reasoning/number-theory/primality.js.map +1 -0
  77. package/dist/reasoning/number-theory/symbols.d.ts +3 -0
  78. package/dist/reasoning/number-theory/symbols.d.ts.map +1 -0
  79. package/dist/reasoning/number-theory/symbols.js +57 -0
  80. package/dist/reasoning/number-theory/symbols.js.map +1 -0
  81. package/dist/reasoning/real-analysis/index.d.ts +127 -0
  82. package/dist/reasoning/real-analysis/index.d.ts.map +1 -0
  83. package/dist/reasoning/real-analysis/index.js +638 -0
  84. package/dist/reasoning/real-analysis/index.js.map +1 -0
  85. package/dist/reasoning/topology/index.d.ts +41 -0
  86. package/dist/reasoning/topology/index.d.ts.map +1 -0
  87. package/dist/reasoning/topology/index.js +739 -0
  88. package/dist/reasoning/topology/index.js.map +1 -0
  89. package/dist/tests/logic/profiles/natural-deduction-nk/nk.test.d.ts +2 -0
  90. package/dist/tests/logic/profiles/natural-deduction-nk/nk.test.d.ts.map +1 -0
  91. package/dist/tests/logic/profiles/natural-deduction-nk/nk.test.js +288 -0
  92. package/dist/tests/logic/profiles/natural-deduction-nk/nk.test.js.map +1 -0
  93. package/dist/tests/reasoning/automata/automata.test.d.ts +2 -0
  94. package/dist/tests/reasoning/automata/automata.test.d.ts.map +1 -0
  95. package/dist/tests/reasoning/automata/automata.test.js +310 -0
  96. package/dist/tests/reasoning/automata/automata.test.js.map +1 -0
  97. package/dist/tests/reasoning/computability/computability.test.d.ts +2 -0
  98. package/dist/tests/reasoning/computability/computability.test.d.ts.map +1 -0
  99. package/dist/tests/reasoning/computability/computability.test.js +246 -0
  100. package/dist/tests/reasoning/computability/computability.test.js.map +1 -0
  101. package/dist/tests/reasoning/number-theory/number-theory.test.d.ts +2 -0
  102. package/dist/tests/reasoning/number-theory/number-theory.test.d.ts.map +1 -0
  103. package/dist/tests/reasoning/number-theory/number-theory.test.js +170 -0
  104. package/dist/tests/reasoning/number-theory/number-theory.test.js.map +1 -0
  105. package/dist/tests/reasoning/real-analysis/real-analysis.test.d.ts +2 -0
  106. package/dist/tests/reasoning/real-analysis/real-analysis.test.d.ts.map +1 -0
  107. package/dist/tests/reasoning/real-analysis/real-analysis.test.js +197 -0
  108. package/dist/tests/reasoning/real-analysis/real-analysis.test.js.map +1 -0
  109. package/dist/tests/reasoning/topology/topology.test.d.ts +2 -0
  110. package/dist/tests/reasoning/topology/topology.test.d.ts.map +1 -0
  111. package/dist/tests/reasoning/topology/topology.test.js +327 -0
  112. package/dist/tests/reasoning/topology/topology.test.js.map +1 -0
  113. package/dist/tests/tooling/exporters/lean4/lean4-exporter.test.d.ts +2 -0
  114. package/dist/tests/tooling/exporters/lean4/lean4-exporter.test.d.ts.map +1 -0
  115. package/dist/tests/tooling/exporters/lean4/lean4-exporter.test.js +473 -0
  116. package/dist/tests/tooling/exporters/lean4/lean4-exporter.test.js.map +1 -0
  117. package/dist/tooling/exporters/lean4/index.d.ts +47 -0
  118. package/dist/tooling/exporters/lean4/index.d.ts.map +1 -0
  119. package/dist/tooling/exporters/lean4/index.js +423 -0
  120. package/dist/tooling/exporters/lean4/index.js.map +1 -0
  121. package/package.json +1 -1
@@ -0,0 +1,144 @@
1
+ "use strict";
2
+ // ============================================================
3
+ // Tests de primalidad.
4
+ // ============================================================
5
+ // isPrime — wrapper que decide entre trial-division y Miller-Rabin
6
+ // según el tamaño de n.
7
+ // millerRabin — test probabilístico, determinístico para los testigos
8
+ // estándar hasta 3.3·10^14 (con la lista de testigos
9
+ // [2,3,5,7,11,13,17,19,23,29,31,37]).
10
+ // nextPrime / previousPrime — siguiente/previo primo respecto a n.
11
+ // primesBelow — criba de Eratóstenes hasta n (n: number, exclusivo).
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.millerRabin = millerRabin;
14
+ exports.isPrime = isPrime;
15
+ exports.nextPrime = nextPrime;
16
+ exports.previousPrime = previousPrime;
17
+ exports.primesBelow = primesBelow;
18
+ const modular_1 = require("./modular");
19
+ const SMALL_PRIMES = [
20
+ 2n,
21
+ 3n,
22
+ 5n,
23
+ 7n,
24
+ 11n,
25
+ 13n,
26
+ 17n,
27
+ 19n,
28
+ 23n,
29
+ 29n,
30
+ 31n,
31
+ 37n,
32
+ 41n,
33
+ 43n,
34
+ 47n,
35
+ 53n,
36
+ 59n,
37
+ 61n,
38
+ 67n,
39
+ 71n,
40
+ 73n,
41
+ 79n,
42
+ 83n,
43
+ 89n,
44
+ 97n,
45
+ ];
46
+ // Testigos suficientes (determinísticos) para n < 3,317,044,064,679,887,385,961,981.
47
+ const DEFAULT_WITNESSES = [2n, 3n, 5n, 7n, 11n, 13n, 17n, 19n, 23n, 29n, 31n, 37n];
48
+ function millerRabin(n, witnesses = DEFAULT_WITNESSES) {
49
+ if (n < 2n)
50
+ return false;
51
+ if (n < 4n)
52
+ return true;
53
+ if ((n & 1n) === 0n)
54
+ return false;
55
+ // Escribir n-1 = 2^s · d con d impar.
56
+ let d = n - 1n;
57
+ let s = 0n;
58
+ while ((d & 1n) === 0n) {
59
+ d >>= 1n;
60
+ s += 1n;
61
+ }
62
+ witness: for (const a0 of witnesses) {
63
+ const a = a0 % n;
64
+ if (a === 0n)
65
+ continue;
66
+ let x = (0, modular_1.modPow)(a, d, n);
67
+ if (x === 1n || x === n - 1n)
68
+ continue;
69
+ for (let r = 1n; r < s; r++) {
70
+ x = (x * x) % n;
71
+ if (x === n - 1n)
72
+ continue witness;
73
+ }
74
+ return false;
75
+ }
76
+ return true;
77
+ }
78
+ function isPrime(n) {
79
+ if (n < 2n)
80
+ return false;
81
+ for (const p of SMALL_PRIMES) {
82
+ if (n === p)
83
+ return true;
84
+ if (n % p === 0n)
85
+ return false;
86
+ }
87
+ return millerRabin(n);
88
+ }
89
+ function nextPrime(n) {
90
+ if (n < 2n)
91
+ return 2n;
92
+ let c = n + 1n;
93
+ if (c === 2n)
94
+ return 2n;
95
+ if ((c & 1n) === 0n)
96
+ c += 1n;
97
+ while (!isPrime(c))
98
+ c += 2n;
99
+ return c;
100
+ }
101
+ function previousPrime(n) {
102
+ if (n <= 2n) {
103
+ throw new RangeError('previousPrime: no hay primo menor que 2');
104
+ }
105
+ if (n === 3n)
106
+ return 2n;
107
+ let c = n - 1n;
108
+ if (c === 2n)
109
+ return 2n;
110
+ if ((c & 1n) === 0n)
111
+ c -= 1n;
112
+ while (c >= 2n && !isPrime(c))
113
+ c -= 2n;
114
+ if (c < 2n) {
115
+ throw new RangeError(`previousPrime: no hay primo menor que ${n}`);
116
+ }
117
+ return c;
118
+ }
119
+ // Criba de Eratóstenes. n: number (acotamos a Number por la criba).
120
+ function primesBelow(n) {
121
+ if (!Number.isFinite(n) || n < 2)
122
+ return [];
123
+ const limit = Math.floor(n);
124
+ const sieve = new Uint8Array(limit);
125
+ // sieve[i] === 0 → i es primo candidato.
126
+ // Marcamos 0 y 1 como compuestos.
127
+ sieve[0] = 1;
128
+ if (limit > 1)
129
+ sieve[1] = 1;
130
+ const sqrt = Math.floor(Math.sqrt(limit - 1));
131
+ for (let i = 2; i <= sqrt; i++) {
132
+ if (sieve[i] === 0) {
133
+ for (let j = i * i; j < limit; j += i)
134
+ sieve[j] = 1;
135
+ }
136
+ }
137
+ const out = [];
138
+ for (let i = 2; i < limit; i++) {
139
+ if (sieve[i] === 0)
140
+ out.push(BigInt(i));
141
+ }
142
+ return out;
143
+ }
144
+ //# sourceMappingURL=primality.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"primality.js","sourceRoot":"","sources":["../../../src/reasoning/number-theory/primality.ts"],"names":[],"mappings":";AAAA,+DAA+D;AAC/D,uBAAuB;AACvB,+DAA+D;AAC/D,yEAAyE;AACzE,wCAAwC;AACxC,wEAAwE;AACxE,qEAAqE;AACrE,sDAAsD;AACtD,mEAAmE;AACnE,uEAAuE;;AAmCvE,kCAuBC;AAED,0BAOC;AAED,8BAOC;AAED,sCAaC;AAGD,kCAmBC;AA/GD,uCAAmC;AAEnC,MAAM,YAAY,GAAG;IACnB,EAAE;IACF,EAAE;IACF,EAAE;IACF,EAAE;IACF,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;CACJ,CAAC;AAEF,qFAAqF;AACrF,MAAM,iBAAiB,GAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AAE7F,SAAgB,WAAW,CAAC,CAAS,EAAE,YAAsB,iBAAiB;IAC5E,IAAI,CAAC,GAAG,EAAE;QAAE,OAAO,KAAK,CAAC;IACzB,IAAI,CAAC,GAAG,EAAE;QAAE,OAAO,IAAI,CAAC;IACxB,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK,EAAE;QAAE,OAAO,KAAK,CAAC;IAClC,sCAAsC;IACtC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;IACf,IAAI,CAAC,GAAG,EAAE,CAAC;IACX,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC;QACvB,CAAC,KAAK,EAAE,CAAC;QACT,CAAC,IAAI,EAAE,CAAC;IACV,CAAC;IACD,OAAO,EAAE,KAAK,MAAM,EAAE,IAAI,SAAS,EAAE,CAAC;QACpC,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QACjB,IAAI,CAAC,KAAK,EAAE;YAAE,SAAS;QACvB,IAAI,CAAC,GAAG,IAAA,gBAAM,EAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACxB,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE;YAAE,SAAS;QACvC,KAAK,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC5B,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;YAChB,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE;gBAAE,SAAS,OAAO,CAAC;QACrC,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAgB,OAAO,CAAC,CAAS;IAC/B,IAAI,CAAC,GAAG,EAAE;QAAE,OAAO,KAAK,CAAC;IACzB,KAAK,MAAM,CAAC,IAAI,YAAY,EAAE,CAAC;QAC7B,IAAI,CAAC,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QACzB,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE;YAAE,OAAO,KAAK,CAAC;IACjC,CAAC;IACD,OAAO,WAAW,CAAC,CAAC,CAAC,CAAC;AACxB,CAAC;AAED,SAAgB,SAAS,CAAC,CAAS;IACjC,IAAI,CAAC,GAAG,EAAE;QAAE,OAAO,EAAE,CAAC;IACtB,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;IACf,IAAI,CAAC,KAAK,EAAE;QAAE,OAAO,EAAE,CAAC;IACxB,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK,EAAE;QAAE,CAAC,IAAI,EAAE,CAAC;IAC7B,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;QAAE,CAAC,IAAI,EAAE,CAAC;IAC5B,OAAO,CAAC,CAAC;AACX,CAAC;AAED,SAAgB,aAAa,CAAC,CAAS;IACrC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;QACZ,MAAM,IAAI,UAAU,CAAC,yCAAyC,CAAC,CAAC;IAClE,CAAC;IACD,IAAI,CAAC,KAAK,EAAE;QAAE,OAAO,EAAE,CAAC;IACxB,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;IACf,IAAI,CAAC,KAAK,EAAE;QAAE,OAAO,EAAE,CAAC;IACxB,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK,EAAE;QAAE,CAAC,IAAI,EAAE,CAAC;IAC7B,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;QAAE,CAAC,IAAI,EAAE,CAAC;IACvC,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;QACX,MAAM,IAAI,UAAU,CAAC,yCAAyC,CAAC,EAAE,CAAC,CAAC;IACrE,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED,oEAAoE;AACpE,SAAgB,WAAW,CAAC,CAAS;IACnC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;QAAE,OAAO,EAAE,CAAC;IAC5C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC5B,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC;IACpC,2CAA2C;IAC3C,kCAAkC;IAClC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACb,IAAI,KAAK,GAAG,CAAC;QAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAC5B,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;IAC9C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;QAC/B,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;YACnB,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC;gBAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACtD,CAAC;IACH,CAAC;IACD,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;QAC/B,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;YAAE,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1C,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -0,0 +1,3 @@
1
+ export declare function legendreSymbol(a: bigint, p: bigint): -1 | 0 | 1;
2
+ export declare function jacobiSymbol(a: bigint, n: bigint): -1 | 0 | 1;
3
+ //# sourceMappingURL=symbols.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"symbols.d.ts","sourceRoot":"","sources":["../../../src/reasoning/number-theory/symbols.ts"],"names":[],"mappings":"AAWA,wBAAgB,cAAc,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAY/D;AAED,wBAAgB,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAwB7D"}
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+ // ============================================================
3
+ // Símbolos de Legendre y Jacobi.
4
+ // ============================================================
5
+ // legendreSymbol(a, p): a^((p-1)/2) mod p, normalizado a {-1, 0, 1}.
6
+ // Requiere p primo impar.
7
+ // jacobiSymbol(a, n): generalización a n impar > 0 vía reciprocidad
8
+ // cuadrática. Coincide con Legendre cuando n es
9
+ // primo y siempre satisface jacobi(a,n) ∈ {-1,0,1}.
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ exports.legendreSymbol = legendreSymbol;
12
+ exports.jacobiSymbol = jacobiSymbol;
13
+ const modular_1 = require("./modular");
14
+ function legendreSymbol(a, p) {
15
+ if (p < 3n || (p & 1n) === 0n) {
16
+ throw new RangeError(`legendreSymbol: p debe ser primo impar, recibido ${p}`);
17
+ }
18
+ const aR = (0, modular_1.mod)(a, p);
19
+ if (aR === 0n)
20
+ return 0;
21
+ const r = (0, modular_1.modPow)(aR, (p - 1n) / 2n, p);
22
+ if (r === 1n)
23
+ return 1;
24
+ if (r === p - 1n)
25
+ return -1;
26
+ // Si p no es primo, modPow no garantiza ±1; lo reportamos como 0
27
+ // (el contrato exige p primo, pero somos defensivos).
28
+ return 0;
29
+ }
30
+ function jacobiSymbol(a, n) {
31
+ if (n <= 0n || (n & 1n) === 0n) {
32
+ throw new RangeError(`jacobiSymbol: n debe ser positivo impar, recibido ${n}`);
33
+ }
34
+ let aR = (0, modular_1.mod)(a, n);
35
+ let nR = n;
36
+ let result = 1;
37
+ while (aR !== 0n) {
38
+ while ((aR & 1n) === 0n) {
39
+ aR >>= 1n;
40
+ const r = nR & 7n; // nR mod 8
41
+ if (r === 3n || r === 5n)
42
+ result = -result;
43
+ }
44
+ // Swap (a,n).
45
+ const tmp = aR;
46
+ aR = nR;
47
+ nR = tmp;
48
+ if ((aR & 3n) === 3n && (nR & 3n) === 3n) {
49
+ result = -result;
50
+ }
51
+ aR = aR % nR;
52
+ }
53
+ if (nR === 1n)
54
+ return result;
55
+ return 0;
56
+ }
57
+ //# sourceMappingURL=symbols.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"symbols.js","sourceRoot":"","sources":["../../../src/reasoning/number-theory/symbols.ts"],"names":[],"mappings":";AAAA,+DAA+D;AAC/D,iCAAiC;AACjC,+DAA+D;AAC/D,qEAAqE;AACrE,+CAA+C;AAC/C,qEAAqE;AACrE,qEAAqE;AACrE,yEAAyE;;AAIzE,wCAYC;AAED,oCAwBC;AAxCD,uCAAwC;AAExC,SAAgB,cAAc,CAAC,CAAS,EAAE,CAAS;IACjD,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC;QAC9B,MAAM,IAAI,UAAU,CAAC,oDAAoD,CAAC,EAAE,CAAC,CAAC;IAChF,CAAC;IACD,MAAM,EAAE,GAAG,IAAA,aAAG,EAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACrB,IAAI,EAAE,KAAK,EAAE;QAAE,OAAO,CAAC,CAAC;IACxB,MAAM,CAAC,GAAG,IAAA,gBAAM,EAAC,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;IACvC,IAAI,CAAC,KAAK,EAAE;QAAE,OAAO,CAAC,CAAC;IACvB,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE;QAAE,OAAO,CAAC,CAAC,CAAC;IAC5B,iEAAiE;IACjE,sDAAsD;IACtD,OAAO,CAAC,CAAC;AACX,CAAC;AAED,SAAgB,YAAY,CAAC,CAAS,EAAE,CAAS;IAC/C,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC;QAC/B,MAAM,IAAI,UAAU,CAAC,qDAAqD,CAAC,EAAE,CAAC,CAAC;IACjF,CAAC;IACD,IAAI,EAAE,GAAG,IAAA,aAAG,EAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACnB,IAAI,EAAE,GAAG,CAAC,CAAC;IACX,IAAI,MAAM,GAAW,CAAC,CAAC;IACvB,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC;QACjB,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC;YACxB,EAAE,KAAK,EAAE,CAAC;YACV,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,WAAW;YAC9B,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE;gBAAE,MAAM,GAAG,CAAC,MAAgB,CAAC;QACvD,CAAC;QACD,cAAc;QACd,MAAM,GAAG,GAAG,EAAE,CAAC;QACf,EAAE,GAAG,EAAE,CAAC;QACR,EAAE,GAAG,GAAG,CAAC;QACT,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC;YACzC,MAAM,GAAG,CAAC,MAAgB,CAAC;QAC7B,CAAC;QACD,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;IACf,CAAC;IACD,IAAI,EAAE,KAAK,EAAE;QAAE,OAAO,MAAM,CAAC;IAC7B,OAAO,CAAC,CAAC;AACX,CAAC"}
@@ -0,0 +1,127 @@
1
+ export type RealFn = (x: number) => number;
2
+ export interface LimitClaim {
3
+ fn: RealFn;
4
+ point: number;
5
+ value: number;
6
+ }
7
+ export interface LimitVerification {
8
+ holds: boolean;
9
+ counterexample?: number;
10
+ suggestedDelta?: number;
11
+ }
12
+ /**
13
+ * Verifica numéricamente la afirmación
14
+ * ∀ε>0 ∃δ>0 ∀x (0 < |x-point| < δ → |fn(x)-value| < ε)
15
+ * para el ε dado. Devuelve δ sugerido (o counterexample si falla
16
+ * incluso con δ extremadamente pequeño).
17
+ *
18
+ * Estrategia: bisecta δ desde 1 hacia abajo, muestreando puntos en
19
+ * (point-δ, point) ∪ (point, point+δ); si todos cumplen |f(x)-L|<ε,
20
+ * δ es válido. Si no encontramos δ válido tras `maxIter` iteraciones,
21
+ * el último x que falló se reporta como counterexample.
22
+ */
23
+ export declare function verifyLimit(claim: LimitClaim, epsilon: number, deltaFinder?: (eps: number) => number): LimitVerification;
24
+ /**
25
+ * Encuentra (o detecta divergencia/indeterminación de) lim_{x→point} fn(x)
26
+ * por muestreo bilateral con refinamiento sucesivo.
27
+ *
28
+ * Devuelve:
29
+ * • número L si las dos colas convergen al mismo valor con tolerancia
30
+ * • 'diverges' si crece sin cota
31
+ * • 'unknown' si las colas no coinciden (límite no existe / discontinuidad de salto)
32
+ */
33
+ export declare function findLimit(fn: RealFn, point: number, opts?: {
34
+ tolerance?: number;
35
+ samples?: number;
36
+ }): number | 'diverges' | 'unknown';
37
+ /**
38
+ * fn es continua en `point` si lim_{x→point} fn(x) = fn(point) con tol `eps`.
39
+ */
40
+ export declare function isContinuousAt(fn: RealFn, point: number, eps?: number): boolean;
41
+ /**
42
+ * Verificación numérica de continuidad uniforme en [a,b]:
43
+ * ∀ε ∃δ ∀x,y∈[a,b] (|x-y|<δ → |f(x)-f(y)|<ε)
44
+ * Estrategia: para cada δ candidato muestreamos pares (x_i, x_i+δ)
45
+ * cubriendo el intervalo y verificamos que |f(x)-f(x+δ)| < eps en todos.
46
+ */
47
+ export declare function isUniformlyContinuous(fn: RealFn, domain: [number, number], eps?: number): boolean;
48
+ /**
49
+ * Detecta puntos de discontinuidad por muestreo + chequeo local.
50
+ */
51
+ export declare function findDiscontinuities(fn: RealFn, domain: [number, number], samples?: number): number[];
52
+ export interface Derivative {
53
+ value: number;
54
+ method: 'forward' | 'backward' | 'central' | 'richardson';
55
+ }
56
+ export declare function derivative(fn: RealFn, x: number, opts?: {
57
+ h?: number;
58
+ method?: Derivative['method'];
59
+ }): Derivative;
60
+ /**
61
+ * n-ésima derivada por diferencias finitas centrales iteradas (fórmula
62
+ * con coeficientes binomiales con signo alternado).
63
+ *
64
+ * f^(n)(x) ≈ (1/h^n) · Σ_{k=0..n} (-1)^k C(n,k) f(x + (n/2 - k)·h)
65
+ */
66
+ export declare function nthDerivative(fn: RealFn, x: number, n: number, h?: number): number;
67
+ /**
68
+ * Diferenciable en `point` si las derivadas laterales coinciden con tolerancia.
69
+ */
70
+ export declare function isDifferentiableAt(fn: RealFn, point: number, eps?: number): boolean;
71
+ /**
72
+ * Encuentra puntos críticos (f'(x) ≈ 0) por bisección en cambios de signo
73
+ * de la derivada numérica.
74
+ */
75
+ export declare function findCriticalPoints(fn: RealFn, domain: [number, number], samples?: number): number[];
76
+ export interface Integral {
77
+ value: number;
78
+ method: 'simpson' | 'trapezoidal' | 'romberg' | 'gaussian';
79
+ }
80
+ export declare function integrate(fn: RealFn, from: number, to: number, opts?: {
81
+ method?: Integral['method'];
82
+ subdivisions?: number;
83
+ }): Integral;
84
+ export interface SeriesConvergence {
85
+ converges: boolean;
86
+ sumApprox?: number;
87
+ reason?: string;
88
+ }
89
+ /**
90
+ * Test de la razón sobre coeficientes de una serie Σ a_n (no Σ a_n x^n):
91
+ * L = lim |a_{n+1}/a_n|
92
+ * L < 1 ⇒ converge ; L > 1 ⇒ diverge ; L = 1 ⇒ indeciso.
93
+ */
94
+ export declare function ratioTest(coefficients: number[]): SeriesConvergence;
95
+ /**
96
+ * Test de la raíz: L = lim sup |a_n|^{1/n}.
97
+ */
98
+ export declare function rootTest(coefficients: number[]): SeriesConvergence;
99
+ export declare function partialSum(fn: (n: number) => number, terms: number): number;
100
+ export declare function sequenceLimit(seq: (n: number) => number, opts?: {
101
+ maxTerms?: number;
102
+ tolerance?: number;
103
+ }): {
104
+ converges: boolean;
105
+ limit?: number;
106
+ rate?: 'linear' | 'quadratic' | 'unknown';
107
+ };
108
+ /**
109
+ * Busca c ∈ (a,b) tal que f'(c) = (f(b)-f(a))/(b-a).
110
+ * Si fn es continua en [a,b] y derivable en (a,b), por MVT existe.
111
+ * Aquí asumimos eso y buscamos c por bisección sobre f'(x) - slope.
112
+ */
113
+ export declare function meanValueTheorem(fn: RealFn, derivativeFn: RealFn, a: number, b: number, tolerance?: number): {
114
+ holds: boolean;
115
+ c?: number;
116
+ };
117
+ /**
118
+ * Polinomio de Taylor de orden N de `fn` centrado en `center`, devuelto
119
+ * como función. Las derivadas se calculan numéricamente con `nthDerivative`.
120
+ */
121
+ export declare function taylorPolynomial(fn: RealFn, center: number, order: number): (x: number) => number;
122
+ /**
123
+ * Cota grosera del resto de Lagrange: |R_n(x)| ≤ M·|x-c|^(n+1)/(n+1)!
124
+ * con M estimado como sup |f^(n+1)| sobre un muestreo entre c y x.
125
+ */
126
+ export declare function taylorRemainderBound(fn: RealFn, center: number, x: number, order: number): number;
127
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/reasoning/real-analysis/index.ts"],"names":[],"mappings":"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"}