X-Git-Url: https://git.martlubbers.net/?a=blobdiff_plain;f=modelchecker%2Fcoord.h;h=014579fe113b3ae0b72fa74026324fd8ba1cb40f;hb=cbf15c012aa6fd764ec9ea20772b6aff6457351b;hp=599b91bc87371a400b1bf88a1c3daab79a965a8f;hpb=5b3e2d9fac13d73c002c412ca39ae3aa4de1950a;p=mc1516pa.git diff --git a/modelchecker/coord.h b/modelchecker/coord.h index 599b91b..014579f 100644 --- a/modelchecker/coord.h +++ b/modelchecker/coord.h @@ -3,12 +3,58 @@ #include "sokoban.h" +typedef struct { + BDDSET varset; + int size; +} variables; + +typedef struct { + BDD bdd; + variables vars; +} state; + +typedef struct lurd { + char c; + struct lurd *next; +} lurd_t; + +typedef struct { + BDD bdd; + variables vars; + lurd_t *lrd; +} state_t; + +typedef struct trans { + BDD bdd; + variables varset; + struct trans *next_rel; +} trans_t; + +typedef struct { + trans_t *rell; + trans_t *relu; + trans_t *relr; + trans_t *reld; +} rels; + typedef enum { LEFT, UP, RIGHT, DOWN } direction; -BDD encode_screen(sokoban_screen *screen); +state *encode_screen(sokoban_screen *screen); + +rels *encode_rel(sokoban_screen *screen); + +int test_trans(state *s, trans_t *t); + +state *encode_goal(sokoban_screen *screen); + +int check_goal(BDD s, BDD g, BDDSET vars); + +int check_visited(BDD s, BDD v, BDDSET vars); + +lurd_t *lappend(lurd_t *l, char c); -BDD encode_rel(sokoban_screen *screen); +state_t *explstate(state *init, rels *rls, state *g); -//int test_relprod(); +int test_relprod(); #endif