@stevenvo780/st-lang 4.14.1 → 4.15.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.
- package/dist/format/stnb/__tests__/executor.test.d.ts +2 -0
- package/dist/format/stnb/__tests__/executor.test.d.ts.map +1 -0
- package/dist/format/stnb/__tests__/executor.test.js +140 -0
- package/dist/format/stnb/__tests__/executor.test.js.map +1 -0
- package/dist/format/stnb/__tests__/parser.test.d.ts +2 -0
- package/dist/format/stnb/__tests__/parser.test.d.ts.map +1 -0
- package/dist/format/stnb/__tests__/parser.test.js +119 -0
- package/dist/format/stnb/__tests__/parser.test.js.map +1 -0
- package/dist/format/stnb/__tests__/renderer.test.d.ts +2 -0
- package/dist/format/stnb/__tests__/renderer.test.d.ts.map +1 -0
- package/dist/format/stnb/__tests__/renderer.test.js +109 -0
- package/dist/format/stnb/__tests__/renderer.test.js.map +1 -0
- package/dist/format/stnb/__tests__/roundtrip.test.d.ts +2 -0
- package/dist/format/stnb/__tests__/roundtrip.test.d.ts.map +1 -0
- package/dist/format/stnb/__tests__/roundtrip.test.js +91 -0
- package/dist/format/stnb/__tests__/roundtrip.test.js.map +1 -0
- package/dist/format/stnb/__tests__/serializer.test.d.ts +2 -0
- package/dist/format/stnb/__tests__/serializer.test.d.ts.map +1 -0
- package/dist/format/stnb/__tests__/serializer.test.js +60 -0
- package/dist/format/stnb/__tests__/serializer.test.js.map +1 -0
- package/dist/format/stnb/executor.d.ts +29 -0
- package/dist/format/stnb/executor.d.ts.map +1 -0
- package/dist/format/stnb/executor.js +139 -0
- package/dist/format/stnb/executor.js.map +1 -0
- package/dist/format/stnb/index.d.ts +19 -0
- package/dist/format/stnb/index.d.ts.map +1 -0
- package/dist/format/stnb/index.js +28 -0
- package/dist/format/stnb/index.js.map +1 -0
- package/dist/format/stnb/renderer-html.d.ts +11 -0
- package/dist/format/stnb/renderer-html.d.ts.map +1 -0
- package/dist/format/stnb/renderer-html.js +180 -0
- package/dist/format/stnb/renderer-html.js.map +1 -0
- package/dist/format/stnb/renderer-markdown.d.ts +13 -0
- package/dist/format/stnb/renderer-markdown.d.ts.map +1 -0
- package/dist/format/stnb/renderer-markdown.js +92 -0
- package/dist/format/stnb/renderer-markdown.js.map +1 -0
- package/dist/format/stnb/serializer.d.ts +14 -0
- package/dist/format/stnb/serializer.d.ts.map +1 -0
- package/dist/format/stnb/serializer.js +21 -0
- package/dist/format/stnb/serializer.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -1
- package/dist/index.js.map +1 -1
- package/dist/logic/profiles/dl-hybrid/__tests__/differential.test.d.ts +2 -0
- package/dist/logic/profiles/dl-hybrid/__tests__/differential.test.d.ts.map +1 -0
- package/dist/logic/profiles/dl-hybrid/__tests__/differential.test.js +141 -0
- package/dist/logic/profiles/dl-hybrid/__tests__/differential.test.js.map +1 -0
- package/dist/logic/profiles/dl-hybrid/__tests__/examples.test.d.ts +2 -0
- package/dist/logic/profiles/dl-hybrid/__tests__/examples.test.d.ts.map +1 -0
- package/dist/logic/profiles/dl-hybrid/__tests__/examples.test.js +55 -0
- package/dist/logic/profiles/dl-hybrid/__tests__/examples.test.js.map +1 -0
- package/dist/logic/profiles/dl-hybrid/__tests__/parser.test.d.ts +2 -0
- package/dist/logic/profiles/dl-hybrid/__tests__/parser.test.d.ts.map +1 -0
- package/dist/logic/profiles/dl-hybrid/__tests__/parser.test.js +149 -0
- package/dist/logic/profiles/dl-hybrid/__tests__/parser.test.js.map +1 -0
- package/dist/logic/profiles/dl-hybrid/__tests__/tableau.test.d.ts +2 -0
- package/dist/logic/profiles/dl-hybrid/__tests__/tableau.test.d.ts.map +1 -0
- package/dist/logic/profiles/dl-hybrid/__tests__/tableau.test.js +105 -0
- package/dist/logic/profiles/dl-hybrid/__tests__/tableau.test.js.map +1 -0
- package/dist/logic/profiles/dl-hybrid/ast.d.ts +160 -0
- package/dist/logic/profiles/dl-hybrid/ast.d.ts.map +1 -0
- package/dist/logic/profiles/dl-hybrid/ast.js +261 -0
- package/dist/logic/profiles/dl-hybrid/ast.js.map +1 -0
- package/dist/logic/profiles/dl-hybrid/differential.d.ts +61 -0
- package/dist/logic/profiles/dl-hybrid/differential.d.ts.map +1 -0
- package/dist/logic/profiles/dl-hybrid/differential.js +291 -0
- package/dist/logic/profiles/dl-hybrid/differential.js.map +1 -0
- package/dist/logic/profiles/dl-hybrid/index.d.ts +10 -0
- package/dist/logic/profiles/dl-hybrid/index.d.ts.map +1 -0
- package/dist/logic/profiles/dl-hybrid/index.js +90 -0
- package/dist/logic/profiles/dl-hybrid/index.js.map +1 -0
- package/dist/logic/profiles/dl-hybrid/parser.d.ts +8 -0
- package/dist/logic/profiles/dl-hybrid/parser.d.ts.map +1 -0
- package/dist/logic/profiles/dl-hybrid/parser.js +410 -0
- package/dist/logic/profiles/dl-hybrid/parser.js.map +1 -0
- package/dist/logic/profiles/dl-hybrid/profile.d.ts +23 -0
- package/dist/logic/profiles/dl-hybrid/profile.d.ts.map +1 -0
- package/dist/logic/profiles/dl-hybrid/profile.js +122 -0
- package/dist/logic/profiles/dl-hybrid/profile.js.map +1 -0
- package/dist/logic/profiles/dl-hybrid/semantics.d.ts +16 -0
- package/dist/logic/profiles/dl-hybrid/semantics.d.ts.map +1 -0
- package/dist/logic/profiles/dl-hybrid/semantics.js +181 -0
- package/dist/logic/profiles/dl-hybrid/semantics.js.map +1 -0
- package/dist/logic/profiles/dl-hybrid/tableau.d.ts +38 -0
- package/dist/logic/profiles/dl-hybrid/tableau.d.ts.map +1 -0
- package/dist/logic/profiles/dl-hybrid/tableau.js +289 -0
- package/dist/logic/profiles/dl-hybrid/tableau.js.map +1 -0
- package/dist/reasoning/dl-hybrid/__tests__/invariant.test.d.ts +2 -0
- package/dist/reasoning/dl-hybrid/__tests__/invariant.test.d.ts.map +1 -0
- package/dist/reasoning/dl-hybrid/__tests__/invariant.test.js +74 -0
- package/dist/reasoning/dl-hybrid/__tests__/invariant.test.js.map +1 -0
- package/dist/reasoning/dl-hybrid/index.d.ts +3 -0
- package/dist/reasoning/dl-hybrid/index.d.ts.map +1 -0
- package/dist/reasoning/dl-hybrid/index.js +16 -0
- package/dist/reasoning/dl-hybrid/index.js.map +1 -0
- package/dist/reasoning/dl-hybrid/invariant-search.d.ts +39 -0
- package/dist/reasoning/dl-hybrid/invariant-search.d.ts.map +1 -0
- package/dist/reasoning/dl-hybrid/invariant-search.js +188 -0
- package/dist/reasoning/dl-hybrid/invariant-search.js.map +1 -0
- package/dist/reasoning/lemma-rag/__tests__/benchmarks.test.d.ts +2 -0
- package/dist/reasoning/lemma-rag/__tests__/benchmarks.test.d.ts.map +1 -0
- package/dist/reasoning/lemma-rag/__tests__/benchmarks.test.js +72 -0
- package/dist/reasoning/lemma-rag/__tests__/benchmarks.test.js.map +1 -0
- package/dist/reasoning/lemma-rag/__tests__/embedding.test.d.ts +2 -0
- package/dist/reasoning/lemma-rag/__tests__/embedding.test.d.ts.map +1 -0
- package/dist/reasoning/lemma-rag/__tests__/embedding.test.js +102 -0
- package/dist/reasoning/lemma-rag/__tests__/embedding.test.js.map +1 -0
- package/dist/reasoning/lemma-rag/__tests__/integration.test.d.ts +2 -0
- package/dist/reasoning/lemma-rag/__tests__/integration.test.d.ts.map +1 -0
- package/dist/reasoning/lemma-rag/__tests__/integration.test.js +40 -0
- package/dist/reasoning/lemma-rag/__tests__/integration.test.js.map +1 -0
- package/dist/reasoning/lemma-rag/__tests__/query.test.d.ts +2 -0
- package/dist/reasoning/lemma-rag/__tests__/query.test.d.ts.map +1 -0
- package/dist/reasoning/lemma-rag/__tests__/query.test.js +136 -0
- package/dist/reasoning/lemma-rag/__tests__/query.test.js.map +1 -0
- package/dist/reasoning/lemma-rag/__tests__/retrieval.test.d.ts +2 -0
- package/dist/reasoning/lemma-rag/__tests__/retrieval.test.d.ts.map +1 -0
- package/dist/reasoning/lemma-rag/__tests__/retrieval.test.js +147 -0
- package/dist/reasoning/lemma-rag/__tests__/retrieval.test.js.map +1 -0
- package/dist/reasoning/lemma-rag/benchmarks.d.ts +30 -0
- package/dist/reasoning/lemma-rag/benchmarks.d.ts.map +1 -0
- package/dist/reasoning/lemma-rag/benchmarks.js +177 -0
- package/dist/reasoning/lemma-rag/benchmarks.js.map +1 -0
- package/dist/reasoning/lemma-rag/embedding.d.ts +26 -0
- package/dist/reasoning/lemma-rag/embedding.d.ts.map +1 -0
- package/dist/reasoning/lemma-rag/embedding.js +243 -0
- package/dist/reasoning/lemma-rag/embedding.js.map +1 -0
- package/dist/reasoning/lemma-rag/index-store.d.ts +35 -0
- package/dist/reasoning/lemma-rag/index-store.d.ts.map +1 -0
- package/dist/reasoning/lemma-rag/index-store.js +105 -0
- package/dist/reasoning/lemma-rag/index-store.js.map +1 -0
- package/dist/reasoning/lemma-rag/index.d.ts +9 -0
- package/dist/reasoning/lemma-rag/index.d.ts.map +1 -0
- package/dist/reasoning/lemma-rag/index.js +34 -0
- package/dist/reasoning/lemma-rag/index.js.map +1 -0
- package/dist/reasoning/lemma-rag/query.d.ts +48 -0
- package/dist/reasoning/lemma-rag/query.d.ts.map +1 -0
- package/dist/reasoning/lemma-rag/query.js +92 -0
- package/dist/reasoning/lemma-rag/query.js.map +1 -0
- package/dist/reasoning/lemma-rag/retrieval.d.ts +33 -0
- package/dist/reasoning/lemma-rag/retrieval.d.ts.map +1 -0
- package/dist/reasoning/lemma-rag/retrieval.js +123 -0
- package/dist/reasoning/lemma-rag/retrieval.js.map +1 -0
- package/dist/reasoning/lemma-rag/types.d.ts +52 -0
- package/dist/reasoning/lemma-rag/types.d.ts.map +1 -0
- package/dist/reasoning/lemma-rag/types.js +13 -0
- package/dist/reasoning/lemma-rag/types.js.map +1 -0
- package/dist/reasoning/proof-mining/__tests__/extractor.test.d.ts +2 -0
- package/dist/reasoning/proof-mining/__tests__/extractor.test.d.ts.map +1 -0
- package/dist/reasoning/proof-mining/__tests__/extractor.test.js +263 -0
- package/dist/reasoning/proof-mining/__tests__/extractor.test.js.map +1 -0
- package/dist/reasoning/proof-mining/__tests__/generalizer.test.d.ts +2 -0
- package/dist/reasoning/proof-mining/__tests__/generalizer.test.d.ts.map +1 -0
- package/dist/reasoning/proof-mining/__tests__/generalizer.test.js +123 -0
- package/dist/reasoning/proof-mining/__tests__/generalizer.test.js.map +1 -0
- package/dist/reasoning/proof-mining/__tests__/integration.test.d.ts +2 -0
- package/dist/reasoning/proof-mining/__tests__/integration.test.d.ts.map +1 -0
- package/dist/reasoning/proof-mining/__tests__/integration.test.js +128 -0
- package/dist/reasoning/proof-mining/__tests__/integration.test.js.map +1 -0
- package/dist/reasoning/proof-mining/__tests__/persistence.test.d.ts +2 -0
- package/dist/reasoning/proof-mining/__tests__/persistence.test.d.ts.map +1 -0
- package/dist/reasoning/proof-mining/__tests__/persistence.test.js +119 -0
- package/dist/reasoning/proof-mining/__tests__/persistence.test.js.map +1 -0
- package/dist/reasoning/proof-mining/__tests__/ranker.test.d.ts +2 -0
- package/dist/reasoning/proof-mining/__tests__/ranker.test.d.ts.map +1 -0
- package/dist/reasoning/proof-mining/__tests__/ranker.test.js +93 -0
- package/dist/reasoning/proof-mining/__tests__/ranker.test.js.map +1 -0
- package/dist/reasoning/proof-mining/extractor.d.ts +73 -0
- package/dist/reasoning/proof-mining/extractor.d.ts.map +1 -0
- package/dist/reasoning/proof-mining/extractor.js +170 -0
- package/dist/reasoning/proof-mining/extractor.js.map +1 -0
- package/dist/reasoning/proof-mining/generalizer.d.ts +46 -0
- package/dist/reasoning/proof-mining/generalizer.d.ts.map +1 -0
- package/dist/reasoning/proof-mining/generalizer.js +245 -0
- package/dist/reasoning/proof-mining/generalizer.js.map +1 -0
- package/dist/reasoning/proof-mining/index.d.ts +62 -0
- package/dist/reasoning/proof-mining/index.d.ts.map +1 -0
- package/dist/reasoning/proof-mining/index.js +235 -0
- package/dist/reasoning/proof-mining/index.js.map +1 -0
- package/dist/reasoning/proof-mining/persistence.d.ts +35 -0
- package/dist/reasoning/proof-mining/persistence.d.ts.map +1 -0
- package/dist/reasoning/proof-mining/persistence.js +126 -0
- package/dist/reasoning/proof-mining/persistence.js.map +1 -0
- package/dist/reasoning/proof-mining/ranker.d.ts +29 -0
- package/dist/reasoning/proof-mining/ranker.d.ts.map +1 -0
- package/dist/reasoning/proof-mining/ranker.js +71 -0
- package/dist/reasoning/proof-mining/ranker.js.map +1 -0
- package/dist/reasoning/proof-mining/statistics.d.ts +11 -0
- package/dist/reasoning/proof-mining/statistics.d.ts.map +1 -0
- package/dist/reasoning/proof-mining/statistics.js +44 -0
- package/dist/reasoning/proof-mining/statistics.js.map +1 -0
- package/dist/reasoning/proof-mining/types.d.ts +117 -0
- package/dist/reasoning/proof-mining/types.d.ts.map +1 -0
- package/dist/reasoning/proof-mining/types.js +24 -0
- package/dist/reasoning/proof-mining/types.js.map +1 -0
- package/package.json +31 -1
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
/** Término aritmético real. Subset de R[x₁,…,xₙ]. */
|
|
2
|
+
export type DLTerm = {
|
|
3
|
+
kind: 'num';
|
|
4
|
+
value: number;
|
|
5
|
+
} | {
|
|
6
|
+
kind: 'var';
|
|
7
|
+
name: string;
|
|
8
|
+
} | {
|
|
9
|
+
kind: 'plus';
|
|
10
|
+
left: DLTerm;
|
|
11
|
+
right: DLTerm;
|
|
12
|
+
} | {
|
|
13
|
+
kind: 'minus';
|
|
14
|
+
left: DLTerm;
|
|
15
|
+
right: DLTerm;
|
|
16
|
+
} | {
|
|
17
|
+
kind: 'times';
|
|
18
|
+
left: DLTerm;
|
|
19
|
+
right: DLTerm;
|
|
20
|
+
} | {
|
|
21
|
+
kind: 'div';
|
|
22
|
+
left: DLTerm;
|
|
23
|
+
right: DLTerm;
|
|
24
|
+
} | {
|
|
25
|
+
kind: 'neg';
|
|
26
|
+
arg: DLTerm;
|
|
27
|
+
} | {
|
|
28
|
+
kind: 'pow';
|
|
29
|
+
base: DLTerm;
|
|
30
|
+
exp: number;
|
|
31
|
+
};
|
|
32
|
+
/** Operador de comparación sobre términos. */
|
|
33
|
+
export type CompOp = '=' | '!=' | '<' | '<=' | '>' | '>=';
|
|
34
|
+
/** Sistema de ODEs: lista de (variable, ladoDerecho) + dominio opcional. */
|
|
35
|
+
export interface OdeSystem {
|
|
36
|
+
/** Cada par representa la ecuación var' = rhs. */
|
|
37
|
+
equations: Array<{
|
|
38
|
+
varName: string;
|
|
39
|
+
rhs: DLTerm;
|
|
40
|
+
}>;
|
|
41
|
+
/** Dominio Q: la evolución continúa mientras Q se mantiene. */
|
|
42
|
+
domain?: DLFormula;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Programa híbrido del cálculo dL.
|
|
46
|
+
*
|
|
47
|
+
* Operadores:
|
|
48
|
+
* x := e asignación discreta
|
|
49
|
+
* x := * asignación no determinista (any-real)
|
|
50
|
+
* ?φ test (bloquea si φ no se cumple)
|
|
51
|
+
* α ; β secuencia
|
|
52
|
+
* α ∪ β choice no determinista
|
|
53
|
+
* α* loop (bounded en la implementación)
|
|
54
|
+
* x' = f(x) & Q evolución continua según ODE bajo dominio Q
|
|
55
|
+
*/
|
|
56
|
+
export type HybridProgram = {
|
|
57
|
+
kind: 'assign';
|
|
58
|
+
varName: string;
|
|
59
|
+
rhs: DLTerm;
|
|
60
|
+
} | {
|
|
61
|
+
kind: 'nondet';
|
|
62
|
+
varName: string;
|
|
63
|
+
} | {
|
|
64
|
+
kind: 'test';
|
|
65
|
+
cond: DLFormula;
|
|
66
|
+
} | {
|
|
67
|
+
kind: 'seq';
|
|
68
|
+
left: HybridProgram;
|
|
69
|
+
right: HybridProgram;
|
|
70
|
+
} | {
|
|
71
|
+
kind: 'choice';
|
|
72
|
+
left: HybridProgram;
|
|
73
|
+
right: HybridProgram;
|
|
74
|
+
} | {
|
|
75
|
+
kind: 'loop';
|
|
76
|
+
body: HybridProgram;
|
|
77
|
+
} | {
|
|
78
|
+
kind: 'ode';
|
|
79
|
+
system: OdeSystem;
|
|
80
|
+
};
|
|
81
|
+
/** Fórmula del cálculo dL. */
|
|
82
|
+
export type DLFormula = {
|
|
83
|
+
kind: 'true';
|
|
84
|
+
} | {
|
|
85
|
+
kind: 'false';
|
|
86
|
+
} | {
|
|
87
|
+
kind: 'comp';
|
|
88
|
+
op: CompOp;
|
|
89
|
+
left: DLTerm;
|
|
90
|
+
right: DLTerm;
|
|
91
|
+
} | {
|
|
92
|
+
kind: 'not';
|
|
93
|
+
arg: DLFormula;
|
|
94
|
+
} | {
|
|
95
|
+
kind: 'and';
|
|
96
|
+
left: DLFormula;
|
|
97
|
+
right: DLFormula;
|
|
98
|
+
} | {
|
|
99
|
+
kind: 'or';
|
|
100
|
+
left: DLFormula;
|
|
101
|
+
right: DLFormula;
|
|
102
|
+
} | {
|
|
103
|
+
kind: 'implies';
|
|
104
|
+
left: DLFormula;
|
|
105
|
+
right: DLFormula;
|
|
106
|
+
} | {
|
|
107
|
+
kind: 'iff';
|
|
108
|
+
left: DLFormula;
|
|
109
|
+
right: DLFormula;
|
|
110
|
+
} | {
|
|
111
|
+
kind: 'box';
|
|
112
|
+
program: HybridProgram;
|
|
113
|
+
post: DLFormula;
|
|
114
|
+
} | {
|
|
115
|
+
kind: 'diamond';
|
|
116
|
+
program: HybridProgram;
|
|
117
|
+
post: DLFormula;
|
|
118
|
+
};
|
|
119
|
+
export declare const num: (value: number) => DLTerm;
|
|
120
|
+
export declare const variable: (name: string) => DLTerm;
|
|
121
|
+
export declare const plus: (left: DLTerm, right: DLTerm) => DLTerm;
|
|
122
|
+
export declare const minus: (left: DLTerm, right: DLTerm) => DLTerm;
|
|
123
|
+
export declare const times: (left: DLTerm, right: DLTerm) => DLTerm;
|
|
124
|
+
export declare const divide: (left: DLTerm, right: DLTerm) => DLTerm;
|
|
125
|
+
export declare const negTerm: (arg: DLTerm) => DLTerm;
|
|
126
|
+
export declare const power: (base: DLTerm, exp: number) => DLTerm;
|
|
127
|
+
export declare const comp: (op: CompOp, left: DLTerm, right: DLTerm) => DLFormula;
|
|
128
|
+
export declare const trueF: DLFormula;
|
|
129
|
+
export declare const falseF: DLFormula;
|
|
130
|
+
export declare const notF: (arg: DLFormula) => DLFormula;
|
|
131
|
+
export declare const andF: (left: DLFormula, right: DLFormula) => DLFormula;
|
|
132
|
+
export declare const orF: (left: DLFormula, right: DLFormula) => DLFormula;
|
|
133
|
+
export declare const implies: (left: DLFormula, right: DLFormula) => DLFormula;
|
|
134
|
+
export declare const iff: (left: DLFormula, right: DLFormula) => DLFormula;
|
|
135
|
+
export declare const box: (program: HybridProgram, post: DLFormula) => DLFormula;
|
|
136
|
+
export declare const diamond: (program: HybridProgram, post: DLFormula) => DLFormula;
|
|
137
|
+
export declare const assign: (varName: string, rhs: DLTerm) => HybridProgram;
|
|
138
|
+
export declare const nondet: (varName: string) => HybridProgram;
|
|
139
|
+
export declare const test: (cond: DLFormula) => HybridProgram;
|
|
140
|
+
export declare const seq: (left: HybridProgram, right: HybridProgram) => HybridProgram;
|
|
141
|
+
export declare const choice: (left: HybridProgram, right: HybridProgram) => HybridProgram;
|
|
142
|
+
export declare const loop: (body: HybridProgram) => HybridProgram;
|
|
143
|
+
export declare const ode: (system: OdeSystem) => HybridProgram;
|
|
144
|
+
/** Estado en R^n: asignación variable → número. */
|
|
145
|
+
export type State = Map<string, number>;
|
|
146
|
+
/** Clona un estado para uso inmutable durante traversal. */
|
|
147
|
+
export declare function cloneState(s: State): State;
|
|
148
|
+
/** Recoge las variables libres en un término. */
|
|
149
|
+
export declare function termVars(t: DLTerm, acc?: Set<string>): Set<string>;
|
|
150
|
+
/** Recoge las variables que aparecen en una fórmula. */
|
|
151
|
+
export declare function formulaVars(f: DLFormula, acc?: Set<string>): Set<string>;
|
|
152
|
+
/** Recoge variables modificadas/leídas por un programa. */
|
|
153
|
+
export declare function programVars(p: HybridProgram, acc?: Set<string>): Set<string>;
|
|
154
|
+
/** Render legible de un término dL. */
|
|
155
|
+
export declare function termToString(t: DLTerm): string;
|
|
156
|
+
/** Render legible de un programa híbrido. */
|
|
157
|
+
export declare function programToString(p: HybridProgram): string;
|
|
158
|
+
/** Render legible de una fórmula dL. */
|
|
159
|
+
export declare function formulaToString(f: DLFormula): string;
|
|
160
|
+
//# sourceMappingURL=ast.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ast.d.ts","sourceRoot":"","sources":["../../../../src/logic/profiles/dl-hybrid/ast.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,261 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// ============================================================
|
|
3
|
+
// ST dL-Hybrid — AST de Differential Dynamic Logic (subset)
|
|
4
|
+
// ============================================================
|
|
5
|
+
// Tipos AST para Differential Dynamic Logic (Platzer 2008/2010),
|
|
6
|
+
// subset suficiente para verificación de sistemas híbridos: estados
|
|
7
|
+
// continuos modelados por ODEs polinomiales y discretos por
|
|
8
|
+
// asignaciones / saltos no deterministas.
|
|
9
|
+
//
|
|
10
|
+
// El AST separa cuatro estratos:
|
|
11
|
+
// • Term — expresiones aritméticas reales sobre variables.
|
|
12
|
+
// • Comparison— átomos del tipo t₁ ⋈ t₂ con ⋈ ∈ {=,≠,<,≤,>,≥}.
|
|
13
|
+
// • DLFormula — fórmulas dL: booleanos + modalidades [α]φ y ⟨α⟩φ.
|
|
14
|
+
// • HybridProgram — programas híbridos (asignación, ODE, secuencia,
|
|
15
|
+
// choice no determinista, test, loop *).
|
|
16
|
+
//
|
|
17
|
+
// El loop α* está limitado a un horizonte finito en la implementación
|
|
18
|
+
// (decidible). Se documenta la limitación abajo.
|
|
19
|
+
// ============================================================
|
|
20
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
21
|
+
exports.ode = exports.loop = exports.choice = exports.seq = exports.test = exports.nondet = exports.assign = exports.diamond = exports.box = exports.iff = exports.implies = exports.orF = exports.andF = exports.notF = exports.falseF = exports.trueF = exports.comp = exports.power = exports.negTerm = exports.divide = exports.times = exports.minus = exports.plus = exports.variable = exports.num = void 0;
|
|
22
|
+
exports.cloneState = cloneState;
|
|
23
|
+
exports.termVars = termVars;
|
|
24
|
+
exports.formulaVars = formulaVars;
|
|
25
|
+
exports.programVars = programVars;
|
|
26
|
+
exports.termToString = termToString;
|
|
27
|
+
exports.programToString = programToString;
|
|
28
|
+
exports.formulaToString = formulaToString;
|
|
29
|
+
// --- constructores cómodos ---
|
|
30
|
+
const num = (value) => ({ kind: 'num', value });
|
|
31
|
+
exports.num = num;
|
|
32
|
+
const variable = (name) => ({ kind: 'var', name });
|
|
33
|
+
exports.variable = variable;
|
|
34
|
+
const plus = (left, right) => ({ kind: 'plus', left, right });
|
|
35
|
+
exports.plus = plus;
|
|
36
|
+
const minus = (left, right) => ({ kind: 'minus', left, right });
|
|
37
|
+
exports.minus = minus;
|
|
38
|
+
const times = (left, right) => ({ kind: 'times', left, right });
|
|
39
|
+
exports.times = times;
|
|
40
|
+
const divide = (left, right) => ({ kind: 'div', left, right });
|
|
41
|
+
exports.divide = divide;
|
|
42
|
+
const negTerm = (arg) => ({ kind: 'neg', arg });
|
|
43
|
+
exports.negTerm = negTerm;
|
|
44
|
+
const power = (base, exp) => ({ kind: 'pow', base, exp });
|
|
45
|
+
exports.power = power;
|
|
46
|
+
const comp = (op, left, right) => ({
|
|
47
|
+
kind: 'comp',
|
|
48
|
+
op,
|
|
49
|
+
left,
|
|
50
|
+
right,
|
|
51
|
+
});
|
|
52
|
+
exports.comp = comp;
|
|
53
|
+
exports.trueF = { kind: 'true' };
|
|
54
|
+
exports.falseF = { kind: 'false' };
|
|
55
|
+
const notF = (arg) => ({ kind: 'not', arg });
|
|
56
|
+
exports.notF = notF;
|
|
57
|
+
const andF = (left, right) => ({
|
|
58
|
+
kind: 'and',
|
|
59
|
+
left,
|
|
60
|
+
right,
|
|
61
|
+
});
|
|
62
|
+
exports.andF = andF;
|
|
63
|
+
const orF = (left, right) => ({ kind: 'or', left, right });
|
|
64
|
+
exports.orF = orF;
|
|
65
|
+
const implies = (left, right) => ({
|
|
66
|
+
kind: 'implies',
|
|
67
|
+
left,
|
|
68
|
+
right,
|
|
69
|
+
});
|
|
70
|
+
exports.implies = implies;
|
|
71
|
+
const iff = (left, right) => ({ kind: 'iff', left, right });
|
|
72
|
+
exports.iff = iff;
|
|
73
|
+
const box = (program, post) => ({
|
|
74
|
+
kind: 'box',
|
|
75
|
+
program,
|
|
76
|
+
post,
|
|
77
|
+
});
|
|
78
|
+
exports.box = box;
|
|
79
|
+
const diamond = (program, post) => ({
|
|
80
|
+
kind: 'diamond',
|
|
81
|
+
program,
|
|
82
|
+
post,
|
|
83
|
+
});
|
|
84
|
+
exports.diamond = diamond;
|
|
85
|
+
const assign = (varName, rhs) => ({
|
|
86
|
+
kind: 'assign',
|
|
87
|
+
varName,
|
|
88
|
+
rhs,
|
|
89
|
+
});
|
|
90
|
+
exports.assign = assign;
|
|
91
|
+
const nondet = (varName) => ({ kind: 'nondet', varName });
|
|
92
|
+
exports.nondet = nondet;
|
|
93
|
+
const test = (cond) => ({ kind: 'test', cond });
|
|
94
|
+
exports.test = test;
|
|
95
|
+
const seq = (left, right) => ({
|
|
96
|
+
kind: 'seq',
|
|
97
|
+
left,
|
|
98
|
+
right,
|
|
99
|
+
});
|
|
100
|
+
exports.seq = seq;
|
|
101
|
+
const choice = (left, right) => ({
|
|
102
|
+
kind: 'choice',
|
|
103
|
+
left,
|
|
104
|
+
right,
|
|
105
|
+
});
|
|
106
|
+
exports.choice = choice;
|
|
107
|
+
const loop = (body) => ({ kind: 'loop', body });
|
|
108
|
+
exports.loop = loop;
|
|
109
|
+
const ode = (system) => ({ kind: 'ode', system });
|
|
110
|
+
exports.ode = ode;
|
|
111
|
+
/** Clona un estado para uso inmutable durante traversal. */
|
|
112
|
+
function cloneState(s) {
|
|
113
|
+
return new Map(s);
|
|
114
|
+
}
|
|
115
|
+
/** Recoge las variables libres en un término. */
|
|
116
|
+
function termVars(t, acc = new Set()) {
|
|
117
|
+
switch (t.kind) {
|
|
118
|
+
case 'num':
|
|
119
|
+
return acc;
|
|
120
|
+
case 'var':
|
|
121
|
+
acc.add(t.name);
|
|
122
|
+
return acc;
|
|
123
|
+
case 'plus':
|
|
124
|
+
case 'minus':
|
|
125
|
+
case 'times':
|
|
126
|
+
case 'div':
|
|
127
|
+
termVars(t.left, acc);
|
|
128
|
+
termVars(t.right, acc);
|
|
129
|
+
return acc;
|
|
130
|
+
case 'neg':
|
|
131
|
+
case 'pow':
|
|
132
|
+
termVars(t.kind === 'neg' ? t.arg : t.base, acc);
|
|
133
|
+
return acc;
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
/** Recoge las variables que aparecen en una fórmula. */
|
|
137
|
+
function formulaVars(f, acc = new Set()) {
|
|
138
|
+
switch (f.kind) {
|
|
139
|
+
case 'true':
|
|
140
|
+
case 'false':
|
|
141
|
+
return acc;
|
|
142
|
+
case 'comp':
|
|
143
|
+
termVars(f.left, acc);
|
|
144
|
+
termVars(f.right, acc);
|
|
145
|
+
return acc;
|
|
146
|
+
case 'not':
|
|
147
|
+
return formulaVars(f.arg, acc);
|
|
148
|
+
case 'and':
|
|
149
|
+
case 'or':
|
|
150
|
+
case 'implies':
|
|
151
|
+
case 'iff':
|
|
152
|
+
formulaVars(f.left, acc);
|
|
153
|
+
formulaVars(f.right, acc);
|
|
154
|
+
return acc;
|
|
155
|
+
case 'box':
|
|
156
|
+
case 'diamond':
|
|
157
|
+
programVars(f.program, acc);
|
|
158
|
+
formulaVars(f.post, acc);
|
|
159
|
+
return acc;
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
/** Recoge variables modificadas/leídas por un programa. */
|
|
163
|
+
function programVars(p, acc = new Set()) {
|
|
164
|
+
switch (p.kind) {
|
|
165
|
+
case 'assign':
|
|
166
|
+
acc.add(p.varName);
|
|
167
|
+
termVars(p.rhs, acc);
|
|
168
|
+
return acc;
|
|
169
|
+
case 'nondet':
|
|
170
|
+
acc.add(p.varName);
|
|
171
|
+
return acc;
|
|
172
|
+
case 'test':
|
|
173
|
+
return formulaVars(p.cond, acc);
|
|
174
|
+
case 'seq':
|
|
175
|
+
case 'choice':
|
|
176
|
+
programVars(p.left, acc);
|
|
177
|
+
programVars(p.right, acc);
|
|
178
|
+
return acc;
|
|
179
|
+
case 'loop':
|
|
180
|
+
return programVars(p.body, acc);
|
|
181
|
+
case 'ode':
|
|
182
|
+
for (const eq of p.system.equations) {
|
|
183
|
+
acc.add(eq.varName);
|
|
184
|
+
termVars(eq.rhs, acc);
|
|
185
|
+
}
|
|
186
|
+
if (p.system.domain)
|
|
187
|
+
formulaVars(p.system.domain, acc);
|
|
188
|
+
return acc;
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
/** Render legible de un término dL. */
|
|
192
|
+
function termToString(t) {
|
|
193
|
+
switch (t.kind) {
|
|
194
|
+
case 'num':
|
|
195
|
+
return String(t.value);
|
|
196
|
+
case 'var':
|
|
197
|
+
return t.name;
|
|
198
|
+
case 'plus':
|
|
199
|
+
return `(${termToString(t.left)} + ${termToString(t.right)})`;
|
|
200
|
+
case 'minus':
|
|
201
|
+
return `(${termToString(t.left)} - ${termToString(t.right)})`;
|
|
202
|
+
case 'times':
|
|
203
|
+
return `(${termToString(t.left)} * ${termToString(t.right)})`;
|
|
204
|
+
case 'div':
|
|
205
|
+
return `(${termToString(t.left)} / ${termToString(t.right)})`;
|
|
206
|
+
case 'neg':
|
|
207
|
+
return `-${termToString(t.arg)}`;
|
|
208
|
+
case 'pow':
|
|
209
|
+
return `${termToString(t.base)}^${t.exp}`;
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
/** Render legible de un programa híbrido. */
|
|
213
|
+
function programToString(p) {
|
|
214
|
+
switch (p.kind) {
|
|
215
|
+
case 'assign':
|
|
216
|
+
return `${p.varName} := ${termToString(p.rhs)}`;
|
|
217
|
+
case 'nondet':
|
|
218
|
+
return `${p.varName} := *`;
|
|
219
|
+
case 'test':
|
|
220
|
+
return `?(${formulaToString(p.cond)})`;
|
|
221
|
+
case 'seq':
|
|
222
|
+
return `${programToString(p.left)}; ${programToString(p.right)}`;
|
|
223
|
+
case 'choice':
|
|
224
|
+
return `(${programToString(p.left)} ∪ ${programToString(p.right)})`;
|
|
225
|
+
case 'loop':
|
|
226
|
+
return `(${programToString(p.body)})*`;
|
|
227
|
+
case 'ode': {
|
|
228
|
+
const eqs = p.system.equations
|
|
229
|
+
.map((e) => `${e.varName}' = ${termToString(e.rhs)}`)
|
|
230
|
+
.join(', ');
|
|
231
|
+
const dom = p.system.domain ? ` & ${formulaToString(p.system.domain)}` : '';
|
|
232
|
+
return `{${eqs}${dom}}`;
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
/** Render legible de una fórmula dL. */
|
|
237
|
+
function formulaToString(f) {
|
|
238
|
+
switch (f.kind) {
|
|
239
|
+
case 'true':
|
|
240
|
+
return 'true';
|
|
241
|
+
case 'false':
|
|
242
|
+
return 'false';
|
|
243
|
+
case 'comp':
|
|
244
|
+
return `${termToString(f.left)} ${f.op} ${termToString(f.right)}`;
|
|
245
|
+
case 'not':
|
|
246
|
+
return `¬${formulaToString(f.arg)}`;
|
|
247
|
+
case 'and':
|
|
248
|
+
return `(${formulaToString(f.left)} ∧ ${formulaToString(f.right)})`;
|
|
249
|
+
case 'or':
|
|
250
|
+
return `(${formulaToString(f.left)} ∨ ${formulaToString(f.right)})`;
|
|
251
|
+
case 'implies':
|
|
252
|
+
return `(${formulaToString(f.left)} → ${formulaToString(f.right)})`;
|
|
253
|
+
case 'iff':
|
|
254
|
+
return `(${formulaToString(f.left)} ↔ ${formulaToString(f.right)})`;
|
|
255
|
+
case 'box':
|
|
256
|
+
return `[${programToString(f.program)}] ${formulaToString(f.post)}`;
|
|
257
|
+
case 'diamond':
|
|
258
|
+
return `<${programToString(f.program)}> ${formulaToString(f.post)}`;
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
//# sourceMappingURL=ast.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ast.js","sourceRoot":"","sources":["../../../../src/logic/profiles/dl-hybrid/ast.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import type { Expr as SymExpr } from '../../../runtime/symbolic-diff';
|
|
2
|
+
import type { DLTerm, OdeSystem, State } from './ast';
|
|
3
|
+
/** Convierte un DLTerm en una Expr del motor symbolic-diff. */
|
|
4
|
+
export declare function termToExpr(t: DLTerm): SymExpr;
|
|
5
|
+
/**
|
|
6
|
+
* Resultado de intentar resolver un sistema ODE.
|
|
7
|
+
*
|
|
8
|
+
* `constant` — todos los rhs son constantes (x' = c).
|
|
9
|
+
* `linear` — sistema desacoplado lineal: cada x' = a*x + b con a, b
|
|
10
|
+
* constantes y no involucra otras variables del sistema.
|
|
11
|
+
* `unsupported` — fuera del subset decidible.
|
|
12
|
+
*/
|
|
13
|
+
export type SolutionKind = {
|
|
14
|
+
kind: 'constant';
|
|
15
|
+
rates: Map<string, number>;
|
|
16
|
+
} | {
|
|
17
|
+
kind: 'linear';
|
|
18
|
+
coeffs: Map<string, {
|
|
19
|
+
a: number;
|
|
20
|
+
b: number;
|
|
21
|
+
}>;
|
|
22
|
+
} | {
|
|
23
|
+
kind: 'unsupported';
|
|
24
|
+
reason: string;
|
|
25
|
+
};
|
|
26
|
+
/** Verifica si un término es una constante numérica (con simplificación). */
|
|
27
|
+
export declare function termIsConstant(t: DLTerm): number | null;
|
|
28
|
+
/**
|
|
29
|
+
* Intenta extraer (a, b) tal que `rhs = a*var + b` sobre las constantes
|
|
30
|
+
* (ignora otras variables → en ese caso devuelve null).
|
|
31
|
+
*/
|
|
32
|
+
export declare function termIsLinearIn(t: DLTerm, varName: string): {
|
|
33
|
+
a: number;
|
|
34
|
+
b: number;
|
|
35
|
+
} | null;
|
|
36
|
+
/**
|
|
37
|
+
* Clasifica un sistema ODE en uno de los casos solubles cerrados.
|
|
38
|
+
* El sistema debe ser desacoplado: cada x' = f(x) sólo puede mencionar
|
|
39
|
+
* a la propia variable. Acoplamientos genéricos → unsupported.
|
|
40
|
+
*/
|
|
41
|
+
export declare function classifyOde(system: OdeSystem): SolutionKind;
|
|
42
|
+
/**
|
|
43
|
+
* Calcula el estado tras evolucionar la ODE por tiempo t exacto (sin
|
|
44
|
+
* domain check). Sólo soporta `constant` y `linear`. Para no soportadas
|
|
45
|
+
* lanza error — el caller usa `classifyOde` antes.
|
|
46
|
+
*/
|
|
47
|
+
export declare function flow(system: OdeSystem, initial: State, t: number): State;
|
|
48
|
+
/**
|
|
49
|
+
* Derivada de Lie de un término p a lo largo del campo vectorial f
|
|
50
|
+
* definido por la ODE:
|
|
51
|
+
* L_f(p) = Σᵢ (∂p/∂xᵢ) · fᵢ
|
|
52
|
+
* Si una variable de p no tiene ecuación, su derivada respecto al
|
|
53
|
+
* tiempo es 0 (variable estática).
|
|
54
|
+
*/
|
|
55
|
+
export declare function lieDerivative(p: DLTerm, system: OdeSystem): SymExpr;
|
|
56
|
+
/**
|
|
57
|
+
* Evalúa una Expr de symbolic-diff en un estado concreto. Útil para
|
|
58
|
+
* chequear si la derivada de Lie es ≥ 0 en un punto específico.
|
|
59
|
+
*/
|
|
60
|
+
export declare function evalSym(e: SymExpr, state: State): number;
|
|
61
|
+
//# sourceMappingURL=differential.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"differential.d.ts","sourceRoot":"","sources":["../../../../src/logic/profiles/dl-hybrid/differential.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAE,IAAI,IAAI,OAAO,EAAE,MAAM,gCAAgC,CAAC;AAYtE,OAAO,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAItD,+DAA+D;AAC/D,wBAAgB,UAAU,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAoB7C;AAuCD;;;;;;;GAOG;AACH,MAAM,MAAM,YAAY,GACpB;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,GAChD;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,GACjE;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAE5C,6EAA6E;AAC7E,wBAAgB,cAAc,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAKvD;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAoD1F;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,SAAS,GAAG,YAAY,CA2B3D;AAMD;;;;GAIG;AACH,wBAAgB,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,GAAG,KAAK,CAuBxE;AAID;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,GAAG,OAAO,CAgDnE;AAED;;;GAGG;AACH,wBAAgB,OAAO,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,GAAG,MAAM,CAExD"}
|