@stevenvo780/st-lang 4.8.0 → 4.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (145) hide show
  1. package/dist/logic/profiles/quantum/index.d.ts +153 -0
  2. package/dist/logic/profiles/quantum/index.d.ts.map +1 -0
  3. package/dist/logic/profiles/quantum/index.js +788 -0
  4. package/dist/logic/profiles/quantum/index.js.map +1 -0
  5. package/dist/namespaces/reasoning.d.ts +2 -1
  6. package/dist/namespaces/reasoning.d.ts.map +1 -1
  7. package/dist/namespaces/reasoning.js +3 -1
  8. package/dist/namespaces/reasoning.js.map +1 -1
  9. package/dist/proof-systems/certificate/canonical.d.ts +18 -0
  10. package/dist/proof-systems/certificate/canonical.d.ts.map +1 -0
  11. package/dist/proof-systems/certificate/canonical.js +79 -0
  12. package/dist/proof-systems/certificate/canonical.js.map +1 -0
  13. package/dist/proof-systems/certificate/generate.d.ts +39 -0
  14. package/dist/proof-systems/certificate/generate.d.ts.map +1 -0
  15. package/dist/proof-systems/certificate/generate.js +259 -0
  16. package/dist/proof-systems/certificate/generate.js.map +1 -0
  17. package/dist/proof-systems/certificate/index.d.ts +7 -0
  18. package/dist/proof-systems/certificate/index.d.ts.map +1 -0
  19. package/dist/proof-systems/certificate/index.js +23 -0
  20. package/dist/proof-systems/certificate/index.js.map +1 -0
  21. package/dist/proof-systems/certificate/lfsc.d.ts +15 -0
  22. package/dist/proof-systems/certificate/lfsc.d.ts.map +1 -0
  23. package/dist/proof-systems/certificate/lfsc.js +395 -0
  24. package/dist/proof-systems/certificate/lfsc.js.map +1 -0
  25. package/dist/proof-systems/certificate/rules.d.ts +8 -0
  26. package/dist/proof-systems/certificate/rules.d.ts.map +1 -0
  27. package/dist/proof-systems/certificate/rules.js +369 -0
  28. package/dist/proof-systems/certificate/rules.js.map +1 -0
  29. package/dist/proof-systems/certificate/types.d.ts +114 -0
  30. package/dist/proof-systems/certificate/types.d.ts.map +1 -0
  31. package/dist/proof-systems/certificate/types.js +18 -0
  32. package/dist/proof-systems/certificate/types.js.map +1 -0
  33. package/dist/proof-systems/certificate/verify.d.ts +20 -0
  34. package/dist/proof-systems/certificate/verify.d.ts.map +1 -0
  35. package/dist/proof-systems/certificate/verify.js +171 -0
  36. package/dist/proof-systems/certificate/verify.js.map +1 -0
  37. package/dist/reasoning/ban-logic/analyze.d.ts +31 -0
  38. package/dist/reasoning/ban-logic/analyze.d.ts.map +1 -0
  39. package/dist/reasoning/ban-logic/analyze.js +113 -0
  40. package/dist/reasoning/ban-logic/analyze.js.map +1 -0
  41. package/dist/reasoning/ban-logic/index.d.ts +7 -0
  42. package/dist/reasoning/ban-logic/index.d.ts.map +1 -0
  43. package/dist/reasoning/ban-logic/index.js +66 -0
  44. package/dist/reasoning/ban-logic/index.js.map +1 -0
  45. package/dist/reasoning/ban-logic/protocols.d.ts +54 -0
  46. package/dist/reasoning/ban-logic/protocols.d.ts.map +1 -0
  47. package/dist/reasoning/ban-logic/protocols.js +219 -0
  48. package/dist/reasoning/ban-logic/protocols.js.map +1 -0
  49. package/dist/reasoning/ban-logic/rules.d.ts +83 -0
  50. package/dist/reasoning/ban-logic/rules.d.ts.map +1 -0
  51. package/dist/reasoning/ban-logic/rules.js +409 -0
  52. package/dist/reasoning/ban-logic/rules.js.map +1 -0
  53. package/dist/reasoning/ban-logic/terms.d.ts +26 -0
  54. package/dist/reasoning/ban-logic/terms.d.ts.map +1 -0
  55. package/dist/reasoning/ban-logic/terms.js +262 -0
  56. package/dist/reasoning/ban-logic/terms.js.map +1 -0
  57. package/dist/reasoning/ban-logic/types.d.ts +107 -0
  58. package/dist/reasoning/ban-logic/types.d.ts.map +1 -0
  59. package/dist/reasoning/ban-logic/types.js +27 -0
  60. package/dist/reasoning/ban-logic/types.js.map +1 -0
  61. package/dist/reasoning/differential-privacy/index.d.ts +121 -0
  62. package/dist/reasoning/differential-privacy/index.d.ts.map +1 -0
  63. package/dist/reasoning/differential-privacy/index.js +417 -0
  64. package/dist/reasoning/differential-privacy/index.js.map +1 -0
  65. package/dist/tests/logic/profiles/quantum/quantum.test.d.ts +2 -0
  66. package/dist/tests/logic/profiles/quantum/quantum.test.d.ts.map +1 -0
  67. package/dist/tests/logic/profiles/quantum/quantum.test.js +209 -0
  68. package/dist/tests/logic/profiles/quantum/quantum.test.js.map +1 -0
  69. package/dist/tests/proof-systems/certificate/certificate.test.d.ts +2 -0
  70. package/dist/tests/proof-systems/certificate/certificate.test.d.ts.map +1 -0
  71. package/dist/tests/proof-systems/certificate/certificate.test.js +449 -0
  72. package/dist/tests/proof-systems/certificate/certificate.test.js.map +1 -0
  73. package/dist/tests/reasoning/ban-logic/ban-logic.test.d.ts +2 -0
  74. package/dist/tests/reasoning/ban-logic/ban-logic.test.d.ts.map +1 -0
  75. package/dist/tests/reasoning/ban-logic/ban-logic.test.js +270 -0
  76. package/dist/tests/reasoning/ban-logic/ban-logic.test.js.map +1 -0
  77. package/dist/tests/reasoning/differential-privacy/differential-privacy.test.d.ts +2 -0
  78. package/dist/tests/reasoning/differential-privacy/differential-privacy.test.d.ts.map +1 -0
  79. package/dist/tests/reasoning/differential-privacy/differential-privacy.test.js +388 -0
  80. package/dist/tests/reasoning/differential-privacy/differential-privacy.test.js.map +1 -0
  81. package/dist/tests/tooling/mathlib/mathlib.test.d.ts +2 -0
  82. package/dist/tests/tooling/mathlib/mathlib.test.d.ts.map +1 -0
  83. package/dist/tests/tooling/mathlib/mathlib.test.js +214 -0
  84. package/dist/tests/tooling/mathlib/mathlib.test.js.map +1 -0
  85. package/dist/tests/type-theory/effects/effects.test.d.ts +2 -0
  86. package/dist/tests/type-theory/effects/effects.test.d.ts.map +1 -0
  87. package/dist/tests/type-theory/effects/effects.test.js +242 -0
  88. package/dist/tests/type-theory/effects/effects.test.js.map +1 -0
  89. package/dist/tooling/mathlib/group.d.ts +27 -0
  90. package/dist/tooling/mathlib/group.d.ts.map +1 -0
  91. package/dist/tooling/mathlib/group.js +89 -0
  92. package/dist/tooling/mathlib/group.js.map +1 -0
  93. package/dist/tooling/mathlib/index.d.ts +8 -0
  94. package/dist/tooling/mathlib/index.d.ts.map +1 -0
  95. package/dist/tooling/mathlib/index.js +40 -0
  96. package/dist/tooling/mathlib/index.js.map +1 -0
  97. package/dist/tooling/mathlib/instances.d.ts +29 -0
  98. package/dist/tooling/mathlib/instances.d.ts.map +1 -0
  99. package/dist/tooling/mathlib/instances.js +139 -0
  100. package/dist/tooling/mathlib/instances.js.map +1 -0
  101. package/dist/tooling/mathlib/lemmas.d.ts +3 -0
  102. package/dist/tooling/mathlib/lemmas.d.ts.map +1 -0
  103. package/dist/tooling/mathlib/lemmas.js +72 -0
  104. package/dist/tooling/mathlib/lemmas.js.map +1 -0
  105. package/dist/tooling/mathlib/order.d.ts +29 -0
  106. package/dist/tooling/mathlib/order.d.ts.map +1 -0
  107. package/dist/tooling/mathlib/order.js +91 -0
  108. package/dist/tooling/mathlib/order.js.map +1 -0
  109. package/dist/tooling/mathlib/ring.d.ts +15 -0
  110. package/dist/tooling/mathlib/ring.d.ts.map +1 -0
  111. package/dist/tooling/mathlib/ring.js +91 -0
  112. package/dist/tooling/mathlib/ring.js.map +1 -0
  113. package/dist/tooling/mathlib/types.d.ts +62 -0
  114. package/dist/tooling/mathlib/types.d.ts.map +1 -0
  115. package/dist/tooling/mathlib/types.js +7 -0
  116. package/dist/tooling/mathlib/types.js.map +1 -0
  117. package/dist/type-theory/effects/core.d.ts +27 -0
  118. package/dist/type-theory/effects/core.d.ts.map +1 -0
  119. package/dist/type-theory/effects/core.js +79 -0
  120. package/dist/type-theory/effects/core.js.map +1 -0
  121. package/dist/type-theory/effects/exception.d.ts +18 -0
  122. package/dist/type-theory/effects/exception.d.ts.map +1 -0
  123. package/dist/type-theory/effects/exception.js +59 -0
  124. package/dist/type-theory/effects/exception.js.map +1 -0
  125. package/dist/type-theory/effects/index.d.ts +11 -0
  126. package/dist/type-theory/effects/index.d.ts.map +1 -0
  127. package/dist/type-theory/effects/index.js +50 -0
  128. package/dist/type-theory/effects/index.js.map +1 -0
  129. package/dist/type-theory/effects/reader.d.ts +20 -0
  130. package/dist/type-theory/effects/reader.d.ts.map +1 -0
  131. package/dist/type-theory/effects/reader.js +62 -0
  132. package/dist/type-theory/effects/reader.js.map +1 -0
  133. package/dist/type-theory/effects/state.d.ts +31 -0
  134. package/dist/type-theory/effects/state.d.ts.map +1 -0
  135. package/dist/type-theory/effects/state.js +91 -0
  136. package/dist/type-theory/effects/state.js.map +1 -0
  137. package/dist/type-theory/effects/types.d.ts +45 -0
  138. package/dist/type-theory/effects/types.d.ts.map +1 -0
  139. package/dist/type-theory/effects/types.js +21 -0
  140. package/dist/type-theory/effects/types.js.map +1 -0
  141. package/dist/type-theory/effects/writer.d.ts +30 -0
  142. package/dist/type-theory/effects/writer.d.ts.map +1 -0
  143. package/dist/type-theory/effects/writer.js +79 -0
  144. package/dist/type-theory/effects/writer.js.map +1 -0
  145. package/package.json +1 -1
@@ -0,0 +1,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":";AAAA,+DAA+D;AAC/D,mCAAmC;AACnC,+DAA+D;AAC/D,EAAE;AACF,uEAAuE;AACvE,qEAAqE;AACrE,wCAAwC;AACxC,EAAE;AACF,sEAAsE;AACtE,mEAAmE;AACnE,qDAAqD;AACrD,EAAE;AACF,UAAU;AACV,qCAAqC;AACrC,gDAAgD;AAChD,qCAAqC;AACrC,iDAAiD;AACjD,kEAAkE;AAClE,wCAAwC;AACxC,gDAAgD;AAChD,2BAA2B;AAC3B,gDAAgD;AAChD,qBAAqB;AACrB,4CAA4C;AAC5C,0DAA0D;AAC1D,sDAAsD;AACtD,yBAAyB;AACzB,8DAA8D;AAC9D,8BAA8B;AAC9B,iFAAiF;AACjF,4DAA4D;AAC5D,kDAAkD;AAClD,mDAAmD;AACnD,2CAA2C;AAC3C,EAAE;AACF,sEAAsE;AACtE,qEAAqE;AACrE,gEAAgE;;;AAehE,8DA8BC;AAmBD,8DAsBC;AAQD,8DA6BC;AAQD,wDAkDC;AAQD,8CA2CC;AAKD,oDAmBC;AAMD,8CAkBC;AAKD,wDAKC;AAED,kEAIC;AAKD,oDASC;AAMD,8DAyBC;AAnVD,mCAAgE;AAGhE;;;;;;;;;GASG;AACH,SAAgB,yBAAyB,CACvC,KAAgC,EAChC,OAAmB;IAEnB,IAAI,OAAO,CAAC,IAAI,KAAK,UAAU;QAAE,OAAO,IAAI,CAAC;IAC7C,MAAM,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC;IAE5B,+BAA+B;IAC/B,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,WAAW;QAAE,OAAO,IAAI,CAAC;IACpD,MAAM,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC;IAEzB,0CAA0C;IAC1C,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM;YAAE,SAAS;QAChC,IAAI,CAAC,IAAA,kBAAU,EAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC;YAAE,SAAS;QAC1C,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,WAAW;YAAE,SAAS;QAC1C,IAAI,CAAC,IAAA,kBAAU,EAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC;YAAE,SAAS;QAE9C,mEAAmE;QACnE,8DAA8D;QAC9D,iEAAiE;QACjE,sCAAsC;QACtC,MAAM,KAAK,GAAY,IAAA,kBAAU,EAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAA,kBAAU,EAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACtF,OAAO;YACL,IAAI,EAAE,UAAU;YAChB,SAAS,EAAE,CAAC;YACZ,KAAK,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE;SACxE,CAAC;IACJ,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,SAAgB,yBAAyB,CACvC,KAAgC,EAChC,OAAmB;IAEnB,IAAI,OAAO,CAAC,IAAI,KAAK,UAAU;QAAE,OAAO,IAAI,CAAC;IAC7C,MAAM,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC;IAC5B,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,WAAW;QAAE,OAAO,IAAI,CAAC;IACpD,MAAM,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC;IAEzB,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM;YAAE,SAAS;QAChC,IAAI,CAAC,IAAA,kBAAU,EAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC;YAAE,SAAS;QAC1C,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,WAAW;YAAE,SAAS;QAC1C,IAAI,CAAC,IAAA,kBAAU,EAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC;YAAE,SAAS;QAE9C,OAAO;YACL,IAAI,EAAE,UAAU;YAChB,SAAS,EAAE,CAAC;YACZ,KAAK,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,SAAS,EAAE,EAAE,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE;SAC/E,CAAC;IACJ,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;GAKG;AACH,SAAgB,yBAAyB,CACvC,KAAgC,EAChC,OAAmB;IAEnB,IAAI,OAAO,CAAC,IAAI,KAAK,UAAU;QAAE,OAAO,IAAI,CAAC;IAC7C,MAAM,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC;IAC5B,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,cAAc;QAAE,OAAO,IAAI,CAAC;IACvD,MAAM,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC;IAEzB,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM;YAAE,SAAS;QAChC,IAAI,CAAC,IAAA,kBAAU,EAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC;YAAE,SAAS;QAC1C,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,UAAU;YAAE,SAAS;QACzC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC;YAAE,SAAS;QACtC,wDAAwD;QACxD,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACnD,IAAI,CAAC,IAAI,IAAI,CAAC,IAAA,kBAAU,EAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC;YAAE,SAAS;QAEpD,MAAM,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACzC,MAAM,CAAC,GACL,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;QACtF,MAAM,KAAK,GAAY,IAAA,kBAAU,EAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACzD,OAAO;YACL,IAAI,EAAE,UAAU;YAChB,SAAS,EAAE,CAAC;YACZ,KAAK,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EAAE;SAC3D,CAAC;IACJ,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;GAKG;AACH,SAAgB,sBAAsB,CACpC,KAAgC,EAChC,OAAmB;IAEnB,IAAI,OAAO,CAAC,IAAI,KAAK,UAAU;QAAE,OAAO,IAAI,CAAC;IAC7C,MAAM,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC;IAE5B,mCAAmC;IACnC,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;QAC1C,MAAM,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC;QACzB,0BAA0B;QAC1B,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;YACtB,IAAI,CAAC,CAAC,IAAI,KAAK,UAAU;gBAAE,SAAS;YACpC,IAAI,CAAC,IAAA,kBAAU,EAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC;gBAAE,SAAS;YAC1C,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,OAAO;gBAAE,SAAS;YACvC,IAAI,CAAC,IAAA,kBAAU,EAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC;gBAAE,SAAS;YAEjD,OAAO;gBACL,IAAI,EAAE,UAAU;gBAChB,SAAS,EAAE,CAAC;gBACZ,KAAK,EAAE;oBACL,IAAI,EAAE,UAAU;oBAChB,SAAS,EAAE,EAAE,CAAC,SAAS;oBACvB,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE;iBAChE;aACF,CAAC;QACJ,CAAC;IACH,CAAC;IAED,qDAAqD;IACrD,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QACnC,MAAM,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC;QAC9B,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;YACtB,IAAI,CAAC,CAAC,IAAI,KAAK,UAAU;gBAAE,SAAS;YACpC,IAAI,CAAC,IAAA,kBAAU,EAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC;gBAAE,SAAS;YAC1C,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,cAAc;gBAAE,SAAS;YAC9C,IAAI,CAAC,IAAA,kBAAU,EAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;gBAAE,SAAS;YAE5C,OAAO;gBACL,IAAI,EAAE,UAAU;gBAChB,SAAS,EAAE,CAAC;gBACZ,KAAK,EAAE;oBACL,IAAI,EAAE,UAAU;oBAChB,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,SAAS;oBAC5B,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,EAAE;iBAChE;aACF,CAAC;QACJ,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;GAKG;AACH,SAAgB,iBAAiB,CAC/B,KAAgC,EAChC,OAAmB;IAEnB,IAAI,OAAO,CAAC,IAAI,KAAK,UAAU;QAAE,OAAO,IAAI,CAAC;IAC7C,MAAM,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC;IAE5B,mDAAmD;IACnD,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,UAAU,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;QAC/E,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC;QAC3B,MAAM,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC;QACzB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;QACnE,wBAAwB;QACxB,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;YACtB,IAAI,CAAC,CAAC,IAAI,KAAK,UAAU;gBAAE,SAAS;YACpC,IAAI,CAAC,IAAA,kBAAU,EAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC;gBAAE,SAAS;YAC1C,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,UAAU;gBAAE,SAAS;YAC1C,IAAI,CAAC,IAAA,kBAAU,EAAC,CAAC,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC;gBAAE,SAAS;YAChD,IAAI,CAAC,IAAA,qBAAa,EAAC,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC;gBAAE,SAAS;YAElD,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;QACzD,CAAC;IACH,CAAC;IAED,4DAA4D;IAC5D,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;QACtC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QAC5B,MAAM,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC;QAC1B,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC;QACzB,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;YACtB,IAAI,CAAC,CAAC,IAAI,KAAK,UAAU;gBAAE,SAAS;YACpC,IAAI,CAAC,IAAA,kBAAU,EAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC;gBAAE,SAAS;YAC1C,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;YAClB,MAAM,MAAM,GAAG,CAAC,CAAC,IAAI,KAAK,UAAU,IAAI,CAAC,CAAC,IAAI,KAAK,cAAc,CAAC;YAClE,IAAI,CAAC,MAAM;gBAAE,SAAS;YACtB,IAAI,CAAC,IAAA,kBAAU,EAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC;gBAAE,SAAS;YAC1C,MAAM,KAAK,GAAG,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YAC3D,IAAI,CAAC,IAAA,qBAAa,EAAC,KAAK,EAAE,IAAI,CAAC;gBAAE,SAAS;YAE1C,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;QACzD,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,SAAgB,oBAAoB,CAClC,KAAgC,EAChC,OAAmB;IAEnB,gCAAgC;IAChC,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM;QAAE,OAAO,IAAI,CAAC;IACzC,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,KAAK,WAAW;QAAE,OAAO,IAAI,CAAC;IACnD,MAAM,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC;IAC5B,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;IAC3B,0EAA0E;IAC1E,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,IAAI,CAAC,CAAC,IAAI,KAAK,UAAU;YAAE,SAAS;QACpC,IAAI,CAAC,IAAA,kBAAU,EAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC;YAAE,SAAS;QAC1C,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,WAAW;YAAE,SAAS;QAC3C,IAAI,CAAC,IAAA,kBAAU,EAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;YAAE,SAAS;QAC1C,IAAI,CAAC,IAAA,kBAAU,EAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAA,kBAAU,EAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;YAAE,SAAS;QACrE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;IACpE,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;GAGG;AACH,SAAgB,iBAAiB,CAC/B,KAAgC,EAChC,OAAmB;IAEnB,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM;QAAE,OAAO,IAAI,CAAC;IACzC,MAAM,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC;IAC5B,MAAM,KAAK,GACT,OAAO,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS;QAC7B,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO;QACtB,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,KAAK,UAAU;YAChC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK;YACpB,CAAC,CAAC,IAAI,CAAC;IACb,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IACxB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,IAAI,GAAe,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QACpE,IAAI,CAAC,IAAA,kBAAU,EAAC,KAAK,EAAE,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC;IAC5C,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,SAAgB,sBAAsB,CAAC,OAAmB;IACxD,IAAI,OAAO,CAAC,IAAI,KAAK,UAAU;QAAE,OAAO,IAAI,CAAC;IAC7C,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,aAAa;QAAE,OAAO,IAAI,CAAC;IACtD,+EAA+E;IAC/E,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;AACvF,CAAC;AAED,SAAgB,2BAA2B,CAAC,OAAmB;IAC7D,IAAI,OAAO,CAAC,IAAI,KAAK,UAAU;QAAE,OAAO,IAAI,CAAC;IAC7C,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,aAAa;QAAE,OAAO,IAAI,CAAC;IACtD,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;AACxF,CAAC;AAED;;GAEG;AACH,SAAgB,oBAAoB,CAAC,OAAmB;IACtD,IAAI,OAAO,CAAC,IAAI,KAAK,UAAU;QAAE,OAAO,IAAI,CAAC;IAC7C,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,MAAM;QAAE,OAAO,IAAI,CAAC;IAC/C,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,aAAa;QAAE,OAAO,IAAI,CAAC;IAC3D,OAAO;QACL,IAAI,EAAE,UAAU;QAChB,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE;KAC3F,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,SAAgB,yBAAyB,CACvC,KAAgC,EAChC,OAAmB;IAEnB,IAAI,OAAO,CAAC,IAAI,KAAK,UAAU;QAAE,OAAO,IAAI,CAAC;IAC7C,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,OAAO;QAAE,OAAO,IAAI,CAAC;IAChD,MAAM,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC;IAC5B,MAAM,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC;IAE9B,kDAAkD;IAClD,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM;YAAE,SAAS;QAChC,IAAI,CAAC,IAAA,kBAAU,EAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC;YAAE,SAAS;QAC1C,MAAM,KAAK,GACT,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;QAChG,IAAI,CAAC,KAAK;YAAE,SAAS;QACrB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAA,kBAAU,EAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAAE,SAAS;QAC1D,MAAM,SAAS,GAAe;YAC5B,IAAI,EAAE,UAAU;YAChB,SAAS,EAAE,CAAC;YACZ,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE;SACvC,CAAC;QACF,IAAI,CAAC,IAAA,kBAAU,EAAC,KAAK,EAAE,SAAS,CAAC;YAAE,OAAO,SAAS,CAAC;IACtD,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAEY,QAAA,cAAc,GAAG;IAC5B,uBAAuB,EAAE,yBAAyB;IAClD,uBAAuB,EAAE,yBAAyB;IAClD,uBAAuB,EAAE,yBAAyB;IAClD,oBAAoB,EAAE,sBAAsB;IAC5C,eAAe,EAAE,iBAAiB;IAClC,mBAAmB,EAAE,oBAAoB;CACjC,CAAC"}
@@ -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"}