37 lines
829 B
Plaintext
37 lines
829 B
Plaintext
// Test: Trace coverage axiom (simplified)
|
|
|
|
theory PetriNet {
|
|
P : Sort;
|
|
T : Sort;
|
|
out : Sort;
|
|
out/src : out -> T;
|
|
out/tgt : out -> P;
|
|
}
|
|
|
|
theory (N : PetriNet instance) Trace {
|
|
F : Sort;
|
|
F/of : F -> N/T;
|
|
|
|
output_terminal : Sort;
|
|
output_terminal/src : output_terminal -> [firing : F, arc : N/out];
|
|
|
|
// Simplified ax5: for every arc and firing, if the arc's source is the firing's transition,
|
|
// create an output terminal
|
|
ax5 : forall f : F, arc : N/out. |- exists o : output_terminal. o output_terminal/src = [firing: f, arc: arc];
|
|
}
|
|
|
|
instance SimpleNet : PetriNet = {
|
|
A : P;
|
|
B : P;
|
|
t : T;
|
|
arc_out : out;
|
|
arc_out out/src = t;
|
|
arc_out out/tgt = B;
|
|
}
|
|
|
|
// Trace with just a firing - chase should create a terminal
|
|
instance TestTrace : SimpleNet Trace = chase {
|
|
f1 : F;
|
|
f1 F/of = SimpleNet/t;
|
|
}
|