@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,409 @@
1
+ "use strict";
2
+ // ============================================================
3
+ // BAN Logic — Reglas de inferencia
4
+ // ============================================================
5
+ //
6
+ // 10 reglas estándar BAN (1989) operando sobre un estado de creencias.
7
+ // Cada regla intenta producir UNA nueva fórmula a partir del estado.
8
+ // Si la regla no aplica, devuelve null.
9
+ //
10
+ // Convención: cada regla recibe `state` (lista de fórmulas conocidas)
11
+ // y un foco opcional `beliefP` (el principal P sobre cuyo punto de
12
+ // vista estamos razonando, si la regla lo necesita).
13
+ //
14
+ // Reglas:
15
+ // R1 message-meaning (shared key)
16
+ // P|≡ A↔K B , P◁ {X}_K ⇒ P|≡ A|~ X
17
+ // R2 message-meaning (public key)
18
+ // P|≡ |→K Q , P◁ {X}_{K^-1} ⇒ P|≡ Q|~ X
19
+ // (modelamos con encryption con key inversa; ver más abajo)
20
+ // R3 message-meaning (shared secret)
21
+ // P|≡ A⇌Y B , P◁ <X>_Y ⇒ P|≡ A|~ X
22
+ // R4 nonce-verification
23
+ // P|≡ #X , P|≡ Q|~ X ⇒ P|≡ Q|≡ X
24
+ // R5 jurisdiction
25
+ // P|≡ Q|⇒ X , P|≡ Q|≡ X ⇒ P|≡ X
26
+ // R6 belief-conjunction (descomposición y composición)
27
+ // P|≡ (X ∧ Y) ⇒ P|≡ X , P|≡ Y
28
+ // R7 said-conjunction
29
+ // P|≡ Q|~ (X ∧ Y) ⇒ P|≡ Q|~ X , P|≡ Q|~ Y
30
+ // R8 freshness-propagation
31
+ // P|≡ #X ⇒ P|≡ #(X, Y) (cuando X aparece en compound)
32
+ // R9 seeing-compound (descomposición de mensajes vistos)
33
+ // P◁ <X, Y> ⇒ P◁ X , P◁ Y
34
+ // R10 seeing-encrypted (cuando P tiene la clave)
35
+ // P◁ {X}_K , P|≡ A↔K P ⇒ P◁ X
36
+ //
37
+ // Implementación: cada `applyXxx` busca un par de fórmulas en `state`
38
+ // que satisfaga las premisas y devuelve la conclusión. Para enumerar
39
+ // todas las nuevas creencias, ver `saturate()` en `analyze.ts`.
40
+ Object.defineProperty(exports, "__esModule", { value: true });
41
+ exports.RULES_REGISTRY = void 0;
42
+ exports.applyMessageMeaningShared = applyMessageMeaningShared;
43
+ exports.applyMessageMeaningPublic = applyMessageMeaningPublic;
44
+ exports.applyMessageMeaningSecret = applyMessageMeaningSecret;
45
+ exports.applyNonceVerification = applyNonceVerification;
46
+ exports.applyJurisdiction = applyJurisdiction;
47
+ exports.applySeeingEncrypted = applySeeingEncrypted;
48
+ exports.applySeesCompound = applySeesCompound;
49
+ exports.applyBeliefConjunction = applyBeliefConjunction;
50
+ exports.applyBeliefConjunctionRight = applyBeliefConjunctionRight;
51
+ exports.applySaidConjunction = applySaidConjunction;
52
+ exports.applyFreshnessPropagation = applyFreshnessPropagation;
53
+ const terms_1 = require("./terms");
54
+ /**
55
+ * R1 — Message-meaning (shared key).
56
+ *
57
+ * Si P cree A↔K B y P ve {X}_K, entonces P cree que A dijo X
58
+ * (asumiendo P ≠ originador, y la clave es genuinamente compartida
59
+ * solo entre A y B + posibles autoridades).
60
+ *
61
+ * Devuelve la primera derivación posible o null. La variante que enumera
62
+ * TODAS está en `saturate()`.
63
+ */
64
+ function applyMessageMeaningShared(state, beliefP) {
65
+ if (beliefP.kind !== 'believes')
66
+ return null;
67
+ const p = beliefP.principal;
68
+ // Buscar premisa 1: P |≡ A↔K B
69
+ if (beliefP.about.kind !== 'sharedKey')
70
+ return null;
71
+ const sk = beliefP.about;
72
+ // Buscar premisa 2: P ◁ {X}_K en el state
73
+ for (const f of state) {
74
+ if (f.kind !== 'sees')
75
+ continue;
76
+ if (!(0, terms_1.termEquals)(f.principal, p))
77
+ continue;
78
+ if (f.what.kind !== 'encrypted')
79
+ continue;
80
+ if (!(0, terms_1.termEquals)(f.what.key, sk.key))
81
+ continue;
82
+ // Conclusión: P |≡ A |~ X (donde A es el OTRO participante, no P)
83
+ // Si P es uno de los participantes de la clave, A es el otro.
84
+ // Si P no participa de la clave, BAN dice "alguien con esa clave
85
+ // dijo X" → tomamos sk.a por defecto.
86
+ const other = (0, terms_1.termEquals)(p, sk.a) ? sk.b : (0, terms_1.termEquals)(p, sk.b) ? sk.a : sk.a;
87
+ return {
88
+ kind: 'believes',
89
+ principal: p,
90
+ about: { kind: 'said-message', principal: other, what: f.what.message },
91
+ };
92
+ }
93
+ return null;
94
+ }
95
+ /**
96
+ * R2 — Message-meaning (public key).
97
+ *
98
+ * Si P cree |→K Q y P ve {X}_{K^-1} (cifrado con la clave privada de Q),
99
+ * entonces P cree que Q dijo X.
100
+ *
101
+ * Modelo: tratamos `encrypted(X, privateKey_Q)` como "Q firmó X".
102
+ * Convención de naming: si la clave pública se llama K, la privada
103
+ * compartirá el nombre con sufijo "_inv" o es identificable porque
104
+ * el atributo `shared` corresponde a Q.
105
+ *
106
+ * Para simplificar el motor, modelamos firma como `encrypted(X, K)` donde
107
+ * K es la clave pública y publicKey(Q, K). El "sentido directo" en
108
+ * la verdad: solo Q pudo haber producido ese ciphertext porque solo
109
+ * Q tiene la inversa. Así que la regla R2 dice: si P|≡|→K Q y P◁{X}_K
110
+ * entonces P|≡ Q|~ X. Esto es la versión "firma con clave pública".
111
+ */
112
+ function applyMessageMeaningPublic(state, beliefP) {
113
+ if (beliefP.kind !== 'believes')
114
+ return null;
115
+ const p = beliefP.principal;
116
+ if (beliefP.about.kind !== 'publicKey')
117
+ return null;
118
+ const pk = beliefP.about;
119
+ for (const f of state) {
120
+ if (f.kind !== 'sees')
121
+ continue;
122
+ if (!(0, terms_1.termEquals)(f.principal, p))
123
+ continue;
124
+ if (f.what.kind !== 'encrypted')
125
+ continue;
126
+ if (!(0, terms_1.termEquals)(f.what.key, pk.key))
127
+ continue;
128
+ return {
129
+ kind: 'believes',
130
+ principal: p,
131
+ about: { kind: 'said-message', principal: pk.principal, what: f.what.message },
132
+ };
133
+ }
134
+ return null;
135
+ }
136
+ /**
137
+ * R3 — Message-meaning (shared secret).
138
+ *
139
+ * Si P cree A⇌Y B y P ve un mensaje compound que combina X con Y
140
+ * (modelo `compound([X, Y])`), entonces P cree que A dijo X.
141
+ */
142
+ function applyMessageMeaningSecret(state, beliefP) {
143
+ if (beliefP.kind !== 'believes')
144
+ return null;
145
+ const p = beliefP.principal;
146
+ if (beliefP.about.kind !== 'sharedSecret')
147
+ return null;
148
+ const ss = beliefP.about;
149
+ for (const f of state) {
150
+ if (f.kind !== 'sees')
151
+ continue;
152
+ if (!(0, terms_1.termEquals)(f.principal, p))
153
+ continue;
154
+ if (f.what.kind !== 'compound')
155
+ continue;
156
+ if (f.what.parts.length < 2)
157
+ continue;
158
+ // El último parte debe ser el secreto Y; el resto es X.
159
+ const last = f.what.parts[f.what.parts.length - 1];
160
+ if (!last || !(0, terms_1.termEquals)(last, ss.secret))
161
+ continue;
162
+ const xParts = f.what.parts.slice(0, -1);
163
+ const x = xParts.length === 1 && xParts[0] ? xParts[0] : { kind: 'message', content: xParts };
164
+ const other = (0, terms_1.termEquals)(p, ss.a) ? ss.b : ss.a;
165
+ return {
166
+ kind: 'believes',
167
+ principal: p,
168
+ about: { kind: 'said-message', principal: other, what: x },
169
+ };
170
+ }
171
+ return null;
172
+ }
173
+ /**
174
+ * R4 — Nonce-verification.
175
+ *
176
+ * Si P cree que X es fresco y P cree que Q dijo X, entonces P cree
177
+ * que Q realmente cree X (porque sólo lo pudo haber dicho recientemente).
178
+ */
179
+ function applyNonceVerification(state, beliefP) {
180
+ if (beliefP.kind !== 'believes')
181
+ return null;
182
+ const p = beliefP.principal;
183
+ // Caso A: beliefP es "P |≡ Q |~ X"
184
+ if (beliefP.about.kind === 'said-message') {
185
+ const sm = beliefP.about;
186
+ // Buscar P |≡ #X en state
187
+ for (const f of state) {
188
+ if (f.kind !== 'believes')
189
+ continue;
190
+ if (!(0, terms_1.termEquals)(f.principal, p))
191
+ continue;
192
+ if (f.about.kind !== 'fresh')
193
+ continue;
194
+ if (!(0, terms_1.termEquals)(f.about.what, sm.what))
195
+ continue;
196
+ return {
197
+ kind: 'believes',
198
+ principal: p,
199
+ about: {
200
+ kind: 'believes',
201
+ principal: sm.principal,
202
+ about: { kind: 'sees', principal: sm.principal, what: sm.what },
203
+ },
204
+ };
205
+ }
206
+ }
207
+ // Caso B: beliefP es "P |≡ #X". Buscar said-message.
208
+ if (beliefP.about.kind === 'fresh') {
209
+ const xf = beliefP.about.what;
210
+ for (const f of state) {
211
+ if (f.kind !== 'believes')
212
+ continue;
213
+ if (!(0, terms_1.termEquals)(f.principal, p))
214
+ continue;
215
+ if (f.about.kind !== 'said-message')
216
+ continue;
217
+ if (!(0, terms_1.termEquals)(f.about.what, xf))
218
+ continue;
219
+ return {
220
+ kind: 'believes',
221
+ principal: p,
222
+ about: {
223
+ kind: 'believes',
224
+ principal: f.about.principal,
225
+ about: { kind: 'sees', principal: f.about.principal, what: xf },
226
+ },
227
+ };
228
+ }
229
+ }
230
+ return null;
231
+ }
232
+ /**
233
+ * R5 — Jurisdiction.
234
+ *
235
+ * Si P cree que Q tiene jurisdicción sobre X (P|≡ Q|⇒ X) y P cree
236
+ * que Q cree X (P|≡ Q|≡ X), entonces P cree X.
237
+ */
238
+ function applyJurisdiction(state, beliefP) {
239
+ if (beliefP.kind !== 'believes')
240
+ return null;
241
+ const p = beliefP.principal;
242
+ // Caso A: beliefP es la jurisdicción "P |≡ Q |⇒ X"
243
+ if (beliefP.about.kind === 'controls' || beliefP.about.kind === 'jurisdiction') {
244
+ const ctrl = beliefP.about;
245
+ const q = ctrl.principal;
246
+ const stmt = ctrl.kind === 'controls' ? ctrl.statement : ctrl.over;
247
+ // Buscar P |≡ Q |≡ stmt
248
+ for (const f of state) {
249
+ if (f.kind !== 'believes')
250
+ continue;
251
+ if (!(0, terms_1.termEquals)(f.principal, p))
252
+ continue;
253
+ if (f.about.kind !== 'believes')
254
+ continue;
255
+ if (!(0, terms_1.termEquals)(f.about.principal, q))
256
+ continue;
257
+ if (!(0, terms_1.formulaEquals)(f.about.about, stmt))
258
+ continue;
259
+ return { kind: 'believes', principal: p, about: stmt };
260
+ }
261
+ }
262
+ // Caso B: beliefP es "P |≡ Q |≡ X"; buscar la jurisdicción.
263
+ if (beliefP.about.kind === 'believes') {
264
+ const inner = beliefP.about;
265
+ const q = inner.principal;
266
+ const stmt = inner.about;
267
+ for (const f of state) {
268
+ if (f.kind !== 'believes')
269
+ continue;
270
+ if (!(0, terms_1.termEquals)(f.principal, p))
271
+ continue;
272
+ const a = f.about;
273
+ const isCtrl = a.kind === 'controls' || a.kind === 'jurisdiction';
274
+ if (!isCtrl)
275
+ continue;
276
+ if (!(0, terms_1.termEquals)(a.principal, q))
277
+ continue;
278
+ const aStmt = a.kind === 'controls' ? a.statement : a.over;
279
+ if (!(0, terms_1.formulaEquals)(aStmt, stmt))
280
+ continue;
281
+ return { kind: 'believes', principal: p, about: stmt };
282
+ }
283
+ }
284
+ return null;
285
+ }
286
+ /**
287
+ * R10 — Seeing encrypted: si P tiene la clave, ver {X}_K implica ver X.
288
+ */
289
+ function applySeeingEncrypted(state, beliefP) {
290
+ // beliefP suele ser "P ◁ {X}_K"
291
+ if (beliefP.kind !== 'sees')
292
+ return null;
293
+ if (beliefP.what.kind !== 'encrypted')
294
+ return null;
295
+ const p = beliefP.principal;
296
+ const k = beliefP.what.key;
297
+ // Buscar: P |≡ A↔K B donde P ∈ {A,B}, o publicKey de P, o P es authority.
298
+ for (const f of state) {
299
+ if (f.kind !== 'believes')
300
+ continue;
301
+ if (!(0, terms_1.termEquals)(f.principal, p))
302
+ continue;
303
+ if (f.about.kind !== 'sharedKey')
304
+ continue;
305
+ if (!(0, terms_1.termEquals)(f.about.key, k))
306
+ continue;
307
+ if (!(0, terms_1.termEquals)(f.about.a, p) && !(0, terms_1.termEquals)(f.about.b, p))
308
+ continue;
309
+ return { kind: 'sees', principal: p, what: beliefP.what.message };
310
+ }
311
+ return null;
312
+ }
313
+ /**
314
+ * Decomposición de "ver compound": P ◁ <X1,...,Xn> ⇒ P ◁ Xi (todos).
315
+ * Devuelve la primera Xi que NO esté ya en state (para evitar duplicados).
316
+ */
317
+ function applySeesCompound(state, beliefP) {
318
+ if (beliefP.kind !== 'sees')
319
+ return null;
320
+ const p = beliefP.principal;
321
+ const parts = beliefP.what.kind === 'message'
322
+ ? beliefP.what.content
323
+ : beliefP.what.kind === 'compound'
324
+ ? beliefP.what.parts
325
+ : null;
326
+ if (!parts)
327
+ return null;
328
+ for (const part of parts) {
329
+ const cand = { kind: 'sees', principal: p, what: part };
330
+ if (!(0, terms_1.hasFormula)(state, cand))
331
+ return cand;
332
+ }
333
+ return null;
334
+ }
335
+ /**
336
+ * Belief-conjunction descomposición.
337
+ */
338
+ function applyBeliefConjunction(beliefP) {
339
+ if (beliefP.kind !== 'believes')
340
+ return null;
341
+ if (beliefP.about.kind !== 'formula-and')
342
+ return null;
343
+ // Devolvemos solo la izquierda; la derecha la captura saturate en otra pasada.
344
+ return { kind: 'believes', principal: beliefP.principal, about: beliefP.about.left };
345
+ }
346
+ function applyBeliefConjunctionRight(beliefP) {
347
+ if (beliefP.kind !== 'believes')
348
+ return null;
349
+ if (beliefP.about.kind !== 'formula-and')
350
+ return null;
351
+ return { kind: 'believes', principal: beliefP.principal, about: beliefP.about.right };
352
+ }
353
+ /**
354
+ * Said-conjunction descomposición.
355
+ */
356
+ function applySaidConjunction(beliefP) {
357
+ if (beliefP.kind !== 'believes')
358
+ return null;
359
+ if (beliefP.about.kind !== 'said')
360
+ return null;
361
+ if (beliefP.about.what.kind !== 'formula-and')
362
+ return null;
363
+ return {
364
+ kind: 'believes',
365
+ principal: beliefP.principal,
366
+ about: { kind: 'said', principal: beliefP.about.principal, what: beliefP.about.what.left },
367
+ };
368
+ }
369
+ /**
370
+ * Propagación de frescura: si P|≡#X y X aparece dentro de un compound C
371
+ * que está en state, entonces P|≡#C.
372
+ */
373
+ function applyFreshnessPropagation(state, beliefP) {
374
+ if (beliefP.kind !== 'believes')
375
+ return null;
376
+ if (beliefP.about.kind !== 'fresh')
377
+ return null;
378
+ const p = beliefP.principal;
379
+ const xf = beliefP.about.what;
380
+ // Buscar compounds vistos por P que contengan xf.
381
+ for (const f of state) {
382
+ if (f.kind !== 'sees')
383
+ continue;
384
+ if (!(0, terms_1.termEquals)(f.principal, p))
385
+ continue;
386
+ const parts = f.what.kind === 'message' ? f.what.content : f.what.kind === 'compound' ? f.what.parts : null;
387
+ if (!parts)
388
+ continue;
389
+ if (!parts.some((part) => (0, terms_1.termEquals)(part, xf)))
390
+ continue;
391
+ const candidate = {
392
+ kind: 'believes',
393
+ principal: p,
394
+ about: { kind: 'fresh', what: f.what },
395
+ };
396
+ if (!(0, terms_1.hasFormula)(state, candidate))
397
+ return candidate;
398
+ }
399
+ return null;
400
+ }
401
+ exports.RULES_REGISTRY = {
402
+ R1_messageMeaningShared: applyMessageMeaningShared,
403
+ R2_messageMeaningPublic: applyMessageMeaningPublic,
404
+ R3_messageMeaningSecret: applyMessageMeaningSecret,
405
+ R4_nonceVerification: applyNonceVerification,
406
+ R5_jurisdiction: applyJurisdiction,
407
+ R10_seeingEncrypted: applySeeingEncrypted,
408
+ };
409
+ //# sourceMappingURL=rules.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rules.js","sourceRoot":"","sources":["../../../src/reasoning/ban-logic/rules.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ import type { BANFormula, BANTerm } from './types';
2
+ export declare const principal: (name: string) => BANTerm;
3
+ export declare const key: (name: string, shared?: [string, string]) => BANTerm;
4
+ export declare const nonce: (name: string) => BANTerm;
5
+ export declare const atom: (name: string) => BANTerm;
6
+ export declare const message: (...content: BANTerm[]) => BANTerm;
7
+ export declare const encrypted: (msg: BANTerm, k: BANTerm) => BANTerm;
8
+ export declare const hashed: (msg: BANTerm) => BANTerm;
9
+ export declare const compound: (...parts: BANTerm[]) => BANTerm;
10
+ export declare const believes: (p: BANTerm, f: BANFormula) => BANFormula;
11
+ export declare const sees: (p: BANTerm, w: BANTerm) => BANFormula;
12
+ export declare const said: (p: BANTerm, f: BANFormula) => BANFormula;
13
+ export declare const saidMessage: (p: BANTerm, w: BANTerm) => BANFormula;
14
+ export declare const jurisdiction: (p: BANTerm, f: BANFormula) => BANFormula;
15
+ export declare const fresh: (w: BANTerm) => BANFormula;
16
+ export declare const sharedKey: (a: BANTerm, b: BANTerm, k: BANTerm) => BANFormula;
17
+ export declare const publicKey: (p: BANTerm, k: BANTerm) => BANFormula;
18
+ export declare const sharedSecret: (a: BANTerm, b: BANTerm, s: BANTerm) => BANFormula;
19
+ export declare const controls: (p: BANTerm, f: BANFormula) => BANFormula;
20
+ export declare const formulaAnd: (left: BANFormula, right: BANFormula) => BANFormula;
21
+ export declare function termEquals(a: BANTerm, b: BANTerm): boolean;
22
+ export declare function formulaEquals(a: BANFormula, b: BANFormula): boolean;
23
+ export declare function hasFormula(state: ReadonlyArray<BANFormula>, target: BANFormula): boolean;
24
+ export declare function termToString(t: BANTerm): string;
25
+ export declare function formulaToString(f: BANFormula): string;
26
+ //# sourceMappingURL=terms.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"terms.d.ts","sourceRoot":"","sources":["../../../src/reasoning/ban-logic/terms.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAInD,eAAO,MAAM,SAAS,GAAI,MAAM,MAAM,KAAG,OAAwC,CAAC;AAElF,eAAO,MAAM,GAAG,GAAI,MAAM,MAAM,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,KAAG,OACE,CAAC;AAEjE,eAAO,MAAM,KAAK,GAAI,MAAM,MAAM,KAAG,OAAoC,CAAC;AAE1E,eAAO,MAAM,IAAI,GAAI,MAAM,MAAM,KAAG,OAAmC,CAAC;AAExE,eAAO,MAAM,OAAO,GAAI,GAAG,SAAS,OAAO,EAAE,KAAG,OAAyC,CAAC;AAE1F,eAAO,MAAM,SAAS,GAAI,KAAK,OAAO,EAAE,GAAG,OAAO,KAAG,OAInD,CAAC;AAEH,eAAO,MAAM,MAAM,GAAI,KAAK,OAAO,KAAG,OAA6C,CAAC;AAEpF,eAAO,MAAM,QAAQ,GAAI,GAAG,OAAO,OAAO,EAAE,KAAG,OAAwC,CAAC;AAIxF,eAAO,MAAM,QAAQ,GAAI,GAAG,OAAO,EAAE,GAAG,UAAU,KAAG,UAInD,CAAC;AAEH,eAAO,MAAM,IAAI,GAAI,GAAG,OAAO,EAAE,GAAG,OAAO,KAAG,UAI5C,CAAC;AAEH,eAAO,MAAM,IAAI,GAAI,GAAG,OAAO,EAAE,GAAG,UAAU,KAAG,UAI/C,CAAC;AAEH,eAAO,MAAM,WAAW,GAAI,GAAG,OAAO,EAAE,GAAG,OAAO,KAAG,UAInD,CAAC;AAEH,eAAO,MAAM,YAAY,GAAI,GAAG,OAAO,EAAE,GAAG,UAAU,KAAG,UAIvD,CAAC;AAEH,eAAO,MAAM,KAAK,GAAI,GAAG,OAAO,KAAG,UAA0C,CAAC;AAE9E,eAAO,MAAM,SAAS,GAAI,GAAG,OAAO,EAAE,GAAG,OAAO,EAAE,GAAG,OAAO,KAAG,UAK7D,CAAC;AAEH,eAAO,MAAM,SAAS,GAAI,GAAG,OAAO,EAAE,GAAG,OAAO,KAAG,UAIjD,CAAC;AAEH,eAAO,MAAM,YAAY,GAAI,GAAG,OAAO,EAAE,GAAG,OAAO,EAAE,GAAG,OAAO,KAAG,UAKhE,CAAC;AAEH,eAAO,MAAM,QAAQ,GAAI,GAAG,OAAO,EAAE,GAAG,UAAU,KAAG,UAInD,CAAC;AAEH,eAAO,MAAM,UAAU,GAAI,MAAM,UAAU,EAAE,OAAO,UAAU,KAAG,UAI/D,CAAC;AAIH,wBAAgB,UAAU,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,GAAG,OAAO,CAiD1D;AAED,wBAAgB,aAAa,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,GAAG,OAAO,CAqDnE;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,aAAa,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,UAAU,GAAG,OAAO,CAExF;AAID,wBAAgB,YAAY,CAAC,CAAC,EAAE,OAAO,GAAG,MAAM,CAiB/C;AAED,wBAAgB,eAAe,CAAC,CAAC,EAAE,UAAU,GAAG,MAAM,CAyBrD"}