summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'instr-to-kodkod')
-rw-r--r--instr-to-kodkod/Makefile11
-rw-r--r--instr-to-kodkod/parser/PropertyLexer.g44
-rw-r--r--instr-to-kodkod/src/Main.java11
-rw-r--r--instr-to-kodkod/src/VariableManager.java2
4 files changed, 24 insertions, 4 deletions
diff --git a/instr-to-kodkod/Makefile b/instr-to-kodkod/Makefile
index b708c16..322205f 100644
--- a/instr-to-kodkod/Makefile
+++ b/instr-to-kodkod/Makefile
@@ -91,6 +91,8 @@ ANTLR_JAR = ${CURDIR}/antlr-4.7-complete.jar
SOURCES = $(wildcard src/*.java)
CLASSES = $(SOURCES:.java=.class)
SOLUTION_FILES = $(addprefix $(SOL_DIR)/,$(notdir $(PROPERTY_FILES:.pro=.sol)))
+DEPENDENCY_FILES = \
+ $(addprefix $(DEPENDENCIES_DIR)/,$(notdir $(PROPERTY_FILES:.pro=.deps)))
MODEL_FILES = \
$(MODEL_DIR)/structural.mod \
$(MODEL_DIR)/depths.mod \
@@ -115,12 +117,14 @@ clean:
$(MAKE) -C cfg-to-paths clean
rm -f $(CLASSES)
rm -f $(SOL_DIR)/*.sol
+ rm -f $(DEPENDENCY_FILES)
clean_model:
$(MAKE) -C cfg-to-paths clean_model
clean_solutions:
rm -f $(SOL_DIR)/*.sol
+ rm -f $(DEPENDENCY_FILES)
########
cfg-generator:
@@ -129,7 +133,8 @@ cfg-generator:
$(PARSER_CLASSES): antlr-4.7-complete.jar kodkod.jar $(PARSER_SOURCES)
$(MAKE) -C parser
-$(SOL_DIR)/%.sol: $(PROPERTY_FILES) $(MODEL_FILES) $(LEVEL_FILES)
+$(SOL_DIR)/%.sol: \
+ $(DEPENDENCIES_DIR)/%.deps $(PROPERTY_FILES) $(MODEL_FILES) $(LEVEL_FILES)
touch $@
$(JAVA) -cp $(CLASSPATH) Main $@ -v \
$(filter %$(basename $(notdir $@)).pro,$(PROPERTY_FILES)) \
@@ -137,6 +142,10 @@ $(SOL_DIR)/%.sol: $(PROPERTY_FILES) $(MODEL_FILES) $(LEVEL_FILES)
$(MODEL_FILES) \
$(wildcard $(PATH_MODEL_DIR)/*.mod)
+$(DEPENDENCY_FILES): $(PROPERTY_FILES)
+ sed -n 's/^#require \"\(.*\)\"$$/\1/p' \
+ $(filter %$(basename $(notdir $@)).pro,$(PROPERTY_FILES)) > $@
+
src/%.class: src/%.java $(PARSER_CLASSES) $(REQUIRED_JARS)
$(JAVAC) -cp $(CLASSPATH) $<
diff --git a/instr-to-kodkod/parser/PropertyLexer.g4 b/instr-to-kodkod/parser/PropertyLexer.g4
index 3b6011d..e100efb 100644
--- a/instr-to-kodkod/parser/PropertyLexer.g4
+++ b/instr-to-kodkod/parser/PropertyLexer.g4
@@ -37,7 +37,7 @@ DEPTH_NO_CHANGE_OPERATOR_KW: ('(NDCB' | '(does_not_change_depth_before') SEP;
WS: SEP;
-ID: [a-zA-Z0-9_]+;
+ID: [a-zA-Z0-9_~]+;
STRING: '"' ~('\r' | '\n' | '"')* '"';
-COMMENT: ';;' .*? '\n' -> channel(HIDDEN);
+COMMENT: (';;'|'#require') .*? '\n' -> channel(HIDDEN);
diff --git a/instr-to-kodkod/src/Main.java b/instr-to-kodkod/src/Main.java
index 11a357a..be5cb21 100644
--- a/instr-to-kodkod/src/Main.java
+++ b/instr-to-kodkod/src/Main.java
@@ -355,10 +355,21 @@ public class Main
solver = new Solver();
solver.options().setSkolemDepth(-1);
+ solver.options().setSymmetryBreaking(0);
solver.options().setSolver(SATFactory.DefaultSAT4J);
if (PARAMETERS.be_verbose())
{
+ System.out.println(bounds);
+ System.out.println
+ (
+ "Final formula:"
+ +
+ property.and
+ (
+ VARIABLE_MANAGER.generate_tagged_variable_constraints()
+ ).toString()
+ );
solver.options().setReporter(new ConsoleReporter());
}
diff --git a/instr-to-kodkod/src/VariableManager.java b/instr-to-kodkod/src/VariableManager.java
index 249b183..fee499e 100644
--- a/instr-to-kodkod/src/VariableManager.java
+++ b/instr-to-kodkod/src/VariableManager.java
@@ -144,7 +144,7 @@ public class VariableManager
for (final TaggedVariable tg: tagged_variables.values())
{
- result = result.and(tg.as_relation.one());
+ result = result.and(tg.as_relation.one());
}
return result;