@stevenvo780/st-lang 4.4.0 → 4.5.1

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 (158) hide show
  1. package/README.md +78 -37
  2. package/dist/coinduction/index.d.ts +136 -0
  3. package/dist/coinduction/index.d.ts.map +1 -0
  4. package/dist/coinduction/index.js +318 -0
  5. package/dist/coinduction/index.js.map +1 -0
  6. package/dist/combinators-ski/abstract.d.ts +5 -0
  7. package/dist/combinators-ski/abstract.d.ts.map +1 -0
  8. package/dist/combinators-ski/abstract.js +88 -0
  9. package/dist/combinators-ski/abstract.js.map +1 -0
  10. package/dist/combinators-ski/index.d.ts +6 -0
  11. package/dist/combinators-ski/index.d.ts.map +1 -0
  12. package/dist/combinators-ski/index.js +30 -0
  13. package/dist/combinators-ski/index.js.map +1 -0
  14. package/dist/combinators-ski/reduce.d.ts +10 -0
  15. package/dist/combinators-ski/reduce.d.ts.map +1 -0
  16. package/dist/combinators-ski/reduce.js +118 -0
  17. package/dist/combinators-ski/reduce.js.map +1 -0
  18. package/dist/combinators-ski/types.d.ts +23 -0
  19. package/dist/combinators-ski/types.d.ts.map +1 -0
  20. package/dist/combinators-ski/types.js +102 -0
  21. package/dist/combinators-ski/types.js.map +1 -0
  22. package/dist/constructive-reals/index.d.ts +132 -0
  23. package/dist/constructive-reals/index.d.ts.map +1 -0
  24. package/dist/constructive-reals/index.js +723 -0
  25. package/dist/constructive-reals/index.js.map +1 -0
  26. package/dist/game-semantics/convert.d.ts +4 -0
  27. package/dist/game-semantics/convert.d.ts.map +1 -0
  28. package/dist/game-semantics/convert.js +28 -0
  29. package/dist/game-semantics/convert.js.map +1 -0
  30. package/dist/game-semantics/index.d.ts +6 -0
  31. package/dist/game-semantics/index.d.ts.map +1 -0
  32. package/dist/game-semantics/index.js +28 -0
  33. package/dist/game-semantics/index.js.map +1 -0
  34. package/dist/game-semantics/strategy.d.ts +34 -0
  35. package/dist/game-semantics/strategy.d.ts.map +1 -0
  36. package/dist/game-semantics/strategy.js +336 -0
  37. package/dist/game-semantics/strategy.js.map +1 -0
  38. package/dist/game-semantics/types.d.ts +64 -0
  39. package/dist/game-semantics/types.d.ts.map +1 -0
  40. package/dist/game-semantics/types.js +78 -0
  41. package/dist/game-semantics/types.js.map +1 -0
  42. package/dist/higher-order-unify/index.d.ts +5 -0
  43. package/dist/higher-order-unify/index.d.ts.map +1 -0
  44. package/dist/higher-order-unify/index.js +27 -0
  45. package/dist/higher-order-unify/index.js.map +1 -0
  46. package/dist/higher-order-unify/normalize.d.ts +14 -0
  47. package/dist/higher-order-unify/normalize.d.ts.map +1 -0
  48. package/dist/higher-order-unify/normalize.js +191 -0
  49. package/dist/higher-order-unify/normalize.js.map +1 -0
  50. package/dist/higher-order-unify/pattern.d.ts +4 -0
  51. package/dist/higher-order-unify/pattern.d.ts.map +1 -0
  52. package/dist/higher-order-unify/pattern.js +70 -0
  53. package/dist/higher-order-unify/pattern.js.map +1 -0
  54. package/dist/higher-order-unify/types.d.ts +19 -0
  55. package/dist/higher-order-unify/types.d.ts.map +1 -0
  56. package/dist/higher-order-unify/types.js +14 -0
  57. package/dist/higher-order-unify/types.js.map +1 -0
  58. package/dist/higher-order-unify/unify.d.ts +5 -0
  59. package/dist/higher-order-unify/unify.d.ts.map +1 -0
  60. package/dist/higher-order-unify/unify.js +306 -0
  61. package/dist/higher-order-unify/unify.js.map +1 -0
  62. package/dist/index.d.ts +10 -0
  63. package/dist/index.d.ts.map +1 -1
  64. package/dist/index.js +40 -1
  65. package/dist/index.js.map +1 -1
  66. package/dist/nbe/index.d.ts +3 -0
  67. package/dist/nbe/index.d.ts.map +1 -0
  68. package/dist/nbe/index.js +25 -0
  69. package/dist/nbe/index.js.map +1 -0
  70. package/dist/nbe/nbe.d.ts +7 -0
  71. package/dist/nbe/nbe.d.ts.map +1 -0
  72. package/dist/nbe/nbe.js +118 -0
  73. package/dist/nbe/nbe.js.map +1 -0
  74. package/dist/nbe/types.d.ts +54 -0
  75. package/dist/nbe/types.d.ts.map +1 -0
  76. package/dist/nbe/types.js +117 -0
  77. package/dist/nbe/types.js.map +1 -0
  78. package/dist/profile-bridge/index.d.ts +64 -0
  79. package/dist/profile-bridge/index.d.ts.map +1 -0
  80. package/dist/profile-bridge/index.js +328 -0
  81. package/dist/profile-bridge/index.js.map +1 -0
  82. package/dist/proof-nets/construct.d.ts +3 -0
  83. package/dist/proof-nets/construct.d.ts.map +1 -0
  84. package/dist/proof-nets/construct.js +85 -0
  85. package/dist/proof-nets/construct.js.map +1 -0
  86. package/dist/proof-nets/correctness.d.ts +3 -0
  87. package/dist/proof-nets/correctness.d.ts.map +1 -0
  88. package/dist/proof-nets/correctness.js +213 -0
  89. package/dist/proof-nets/correctness.js.map +1 -0
  90. package/dist/proof-nets/cut-elim.d.ts +9 -0
  91. package/dist/proof-nets/cut-elim.d.ts.map +1 -0
  92. package/dist/proof-nets/cut-elim.js +149 -0
  93. package/dist/proof-nets/cut-elim.js.map +1 -0
  94. package/dist/proof-nets/index.d.ts +6 -0
  95. package/dist/proof-nets/index.d.ts.map +1 -0
  96. package/dist/proof-nets/index.js +33 -0
  97. package/dist/proof-nets/index.js.map +1 -0
  98. package/dist/proof-nets/types.d.ts +36 -0
  99. package/dist/proof-nets/types.d.ts.map +1 -0
  100. package/dist/proof-nets/types.js +89 -0
  101. package/dist/proof-nets/types.js.map +1 -0
  102. package/dist/tableau-framework/TableauProver.d.ts +10 -0
  103. package/dist/tableau-framework/TableauProver.d.ts.map +1 -0
  104. package/dist/tableau-framework/TableauProver.js +118 -0
  105. package/dist/tableau-framework/TableauProver.js.map +1 -0
  106. package/dist/tableau-framework/index.d.ts +5 -0
  107. package/dist/tableau-framework/index.d.ts.map +1 -0
  108. package/dist/tableau-framework/index.js +11 -0
  109. package/dist/tableau-framework/index.js.map +1 -0
  110. package/dist/tableau-framework/propositional.d.ts +11 -0
  111. package/dist/tableau-framework/propositional.d.ts.map +1 -0
  112. package/dist/tableau-framework/propositional.js +143 -0
  113. package/dist/tableau-framework/propositional.js.map +1 -0
  114. package/dist/tableau-framework/types.d.ts +32 -0
  115. package/dist/tableau-framework/types.d.ts.map +1 -0
  116. package/dist/tableau-framework/types.js +6 -0
  117. package/dist/tableau-framework/types.js.map +1 -0
  118. package/dist/tests/coinduction/coinduction.test.d.ts +2 -0
  119. package/dist/tests/coinduction/coinduction.test.d.ts.map +1 -0
  120. package/dist/tests/coinduction/coinduction.test.js +217 -0
  121. package/dist/tests/coinduction/coinduction.test.js.map +1 -0
  122. package/dist/tests/combinators-ski/combinators-ski.test.d.ts +2 -0
  123. package/dist/tests/combinators-ski/combinators-ski.test.d.ts.map +1 -0
  124. package/dist/tests/combinators-ski/combinators-ski.test.js +211 -0
  125. package/dist/tests/combinators-ski/combinators-ski.test.js.map +1 -0
  126. package/dist/tests/constructive-reals/constructive-reals.test.d.ts +2 -0
  127. package/dist/tests/constructive-reals/constructive-reals.test.d.ts.map +1 -0
  128. package/dist/tests/constructive-reals/constructive-reals.test.js +357 -0
  129. package/dist/tests/constructive-reals/constructive-reals.test.js.map +1 -0
  130. package/dist/tests/game-semantics/game-semantics.test.d.ts +2 -0
  131. package/dist/tests/game-semantics/game-semantics.test.d.ts.map +1 -0
  132. package/dist/tests/game-semantics/game-semantics.test.js +143 -0
  133. package/dist/tests/game-semantics/game-semantics.test.js.map +1 -0
  134. package/dist/tests/higher-order-unify/ho-unify.test.d.ts +2 -0
  135. package/dist/tests/higher-order-unify/ho-unify.test.d.ts.map +1 -0
  136. package/dist/tests/higher-order-unify/ho-unify.test.js +264 -0
  137. package/dist/tests/higher-order-unify/ho-unify.test.js.map +1 -0
  138. package/dist/tests/integration/cross-modules.test.d.ts +8 -0
  139. package/dist/tests/integration/cross-modules.test.d.ts.map +1 -0
  140. package/dist/tests/integration/cross-modules.test.js +668 -0
  141. package/dist/tests/integration/cross-modules.test.js.map +1 -0
  142. package/dist/tests/nbe/nbe.test.d.ts +2 -0
  143. package/dist/tests/nbe/nbe.test.d.ts.map +1 -0
  144. package/dist/tests/nbe/nbe.test.js +121 -0
  145. package/dist/tests/nbe/nbe.test.js.map +1 -0
  146. package/dist/tests/profile-bridge/translations.test.d.ts +2 -0
  147. package/dist/tests/profile-bridge/translations.test.d.ts.map +1 -0
  148. package/dist/tests/profile-bridge/translations.test.js +266 -0
  149. package/dist/tests/profile-bridge/translations.test.js.map +1 -0
  150. package/dist/tests/proof-nets/proof-nets.test.d.ts +2 -0
  151. package/dist/tests/proof-nets/proof-nets.test.d.ts.map +1 -0
  152. package/dist/tests/proof-nets/proof-nets.test.js +263 -0
  153. package/dist/tests/proof-nets/proof-nets.test.js.map +1 -0
  154. package/dist/tests/tableau-framework/tableau.test.d.ts +2 -0
  155. package/dist/tests/tableau-framework/tableau.test.d.ts.map +1 -0
  156. package/dist/tests/tableau-framework/tableau.test.js +196 -0
  157. package/dist/tests/tableau-framework/tableau.test.js.map +1 -0
  158. package/package.json +2 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nbe.js","sourceRoot":"","sources":["../../src/nbe/nbe.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,54 @@
1
+ export type Type = {
2
+ kind: 'base';
3
+ name: string;
4
+ } | {
5
+ kind: 'arrow';
6
+ from: Type;
7
+ to: Type;
8
+ };
9
+ export type Term = {
10
+ kind: 'var';
11
+ name: string;
12
+ } | {
13
+ kind: 'abs';
14
+ param: string;
15
+ paramType: Type;
16
+ body: Term;
17
+ } | {
18
+ kind: 'app';
19
+ fn: Term;
20
+ arg: Term;
21
+ };
22
+ export type Value = {
23
+ kind: 'neutral';
24
+ head: Neutral;
25
+ } | {
26
+ kind: 'closure';
27
+ env: Env;
28
+ param: string;
29
+ paramType: Type;
30
+ body: Term;
31
+ };
32
+ export type Neutral = {
33
+ kind: 'var';
34
+ name: string;
35
+ } | {
36
+ kind: 'app';
37
+ head: Neutral;
38
+ arg: Value;
39
+ };
40
+ export type Env = Map<string, Value>;
41
+ export declare const tBase: (name: string) => Type;
42
+ export declare const tArr: (from: Type, to: Type) => Type;
43
+ export declare const v: (name: string) => Term;
44
+ export declare const lam: (param: string, paramType: Type, body: Term) => Term;
45
+ export declare const ap: (fn: Term, arg: Term) => Term;
46
+ export declare const apN: (head: Term, ...args: Term[]) => Term;
47
+ export declare const vNeutralVar: (name: string) => Value;
48
+ export declare const vNeutral: (head: Neutral) => Value;
49
+ export declare const vClosure: (env: Env, param: string, paramType: Type, body: Term) => Value;
50
+ export declare function alphaEq(a: Term, b: Term): boolean;
51
+ export declare function typeEq(a: Type, b: Type): boolean;
52
+ export declare function typeToString(t: Type): string;
53
+ export declare function termToString(t: Term): string;
54
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/nbe/types.ts"],"names":[],"mappings":"AAUA,MAAM,MAAM,IAAI,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,IAAI,CAAC;IAAC,EAAE,EAAE,IAAI,CAAA;CAAE,CAAC;AAE5F,MAAM,MAAM,IAAI,GACZ;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC7B;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,IAAI,CAAA;CAAE,GAC3D;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,EAAE,EAAE,IAAI,CAAC;IAAC,GAAG,EAAE,IAAI,CAAA;CAAE,CAAC;AAMzC,MAAM,MAAM,KAAK,GACb;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,IAAI,EAAE,OAAO,CAAA;CAAE,GAClC;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,GAAG,EAAE,GAAG,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,IAAI,CAAA;CAAE,CAAC;AAE9E,MAAM,MAAM,OAAO,GAAG;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,OAAO,CAAC;IAAC,GAAG,EAAE,KAAK,CAAA;CAAE,CAAC;AAEjG,MAAM,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AAGrC,eAAO,MAAM,KAAK,GAAI,MAAM,MAAM,KAAG,IAAgC,CAAC;AACtE,eAAO,MAAM,IAAI,GAAI,MAAM,IAAI,EAAE,IAAI,IAAI,KAAG,IAAqC,CAAC;AAElF,eAAO,MAAM,CAAC,GAAI,MAAM,MAAM,KAAG,IAA+B,CAAC;AACjE,eAAO,MAAM,GAAG,GAAI,OAAO,MAAM,EAAE,WAAW,IAAI,EAAE,MAAM,IAAI,KAAG,IAK/D,CAAC;AACH,eAAO,MAAM,EAAE,GAAI,IAAI,IAAI,EAAE,KAAK,IAAI,KAAG,IAAkC,CAAC;AAC5E,eAAO,MAAM,GAAG,GAAI,MAAM,IAAI,EAAE,GAAG,MAAM,IAAI,EAAE,KAAG,IAA6B,CAAC;AAGhF,eAAO,MAAM,WAAW,GAAI,MAAM,MAAM,KAAG,KAGzC,CAAC;AACH,eAAO,MAAM,QAAQ,GAAI,MAAM,OAAO,KAAG,KAAoC,CAAC;AAC9E,eAAO,MAAM,QAAQ,GAAI,KAAK,GAAG,EAAE,OAAO,MAAM,EAAE,WAAW,IAAI,EAAE,MAAM,IAAI,KAAG,KAM9E,CAAC;AAIH,wBAAgB,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,GAAG,OAAO,CAEjD;AAsCD,wBAAgB,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,GAAG,OAAO,CAOhD;AAGD,wBAAgB,YAAY,CAAC,CAAC,EAAE,IAAI,GAAG,MAAM,CAK5C;AAED,wBAAgB,YAAY,CAAC,CAAC,EAAE,IAAI,GAAG,MAAM,CAY5C"}
@@ -0,0 +1,117 @@
1
+ "use strict";
2
+ // ============================================================
3
+ // NbE para STLC — Tipos sintácticos y dominio semántico
4
+ // ============================================================
5
+ //
6
+ // Términos del λ-cálculo simplemente tipado (STLC) y los valores
7
+ // semánticos sobre los que evaluamos. La separación entre sintaxis
8
+ // (Term, Type) y semántica (Value, Neutral) es lo que hace al
9
+ // algoritmo NbE limpio: evaluar produce valores; reificar los baja
10
+ // otra vez a términos en forma normal η-larga.
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.vClosure = exports.vNeutral = exports.vNeutralVar = exports.apN = exports.ap = exports.lam = exports.v = exports.tArr = exports.tBase = void 0;
13
+ exports.alphaEq = alphaEq;
14
+ exports.typeEq = typeEq;
15
+ exports.typeToString = typeToString;
16
+ exports.termToString = termToString;
17
+ // ---------- Constructores sintácticos ----------
18
+ const tBase = (name) => ({ kind: 'base', name });
19
+ exports.tBase = tBase;
20
+ const tArr = (from, to) => ({ kind: 'arrow', from, to });
21
+ exports.tArr = tArr;
22
+ const v = (name) => ({ kind: 'var', name });
23
+ exports.v = v;
24
+ const lam = (param, paramType, body) => ({
25
+ kind: 'abs',
26
+ param,
27
+ paramType,
28
+ body,
29
+ });
30
+ exports.lam = lam;
31
+ const ap = (fn, arg) => ({ kind: 'app', fn, arg });
32
+ exports.ap = ap;
33
+ const apN = (head, ...args) => args.reduce(exports.ap, head);
34
+ exports.apN = apN;
35
+ // ---------- Constructores semánticos ----------
36
+ const vNeutralVar = (name) => ({
37
+ kind: 'neutral',
38
+ head: { kind: 'var', name },
39
+ });
40
+ exports.vNeutralVar = vNeutralVar;
41
+ const vNeutral = (head) => ({ kind: 'neutral', head });
42
+ exports.vNeutral = vNeutral;
43
+ const vClosure = (env, param, paramType, body) => ({
44
+ kind: 'closure',
45
+ env,
46
+ param,
47
+ paramType,
48
+ body,
49
+ });
50
+ exports.vClosure = vClosure;
51
+ // ---------- Igualdad estructural módulo α ----------
52
+ // Renombra binders a posiciones canónicas para comparar.
53
+ function alphaEq(a, b) {
54
+ return alphaEqEnv(a, b, new Map(), new Map(), { n: 0 });
55
+ }
56
+ function alphaEqEnv(a, b, envA, envB, counter) {
57
+ if (a.kind !== b.kind)
58
+ return false;
59
+ switch (a.kind) {
60
+ case 'var': {
61
+ const bb = b;
62
+ const ia = envA.get(a.name);
63
+ const ib = envB.get(bb.name);
64
+ if (ia === undefined && ib === undefined)
65
+ return a.name === bb.name; // free vars
66
+ return ia === ib;
67
+ }
68
+ case 'abs': {
69
+ const bb = b;
70
+ if (!typeEq(a.paramType, bb.paramType))
71
+ return false;
72
+ const idx = counter.n++;
73
+ const newA = new Map(envA);
74
+ newA.set(a.param, idx);
75
+ const newB = new Map(envB);
76
+ newB.set(bb.param, idx);
77
+ return alphaEqEnv(a.body, bb.body, newA, newB, counter);
78
+ }
79
+ case 'app': {
80
+ const bb = b;
81
+ return (alphaEqEnv(a.fn, bb.fn, envA, envB, counter) &&
82
+ alphaEqEnv(a.arg, bb.arg, envA, envB, counter));
83
+ }
84
+ }
85
+ }
86
+ function typeEq(a, b) {
87
+ if (a.kind !== b.kind)
88
+ return false;
89
+ if (a.kind === 'base' && b.kind === 'base')
90
+ return a.name === b.name;
91
+ if (a.kind === 'arrow' && b.kind === 'arrow') {
92
+ return typeEq(a.from, b.from) && typeEq(a.to, b.to);
93
+ }
94
+ return false;
95
+ }
96
+ // Pretty-printer mínimo para términos y tipos (útil en tests/debug).
97
+ function typeToString(t) {
98
+ if (t.kind === 'base')
99
+ return t.name;
100
+ // arrow es asociativo a la derecha: A → B → C ≡ A → (B → C)
101
+ const from = t.from.kind === 'arrow' ? `(${typeToString(t.from)})` : typeToString(t.from);
102
+ return `${from} → ${typeToString(t.to)}`;
103
+ }
104
+ function termToString(t) {
105
+ switch (t.kind) {
106
+ case 'var':
107
+ return t.name;
108
+ case 'abs':
109
+ return `(λ${t.param}:${typeToString(t.paramType)}.${termToString(t.body)})`;
110
+ case 'app': {
111
+ const fn = termToString(t.fn);
112
+ const arg = t.arg.kind === 'app' ? `(${termToString(t.arg)})` : termToString(t.arg);
113
+ return `(${fn} ${arg})`;
114
+ }
115
+ }
116
+ }
117
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/nbe/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,64 @@
1
+ import type { Formula } from '../types';
2
+ import type { LTLFormula } from '../profiles/ltl-sat/types';
3
+ import type { CTLFormula } from '../profiles/ctl/types';
4
+ export type Profile = 'classical' | 'intuitionistic' | 'S4' | 'LTL' | 'CTL' | 'fuzzy';
5
+ export interface GenericFormula {
6
+ profile: Profile;
7
+ ast: unknown;
8
+ }
9
+ export type Validity = 'preserved' | 'one-way' | 'partial';
10
+ export interface Translation {
11
+ source: Profile;
12
+ target: Profile;
13
+ translate(formula: unknown): unknown;
14
+ validity: Validity;
15
+ }
16
+ /** Aplica la traducción ¬¬ de Glivenko recursivamente.
17
+ *
18
+ * Reglas (Glivenko 1929):
19
+ * atom p → ¬¬p
20
+ * ¬φ → ¬¬(¬φ') = ¬φ' (¬¬¬ ≡ ¬)
21
+ * φ ∧ ψ → ¬¬(φ' ∧ ψ')
22
+ * φ ∨ ψ → ¬¬(φ' ∨ ψ')
23
+ * φ → ψ → ¬¬(φ' → ψ')
24
+ * φ ↔ ψ → ¬¬(φ' ↔ ψ')
25
+ * ⊤ → ⊤
26
+ * ⊥ → ⊥
27
+ *
28
+ * Resultado: clásicamente válido si y solo si el original lo es en IPC.
29
+ */
30
+ export declare function glivenkoTranslation(intuitFormula: unknown): Formula;
31
+ /** Aplica la traducción de Gödel-McKinsey-Tarski: clasical → S4.
32
+ *
33
+ * Reglas (Gödel 1933):
34
+ * atom p → □p
35
+ * ¬φ → □¬φ'
36
+ * φ ∧ ψ → φ' ∧ ψ'
37
+ * φ ∨ ψ → φ' ∨ ψ'
38
+ * φ → ψ → □(φ' → ψ')
39
+ * φ ↔ ψ → □(φ' ↔ ψ')
40
+ * ⊤ → ⊤
41
+ * ⊥ → ⊥
42
+ *
43
+ * Corrección: φ es tautología clásica sii godelTranslation(φ) es
44
+ * tautología S4 (Gödel 1933, McKinsey-Tarski 1948).
45
+ */
46
+ export declare function godelTranslation(classicalFormula: unknown): Formula;
47
+ export declare function ltlToCTL(ltlFormula: unknown): CTLFormula;
48
+ export declare function ctlToLTL(ctlFormula: unknown): LTLFormula;
49
+ export declare const TRANSLATIONS: Translation[];
50
+ /**
51
+ * Encuentra la ruta más corta desde `from` hasta `to` en el grafo
52
+ * de traducciones disponibles (BFS).
53
+ *
54
+ * Devuelve la secuencia de perfiles [from, ..., to] o null si no hay ruta.
55
+ */
56
+ export declare function findTranslationPath(from: Profile, to: Profile): Profile[] | null;
57
+ /**
58
+ * Traduce una fórmula genérica al perfil `target` siguiendo el camino
59
+ * de traducciones más corto disponible.
60
+ *
61
+ * Devuelve null si no existe ruta desde `formula.profile` hasta `target`.
62
+ */
63
+ export declare function translateFormula(formula: GenericFormula, target: Profile): GenericFormula | null;
64
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/profile-bridge/index.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAIxD,MAAM,MAAM,OAAO,GAAG,WAAW,GAAG,gBAAgB,GAAG,IAAI,GAAG,KAAK,GAAG,KAAK,GAAG,OAAO,CAAC;AAEtF,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,GAAG,EAAE,OAAO,CAAC;CACd;AAED,MAAM,MAAM,QAAQ,GAAG,WAAW,GAAG,SAAS,GAAG,SAAS,CAAC;AAE3D,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC;IACrC,QAAQ,EAAE,QAAQ,CAAC;CACpB;AASD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,mBAAmB,CAAC,aAAa,EAAE,OAAO,GAAG,OAAO,CAGnE;AA+BD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,gBAAgB,CAAC,gBAAgB,EAAE,OAAO,GAAG,OAAO,CAGnE;AAmDD,wBAAgB,QAAQ,CAAC,UAAU,EAAE,OAAO,GAAG,UAAU,CAGxD;AA4DD,wBAAgB,QAAQ,CAAC,UAAU,EAAE,OAAO,GAAG,UAAU,CAGxD;AA2DD,eAAO,MAAM,YAAY,EAAE,WAAW,EAqCrC,CAAC;AASF;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,GAAG,OAAO,EAAE,GAAG,IAAI,CAoBhF;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,OAAO,GAAG,cAAc,GAAG,IAAI,CAkBhG"}
@@ -0,0 +1,328 @@
1
+ "use strict";
2
+ // ============================================================
3
+ // ST Profile Bridge — traducciones cross-profile
4
+ // ============================================================
5
+ // Implementa las traducciones clásicas entre perfiles lógicos:
6
+ //
7
+ // intuitionistic → classical (Glivenko ¬¬-translation)
8
+ // classical → S4 (Gödel-McKinsey-Tarski □-embedding)
9
+ // LTL → CTL (embedding conservativo uno-a-uno)
10
+ // CTL → LTL (aproximación parcial, paths existenciales)
11
+ // fuzzy → classical (aproximación por umbral 0.5)
12
+ //
13
+ // Grafo de traducciones:
14
+ //
15
+ // intuitionistic ──(Glivenko)──→ classical ──(Gödel)──→ S4
16
+ // ↑
17
+ // LTL ──(ltlToCTL)──→ CTL ─────────────────────────────────┘
18
+ // CTL ──(ctlToLTL)──→ LTL (partial, one-way)
19
+ // ============================================================
20
+ Object.defineProperty(exports, "__esModule", { value: true });
21
+ exports.TRANSLATIONS = void 0;
22
+ exports.glivenkoTranslation = glivenkoTranslation;
23
+ exports.godelTranslation = godelTranslation;
24
+ exports.ltlToCTL = ltlToCTL;
25
+ exports.ctlToLTL = ctlToLTL;
26
+ exports.findTranslationPath = findTranslationPath;
27
+ exports.translateFormula = translateFormula;
28
+ // ── Utilidades internas ──────────────────────────────────────
29
+ /** Envuelve una Formula en doble negación: φ → ¬¬φ */
30
+ function doubleNeg(f) {
31
+ return { kind: 'not', args: [{ kind: 'not', args: [f] }] };
32
+ }
33
+ /** Aplica la traducción ¬¬ de Glivenko recursivamente.
34
+ *
35
+ * Reglas (Glivenko 1929):
36
+ * atom p → ¬¬p
37
+ * ¬φ → ¬¬(¬φ') = ¬φ' (¬¬¬ ≡ ¬)
38
+ * φ ∧ ψ → ¬¬(φ' ∧ ψ')
39
+ * φ ∨ ψ → ¬¬(φ' ∨ ψ')
40
+ * φ → ψ → ¬¬(φ' → ψ')
41
+ * φ ↔ ψ → ¬¬(φ' ↔ ψ')
42
+ * ⊤ → ⊤
43
+ * ⊥ → ⊥
44
+ *
45
+ * Resultado: clásicamente válido si y solo si el original lo es en IPC.
46
+ */
47
+ function glivenkoTranslation(intuitFormula) {
48
+ const f = intuitFormula;
49
+ return applyGlivenko(f);
50
+ }
51
+ function applyGlivenko(f) {
52
+ switch (f.kind) {
53
+ case 'true':
54
+ case 'false':
55
+ return f;
56
+ case 'atom':
57
+ return doubleNeg(f);
58
+ case 'not': {
59
+ const inner = (f.args ?? [])[0];
60
+ if (!inner)
61
+ return doubleNeg(f);
62
+ // ¬φ' — la doble negación de una negación colapsa: ¬¬¬φ ≡ ¬φ
63
+ return { kind: 'not', args: [applyGlivenko(inner)] };
64
+ }
65
+ case 'and':
66
+ case 'or':
67
+ case 'implies':
68
+ case 'biconditional': {
69
+ const translatedArgs = (f.args ?? []).map(applyGlivenko);
70
+ return doubleNeg({ ...f, args: translatedArgs });
71
+ }
72
+ default:
73
+ return doubleNeg(f);
74
+ }
75
+ }
76
+ /** Aplica la traducción de Gödel-McKinsey-Tarski: clasical → S4.
77
+ *
78
+ * Reglas (Gödel 1933):
79
+ * atom p → □p
80
+ * ¬φ → □¬φ'
81
+ * φ ∧ ψ → φ' ∧ ψ'
82
+ * φ ∨ ψ → φ' ∨ ψ'
83
+ * φ → ψ → □(φ' → ψ')
84
+ * φ ↔ ψ → □(φ' ↔ ψ')
85
+ * ⊤ → ⊤
86
+ * ⊥ → ⊥
87
+ *
88
+ * Corrección: φ es tautología clásica sii godelTranslation(φ) es
89
+ * tautología S4 (Gödel 1933, McKinsey-Tarski 1948).
90
+ */
91
+ function godelTranslation(classicalFormula) {
92
+ const f = classicalFormula;
93
+ return applyGodel(f);
94
+ }
95
+ function box(f) {
96
+ return { kind: 'modal_necessity', args: [f] };
97
+ }
98
+ function applyGodel(f) {
99
+ switch (f.kind) {
100
+ case 'true':
101
+ case 'false':
102
+ return f;
103
+ case 'atom':
104
+ return box(f);
105
+ case 'not': {
106
+ const inner = (f.args ?? [])[0];
107
+ if (!inner)
108
+ return box(f);
109
+ return box({ kind: 'not', args: [applyGodel(inner)] });
110
+ }
111
+ case 'and':
112
+ case 'or': {
113
+ const translatedArgs = (f.args ?? []).map(applyGodel);
114
+ return { ...f, args: translatedArgs };
115
+ }
116
+ case 'implies':
117
+ case 'biconditional': {
118
+ const translatedArgs = (f.args ?? []).map(applyGodel);
119
+ return box({ ...f, args: translatedArgs });
120
+ }
121
+ default:
122
+ return box(f);
123
+ }
124
+ }
125
+ // ── LTL → CTL ───────────────────────────────────────────────
126
+ // Embedding conservativo: operadores path-existencial de LTL
127
+ // se mapean a sus contrapartes existenciales de CTL.
128
+ //
129
+ // X φ → EX φ' (existe un sucesor)
130
+ // F φ → EF φ' (existe un camino que eventualmente alcanza)
131
+ // G φ → EG φ' (existe un camino siempre φ)
132
+ // φ U ψ → E[φ' U ψ'] (existe un camino con until)
133
+ // φ R ψ → E[ψ' R φ'] (release: E[ψ U (ψ∧φ)] aproximado)
134
+ //
135
+ // validity: 'one-way' — LTL-valid ⇒ imagen CTL-valid en E-paths,
136
+ // pero no viceversa (CTL tiene más poder expresivo sobre branching).
137
+ function ltlToCTL(ltlFormula) {
138
+ const f = ltlFormula;
139
+ return ltlToCTLRec(f);
140
+ }
141
+ function ltlToCTLRec(f) {
142
+ switch (f.kind) {
143
+ case 'atom':
144
+ return { kind: 'atom', name: f.name };
145
+ case 'not':
146
+ return { kind: 'not', arg: ltlToCTLRec(f.arg) };
147
+ case 'and':
148
+ return { kind: 'and', args: f.args.map(ltlToCTLRec) };
149
+ case 'or':
150
+ return { kind: 'or', args: f.args.map(ltlToCTLRec) };
151
+ case 'X':
152
+ return { kind: 'EX', arg: ltlToCTLRec(f.arg) };
153
+ case 'F':
154
+ return { kind: 'EF', arg: ltlToCTLRec(f.arg) };
155
+ case 'G':
156
+ return { kind: 'EG', arg: ltlToCTLRec(f.arg) };
157
+ case 'U':
158
+ return { kind: 'EU', left: ltlToCTLRec(f.left), right: ltlToCTLRec(f.right) };
159
+ case 'R': {
160
+ // Release φ R ψ ≡ ψ W (ψ∧φ): no hay operador R nativo en CTL.
161
+ // Traducimos como ¬(¬ψ U ¬φ) vía dualidad, representado con EU.
162
+ // Para la traducción conservativa one-way usamos:
163
+ // φ R ψ ≡ ¬(¬ψ U ¬φ) → CTL: ¬E[¬ψ' U ¬φ']
164
+ const notLeft = { kind: 'not', arg: ltlToCTLRec(f.left) };
165
+ const notRight = { kind: 'not', arg: ltlToCTLRec(f.right) };
166
+ return {
167
+ kind: 'not',
168
+ arg: { kind: 'EU', left: notRight, right: notLeft },
169
+ };
170
+ }
171
+ }
172
+ }
173
+ // ── CTL → LTL ───────────────────────────────────────────────
174
+ // Aproximación parcial. Los operadores A (universal-path) de CTL
175
+ // no tienen equivalente directo en LTL (Vardi 1988). Los E
176
+ // (existencial) se traducen fielmente en el fragmento linear.
177
+ //
178
+ // EX φ → X φ'
179
+ // AX φ → X φ' (aproximación: LTL no distingue branching)
180
+ // EF φ → F φ'
181
+ // AF φ → F φ'
182
+ // EG φ → G φ'
183
+ // AG φ → G φ'
184
+ // E[φUψ] → φ' U ψ'
185
+ // A[φUψ] → φ' U ψ'
186
+ //
187
+ // validity: 'partial' — la imagen LTL es más débil; sólo preserva
188
+ // semántica lineal, no branching. No apta para model checking exacto.
189
+ function ctlToLTL(ctlFormula) {
190
+ const f = ctlFormula;
191
+ return ctlToLTLRec(f);
192
+ }
193
+ function ctlToLTLRec(f) {
194
+ switch (f.kind) {
195
+ case 'atom':
196
+ return { kind: 'atom', name: f.name };
197
+ case 'true':
198
+ return { kind: 'or', args: [{ kind: 'atom', name: '__true__' }, { kind: 'not', arg: { kind: 'atom', name: '__true__' } }] };
199
+ case 'false':
200
+ return { kind: 'and', args: [{ kind: 'atom', name: '__false__' }, { kind: 'not', arg: { kind: 'atom', name: '__false__' } }] };
201
+ case 'not':
202
+ return { kind: 'not', arg: ctlToLTLRec(f.arg) };
203
+ case 'and':
204
+ return { kind: 'and', args: f.args.map(ctlToLTLRec) };
205
+ case 'or':
206
+ return { kind: 'or', args: f.args.map(ctlToLTLRec) };
207
+ case 'implies':
208
+ return { kind: 'or', args: [{ kind: 'not', arg: ctlToLTLRec(f.left) }, ctlToLTLRec(f.right)] };
209
+ case 'EX':
210
+ case 'AX':
211
+ return { kind: 'X', arg: ctlToLTLRec(f.arg) };
212
+ case 'EF':
213
+ case 'AF':
214
+ return { kind: 'F', arg: ctlToLTLRec(f.arg) };
215
+ case 'EG':
216
+ case 'AG':
217
+ return { kind: 'G', arg: ctlToLTLRec(f.arg) };
218
+ case 'EU':
219
+ case 'AU':
220
+ return { kind: 'U', left: ctlToLTLRec(f.left), right: ctlToLTLRec(f.right) };
221
+ }
222
+ }
223
+ // ── fuzzy → classical ────────────────────────────────────────
224
+ // Umbral crisp: valores ≥ 0.5 → true; < 0.5 → false.
225
+ // Formula de fuzzy se asume como una Formula con valores numéricos
226
+ // codificados como kind:'number'. Aproximación heurística.
227
+ function fuzzyCrisp(f) {
228
+ if (f.kind === 'number') {
229
+ const v = f.value ?? 0;
230
+ return { kind: v >= 0.5 ? 'true' : 'false' };
231
+ }
232
+ const newArgs = (f.args ?? []).map(fuzzyCrisp);
233
+ return { ...f, args: newArgs.length > 0 ? newArgs : undefined };
234
+ }
235
+ // ── Registro de traducciones ────────────────────────────────
236
+ exports.TRANSLATIONS = [
237
+ {
238
+ source: 'intuitionistic',
239
+ target: 'classical',
240
+ translate: glivenkoTranslation,
241
+ validity: 'preserved',
242
+ },
243
+ {
244
+ source: 'classical',
245
+ target: 'S4',
246
+ translate: godelTranslation,
247
+ validity: 'preserved',
248
+ },
249
+ {
250
+ source: 'LTL',
251
+ target: 'CTL',
252
+ translate: ltlToCTL,
253
+ validity: 'one-way',
254
+ },
255
+ {
256
+ source: 'CTL',
257
+ target: 'LTL',
258
+ translate: ctlToLTL,
259
+ validity: 'partial',
260
+ },
261
+ {
262
+ source: 'fuzzy',
263
+ target: 'classical',
264
+ translate: (f) => fuzzyCrisp(f),
265
+ validity: 'partial',
266
+ },
267
+ {
268
+ source: 'intuitionistic',
269
+ target: 'S4',
270
+ translate: (f) => godelTranslation(glivenkoTranslation(f)),
271
+ validity: 'preserved',
272
+ },
273
+ ];
274
+ // ── Grafo de rutas de traducción ────────────────────────────
275
+ /** Retorna los vecinos directos de un perfil en el grafo de traducciones. */
276
+ function neighbours(from) {
277
+ return exports.TRANSLATIONS.filter((t) => t.source === from).map((t) => t.target);
278
+ }
279
+ /**
280
+ * Encuentra la ruta más corta desde `from` hasta `to` en el grafo
281
+ * de traducciones disponibles (BFS).
282
+ *
283
+ * Devuelve la secuencia de perfiles [from, ..., to] o null si no hay ruta.
284
+ */
285
+ function findTranslationPath(from, to) {
286
+ if (from === to)
287
+ return [from];
288
+ const visited = new Set([from]);
289
+ const queue = [[from]];
290
+ while (queue.length > 0) {
291
+ const path = queue.shift();
292
+ const current = path[path.length - 1];
293
+ for (const next of neighbours(current)) {
294
+ if (next === to)
295
+ return [...path, next];
296
+ if (!visited.has(next)) {
297
+ visited.add(next);
298
+ queue.push([...path, next]);
299
+ }
300
+ }
301
+ }
302
+ return null;
303
+ }
304
+ /**
305
+ * Traduce una fórmula genérica al perfil `target` siguiendo el camino
306
+ * de traducciones más corto disponible.
307
+ *
308
+ * Devuelve null si no existe ruta desde `formula.profile` hasta `target`.
309
+ */
310
+ function translateFormula(formula, target) {
311
+ const path = findTranslationPath(formula.profile, target);
312
+ if (!path)
313
+ return null;
314
+ let current = formula;
315
+ for (let i = 0; i < path.length - 1; i++) {
316
+ const src = path[i];
317
+ const dst = path[i + 1];
318
+ const translation = exports.TRANSLATIONS.find((t) => t.source === src && t.target === dst);
319
+ if (!translation)
320
+ return null;
321
+ current = {
322
+ profile: dst,
323
+ ast: translation.translate(current.ast),
324
+ };
325
+ }
326
+ return current;
327
+ }
328
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/profile-bridge/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { type MLLFormula, type ProofNet } from './types';
2
+ export declare function constructFromSequent(formulas: MLLFormula[]): ProofNet;
3
+ //# sourceMappingURL=construct.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"construct.d.ts","sourceRoot":"","sources":["../../src/proof-nets/construct.ts"],"names":[],"mappings":"AAmBA,OAAO,EACL,KAAK,UAAU,EACf,KAAK,QAAQ,EAKd,MAAM,SAAS,CAAC;AAmCjB,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,UAAU,EAAE,GAAG,QAAQ,CAqCrE"}