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 },
|
{ "count", 'c', nullptr, 0, "print only a count of matched automata", 3 },
|
||||||
{ "max-count", 'n', "NUM", 0, "output at most NUM 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", OPT_MERGE, nullptr, 0,
|
||||||
"merge transitions with same destination and acceptance", 0 },
|
"merge transitions with same destination and acceptance", 0 },
|
||||||
{ "product", OPT_PRODUCT_AND, "FILENAME", 0,
|
{ "product", OPT_PRODUCT_AND, "FILENAME", 0,
|
||||||
|
|
@ -213,82 +289,7 @@ static const argp_option options[] =
|
||||||
{ "highlight-nondet", OPT_HIGHLIGHT_NONDET, "NUM",
|
{ "highlight-nondet", OPT_HIGHLIGHT_NONDET, "NUM",
|
||||||
OPTION_ARG_OPTIONAL,
|
OPTION_ARG_OPTIONAL,
|
||||||
"highlight nondeterministic states and edges with color NUM", 0},
|
"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,
|
{ nullptr, 0, nullptr, 0,
|
||||||
"If any option among --small, --deterministic, or --any is given, "
|
"If any option among --small, --deterministic, or --any is given, "
|
||||||
"then the simplification level defaults to --high unless specified "
|
"then the simplification level defaults to --high unless specified "
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue