autfilt: swap transformation and filtering --help
It makes more sense to keep the transformationn options near the simplification options. * bin/autfilt.cc: Reorder --help.
This commit is contained in:
parent
b6cd54ab16
commit
9af7001329
1 changed files with 77 additions and 76 deletions
153
bin/autfilt.cc
153
bin/autfilt.cc
|
|
@ -139,7 +139,83 @@ static const argp_option options[] =
|
|||
{ "count", 'c', nullptr, 0, "print only a count of matched automata", 3 },
|
||||
{ "max-count", 'n', "NUM", 0, "output at most NUM automata", 3 },
|
||||
/**************************************************/
|
||||
{ nullptr, 0, nullptr, 0, "Transformations:", 5 },
|
||||
{ nullptr, 0, nullptr, 0, "Filtering options:", 5 },
|
||||
{ "ap", OPT_AP_N, "RANGE", 0,
|
||||
"match automata with a number of (declared) atomic propositions in RANGE",
|
||||
0 },
|
||||
{ "used-ap", OPT_USED_AP_N, "RANGE", 0,
|
||||
"match automata with a number of used atomic propositions in RANGE", 0 },
|
||||
{ "unused-ap", OPT_UNUSED_AP_N, "RANGE", 0,
|
||||
"match automata with a number of declared, but unused atomic "
|
||||
"propositions in RANGE", 0 },
|
||||
{ "are-isomorphic", OPT_ARE_ISOMORPHIC, "FILENAME", 0,
|
||||
"keep automata that are isomorphic to the automaton in FILENAME", 0 },
|
||||
{ "isomorphic", 0, nullptr, OPTION_ALIAS | OPTION_HIDDEN, nullptr, 0 },
|
||||
{ "unique", 'u', nullptr, 0,
|
||||
"do not output the same automaton twice (same in the sense that they "\
|
||||
"are isomorphic)", 0 },
|
||||
{ "is-complete", OPT_IS_COMPLETE, nullptr, 0,
|
||||
"keep complete automata", 0 },
|
||||
{ "is-deterministic", OPT_IS_DETERMINISTIC, nullptr, 0,
|
||||
"keep deterministic automata", 0 },
|
||||
{ "is-empty", OPT_IS_EMPTY, nullptr, 0,
|
||||
"keep automata with an empty language", 0 },
|
||||
{ "is-unambiguous", OPT_IS_UNAMBIGUOUS, nullptr, 0,
|
||||
"keep only unambiguous automata", 0 },
|
||||
{ "is-terminal", OPT_IS_TERMINAL, nullptr, 0,
|
||||
"keep only terminal automata", 0 },
|
||||
{ "is-weak", OPT_IS_WEAK, nullptr, 0,
|
||||
"keep only weak automata", 0 },
|
||||
{ "is-inherently-weak", OPT_IS_INHERENTLY_WEAK, nullptr, 0,
|
||||
"keep only inherently weak automata", 0 },
|
||||
{ "intersect", OPT_INTERSECT, "FILENAME", 0,
|
||||
"keep automata whose languages have an non-empty intersection with"
|
||||
" the automaton from FILENAME", 0 },
|
||||
{ "included-in", OPT_INCLUDED_IN, "FILENAME", 0,
|
||||
"keep automata whose languages are included in that of the "
|
||||
"automaton from FILENAME", 0 },
|
||||
{ "equivalent-to", OPT_EQUIVALENT_TO, "FILENAME", 0,
|
||||
"keep automata thare are equivalent (language-wise) to the automaton "
|
||||
"in FILENAME", 0 },
|
||||
{ "invert-match", 'v', nullptr, 0, "select non-matching automata", 0 },
|
||||
{ "states", OPT_STATES, "RANGE", 0,
|
||||
"keep automata whose number of states is in RANGE", 0 },
|
||||
{ "edges", OPT_EDGES, "RANGE", 0,
|
||||
"keep automata whose number of edges is in RANGE", 0 },
|
||||
{ "acc-sets", OPT_ACC_SETS, "RANGE", 0,
|
||||
"keep automata whose number of acceptance sets is in RANGE", 0 },
|
||||
{ "sccs", OPT_SCCS, "RANGE", 0,
|
||||
"keep automata whose number of SCCs is in RANGE", 0 },
|
||||
{ "acc-sccs", OPT_ACC_SCCS, "RANGE", 0,
|
||||
"keep automata whose number of non-trivial accepting SCCs is in RANGE",
|
||||
0 },
|
||||
{ "accepting-sccs", 0, nullptr, OPTION_ALIAS, nullptr, 0 },
|
||||
{ "rej-sccs", OPT_REJ_SCCS, "RANGE", 0,
|
||||
"keep automata whose number of non-trivial rejecting SCCs is in RANGE",
|
||||
0 },
|
||||
{ "rejecting-sccs", 0, nullptr, OPTION_ALIAS, nullptr, 0 },
|
||||
{ "triv-sccs", OPT_TRIV_SCCS, "RANGE", 0,
|
||||
"keep automata whose number of trivial SCCs is in RANGE", 0 },
|
||||
{ "trivial-sccs", 0, nullptr, OPTION_ALIAS, nullptr, 0 },
|
||||
{ "inherently-weak-sccs", OPT_INHERENTLY_WEAK_SCCS, "RANGE", 0,
|
||||
"keep automata whose number of accepting inherently-weak SCCs is in "
|
||||
"RANGE. An accepting SCC is inherently weak if it does not have a "
|
||||
"rejecting cycle.", 0 },
|
||||
{ "weak-sccs", OPT_WEAK_SCCS, "RANGE", 0,
|
||||
"keep automata whose number of accepting weak SCCs is in RANGE. "
|
||||
"In a weak SCC, all transitions belong to the same acceptance sets.", 0 },
|
||||
{ "terminal-sccs", OPT_TERMINAL_SCCS, "RANGE", 0,
|
||||
"keep automata whose number of accepting terminal SCCs is in RANGE. "
|
||||
"Terminal SCCs are weak and complete.", 0 },
|
||||
{ "accept-word", OPT_ACCEPT_WORD, "WORD", 0,
|
||||
"keep automata that accept WORD", 0 },
|
||||
{ "reject-word", OPT_REJECT_WORD, "WORD", 0,
|
||||
"keep automata that reject WORD", 0 },
|
||||
/**************************************************/
|
||||
RANGE_DOC_FULL,
|
||||
WORD_DOC,
|
||||
/**************************************************/
|
||||
{ nullptr, 0, nullptr, 0, "Transformations:", 7 },
|
||||
{ "merge-transitions", OPT_MERGE, nullptr, 0,
|
||||
"merge transitions with same destination and acceptance", 0 },
|
||||
{ "product", OPT_PRODUCT_AND, "FILENAME", 0,
|
||||
|
|
@ -213,82 +289,7 @@ static const argp_option options[] =
|
|||
{ "highlight-nondet", OPT_HIGHLIGHT_NONDET, "NUM",
|
||||
OPTION_ARG_OPTIONAL,
|
||||
"highlight nondeterministic states and edges with color NUM", 0},
|
||||
|
||||
/**************************************************/
|
||||
{ nullptr, 0, nullptr, 0, "Filtering options:", 6 },
|
||||
{ "ap", OPT_AP_N, "RANGE", 0,
|
||||
"match automata with a number of (declared) atomic propositions in RANGE",
|
||||
0 },
|
||||
{ "used-ap", OPT_USED_AP_N, "RANGE", 0,
|
||||
"match automata with a number of used atomic propositions in RANGE", 0 },
|
||||
{ "unused-ap", OPT_UNUSED_AP_N, "RANGE", 0,
|
||||
"match automata with a number of declared, but unused atomic "
|
||||
"propositions in RANGE", 0 },
|
||||
{ "are-isomorphic", OPT_ARE_ISOMORPHIC, "FILENAME", 0,
|
||||
"keep automata that are isomorphic to the automaton in FILENAME", 0 },
|
||||
{ "isomorphic", 0, nullptr, OPTION_ALIAS | OPTION_HIDDEN, nullptr, 0 },
|
||||
{ "unique", 'u', nullptr, 0,
|
||||
"do not output the same automaton twice (same in the sense that they "\
|
||||
"are isomorphic)", 0 },
|
||||
{ "is-complete", OPT_IS_COMPLETE, nullptr, 0,
|
||||
"keep complete automata", 0 },
|
||||
{ "is-deterministic", OPT_IS_DETERMINISTIC, nullptr, 0,
|
||||
"keep deterministic automata", 0 },
|
||||
{ "is-empty", OPT_IS_EMPTY, nullptr, 0,
|
||||
"keep automata with an empty language", 0 },
|
||||
{ "is-unambiguous", OPT_IS_UNAMBIGUOUS, nullptr, 0,
|
||||
"keep only unambiguous automata", 0 },
|
||||
{ "is-terminal", OPT_IS_TERMINAL, nullptr, 0,
|
||||
"keep only terminal automata", 0 },
|
||||
{ "is-weak", OPT_IS_WEAK, nullptr, 0,
|
||||
"keep only weak automata", 0 },
|
||||
{ "is-inherently-weak", OPT_IS_INHERENTLY_WEAK, nullptr, 0,
|
||||
"keep only inherently weak automata", 0 },
|
||||
{ "intersect", OPT_INTERSECT, "FILENAME", 0,
|
||||
"keep automata whose languages have an non-empty intersection with"
|
||||
" the automaton from FILENAME", 0 },
|
||||
{ "included-in", OPT_INCLUDED_IN, "FILENAME", 0,
|
||||
"keep automata whose languages are included in that of the "
|
||||
"automaton from FILENAME", 0 },
|
||||
{ "equivalent-to", OPT_EQUIVALENT_TO, "FILENAME", 0,
|
||||
"keep automata thare are equivalent (language-wise) to the automaton "
|
||||
"in FILENAME", 0 },
|
||||
{ "invert-match", 'v', nullptr, 0, "select non-matching automata", 0 },
|
||||
{ "states", OPT_STATES, "RANGE", 0,
|
||||
"keep automata whose number of states is in RANGE", 0 },
|
||||
{ "edges", OPT_EDGES, "RANGE", 0,
|
||||
"keep automata whose number of edges is in RANGE", 0 },
|
||||
{ "acc-sets", OPT_ACC_SETS, "RANGE", 0,
|
||||
"keep automata whose number of acceptance sets is in RANGE", 0 },
|
||||
{ "sccs", OPT_SCCS, "RANGE", 0,
|
||||
"keep automata whose number of SCCs is in RANGE", 0 },
|
||||
{ "acc-sccs", OPT_ACC_SCCS, "RANGE", 0,
|
||||
"keep automata whose number of non-trivial accepting SCCs is in RANGE",
|
||||
0 },
|
||||
{ "accepting-sccs", 0, nullptr, OPTION_ALIAS, nullptr, 0 },
|
||||
{ "rej-sccs", OPT_REJ_SCCS, "RANGE", 0,
|
||||
"keep automata whose number of non-trivial rejecting SCCs is in RANGE",
|
||||
0 },
|
||||
{ "rejecting-sccs", 0, nullptr, OPTION_ALIAS, nullptr, 0 },
|
||||
{ "triv-sccs", OPT_TRIV_SCCS, "RANGE", 0,
|
||||
"keep automata whose number of trivial SCCs is in RANGE", 0 },
|
||||
{ "trivial-sccs", 0, nullptr, OPTION_ALIAS, nullptr, 0 },
|
||||
{ "inherently-weak-sccs", OPT_INHERENTLY_WEAK_SCCS, "RANGE", 0,
|
||||
"keep automata whose number of accepting inherently-weak SCCs is in "
|
||||
"RANGE. An accepting SCC is inherently weak if it does not have a "
|
||||
"rejecting cycle.", 0 },
|
||||
{ "weak-sccs", OPT_WEAK_SCCS, "RANGE", 0,
|
||||
"keep automata whose number of accepting weak SCCs is in RANGE. "
|
||||
"In a weak SCC, all transitions belong to the same acceptance sets.", 0 },
|
||||
{ "terminal-sccs", OPT_TERMINAL_SCCS, "RANGE", 0,
|
||||
"keep automata whose number of accepting terminal SCCs is in RANGE. "
|
||||
"Terminal SCCs are weak and complete.", 0 },
|
||||
{ "accept-word", OPT_ACCEPT_WORD, "WORD", 0,
|
||||
"keep automata that accept WORD", 0 },
|
||||
{ "reject-word", OPT_REJECT_WORD, "WORD", 0,
|
||||
"keep automata that reject WORD", 0 },
|
||||
RANGE_DOC_FULL,
|
||||
WORD_DOC,
|
||||
{ nullptr, 0, nullptr, 0,
|
||||
"If any option among --small, --deterministic, or --any is given, "
|
||||
"then the simplification level defaults to --high unless specified "
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue