path extraction
[mc1516pa.git] / modelchecker / coord.h
index 2580d60..014579f 100644 (file)
@@ -3,8 +3,58 @@
 
 #include "sokoban.h"
 
-BDD encode_screen(sokoban_screen *screen);
+typedef struct {
+       BDDSET varset;
+       int size;
+} variables;
 
-BDD encode_rel(sokoban_screen *screen);
+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;
+
+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);
+
+state_t *explstate(state *init, rels *rls, state *g);
+
+int test_relprod();
 
 #endif