summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNathanael Sensfelder <SpamShield0@MultiAgentSystems.org>2017-08-15 18:43:56 +0200
committerNathanael Sensfelder <SpamShield0@MultiAgentSystems.org>2017-08-15 18:43:56 +0200
commitbe92d1955a45b81e3d7f4af26497c3d73aa46ceb (patch)
tree1aa263fc71d62f85d59e6bdc142b97bf4bb47e6d
parentb45d145f19c7818db7a890117b089ebf3f891947 (diff)
Partial attr. support, build/run targets, literals
-rw-r--r--Makefile5
-rw-r--r--ast-to-instr/Makefile2
-rw-r--r--ast-to-instr/src/Expressions.java63
-rw-r--r--data/property/cnes/CNE_01700.pro68
-rw-r--r--data/property/cnes/CNE_01800.pro68
-rw-r--r--data/property/cnes/CNE_01900.pro68
-rw-r--r--data/property/cnes/STD_04800.pro88
-rw-r--r--data/property/impossible_processes.pro8
-rw-r--r--data/property/incrementer.pro5
-rw-r--r--data/property/likely_a_clock.pro49
-rw-r--r--data/property/simple_flip_flop.pro34
-rw-r--r--instr-to-kodkod/Makefile4
-rw-r--r--instr-to-kodkod/cfg-to-paths/Makefile2
-rw-r--r--instr-to-kodkod/parser/Makefile2
-rw-r--r--sol-pretty-printer/Makefile2
15 files changed, 401 insertions, 67 deletions
diff --git a/Makefile b/Makefile
index cb755f3..dedb0e3 100644
--- a/Makefile
+++ b/Makefile
@@ -26,6 +26,11 @@ clean:
$(MAKE) -C $(SOLVER) clean
$(MAKE) -C $(PRETTY_PRINTER) clean
+build:
+ $(MAKE) -C $(AST_TO_INSTR) build
+ $(MAKE) -C $(SOLVER) build
+ $(MAKE) -C $(PRETTY_PRINTER) build
+
$(TMP_DIR):
mkdir -p $@
diff --git a/ast-to-instr/Makefile b/ast-to-instr/Makefile
index bb50219..50a953c 100644
--- a/ast-to-instr/Makefile
+++ b/ast-to-instr/Makefile
@@ -49,6 +49,8 @@ CLASSES = $(SOURCES:.java=.class)
$(MODEL_DIR)/structural.mod: $(CLASSES) $(AST_FILE)
$(JAVA) -cp $(CLASSPATH) Main $(AST_FILE) $(MODEL_DIR)
+build: $(CLASSES)
+
clean:
rm -f $(CLASSES)
rm -f $(MODEL_DIR)/*.mod
diff --git a/ast-to-instr/src/Expressions.java b/ast-to-instr/src/Expressions.java
index 90b0fff..c6037d6 100644
--- a/ast-to-instr/src/Expressions.java
+++ b/ast-to-instr/src/Expressions.java
@@ -372,22 +372,57 @@ public class Expressions
/*
grep "Kind.*Literal" ./src/vhdl/nodes_meta.adb | sort | uniq -u
points to:
- "character_literal";
- "enumeration_literal";
- "floating_point_literal";
- "integer_literal";
- "null_literal";
- "overflow_literal";
- "physical_fp_literal";
- "physical_int_literal";
- "physical_literal"; (unsure if it can happen)
- "string_literal8";
-
- They don't all use the same structure, so we're going to handle them
- latter.
+ "character_literal";
+ "enumeration_literal";
+ "floating_point_literal";
+ "integer_literal";
+ "null_literal";
+ "overflow_literal";
+ "physical_fp_literal";
+ "physical_int_literal";
+ "physical_literal"; (unsure if it can happen)
+ "string_literal8";
+
+ They don't all use the same structure, so we're going to handle them
+ later.
+ TODO
*/
- structure.append("l");
+ structure.append("?");
+ elements.add
+ (
+ Strings.get_id_from_string
+ (
+ "l"
+ )
+ );
+
+ }
+ else if (kind.contains("attribute"))
+ {
+ structure.append("(?");
+
+ elements.add
+ (
+ Strings.get_id_from_string
+ (
+ /* FIXME: Kind of a hacky */
+ kind.replace("_attribute", "")
+ )
+ );
+
+ process
+ (
+ elements,
+ structure,
+ (Node) XPE_GET_PREFIX.evaluate
+ (
+ current_node,
+ XPathConstants.NODE
+ )
+ );
+
+ structure.append(")");
}
}
}
diff --git a/data/property/cnes/CNE_01700.pro b/data/property/cnes/CNE_01700.pro
index edbb622..db5e676 100644
--- a/data/property/cnes/CNE_01700.pro
+++ b/data/property/cnes/CNE_01700.pro
@@ -63,12 +63,38 @@
(AF
(and
(kind "if")
- (is_read_structure "(??)")
(or
- (is_read_element "0" "falling_edge")
- (is_read_element "0" "rising_edge")
+ (and
+ (is_read_structure "(??)")
+ (or
+ (is_read_element "0" "falling_edge")
+ (is_read_element "0" "rising_edge")
+ )
+ (is_read_element "1" clk1)
+ )
+ (and
+ (is_read_structure "(?(??)(???))")
+ (is_read_element "0" "and")
+ (is_read_element "1" "event")
+ (is_read_element "2" clk1)
+ (is_read_element "3" "=")
+ (or
+ (is_read_element "4" clk1)
+ (is_read_element "5" clk1)
+ )
+ )
+ (and
+ (is_read_structure "(?(???)(??))")
+ (is_read_element "0" "and")
+ (is_read_element "1" "=")
+ (or
+ (is_read_element "2" clk1)
+ (is_read_element "3" clk1)
+ )
+ (is_read_element "4" "event")
+ (is_read_element "5" clk1)
+ )
)
- (is_read_element "1" clk1)
(EX
(and
(has_option "cond_was_true")
@@ -109,12 +135,38 @@
(and
(not (has_option "cond_was_true"))
(kind "if")
- (is_read_structure "(??)")
(or
- (is_read_element "0" "falling_edge")
- (is_read_element "0" "rising_edge")
+ (and
+ (is_read_structure "(??)")
+ (or
+ (is_read_element "0" "falling_edge")
+ (is_read_element "0" "rising_edge")
+ )
+ (is_read_element "1" clk1)
+ )
+ (and
+ (is_read_structure "(?(??)(???))")
+ (is_read_element "0" "and")
+ (is_read_element "1" "event")
+ (is_read_element "2" clk1)
+ (is_read_element "3" "=")
+ (or
+ (is_read_element "4" clk1)
+ (is_read_element "5" clk1)
+ )
+ )
+ (and
+ (is_read_structure "(?(???)(??))")
+ (is_read_element "0" "and")
+ (is_read_element "1" "=")
+ (or
+ (is_read_element "2" clk1)
+ (is_read_element "3" clk1)
+ )
+ (is_read_element "4" "event")
+ (is_read_element "5" clk1)
+ )
)
- (is_read_element "1" clk1)
(EX
(and
(has_option "cond_was_true")
diff --git a/data/property/cnes/CNE_01800.pro b/data/property/cnes/CNE_01800.pro
index 521cd8a..fe69841 100644
--- a/data/property/cnes/CNE_01800.pro
+++ b/data/property/cnes/CNE_01800.pro
@@ -60,12 +60,38 @@
(AF
(and
(kind "if")
- (is_read_structure "(??)")
(or
- (is_read_element "0" "falling_edge")
- (is_read_element "0" "rising_edge")
+ (and
+ (is_read_structure "(??)")
+ (or
+ (is_read_element "0" "falling_edge")
+ (is_read_element "0" "rising_edge")
+ )
+ (is_read_element "1" clk1)
+ )
+ (and
+ (is_read_structure "(?(??)(???))")
+ (is_read_element "0" "and")
+ (is_read_element "1" "event")
+ (is_read_element "2" clk1)
+ (is_read_element "3" "=")
+ (or
+ (is_read_element "4" clk1)
+ (is_read_element "5" clk1)
+ )
+ )
+ (and
+ (is_read_structure "(?(???)(??))")
+ (is_read_element "0" "and")
+ (is_read_element "1" "=")
+ (or
+ (is_read_element "2" clk1)
+ (is_read_element "3" clk1)
+ )
+ (is_read_element "4" "event")
+ (is_read_element "5" clk1)
+ )
)
- (is_read_element "1" clk1)
(EX
(and
(has_option "cond_was_true")
@@ -106,12 +132,38 @@
(and
(not (has_option "cond_was_true"))
(kind "if")
- (is_read_structure "(??)")
(or
- (is_read_element "0" "falling_edge")
- (is_read_element "0" "rising_edge")
+ (and
+ (is_read_structure "(??)")
+ (or
+ (is_read_element "0" "falling_edge")
+ (is_read_element "0" "rising_edge")
+ )
+ (is_read_element "1" clk1)
+ )
+ (and
+ (is_read_structure "(?(??)(???))")
+ (is_read_element "0" "and")
+ (is_read_element "1" "event")
+ (is_read_element "2" clk1)
+ (is_read_element "3" "=")
+ (or
+ (is_read_element "4" clk1)
+ (is_read_element "5" clk1)
+ )
+ )
+ (and
+ (is_read_structure "(?(???)(??))")
+ (is_read_element "0" "and")
+ (is_read_element "1" "=")
+ (or
+ (is_read_element "2" clk1)
+ (is_read_element "3" clk1)
+ )
+ (is_read_element "4" "event")
+ (is_read_element "5" clk1)
+ )
)
- (is_read_element "1" clk1)
(EX
(and
(has_option "cond_was_true")
diff --git a/data/property/cnes/CNE_01900.pro b/data/property/cnes/CNE_01900.pro
index 6e2beff..51c373f 100644
--- a/data/property/cnes/CNE_01900.pro
+++ b/data/property/cnes/CNE_01900.pro
@@ -22,12 +22,38 @@
(AF
(and
(kind "if")
- (is_read_structure "(??)")
(or
- (is_read_element "0" "falling_edge")
- (is_read_element "0" "rising_edge")
+ (and
+ (is_read_structure "(??)")
+ (or
+ (is_read_element "0" "falling_edge")
+ (is_read_element "0" "rising_edge")
+ )
+ (is_read_element "1" clk1)
+ )
+ (and
+ (is_read_structure "(?(??)(???))")
+ (is_read_element "0" "and")
+ (is_read_element "1" "event")
+ (is_read_element "2" clk1)
+ (is_read_element "3" "=")
+ (or
+ (is_read_element "4" clk1)
+ (is_read_element "5" clk1)
+ )
+ )
+ (and
+ (is_read_structure "(?(???)(??))")
+ (is_read_element "0" "and")
+ (is_read_element "1" "=")
+ (or
+ (is_read_element "2" clk1)
+ (is_read_element "3" clk1)
+ )
+ (is_read_element "4" "event")
+ (is_read_element "5" clk1)
+ )
)
- (is_read_element "1" clk1)
(EX
(and
(has_option "cond_was_true")
@@ -67,12 +93,38 @@
(and
(not (has_option "cond_was_true"))
(kind "if")
- (is_read_structure "(??)")
(or
- (is_read_element "0" "falling_edge")
- (is_read_element "0" "rising_edge")
+ (and
+ (is_read_structure "(??)")
+ (or
+ (is_read_element "0" "falling_edge")
+ (is_read_element "0" "rising_edge")
+ )
+ (is_read_element "1" clk1)
+ )
+ (and
+ (is_read_structure "(?(??)(???))")
+ (is_read_element "0" "and")
+ (is_read_element "1" "event")
+ (is_read_element "2" clk1)
+ (is_read_element "3" "=")
+ (or
+ (is_read_element "4" clk1)
+ (is_read_element "5" clk1)
+ )
+ )
+ (and
+ (is_read_structure "(?(???)(??))")
+ (is_read_element "0" "and")
+ (is_read_element "1" "=")
+ (or
+ (is_read_element "2" clk1)
+ (is_read_element "3" clk1)
+ )
+ (is_read_element "4" "event")
+ (is_read_element "5" clk1)
+ )
)
- (is_read_element "1" clk1)
(EX
(and
(has_option "cond_was_true")
diff --git a/data/property/cnes/STD_04800.pro b/data/property/cnes/STD_04800.pro
index 5f9e817..ae8e4c9 100644
--- a/data/property/cnes/STD_04800.pro
+++ b/data/property/cnes/STD_04800.pro
@@ -6,10 +6,46 @@
(exists ps_re process
(CTL_verifies ps_re
(EF
- (and
- (is_read_structure "(??)")
- (is_read_element "0" "rising_edge")
- (is_read_element "1" wfm)
+ (or
+ (and
+ (is_read_structure "(??)")
+ (is_read_element "0" "rising_edge")
+ (is_read_element "1" wfm)
+ )
+ (and
+ (is_read_structure "(?(??)(???))")
+ (is_read_element "0" "and")
+ (is_read_element "1" "event")
+ (is_read_element "2" wfm)
+ (is_read_element "3" "=")
+ (or
+ (and
+ (is_read_element "4" wfm)
+ (is_read_element "5" "'1'")
+ )
+ (and
+ (is_read_element "4" "'1'")
+ (is_read_element "5" wfm)
+ )
+ )
+ )
+ (and
+ (is_read_structure "(?(???)(??))")
+ (is_read_element "0" "and")
+ (is_read_element "1" "=")
+ (or
+ (and
+ (is_read_element "2" wfm)
+ (is_read_element "3" "'1'")
+ )
+ (and
+ (is_read_element "2" "'1'")
+ (is_read_element "3" wfm)
+ )
+ )
+ (is_read_element "4" "event")
+ (is_read_element "5" wfm)
+ )
)
)
)
@@ -17,10 +53,46 @@
(exists ps_fe process
(CTL_verifies ps_fe
(EF
- (and
- (is_read_structure "(??)")
- (is_read_element "0" "falling_edge")
- (is_read_element "1" wfm)
+ (or
+ (and
+ (is_read_structure "(??)")
+ (is_read_element "0" "falling_edge")
+ (is_read_element "1" wfm)
+ )
+ (and
+ (is_read_structure "(?(??)(???))")
+ (is_read_element "0" "and")
+ (is_read_element "1" "event")
+ (is_read_element "2" wfm)
+ (is_read_element "3" "=")
+ (or
+ (and
+ (is_read_element "4" wfm)
+ (is_read_element "5" "'0'")
+ )
+ (and
+ (is_read_element "4" "'0'")
+ (is_read_element "5" wfm)
+ )
+ )
+ )
+ (and
+ (is_read_structure "(?(???)(??))")
+ (is_read_element "0" "and")
+ (is_read_element "1" "=")
+ (or
+ (and
+ (is_read_element "2" wfm)
+ (is_read_element "3" "'0'")
+ )
+ (and
+ (is_read_element "2" "'0'")
+ (is_read_element "3" wfm)
+ )
+ )
+ (is_read_element "4" "event")
+ (is_read_element "5" wfm)
+ )
)
)
)
diff --git a/data/property/impossible_processes.pro b/data/property/impossible_processes.pro
index a93e916..5a1bc78 100644
--- a/data/property/impossible_processes.pro
+++ b/data/property/impossible_processes.pro
@@ -2,11 +2,9 @@
(
(ps process WHAT_ARE_YOU_DOING)
)
- (forall sl1 waveform
- (CTL_verifies ps
- (not
- (EF (expr_writes sl1))
- )
+ (CTL_verifies ps
+ (not
+ (EF (expr_writes _))
)
)
)
diff --git a/data/property/incrementer.pro b/data/property/incrementer.pro
index 4bc06ae..f119f99 100644
--- a/data/property/incrementer.pro
+++ b/data/property/incrementer.pro
@@ -6,9 +6,10 @@
(CTL_verifies ps
(EF
(and
- (is_read_structure "(??L)")
+ (is_read_structure "(???)")
(is_read_element "0" "+")
- (is_read_element "1" wf)
+ (is_read_element _ wf)
+ (is_read_element _ "L")
)
)
)
diff --git a/data/property/likely_a_clock.pro b/data/property/likely_a_clock.pro
index 2aae4a4..afe4ed3 100644
--- a/data/property/likely_a_clock.pro
+++ b/data/property/likely_a_clock.pro
@@ -6,16 +6,47 @@
(and
(is_waveform_of wf clock)
(exists ps process
- (CTL_verifies ps
- (EF
- (and
- (kind "if")
- (is_read_structure "(??)")
- (or
- (is_read_element "0" "rising_edge")
- (is_read_element "0" "falling_edge")
+ (and
+ (is_accessed_by wf ps)
+ (is_in_sensitivity_list wf ps)
+ (CTL_verifies ps
+ (EF
+ (and
+ (kind "if")
+ (or
+ (and
+ (is_read_structure "(??)")
+ (or
+ (is_read_element "0" "falling_edge")
+ (is_read_element "0" "rising_edge")
+ )
+ (is_read_element "1" wf)
+ )
+ (and
+ (is_read_structure "(?(??)(???))")
+ (is_read_element "0" "and")
+ (is_read_element "1" "event")
+ (is_read_element "2" wf)
+ (is_read_element "3" "=")
+ (or
+ (is_read_element "4" wf)
+ (is_read_element "5" wf)
+ )
+ )
+ (and
+ (is_read_structure "(?(???)(??))")
+ (is_read_element "0" "and")
+ (is_read_element "1" "=")
+ (or
+ (is_read_element "2" wf)
+ (is_read_element "3" wf)
+ )
+ (is_read_element "4" "event")
+ (is_read_element "5" wf)
+ )
+ )
+ )
)
- (is_read_element "1" wf)
)
)
)
diff --git a/data/property/simple_flip_flop.pro b/data/property/simple_flip_flop.pro
index ea67575..e1621c1 100644
--- a/data/property/simple_flip_flop.pro
+++ b/data/property/simple_flip_flop.pro
@@ -11,12 +11,38 @@
(AF
(and
(kind "if")
- (is_read_structure "(??)")
(or
- (is_read_element "0" "falling_edge")
- (is_read_element "0" "rising_edge")
+ (and
+ (is_read_structure "(??)")
+ (or
+ (is_read_element "0" "falling_edge")
+ (is_read_element "0" "rising_edge")
+ )
+ (is_read_element "1" clk)
+ )
+ (and
+ (is_read_structure "(?(??)(???))")
+ (is_read_element "0" "and")
+ (is_read_element "1" "event")
+ (is_read_element "2" clk)
+ (is_read_element "3" "=")
+ (or
+ (is_read_element "4" clk)
+ (is_read_element "5" clk)
+ )
+ )
+ (and
+ (is_read_structure "(?(???)(??))")
+ (is_read_element "0" "and")
+ (is_read_element "1" "=")
+ (or
+ (is_read_element "2" clk)
+ (is_read_element "3" clk)
+ )
+ (is_read_element "4" "event")
+ (is_read_element "5" clk)
+ )
)
- (is_read_element "1" clk)
(EX
(and
(has_option "COND_WAS_TRUE")
diff --git a/instr-to-kodkod/Makefile b/instr-to-kodkod/Makefile
index 1fe4535..dcdada8 100644
--- a/instr-to-kodkod/Makefile
+++ b/instr-to-kodkod/Makefile
@@ -94,6 +94,7 @@ SOLUTION_FILES = $(addprefix $(SOL_DIR)/,$(notdir $(PROPERTY_FILES:.pro=.sol)))
MODEL_FILES = \
$(MODEL_DIR)/structural.mod \
$(MODEL_DIR)/depths.mod \
+ $(MODEL_DIR)/string_to_instr.map \
$(filter-out %structural.mod,$(wildcard $(MODEL_DIR)/cfg_*.mod))
PARSER_SOURCES = $(wildcard parser/*.g4)
PARSER_CLASSES = $(PARSER_SOURCES:.g4=.class)
@@ -102,6 +103,9 @@ export
## Makefile Rules ##############################################################
run: cfg-generator $(PARSER_CLASSES) $(CLASSES) $(SOLUTION_FILES)
+build: $(PARSER_CLASSES) $(CLASSES)
+ $(MAKE) -C cfg-to-paths build
+
cfg-generator:
$(MAKE) -C cfg-to-paths
diff --git a/instr-to-kodkod/cfg-to-paths/Makefile b/instr-to-kodkod/cfg-to-paths/Makefile
index 3fa5e5c..7971c84 100644
--- a/instr-to-kodkod/cfg-to-paths/Makefile
+++ b/instr-to-kodkod/cfg-to-paths/Makefile
@@ -51,6 +51,8 @@ PATH_MODEL_FILES = $(addprefix $(PATH_MODEL_DIR)/,$(notdir $(CFG_MODEL_FILES)))
## Makefile Rules ##############################################################
all: $(PATH_MODEL_DIR) $(PATH_MODEL_FILES) $(CLASSES)
+build: $(CLASSES)
+
%.class: %.java
$(JAVAC) -cp $(CLASSPATH) $<
diff --git a/instr-to-kodkod/parser/Makefile b/instr-to-kodkod/parser/Makefile
index 435a687..d26baf4 100644
--- a/instr-to-kodkod/parser/Makefile
+++ b/instr-to-kodkod/parser/Makefile
@@ -51,7 +51,7 @@ JAVA_SOURCES = $(ANTLR_SOURCES:.g4=.java)
CLASSES = $(JAVA_SOURCES:.java=.class)
CLASSPATH = ".:$(MAIN_PROGRAM_SRC):$(KODKOD_JAR):$(ANTLR_JAR)"
-compile: $(CLASSES)
+build: $(CLASSES)
PropertyParser.java: PropertyLexer.g4 PropertyParser.g4
diff --git a/sol-pretty-printer/Makefile b/sol-pretty-printer/Makefile
index b983157..592bd84 100644
--- a/sol-pretty-printer/Makefile
+++ b/sol-pretty-printer/Makefile
@@ -61,6 +61,8 @@ SOLUTION_PP_PAIRS = \
run: $(SOLUTION_PP_PAIRS) $(MODEL_DIR)/structural.mod $(MODEL_DIR)/string_to_instr.map $(CLASSES)
$(JAVA) -cp $(CLASSPATH) Main $(MODEL_DIR)/structural.mod $(MODEL_DIR)/string_to_instr.map $(SOLUTION_PP_PAIRS)
+build: $(CLASSES)
+
%.class: %.java
$(JAVAC) -cp $(CLASSPATH) $<