@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,54 @@
1
+ import { key, principal } from './terms';
2
+ import type { BANFormula, Protocol } from './types';
3
+ /**
4
+ * Needham-Schroeder shared-key (simplificado para BAN).
5
+ *
6
+ * 1. A → S : A, B, N_a
7
+ * 2. S → A : {N_a, K_ab, B, {K_ab, A}_{K_bs}}_{K_as}
8
+ * 3. A → B : {K_ab, A}_{K_bs}
9
+ * 4. B → A : {N_b}_{K_ab}
10
+ * 5. A → B : {N_b - 1}_{K_ab} (representamos como nonce(N_b'))
11
+ */
12
+ export declare function needhamSchroederSymmetric(): Protocol;
13
+ /**
14
+ * Needham-Schroeder public-key (Lowe attack territory).
15
+ *
16
+ * Original:
17
+ * 1. A → B : {N_a, A}_{K_b}
18
+ * 2. B → A : {N_a, N_b}_{K_a}
19
+ * 3. A → B : {N_b}_{K_b}
20
+ *
21
+ * El "Lowe attack" (1995) muestra que un atacante M puede intercalar
22
+ * y hacer creer a B que está hablando con A cuando en realidad A
23
+ * habla con M. Modelamos el protocolo TAL CUAL, sin la corrección
24
+ * de Lowe; el resultado: el goal "B|≡A|≡(sesión con B)" NO se
25
+ * deriva.
26
+ */
27
+ export declare function needhamSchroederPublicKey(): Protocol;
28
+ /**
29
+ * Kerberos (simplificación BAN).
30
+ *
31
+ * 1. C → S : C, T, N_c
32
+ * 2. S → C : {N_c, T_C, K_ct}_{K_cs}, {C, T_C, K_ct}_{K_ts}
33
+ * 3. C → T : {C, T_C, K_ct}_{K_ts}, {C, t}_{K_ct}
34
+ * 4. T → C : {t + 1}_{K_ct}
35
+ *
36
+ * Goal: C cree que T comparte K_ct con C; T cree lo mismo.
37
+ */
38
+ export declare function kerberos(): Protocol;
39
+ export declare const protocolUtils: {
40
+ believes: (p: import("./types").BANTerm, f: BANFormula) => BANFormula;
41
+ sharedKey: (a: import("./types").BANTerm, b: import("./types").BANTerm, k: import("./types").BANTerm) => BANFormula;
42
+ publicKey: (p: ReturnType<typeof principal>, k: ReturnType<typeof key>) => BANFormula;
43
+ jurisdiction: (p: import("./types").BANTerm, f: BANFormula) => BANFormula;
44
+ saidMessage: (p: import("./types").BANTerm, w: import("./types").BANTerm) => BANFormula;
45
+ fresh: (w: import("./types").BANTerm) => BANFormula;
46
+ encrypted: (msg: import("./types").BANTerm, k: import("./types").BANTerm) => import("./types").BANTerm;
47
+ sees: (p: import("./types").BANTerm, w: import("./types").BANTerm) => BANFormula;
48
+ message: (...content: import("./types").BANTerm[]) => import("./types").BANTerm;
49
+ nonce: (name: string) => import("./types").BANTerm;
50
+ key: (name: string, shared?: [string, string]) => import("./types").BANTerm;
51
+ principal: (name: string) => import("./types").BANTerm;
52
+ controls: (p: import("./types").BANTerm, f: BANFormula) => BANFormula;
53
+ };
54
+ //# sourceMappingURL=protocols.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"protocols.d.ts","sourceRoot":"","sources":["../../../src/reasoning/ban-logic/protocols.ts"],"names":[],"mappings":"AAkBA,OAAO,EAML,GAAG,EAGH,SAAS,EAIV,MAAM,SAAS,CAAC;AACjB,OAAO,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAEpD;;;;;;;;GAQG;AACH,wBAAgB,yBAAyB,IAAI,QAAQ,CAoEpD;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,yBAAyB,IAAI,QAAQ,CAuCpD;AAED;;;;;;;;;GASG;AACH,wBAAgB,QAAQ,IAAI,QAAQ,CAwCnC;AAGD,eAAO,MAAM,aAAa;;;mBAGT,UAAU,CAAC,OAAO,SAAS,CAAC,KAAK,UAAU,CAAC,OAAO,GAAG,CAAC,KAAG,UAAU;;;;;;;;;;;CAepF,CAAC"}
@@ -0,0 +1,219 @@
1
+ "use strict";
2
+ // ============================================================
3
+ // BAN Logic — Catálogo de protocolos
4
+ // ============================================================
5
+ //
6
+ // Protocolos clásicos modelados en estilo BAN para validar el motor.
7
+ //
8
+ // - Needham-Schroeder symmetric (1978): autenticación basada en
9
+ // servidor de confianza. BAN-correcto bajo assumptions estándar
10
+ // (frescura de los nonces).
11
+ //
12
+ // - Needham-Schroeder public-key (1978): el famoso protocolo con
13
+ // el "Lowe attack" (1995). Sin las correcciones de Lowe, NO logra
14
+ // autenticar B con A (deja un goal sin probar). Lo modelamos así
15
+ // para que `analyzeProtocol` lo refleje.
16
+ //
17
+ // - Kerberos (variant clásica simplificada): cliente C, servidor S
18
+ // con la KDC, autenticación mutua.
19
+ Object.defineProperty(exports, "__esModule", { value: true });
20
+ exports.protocolUtils = void 0;
21
+ exports.needhamSchroederSymmetric = needhamSchroederSymmetric;
22
+ exports.needhamSchroederPublicKey = needhamSchroederPublicKey;
23
+ exports.kerberos = kerberos;
24
+ const terms_1 = require("./terms");
25
+ /**
26
+ * Needham-Schroeder shared-key (simplificado para BAN).
27
+ *
28
+ * 1. A → S : A, B, N_a
29
+ * 2. S → A : {N_a, K_ab, B, {K_ab, A}_{K_bs}}_{K_as}
30
+ * 3. A → B : {K_ab, A}_{K_bs}
31
+ * 4. B → A : {N_b}_{K_ab}
32
+ * 5. A → B : {N_b - 1}_{K_ab} (representamos como nonce(N_b'))
33
+ */
34
+ function needhamSchroederSymmetric() {
35
+ const A = (0, terms_1.principal)('A');
36
+ const B = (0, terms_1.principal)('B');
37
+ const S = (0, terms_1.principal)('S');
38
+ const N_a = (0, terms_1.nonce)('N_a');
39
+ const N_b = (0, terms_1.nonce)('N_b');
40
+ const N_b_prime = (0, terms_1.nonce)("N_b'");
41
+ const K_ab = (0, terms_1.key)('K_ab', ['A', 'B']);
42
+ const K_as = (0, terms_1.key)('K_as', ['A', 'S']);
43
+ const K_bs = (0, terms_1.key)('K_bs', ['B', 'S']);
44
+ // Goal final: A cree que B cree K_ab (autenticación mutua de la clave).
45
+ const goal1 = (0, terms_1.believes)(A, (0, terms_1.believes)(B, (0, terms_1.sharedKey)(A, B, K_ab)));
46
+ const goal2 = (0, terms_1.believes)(B, (0, terms_1.believes)(A, (0, terms_1.sharedKey)(A, B, K_ab)));
47
+ return {
48
+ name: 'Needham-Schroeder-symmetric',
49
+ participants: ['A', 'B', 'S'],
50
+ initialAssumptions: [
51
+ // Claves compartidas con S.
52
+ (0, terms_1.believes)(A, (0, terms_1.sharedKey)(A, S, K_as)),
53
+ (0, terms_1.believes)(B, (0, terms_1.sharedKey)(B, S, K_bs)),
54
+ (0, terms_1.believes)(S, (0, terms_1.sharedKey)(A, S, K_as)),
55
+ (0, terms_1.believes)(S, (0, terms_1.sharedKey)(B, S, K_bs)),
56
+ // S decide la clave (jurisdicción).
57
+ (0, terms_1.believes)(A, (0, terms_1.controls)(S, (0, terms_1.sharedKey)(A, B, K_ab))),
58
+ (0, terms_1.believes)(B, (0, terms_1.controls)(S, (0, terms_1.sharedKey)(A, B, K_ab))),
59
+ // S cree la clave que él mismo emite.
60
+ (0, terms_1.believes)(S, (0, terms_1.sharedKey)(A, B, K_ab)),
61
+ // Frescuras.
62
+ (0, terms_1.believes)(A, (0, terms_1.fresh)(N_a)),
63
+ (0, terms_1.believes)(B, (0, terms_1.fresh)(N_b)),
64
+ (0, terms_1.believes)(S, (0, terms_1.fresh)(K_ab)),
65
+ (0, terms_1.believes)(A, (0, terms_1.fresh)(K_ab)),
66
+ // En el handshake nonce N_b, A confirma que sigue vivo. Para que
67
+ // B termine creyendo K_ab cree A, B asume frescura de la sesión
68
+ // como sigue:
69
+ (0, terms_1.believes)(B, (0, terms_1.fresh)(N_b_prime)),
70
+ ],
71
+ steps: [
72
+ // Idealización paso 2: S → A : { N_a, K_ab, A↔K_ab B }_{K_as}
73
+ {
74
+ from: 'S',
75
+ to: 'A',
76
+ message: (0, terms_1.encrypted)((0, terms_1.message)(N_a, K_ab), K_as),
77
+ },
78
+ // Idealización paso 3: A → B : { K_ab, A↔K_ab B }_{K_bs}
79
+ {
80
+ from: 'A',
81
+ to: 'B',
82
+ message: (0, terms_1.encrypted)(K_ab, K_bs),
83
+ },
84
+ // Idealización paso 4: B → A : { N_b, A↔K_ab B }_{K_ab}
85
+ {
86
+ from: 'B',
87
+ to: 'A',
88
+ message: (0, terms_1.encrypted)((0, terms_1.message)(N_b), K_ab),
89
+ },
90
+ // Idealización paso 5: A → B : { N_b', A↔K_ab B }_{K_ab}
91
+ {
92
+ from: 'A',
93
+ to: 'B',
94
+ message: (0, terms_1.encrypted)((0, terms_1.message)(N_b_prime), K_ab),
95
+ },
96
+ ],
97
+ goals: [goal1, goal2],
98
+ };
99
+ }
100
+ /**
101
+ * Needham-Schroeder public-key (Lowe attack territory).
102
+ *
103
+ * Original:
104
+ * 1. A → B : {N_a, A}_{K_b}
105
+ * 2. B → A : {N_a, N_b}_{K_a}
106
+ * 3. A → B : {N_b}_{K_b}
107
+ *
108
+ * El "Lowe attack" (1995) muestra que un atacante M puede intercalar
109
+ * y hacer creer a B que está hablando con A cuando en realidad A
110
+ * habla con M. Modelamos el protocolo TAL CUAL, sin la corrección
111
+ * de Lowe; el resultado: el goal "B|≡A|≡(sesión con B)" NO se
112
+ * deriva.
113
+ */
114
+ function needhamSchroederPublicKey() {
115
+ const A = (0, terms_1.principal)('A');
116
+ const B = (0, terms_1.principal)('B');
117
+ const N_a = (0, terms_1.nonce)('N_a');
118
+ const N_b = (0, terms_1.nonce)('N_b');
119
+ // Claves públicas modeladas como `key` con shared = [owner, owner]
120
+ // como hack mnemotécnico; el motor usa `publicKey` para R2.
121
+ const K_a = (0, terms_1.key)('K_a');
122
+ const K_b = (0, terms_1.key)('K_b');
123
+ // En BAN original con Lowe: el goal de B "A cree que está hablando
124
+ // con B" no se cumple sin Lowe-fix. Lo dejamos como goal para que el
125
+ // análisis lo reporte como UNSATISFIED.
126
+ const goalA = (0, terms_1.believes)(A, (0, terms_1.believes)(B, (0, terms_1.sees)(B, N_a)));
127
+ const goalB = (0, terms_1.believes)(B, (0, terms_1.believes)(A, (0, terms_1.sees)(A, N_b)));
128
+ return {
129
+ name: 'Needham-Schroeder-public-key',
130
+ participants: ['A', 'B'],
131
+ initialAssumptions: [
132
+ // Nadie comparte secret state inicial real con el otro; solo PKs.
133
+ // Modelamos como sharedKey "público" para R1 (BAN no distingue
134
+ // semánticamente shared vs public para el análisis de pares).
135
+ (0, terms_1.believes)(A, { kind: 'publicKey', principal: B, key: K_b }),
136
+ (0, terms_1.believes)(B, { kind: 'publicKey', principal: A, key: K_a }),
137
+ (0, terms_1.believes)(A, (0, terms_1.fresh)(N_a)),
138
+ (0, terms_1.believes)(B, (0, terms_1.fresh)(N_b)),
139
+ ],
140
+ steps: [
141
+ // 1. A → B : {N_a, A}_{K_b}
142
+ { from: 'A', to: 'B', message: (0, terms_1.encrypted)((0, terms_1.message)(N_a, A), K_b) },
143
+ // 2. B → A : {N_a, N_b}_{K_a} ← OJO: NO incluye B (origen del Lowe attack)
144
+ { from: 'B', to: 'A', message: (0, terms_1.encrypted)((0, terms_1.message)(N_a, N_b), K_a) },
145
+ // 3. A → B : {N_b}_{K_b}
146
+ { from: 'A', to: 'B', message: (0, terms_1.encrypted)(N_b, K_b) },
147
+ ],
148
+ goals: [goalA, goalB],
149
+ };
150
+ }
151
+ /**
152
+ * Kerberos (simplificación BAN).
153
+ *
154
+ * 1. C → S : C, T, N_c
155
+ * 2. S → C : {N_c, T_C, K_ct}_{K_cs}, {C, T_C, K_ct}_{K_ts}
156
+ * 3. C → T : {C, T_C, K_ct}_{K_ts}, {C, t}_{K_ct}
157
+ * 4. T → C : {t + 1}_{K_ct}
158
+ *
159
+ * Goal: C cree que T comparte K_ct con C; T cree lo mismo.
160
+ */
161
+ function kerberos() {
162
+ const C = (0, terms_1.principal)('C');
163
+ const T = (0, terms_1.principal)('T');
164
+ const S = (0, terms_1.principal)('S');
165
+ const N_c = (0, terms_1.nonce)('N_c');
166
+ const t = (0, terms_1.nonce)('t');
167
+ const K_cs = (0, terms_1.key)('K_cs', ['C', 'S']);
168
+ const K_ts = (0, terms_1.key)('K_ts', ['T', 'S']);
169
+ const K_ct = (0, terms_1.key)('K_ct', ['C', 'T']);
170
+ const goalC = (0, terms_1.believes)(C, (0, terms_1.sharedKey)(C, T, K_ct));
171
+ const goalT = (0, terms_1.believes)(T, (0, terms_1.sharedKey)(C, T, K_ct));
172
+ return {
173
+ name: 'Kerberos',
174
+ participants: ['C', 'T', 'S'],
175
+ initialAssumptions: [
176
+ (0, terms_1.believes)(C, (0, terms_1.sharedKey)(C, S, K_cs)),
177
+ (0, terms_1.believes)(T, (0, terms_1.sharedKey)(T, S, K_ts)),
178
+ (0, terms_1.believes)(S, (0, terms_1.sharedKey)(C, S, K_cs)),
179
+ (0, terms_1.believes)(S, (0, terms_1.sharedKey)(T, S, K_ts)),
180
+ (0, terms_1.believes)(C, (0, terms_1.controls)(S, (0, terms_1.sharedKey)(C, T, K_ct))),
181
+ (0, terms_1.believes)(T, (0, terms_1.controls)(S, (0, terms_1.sharedKey)(C, T, K_ct))),
182
+ (0, terms_1.believes)(S, (0, terms_1.sharedKey)(C, T, K_ct)),
183
+ (0, terms_1.believes)(C, (0, terms_1.fresh)(N_c)),
184
+ (0, terms_1.believes)(T, (0, terms_1.fresh)(t)),
185
+ (0, terms_1.believes)(C, (0, terms_1.fresh)(K_ct)),
186
+ (0, terms_1.believes)(T, (0, terms_1.fresh)(K_ct)),
187
+ ],
188
+ steps: [
189
+ // 2. S → C : { N_c, K_ct }_{K_cs}
190
+ { from: 'S', to: 'C', message: (0, terms_1.encrypted)((0, terms_1.message)(N_c, K_ct), K_cs) },
191
+ // 3. C → T : { C, K_ct }_{K_ts}
192
+ { from: 'C', to: 'T', message: (0, terms_1.encrypted)((0, terms_1.message)(C, K_ct), K_ts) },
193
+ // 3b. C → T : { t }_{K_ct}
194
+ { from: 'C', to: 'T', message: (0, terms_1.encrypted)(t, K_ct) },
195
+ ],
196
+ goals: [goalC, goalT],
197
+ };
198
+ }
199
+ // Exports de utilidades para referencia rápida en tests:
200
+ exports.protocolUtils = {
201
+ believes: terms_1.believes,
202
+ sharedKey: terms_1.sharedKey,
203
+ publicKey: (p, k) => ({
204
+ kind: 'publicKey',
205
+ principal: p,
206
+ key: k,
207
+ }),
208
+ jurisdiction: terms_1.jurisdiction,
209
+ saidMessage: terms_1.saidMessage,
210
+ fresh: terms_1.fresh,
211
+ encrypted: terms_1.encrypted,
212
+ sees: terms_1.sees,
213
+ message: terms_1.message,
214
+ nonce: terms_1.nonce,
215
+ key: terms_1.key,
216
+ principal: terms_1.principal,
217
+ controls: terms_1.controls,
218
+ };
219
+ //# sourceMappingURL=protocols.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"protocols.js","sourceRoot":"","sources":["../../../src/reasoning/ban-logic/protocols.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,83 @@
1
+ import type { BANFormula } from './types';
2
+ /**
3
+ * R1 — Message-meaning (shared key).
4
+ *
5
+ * Si P cree A↔K B y P ve {X}_K, entonces P cree que A dijo X
6
+ * (asumiendo P ≠ originador, y la clave es genuinamente compartida
7
+ * solo entre A y B + posibles autoridades).
8
+ *
9
+ * Devuelve la primera derivación posible o null. La variante que enumera
10
+ * TODAS está en `saturate()`.
11
+ */
12
+ export declare function applyMessageMeaningShared(state: ReadonlyArray<BANFormula>, beliefP: BANFormula): BANFormula | null;
13
+ /**
14
+ * R2 — Message-meaning (public key).
15
+ *
16
+ * Si P cree |→K Q y P ve {X}_{K^-1} (cifrado con la clave privada de Q),
17
+ * entonces P cree que Q dijo X.
18
+ *
19
+ * Modelo: tratamos `encrypted(X, privateKey_Q)` como "Q firmó X".
20
+ * Convención de naming: si la clave pública se llama K, la privada
21
+ * compartirá el nombre con sufijo "_inv" o es identificable porque
22
+ * el atributo `shared` corresponde a Q.
23
+ *
24
+ * Para simplificar el motor, modelamos firma como `encrypted(X, K)` donde
25
+ * K es la clave pública y publicKey(Q, K). El "sentido directo" en
26
+ * la verdad: solo Q pudo haber producido ese ciphertext porque solo
27
+ * Q tiene la inversa. Así que la regla R2 dice: si P|≡|→K Q y P◁{X}_K
28
+ * entonces P|≡ Q|~ X. Esto es la versión "firma con clave pública".
29
+ */
30
+ export declare function applyMessageMeaningPublic(state: ReadonlyArray<BANFormula>, beliefP: BANFormula): BANFormula | null;
31
+ /**
32
+ * R3 — Message-meaning (shared secret).
33
+ *
34
+ * Si P cree A⇌Y B y P ve un mensaje compound que combina X con Y
35
+ * (modelo `compound([X, Y])`), entonces P cree que A dijo X.
36
+ */
37
+ export declare function applyMessageMeaningSecret(state: ReadonlyArray<BANFormula>, beliefP: BANFormula): BANFormula | null;
38
+ /**
39
+ * R4 — Nonce-verification.
40
+ *
41
+ * Si P cree que X es fresco y P cree que Q dijo X, entonces P cree
42
+ * que Q realmente cree X (porque sólo lo pudo haber dicho recientemente).
43
+ */
44
+ export declare function applyNonceVerification(state: ReadonlyArray<BANFormula>, beliefP: BANFormula): BANFormula | null;
45
+ /**
46
+ * R5 — Jurisdiction.
47
+ *
48
+ * Si P cree que Q tiene jurisdicción sobre X (P|≡ Q|⇒ X) y P cree
49
+ * que Q cree X (P|≡ Q|≡ X), entonces P cree X.
50
+ */
51
+ export declare function applyJurisdiction(state: ReadonlyArray<BANFormula>, beliefP: BANFormula): BANFormula | null;
52
+ /**
53
+ * R10 — Seeing encrypted: si P tiene la clave, ver {X}_K implica ver X.
54
+ */
55
+ export declare function applySeeingEncrypted(state: ReadonlyArray<BANFormula>, beliefP: BANFormula): BANFormula | null;
56
+ /**
57
+ * Decomposición de "ver compound": P ◁ <X1,...,Xn> ⇒ P ◁ Xi (todos).
58
+ * Devuelve la primera Xi que NO esté ya en state (para evitar duplicados).
59
+ */
60
+ export declare function applySeesCompound(state: ReadonlyArray<BANFormula>, beliefP: BANFormula): BANFormula | null;
61
+ /**
62
+ * Belief-conjunction descomposición.
63
+ */
64
+ export declare function applyBeliefConjunction(beliefP: BANFormula): BANFormula | null;
65
+ export declare function applyBeliefConjunctionRight(beliefP: BANFormula): BANFormula | null;
66
+ /**
67
+ * Said-conjunction descomposición.
68
+ */
69
+ export declare function applySaidConjunction(beliefP: BANFormula): BANFormula | null;
70
+ /**
71
+ * Propagación de frescura: si P|≡#X y X aparece dentro de un compound C
72
+ * que está en state, entonces P|≡#C.
73
+ */
74
+ export declare function applyFreshnessPropagation(state: ReadonlyArray<BANFormula>, beliefP: BANFormula): BANFormula | null;
75
+ export declare const RULES_REGISTRY: {
76
+ readonly R1_messageMeaningShared: typeof applyMessageMeaningShared;
77
+ readonly R2_messageMeaningPublic: typeof applyMessageMeaningPublic;
78
+ readonly R3_messageMeaningSecret: typeof applyMessageMeaningSecret;
79
+ readonly R4_nonceVerification: typeof applyNonceVerification;
80
+ readonly R5_jurisdiction: typeof applyJurisdiction;
81
+ readonly R10_seeingEncrypted: typeof applySeeingEncrypted;
82
+ };
83
+ //# sourceMappingURL=rules.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rules.d.ts","sourceRoot":"","sources":["../../../src/reasoning/ban-logic/rules.ts"],"names":[],"mappings":"AAwCA,OAAO,KAAK,EAAE,UAAU,EAAW,MAAM,SAAS,CAAC;AAEnD;;;;;;;;;GASG;AACH,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,aAAa,CAAC,UAAU,CAAC,EAChC,OAAO,EAAE,UAAU,GAClB,UAAU,GAAG,IAAI,CA2BnB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,aAAa,CAAC,UAAU,CAAC,EAChC,OAAO,EAAE,UAAU,GAClB,UAAU,GAAG,IAAI,CAmBnB;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,aAAa,CAAC,UAAU,CAAC,EAChC,OAAO,EAAE,UAAU,GAClB,UAAU,GAAG,IAAI,CA0BnB;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,aAAa,CAAC,UAAU,CAAC,EAChC,OAAO,EAAE,UAAU,GAClB,UAAU,GAAG,IAAI,CA+CnB;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,aAAa,CAAC,UAAU,CAAC,EAChC,OAAO,EAAE,UAAU,GAClB,UAAU,GAAG,IAAI,CAwCnB;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,aAAa,CAAC,UAAU,CAAC,EAChC,OAAO,EAAE,UAAU,GAClB,UAAU,GAAG,IAAI,CAgBnB;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,aAAa,CAAC,UAAU,CAAC,EAChC,OAAO,EAAE,UAAU,GAClB,UAAU,GAAG,IAAI,CAenB;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,UAAU,GAAG,UAAU,GAAG,IAAI,CAK7E;AAED,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,UAAU,GAAG,UAAU,GAAG,IAAI,CAIlF;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,UAAU,GAAG,UAAU,GAAG,IAAI,CAS3E;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,aAAa,CAAC,UAAU,CAAC,EAChC,OAAO,EAAE,UAAU,GAClB,UAAU,GAAG,IAAI,CAsBnB;AAED,eAAO,MAAM,cAAc;;;;;;;CAOjB,CAAC"}