@stevenvo780/st-lang 4.12.0 → 4.14.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 (97) hide show
  1. package/dist/reasoning/datalog/index.d.ts +131 -0
  2. package/dist/reasoning/datalog/index.d.ts.map +1 -0
  3. package/dist/reasoning/datalog/index.js +706 -0
  4. package/dist/reasoning/datalog/index.js.map +1 -0
  5. package/dist/reasoning/galois-fields/index.d.ts +29 -0
  6. package/dist/reasoning/galois-fields/index.d.ts.map +1 -0
  7. package/dist/reasoning/galois-fields/index.js +522 -0
  8. package/dist/reasoning/galois-fields/index.js.map +1 -0
  9. package/dist/reasoning/hoare-logic/index.d.ts +130 -0
  10. package/dist/reasoning/hoare-logic/index.d.ts.map +1 -0
  11. package/dist/reasoning/hoare-logic/index.js +535 -0
  12. package/dist/reasoning/hoare-logic/index.js.map +1 -0
  13. package/dist/reasoning/lattice/index.d.ts +165 -0
  14. package/dist/reasoning/lattice/index.d.ts.map +1 -0
  15. package/dist/reasoning/lattice/index.js +587 -0
  16. package/dist/reasoning/lattice/index.js.map +1 -0
  17. package/dist/reasoning/model-checking/index.d.ts +113 -0
  18. package/dist/reasoning/model-checking/index.d.ts.map +1 -0
  19. package/dist/reasoning/model-checking/index.js +786 -0
  20. package/dist/reasoning/model-checking/index.js.map +1 -0
  21. package/dist/reasoning/polynomial-ring/index.d.ts +30 -0
  22. package/dist/reasoning/polynomial-ring/index.d.ts.map +1 -0
  23. package/dist/reasoning/polynomial-ring/index.js +797 -0
  24. package/dist/reasoning/polynomial-ring/index.js.map +1 -0
  25. package/dist/reasoning/separation-logic/index.d.ts +190 -0
  26. package/dist/reasoning/separation-logic/index.d.ts.map +1 -0
  27. package/dist/reasoning/separation-logic/index.js +758 -0
  28. package/dist/reasoning/separation-logic/index.js.map +1 -0
  29. package/dist/reasoning/universal-algebra/index.d.ts +196 -0
  30. package/dist/reasoning/universal-algebra/index.d.ts.map +1 -0
  31. package/dist/reasoning/universal-algebra/index.js +865 -0
  32. package/dist/reasoning/universal-algebra/index.js.map +1 -0
  33. package/dist/tests/reasoning/datalog/datalog.test.d.ts +2 -0
  34. package/dist/tests/reasoning/datalog/datalog.test.d.ts.map +1 -0
  35. package/dist/tests/reasoning/datalog/datalog.test.js +333 -0
  36. package/dist/tests/reasoning/datalog/datalog.test.js.map +1 -0
  37. package/dist/tests/reasoning/galois-fields/galois-fields.test.d.ts +2 -0
  38. package/dist/tests/reasoning/galois-fields/galois-fields.test.d.ts.map +1 -0
  39. package/dist/tests/reasoning/galois-fields/galois-fields.test.js +226 -0
  40. package/dist/tests/reasoning/galois-fields/galois-fields.test.js.map +1 -0
  41. package/dist/tests/reasoning/hoare-logic/hoare-logic.test.d.ts +2 -0
  42. package/dist/tests/reasoning/hoare-logic/hoare-logic.test.d.ts.map +1 -0
  43. package/dist/tests/reasoning/hoare-logic/hoare-logic.test.js +340 -0
  44. package/dist/tests/reasoning/hoare-logic/hoare-logic.test.js.map +1 -0
  45. package/dist/tests/reasoning/lattice/lattice.test.d.ts +2 -0
  46. package/dist/tests/reasoning/lattice/lattice.test.d.ts.map +1 -0
  47. package/dist/tests/reasoning/lattice/lattice.test.js +238 -0
  48. package/dist/tests/reasoning/lattice/lattice.test.js.map +1 -0
  49. package/dist/tests/reasoning/model-checking/model-checking.test.d.ts +2 -0
  50. package/dist/tests/reasoning/model-checking/model-checking.test.d.ts.map +1 -0
  51. package/dist/tests/reasoning/model-checking/model-checking.test.js +222 -0
  52. package/dist/tests/reasoning/model-checking/model-checking.test.js.map +1 -0
  53. package/dist/tests/reasoning/polynomial-ring/polynomial-ring.test.d.ts +2 -0
  54. package/dist/tests/reasoning/polynomial-ring/polynomial-ring.test.d.ts.map +1 -0
  55. package/dist/tests/reasoning/polynomial-ring/polynomial-ring.test.js +230 -0
  56. package/dist/tests/reasoning/polynomial-ring/polynomial-ring.test.js.map +1 -0
  57. package/dist/tests/reasoning/separation-logic/separation-logic.test.d.ts +2 -0
  58. package/dist/tests/reasoning/separation-logic/separation-logic.test.d.ts.map +1 -0
  59. package/dist/tests/reasoning/separation-logic/separation-logic.test.js +311 -0
  60. package/dist/tests/reasoning/separation-logic/separation-logic.test.js.map +1 -0
  61. package/dist/tests/reasoning/universal-algebra/universal-algebra.test.d.ts +2 -0
  62. package/dist/tests/reasoning/universal-algebra/universal-algebra.test.d.ts.map +1 -0
  63. package/dist/tests/reasoning/universal-algebra/universal-algebra.test.js +289 -0
  64. package/dist/tests/reasoning/universal-algebra/universal-algebra.test.js.map +1 -0
  65. package/dist/tests/type-theory/lambda-cube/lambda-cube.test.d.ts +2 -0
  66. package/dist/tests/type-theory/lambda-cube/lambda-cube.test.d.ts.map +1 -0
  67. package/dist/tests/type-theory/lambda-cube/lambda-cube.test.js +266 -0
  68. package/dist/tests/type-theory/lambda-cube/lambda-cube.test.js.map +1 -0
  69. package/dist/type-theory/lambda-cube/erase.d.ts +26 -0
  70. package/dist/type-theory/lambda-cube/erase.d.ts.map +1 -0
  71. package/dist/type-theory/lambda-cube/erase.js +68 -0
  72. package/dist/type-theory/lambda-cube/erase.js.map +1 -0
  73. package/dist/type-theory/lambda-cube/examples.d.ts +59 -0
  74. package/dist/type-theory/lambda-cube/examples.d.ts.map +1 -0
  75. package/dist/type-theory/lambda-cube/examples.js +110 -0
  76. package/dist/type-theory/lambda-cube/examples.js.map +1 -0
  77. package/dist/type-theory/lambda-cube/index.d.ts +11 -0
  78. package/dist/type-theory/lambda-cube/index.d.ts.map +1 -0
  79. package/dist/type-theory/lambda-cube/index.js +64 -0
  80. package/dist/type-theory/lambda-cube/index.js.map +1 -0
  81. package/dist/type-theory/lambda-cube/normalize.d.ts +17 -0
  82. package/dist/type-theory/lambda-cube/normalize.d.ts.map +1 -0
  83. package/dist/type-theory/lambda-cube/normalize.js +134 -0
  84. package/dist/type-theory/lambda-cube/normalize.js.map +1 -0
  85. package/dist/type-theory/lambda-cube/rules.d.ts +26 -0
  86. package/dist/type-theory/lambda-cube/rules.d.ts.map +1 -0
  87. package/dist/type-theory/lambda-cube/rules.js +67 -0
  88. package/dist/type-theory/lambda-cube/rules.js.map +1 -0
  89. package/dist/type-theory/lambda-cube/typecheck.d.ts +20 -0
  90. package/dist/type-theory/lambda-cube/typecheck.d.ts.map +1 -0
  91. package/dist/type-theory/lambda-cube/typecheck.js +168 -0
  92. package/dist/type-theory/lambda-cube/typecheck.js.map +1 -0
  93. package/dist/type-theory/lambda-cube/types.d.ts +40 -0
  94. package/dist/type-theory/lambda-cube/types.d.ts.map +1 -0
  95. package/dist/type-theory/lambda-cube/types.js +192 -0
  96. package/dist/type-theory/lambda-cube/types.js.map +1 -0
  97. package/package.json +1 -1
@@ -0,0 +1,131 @@
1
+ export type DatalogTerm = string;
2
+ export interface DatalogAtom {
3
+ predicate: string;
4
+ args: DatalogTerm[];
5
+ }
6
+ export interface DatalogRule {
7
+ head: DatalogAtom;
8
+ body: DatalogAtom[];
9
+ }
10
+ export interface DatalogProgram {
11
+ facts: DatalogAtom[];
12
+ rules: DatalogRule[];
13
+ }
14
+ export interface Substitution {
15
+ [variable: string]: DatalogTerm;
16
+ }
17
+ export interface EvaluationResult {
18
+ facts: DatalogAtom[];
19
+ iterations: number;
20
+ }
21
+ export interface StratifiedRule extends DatalogRule {
22
+ negBody: DatalogAtom[];
23
+ }
24
+ /**
25
+ * Una variable Datalog es un término cuyo primer carácter es una
26
+ * letra mayúscula. Todo lo demás (minúsculas, dígitos, comillas)
27
+ * cuenta como constante.
28
+ */
29
+ export declare function isVariable(term: DatalogTerm): boolean;
30
+ /** Un átomo es ground sii ninguno de sus argumentos es variable. */
31
+ export declare function isGround(atom: DatalogAtom): boolean;
32
+ /**
33
+ * Parsea un átomo de la forma `predicate(arg1, arg2, ...)`.
34
+ * Devuelve null si la sintaxis es inválida.
35
+ */
36
+ export declare function parseAtom(s: string): DatalogAtom | null;
37
+ /**
38
+ * Parsea una regla `head :- body1, body2, ...` o un hecho `head`.
39
+ * El punto final es opcional. Devuelve null si la sintaxis falla.
40
+ */
41
+ export declare function parseRule(s: string): DatalogRule | null;
42
+ /**
43
+ * Unificación de dos átomos. Devuelve la sustitución más general que
44
+ * los unifica, o null si no son unificables.
45
+ *
46
+ * Reglas:
47
+ * - Predicados distintos o aridades distintas → fallo.
48
+ * - Variable vs término → bind (sin occurs check; Datalog no tiene
49
+ * functores compuestos así que occurs check no aplica).
50
+ * - Constante vs constante → match exacto.
51
+ */
52
+ export declare function unifyAtoms(a: DatalogAtom, b: DatalogAtom): Substitution | null;
53
+ /**
54
+ * Aplica una sustitución a un átomo, resolviendo cadenas vía walk.
55
+ * Si una variable queda sin binding, se conserva tal cual.
56
+ */
57
+ export declare function applySubstitution(atom: DatalogAtom, subst: Substitution): DatalogAtom;
58
+ /**
59
+ * Evaluación bottom-up con la variante semi-naive: en cada iteración
60
+ * sólo recomputamos sustituciones que involucran al menos un fact
61
+ * nuevo del paso anterior. Para Datalog puro (sin negación) esto
62
+ * computa el modelo mínimo de Herbrand en O(|reglas| · |facts|^aridad)
63
+ * en el peor caso.
64
+ *
65
+ * Notas:
66
+ * - `opts.maxIterations` por defecto 1000. Datalog termina siempre,
67
+ * pero programas con muchos términos requieren un techo defensivo
68
+ * para no colgar tests.
69
+ * - Variables anónimas (no aparecen renombradas externamente) se
70
+ * reinstancian por regla en cada paso.
71
+ */
72
+ export declare function evaluateBottomUp(p: DatalogProgram, opts?: {
73
+ maxIterations?: number;
74
+ }): EvaluationResult;
75
+ /**
76
+ * Devuelve todas las instancias ground del query derivables del
77
+ * programa, evaluando top-down como SLD con memoización por átomo
78
+ * (tabling). La memoización es esencial: SLD puro sobre programas
79
+ * recursivos (ej. transitive closure) no terminaría.
80
+ *
81
+ * `maxDepth` limita la profundidad de resolución para evitar
82
+ * explosión exponencial. Default 100.
83
+ */
84
+ export declare function querySLD(p: DatalogProgram, query: DatalogAtom, maxDepth?: number): DatalogAtom[];
85
+ /**
86
+ * Evalúa un programa con negación estratificada. En cada estrato
87
+ * se ejecuta bottom-up con el set de facts acumulado, interpretando
88
+ * los literales negados bajo CWA (closed world assumption): `¬p(t)`
89
+ * es verdadero sii `p(t)` no está en el modelo del estrato previo.
90
+ *
91
+ * Si el programa no se puede estratificar, devuelve un resultado con
92
+ * 0 iteraciones y solo los facts iniciales (mejor que arrojar).
93
+ */
94
+ export declare function evaluateStratified(p: {
95
+ facts: DatalogAtom[];
96
+ rules: StratifiedRule[];
97
+ }): EvaluationResult;
98
+ /**
99
+ * Magic sets: transforma un programa P y una consulta Q en un
100
+ * programa P' tal que la evaluación bottom-up de P' computa sólo
101
+ * los facts relevantes para Q, en vez del modelo mínimo completo.
102
+ *
103
+ * Implementación mínima pero funcional:
104
+ * - Introduce predicados `magic_<head>` con los args bound del query.
105
+ * - Reescribe cada regla para que su disparo dependa del magic seed
106
+ * correspondiente y propague seeds a literales recursivos.
107
+ *
108
+ * Para consultas con todos los args ground, devuelve la consulta
109
+ * cerrada como seed inicial. Para args variables, devuelve el
110
+ * programa original (no hay focus posible).
111
+ */
112
+ export declare function magicSets(program: DatalogProgram, query: DatalogAtom): DatalogProgram;
113
+ /**
114
+ * Programa canónico de clausura transitiva:
115
+ *
116
+ * parent(alice, bob).
117
+ * parent(bob, carol).
118
+ * parent(carol, dave).
119
+ * ancestor(X, Y) :- parent(X, Y).
120
+ * ancestor(X, Y) :- parent(X, Z), ancestor(Z, Y).
121
+ */
122
+ export declare function transitiveClosure(): DatalogProgram;
123
+ /**
124
+ * Programa de alcanzabilidad en un grafo dirigido de 4 nodos:
125
+ *
126
+ * edge(n1, n2). edge(n2, n3). edge(n3, n4). edge(n1, n3).
127
+ * reach(X, Y) :- edge(X, Y).
128
+ * reach(X, Y) :- edge(X, Z), reach(Z, Y).
129
+ */
130
+ export declare function pathReachability(): DatalogProgram;
131
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/reasoning/datalog/index.ts"],"names":[],"mappings":"AA2BA,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC;AAEjC,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,WAAW,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,WAAW,CAAC;IAClB,IAAI,EAAE,WAAW,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,WAAW,EAAE,CAAC;IACrB,KAAK,EAAE,WAAW,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,YAAY;IAC3B,CAAC,QAAQ,EAAE,MAAM,GAAG,WAAW,CAAC;CACjC;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,WAAW,EAAE,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,cAAe,SAAQ,WAAW;IACjD,OAAO,EAAE,WAAW,EAAE,CAAC;CACxB;AAID;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAIrD;AAED,oEAAoE;AACpE,wBAAgB,QAAQ,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAEnD;AAwBD;;;GAGG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,CAWvD;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,CAoCvD;AAsBD;;;;;;;;;GASG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,WAAW,GAAG,YAAY,GAAG,IAAI,CAoB9E;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,YAAY,GAAG,WAAW,CAKrF;AAsFD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,gBAAgB,CAC9B,CAAC,EAAE,cAAc,EACjB,IAAI,GAAE;IAAE,aAAa,CAAC,EAAE,MAAM,CAAA;CAAO,GACpC,gBAAgB,CAwClB;AAID;;;;;;;;GAQG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EAAE,cAAc,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,SAAM,GAAG,WAAW,EAAE,CAwB7F;AAgED;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,EAAE;IACpC,KAAK,EAAE,WAAW,EAAE,CAAC;IACrB,KAAK,EAAE,cAAc,EAAE,CAAC;CACzB,GAAG,gBAAgB,CAiFnB;AAID;;;;;;;;;;;;;GAaG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,WAAW,GAAG,cAAc,CAyErF;AAID;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,IAAI,cAAc,CAqBlD;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,IAAI,cAAc,CAsBjD"}