Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Spot
Spot
Commits
42665b87
Commit
42665b87
authored
Sep 17, 2012
by
Alexandre Duret-Lutz
Browse files
* src/bin/ltlfilt.cc: Add a --remove-wm option.
parent
28e7d9aa
Changes
1
Show whitespace changes
Inline
Side-by-side
src/bin/ltlfilt.cc
View file @
42665b87
...
@@ -41,6 +41,7 @@
...
@@ -41,6 +41,7 @@
#include "ltlvisit/simplify.hh"
#include "ltlvisit/simplify.hh"
#include "ltlvisit/length.hh"
#include "ltlvisit/length.hh"
#include "ltlvisit/relabel.hh"
#include "ltlvisit/relabel.hh"
#include "ltlvisit/wmunabbrev.hh"
#include "ltlast/unop.hh"
#include "ltlast/unop.hh"
#include "ltlast/multop.hh"
#include "ltlast/multop.hh"
#include "tgbaalgos/ltl2tgba_fm.hh"
#include "tgbaalgos/ltl2tgba_fm.hh"
...
@@ -90,6 +91,7 @@ Exit status:\n\
...
@@ -90,6 +91,7 @@ Exit status:\n\
#define OPT_EQUIVALENT_TO 25
#define OPT_EQUIVALENT_TO 25
#define OPT_LBT 26
#define OPT_LBT 26
#define OPT_RELABEL 27
#define OPT_RELABEL 27
#define OPT_REMOVE_WM 28
static
const
argp_option
options
[]
=
static
const
argp_option
options
[]
=
{
{
...
@@ -113,6 +115,8 @@ static const argp_option options[] =
...
@@ -113,6 +115,8 @@ static const argp_option options[] =
{
"relabel"
,
OPT_RELABEL
,
"abc|pnn"
,
OPTION_ARG_OPTIONAL
,
{
"relabel"
,
OPT_RELABEL
,
"abc|pnn"
,
OPTION_ARG_OPTIONAL
,
"relabel all atomic propositions, alphabetically unless "
\
"relabel all atomic propositions, alphabetically unless "
\
"specified otherwise"
,
0
},
"specified otherwise"
,
0
},
{
"remove-wm"
,
OPT_REMOVE_WM
,
0
,
0
,
"rewrite operators W and M using U and R"
,
0
},
DECLARE_OPT_R
,
DECLARE_OPT_R
,
LEVEL_DOC
(
4
),
LEVEL_DOC
(
4
),
/**************************************************/
/**************************************************/
...
@@ -213,6 +217,7 @@ static int bsize_min = -1;
...
@@ -213,6 +217,7 @@ static int bsize_min = -1;
static
int
bsize_max
=
-
1
;
static
int
bsize_max
=
-
1
;
static
bool
relabeling
=
false
;
static
bool
relabeling
=
false
;
static
spot
::
ltl
::
relabeling_style
style
=
spot
::
ltl
::
Abc
;
static
spot
::
ltl
::
relabeling_style
style
=
spot
::
ltl
::
Abc
;
static
bool
remove_wm
=
false
;
static
const
spot
::
ltl
::
formula
*
implied_by
=
0
;
static
const
spot
::
ltl
::
formula
*
implied_by
=
0
;
static
const
spot
::
ltl
::
formula
*
imply
=
0
;
static
const
spot
::
ltl
::
formula
*
imply
=
0
;
...
@@ -284,9 +289,32 @@ parse_opt(int key, char* arg, struct argp_state*)
...
@@ -284,9 +289,32 @@ parse_opt(int key, char* arg, struct argp_state*)
case
OPT_DROP_ERRORS
:
case
OPT_DROP_ERRORS
:
error_style
=
drop_errors
;
error_style
=
drop_errors
;
break
;
break
;
case
OPT_EQUIVALENT_TO
:
{
if
(
equivalent_to
)
error
(
2
,
0
,
"only one --equivalent-to option can be given"
);
equivalent_to
=
parse_formula_arg
(
arg
);
break
;
}
case
OPT_GUARANTEE
:
case
OPT_GUARANTEE
:
guarantee
=
obligation
=
true
;
guarantee
=
obligation
=
true
;
break
;
break
;
case
OPT_IMPLIED_BY
:
{
const
spot
::
ltl
::
formula
*
i
=
parse_formula_arg
(
arg
);
// a→c∧b→c ≡ (a∨b)→c
implied_by
=
spot
::
ltl
::
multop
::
instance
(
spot
::
ltl
::
multop
::
Or
,
implied_by
,
i
);
break
;
}
case
OPT_IMPLY
:
{
// a→b∧a→c ≡ a→(b∧c)
const
spot
::
ltl
::
formula
*
i
=
parse_formula_arg
(
arg
);
imply
=
spot
::
ltl
::
multop
::
instance
(
spot
::
ltl
::
multop
::
And
,
imply
,
i
);
break
;
}
case
OPT_LBT
:
case
OPT_LBT
:
lbt
=
true
;
lbt
=
true
;
case
OPT_LTL
:
case
OPT_LTL
:
...
@@ -313,6 +341,9 @@ parse_opt(int key, char* arg, struct argp_state*)
...
@@ -313,6 +341,9 @@ parse_opt(int key, char* arg, struct argp_state*)
else
else
error
(
2
,
0
,
"invalid argument for --relabel: '%s'"
,
arg
);
error
(
2
,
0
,
"invalid argument for --relabel: '%s'"
,
arg
);
break
;
break
;
case
OPT_REMOVE_WM
:
remove_wm
=
true
;
break
;
case
OPT_SAFETY
:
case
OPT_SAFETY
:
safety
=
obligation
=
true
;
safety
=
obligation
=
true
;
break
;
break
;
...
@@ -340,29 +371,6 @@ parse_opt(int key, char* arg, struct argp_state*)
...
@@ -340,29 +371,6 @@ parse_opt(int key, char* arg, struct argp_state*)
case
OPT_SYNTACTIC_PERSISTENCE
:
case
OPT_SYNTACTIC_PERSISTENCE
:
syntactic_persistence
=
true
;
syntactic_persistence
=
true
;
break
;
break
;
case
OPT_IMPLIED_BY
:
{
const
spot
::
ltl
::
formula
*
i
=
parse_formula_arg
(
arg
);
// a→c∧b→c ≡ (a∨b)→c
implied_by
=
spot
::
ltl
::
multop
::
instance
(
spot
::
ltl
::
multop
::
Or
,
implied_by
,
i
);
break
;
}
case
OPT_IMPLY
:
{
// a→b∧a→c ≡ a→(b∧c)
const
spot
::
ltl
::
formula
*
i
=
parse_formula_arg
(
arg
);
imply
=
spot
::
ltl
::
multop
::
instance
(
spot
::
ltl
::
multop
::
And
,
imply
,
i
);
break
;
}
case
OPT_EQUIVALENT_TO
:
{
if
(
equivalent_to
)
error
(
2
,
0
,
"only one --equivalent-to option can be given"
);
equivalent_to
=
parse_formula_arg
(
arg
);
break
;
}
default:
default:
return
ARGP_ERR_UNKNOWN
;
return
ARGP_ERR_UNKNOWN
;
}
}
...
@@ -435,8 +443,14 @@ namespace
...
@@ -435,8 +443,14 @@ namespace
if
(
relabeling
)
if
(
relabeling
)
{
{
const
spot
::
ltl
::
formula
*
res
=
const
spot
::
ltl
::
formula
*
res
=
spot
::
ltl
::
relabel
(
f
,
style
);
spot
::
ltl
::
relabel
(
f
,
style
);
f
->
destroy
();
f
=
res
;
}
if
(
remove_wm
)
{
const
spot
::
ltl
::
formula
*
res
=
spot
::
ltl
::
unabbreviate_wm
(
f
);
f
->
destroy
();
f
->
destroy
();
f
=
res
;
f
=
res
;
}
}
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment