Skip to content

barbora4/alice

Repository files navigation

Translation of S1S formula to Büchi automaton

Input syntax for S1S formulae

Atomic formulae

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)

Operations over automata

(A and B denotes formulae)

Formula Input format
¬A (neg A)
AB (and A B)
AB (or A B)
AB (implies A B)
X.A (exists X A)
X.A (forall X A)

User-defined predicates

Use syntax similar to syntax for macros in C

#define (my_predicate list_of_arguments) (...)

Example

#define (not_sub X Y) (neg (sub X Y))

(and (not_sub U V) (zeroin V))

Usage

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

Output

The final automaton is saved in a.ba and the graph is in graph.pdf

Experiments

Formulae used for experiments are in benchmark/

Example

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]

graph.pdf:

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published