Refactor + tests (#6)
- Minor codebase clean-up - Slight reorganisation of examples + tests so that we don't break stuff by accident - CI tests
This commit was merged in pull request #6.
This commit is contained in:
8
tests/expected/tgc4_mc.txt
Normal file
8
tests/expected/tgc4_mc.txt
Normal file
@@ -0,0 +1,8 @@
|
||||
Using BDD-based Bounded Model Checking
|
||||
Formula (((EF(E< proc0.allowed >X(proc0.in)) AND EF(E< proc1.allowed >X(proc1.in))) AND EF(E< proc2.allowed >X(proc2.in))) AND EF(E< proc3.allowed >X(proc3.in))) holds
|
||||
Using BDD-based Bounded Model Checking
|
||||
Formula EF((((proc0.approach AND proc1.approach) AND proc2.approach) AND proc3.approach)) holds
|
||||
Using BDD-based Bounded Model Checking
|
||||
Formula AG((proc0.in IMPLIES K[proc0](((~proc1.in AND ~proc2.in) AND ~proc3.in)))) holds
|
||||
Using BDD-based Bounded Model Checking
|
||||
Formula AG((proc0.in IMPLIES C[proc0 proc1 proc2 proc3](((~proc1.in AND ~proc2.in) AND ~proc3.in)))) holds
|
||||
58
tests/expected/tgc4_print.txt
Normal file
58
tests/expected/tgc4_print.txt
Normal file
@@ -0,0 +1,58 @@
|
||||
# Context entities: out allowed
|
||||
# Reactions:
|
||||
|
||||
. proc = "proc0":
|
||||
* (R={ out },I={ },P={ approach })
|
||||
* (R={ approach },I={ req },P={ req })
|
||||
* (R={ allowed },I={ },P={ in })
|
||||
* (R={ in },I={ },P={ out leave })
|
||||
* (R={ req },I={ in },P={ req })
|
||||
|
||||
. proc = "proc1":
|
||||
* (R={ out },I={ },P={ approach })
|
||||
* (R={ approach },I={ req },P={ req })
|
||||
* (R={ allowed },I={ },P={ in })
|
||||
* (R={ in },I={ },P={ out leave })
|
||||
* (R={ req },I={ in },P={ req })
|
||||
|
||||
. proc = "proc2":
|
||||
* (R={ out },I={ },P={ approach })
|
||||
* (R={ approach },I={ req },P={ req })
|
||||
* (R={ allowed },I={ },P={ in })
|
||||
* (R={ in },I={ },P={ out leave })
|
||||
* (R={ req },I={ in },P={ req })
|
||||
|
||||
. proc = "proc3":
|
||||
* (R={ out },I={ },P={ approach })
|
||||
* (R={ approach },I={ req },P={ req })
|
||||
* (R={ allowed },I={ },P={ in })
|
||||
* (R={ in },I={ },P={ out leave })
|
||||
* (R={ req },I={ in },P={ req })
|
||||
|
||||
# Context Automaton States:
|
||||
= Init state: init
|
||||
* init
|
||||
* green
|
||||
* red
|
||||
* T
|
||||
# Context Automaton Transitions:
|
||||
* [init -> green]: { proc0={ out } proc1={ out } proc2={ out } proc3={ out } }
|
||||
* [green -> red]: { proc0={ allowed } } proc0.req
|
||||
* [green -> red]: { proc1={ allowed } } proc1.req
|
||||
* [green -> red]: { proc2={ allowed } } proc2.req
|
||||
* [green -> red]: { proc3={ allowed } } proc3.req
|
||||
* [green -> green]: { proc0={ } } (((~proc0.req AND ~proc1.req) AND ~proc2.req) AND ~proc3.req)
|
||||
* [green -> green]: { proc1={ } } (((~proc0.req AND ~proc1.req) AND ~proc2.req) AND ~proc3.req)
|
||||
* [green -> green]: { proc2={ } } (((~proc0.req AND ~proc1.req) AND ~proc2.req) AND ~proc3.req)
|
||||
* [green -> green]: { proc3={ } } (((~proc0.req AND ~proc1.req) AND ~proc2.req) AND ~proc3.req)
|
||||
* [red -> green]: { proc0={ } } proc0.leave
|
||||
* [red -> green]: { proc1={ } } proc1.leave
|
||||
* [red -> green]: { proc2={ } } proc2.leave
|
||||
* [red -> green]: { proc3={ } } proc3.leave
|
||||
* [red -> red]: { proc0={ } } (((~proc0.leave AND ~proc1.leave) AND ~proc2.leave) AND ~proc3.leave)
|
||||
* [red -> red]: { proc1={ } } (((~proc0.leave AND ~proc1.leave) AND ~proc2.leave) AND ~proc3.leave)
|
||||
* [red -> red]: { proc2={ } } (((~proc0.leave AND ~proc1.leave) AND ~proc2.leave) AND ~proc3.leave)
|
||||
* [red -> red]: { proc3={ } } (((~proc0.leave AND ~proc1.leave) AND ~proc2.leave) AND ~proc3.leave)
|
||||
* [green -> T]: { } ~((((((((true OR proc0.req) OR proc1.req) OR proc2.req) OR proc3.req) OR (((~proc0.req AND ~proc1.req) AND ~proc2.req) AND ~proc3.req)) OR (((~proc0.req AND ~proc1.req) AND ~proc2.req) AND ~proc3.req)) OR (((~proc0.req AND ~proc1.req) AND ~proc2.req) AND ~proc3.req)) OR (((~proc0.req AND ~proc1.req) AND ~proc2.req) AND ~proc3.req))
|
||||
* [red -> T]: { } ~((((((((true OR proc0.leave) OR proc1.leave) OR proc2.leave) OR proc3.leave) OR (((~proc0.leave AND ~proc1.leave) AND ~proc2.leave) AND ~proc3.leave)) OR (((~proc0.leave AND ~proc1.leave) AND ~proc2.leave) AND ~proc3.leave)) OR (((~proc0.leave AND ~proc1.leave) AND ~proc2.leave) AND ~proc3.leave)) OR (((~proc0.leave AND ~proc1.leave) AND ~proc2.leave) AND ~proc3.leave))
|
||||
* [T -> T]: { }
|
||||
80
tests/expected/tgc4_states.txt
Normal file
80
tests/expected/tgc4_states.txt
Normal file
@@ -0,0 +1,80 @@
|
||||
{ proc0={ req } proc1={ approach } proc2={ req } proc3={ out leave } }
|
||||
{ proc0={ req } proc1={ req } proc2={ approach } proc3={ out leave } }
|
||||
{ proc0={ req } proc1={ req } proc2={ req } proc3={ out leave } }
|
||||
{ proc0={ approach } proc1={ approach } proc2={ req } proc3={ out leave } }
|
||||
{ proc0={ approach } proc1={ req } proc2={ req } proc3={ out leave } }
|
||||
{ proc0={ approach } proc1={ approach } proc2={ req in } proc3={ approach } }
|
||||
{ proc0={ approach } proc1={ req } proc2={ out leave } proc3={ req } }
|
||||
{ proc0={ approach } proc1={ req } proc2={ req in } proc3={ approach } }
|
||||
{ proc0={ req } proc1={ approach } proc2={ approach } proc3={ out leave } }
|
||||
{ proc0={ approach } proc1={ approach } proc2={ approach } proc3={ out leave } }
|
||||
{ proc0={ req } proc1={ approach } proc2={ req in } proc3={ req } }
|
||||
{ proc0={ approach } proc1={ req } proc2={ approach } proc3={ out leave } }
|
||||
{ proc0={ req } proc1={ approach } proc2={ req } proc3={ req in } }
|
||||
{ proc0={ approach } proc1={ req } proc2={ req in } proc3={ req } }
|
||||
{ proc0={ req } proc1={ approach } proc2={ out leave } proc3={ approach } }
|
||||
{ proc0={ req in } proc1={ approach } proc2={ req } proc3={ req } }
|
||||
{ proc0={ approach } proc1={ approach } proc2={ approach } proc3={ req in } }
|
||||
{ proc0={ req } proc1={ req } proc2={ out leave } proc3={ req } }
|
||||
{ proc0={ req } proc1={ approach } proc2={ out leave } proc3={ req } }
|
||||
{ proc0={ req } proc1={ req } proc2={ req in } proc3={ approach } }
|
||||
{ proc0={ approach } proc1={ approach } proc2={ out leave } proc3={ req } }
|
||||
{ proc0={ req } proc1={ req } proc2={ req in } proc3={ req } }
|
||||
{ proc0={ req } proc1={ approach } proc2={ req in } proc3={ approach } }
|
||||
{ proc0={ approach } proc1={ req } proc2={ out leave } proc3={ approach } }
|
||||
{ proc0={ req } proc1={ req } proc2={ out leave } proc3={ approach } }
|
||||
{ proc0={ } proc1={ } proc2={ } proc3={ } }
|
||||
{ proc0={ approach } proc1={ approach } proc2={ out leave } proc3={ approach } }
|
||||
{ proc0={ approach } proc1={ approach } proc2={ req in } proc3={ req } }
|
||||
{ proc0={ req } proc1={ approach } proc2={ approach } proc3={ req in } }
|
||||
{ proc0={ req in } proc1={ req } proc2={ approach } proc3={ req } }
|
||||
{ proc0={ req in } proc1={ approach } proc2={ approach } proc3={ approach } }
|
||||
{ proc0={ req } proc1={ req in } proc2={ req } proc3={ req } }
|
||||
{ proc0={ req in } proc1={ req } proc2={ approach } proc3={ approach } }
|
||||
{ proc0={ req } proc1={ req } proc2={ req } proc3={ req in } }
|
||||
{ proc0={ approach } proc1={ req } proc2={ req } proc3={ req in } }
|
||||
{ proc0={ approach } proc1={ approach } proc2={ req } proc3={ req in } }
|
||||
{ proc0={ out leave } proc1={ req } proc2={ approach } proc3={ approach } }
|
||||
{ proc0={ req in } proc1={ req } proc2={ req } proc3={ req } }
|
||||
{ proc0={ out leave } proc1={ req } proc2={ req } proc3={ approach } }
|
||||
{ proc0={ req } proc1={ req } proc2={ approach } proc3={ req in } }
|
||||
{ proc0={ req in } proc1={ approach } proc2={ approach } proc3={ req } }
|
||||
{ proc0={ req } proc1={ approach } proc2={ approach } proc3={ req } }
|
||||
{ proc0={ req in } proc1={ approach } proc2={ req } proc3={ approach } }
|
||||
{ proc0={ out leave } proc1={ approach } proc2={ req } proc3={ req } }
|
||||
{ proc0={ approach } proc1={ req } proc2={ approach } proc3={ req in } }
|
||||
{ proc0={ out leave } proc1={ req } proc2={ approach } proc3={ req } }
|
||||
{ proc0={ req } proc1={ out leave } proc2={ req } proc3={ req } }
|
||||
{ proc0={ req } proc1={ approach } proc2={ req } proc3={ req } }
|
||||
{ proc0={ out leave } proc1={ req } proc2={ req } proc3={ req } }
|
||||
{ proc0={ approach } proc1={ req in } proc2={ approach } proc3={ approach } }
|
||||
{ proc0={ out leave } proc1={ approach } proc2={ approach } proc3={ approach } }
|
||||
{ proc0={ approach } proc1={ approach } proc2={ approach } proc3={ approach } }
|
||||
{ proc0={ approach } proc1={ req } proc2={ req } proc3={ req } }
|
||||
{ proc0={ approach } proc1={ out leave } proc2={ approach } proc3={ approach } }
|
||||
{ proc0={ approach } proc1={ req } proc2={ approach } proc3={ approach } }
|
||||
{ proc0={ approach } proc1={ out leave } proc2={ req } proc3={ req } }
|
||||
{ proc0={ req } proc1={ out leave } proc2={ approach } proc3={ req } }
|
||||
{ proc0={ approach } proc1={ out leave } proc2={ approach } proc3={ req } }
|
||||
{ proc0={ approach } proc1={ req in } proc2={ req } proc3={ req } }
|
||||
{ proc0={ out leave } proc1={ approach } proc2={ req } proc3={ approach } }
|
||||
{ proc0={ approach } proc1={ approach } proc2={ req } proc3={ req } }
|
||||
{ proc0={ out leave } proc1={ approach } proc2={ approach } proc3={ req } }
|
||||
{ proc0={ req in } proc1={ req } proc2={ req } proc3={ approach } }
|
||||
{ proc0={ approach } proc1={ approach } proc2={ approach } proc3={ req } }
|
||||
{ proc0={ req } proc1={ req } proc2={ approach } proc3={ req } }
|
||||
{ proc0={ approach } proc1={ req } proc2={ req } proc3={ approach } }
|
||||
{ proc0={ req } proc1={ approach } proc2={ approach } proc3={ approach } }
|
||||
{ proc0={ approach } proc1={ req in } proc2={ approach } proc3={ req } }
|
||||
{ proc0={ approach } proc1={ approach } proc2={ req } proc3={ approach } }
|
||||
{ proc0={ approach } proc1={ req in } proc2={ req } proc3={ approach } }
|
||||
{ proc0={ req } proc1={ approach } proc2={ req } proc3={ approach } }
|
||||
{ proc0={ req } proc1={ req in } proc2={ approach } proc3={ req } }
|
||||
{ proc0={ approach } proc1={ req } proc2={ approach } proc3={ req } }
|
||||
{ proc0={ req } proc1={ req in } proc2={ approach } proc3={ approach } }
|
||||
{ proc0={ req } proc1={ out leave } proc2={ approach } proc3={ approach } }
|
||||
{ proc0={ req } proc1={ req } proc2={ approach } proc3={ approach } }
|
||||
{ proc0={ approach } proc1={ out leave } proc2={ req } proc3={ approach } }
|
||||
{ proc0={ req } proc1={ out leave } proc2={ req } proc3={ approach } }
|
||||
{ proc0={ req } proc1={ req in } proc2={ req } proc3={ approach } }
|
||||
{ proc0={ req } proc1={ req } proc2={ req } proc3={ approach } }
|
||||
8
tests/expected/tgc_mc.txt
Normal file
8
tests/expected/tgc_mc.txt
Normal file
@@ -0,0 +1,8 @@
|
||||
Using BDD-based Bounded Model Checking
|
||||
Formula ((EF(E< proc0.allowed >X(proc0.in)) AND EF(E< proc1.allowed >X(proc1.in))) AND EF(E< proc2.allowed >X(proc2.in))) holds
|
||||
Using BDD-based Bounded Model Checking
|
||||
Formula EF(((proc0.approach AND proc1.approach) AND proc2.approach)) holds
|
||||
Using BDD-based Bounded Model Checking
|
||||
Formula AG((proc0.in IMPLIES K[proc0]((~proc1.in AND ~proc2.in)))) holds
|
||||
Using BDD-based Bounded Model Checking
|
||||
Formula AG((proc0.in IMPLIES C[proc0 proc1 proc2]((~proc1.in AND ~proc2.in)))) holds
|
||||
47
tests/expected/tgc_print.txt
Normal file
47
tests/expected/tgc_print.txt
Normal file
@@ -0,0 +1,47 @@
|
||||
# Context entities: out allowed
|
||||
# Reactions:
|
||||
|
||||
. proc = "proc0":
|
||||
* (R={ out },I={ },P={ approach })
|
||||
* (R={ approach },I={ req },P={ req })
|
||||
* (R={ allowed },I={ },P={ in })
|
||||
* (R={ in },I={ },P={ out leave })
|
||||
* (R={ req },I={ in },P={ req })
|
||||
|
||||
. proc = "proc1":
|
||||
* (R={ out },I={ },P={ approach })
|
||||
* (R={ approach },I={ req },P={ req })
|
||||
* (R={ allowed },I={ },P={ in })
|
||||
* (R={ in },I={ },P={ out leave })
|
||||
* (R={ req },I={ in },P={ req })
|
||||
|
||||
. proc = "proc2":
|
||||
* (R={ out },I={ },P={ approach })
|
||||
* (R={ approach },I={ req },P={ req })
|
||||
* (R={ allowed },I={ },P={ in })
|
||||
* (R={ in },I={ },P={ out leave })
|
||||
* (R={ req },I={ in },P={ req })
|
||||
|
||||
# Context Automaton States:
|
||||
= Init state: init
|
||||
* init
|
||||
* green
|
||||
* red
|
||||
* T
|
||||
# Context Automaton Transitions:
|
||||
* [init -> green]: { proc0={ out } proc1={ out } proc2={ out } }
|
||||
* [green -> red]: { proc0={ allowed } } proc0.req
|
||||
* [green -> red]: { proc1={ allowed } } proc1.req
|
||||
* [green -> red]: { proc2={ allowed } } proc2.req
|
||||
* [green -> green]: { proc0={ } } ((~proc0.req AND ~proc1.req) AND ~proc2.req)
|
||||
* [green -> green]: { proc1={ } } ((~proc0.req AND ~proc1.req) AND ~proc2.req)
|
||||
* [green -> green]: { proc2={ } } ((~proc0.req AND ~proc1.req) AND ~proc2.req)
|
||||
* [red -> green]: { proc0={ } } proc0.leave
|
||||
* [red -> green]: { proc1={ } } proc1.leave
|
||||
* [red -> green]: { proc2={ } } proc2.leave
|
||||
* [red -> red]: { proc0={ } } ((~proc0.leave AND ~proc1.leave) AND ~proc2.leave)
|
||||
* [red -> red]: { proc1={ } } ((~proc0.leave AND ~proc1.leave) AND ~proc2.leave)
|
||||
* [red -> red]: { proc2={ } } ((~proc0.leave AND ~proc1.leave) AND ~proc2.leave)
|
||||
* [green -> T]: { } ~((((((true OR proc0.req) OR proc1.req) OR proc2.req) OR ((~proc0.req AND ~proc1.req) AND ~proc2.req)) OR ((~proc0.req AND ~proc1.req) AND ~proc2.req)) OR ((~proc0.req AND ~proc1.req) AND ~proc2.req))
|
||||
* [red -> T]: { } ~((((((true OR proc0.leave) OR proc1.leave) OR proc2.leave) OR ((~proc0.leave AND ~proc1.leave) AND ~proc2.leave)) OR ((~proc0.leave AND ~proc1.leave) AND ~proc2.leave)) OR ((~proc0.leave AND ~proc1.leave) AND ~proc2.leave))
|
||||
* [T -> T]: { }
|
||||
23
tests/expected/tgc_reactions.txt
Normal file
23
tests/expected/tgc_reactions.txt
Normal file
@@ -0,0 +1,23 @@
|
||||
# Reactions:
|
||||
|
||||
. proc = "proc0":
|
||||
* (R={ out },I={ },P={ approach })
|
||||
* (R={ approach },I={ req },P={ req })
|
||||
* (R={ allowed },I={ },P={ in })
|
||||
* (R={ in },I={ },P={ out leave })
|
||||
* (R={ req },I={ in },P={ req })
|
||||
|
||||
. proc = "proc1":
|
||||
* (R={ out },I={ },P={ approach })
|
||||
* (R={ approach },I={ req },P={ req })
|
||||
* (R={ allowed },I={ },P={ in })
|
||||
* (R={ in },I={ },P={ out leave })
|
||||
* (R={ req },I={ in },P={ req })
|
||||
|
||||
. proc = "proc2":
|
||||
* (R={ out },I={ },P={ approach })
|
||||
* (R={ approach },I={ req },P={ req })
|
||||
* (R={ allowed },I={ },P={ in })
|
||||
* (R={ in },I={ },P={ out leave })
|
||||
* (R={ req },I={ in },P={ req })
|
||||
|
||||
32
tests/expected/tgc_states.txt
Normal file
32
tests/expected/tgc_states.txt
Normal file
@@ -0,0 +1,32 @@
|
||||
{ proc0={ req in } proc1={ req } proc2={ req } }
|
||||
{ proc0={ req in } proc1={ req } proc2={ approach } }
|
||||
{ proc0={ req } proc1={ req in } proc2={ approach } }
|
||||
{ proc0={ req in } proc1={ approach } proc2={ req } }
|
||||
{ proc0={ req in } proc1={ approach } proc2={ approach } }
|
||||
{ proc0={ req } proc1={ req in } proc2={ req } }
|
||||
{ proc0={ approach } proc1={ req in } proc2={ approach } }
|
||||
{ proc0={ approach } proc1={ approach } proc2={ req in } }
|
||||
{ proc0={ approach } proc1={ req in } proc2={ req } }
|
||||
{ proc0={ approach } proc1={ out leave } proc2={ req } }
|
||||
{ proc0={ req } proc1={ approach } proc2={ out leave } }
|
||||
{ proc0={ req } proc1={ req } proc2={ req in } }
|
||||
{ proc0={ approach } proc1={ req } proc2={ req } }
|
||||
{ proc0={ approach } proc1={ req } proc2={ req in } }
|
||||
{ proc0={ out leave } proc1={ req } proc2={ req } }
|
||||
{ proc0={ req } proc1={ approach } proc2={ req in } }
|
||||
{ proc0={ req } proc1={ out leave } proc2={ approach } }
|
||||
{ proc0={ approach } proc1={ out leave } proc2={ approach } }
|
||||
{ proc0={ req } proc1={ req } proc2={ out leave } }
|
||||
{ proc0={ req } proc1={ out leave } proc2={ req } }
|
||||
{ proc0={ } proc1={ } proc2={ } }
|
||||
{ proc0={ req } proc1={ approach } proc2={ req } }
|
||||
{ proc0={ out leave } proc1={ req } proc2={ approach } }
|
||||
{ proc0={ approach } proc1={ req } proc2={ out leave } }
|
||||
{ proc0={ approach } proc1={ approach } proc2={ req } }
|
||||
{ proc0={ req } proc1={ req } proc2={ approach } }
|
||||
{ proc0={ out leave } proc1={ approach } proc2={ req } }
|
||||
{ proc0={ approach } proc1={ req } proc2={ approach } }
|
||||
{ proc0={ approach } proc1={ approach } proc2={ approach } }
|
||||
{ proc0={ approach } proc1={ approach } proc2={ out leave } }
|
||||
{ proc0={ out leave } proc1={ approach } proc2={ approach } }
|
||||
{ proc0={ req } proc1={ approach } proc2={ approach } }
|
||||
17
tests/expected/trivial_print.txt
Normal file
17
tests/expected/trivial_print.txt
Normal file
@@ -0,0 +1,17 @@
|
||||
# Context entities: e1 e4
|
||||
# Reactions:
|
||||
|
||||
. proc = "m":
|
||||
* (R={ e1 e4 },I={ e2 },P={ e1 e2 })
|
||||
* (R={ e2 },I={ e4 },P={ e1 e4 e3 })
|
||||
* (R={ e1 e3 },I={ e2 },P={ e1 e2 })
|
||||
* (R={ e3 },I={ e2 },P={ e1 })
|
||||
|
||||
# Context Automaton States:
|
||||
= Init state: s0
|
||||
* s0
|
||||
* s1
|
||||
# Context Automaton Transitions:
|
||||
* [s0 -> s1]: { m={ e1 e4 } }
|
||||
* [s1 -> s1]: { m={ } }
|
||||
* [s1 -> s1]: { m={ e4 } }
|
||||
8
tests/expected/trivial_reactions.txt
Normal file
8
tests/expected/trivial_reactions.txt
Normal file
@@ -0,0 +1,8 @@
|
||||
# Reactions:
|
||||
|
||||
. proc = "m":
|
||||
* (R={ e1 e4 },I={ e2 },P={ e1 e2 })
|
||||
* (R={ e2 },I={ e4 },P={ e1 e4 e3 })
|
||||
* (R={ e1 e3 },I={ e2 },P={ e1 e2 })
|
||||
* (R={ e3 },I={ e2 },P={ e1 })
|
||||
|
||||
3
tests/expected/trivial_states.txt
Normal file
3
tests/expected/trivial_states.txt
Normal file
@@ -0,0 +1,3 @@
|
||||
{ m={ e1 e4 e3 } }
|
||||
{ m={ e1 e2 } }
|
||||
{ m={ } }
|
||||
Reference in New Issue
Block a user