@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,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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"}