To run the code, follow the instructions based on the environment:
- Maven: Libraries for SMT are downloaded automatically.
- IntelliJ: Execute
mvn generate-resourcesonce to download the required libraries for the current OS and architecture.
To analyze a model, run the JAR file with the following command:
java -jar smt_dopler-2.0.0.jar -a <SMT|ILP|CP> <path to model>.
For ILP and SMT the solvers can be changed with the --smt-solver <CVC5|Z3> and --ilp-model <CBC|SCIP> arguments.
-
Dependencies: SMT and OR-Tools dependencies are extracted automatically. In case of issues with SMT solvers, manually place
libcvc5jni,libz3, andlibz3java(withdll/so/dylibextension) into a./dependenciesfolder located in the same directory as the JAR. -
Help: For a list of arguments and configuration options use:
java -jar smt_dopler-2.0.0.jar --help
To create the final JAR, use the following command:
mvn clean package -Pdist
Note: The -Pdist argument is required to download and bundle all SMT libraries for all supported operating systems ( Windows, Linux, and macOS) and architectures (x64 and arm64).
Information about the parser see here
In the following the metamodel of the DOPLER decision model is presented.
Defines the set of allowed values (with respect to the decision type and additional user-defined constraints) Post condition which has to be fulfilled after a user takes a decision and before assigning a value to the decision variable
Defines when a decision, becomes relevant and can be answered during product derivation.
If there is a visibility condition associated with a decision, the user has to first take the decisions appearing in the
visibility condition
Detailed Explanation of the SMT Encoding you can find here
Detailed Explanation of the ILP Encoding you can find here
Detailed Explanation of the CP Encoding you can find here
Information about the CI pipeline see here
Information about the contributors can be found here