@stevenvo780/st-lang 4.8.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 (265) 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/logic/profiles/quantum/index.d.ts +153 -0
  18. package/dist/logic/profiles/quantum/index.d.ts.map +1 -0
  19. package/dist/logic/profiles/quantum/index.js +788 -0
  20. package/dist/logic/profiles/quantum/index.js.map +1 -0
  21. package/dist/namespaces/reasoning.d.ts +2 -1
  22. package/dist/namespaces/reasoning.d.ts.map +1 -1
  23. package/dist/namespaces/reasoning.js +3 -1
  24. package/dist/namespaces/reasoning.js.map +1 -1
  25. package/dist/proof-systems/certificate/canonical.d.ts +18 -0
  26. package/dist/proof-systems/certificate/canonical.d.ts.map +1 -0
  27. package/dist/proof-systems/certificate/canonical.js +79 -0
  28. package/dist/proof-systems/certificate/canonical.js.map +1 -0
  29. package/dist/proof-systems/certificate/generate.d.ts +39 -0
  30. package/dist/proof-systems/certificate/generate.d.ts.map +1 -0
  31. package/dist/proof-systems/certificate/generate.js +259 -0
  32. package/dist/proof-systems/certificate/generate.js.map +1 -0
  33. package/dist/proof-systems/certificate/index.d.ts +7 -0
  34. package/dist/proof-systems/certificate/index.d.ts.map +1 -0
  35. package/dist/proof-systems/certificate/index.js +23 -0
  36. package/dist/proof-systems/certificate/index.js.map +1 -0
  37. package/dist/proof-systems/certificate/lfsc.d.ts +15 -0
  38. package/dist/proof-systems/certificate/lfsc.d.ts.map +1 -0
  39. package/dist/proof-systems/certificate/lfsc.js +395 -0
  40. package/dist/proof-systems/certificate/lfsc.js.map +1 -0
  41. package/dist/proof-systems/certificate/rules.d.ts +8 -0
  42. package/dist/proof-systems/certificate/rules.d.ts.map +1 -0
  43. package/dist/proof-systems/certificate/rules.js +369 -0
  44. package/dist/proof-systems/certificate/rules.js.map +1 -0
  45. package/dist/proof-systems/certificate/types.d.ts +114 -0
  46. package/dist/proof-systems/certificate/types.d.ts.map +1 -0
  47. package/dist/proof-systems/certificate/types.js +18 -0
  48. package/dist/proof-systems/certificate/types.js.map +1 -0
  49. package/dist/proof-systems/certificate/verify.d.ts +20 -0
  50. package/dist/proof-systems/certificate/verify.d.ts.map +1 -0
  51. package/dist/proof-systems/certificate/verify.js +171 -0
  52. package/dist/proof-systems/certificate/verify.js.map +1 -0
  53. package/dist/reasoning/automata/dfa.d.ts +17 -0
  54. package/dist/reasoning/automata/dfa.d.ts.map +1 -0
  55. package/dist/reasoning/automata/dfa.js +276 -0
  56. package/dist/reasoning/automata/dfa.js.map +1 -0
  57. package/dist/reasoning/automata/index.d.ts +8 -0
  58. package/dist/reasoning/automata/index.d.ts.map +1 -0
  59. package/dist/reasoning/automata/index.js +64 -0
  60. package/dist/reasoning/automata/index.js.map +1 -0
  61. package/dist/reasoning/automata/languages.d.ts +10 -0
  62. package/dist/reasoning/automata/languages.d.ts.map +1 -0
  63. package/dist/reasoning/automata/languages.js +78 -0
  64. package/dist/reasoning/automata/languages.js.map +1 -0
  65. package/dist/reasoning/automata/nfa.d.ts +8 -0
  66. package/dist/reasoning/automata/nfa.d.ts.map +1 -0
  67. package/dist/reasoning/automata/nfa.js +122 -0
  68. package/dist/reasoning/automata/nfa.js.map +1 -0
  69. package/dist/reasoning/automata/pda.d.ts +10 -0
  70. package/dist/reasoning/automata/pda.d.ts.map +1 -0
  71. package/dist/reasoning/automata/pda.js +169 -0
  72. package/dist/reasoning/automata/pda.js.map +1 -0
  73. package/dist/reasoning/automata/regex.d.ts +6 -0
  74. package/dist/reasoning/automata/regex.d.ts.map +1 -0
  75. package/dist/reasoning/automata/regex.js +259 -0
  76. package/dist/reasoning/automata/regex.js.map +1 -0
  77. package/dist/reasoning/automata/types.d.ts +69 -0
  78. package/dist/reasoning/automata/types.d.ts.map +1 -0
  79. package/dist/reasoning/automata/types.js +29 -0
  80. package/dist/reasoning/automata/types.js.map +1 -0
  81. package/dist/reasoning/ban-logic/analyze.d.ts +31 -0
  82. package/dist/reasoning/ban-logic/analyze.d.ts.map +1 -0
  83. package/dist/reasoning/ban-logic/analyze.js +113 -0
  84. package/dist/reasoning/ban-logic/analyze.js.map +1 -0
  85. package/dist/reasoning/ban-logic/index.d.ts +7 -0
  86. package/dist/reasoning/ban-logic/index.d.ts.map +1 -0
  87. package/dist/reasoning/ban-logic/index.js +66 -0
  88. package/dist/reasoning/ban-logic/index.js.map +1 -0
  89. package/dist/reasoning/ban-logic/protocols.d.ts +54 -0
  90. package/dist/reasoning/ban-logic/protocols.d.ts.map +1 -0
  91. package/dist/reasoning/ban-logic/protocols.js +219 -0
  92. package/dist/reasoning/ban-logic/protocols.js.map +1 -0
  93. package/dist/reasoning/ban-logic/rules.d.ts +83 -0
  94. package/dist/reasoning/ban-logic/rules.d.ts.map +1 -0
  95. package/dist/reasoning/ban-logic/rules.js +409 -0
  96. package/dist/reasoning/ban-logic/rules.js.map +1 -0
  97. package/dist/reasoning/ban-logic/terms.d.ts +26 -0
  98. package/dist/reasoning/ban-logic/terms.d.ts.map +1 -0
  99. package/dist/reasoning/ban-logic/terms.js +262 -0
  100. package/dist/reasoning/ban-logic/terms.js.map +1 -0
  101. package/dist/reasoning/ban-logic/types.d.ts +107 -0
  102. package/dist/reasoning/ban-logic/types.d.ts.map +1 -0
  103. package/dist/reasoning/ban-logic/types.js +27 -0
  104. package/dist/reasoning/ban-logic/types.js.map +1 -0
  105. package/dist/reasoning/computability/index.d.ts +239 -0
  106. package/dist/reasoning/computability/index.d.ts.map +1 -0
  107. package/dist/reasoning/computability/index.js +851 -0
  108. package/dist/reasoning/computability/index.js.map +1 -0
  109. package/dist/reasoning/differential-privacy/index.d.ts +121 -0
  110. package/dist/reasoning/differential-privacy/index.d.ts.map +1 -0
  111. package/dist/reasoning/differential-privacy/index.js +417 -0
  112. package/dist/reasoning/differential-privacy/index.js.map +1 -0
  113. package/dist/reasoning/number-theory/crt.d.ts +9 -0
  114. package/dist/reasoning/number-theory/crt.d.ts.map +1 -0
  115. package/dist/reasoning/number-theory/crt.js +39 -0
  116. package/dist/reasoning/number-theory/crt.js.map +1 -0
  117. package/dist/reasoning/number-theory/diophantine.d.ts +10 -0
  118. package/dist/reasoning/number-theory/diophantine.d.ts.map +1 -0
  119. package/dist/reasoning/number-theory/diophantine.js +87 -0
  120. package/dist/reasoning/number-theory/diophantine.js.map +1 -0
  121. package/dist/reasoning/number-theory/factorization.d.ts +12 -0
  122. package/dist/reasoning/number-theory/factorization.d.ts.map +1 -0
  123. package/dist/reasoning/number-theory/factorization.js +136 -0
  124. package/dist/reasoning/number-theory/factorization.js.map +1 -0
  125. package/dist/reasoning/number-theory/gcd.d.ts +8 -0
  126. package/dist/reasoning/number-theory/gcd.d.ts.map +1 -0
  127. package/dist/reasoning/number-theory/gcd.js +51 -0
  128. package/dist/reasoning/number-theory/gcd.js.map +1 -0
  129. package/dist/reasoning/number-theory/index.d.ts +9 -0
  130. package/dist/reasoning/number-theory/index.d.ts.map +1 -0
  131. package/dist/reasoning/number-theory/index.js +46 -0
  132. package/dist/reasoning/number-theory/index.js.map +1 -0
  133. package/dist/reasoning/number-theory/modular.d.ts +6 -0
  134. package/dist/reasoning/number-theory/modular.d.ts.map +1 -0
  135. package/dist/reasoning/number-theory/modular.js +75 -0
  136. package/dist/reasoning/number-theory/modular.js.map +1 -0
  137. package/dist/reasoning/number-theory/primality.d.ts +6 -0
  138. package/dist/reasoning/number-theory/primality.d.ts.map +1 -0
  139. package/dist/reasoning/number-theory/primality.js +144 -0
  140. package/dist/reasoning/number-theory/primality.js.map +1 -0
  141. package/dist/reasoning/number-theory/symbols.d.ts +3 -0
  142. package/dist/reasoning/number-theory/symbols.d.ts.map +1 -0
  143. package/dist/reasoning/number-theory/symbols.js +57 -0
  144. package/dist/reasoning/number-theory/symbols.js.map +1 -0
  145. package/dist/reasoning/real-analysis/index.d.ts +127 -0
  146. package/dist/reasoning/real-analysis/index.d.ts.map +1 -0
  147. package/dist/reasoning/real-analysis/index.js +638 -0
  148. package/dist/reasoning/real-analysis/index.js.map +1 -0
  149. package/dist/reasoning/topology/index.d.ts +41 -0
  150. package/dist/reasoning/topology/index.d.ts.map +1 -0
  151. package/dist/reasoning/topology/index.js +739 -0
  152. package/dist/reasoning/topology/index.js.map +1 -0
  153. package/dist/tests/logic/profiles/natural-deduction-nk/nk.test.d.ts +2 -0
  154. package/dist/tests/logic/profiles/natural-deduction-nk/nk.test.d.ts.map +1 -0
  155. package/dist/tests/logic/profiles/natural-deduction-nk/nk.test.js +288 -0
  156. package/dist/tests/logic/profiles/natural-deduction-nk/nk.test.js.map +1 -0
  157. package/dist/tests/logic/profiles/quantum/quantum.test.d.ts +2 -0
  158. package/dist/tests/logic/profiles/quantum/quantum.test.d.ts.map +1 -0
  159. package/dist/tests/logic/profiles/quantum/quantum.test.js +209 -0
  160. package/dist/tests/logic/profiles/quantum/quantum.test.js.map +1 -0
  161. package/dist/tests/proof-systems/certificate/certificate.test.d.ts +2 -0
  162. package/dist/tests/proof-systems/certificate/certificate.test.d.ts.map +1 -0
  163. package/dist/tests/proof-systems/certificate/certificate.test.js +449 -0
  164. package/dist/tests/proof-systems/certificate/certificate.test.js.map +1 -0
  165. package/dist/tests/reasoning/automata/automata.test.d.ts +2 -0
  166. package/dist/tests/reasoning/automata/automata.test.d.ts.map +1 -0
  167. package/dist/tests/reasoning/automata/automata.test.js +310 -0
  168. package/dist/tests/reasoning/automata/automata.test.js.map +1 -0
  169. package/dist/tests/reasoning/ban-logic/ban-logic.test.d.ts +2 -0
  170. package/dist/tests/reasoning/ban-logic/ban-logic.test.d.ts.map +1 -0
  171. package/dist/tests/reasoning/ban-logic/ban-logic.test.js +270 -0
  172. package/dist/tests/reasoning/ban-logic/ban-logic.test.js.map +1 -0
  173. package/dist/tests/reasoning/computability/computability.test.d.ts +2 -0
  174. package/dist/tests/reasoning/computability/computability.test.d.ts.map +1 -0
  175. package/dist/tests/reasoning/computability/computability.test.js +246 -0
  176. package/dist/tests/reasoning/computability/computability.test.js.map +1 -0
  177. package/dist/tests/reasoning/differential-privacy/differential-privacy.test.d.ts +2 -0
  178. package/dist/tests/reasoning/differential-privacy/differential-privacy.test.d.ts.map +1 -0
  179. package/dist/tests/reasoning/differential-privacy/differential-privacy.test.js +388 -0
  180. package/dist/tests/reasoning/differential-privacy/differential-privacy.test.js.map +1 -0
  181. package/dist/tests/reasoning/number-theory/number-theory.test.d.ts +2 -0
  182. package/dist/tests/reasoning/number-theory/number-theory.test.d.ts.map +1 -0
  183. package/dist/tests/reasoning/number-theory/number-theory.test.js +170 -0
  184. package/dist/tests/reasoning/number-theory/number-theory.test.js.map +1 -0
  185. package/dist/tests/reasoning/real-analysis/real-analysis.test.d.ts +2 -0
  186. package/dist/tests/reasoning/real-analysis/real-analysis.test.d.ts.map +1 -0
  187. package/dist/tests/reasoning/real-analysis/real-analysis.test.js +197 -0
  188. package/dist/tests/reasoning/real-analysis/real-analysis.test.js.map +1 -0
  189. package/dist/tests/reasoning/topology/topology.test.d.ts +2 -0
  190. package/dist/tests/reasoning/topology/topology.test.d.ts.map +1 -0
  191. package/dist/tests/reasoning/topology/topology.test.js +327 -0
  192. package/dist/tests/reasoning/topology/topology.test.js.map +1 -0
  193. package/dist/tests/tooling/exporters/lean4/lean4-exporter.test.d.ts +2 -0
  194. package/dist/tests/tooling/exporters/lean4/lean4-exporter.test.d.ts.map +1 -0
  195. package/dist/tests/tooling/exporters/lean4/lean4-exporter.test.js +473 -0
  196. package/dist/tests/tooling/exporters/lean4/lean4-exporter.test.js.map +1 -0
  197. package/dist/tests/tooling/mathlib/mathlib.test.d.ts +2 -0
  198. package/dist/tests/tooling/mathlib/mathlib.test.d.ts.map +1 -0
  199. package/dist/tests/tooling/mathlib/mathlib.test.js +214 -0
  200. package/dist/tests/tooling/mathlib/mathlib.test.js.map +1 -0
  201. package/dist/tests/type-theory/effects/effects.test.d.ts +2 -0
  202. package/dist/tests/type-theory/effects/effects.test.d.ts.map +1 -0
  203. package/dist/tests/type-theory/effects/effects.test.js +242 -0
  204. package/dist/tests/type-theory/effects/effects.test.js.map +1 -0
  205. package/dist/tooling/exporters/lean4/index.d.ts +47 -0
  206. package/dist/tooling/exporters/lean4/index.d.ts.map +1 -0
  207. package/dist/tooling/exporters/lean4/index.js +423 -0
  208. package/dist/tooling/exporters/lean4/index.js.map +1 -0
  209. package/dist/tooling/mathlib/group.d.ts +27 -0
  210. package/dist/tooling/mathlib/group.d.ts.map +1 -0
  211. package/dist/tooling/mathlib/group.js +89 -0
  212. package/dist/tooling/mathlib/group.js.map +1 -0
  213. package/dist/tooling/mathlib/index.d.ts +8 -0
  214. package/dist/tooling/mathlib/index.d.ts.map +1 -0
  215. package/dist/tooling/mathlib/index.js +40 -0
  216. package/dist/tooling/mathlib/index.js.map +1 -0
  217. package/dist/tooling/mathlib/instances.d.ts +29 -0
  218. package/dist/tooling/mathlib/instances.d.ts.map +1 -0
  219. package/dist/tooling/mathlib/instances.js +139 -0
  220. package/dist/tooling/mathlib/instances.js.map +1 -0
  221. package/dist/tooling/mathlib/lemmas.d.ts +3 -0
  222. package/dist/tooling/mathlib/lemmas.d.ts.map +1 -0
  223. package/dist/tooling/mathlib/lemmas.js +72 -0
  224. package/dist/tooling/mathlib/lemmas.js.map +1 -0
  225. package/dist/tooling/mathlib/order.d.ts +29 -0
  226. package/dist/tooling/mathlib/order.d.ts.map +1 -0
  227. package/dist/tooling/mathlib/order.js +91 -0
  228. package/dist/tooling/mathlib/order.js.map +1 -0
  229. package/dist/tooling/mathlib/ring.d.ts +15 -0
  230. package/dist/tooling/mathlib/ring.d.ts.map +1 -0
  231. package/dist/tooling/mathlib/ring.js +91 -0
  232. package/dist/tooling/mathlib/ring.js.map +1 -0
  233. package/dist/tooling/mathlib/types.d.ts +62 -0
  234. package/dist/tooling/mathlib/types.d.ts.map +1 -0
  235. package/dist/tooling/mathlib/types.js +7 -0
  236. package/dist/tooling/mathlib/types.js.map +1 -0
  237. package/dist/type-theory/effects/core.d.ts +27 -0
  238. package/dist/type-theory/effects/core.d.ts.map +1 -0
  239. package/dist/type-theory/effects/core.js +79 -0
  240. package/dist/type-theory/effects/core.js.map +1 -0
  241. package/dist/type-theory/effects/exception.d.ts +18 -0
  242. package/dist/type-theory/effects/exception.d.ts.map +1 -0
  243. package/dist/type-theory/effects/exception.js +59 -0
  244. package/dist/type-theory/effects/exception.js.map +1 -0
  245. package/dist/type-theory/effects/index.d.ts +11 -0
  246. package/dist/type-theory/effects/index.d.ts.map +1 -0
  247. package/dist/type-theory/effects/index.js +50 -0
  248. package/dist/type-theory/effects/index.js.map +1 -0
  249. package/dist/type-theory/effects/reader.d.ts +20 -0
  250. package/dist/type-theory/effects/reader.d.ts.map +1 -0
  251. package/dist/type-theory/effects/reader.js +62 -0
  252. package/dist/type-theory/effects/reader.js.map +1 -0
  253. package/dist/type-theory/effects/state.d.ts +31 -0
  254. package/dist/type-theory/effects/state.d.ts.map +1 -0
  255. package/dist/type-theory/effects/state.js +91 -0
  256. package/dist/type-theory/effects/state.js.map +1 -0
  257. package/dist/type-theory/effects/types.d.ts +45 -0
  258. package/dist/type-theory/effects/types.d.ts.map +1 -0
  259. package/dist/type-theory/effects/types.js +21 -0
  260. package/dist/type-theory/effects/types.js.map +1 -0
  261. package/dist/type-theory/effects/writer.d.ts +30 -0
  262. package/dist/type-theory/effects/writer.d.ts.map +1 -0
  263. package/dist/type-theory/effects/writer.js +79 -0
  264. package/dist/type-theory/effects/writer.js.map +1 -0
  265. package/package.json +1 -1
@@ -0,0 +1,369 @@
1
+ "use strict";
2
+ // ============================================================
3
+ // ST Proof Certificate — Standard rule checkers
4
+ // ============================================================
5
+ //
6
+ // Cada checker recibe (args, conclusion, premises) y retorna true
7
+ // si el paso aplica la regla correctamente. NO hacen búsqueda — sólo
8
+ // chequean estructura sintáctica de strings canonicalizados.
9
+ //
10
+ // Las fórmulas viajan como strings. Reconocemos los operadores
11
+ // estándar de proposicional/clásico con variantes ASCII y Unicode:
12
+ //
13
+ // negación: ~ A | ¬A | !A | not A
14
+ // conjunción: A & B | A ∧ B | A and B
15
+ // disyunción: A | B | A ∨ B | A or B
16
+ // implicación: A -> B | A → B
17
+ // bicondicional: A <-> B | A ↔ B
18
+ //
19
+ // Para minimizar dependencia con el AST interno, comparamos por
20
+ // igualdad de la forma normalizada (`normalizeFormula`). Cuando
21
+ // necesitamos descomponer un operador binario, escaneamos a top-level
22
+ // respetando paréntesis.
23
+ Object.defineProperty(exports, "__esModule", { value: true });
24
+ exports.STANDARD_RULES = void 0;
25
+ const canonical_1 = require("./canonical");
26
+ function strip(formula) {
27
+ let s = (0, canonical_1.normalizeFormula)(formula);
28
+ while (s.startsWith('(') && s.endsWith(')') && balancedOuter(s)) {
29
+ s = s.slice(1, -1).trim();
30
+ }
31
+ return s;
32
+ }
33
+ function balancedOuter(s) {
34
+ if (!s.startsWith('(') || !s.endsWith(')'))
35
+ return false;
36
+ let depth = 0;
37
+ for (let i = 0; i < s.length; i++) {
38
+ const c = s[i];
39
+ if (c === '(')
40
+ depth++;
41
+ else if (c === ')') {
42
+ depth--;
43
+ if (depth === 0 && i < s.length - 1)
44
+ return false;
45
+ }
46
+ }
47
+ return depth === 0;
48
+ }
49
+ // Operadores binarios ordenados por precedencia (menor precedencia
50
+ // primero — escaneamos de menor a mayor). Cada entrada es una lista
51
+ // de spellings equivalentes.
52
+ const BINARY_OPS = [
53
+ { name: 'iff', spellings: ['<->', '↔'] },
54
+ { name: 'implies', spellings: ['->', '→'] },
55
+ { name: 'or', spellings: ['|', '∨', ' or '] },
56
+ { name: 'and', spellings: ['&', '∧', ' and '] },
57
+ ];
58
+ function findTopLevel(s, needle) {
59
+ let depth = 0;
60
+ for (let i = 0; i <= s.length - needle.length; i++) {
61
+ const c = s[i];
62
+ if (c === '(') {
63
+ depth++;
64
+ continue;
65
+ }
66
+ if (c === ')') {
67
+ depth--;
68
+ continue;
69
+ }
70
+ if (depth === 0 && s.startsWith(needle, i))
71
+ return i;
72
+ }
73
+ return -1;
74
+ }
75
+ function splitBinary(formula, opName) {
76
+ const s = strip(formula);
77
+ for (const op of BINARY_OPS) {
78
+ if (op.name !== opName)
79
+ continue;
80
+ for (const sp of op.spellings) {
81
+ const idx = findTopLevel(s, sp);
82
+ if (idx >= 0) {
83
+ const left = strip(s.slice(0, idx));
84
+ const right = strip(s.slice(idx + sp.length));
85
+ return { operator: opName, left, right };
86
+ }
87
+ }
88
+ }
89
+ return null;
90
+ }
91
+ function stripNot(formula) {
92
+ const s = strip(formula);
93
+ if (s.startsWith('~'))
94
+ return strip(s.slice(1));
95
+ if (s.startsWith('¬'))
96
+ return strip(s.slice(1));
97
+ if (s.startsWith('!'))
98
+ return strip(s.slice(1));
99
+ if (s.toLowerCase().startsWith('not '))
100
+ return strip(s.slice(4));
101
+ return null;
102
+ }
103
+ function eq(a, b) {
104
+ return strip(a) === strip(b);
105
+ }
106
+ // ---- Checkers ----
107
+ const axiomChecker = (args, conclusion, premises) => {
108
+ // axiom: la conclusión es uno de los args (el nombre del axioma es
109
+ // la propia fórmula) y no hay premisas.
110
+ if (premises.length !== 0)
111
+ return false;
112
+ if (args.length === 0)
113
+ return false;
114
+ return args.some((a) => eq(a, conclusion));
115
+ };
116
+ const assumptionChecker = (_args, _conclusion, premises) => {
117
+ // assumption: no premisas (es una hipótesis local). El verificador
118
+ // global se encarga de comprobar que se descargue eventualmente.
119
+ return premises.length === 0;
120
+ };
121
+ const reiterationChecker = (_args, conclusion, premises) => {
122
+ // reit: una sola premisa idéntica a la conclusión.
123
+ if (premises.length !== 1)
124
+ return false;
125
+ return eq(premises[0], conclusion);
126
+ };
127
+ const modusPonensChecker = (_args, conclusion, premises) => {
128
+ // MP: premisas = [A -> B, A], conclusión = B
129
+ if (premises.length !== 2)
130
+ return false;
131
+ const [impl, ant] = premises;
132
+ const split = splitBinary(impl, 'implies');
133
+ if (!split)
134
+ return false;
135
+ return eq(split.left, ant) && eq(split.right, conclusion);
136
+ };
137
+ const modusTollensChecker = (_args, conclusion, premises) => {
138
+ // MT: premisas = [A -> B, ~B], conclusión = ~A
139
+ if (premises.length !== 2)
140
+ return false;
141
+ const [impl, notB] = premises;
142
+ const split = splitBinary(impl, 'implies');
143
+ if (!split)
144
+ return false;
145
+ const inside = stripNot(notB);
146
+ const concInside = stripNot(conclusion);
147
+ if (inside === null || concInside === null)
148
+ return false;
149
+ return eq(inside, split.right) && eq(concInside, split.left);
150
+ };
151
+ const andIntroChecker = (_args, conclusion, premises) => {
152
+ // ∧I: premisas = [A, B], conclusión = A & B
153
+ if (premises.length !== 2)
154
+ return false;
155
+ const split = splitBinary(conclusion, 'and');
156
+ if (!split)
157
+ return false;
158
+ return eq(split.left, premises[0]) && eq(split.right, premises[1]);
159
+ };
160
+ const andElimLeftChecker = (_args, conclusion, premises) => {
161
+ if (premises.length !== 1)
162
+ return false;
163
+ const split = splitBinary(premises[0], 'and');
164
+ if (!split)
165
+ return false;
166
+ return eq(split.left, conclusion);
167
+ };
168
+ const andElimRightChecker = (_args, conclusion, premises) => {
169
+ if (premises.length !== 1)
170
+ return false;
171
+ const split = splitBinary(premises[0], 'and');
172
+ if (!split)
173
+ return false;
174
+ return eq(split.right, conclusion);
175
+ };
176
+ const orIntroLeftChecker = (_args, conclusion, premises) => {
177
+ // ∨IL: premisa = A, conclusión = A | B (B arbitrario pero declarado en args[0])
178
+ if (premises.length !== 1)
179
+ return false;
180
+ const split = splitBinary(conclusion, 'or');
181
+ if (!split)
182
+ return false;
183
+ return eq(split.left, premises[0]);
184
+ };
185
+ const orIntroRightChecker = (_args, conclusion, premises) => {
186
+ if (premises.length !== 1)
187
+ return false;
188
+ const split = splitBinary(conclusion, 'or');
189
+ if (!split)
190
+ return false;
191
+ return eq(split.right, premises[0]);
192
+ };
193
+ const orElimChecker = (_args, conclusion, premises) => {
194
+ // ∨E: premisas = [A | B, A -> C, B -> C], conclusión = C
195
+ if (premises.length !== 3)
196
+ return false;
197
+ const disj = splitBinary(premises[0], 'or');
198
+ const impL = splitBinary(premises[1], 'implies');
199
+ const impR = splitBinary(premises[2], 'implies');
200
+ if (!disj || !impL || !impR)
201
+ return false;
202
+ return (eq(disj.left, impL.left) &&
203
+ eq(disj.right, impR.left) &&
204
+ eq(impL.right, conclusion) &&
205
+ eq(impR.right, conclusion));
206
+ };
207
+ const impliesIntroChecker = (args, conclusion, premises) => {
208
+ // →I: descarga la hipótesis declarada en args[0] de la sub-derivación
209
+ // que produjo `premises[0]`. Conclusión = args[0] -> premises[0].
210
+ // El checker se limita a la forma sintáctica.
211
+ if (premises.length !== 1)
212
+ return false;
213
+ if (args.length < 1)
214
+ return false;
215
+ const split = splitBinary(conclusion, 'implies');
216
+ if (!split)
217
+ return false;
218
+ return eq(split.left, args[0]) && eq(split.right, premises[0]);
219
+ };
220
+ const impliesElimChecker = modusPonensChecker;
221
+ const notIntroChecker = (args, conclusion, premises) => {
222
+ // ¬I: de una sub-derivación de ⊥ asumiendo args[0], deriva ¬args[0].
223
+ // premises[0] debe ser ⊥ (false/bottom/⊥/_|_).
224
+ if (premises.length !== 1)
225
+ return false;
226
+ if (args.length < 1)
227
+ return false;
228
+ const inside = stripNot(conclusion);
229
+ if (inside === null)
230
+ return false;
231
+ const bottom = strip(premises[0]);
232
+ if (!['⊥', 'false', '_|_', 'bottom'].includes(bottom.toLowerCase())) {
233
+ return false;
234
+ }
235
+ return eq(inside, args[0]);
236
+ };
237
+ const notElimChecker = (_args, conclusion, premises) => {
238
+ // ¬E: premisas = [A, ~A], conclusión = ⊥
239
+ if (premises.length !== 2)
240
+ return false;
241
+ const a = premises[0];
242
+ const notA = stripNot(premises[1]);
243
+ if (notA === null)
244
+ return false;
245
+ if (!eq(a, notA))
246
+ return false;
247
+ const c = strip(conclusion).toLowerCase();
248
+ return ['⊥', 'false', '_|_', 'bottom'].includes(c);
249
+ };
250
+ const efqChecker = (_args, _conclusion, premises) => {
251
+ // ex falso: de ⊥ deriva cualquier cosa.
252
+ if (premises.length !== 1)
253
+ return false;
254
+ const b = strip(premises[0]).toLowerCase();
255
+ return ['⊥', 'false', '_|_', 'bottom'].includes(b);
256
+ };
257
+ const doubleNegElimChecker = (_args, conclusion, premises) => {
258
+ // ¬¬E: premisa = ~~A, conclusión = A. (clásico)
259
+ if (premises.length !== 1)
260
+ return false;
261
+ const inner1 = stripNot(premises[0]);
262
+ if (inner1 === null)
263
+ return false;
264
+ const inner2 = stripNot(inner1);
265
+ if (inner2 === null)
266
+ return false;
267
+ return eq(inner2, conclusion);
268
+ };
269
+ const doubleNegIntroChecker = (_args, conclusion, premises) => {
270
+ // ¬¬I: premisa = A, conclusión = ~~A.
271
+ if (premises.length !== 1)
272
+ return false;
273
+ const inner1 = stripNot(conclusion);
274
+ if (inner1 === null)
275
+ return false;
276
+ const inner2 = stripNot(inner1);
277
+ if (inner2 === null)
278
+ return false;
279
+ return eq(inner2, premises[0]);
280
+ };
281
+ const iffIntroChecker = (_args, conclusion, premises) => {
282
+ // ↔I: premisas = [A -> B, B -> A], conclusión = A <-> B
283
+ if (premises.length !== 2)
284
+ return false;
285
+ const fwd = splitBinary(premises[0], 'implies');
286
+ const bwd = splitBinary(premises[1], 'implies');
287
+ if (!fwd || !bwd)
288
+ return false;
289
+ if (!(eq(fwd.left, bwd.right) && eq(fwd.right, bwd.left)))
290
+ return false;
291
+ const iff = splitBinary(conclusion, 'iff');
292
+ if (!iff)
293
+ return false;
294
+ return eq(iff.left, fwd.left) && eq(iff.right, fwd.right);
295
+ };
296
+ const iffElimLeftChecker = (_args, conclusion, premises) => {
297
+ // ↔EL: premisa = A <-> B, conclusión = A -> B
298
+ if (premises.length !== 1)
299
+ return false;
300
+ const iff = splitBinary(premises[0], 'iff');
301
+ if (!iff)
302
+ return false;
303
+ const impl = splitBinary(conclusion, 'implies');
304
+ if (!impl)
305
+ return false;
306
+ return eq(iff.left, impl.left) && eq(iff.right, impl.right);
307
+ };
308
+ const iffElimRightChecker = (_args, conclusion, premises) => {
309
+ if (premises.length !== 1)
310
+ return false;
311
+ const iff = splitBinary(premises[0], 'iff');
312
+ if (!iff)
313
+ return false;
314
+ const impl = splitBinary(conclusion, 'implies');
315
+ if (!impl)
316
+ return false;
317
+ return eq(iff.left, impl.right) && eq(iff.right, impl.left);
318
+ };
319
+ /**
320
+ * Tabla de reglas estándar. El verificador busca primero en esta tabla
321
+ * (o en una tabla custom pasada como parámetro). Si la regla no
322
+ * existe, registra un error pero no aborta para listar todos.
323
+ */
324
+ exports.STANDARD_RULES = new Map([
325
+ ['axiom', axiomChecker],
326
+ ['assumption', assumptionChecker],
327
+ ['hypothesis', assumptionChecker],
328
+ ['premise', axiomChecker],
329
+ ['reiteration', reiterationChecker],
330
+ ['reit', reiterationChecker],
331
+ ['modus-ponens', modusPonensChecker],
332
+ ['mp', modusPonensChecker],
333
+ ['implies-elim', impliesElimChecker],
334
+ ['->E', impliesElimChecker],
335
+ ['modus-tollens', modusTollensChecker],
336
+ ['mt', modusTollensChecker],
337
+ ['implies-intro', impliesIntroChecker],
338
+ ['->I', impliesIntroChecker],
339
+ ['and-intro', andIntroChecker],
340
+ ['&I', andIntroChecker],
341
+ ['conj-intro', andIntroChecker],
342
+ ['and-elim-left', andElimLeftChecker],
343
+ ['&EL', andElimLeftChecker],
344
+ ['and-elim-right', andElimRightChecker],
345
+ ['&ER', andElimRightChecker],
346
+ ['or-intro-left', orIntroLeftChecker],
347
+ ['|IL', orIntroLeftChecker],
348
+ ['or-intro-right', orIntroRightChecker],
349
+ ['|IR', orIntroRightChecker],
350
+ ['or-elim', orElimChecker],
351
+ ['|E', orElimChecker],
352
+ ['not-intro', notIntroChecker],
353
+ ['~I', notIntroChecker],
354
+ ['not-elim', notElimChecker],
355
+ ['~E', notElimChecker],
356
+ ['ex-falso', efqChecker],
357
+ ['efq', efqChecker],
358
+ ['double-neg-elim', doubleNegElimChecker],
359
+ ['~~E', doubleNegElimChecker],
360
+ ['double-neg-intro', doubleNegIntroChecker],
361
+ ['~~I', doubleNegIntroChecker],
362
+ ['iff-intro', iffIntroChecker],
363
+ ['<->I', iffIntroChecker],
364
+ ['iff-elim-left', iffElimLeftChecker],
365
+ ['<->EL', iffElimLeftChecker],
366
+ ['iff-elim-right', iffElimRightChecker],
367
+ ['<->ER', iffElimRightChecker],
368
+ ]);
369
+ //# sourceMappingURL=rules.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rules.js","sourceRoot":"","sources":["../../../src/proof-systems/certificate/rules.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,114 @@
1
+ /**
2
+ * Un paso del certificado. Cada paso tiene un id único dentro del
3
+ * certificado, una regla declarada, una lista de argumentos
4
+ * (referencias a ids previos o términos literales), una conclusión
5
+ * derivada por aplicar la regla a las premisas, y la lista de ids
6
+ * de los pasos de los que depende.
7
+ *
8
+ * - `id`: identificador único en el certificado (e.g. `s1`, `step-3`).
9
+ * - `rule`: nombre canónico de la regla. Ver `STANDARD_RULES`.
10
+ * - `args`: lista de argumentos textuales para la regla. Para reglas
11
+ * tipo `modus-ponens` los args suelen ser ids de premisas en el
12
+ * orden esperado por la regla (e.g. `["s1", "s2"]`). Reglas como
13
+ * `axiom` o `assumption` pueden tener `args` vacíos o incluir un
14
+ * nombre del axioma.
15
+ * - `conclusion`: fórmula derivada en el paso, en forma canónica.
16
+ * - `depends`: ids de pasos previos referenciados (ya sea por args
17
+ * o por contexto). El verificador valida que no haya ciclos y que
18
+ * todos los ids citados existan.
19
+ */
20
+ export interface CertStep {
21
+ id: string;
22
+ rule: string;
23
+ args: string[];
24
+ conclusion: string;
25
+ depends: string[];
26
+ }
27
+ /**
28
+ * Firma criptográfica de un certificado. Por defecto Ed25519 vía
29
+ * WebCrypto cuando está disponible; cae a HMAC-SHA256 en runtimes
30
+ * que no soporten Ed25519 (Node antiguo, Bun viejo).
31
+ */
32
+ export interface CertSignature {
33
+ /** Algoritmo usado. */
34
+ algorithm: 'Ed25519' | 'HMAC-SHA256';
35
+ /** Clave pública en hex (raw export). Para HMAC: clave compartida. */
36
+ publicKey: string;
37
+ /** Firma en hex sobre la forma canónica sin hash ni signature. */
38
+ signature: string;
39
+ }
40
+ /**
41
+ * Certificado portable de prueba. Estructura inspirada en LFSC.
42
+ *
43
+ * `hash` es SHA-256 de la forma canónica del certificado SIN los
44
+ * campos `hash` ni `signature`. Esto permite verificar integridad
45
+ * antes y después de firmar.
46
+ *
47
+ * Ejemplo mínimo (modus ponens):
48
+ *
49
+ * ```ts
50
+ * const cert: ProofCertificate = {
51
+ * version: '1.0',
52
+ * goal: 'q',
53
+ * profile: 'classical.propositional',
54
+ * axioms: ['p', 'p -> q'],
55
+ * steps: [
56
+ * { id: 's1', rule: 'axiom', args: ['p'], conclusion: 'p', depends: [] },
57
+ * { id: 's2', rule: 'axiom', args: ['p -> q'], conclusion: 'p -> q', depends: [] },
58
+ * { id: 's3', rule: 'modus-ponens', args: ['s2', 's1'], conclusion: 'q', depends: ['s2', 's1'] },
59
+ * ],
60
+ * hash: '...',
61
+ * };
62
+ * ```
63
+ */
64
+ export interface ProofCertificate {
65
+ version: '1.0';
66
+ /** Fórmula final probada, en forma canónica. */
67
+ goal: string;
68
+ /** Perfil lógico bajo el cual se interpreta la prueba. */
69
+ profile: string;
70
+ /** Axiomas asumidos sobre los que se construye la prueba. */
71
+ axioms: string[];
72
+ /** Pasos del certificado en orden topológico (deps antes que dependientes). */
73
+ steps: CertStep[];
74
+ /** SHA-256 hex de la forma canónica sin `hash` ni `signature`. */
75
+ hash: string;
76
+ /** Firma opcional. Si presente, debe verificar contra la forma canónica sin firma. */
77
+ signature?: CertSignature;
78
+ }
79
+ /**
80
+ * Resultado de verificar un certificado en modo check-only.
81
+ *
82
+ * `valid` sólo es `true` si TODOS los chequeos pasan:
83
+ * - el hash coincide con la forma canónica del certificado;
84
+ * - todos los ids son únicos y todas las referencias existen;
85
+ * - no hay ciclos en `depends`;
86
+ * - el goal aparece como conclusión de algún paso;
87
+ * - cada paso aplica su regla correctamente vía
88
+ * `CertRuleChecker` (regla declarada existe y el checker
89
+ * retorna true para los args/conclusion/premisas).
90
+ *
91
+ * `errors` lista todas las violaciones detectadas; el verificador
92
+ * NO se detiene en la primera para dar feedback completo.
93
+ *
94
+ * `stepsVerified` cuenta los pasos cuya regla fue chequeada con
95
+ * éxito por su `CertRuleChecker`. `totalSteps` es `steps.length`.
96
+ */
97
+ export interface VerificationResult {
98
+ valid: boolean;
99
+ errors: string[];
100
+ stepsVerified: number;
101
+ totalSteps: number;
102
+ }
103
+ /**
104
+ * Firma de un checker de regla. Recibe los argumentos crudos del
105
+ * paso, la conclusión declarada y las premisas resueltas (las
106
+ * conclusiones de los pasos referenciados en `depends`, en el
107
+ * orden en que aparecen en `depends`).
108
+ *
109
+ * Debe retornar `true` si y sólo si la regla se aplica
110
+ * correctamente. NO debe hacer búsqueda — sólo chequear estructura
111
+ * sintáctica de strings.
112
+ */
113
+ export type CertRuleChecker = (args: string[], conclusion: string, premises: string[]) => boolean;
114
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/proof-systems/certificate/types.ts"],"names":[],"mappings":"AAgBA;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC5B,uBAAuB;IACvB,SAAS,EAAE,SAAS,GAAG,aAAa,CAAC;IACrC,sEAAsE;IACtE,SAAS,EAAE,MAAM,CAAC;IAClB,kEAAkE;IAClE,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,KAAK,CAAC;IACf,gDAAgD;IAChD,IAAI,EAAE,MAAM,CAAC;IACb,0DAA0D;IAC1D,OAAO,EAAE,MAAM,CAAC;IAChB,6DAA6D;IAC7D,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,+EAA+E;IAC/E,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,kEAAkE;IAClE,IAAI,EAAE,MAAM,CAAC;IACb,sFAAsF;IACtF,SAAS,CAAC,EAAE,aAAa,CAAC;CAC3B;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;GASG;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC"}
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ // ============================================================
3
+ // ST Proof Certificate — Tipos públicos
4
+ // ============================================================
5
+ //
6
+ // Formato canónico portable para certificados de prueba inspirado
7
+ // en LFSC (LF + Side Conditions) y Dedukti. La filosofía es
8
+ // "check-only": el verificador NO hace búsqueda de prueba ni
9
+ // resuelve fórmulas — sólo comprueba que cada paso aplica
10
+ // correctamente una regla declarada sobre premisas ya derivadas.
11
+ //
12
+ // Las fórmulas viajan como strings en una representación canónica
13
+ // definida por la profile/perfil. El verificador trata strings con
14
+ // comparación literal previa normalización (trim + colapsar
15
+ // whitespace interno). Esto hace al certificado independiente del
16
+ // AST interno del prover y permite intercambio entre herramientas.
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/proof-systems/certificate/types.ts"],"names":[],"mappings":";AAAA,+DAA+D;AAC/D,wCAAwC;AACxC,+DAA+D;AAC/D,EAAE;AACF,kEAAkE;AAClE,4DAA4D;AAC5D,6DAA6D;AAC7D,0DAA0D;AAC1D,iEAAiE;AACjE,EAAE;AACF,kEAAkE;AAClE,mEAAmE;AACnE,4DAA4D;AAC5D,kEAAkE;AAClE,mEAAmE"}
@@ -0,0 +1,20 @@
1
+ import { canonicalize } from './canonical';
2
+ import type { CertRuleChecker, ProofCertificate, VerificationResult } from './types';
3
+ /**
4
+ * Verifica un certificado en modo check-only.
5
+ *
6
+ * Las reglas custom (parámetro `rules`) se prueban PRIMERO; si no
7
+ * está la regla, se busca en `STANDARD_RULES`. Esto permite a
8
+ * profiles externos extender el conjunto sin tocar el core.
9
+ */
10
+ export declare function verifyCertificate(cert: ProofCertificate, rules?: Map<string, CertRuleChecker>): Promise<VerificationResult>;
11
+ /**
12
+ * Helper para construir un certificado "a mano" a partir de pasos
13
+ * crudos: rellena `hash` (y opcionalmente firma) y normaliza
14
+ * fórmulas.
15
+ *
16
+ * Acepta un objeto similar a `ProofCertificate` sin `hash`; las
17
+ * fórmulas se normalizan in-place vía `canonicalize`.
18
+ */
19
+ export { canonicalize };
20
+ //# sourceMappingURL=verify.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../../../src/proof-systems/certificate/verify.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,YAAY,EAAqC,MAAM,aAAa,CAAC;AAE9E,OAAO,KAAK,EAAE,eAAe,EAAY,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAyC/F;;;;;;GAMG;AACH,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,gBAAgB,EACtB,KAAK,GAAE,GAAG,CAAC,MAAM,EAAE,eAAe,CAAkB,GACnD,OAAO,CAAC,kBAAkB,CAAC,CAkH7B;AAED;;;;;;;GAOG;AACH,OAAO,EAAE,YAAY,EAAE,CAAC"}