@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.
- 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/hoare-logic/index.d.ts +130 -0
- package/dist/reasoning/hoare-logic/index.d.ts.map +1 -0
- package/dist/reasoning/hoare-logic/index.js +535 -0
- package/dist/reasoning/hoare-logic/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/model-checking/index.d.ts +113 -0
- package/dist/reasoning/model-checking/index.d.ts.map +1 -0
- package/dist/reasoning/model-checking/index.js +786 -0
- package/dist/reasoning/model-checking/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/reasoning/separation-logic/index.d.ts +190 -0
- package/dist/reasoning/separation-logic/index.d.ts.map +1 -0
- package/dist/reasoning/separation-logic/index.js +758 -0
- package/dist/reasoning/separation-logic/index.js.map +1 -0
- package/dist/reasoning/universal-algebra/index.d.ts +196 -0
- package/dist/reasoning/universal-algebra/index.d.ts.map +1 -0
- package/dist/reasoning/universal-algebra/index.js +865 -0
- package/dist/reasoning/universal-algebra/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/hoare-logic/hoare-logic.test.d.ts +2 -0
- package/dist/tests/reasoning/hoare-logic/hoare-logic.test.d.ts.map +1 -0
- package/dist/tests/reasoning/hoare-logic/hoare-logic.test.js +340 -0
- package/dist/tests/reasoning/hoare-logic/hoare-logic.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/model-checking/model-checking.test.d.ts +2 -0
- package/dist/tests/reasoning/model-checking/model-checking.test.d.ts.map +1 -0
- package/dist/tests/reasoning/model-checking/model-checking.test.js +222 -0
- package/dist/tests/reasoning/model-checking/model-checking.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/reasoning/separation-logic/separation-logic.test.d.ts +2 -0
- package/dist/tests/reasoning/separation-logic/separation-logic.test.d.ts.map +1 -0
- package/dist/tests/reasoning/separation-logic/separation-logic.test.js +311 -0
- package/dist/tests/reasoning/separation-logic/separation-logic.test.js.map +1 -0
- package/dist/tests/reasoning/universal-algebra/universal-algebra.test.d.ts +2 -0
- package/dist/tests/reasoning/universal-algebra/universal-algebra.test.d.ts.map +1 -0
- package/dist/tests/reasoning/universal-algebra/universal-algebra.test.js +289 -0
- package/dist/tests/reasoning/universal-algebra/universal-algebra.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,113 @@
|
|
|
1
|
+
export interface StateSpace<S> {
|
|
2
|
+
/** Estados iniciales (≥1). */
|
|
3
|
+
initial: S[];
|
|
4
|
+
/** Sucesores inmediatos de un estado. Vacío = estado deadlock. */
|
|
5
|
+
successors: (s: S) => S[];
|
|
6
|
+
/** Proposiciones atómicas que hold en el estado. */
|
|
7
|
+
labels: (s: S) => Set<string>;
|
|
8
|
+
/** Igualdad estructural (en práctica raramente usada: hash es la fuente de verdad). */
|
|
9
|
+
equals: (a: S, b: S) => boolean;
|
|
10
|
+
/** Clave canónica del estado para visited set. */
|
|
11
|
+
hash: (s: S) => string;
|
|
12
|
+
}
|
|
13
|
+
export interface ReachabilityResult<S> {
|
|
14
|
+
/** Estados únicos alcanzados desde initial. */
|
|
15
|
+
states: S[];
|
|
16
|
+
/** Total de estados visitados (== states.length salvo cota). */
|
|
17
|
+
explored: number;
|
|
18
|
+
/** True si se cortó por `maxStates`. */
|
|
19
|
+
truncated: boolean;
|
|
20
|
+
}
|
|
21
|
+
export interface SafetyResult<S> {
|
|
22
|
+
safe: boolean;
|
|
23
|
+
/** Traza desde algún initial hasta el violatingState (incluido). */
|
|
24
|
+
trace?: S[];
|
|
25
|
+
/** Estado donde la propiedad falló. */
|
|
26
|
+
violatingState?: S;
|
|
27
|
+
}
|
|
28
|
+
export interface LivenessResult<S> {
|
|
29
|
+
holds: boolean;
|
|
30
|
+
/** Si `holds=false`: ciclo testigo del contraejemplo (stem→loop). */
|
|
31
|
+
lasso?: {
|
|
32
|
+
stem: S[];
|
|
33
|
+
loop: S[];
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
export interface DeadlockResult<S> {
|
|
37
|
+
deadlocked: boolean;
|
|
38
|
+
state?: S;
|
|
39
|
+
/** Traza desde initial hasta el estado sin sucesores. */
|
|
40
|
+
trace?: S[];
|
|
41
|
+
}
|
|
42
|
+
interface ReachabilityOpts {
|
|
43
|
+
/** Tope duro de estados visitados. Default 100000. */
|
|
44
|
+
maxStates?: number;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Calcula el conjunto de estados alcanzables desde los estados
|
|
48
|
+
* iniciales del espacio. BFS por nivel; se detiene al agotar la
|
|
49
|
+
* frontera o al alcanzar `maxStates`.
|
|
50
|
+
*/
|
|
51
|
+
export declare function reachableStates<S>(space: StateSpace<S>, opts?: ReachabilityOpts): ReachabilityResult<S>;
|
|
52
|
+
/**
|
|
53
|
+
* Verifica que `predicate` se cumple en *todos* los estados
|
|
54
|
+
* alcanzables. Si encuentra un estado violador, devuelve una
|
|
55
|
+
* traza mínima desde algún initial hasta él. Equivale a G p.
|
|
56
|
+
*/
|
|
57
|
+
export declare function checkSafety<S>(space: StateSpace<S>, predicate: (s: S) => boolean, opts?: ReachabilityOpts): SafetyResult<S>;
|
|
58
|
+
/** Alias semántico: invariante = safety check con el mismo predicado. */
|
|
59
|
+
export declare function checkInvariant<S>(space: StateSpace<S>, invariant: (s: S) => boolean, opts?: ReachabilityOpts): SafetyResult<S>;
|
|
60
|
+
/**
|
|
61
|
+
* BMC: busca un estado donde `predicate` falla dentro de los
|
|
62
|
+
* primeros `depth` pasos desde initial. No certifica safety
|
|
63
|
+
* global; sirve para encontrar contraejemplos cortos.
|
|
64
|
+
*
|
|
65
|
+
* `depth=0` solo evalúa estados iniciales.
|
|
66
|
+
*/
|
|
67
|
+
export declare function bmc<S>(space: StateSpace<S>, predicate: (s: S) => boolean, depth: number): SafetyResult<S>;
|
|
68
|
+
/**
|
|
69
|
+
* Detecta el primer estado alcanzable sin sucesores. Devuelve la
|
|
70
|
+
* traza desde initial hasta ese estado para diagnóstico.
|
|
71
|
+
*/
|
|
72
|
+
export declare function hasDeadlock<S>(space: StateSpace<S>, opts?: ReachabilityOpts): DeadlockResult<S>;
|
|
73
|
+
/**
|
|
74
|
+
* GF p: en todo camino infinito, p ocurre infinitas veces.
|
|
75
|
+
* Contraejemplo: lasso accesible (stem + loop) tal que NINGÚN
|
|
76
|
+
* estado del loop satisface p (porque entonces existe un camino
|
|
77
|
+
* infinito que evita p eventualmente).
|
|
78
|
+
*
|
|
79
|
+
* Algoritmo: SCCs no-triviales accesibles desde initial; si alguna
|
|
80
|
+
* NO contiene estado p=true → contraejemplo. Si todas las SCCs
|
|
81
|
+
* no-triviales accesibles contienen al menos un estado p=true,
|
|
82
|
+
* holds.
|
|
83
|
+
*/
|
|
84
|
+
export declare function checkAlwaysEventually<S>(space: StateSpace<S>, p: (s: S) => boolean, opts?: ReachabilityOpts): LivenessResult<S>;
|
|
85
|
+
/**
|
|
86
|
+
* FG p: existe un punto a partir del cual p siempre holds.
|
|
87
|
+
*
|
|
88
|
+
* Holds sii: existe un lasso accesible cuyo loop está contenido
|
|
89
|
+
* íntegramente en {s | p(s)}. Es decir, SCC no-trivial accesible
|
|
90
|
+
* dentro del sub-grafo inducido por p=true.
|
|
91
|
+
*/
|
|
92
|
+
export declare function checkEventuallyAlways<S>(space: StateSpace<S>, p: (s: S) => boolean, opts?: ReachabilityOpts): LivenessResult<S>;
|
|
93
|
+
export type MutexProcState = 'idle' | 'waiting' | 'critical';
|
|
94
|
+
export interface MutexState {
|
|
95
|
+
p1: MutexProcState;
|
|
96
|
+
p2: MutexProcState;
|
|
97
|
+
turn: 1 | 2;
|
|
98
|
+
}
|
|
99
|
+
export declare function mutualExclusionSpace(): StateSpace<MutexState>;
|
|
100
|
+
export type PhilState = 'thinking' | 'has_left' | 'eating';
|
|
101
|
+
export interface DiningState {
|
|
102
|
+
phils: PhilState[];
|
|
103
|
+
forks: boolean[];
|
|
104
|
+
}
|
|
105
|
+
export declare function diningPhilosophersSpace(n: number): StateSpace<DiningState>;
|
|
106
|
+
export interface RWState {
|
|
107
|
+
readers: number;
|
|
108
|
+
writer: boolean;
|
|
109
|
+
maxReaders: number;
|
|
110
|
+
}
|
|
111
|
+
export declare function readerWriterSpace(numReaders: number): StateSpace<RWState>;
|
|
112
|
+
export {};
|
|
113
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/reasoning/model-checking/index.ts"],"names":[],"mappings":"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"}
|