Commit graph

15 commits

Author SHA1 Message Date
Alexandre Duret-Lutz
cb83e855a4 Add support for finite behaviors in the DVE interface.
* iface/dve2/dve2.hh (load_dve2): Take a "dead" argument.
* iface/dve2/dve2.cc (callback_context): Add a destructor
to simplify...
(dve2_succ_iterator::~dve2_succ_iterator) ... this one.
(convert_aps): Skip the dead proposition.
(dve2_kripke::dve2_kripke): Take a dead argument, and
setup alive_prop and dead_prop.
(compute_state_condition, get_succ): Use a cache for the
conditions and successor of the last state, to share
some work between these two function.  Add loops on dead
states.
(load_dve2): Pass dead to dve2_kripke and convert_aps.
* iface/dve2/dve2check.cc: Add a -dDEAD option.
* iface/dve2/finite.test, iface/dve2/finite.dve: New file.
* iface/dve2/Makefile.am: Declare them.
2011-03-10 22:37:44 +01:00
Alexandre Duret-Lutz
ef976c93d0 * iface/dve2/dve2.cc (convert_aps): Fix two typos while
parsing >= and >, mistakenly registered as <= and <.
2011-03-10 22:29:56 +01:00
Alexandre Duret-Lutz
8256ae9bfb Accept "P_0 == CS" as synonym for "P_0.CS" in the dve2 interface.
Suggested by Yann Thierry-Mieg.

* iface/dve2/dve2.cc (convert_aps): Allow string on the right
of operators, and look them up.
* iface/dve2/dve2check.test: Test this syntax.
2011-03-07 12:45:37 +01:00
Alexandre Duret-Lutz
5318c1f966 Add some tests for the DVE2 interface.
* iface/dve2/defs.in, iface/dve2/dve2check.test,
iface/dve2/beem-peterson.4.dve: New files.
* iface/dve2/Makefile.am: Add them.
* configure.ac: Generate iface/dve2/defs.
2011-03-07 12:24:32 +01:00
Alexandre Duret-Lutz
0584d278d1 Clear the timer map to help valgrind.
* src/misc/timer.hh (reset_all): New method.
* iface/dve2/dve2check.cc: Use it to help valgrind.
2011-03-07 11:09:53 +01:00
Alexandre Duret-Lutz
e75a73dfb1 Some documentation of about the dve2 interface.
* iface/dve2/README: New file.
* NEWS: Mention it.
* THANKS: Add Michael Weber.
2011-03-07 11:09:53 +01:00
Alexandre Duret-Lutz
76cfd57973 * iface/dve2/dve2.cc, iface/dve2/dve2check.cc: Cosmetic changes
to please sanity checks.
2011-03-07 11:09:53 +01:00
Alexandre Duret-Lutz
51e6989d91 Call divine to compile dve models.
* iface/dve2/dve2.cc (compile_dve2): New function.  Compile
the *.dve source if there is no newer *.dve2C already.
(load_dve2): Call compile_dve2 when given a *.dve file.
* iface/dve2/dve2.hh (load_dve2): Document it.
2011-03-07 11:09:53 +01:00
Alexandre Duret-Lutz
8ce39e09b2 Augment dve2check to perform LTL model checking.
* iface/dve2/dve2check.cc: Add many option to perform
emptiness check and other debugging tasks.
2011-03-07 11:09:53 +01:00
Alexandre Duret-Lutz
7b5879d26a Teach the DVE2 interface about enumerated types.
* iface/dve2/dve2.cc (convert_aps): Add support for
enumerated types.  E.g. an atomic proposition such
as "P_0.CS" really means "P_0 == CS".
2011-03-06 19:17:30 +01:00
Alexandre Duret-Lutz
8136bd412d Teach the DVE2 interface about atomic propositions such as "a <=
10" or "b != 3".  This only work for integer variables presently.

* iface/dve2/dve2.hh (load_dve2): Take an atomic_prop_set
argument to indicate the AP to observe.
* iface/dve2/dve2.cc (convert_aps): New function.  Parse the
atomic propositions in format them in a prop_set structure that
will allow fast generation of the state condition.
(load_dve2): Call convert_aps, and pass the resulting prop_set
structure to the kripke object.
(dve2_kripke::dve2_kripke): Store the prop_set structure.
(dve2_kripke::~dve2_kripke): Release the prop_set, and unregister
the bdd_variable associated to it.
(compute_state_condition): New method that uses the prop_set.
(succ_iter, state_condition): Call compute_state_condition().
* iface/dve2/dve2check.cc: Adjust the call to load_dve2 to
pass it atomic propositions read from the command line.
2011-03-06 19:17:30 +01:00
Alexandre Duret-Lutz
5a76a7bb05 Display states variables in the state label.
* iface/dve2/dve2.cc (dve2_kripke::dve2_kripke): Retrieve
the name of all the state variables.
(dve2_kripke::format_state): Use them to format the name
of the state.
2011-03-06 10:51:03 +01:00
Alexandre Duret-Lutz
16b4c28859 We can now explore a divine2 compiled model, but the atomic
properties are still missing.

* iface/dve2/dve2.cc, iface/dve2/dve2.hh: Add
classes for presenting the DiVinE2 model as a kripke object.
(load_dve2): Load the *.dve2C file using libltdl.
* iface/dve2/Makefile.am: Add a dve2check program.
* iface/dve2/dve2check.cc: New file.  Currently it just
outputs the reachability graph using dotty.
2011-03-06 10:51:03 +01:00
Alexandre Duret-Lutz
155d76f4fb Setup libltdl in ltdl/, so we can use it in the dve2 interface.
Don't keep it under version control since it is installed by
autoreconf.

* configure.ac: Call LT_CONFIG_LTDL_DIR and LTDL_INIT.
* README: Mention ltdl/.
* Makefile.am: Recurse into ldtl.
* iface/dve2/Makefile.am: Link with it.
2011-03-05 12:29:04 +01:00
Alexandre Duret-Lutz
3427f3bf0e Setup build system for a new dve2 interface.
* iface/dve2/dve2.cc, iface/dve2/dve2.hh: New dummy files.
* iface/dve2/Makefile.am: New file.
* iface/Makefile.am (SUBDIRS): Add dve2.
* configure.ac: Build iface/dve2/Makefile.
* README: Mention the new directory.
2011-03-05 11:13:37 +01:00