Formula | Input format |
---|---|
0 ∈ X | (zeroin X) |
X ⊆ Y | (sub X Y) |
Sing(X) | (sing X) |
Y = Succ(X) | (succ Y X) |
X < Y | (< X Y) |
(A and B denotes formulae)
Formula | Input format |
---|---|
¬A | (neg A) |
A∧B | (and A B) |
A∨B | (or A B) |
A→B | (implies A B) |
∃X.A | (exists X A) |
∀X.A | (forall X A) |
Use syntax similar to syntax for macros in C
#define (my_predicate list_of_arguments) (...)
#define (not_sub X Y) (neg (sub X Y))
(and (not_sub U V) (zeroin V))
python3 main.py [--rabit] [--spot] [--validity]
Use --rabit
for reduction with a simulation using lookahead 10
Requirements: Install Rabit into a parent directory (../RABIT250/Reduce.jar
)
Use --spot
for complementation using external tool
Requirements: Install Spot
Use --validity
to determine validity of the input formula
The final automaton is saved in a.ba
and the graph is in graph.pdf
Formulae used for experiments are in benchmark/
Formula: (x∈Y∧x∉Z) ∨ (x∈Z∧x∉Y)
Input syntax:
(or
(and
(and (sub X Z) (neg (sub X Y)))
(sing X)
)
(and
(sub X Y)
(and (neg (sub X Z)) (sing X))
)
)
a.ba:
[0]
X:1|Y:0|Z:1,[0]->[1]
X:1|Y:1|Z:0,[0]->[1]
X:0|Y:?|Z:?,[1]->[1]
X:0|Y:?|Z:?,[0]->[0]
[1]