@stevenvo780/st-lang 4.12.0 → 4.13.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.
- package/dist/reasoning/datalog/index.d.ts +131 -0
- package/dist/reasoning/datalog/index.d.ts.map +1 -0
- package/dist/reasoning/datalog/index.js +706 -0
- package/dist/reasoning/datalog/index.js.map +1 -0
- package/dist/reasoning/galois-fields/index.d.ts +29 -0
- package/dist/reasoning/galois-fields/index.d.ts.map +1 -0
- package/dist/reasoning/galois-fields/index.js +522 -0
- package/dist/reasoning/galois-fields/index.js.map +1 -0
- package/dist/reasoning/lattice/index.d.ts +165 -0
- package/dist/reasoning/lattice/index.d.ts.map +1 -0
- package/dist/reasoning/lattice/index.js +587 -0
- package/dist/reasoning/lattice/index.js.map +1 -0
- package/dist/reasoning/polynomial-ring/index.d.ts +30 -0
- package/dist/reasoning/polynomial-ring/index.d.ts.map +1 -0
- package/dist/reasoning/polynomial-ring/index.js +797 -0
- package/dist/reasoning/polynomial-ring/index.js.map +1 -0
- package/dist/tests/reasoning/datalog/datalog.test.d.ts +2 -0
- package/dist/tests/reasoning/datalog/datalog.test.d.ts.map +1 -0
- package/dist/tests/reasoning/datalog/datalog.test.js +333 -0
- package/dist/tests/reasoning/datalog/datalog.test.js.map +1 -0
- package/dist/tests/reasoning/galois-fields/galois-fields.test.d.ts +2 -0
- package/dist/tests/reasoning/galois-fields/galois-fields.test.d.ts.map +1 -0
- package/dist/tests/reasoning/galois-fields/galois-fields.test.js +226 -0
- package/dist/tests/reasoning/galois-fields/galois-fields.test.js.map +1 -0
- package/dist/tests/reasoning/lattice/lattice.test.d.ts +2 -0
- package/dist/tests/reasoning/lattice/lattice.test.d.ts.map +1 -0
- package/dist/tests/reasoning/lattice/lattice.test.js +238 -0
- package/dist/tests/reasoning/lattice/lattice.test.js.map +1 -0
- package/dist/tests/reasoning/polynomial-ring/polynomial-ring.test.d.ts +2 -0
- package/dist/tests/reasoning/polynomial-ring/polynomial-ring.test.d.ts.map +1 -0
- package/dist/tests/reasoning/polynomial-ring/polynomial-ring.test.js +230 -0
- package/dist/tests/reasoning/polynomial-ring/polynomial-ring.test.js.map +1 -0
- package/dist/tests/type-theory/lambda-cube/lambda-cube.test.d.ts +2 -0
- package/dist/tests/type-theory/lambda-cube/lambda-cube.test.d.ts.map +1 -0
- package/dist/tests/type-theory/lambda-cube/lambda-cube.test.js +266 -0
- package/dist/tests/type-theory/lambda-cube/lambda-cube.test.js.map +1 -0
- package/dist/type-theory/lambda-cube/erase.d.ts +26 -0
- package/dist/type-theory/lambda-cube/erase.d.ts.map +1 -0
- package/dist/type-theory/lambda-cube/erase.js +68 -0
- package/dist/type-theory/lambda-cube/erase.js.map +1 -0
- package/dist/type-theory/lambda-cube/examples.d.ts +59 -0
- package/dist/type-theory/lambda-cube/examples.d.ts.map +1 -0
- package/dist/type-theory/lambda-cube/examples.js +110 -0
- package/dist/type-theory/lambda-cube/examples.js.map +1 -0
- package/dist/type-theory/lambda-cube/index.d.ts +11 -0
- package/dist/type-theory/lambda-cube/index.d.ts.map +1 -0
- package/dist/type-theory/lambda-cube/index.js +64 -0
- package/dist/type-theory/lambda-cube/index.js.map +1 -0
- package/dist/type-theory/lambda-cube/normalize.d.ts +17 -0
- package/dist/type-theory/lambda-cube/normalize.d.ts.map +1 -0
- package/dist/type-theory/lambda-cube/normalize.js +134 -0
- package/dist/type-theory/lambda-cube/normalize.js.map +1 -0
- package/dist/type-theory/lambda-cube/rules.d.ts +26 -0
- package/dist/type-theory/lambda-cube/rules.d.ts.map +1 -0
- package/dist/type-theory/lambda-cube/rules.js +67 -0
- package/dist/type-theory/lambda-cube/rules.js.map +1 -0
- package/dist/type-theory/lambda-cube/typecheck.d.ts +20 -0
- package/dist/type-theory/lambda-cube/typecheck.d.ts.map +1 -0
- package/dist/type-theory/lambda-cube/typecheck.js +168 -0
- package/dist/type-theory/lambda-cube/typecheck.js.map +1 -0
- package/dist/type-theory/lambda-cube/types.d.ts +40 -0
- package/dist/type-theory/lambda-cube/types.d.ts.map +1 -0
- package/dist/type-theory/lambda-cube/types.js +192 -0
- package/dist/type-theory/lambda-cube/types.js.map +1 -0
- 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"}
|