21#include <spot/twa/twagraph.hh>
22#include <spot/twaalgos/game.hh>
23#include <spot/twaalgos/relabel.hh>
63 unsigned sub_specs = 0;
65 double total_time = 0.0;
67 double sum_trans_time = 0.0;
69 double sum_split_time = 0.0;
71 double sum_paritize_time = 0.0;
73 double sum_solve_time = 0.0;
75 double sum_strat2aut_time = 0.0;
77 double sum_simplify_strat_time = 0.0;
79 double aig_time = 0.0;
81 unsigned max_trans_states = 0;
83 unsigned max_trans_edges = 0;
85 unsigned max_trans_colors = 0;
87 unsigned max_trans_ap = 0;
89 unsigned max_game_states = 0;
91 unsigned max_game_colors = 0;
93 unsigned max_strat_states = 0;
95 unsigned max_strat_edges = 0;
97 unsigned sum_strat_states = 0;
99 unsigned sum_strat_edges = 0;
101 unsigned max_simpl_strat_states = 0;
103 unsigned max_simpl_strat_edges = 0;
105 unsigned sum_simpl_strat_states = 0;
107 unsigned sum_simpl_strat_edges = 0;
109 unsigned aig_latches = 0;
111 unsigned aig_gates = 0;
113 bool realizable =
false;
117 : force_sbacc{false},
122 verbose_stream{nullptr},
132 std::optional<bench_var>
bv;
175 const bdd& output_bdd,
bool complete_env =
true,
177 = synthesis_info::splittype::AUTO,
186 = synthesis_info::splittype::AUTO,
212 SPOT_API std::ostream&
217 SPOT_API std::ostream &
234 const std::vector<std::string>& all_outs,
236 const std::vector<std::string>* unobs =
nullptr);
250 const std::vector<std::string>& all_outs,
251 const std::vector<std::string>* unobs =
nullptr);
308 SPOT_API std::pair<std::vector<formula>, std::vector<std::set<formula>>>
311 SPOT_API std::pair<std::vector<formula>, std::vector<std::set<formula>>>
313 const std::vector<std::string>& outs);
333 const std::vector<std::string>& output_aps,
368 bool split_env =
false,
369 bool split_play =
false,
370 unsigned max_letter = -1u,
371 unsigned max_letter_mult = -1u);
Manage a map of options.
Definition optionmap.hh:34
bool solve_game(const twa_graph_ptr &arena)
Generic interface for game solving.
twa_graph_ptr solved_game_to_split_mealy(twa_graph_ptr arena, synthesis_info &gi)
creates a mealy machine from a solved game arena taking into account the options given in gi....
twa_graph_ptr solved_game_to_separated_mealy(twa_graph_ptr arena, synthesis_info &gi)
creates a mealy machine from a solved game arena taking into account the options given in gi....
std::pair< std::vector< formula >, std::vector< std::set< formula > > > split_independent_formulas(formula f, const std::vector< std::string > &outs)
Seeks to decompose a formula into independently synthetizable sub-parts. The conjunction of all sub-p...
twa_graph_ptr unsplit_2step(const const_twa_graph_ptr &aut)
the inverse of split_2step
twa_graph_ptr split_2step(const const_twa_graph_ptr &aut, const bdd &output_bdd, bool complete_env=true, synthesis_info::splittype sp=synthesis_info::splittype::AUTO, bool moore=false)
make each transition a 2-step transition, transforming the graph into an alternating arena
game_relabeling_map partitioned_game_relabel_here(twa_graph_ptr &arena, bool relabel_env, bool relabel_play, bool split_env=false, bool split_play=false, unsigned max_letter=-1u, unsigned max_letter_mult=-1u)
Tries to relabel a SPLIT game arena using fresh propositions. Can be applied to env or player dependi...
mealy_like try_create_direct_strategy(formula f, const std::vector< std::string > &output_aps, synthesis_info &gi, bool want_strategy=false)
Creates a strategy for the formula given by calling all intermediate steps.
twa_graph_ptr solved_game_to_mealy(twa_graph_ptr arena, synthesis_info &gi)
creates a mealy machine from a solved game arena taking into account the options given in gi....
void relabel_game_here(twa_graph_ptr &arena, game_relabeling_map &rel_maps)
Undoes a relabeling done by partitioned_game_relabel_here. A dedicated function is necessary in order...
twa_graph_ptr ltl_to_game(formula f, const std::vector< std::string > &all_outs, synthesis_info &gi, const std::vector< std::string > *unobs=nullptr)
Creates a game from a specification and a set of output propositions.
bdd_dict_ptr make_bdd_dict()
Create a new, empty bdd_dict wrapped in a shared pointer.
Definition bdddict.hh:308
std::shared_ptr< bdd_dict > bdd_dict_ptr
Shared pointer to a bdd_dict.
Definition bdddict.hh:304
std::shared_ptr< twa_graph > twa_graph_ptr
Shared pointer to a mutable twa_graph.
Definition fwd.hh:44
std::shared_ptr< const twa_graph > const_twa_graph_ptr
Shared pointer to a const twa_graph.
Definition fwd.hh:41
Definition automata.hh:26
std::ostream & operator<<(std::ostream &os, const mc_algorithm &ma)
Print an mc_algorithm value to a stream.
Definition mc.hh:74
std::map< formula, formula > relabeling_map
Map associating new (key) formula names to old (value) ones.
Definition relabel.hh:31
Pair of relabeling maps for environment and player edges in a synthesis game.
Definition synthesis.hh:347
relabeling_map env_map
Map for environment edges.
Definition synthesis.hh:348
relabeling_map player_map
Map for player edges.
Definition synthesis.hh:349
A struct that represents different types of mealy like objects.
Definition synthesis.hh:279
bdd glob_cond
Global condition for DTGBA strategies.
Definition synthesis.hh:292
realizability_code success
Realizability result.
Definition synthesis.hh:290
realizability_code
Realizability result codes.
Definition synthesis.hh:282
Benchmarking variables tracking timing and counts for each step of synthesis.
Definition synthesis.hh:61
Benchmarking data and options for synthesis.
Definition synthesis.hh:32
splittype
Splitting strategy for 2-step games.
Definition synthesis.hh:46
option_map opt
Additional options.
Definition synthesis.hh:134
splittype sp
Splitting strategy.
Definition synthesis.hh:131
bdd_dict_ptr dict
BDD dictionary.
Definition synthesis.hh:136
bool force_sbacc
Force state-based acceptance.
Definition synthesis.hh:128
algo
Algorithm selection for synthesis.
Definition synthesis.hh:35
std::ostream * verbose_stream
Verbose output stream.
Definition synthesis.hh:133
int minimize_lvl
Minimization level.
Definition synthesis.hh:130
std::optional< bench_var > bv
Benchmarking data.
Definition synthesis.hh:132
algo s
Selected algorithm.
Definition synthesis.hh:129
bool moore
Use Moore (output-first) semantics instead of Mealy.
Definition synthesis.hh:135