libpetri 1.8.5 → 2.1.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/README.md +47 -0
- package/dist/{chunk-B2D5DMTO.js → chunk-B2CV5M3L.js} +228 -9
- package/dist/chunk-B2CV5M3L.js.map +1 -0
- package/dist/chunk-H62Z76FY.js +1346 -0
- package/dist/chunk-H62Z76FY.js.map +1 -0
- package/dist/chunk-RNWTYK5B.js +419 -0
- package/dist/chunk-RNWTYK5B.js.map +1 -0
- package/dist/chunk-SXK2Z45Z.js +50 -0
- package/dist/chunk-SXK2Z45Z.js.map +1 -0
- package/dist/debug/index.d.ts +50 -3
- package/dist/debug/index.js +64 -6
- package/dist/debug/index.js.map +1 -1
- package/dist/doclet/index.d.ts +152 -31
- package/dist/doclet/index.js +458 -57
- package/dist/doclet/index.js.map +1 -1
- package/dist/doclet/resources/petrinet-diagrams.css +640 -7
- package/dist/doclet/resources/petrinet-diagrams.js +7238 -114
- package/dist/dot-exporter-WJMCJEFK.js +8 -0
- package/dist/{event-store-BnyHh3TF.d.ts → event-store-2zkXeQkd.d.ts} +1 -1
- package/dist/export/index.d.ts +18 -4
- package/dist/export/index.js +1 -1
- package/dist/index.d.ts +41 -5
- package/dist/index.js +1221 -35
- package/dist/index.js.map +1 -1
- package/dist/petri-net-BDrj4XZE.d.ts +1461 -0
- package/dist/render-QK57X4TP.js +73 -0
- package/dist/render-QK57X4TP.js.map +1 -0
- package/dist/verification/index.d.ts +3 -144
- package/dist/verification/index.js +30 -1214
- package/dist/verification/index.js.map +1 -1
- package/dist/viewer/index.d.ts +227 -0
- package/dist/viewer/index.js +877 -0
- package/dist/viewer/index.js.map +1 -0
- package/dist/viewer/layout/index.d.ts +200 -0
- package/dist/viewer/layout/index.js +15 -0
- package/dist/viewer/layout/index.js.map +1 -0
- package/dist/viewer/viewer-static.iife.js +3 -0
- package/dist/viewer/viewer.css +759 -0
- package/dist/viewer/viewer.iife.js +7243 -0
- package/package.json +28 -8
- package/dist/chunk-B2D5DMTO.js.map +0 -1
- package/dist/chunk-VQ4XMJTD.js +0 -107
- package/dist/chunk-VQ4XMJTD.js.map +0 -1
- package/dist/dot-exporter-3CVCH6J4.js +0 -8
- package/dist/petri-net-D-GN9g_D.d.ts +0 -570
- /package/dist/{dot-exporter-3CVCH6J4.js.map → dot-exporter-WJMCJEFK.js.map} +0 -0
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import {
|
|
2
|
+
elkLayout,
|
|
3
|
+
foldOrphans,
|
|
4
|
+
parseLibpetriDot,
|
|
5
|
+
replicateShared,
|
|
6
|
+
writeBack
|
|
7
|
+
} from "./chunk-RNWTYK5B.js";
|
|
8
|
+
|
|
9
|
+
// src/viewer/render.ts
|
|
10
|
+
import { instance as vizInstance } from "@viz-js/viz";
|
|
11
|
+
var vizPromise = null;
|
|
12
|
+
function getViz() {
|
|
13
|
+
if (!vizPromise) vizPromise = vizInstance();
|
|
14
|
+
return vizPromise;
|
|
15
|
+
}
|
|
16
|
+
async function renderDotToSvg(dotSource) {
|
|
17
|
+
const viz = await getViz();
|
|
18
|
+
return viz.renderSVGElement(dotSource, { engine: "dot" });
|
|
19
|
+
}
|
|
20
|
+
function fnv1a(input) {
|
|
21
|
+
let h = 2166136261;
|
|
22
|
+
for (let i = 0; i < input.length; i++) {
|
|
23
|
+
h ^= input.charCodeAt(i);
|
|
24
|
+
h = Math.imul(h, 16777619);
|
|
25
|
+
}
|
|
26
|
+
return (h >>> 0).toString(16);
|
|
27
|
+
}
|
|
28
|
+
var PINNED_DOT_CACHE_CAP = 16;
|
|
29
|
+
var pinnedDotCache = /* @__PURE__ */ new Map();
|
|
30
|
+
function getCachedPinnedDot(key) {
|
|
31
|
+
const hit = pinnedDotCache.get(key);
|
|
32
|
+
if (hit !== void 0) {
|
|
33
|
+
pinnedDotCache.delete(key);
|
|
34
|
+
pinnedDotCache.set(key, hit);
|
|
35
|
+
}
|
|
36
|
+
return hit;
|
|
37
|
+
}
|
|
38
|
+
function setCachedPinnedDot(key, value) {
|
|
39
|
+
pinnedDotCache.set(key, value);
|
|
40
|
+
while (pinnedDotCache.size > PINNED_DOT_CACHE_CAP) {
|
|
41
|
+
const oldest = pinnedDotCache.keys().next().value;
|
|
42
|
+
if (oldest === void 0) break;
|
|
43
|
+
pinnedDotCache.delete(oldest);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
function _clearElkLayoutCache() {
|
|
47
|
+
pinnedDotCache.clear();
|
|
48
|
+
}
|
|
49
|
+
async function renderDotToSvgWithElkLayout(dotSource) {
|
|
50
|
+
const key = fnv1a(dotSource);
|
|
51
|
+
let pinnedDot = getCachedPinnedDot(key);
|
|
52
|
+
if (pinnedDot === void 0) {
|
|
53
|
+
const graph = replicateShared(
|
|
54
|
+
foldOrphans(parseLibpetriDot(dotSource), 0.7),
|
|
55
|
+
{ max: Infinity }
|
|
56
|
+
);
|
|
57
|
+
const layout = await elkLayout(graph);
|
|
58
|
+
pinnedDot = writeBack(graph, layout);
|
|
59
|
+
setCachedPinnedDot(key, pinnedDot);
|
|
60
|
+
}
|
|
61
|
+
const viz = await getViz();
|
|
62
|
+
return viz.renderSVGElement(pinnedDot, {
|
|
63
|
+
engine: "nop",
|
|
64
|
+
yInvert: true
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
export {
|
|
68
|
+
_clearElkLayoutCache,
|
|
69
|
+
getViz,
|
|
70
|
+
renderDotToSvg,
|
|
71
|
+
renderDotToSvgWithElkLayout
|
|
72
|
+
};
|
|
73
|
+
//# sourceMappingURL=render-QK57X4TP.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/viewer/render.ts"],"sourcesContent":["/**\n * DOT → SVG rendering for the canonical libpetri viewer.\n *\n * Two render paths:\n *\n * renderDotToSvg(dot) — plain Graphviz `dot` engine.\n * renderDotToSvgWithElkLayout(dot) — C0 pipeline: parse → fold →\n * replicate → ELK → writeBack →\n * Graphviz `neato` with `nop=1`\n * (pin mode). Cached by DOT hash.\n *\n * The ELK path is the default for {@link mount}; the plain-Graphviz path\n * remains as a fallback for callers that want stock layout (or for\n * environments where elkjs isn't installed).\n *\n * @module viewer/render\n */\n\nimport { instance as vizInstance } from '@viz-js/viz';\nimport {\n foldOrphans,\n parseLibpetriDot,\n replicateShared,\n} from './layout/preprocess.js';\nimport { elkLayout, writeBack } from './layout/elk-place.js';\n\ntype Viz = Awaited<ReturnType<typeof vizInstance>>;\n\nlet vizPromise: Promise<Viz> | null = null;\n\n/** Memoize the viz.js instance so the wasm loads only once per page. */\nexport function getViz(): Promise<Viz> {\n if (!vizPromise) vizPromise = vizInstance();\n return vizPromise;\n}\n\n/**\n * Render a DOT source string to an SVGSVGElement using the plain `dot`\n * engine. Deterministic across runs; libpetri exporters emit byte-stable\n * DOT per spec EXP-014 so the same DOT yields the same SVG.\n */\nexport async function renderDotToSvg(dotSource: string): Promise<SVGSVGElement> {\n const viz = await getViz();\n return viz.renderSVGElement(dotSource, { engine: 'dot' });\n}\n\n// ---- C0 / ELK pin-mode cache ---------------------------------------------\n\n/** FNV-1a 32-bit hash. Fast enough that a SHA isn't worth the import. */\nfunction fnv1a(input: string): string {\n let h = 0x811c9dc5;\n for (let i = 0; i < input.length; i++) {\n h ^= input.charCodeAt(i);\n h = Math.imul(h, 0x01000193);\n }\n return (h >>> 0).toString(16);\n}\n\nconst PINNED_DOT_CACHE_CAP = 16;\nconst pinnedDotCache = new Map<string, string>();\n\nfunction getCachedPinnedDot(key: string): string | undefined {\n const hit = pinnedDotCache.get(key);\n if (hit !== undefined) {\n // LRU touch: re-insert moves to most-recent position in Map ordering.\n pinnedDotCache.delete(key);\n pinnedDotCache.set(key, hit);\n }\n return hit;\n}\n\nfunction setCachedPinnedDot(key: string, value: string): void {\n pinnedDotCache.set(key, value);\n while (pinnedDotCache.size > PINNED_DOT_CACHE_CAP) {\n const oldest = pinnedDotCache.keys().next().value;\n if (oldest === undefined) break;\n pinnedDotCache.delete(oldest);\n }\n}\n\n/** Test helper — clears the pinned-DOT LRU cache between mounts. */\nexport function _clearElkLayoutCache(): void {\n pinnedDotCache.clear();\n}\n\n/**\n * Run the C0 layout pipeline against a libpetri DOT source and return the\n * rendered SVG. The expensive steps (preprocess + ELK layout + DOT rewrite)\n * are cached keyed on the input DOT's hash, so re-mounts on the same net\n * structure skip everything except the Graphviz pin-mode draw.\n *\n * Per-tick marking updates do NOT call this — they toggle classes on the\n * already-mounted SVG. ELK only runs when the net structure changes.\n */\nexport async function renderDotToSvgWithElkLayout(\n dotSource: string,\n): Promise<SVGSVGElement> {\n const key = fnv1a(dotSource);\n let pinnedDot = getCachedPinnedDot(key);\n if (pinnedDot === undefined) {\n const graph = replicateShared(\n foldOrphans(parseLibpetriDot(dotSource), 0.7),\n { max: Infinity },\n );\n const layout = await elkLayout(graph);\n pinnedDot = writeBack(graph, layout);\n setCachedPinnedDot(key, pinnedDot);\n }\n const viz = await getViz();\n return viz.renderSVGElement(pinnedDot, {\n engine: 'nop',\n yInvert: true,\n });\n}\n"],"mappings":";;;;;;;;;AAkBA,SAAS,YAAY,mBAAmB;AAUxC,IAAI,aAAkC;AAG/B,SAAS,SAAuB;AACrC,MAAI,CAAC,WAAY,cAAa,YAAY;AAC1C,SAAO;AACT;AAOA,eAAsB,eAAe,WAA2C;AAC9E,QAAM,MAAM,MAAM,OAAO;AACzB,SAAO,IAAI,iBAAiB,WAAW,EAAE,QAAQ,MAAM,CAAC;AAC1D;AAKA,SAAS,MAAM,OAAuB;AACpC,MAAI,IAAI;AACR,WAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;AACrC,SAAK,MAAM,WAAW,CAAC;AACvB,QAAI,KAAK,KAAK,GAAG,QAAU;AAAA,EAC7B;AACA,UAAQ,MAAM,GAAG,SAAS,EAAE;AAC9B;AAEA,IAAM,uBAAuB;AAC7B,IAAM,iBAAiB,oBAAI,IAAoB;AAE/C,SAAS,mBAAmB,KAAiC;AAC3D,QAAM,MAAM,eAAe,IAAI,GAAG;AAClC,MAAI,QAAQ,QAAW;AAErB,mBAAe,OAAO,GAAG;AACzB,mBAAe,IAAI,KAAK,GAAG;AAAA,EAC7B;AACA,SAAO;AACT;AAEA,SAAS,mBAAmB,KAAa,OAAqB;AAC5D,iBAAe,IAAI,KAAK,KAAK;AAC7B,SAAO,eAAe,OAAO,sBAAsB;AACjD,UAAM,SAAS,eAAe,KAAK,EAAE,KAAK,EAAE;AAC5C,QAAI,WAAW,OAAW;AAC1B,mBAAe,OAAO,MAAM;AAAA,EAC9B;AACF;AAGO,SAAS,uBAA6B;AAC3C,iBAAe,MAAM;AACvB;AAWA,eAAsB,4BACpB,WACwB;AACxB,QAAM,MAAM,MAAM,SAAS;AAC3B,MAAI,YAAY,mBAAmB,GAAG;AACtC,MAAI,cAAc,QAAW;AAC3B,UAAM,QAAQ;AAAA,MACZ,YAAY,iBAAiB,SAAS,GAAG,GAAG;AAAA,MAC5C,EAAE,KAAK,SAAS;AAAA,IAClB;AACA,UAAM,SAAS,MAAM,UAAU,KAAK;AACpC,gBAAY,UAAU,OAAO,MAAM;AACnC,uBAAmB,KAAK,SAAS;AAAA,EACnC;AACA,QAAM,MAAM,MAAM,OAAO;AACzB,SAAO,IAAI,iBAAiB,WAAW;AAAA,IACrC,QAAQ;AAAA,IACR,SAAS;AAAA,EACX,CAAC;AACH;","names":[]}
|
|
@@ -1,47 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { b as Transition, a as Place, P as PetriNet, E as EnvironmentPlace, aG as MarkingState, aH as PInvariant, aI as MarkingStateBuilder, aJ as SmtProperty, aK as SmtVerificationResult } from '../petri-net-BDrj4XZE.js';
|
|
2
|
+
export { aL as DeadlockFree, aM as MutualExclusion, aN as PlaceBound, aO as Proven, aP as SmtStatistics, aQ as TokenSupplier, aR as Unknown, aS as Unreachable, aT as Verdict, X as VerificationHarness, Y as VerificationResult, aU as Violated, aV as deadlockFree, aW as isProven, aX as isViolated, aY as mutualExclusion, aZ as pInvariant, a_ as pInvariantToString, a$ as placeBound, b0 as propertyDescription, b1 as unreachable } from '../petri-net-BDrj4XZE.js';
|
|
2
3
|
import { Expr, init, Bool, FuncDecl } from 'z3-solver';
|
|
3
4
|
|
|
4
|
-
/**
|
|
5
|
-
* Immutable snapshot of a Petri net marking for state space analysis.
|
|
6
|
-
*
|
|
7
|
-
* Maps places (by name) to integer token counts. Only stores places with count > 0.
|
|
8
|
-
* Used for invariant computation and structural verification, not runtime execution.
|
|
9
|
-
*/
|
|
10
|
-
declare class MarkingState {
|
|
11
|
-
private readonly tokenCounts;
|
|
12
|
-
private readonly placesByName;
|
|
13
|
-
/** @internal Use {@link MarkingState.builder} or {@link MarkingState.empty} to create instances. */
|
|
14
|
-
constructor(key: symbol, tokenCounts: Map<string, number>, placesByName: Map<string, Place<any>>);
|
|
15
|
-
/** Returns the token count for a place (0 if absent). */
|
|
16
|
-
tokens(place: Place<any>): number;
|
|
17
|
-
/** Checks if a place has at least one token. */
|
|
18
|
-
hasTokens(place: Place<any>): boolean;
|
|
19
|
-
/** Checks if any of the given places has tokens. */
|
|
20
|
-
hasTokensInAny(places: Iterable<Place<any>>): boolean;
|
|
21
|
-
/** Returns all places with tokens > 0. */
|
|
22
|
-
placesWithTokens(): Place<any>[];
|
|
23
|
-
/** Returns the total number of tokens. */
|
|
24
|
-
totalTokens(): number;
|
|
25
|
-
/** Checks if no tokens exist anywhere. */
|
|
26
|
-
isEmpty(): boolean;
|
|
27
|
-
toString(): string;
|
|
28
|
-
static empty(): MarkingState;
|
|
29
|
-
static builder(): MarkingStateBuilder;
|
|
30
|
-
}
|
|
31
|
-
declare class MarkingStateBuilder {
|
|
32
|
-
private readonly tokenCounts;
|
|
33
|
-
private readonly placesByName;
|
|
34
|
-
/** Sets the token count for a place. */
|
|
35
|
-
tokens(place: Place<any>, count: number): this;
|
|
36
|
-
/** Adds tokens to a place. */
|
|
37
|
-
addTokens(place: Place<any>, count: number): this;
|
|
38
|
-
/** Removes tokens from a place. Throws if insufficient. */
|
|
39
|
-
removeTokens(place: Place<any>, count: number): this;
|
|
40
|
-
/** Copies all token counts from another marking state. */
|
|
41
|
-
copyFrom(other: MarkingState): this;
|
|
42
|
-
build(): MarkingState;
|
|
43
|
-
}
|
|
44
|
-
|
|
45
5
|
/**
|
|
46
6
|
* A flattened transition with pre/post vectors for SMT encoding.
|
|
47
7
|
*
|
|
@@ -166,27 +126,6 @@ declare function bounded$1(maxTokens: number): EnvironmentAnalysisMode$1;
|
|
|
166
126
|
*/
|
|
167
127
|
declare function flatten(net: PetriNet, environmentPlaces?: Set<EnvironmentPlace<any>>, environmentMode?: EnvironmentAnalysisMode$1): FlatNet;
|
|
168
128
|
|
|
169
|
-
/**
|
|
170
|
-
* A P-invariant (place invariant) of a Petri net.
|
|
171
|
-
*
|
|
172
|
-
* A P-invariant is a vector y such that y^T * C = 0, where C is the
|
|
173
|
-
* incidence matrix. This means that for any reachable marking M:
|
|
174
|
-
* sum(y_i * M_i) = constant, where constant = sum(y_i * M0_i).
|
|
175
|
-
*
|
|
176
|
-
* P-invariants provide structural bounds on places and are used as
|
|
177
|
-
* strengthening lemmas for the IC3/PDR engine.
|
|
178
|
-
*/
|
|
179
|
-
interface PInvariant {
|
|
180
|
-
/** Weight vector (one entry per place index). */
|
|
181
|
-
readonly weights: readonly number[];
|
|
182
|
-
/** The invariant value sum(y_i * M0_i). */
|
|
183
|
-
readonly constant: number;
|
|
184
|
-
/** Set of place indices where weight != 0. */
|
|
185
|
-
readonly support: ReadonlySet<number>;
|
|
186
|
-
}
|
|
187
|
-
declare function pInvariant(weights: number[], constant: number, support: Set<number>): PInvariant;
|
|
188
|
-
declare function pInvariantToString(inv: PInvariant): string;
|
|
189
|
-
|
|
190
129
|
/**
|
|
191
130
|
* @module p-invariant-computer
|
|
192
131
|
*
|
|
@@ -285,86 +224,6 @@ declare function findMinimalSiphons(flatNet: FlatNet): ReadonlySet<number>[];
|
|
|
285
224
|
*/
|
|
286
225
|
declare function findMaximalTrapIn(flatNet: FlatNet, places: ReadonlySet<number>): ReadonlySet<number>;
|
|
287
226
|
|
|
288
|
-
/**
|
|
289
|
-
* Safety properties that can be verified via IC3/PDR.
|
|
290
|
-
*
|
|
291
|
-
* Each property is encoded as an error condition: if a reachable state
|
|
292
|
-
* violates the property, Spacer finds a counterexample. If no violation
|
|
293
|
-
* is reachable, the property is proven.
|
|
294
|
-
*/
|
|
295
|
-
type SmtProperty = DeadlockFree | MutualExclusion | PlaceBound | Unreachable;
|
|
296
|
-
/** Deadlock-freedom: no reachable marking has all transitions disabled. */
|
|
297
|
-
interface DeadlockFree {
|
|
298
|
-
readonly type: 'deadlock-free';
|
|
299
|
-
}
|
|
300
|
-
/** Mutual exclusion: two places never have tokens simultaneously. */
|
|
301
|
-
interface MutualExclusion {
|
|
302
|
-
readonly type: 'mutual-exclusion';
|
|
303
|
-
readonly p1: Place<any>;
|
|
304
|
-
readonly p2: Place<any>;
|
|
305
|
-
}
|
|
306
|
-
/** Place bound: a place never exceeds a given token count. */
|
|
307
|
-
interface PlaceBound {
|
|
308
|
-
readonly type: 'place-bound';
|
|
309
|
-
readonly place: Place<any>;
|
|
310
|
-
readonly bound: number;
|
|
311
|
-
}
|
|
312
|
-
/** Unreachability: the given places never all have tokens simultaneously. */
|
|
313
|
-
interface Unreachable {
|
|
314
|
-
readonly type: 'unreachable';
|
|
315
|
-
readonly places: ReadonlySet<Place<any>>;
|
|
316
|
-
}
|
|
317
|
-
declare function deadlockFree(): DeadlockFree;
|
|
318
|
-
declare function mutualExclusion(p1: Place<any>, p2: Place<any>): MutualExclusion;
|
|
319
|
-
declare function placeBound(place: Place<any>, bound: number): PlaceBound;
|
|
320
|
-
declare function unreachable(places: ReadonlySet<Place<any>>): Unreachable;
|
|
321
|
-
/** Human-readable description of a property. */
|
|
322
|
-
declare function propertyDescription(prop: SmtProperty): string;
|
|
323
|
-
|
|
324
|
-
/**
|
|
325
|
-
* Verification verdict.
|
|
326
|
-
*/
|
|
327
|
-
type Verdict = Proven | Violated | Unknown;
|
|
328
|
-
/** Property proven safe. No reachable state violates it. */
|
|
329
|
-
interface Proven {
|
|
330
|
-
readonly type: 'proven';
|
|
331
|
-
readonly method: string;
|
|
332
|
-
readonly inductiveInvariant: string | null;
|
|
333
|
-
}
|
|
334
|
-
/** Property violated. A counterexample trace is available. */
|
|
335
|
-
interface Violated {
|
|
336
|
-
readonly type: 'violated';
|
|
337
|
-
}
|
|
338
|
-
/** Could not determine. */
|
|
339
|
-
interface Unknown {
|
|
340
|
-
readonly type: 'unknown';
|
|
341
|
-
readonly reason: string;
|
|
342
|
-
}
|
|
343
|
-
/**
|
|
344
|
-
* Solver statistics.
|
|
345
|
-
*/
|
|
346
|
-
interface SmtStatistics {
|
|
347
|
-
readonly places: number;
|
|
348
|
-
readonly transitions: number;
|
|
349
|
-
readonly invariantsFound: number;
|
|
350
|
-
readonly structuralResult: string;
|
|
351
|
-
}
|
|
352
|
-
/**
|
|
353
|
-
* Result of SMT-based verification.
|
|
354
|
-
*/
|
|
355
|
-
interface SmtVerificationResult {
|
|
356
|
-
readonly verdict: Verdict;
|
|
357
|
-
readonly report: string;
|
|
358
|
-
readonly invariants: readonly PInvariant[];
|
|
359
|
-
readonly discoveredInvariants: readonly string[];
|
|
360
|
-
readonly counterexampleTrace: readonly MarkingState[];
|
|
361
|
-
readonly counterexampleTransitions: readonly string[];
|
|
362
|
-
readonly elapsedMs: number;
|
|
363
|
-
readonly statistics: SmtStatistics;
|
|
364
|
-
}
|
|
365
|
-
declare function isProven(result: SmtVerificationResult): boolean;
|
|
366
|
-
declare function isViolated(result: SmtVerificationResult): boolean;
|
|
367
|
-
|
|
368
227
|
/**
|
|
369
228
|
* IC3/PDR-based safety verifier for Petri nets using Z3's Spacer engine.
|
|
370
229
|
*
|
|
@@ -702,4 +561,4 @@ declare class TimePetriNetAnalyzerBuilder {
|
|
|
702
561
|
build(): TimePetriNetAnalyzer;
|
|
703
562
|
}
|
|
704
563
|
|
|
705
|
-
export { type EnvironmentAnalysisMode as AnalysisEnvironmentMode, type BranchEdge, DBM, type
|
|
564
|
+
export { type EnvironmentAnalysisMode as AnalysisEnvironmentMode, type BranchEdge, DBM, type DecodedTrace, type EncodingResult, type EnvironmentAnalysisMode$1 as EnvironmentAnalysisMode, type FlatNet, type FlatTransition, IncidenceMatrix, type LivenessResult, MarkingState, MarkingStateBuilder, PInvariant, type QueryProven, type QueryResult, type QueryUnknown, type QueryViolated, SmtProperty, SmtVerificationResult, SmtVerifier, type SpacerContext, StateClass, StateClassGraph, type StructuralCheckResult, TimePetriNetAnalyzer, TimePetriNetAnalyzerBuilder, type XorBranchAnalysis, type XorBranchInfo, alwaysAvailable as analysisAlwaysAvailable, bounded as analysisBounded, ignore as analysisIgnore, bounded$1 as bounded, computePInvariants, computeSCCs, createSpacerRunner, decode, encode, findMaximalTrapIn, findMinimalSiphons, findTerminalSCCs, flatNetIndexOf, flatNetPlaceCount, flatNetTransitionCount, flatTransition, flatten, isCoveredByInvariants, structuralCheck, unbounded };
|