MOLOSS is a satisfiability solver for modal logics. It is an implementation (and more) of C. Aceres, P. Fontaine and S. Merz paper "Modal Satisfiability via SMT solving" in which the authors use a translation of propositional modal logic to first-order logic.
MOLOSS is licensed under the GNU General Public License v3. See
the COPYING
file for more details.
For the moment, you can only install MOLOSS manually. To install MOLOSS, you need:
- an OCaml compiler (version >= 4.0.3)
- the Menhir parser generator
- the OCaml library mSat
- the OCaml library ocaml-minisat to interact with the MiniSat solver
All these tools can be easily installed using the OPAM OCaml Package Manager:
opam install menhir msat minisat
eval $(opam config env)
You can then build the system with
make
The previous command will build a native and byte code executable. You may also use more specific targets:
profile
for native code executable with profilingdebug
for byte code executable with debugstatic
for static native code executable with no dynamic libraries (even libc)
Notice also that:
- (for the moment) MOLOSS uses UNIX system calls, so you must be on a UNIX/Linux system to use it
- MOLOSS uses Z3, a SMT solver. You must have a Z3 installed if you want to use it as an oracle or directly (see further).
You can find the documentation online.
The moloss
executable takes as an argument a file containing the
formula to be checked in InToHyLo format (see examples in the data
directory or
4.1).
MOLOSS then output SAT
or UNSAT
.
By default, MiniSat is used as an oracle.
MOLOSS implements some frame axioms that can be called as an option of the execautable:
-S
or-M
: reflexiv relation-B
: symmetric relation-4
: transitive relation-5
: euclidian relation-CD
: functionnal relation
Options:
--all
: all SAT oracles are used (MiniSat, Z3, mSAT)--z3
,--mSAT
: only the corresponding oracle is used--time
: print the total execution time (including parsing)--get-model
: print the Kripke model if the formula is satisfiable in the Flat Kripke Model (FKM) format.--get-assert
: print the assertions made by the solver and the final model if the formule is satisfiable.--direct
: use Z3 as a first-order solver on the translation of modal formulas into first-order formulas (no instanciation procedures)--get-log
: print the log of interaction with the z3 SMT solver (only fordirect
mode)--soft
: useassert-soft
constraints, even if not needed by the considered modal logic--soft-ignore
: do not useassert-soft
constraints, even if needed (beware, infinite loop possible in this case!)
Not yet avaible options:
--get-proof
: print a proof unsatisfiability if the formula is unsatisfiable (Z3 only)
MOLOSS has been partly developed during an internship at ISAE-SUPAERO and ONERA.