@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,262 @@
1
+ "use strict";
2
+ // ============================================================
3
+ // BAN Logic — Constructores y equality de términos/fórmulas
4
+ // ============================================================
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.formulaAnd = exports.controls = exports.sharedSecret = exports.publicKey = exports.sharedKey = exports.fresh = exports.jurisdiction = exports.saidMessage = exports.said = exports.sees = exports.believes = exports.compound = exports.hashed = exports.encrypted = exports.message = exports.atom = exports.nonce = exports.key = exports.principal = void 0;
7
+ exports.termEquals = termEquals;
8
+ exports.formulaEquals = formulaEquals;
9
+ exports.hasFormula = hasFormula;
10
+ exports.termToString = termToString;
11
+ exports.formulaToString = formulaToString;
12
+ /* ── Constructores de términos ── */
13
+ const principal = (name) => ({ kind: 'principal', name });
14
+ exports.principal = principal;
15
+ const key = (name, shared) => shared ? { kind: 'key', name, shared } : { kind: 'key', name };
16
+ exports.key = key;
17
+ const nonce = (name) => ({ kind: 'nonce', name });
18
+ exports.nonce = nonce;
19
+ const atom = (name) => ({ kind: 'atom', name });
20
+ exports.atom = atom;
21
+ const message = (...content) => ({ kind: 'message', content });
22
+ exports.message = message;
23
+ const encrypted = (msg, k) => ({
24
+ kind: 'encrypted',
25
+ message: msg,
26
+ key: k,
27
+ });
28
+ exports.encrypted = encrypted;
29
+ const hashed = (msg) => ({ kind: 'hashed', message: msg });
30
+ exports.hashed = hashed;
31
+ const compound = (...parts) => ({ kind: 'compound', parts });
32
+ exports.compound = compound;
33
+ /* ── Constructores de fórmulas ── */
34
+ const believes = (p, f) => ({
35
+ kind: 'believes',
36
+ principal: p,
37
+ about: f,
38
+ });
39
+ exports.believes = believes;
40
+ const sees = (p, w) => ({
41
+ kind: 'sees',
42
+ principal: p,
43
+ what: w,
44
+ });
45
+ exports.sees = sees;
46
+ const said = (p, f) => ({
47
+ kind: 'said',
48
+ principal: p,
49
+ what: f,
50
+ });
51
+ exports.said = said;
52
+ const saidMessage = (p, w) => ({
53
+ kind: 'said-message',
54
+ principal: p,
55
+ what: w,
56
+ });
57
+ exports.saidMessage = saidMessage;
58
+ const jurisdiction = (p, f) => ({
59
+ kind: 'jurisdiction',
60
+ principal: p,
61
+ over: f,
62
+ });
63
+ exports.jurisdiction = jurisdiction;
64
+ const fresh = (w) => ({ kind: 'fresh', what: w });
65
+ exports.fresh = fresh;
66
+ const sharedKey = (a, b, k) => ({
67
+ kind: 'sharedKey',
68
+ a,
69
+ b,
70
+ key: k,
71
+ });
72
+ exports.sharedKey = sharedKey;
73
+ const publicKey = (p, k) => ({
74
+ kind: 'publicKey',
75
+ principal: p,
76
+ key: k,
77
+ });
78
+ exports.publicKey = publicKey;
79
+ const sharedSecret = (a, b, s) => ({
80
+ kind: 'sharedSecret',
81
+ a,
82
+ b,
83
+ secret: s,
84
+ });
85
+ exports.sharedSecret = sharedSecret;
86
+ const controls = (p, f) => ({
87
+ kind: 'controls',
88
+ principal: p,
89
+ statement: f,
90
+ });
91
+ exports.controls = controls;
92
+ const formulaAnd = (left, right) => ({
93
+ kind: 'formula-and',
94
+ left,
95
+ right,
96
+ });
97
+ exports.formulaAnd = formulaAnd;
98
+ /* ── Igualdad estructural ── */
99
+ function termEquals(a, b) {
100
+ if (a.kind !== b.kind)
101
+ return false;
102
+ switch (a.kind) {
103
+ case 'principal':
104
+ case 'nonce':
105
+ case 'atom':
106
+ // narrow b to a kind with .name
107
+ return b.name === a.name;
108
+ case 'key': {
109
+ const bk = b;
110
+ if (bk.name !== a.name)
111
+ return false;
112
+ const as = a.shared;
113
+ const bs = bk.shared;
114
+ if (!as && !bs)
115
+ return true;
116
+ if (!as || !bs)
117
+ return false;
118
+ // Shared pair es bi-direccional: {A,B} == {B,A}.
119
+ return (as[0] === bs[0] && as[1] === bs[1]) || (as[0] === bs[1] && as[1] === bs[0]);
120
+ }
121
+ case 'message': {
122
+ const bm = b;
123
+ if (a.content.length !== bm.content.length)
124
+ return false;
125
+ for (let i = 0; i < a.content.length; i++) {
126
+ const ai = a.content[i];
127
+ const bi = bm.content[i];
128
+ if (!ai || !bi)
129
+ return false;
130
+ if (!termEquals(ai, bi))
131
+ return false;
132
+ }
133
+ return true;
134
+ }
135
+ case 'compound': {
136
+ const bc = b;
137
+ if (a.parts.length !== bc.parts.length)
138
+ return false;
139
+ for (let i = 0; i < a.parts.length; i++) {
140
+ const ai = a.parts[i];
141
+ const bi = bc.parts[i];
142
+ if (!ai || !bi)
143
+ return false;
144
+ if (!termEquals(ai, bi))
145
+ return false;
146
+ }
147
+ return true;
148
+ }
149
+ case 'encrypted': {
150
+ const be = b;
151
+ return termEquals(a.message, be.message) && termEquals(a.key, be.key);
152
+ }
153
+ case 'hashed': {
154
+ const bh = b;
155
+ return termEquals(a.message, bh.message);
156
+ }
157
+ }
158
+ }
159
+ function formulaEquals(a, b) {
160
+ if (a.kind !== b.kind)
161
+ return false;
162
+ switch (a.kind) {
163
+ case 'believes': {
164
+ const bb = b;
165
+ return termEquals(a.principal, bb.principal) && formulaEquals(a.about, bb.about);
166
+ }
167
+ case 'sees': {
168
+ const bs = b;
169
+ return termEquals(a.principal, bs.principal) && termEquals(a.what, bs.what);
170
+ }
171
+ case 'said': {
172
+ const bs = b;
173
+ return termEquals(a.principal, bs.principal) && formulaEquals(a.what, bs.what);
174
+ }
175
+ case 'said-message': {
176
+ const bs = b;
177
+ return termEquals(a.principal, bs.principal) && termEquals(a.what, bs.what);
178
+ }
179
+ case 'jurisdiction': {
180
+ const bj = b;
181
+ return termEquals(a.principal, bj.principal) && formulaEquals(a.over, bj.over);
182
+ }
183
+ case 'fresh': {
184
+ const bf = b;
185
+ return termEquals(a.what, bf.what);
186
+ }
187
+ case 'sharedKey': {
188
+ const bs = b;
189
+ // El predicado "A ↔K B" es simétrico en (A,B).
190
+ const ab = termEquals(a.a, bs.a) && termEquals(a.b, bs.b);
191
+ const ba = termEquals(a.a, bs.b) && termEquals(a.b, bs.a);
192
+ return (ab || ba) && termEquals(a.key, bs.key);
193
+ }
194
+ case 'publicKey': {
195
+ const bp = b;
196
+ return termEquals(a.principal, bp.principal) && termEquals(a.key, bp.key);
197
+ }
198
+ case 'sharedSecret': {
199
+ const bs = b;
200
+ const ab = termEquals(a.a, bs.a) && termEquals(a.b, bs.b);
201
+ const ba = termEquals(a.a, bs.b) && termEquals(a.b, bs.a);
202
+ return (ab || ba) && termEquals(a.secret, bs.secret);
203
+ }
204
+ case 'controls': {
205
+ const bc = b;
206
+ return termEquals(a.principal, bc.principal) && formulaEquals(a.statement, bc.statement);
207
+ }
208
+ case 'formula-and': {
209
+ const ba = b;
210
+ return formulaEquals(a.left, ba.left) && formulaEquals(a.right, ba.right);
211
+ }
212
+ }
213
+ }
214
+ function hasFormula(state, target) {
215
+ return state.some((f) => formulaEquals(f, target));
216
+ }
217
+ /* ── Pretty printing ── */
218
+ function termToString(t) {
219
+ switch (t.kind) {
220
+ case 'principal':
221
+ case 'nonce':
222
+ case 'atom':
223
+ return t.name;
224
+ case 'key':
225
+ return t.shared ? `K_${t.shared[0]}${t.shared[1]}` : t.name;
226
+ case 'message':
227
+ return `<${t.content.map(termToString).join(', ')}>`;
228
+ case 'compound':
229
+ return `(${t.parts.map(termToString).join(' · ')})`;
230
+ case 'encrypted':
231
+ return `{${termToString(t.message)}}_${termToString(t.key)}`;
232
+ case 'hashed':
233
+ return `H(${termToString(t.message)})`;
234
+ }
235
+ }
236
+ function formulaToString(f) {
237
+ switch (f.kind) {
238
+ case 'believes':
239
+ return `${termToString(f.principal)} |≡ ${formulaToString(f.about)}`;
240
+ case 'sees':
241
+ return `${termToString(f.principal)} ◁ ${termToString(f.what)}`;
242
+ case 'said':
243
+ return `${termToString(f.principal)} |~ ${formulaToString(f.what)}`;
244
+ case 'said-message':
245
+ return `${termToString(f.principal)} |~ ${termToString(f.what)}`;
246
+ case 'jurisdiction':
247
+ return `${termToString(f.principal)} |⇒ ${formulaToString(f.over)}`;
248
+ case 'fresh':
249
+ return `#(${termToString(f.what)})`;
250
+ case 'sharedKey':
251
+ return `${termToString(f.a)} ↔${termToString(f.key)} ${termToString(f.b)}`;
252
+ case 'publicKey':
253
+ return `|→${termToString(f.key)} ${termToString(f.principal)}`;
254
+ case 'sharedSecret':
255
+ return `${termToString(f.a)} ⇌${termToString(f.secret)} ${termToString(f.b)}`;
256
+ case 'controls':
257
+ return `${termToString(f.principal)} |⇒ ${formulaToString(f.statement)}`;
258
+ case 'formula-and':
259
+ return `(${formulaToString(f.left)}) ∧ (${formulaToString(f.right)})`;
260
+ }
261
+ }
262
+ //# sourceMappingURL=terms.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"terms.js","sourceRoot":"","sources":["../../../src/reasoning/ban-logic/terms.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,107 @@
1
+ /**
2
+ * Un término BAN es un objeto del dominio: principal (agente), clave,
3
+ * nonce, mensaje compuesto, mensaje cifrado, hash o término genérico.
4
+ */
5
+ export type BANTerm = {
6
+ kind: 'principal';
7
+ name: string;
8
+ } | {
9
+ kind: 'key';
10
+ name: string;
11
+ shared?: [string, string];
12
+ } | {
13
+ kind: 'nonce';
14
+ name: string;
15
+ } | {
16
+ kind: 'message';
17
+ content: BANTerm[];
18
+ } | {
19
+ kind: 'encrypted';
20
+ message: BANTerm;
21
+ key: BANTerm;
22
+ } | {
23
+ kind: 'hashed';
24
+ message: BANTerm;
25
+ } | {
26
+ kind: 'compound';
27
+ parts: BANTerm[];
28
+ } | {
29
+ kind: 'atom';
30
+ name: string;
31
+ };
32
+ /**
33
+ * Una fórmula BAN es una proposición sobre creencias, posesión o
34
+ * propiedades de términos. Es lo que las reglas manipulan.
35
+ *
36
+ * Nota: tratamos `said` y `said-message` por separado porque BAN distingue
37
+ * entre "P dijo una fórmula completa" (raro) y "P dijo un término"
38
+ * (caso usual; lo que aparece en mensajes ciphered).
39
+ */
40
+ export type BANFormula = {
41
+ kind: 'believes';
42
+ principal: BANTerm;
43
+ about: BANFormula;
44
+ } | {
45
+ kind: 'sees';
46
+ principal: BANTerm;
47
+ what: BANTerm;
48
+ } | {
49
+ kind: 'said';
50
+ principal: BANTerm;
51
+ what: BANFormula;
52
+ } | {
53
+ kind: 'said-message';
54
+ principal: BANTerm;
55
+ what: BANTerm;
56
+ } | {
57
+ kind: 'jurisdiction';
58
+ principal: BANTerm;
59
+ over: BANFormula;
60
+ } | {
61
+ kind: 'fresh';
62
+ what: BANTerm;
63
+ } | {
64
+ kind: 'sharedKey';
65
+ a: BANTerm;
66
+ b: BANTerm;
67
+ key: BANTerm;
68
+ } | {
69
+ kind: 'publicKey';
70
+ principal: BANTerm;
71
+ key: BANTerm;
72
+ } | {
73
+ kind: 'sharedSecret';
74
+ a: BANTerm;
75
+ b: BANTerm;
76
+ secret: BANTerm;
77
+ } | {
78
+ kind: 'controls';
79
+ principal: BANTerm;
80
+ statement: BANFormula;
81
+ } | {
82
+ kind: 'formula-and';
83
+ left: BANFormula;
84
+ right: BANFormula;
85
+ };
86
+ export interface BANRule {
87
+ name: string;
88
+ description: string;
89
+ }
90
+ export interface ProtocolStep {
91
+ from: string;
92
+ to: string;
93
+ message: BANTerm;
94
+ }
95
+ export interface Protocol {
96
+ name: string;
97
+ participants: string[];
98
+ initialAssumptions: BANFormula[];
99
+ steps: ProtocolStep[];
100
+ goals: BANFormula[];
101
+ }
102
+ export interface ProtocolAnalysis {
103
+ satisfied: BANFormula[];
104
+ unsatisfied: BANFormula[];
105
+ trace: BANFormula[];
106
+ }
107
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/reasoning/ban-logic/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ // ============================================================
3
+ // BAN Logic — Tipos públicos
4
+ // ============================================================
5
+ //
6
+ // Burrows-Abadi-Needham logic (1989): cálculo modal de creencias para
7
+ // análisis de protocolos criptográficos de autenticación.
8
+ //
9
+ // Símbolos (notación estándar BAN):
10
+ //
11
+ // P |≡ X "P believes X" P cree X
12
+ // P ◁ X "P sees X" P ve X (recibió un mensaje con X)
13
+ // P |~ X "P once said X" P dijo X alguna vez
14
+ // P |⇒ X "P has jurisdiction over X" P es autoridad sobre X
15
+ // #(X) "fresh X" X es fresco (nonce reciente)
16
+ // P ↔K Q "K is shared between P, Q" K es clave compartida
17
+ // |→K P "K is public key for P" K es la clave pública de P
18
+ // P ⇌X Q "X is shared secret" X es un secreto compartido
19
+ // {X}_K "X encrypted with K" X cifrado con K
20
+ // <X>_Y "X combined with secret Y" X concatenado con secreto Y
21
+ // H(X) "hash of X" hash de X
22
+ //
23
+ // Reglas de inferencia clásicas (10): message-meaning (3 variantes:
24
+ // shared-key, public-key, shared-secret), nonce-verification,
25
+ // jurisdiction, freshness propagation, belief conjunction, seeing rules.
26
+ Object.defineProperty(exports, "__esModule", { value: true });
27
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/reasoning/ban-logic/types.ts"],"names":[],"mappings":";AAAA,+DAA+D;AAC/D,6BAA6B;AAC7B,+DAA+D;AAC/D,EAAE;AACF,sEAAsE;AACtE,0DAA0D;AAC1D,EAAE;AACF,oCAAoC;AACpC,EAAE;AACF,sDAAsD;AACtD,+EAA+E;AAC/E,iEAAiE;AACjE,oEAAoE;AACpE,0EAA0E;AAC1E,mEAAmE;AACnE,wEAAwE;AACxE,wEAAwE;AACxE,6DAA6D;AAC7D,yEAAyE;AACzE,uDAAuD;AACvD,EAAE;AACF,oEAAoE;AACpE,8DAA8D;AAC9D,yEAAyE"}
@@ -0,0 +1,121 @@
1
+ export interface DPMechanism<T> {
2
+ epsilon: number;
3
+ delta: number;
4
+ sensitivity: number;
5
+ apply(input: T): T | number;
6
+ }
7
+ export interface DPRng {
8
+ uniform(): number;
9
+ laplace(b: number): number;
10
+ gaussian(mu: number, sigma: number): number;
11
+ }
12
+ export declare function makeDPRng(seed?: number): DPRng;
13
+ /**
14
+ * Mecanismo de Laplace: agrega ruido Laplace(0, Δ/ε) a `value`.
15
+ * Da ε-DP puro (δ = 0) cuando Δ es la sensibilidad L1 de la query.
16
+ */
17
+ export declare function laplaceNoise(value: number, sensitivity: number, epsilon: number, rng?: DPRng): number;
18
+ /**
19
+ * Mecanismo Gaussian: agrega N(0, σ²) con σ = Δ·√(2 ln(1.25/δ))/ε,
20
+ * la calibración estándar de Dwork-Roth (Algorithmic Foundations,
21
+ * Theorem A.1). Garantiza (ε,δ)-DP para ε ∈ (0, 1] cuando Δ es la
22
+ * sensibilidad L2. Para ε > 1 la cota sigue siendo válida pero deja
23
+ * de ser tight; los frameworks modernos prefieren la "analytic
24
+ * Gaussian" (Balle-Wang 2018) — la dejamos para una iteración futura.
25
+ */
26
+ export declare function gaussianNoise(value: number, sensitivity: number, epsilon: number, delta: number, rng?: DPRng): number;
27
+ /**
28
+ * Mecanismo exponencial: elige un item con probabilidad proporcional
29
+ * a exp(ε · score(item) / (2 · sensitivity)). Implementa la
30
+ * formulación canónica (McSherry-Talwar 2007). Da ε-DP cuando
31
+ * `sensitivity` es la sensibilidad de la función de score.
32
+ */
33
+ export declare function exponentialMechanism<T>(items: T[], score: (item: T) => number, sensitivity: number, epsilon: number, rng?: DPRng): T;
34
+ /**
35
+ * Randomized response binario: reporta `bit` con probabilidad `p`,
36
+ * y `¬bit` con probabilidad 1 − p. Garantiza ε-DP local con
37
+ * ε = |ln(p / (1 − p))|. La elección clásica p = 3/4 da ε = ln 3.
38
+ */
39
+ export declare function randomizedResponse(bit: boolean, p: number, rng?: DPRng): boolean;
40
+ /**
41
+ * ε equivalente a un mecanismo de randomized response con
42
+ * probabilidad de verdad `p`. Útil para test del trade-off.
43
+ */
44
+ export declare function randomizedResponseEpsilon(p: number): number;
45
+ /**
46
+ * Conteo DP: cuenta cuántos valores cumplen `predicate` y aplica
47
+ * ruido Laplace con sensibilidad 1 (cambiar un registro mueve el
48
+ * conteo en a lo más 1). El resultado se redondea al entero más
49
+ * cercano y se clamp-a a ≥ 0 (un conteo nunca es negativo).
50
+ */
51
+ export declare function dpCount<T>(values: T[], predicate: (v: T) => boolean, epsilon: number, rng?: DPRng): number;
52
+ /**
53
+ * Media DP de valores acotados al rango [low, high]: clipea cada
54
+ * valor al rango, calcula la media empírica y aplica Laplace con
55
+ * sensibilidad (high − low) / n. Asumimos n público.
56
+ */
57
+ export declare function dpMean(values: number[], range: [number, number], epsilon: number, rng?: DPRng): number;
58
+ /**
59
+ * Histograma DP sobre `categories`: cuenta ocurrencias por categoría
60
+ * y agrega ruido Laplace independiente a cada bin con sensibilidad 1.
61
+ * Asumimos que cada registro pertenece a a lo más una categoría
62
+ * (cambiar un registro mueve a lo más un bin en ±1). Si las
63
+ * categorías son disjuntas y cubrentes, este es un caso clásico de
64
+ * composición paralela: el ε total = ε.
65
+ */
66
+ export declare function dpHistogram<T>(values: T[], categories: T[], epsilon: number, rng?: DPRng): Map<T, number>;
67
+ export interface PrivacyBudget {
68
+ epsilon: number;
69
+ delta: number;
70
+ }
71
+ /**
72
+ * Composición básica (Dwork-McSherry-Nissim-Smith 2006, Theorem 3.16
73
+ * en Algorithmic Foundations): la composición secuencial de k
74
+ * mecanismos (ε_i, δ_i)-DP da (Σ ε_i, Σ δ_i)-DP. Cota uniforme y
75
+ * conservadora.
76
+ */
77
+ export declare function basicComposition(mechanisms: PrivacyBudget[]): PrivacyBudget;
78
+ /**
79
+ * Composición avanzada (Dwork-Rothblum-Vadhan 2010, Theorem III.3):
80
+ * para k mecanismos cada uno (ε, δ)-DP, el compuesto es
81
+ *
82
+ * (√(2 k ln(1/δ')) · ε + k · ε · (e^ε − 1), k δ + δ')-DP
83
+ *
84
+ * para cualquier δ' > 0. Cuando los ε_i son heterogéneos usamos el
85
+ * máximo como cota uniforme (válida pero no óptima; el tight bound
86
+ * heterogéneo requiere RDP/zCDP, fuera del alcance de este módulo).
87
+ *
88
+ * `deltaTotal` es el δ' adicional que el caller acepta pagar.
89
+ * Devuelve el (ε,δ) total cubriendo el slack δ'.
90
+ */
91
+ export declare function advancedComposition(mechanisms: PrivacyBudget[], deltaTotal: number): PrivacyBudget;
92
+ /**
93
+ * Composición paralela: cuando k mecanismos actúan sobre particiones
94
+ * disjuntas del dataset, el ε total es el máximo (no la suma), y el
95
+ * δ total es el máximo (no la suma). Caso clásico: histograma con
96
+ * categorías mutuamente excluyentes.
97
+ */
98
+ export declare function parallelComposition(mechanisms: PrivacyBudget[]): PrivacyBudget;
99
+ /**
100
+ * Sensibilidad global L1: el máximo de |f(D) − f(D')| sobre la
101
+ * lista de pares neighbours suministrada. Implementación empírica
102
+ * pensada para tests/diagnóstico — la sensibilidad real exige
103
+ * razonar sobre todas las parejas válidas, no sólo las muestreadas.
104
+ */
105
+ export declare function globalSensitivityL1(fn: (data: number[]) => number, neighbors: Array<[number[], number[]]>): number;
106
+ /**
107
+ * Sensibilidad suave (Nissim-Raskhodnikova-Smith 2007):
108
+ *
109
+ * S*_β(f, D) = max_k e^{−β·k} · LS^{(k)}(f, D)
110
+ *
111
+ * donde LS^{(k)} es la sensibilidad local a distancia k. Aproximamos
112
+ * variando vecinos hasta `data.length` (cota superior de k). Para
113
+ * datasets grandes, restringir el k máximo via la longitud del
114
+ * propio dataset.
115
+ *
116
+ * Esta es una versión basada en mutaciones simples (cambiar un valor
117
+ * por el mín o máx empírico) — suficiente para median/mean acotados
118
+ * en tests, no un cálculo general.
119
+ */
120
+ export declare function smoothSensitivity(fn: (data: number[]) => number, data: number[], beta: number): number;
121
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/reasoning/differential-privacy/index.ts"],"names":[],"mappings":"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"}