Complete rs to ispl translation.

This commit is contained in:
Marcin Piątkowski
2025-04-02 21:20:05 +02:00
parent 48b4f1bb4d
commit 94ae1c602d
9 changed files with 891 additions and 5 deletions

View File

@@ -16,6 +16,7 @@ int main(int argc, char **argv)
bool rstl_model_checking = false;
bool reach_states = false;
bool reach_states_succ = false;
bool export_to_ispl = false;
bool bmc = true;
bool benchmarking = false;
bool dump_help_message = false;
@@ -31,7 +32,7 @@ int main(int argc, char **argv)
int c;
int option_index = 0;
while ((c = getopt_long(argc, argv, "c:bBmpPrsStTvxzXh", long_options,
while ((c = getopt_long(argc, argv, "c:bBmpPrsStTvxzXhe", long_options,
&option_index)) != -1) {
switch (c) {
case 0:
@@ -52,6 +53,10 @@ int main(int argc, char **argv)
break;
case 'e':
export_to_ispl = true;
break;
//case 'b':
// printf("-b with %s\n", optarg);
// break;
@@ -136,8 +141,8 @@ int main(int argc, char **argv)
}
if (!(reach_states || reach_states_succ || rstl_model_checking
|| show_reactions || print_parsed_sys)) {
FERROR("No task specified: -c, -P, -r, or -s needs to be used");
|| show_reactions || print_parsed_sys || export_to_ispl)) {
FERROR("No task specified: -c, -P, -r, -s, or -e needs to be used");
}
if (opts->verbose > 0) {
@@ -171,7 +176,7 @@ int main(int argc, char **argv)
rs.printSystem();
}
if (reach_states || reach_states_succ || rstl_model_checking) {
if (reach_states || reach_states_succ || rstl_model_checking || export_to_ispl) {
SymRS srs(&rs, opts);
ModelChecker mc(&srs, opts);
@@ -184,6 +189,11 @@ int main(int argc, char **argv)
mc.printReachWithSucc();
}
if (export_to_ispl) {
RSExporter exp(&rs, &driver);
exp.exportToISPL();
}
if (rstl_model_checking) {
if (bmc) {
cout << "Using BDD-based Bounded Model Checking" << endl;
@@ -268,6 +278,8 @@ void print_help(std::string path_str)
<< " Benchmarking options:" << endl
<< " -m -- measure and display time and memory usage" << endl
<< " -B -- display an easy to parse summary (enables -m)" << endl
<< " -e -- exports to ISPL (MCMAS input format)" << endl
<< endl;
}