diff --git a/BuchiReachability_8hpp_source.html b/BuchiReachability_8hpp_source.html new file mode 100644 index 0000000..c3862b8 --- /dev/null +++ b/BuchiReachability_8hpp_source.html @@ -0,0 +1,133 @@ + + + + + + + +LydiaSyft: src/synthesis/header/game/BuchiReachability.hpp Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
LydiaSyft +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
BuchiReachability.hpp
+
+
+
1 //
+
2 // Created by shuzhu on 16/04/24.
+
3 //
+
4 
+
5 #ifndef LYDIASYFT_BUCHIREACHABILITY_HPP
+
6 #define LYDIASYFT_BUCHIREACHABILITY_HPP
+
7 
+
8 #include "game/DfaGameSynthesizer.h"
+
9 
+
10 namespace Syft {
+ +
17  private:
+
21  CUDD::BDD goal_states_;
+
25  CUDD::BDD state_space_;
+
29  CUDD::BDD Buchi_;
+
30 
+
31  public:
+
32 
+
43  BuchiReachability(const SymbolicStateDfa &spec, Player starting_player, Player protagonist_player,
+
44  const CUDD::BDD &goal_states, const CUDD::BDD &Buchi, const CUDD::BDD &state_space);
+
45 
+
46 
+
55  SynthesisResult run() const final;
+
56 
+
57  };
+
58 }
+
59 
+
60 
+
61 #endif //LYDIASYFT_BUCHIREACHABILITY_HPP
+
A single-strategy-synthesizer for a Buchi-reachability game given as a symbolic-state DFA.
Definition: BuchiReachability.hpp:16
+
SynthesisResult run() const final
Solves the Buchi-reachability game.
Definition: BuchiReachability.cpp:17
+
BuchiReachability(const SymbolicStateDfa &spec, Player starting_player, Player protagonist_player, const CUDD::BDD &goal_states, const CUDD::BDD &Buchi, const CUDD::BDD &state_space)
Construct a single-strategy-synthesizer for the given Buchi-reachability game.
Definition: BuchiReachability.cpp:8
+
A synthesizer for a game whose arena is a symbolic-state DFA.
Definition: DfaGameSynthesizer.h:15
+
A DFA with symbolic states and transitions.
Definition: SymbolicStateDfa.h:18
+
Definition: Synthesizer.h:16
+
+
+ + + + diff --git a/DfaGameSynthesizer_8h_source.html b/DfaGameSynthesizer_8h_source.html new file mode 100644 index 0000000..c69e245 --- /dev/null +++ b/DfaGameSynthesizer_8h_source.html @@ -0,0 +1,167 @@ + + + + + + + +LydiaSyft: src/synthesis/header/game/DfaGameSynthesizer.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
LydiaSyft +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
DfaGameSynthesizer.h
+
+
+
1 #ifndef DFA_GAME_SYNTHESIZER_H
+
2 #define DFA_GAME_SYNTHESIZER_H
+
3 
+
4 #include "Quantification.h"
+
5 #include "automata/SymbolicStateDfa.h"
+
6 #include "Synthesizer.h"
+
7 #include "Transducer.h"
+
8 
+
9 namespace Syft {
+
10 
+
11 
+
15  class DfaGameSynthesizer : public Synthesizer<SymbolicStateDfa> {
+
16  protected:
+
20  std::shared_ptr<VarMgr> var_mgr_;
+ + +
32  std::vector<int> initial_vector_;
+
36  std::vector<CUDD::BDD> transition_vector_;
+
40  std::unique_ptr<Quantification> quantify_independent_variables_;
+
44  std::unique_ptr<Quantification> quantify_non_state_variables_;
+
45 
+
53  CUDD::BDD preimage(const CUDD::BDD &winning_states) const;
+
54 
+
62  CUDD::BDD project_into_states(const CUDD::BDD &winning_moves) const;
+
63 
+
70  bool includes_initial_state(const CUDD::BDD &winning_states) const;
+
71 
+
72  public:
+
73 
+
83  DfaGameSynthesizer(SymbolicStateDfa spec, Player starting_player, Player protagonist_player);
+
84 
+
85 
+
91  virtual SynthesisResult run()
+
92  const override = 0;
+
93 
+
94 
+
100  std::unique_ptr<Transducer> AbstractSingleStrategy(const SynthesisResult &result) const;
+
101 
+
102  private:
+
103  std::unique_ptr<Transducer> abstract_single_strategy(const CUDD::BDD &winning_moves,
+
104  const std::shared_ptr<VarMgr> &var_mgr,
+
105  const std::vector<int> &initial_vector,
+
106  const std::vector<CUDD::BDD> &transition_vector,
+
107  Player starting_player) const;
+
108 
+
109  std::unordered_map<int, CUDD::BDD>
+
110  synthesize_strategy(const CUDD::BDD &winning_moves, const std::shared_ptr<VarMgr> &var_mgr) const;
+
111  };
+
112 
+
113 }
+
114 
+
115 #endif // DFA_GAME_SYNTHESIZER_H
+
A synthesizer for a game whose arena is a symbolic-state DFA.
Definition: DfaGameSynthesizer.h:15
+
std::unique_ptr< Quantification > quantify_independent_variables_
Quantification on the variables that the protagonist player does not depend on.
Definition: DfaGameSynthesizer.h:40
+
bool includes_initial_state(const CUDD::BDD &winning_states) const
Check whether the initial state is a winning state.
Definition: DfaGameSynthesizer.cpp:65
+
Player starting_player_
The player that moves first each turn.
Definition: DfaGameSynthesizer.h:24
+
virtual SynthesisResult run() const override=0
Synthesis for the game.
+
std::unique_ptr< Quantification > quantify_non_state_variables_
Quantification on non-state variables.
Definition: DfaGameSynthesizer.h:44
+
DfaGameSynthesizer(SymbolicStateDfa spec, Player starting_player, Player protagonist_player)
Construct a synthesizer for a given DFA game.
Definition: DfaGameSynthesizer.cpp:6
+
std::unique_ptr< Transducer > AbstractSingleStrategy(const SynthesisResult &result) const
Abstract a winning strategy for the game.
Definition: DfaGameSynthesizer.cpp:128
+
std::shared_ptr< VarMgr > var_mgr_
Variable manager.
Definition: DfaGameSynthesizer.h:20
+
std::vector< CUDD::BDD > transition_vector_
The transition function of the game arena.
Definition: DfaGameSynthesizer.h:36
+
std::vector< int > initial_vector_
The initial state of the game arena.
Definition: DfaGameSynthesizer.h:32
+
Player protagonist_player_
The player for which we aim to find the winning strategy.
Definition: DfaGameSynthesizer.h:28
+
CUDD::BDD preimage(const CUDD::BDD &winning_states) const
Compute a set of winning moves.
Definition: DfaGameSynthesizer.cpp:50
+
CUDD::BDD project_into_states(const CUDD::BDD &winning_moves) const
Project a set of winning moves to a set of winning states.
Definition: DfaGameSynthesizer.cpp:60
+
A DFA with symbolic states and transitions.
Definition: SymbolicStateDfa.h:18
+
Abstract class for synthesizers.
Definition: Synthesizer.h:41
+
Definition: Synthesizer.h:16
+
+
+ + + + diff --git a/ExplicitStateDfaAdd_8h_source.html b/ExplicitStateDfaAdd_8h_source.html new file mode 100644 index 0000000..5f91c05 --- /dev/null +++ b/ExplicitStateDfaAdd_8h_source.html @@ -0,0 +1,167 @@ + + + + + + + +LydiaSyft: src/synthesis/header/automata/ExplicitStateDfaAdd.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
LydiaSyft +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
ExplicitStateDfaAdd.h
+
+
+
1 #ifndef EXPLICIT_STATE_DFA_ADD_H
+
2 #define EXPLICIT_STATE_DFA_ADD_H
+
3 
+
4 #include <exception>
+
5 #include <istream>
+
6 #include <memory>
+
7 #include <unordered_map>
+
8 #include <vector>
+
9 
+
10 #include "VarMgr.h"
+
11 #include "ExplicitStateDfa.h"
+
12 
+
13 namespace Syft {
+
14 
+ +
19  private:
+
20  std::shared_ptr<VarMgr> var_mgr_;
+
21 
+
22  size_t initial_state_;
+
23  size_t state_count_;
+
24  std::vector<size_t> final_states_;
+
25  std::vector<CUDD::ADD> transition_function_;
+
26 
+
27  ExplicitStateDfaAdd(std::shared_ptr<VarMgr> var_mgr);
+
28 
+
29  static CUDD::ADD build_add(
+
30  std::size_t node_index,
+
31  const std::shared_ptr<VarMgr> &var_mgr,
+
32  const std::vector<std::string> &variable_names,
+
33  const std::vector<std::vector<int>> &node_table,
+
34  std::unordered_map<std::size_t, CUDD::ADD> &add_table);
+
35 
+
36  static CUDD::ADD build_add_from_dfa(
+
37  unsigned node_index,
+
38  const std::shared_ptr<VarMgr> &var_mgr,
+
39  const std::vector<std::string> &variable_names,
+
40  const ExplicitStateDfa &explicit_dfa,
+
41  std::unordered_map<std::size_t, CUDD::ADD> &add_table);
+
42 
+
43  public:
+
44 
+
52  static ExplicitStateDfaAdd from_dfa_mona(std::shared_ptr<VarMgr> var_mgr,
+
53  const ExplicitStateDfa &explicit_dfa);
+
54 
+
58  std::shared_ptr<VarMgr> var_mgr() const;
+
59 
+
63  std::size_t initial_state() const;
+
64 
+
68  std::size_t state_count() const;
+
69 
+
73  std::vector<std::size_t> final_states() const;
+
74 
+
80  std::vector<CUDD::ADD> transition_function() const;
+
81 
+
87  void dump_dot(const std::string &filename) const;
+
88  };
+
89 
+
90 }
+
91 
+
92 #endif // EXPLICIT_STATE_DFA_ADD_H
+
A DFA with explicit states and symbolic transitions represented in ADDs.
Definition: ExplicitStateDfaAdd.h:18
+
std::vector< CUDD::ADD > transition_function() const
Returns the transition function of the DFA as a vector of ADDs.
Definition: ExplicitStateDfaAdd.cpp:125
+
std::size_t state_count() const
Returns the number of states in the DFA.
Definition: ExplicitStateDfaAdd.cpp:117
+
std::size_t initial_state() const
Returns the initial state of the DFA.
Definition: ExplicitStateDfaAdd.cpp:113
+
std::vector< std::size_t > final_states() const
Returns the list of indices of final states of the DFA.
Definition: ExplicitStateDfaAdd.cpp:121
+
std::shared_ptr< VarMgr > var_mgr() const
Returns the variable manager.
Definition: ExplicitStateDfaAdd.cpp:109
+
static ExplicitStateDfaAdd from_dfa_mona(std::shared_ptr< VarMgr > var_mgr, const ExplicitStateDfa &explicit_dfa)
Constructs an explicit-state DFA in ADD representation from an explicit-state DFA.
Definition: ExplicitStateDfaAdd.cpp:44
+
void dump_dot(const std::string &filename) const
Saves the transition function of the DFA in a .dot file.
Definition: ExplicitStateDfaAdd.cpp:129
+
A DFA with explicit states and symbolic transitions.
Definition: ExplicitStateDfa.h:22
+
+
+ + + + diff --git a/ExplicitStateDfaMona_8h_source.html b/ExplicitStateDfaMona_8h_source.html new file mode 100644 index 0000000..3809089 --- /dev/null +++ b/ExplicitStateDfaMona_8h_source.html @@ -0,0 +1,186 @@ + + + + + + + +LydiaSyft: src/synthesis/header/ExplicitStateDfaMona.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
LydiaSyft +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
ExplicitStateDfaMona.h
+
+
+
1 #ifndef EXPLICITSTATEDFAMONA_H
+
2 #define EXPLICITSTATEDFAMONA_H
+
3 
+
4 extern "C" {
+
5 #include <mona/bdd.h>
+
6 #include <mona/dfa.h>
+
7 #include <mona/mem.h>
+
8 }
+
9 
+
10 #include "lydia/logic/ltlf/base.hpp"
+
11 #include "lydia/dfa/mona_dfa.hpp"
+
12 #include "VarMgr.h"
+
13 
+
14 namespace Syft {
+
15 
+
16 /*
+
17  * Wrapper to Lydia DFA.
+
18  */
+
19  class ExplicitStateDfaMona : public whitemech::lydia::mona_dfa {
+
20  public:
+
21 
+
22  ExplicitStateDfaMona(DFA* dfa, int nb_variables)
+
23  : whitemech::lydia::mona_dfa(dfa, nb_variables) {
+
24  }
+
25 
+
26  ExplicitStateDfaMona(DFA* dfa, const std::vector<std::string>& names)
+
27  : whitemech::lydia::mona_dfa(dfa, names) {
+
28  }
+
29 
+ +
31  : whitemech::lydia::mona_dfa(dfaCopy(other.dfa_), other.names) {
+
32 
+
33  }
+
34 
+ +
36  {
+
37 // std::cout << "copy assignment of ExplicitStateDfaMona\n";
+
38  this->names = other.names;
+
39  this->dfa_ = dfaCopy(other.get_dfa());
+
40  return *this;
+
41  }
+
42  // ExplicitStateDfaMona& operator=(const ExplicitStateDfaMona& other);
+
43 
+ +
45 
+
46  }
+
47 
+
48  // rewrite this function, since nb_vairiables_ in mona_dfa is private
+
49  int get_nb_variables() {
+
50  return this->names.size();
+
51  }
+
52 
+
56  void dfa_print();
+
57 
+
58 
+
66  static ExplicitStateDfaMona dfa_of_formula(const whitemech::lydia::LTLfFormula& formula);
+
67 
+
74  static ExplicitStateDfaMona dfa_product_and(const std::vector<ExplicitStateDfaMona>& dfa_vector);
+
75 
+
82  static ExplicitStateDfaMona dfa_product_or(const std::vector<ExplicitStateDfaMona>& dfa_vector);
+
83 
+ +
91 
+
92 
+
100  static ExplicitStateDfaMona dfa_of_formula(const std::string& formula);
+
101 
+
111  static ExplicitStateDfaMona prune_dfa_with_states(ExplicitStateDfaMona& d, std::vector<size_t> states);
+
112 
+
122  static ExplicitStateDfaMona prune_dfa_with_transitions(ExplicitStateDfaMona& d, std::unordered_map<size_t, CUDD::BDD> transitions, std::shared_ptr<VarMgr> var_mgr);
+
123 
+ +
133 
+
134  private:
+
135  static std::vector<std::string> traverse_bdd(CUDD::BDD dd, std::shared_ptr<VarMgr> var_mgr, std::vector<std::string>& names, std::string guard_str);
+
136  };
+
137 
+
138 }
+
139 #endif //EXPLICITSTATEDFAMONA_H
+
Definition: ExplicitStateDfaMona.h:19
+
static ExplicitStateDfaMona dfa_of_formula(const whitemech::lydia::LTLfFormula &formula)
Construct DFA from a given formula.
Definition: ExplicitStateDfaMona.cpp:36
+
static ExplicitStateDfaMona prune_dfa_with_states(ExplicitStateDfaMona &d, std::vector< size_t > states)
Prune a DFA with given set of states.
Definition: ExplicitStateDfaMona.cpp:67
+
void dfa_print()
Print the DFA.
Definition: ExplicitStateDfaMona.cpp:23
+
static ExplicitStateDfaMona dfa_minimize(const ExplicitStateDfaMona &d)
Minimize a given DFA.
Definition: ExplicitStateDfaMona.cpp:505
+
static ExplicitStateDfaMona dfa_of_formula(const std::string &formula)
Construct DFA from a given formula.
+
static ExplicitStateDfaMona dfa_product_or(const std::vector< ExplicitStateDfaMona > &dfa_vector)
Take the product AND of a vector of DFAs.
Definition: ExplicitStateDfaMona.cpp:416
+
static ExplicitStateDfaMona prune_dfa_with_transitions(ExplicitStateDfaMona &d, std::unordered_map< size_t, CUDD::BDD > transitions, std::shared_ptr< VarMgr > var_mgr)
Prune a DFA with given transitions.
Definition: ExplicitStateDfaMona.cpp:195
+
static ExplicitStateDfaMona dfa_product_and(const std::vector< ExplicitStateDfaMona > &dfa_vector)
Take the product AND of a vector of DFAs.
Definition: ExplicitStateDfaMona.cpp:327
+
static ExplicitStateDfaMona dfa_complement(ExplicitStateDfaMona &d)
Complement a DFA.
Definition: ExplicitStateDfaMona.cpp:513
+
+
+ + + + diff --git a/ExplicitStateDfa_8h_source.html b/ExplicitStateDfa_8h_source.html new file mode 100644 index 0000000..726806c --- /dev/null +++ b/ExplicitStateDfa_8h_source.html @@ -0,0 +1,186 @@ + + + + + + + +LydiaSyft: src/synthesis/header/automata/ExplicitStateDfa.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
LydiaSyft +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
ExplicitStateDfa.h
+
+
+
1 #ifndef EXPLICITSTATEDFA_H
+
2 #define EXPLICITSTATEDFA_H
+
3 
+
4 extern "C" {
+
5 #include <mona/bdd.h>
+
6 #include <mona/dfa.h>
+
7 #include <mona/mem.h>
+
8 }
+
9 
+
10 #include "lydia/logic/ltlf/base.hpp"
+
11 #include "lydia/dfa/mona_dfa.hpp"
+
12 #include "VarMgr.h"
+
13 
+
14 namespace Syft {
+
15 
+
22  class ExplicitStateDfa : public whitemech::lydia::mona_dfa {
+
23  public:
+
24 
+
31  ExplicitStateDfa(DFA *dfa, int nb_variables)
+
32  : whitemech::lydia::mona_dfa(dfa, nb_variables) {
+
33  }
+
34 
+
41  ExplicitStateDfa(DFA *dfa, const std::vector<std::string> &names)
+
42  : whitemech::lydia::mona_dfa(dfa, names) {
+
43  }
+
44 
+ +
49  : whitemech::lydia::mona_dfa(dfaCopy(other.dfa_), other.names) {
+
50 
+
51  }
+
52 
+ +
57  this->names = other.names;
+
58  this->dfa_ = dfaCopy(other.get_dfa());
+
59  return *this;
+
60  }
+
61 
+
62 
+
63  ~ExplicitStateDfa() {
+
64 
+
65  }
+
66 
+ +
71  return this->names.size();
+
72  }
+
73 
+
77  void dfa_print();
+
78 
+
79 
+
87  static ExplicitStateDfa dfa_of_formula(const whitemech::lydia::LTLfFormula &formula);
+
88 
+
95  static ExplicitStateDfa dfa_product_and(const std::vector<ExplicitStateDfa> &dfa_vector);
+
96 
+
103  static ExplicitStateDfa dfa_product_or(const std::vector<ExplicitStateDfa> &dfa_vector);
+
104 
+ +
112 
+
113 
+
123  static ExplicitStateDfa restrict_dfa_with_states(ExplicitStateDfa &d, std::vector<size_t> states);
+
124 
+
134  static ExplicitStateDfa
+
135  restrict_dfa_with_transitions(ExplicitStateDfa &d, std::unordered_map<size_t, CUDD::BDD> transitions,
+
136  std::shared_ptr<VarMgr> var_mgr);
+
137 
+ +
147 
+
148  private:
+
149  static std::vector<std::string>
+
150  traverse_bdd(CUDD::BDD dd, std::shared_ptr<VarMgr> var_mgr, std::vector<std::string> &names,
+
151  std::string guard_str);
+
152  };
+
153 
+
154 }
+
155 #endif //EXPLICITSTATEDFA_H
+
A DFA with explicit states and symbolic transitions.
Definition: ExplicitStateDfa.h:22
+
static ExplicitStateDfa dfa_minimize(const ExplicitStateDfa &d)
Minimize a given explicit-state DFA.
Definition: ExplicitStateDfa.cpp:437
+
void dfa_print()
Print the explicit-state DFA.
Definition: ExplicitStateDfa.cpp:23
+
ExplicitStateDfa & operator=(ExplicitStateDfa other)
Create an explicit-state DFA from an existing one using the opeartor =.
Definition: ExplicitStateDfa.h:56
+
ExplicitStateDfa(DFA *dfa, const std::vector< std::string > &names)
Create an explicit-state DFA from an Lydia DFA structure and the names of variables.
Definition: ExplicitStateDfa.h:41
+
static ExplicitStateDfa dfa_product_or(const std::vector< ExplicitStateDfa > &dfa_vector)
Take the product OR of a sequence of explicit-state DFAs.
Definition: ExplicitStateDfa.cpp:359
+
static ExplicitStateDfa restrict_dfa_with_states(ExplicitStateDfa &d, std::vector< size_t > states)
Restrict an explicit-state DFA with a given set of states.
Definition: ExplicitStateDfa.cpp:60
+
ExplicitStateDfa(const ExplicitStateDfa &other)
Create an explicit-state DFA from an existing one.
Definition: ExplicitStateDfa.h:48
+
ExplicitStateDfa(DFA *dfa, int nb_variables)
Create an explicit-state DFA from an Lydia DFA structure and the number of variables.
Definition: ExplicitStateDfa.h:31
+
static ExplicitStateDfa restrict_dfa_with_transitions(ExplicitStateDfa &d, std::unordered_map< size_t, CUDD::BDD > transitions, std::shared_ptr< VarMgr > var_mgr)
Restrict a DFA with a given set of transitions.
Definition: ExplicitStateDfa.cpp:173
+
static ExplicitStateDfa dfa_of_formula(const whitemech::lydia::LTLfFormula &formula)
Construct an explicit-state DFA from a given formula using Lydia.
Definition: ExplicitStateDfa.cpp:35
+
static ExplicitStateDfa dfa_complement(ExplicitStateDfa &d)
Complement a DFA.
Definition: ExplicitStateDfa.cpp:444
+
static ExplicitStateDfa dfa_product_and(const std::vector< ExplicitStateDfa > &dfa_vector)
Take the product AND of a sequence of explicit-state DFAs.
Definition: ExplicitStateDfa.cpp:282
+
int get_nb_variables()
Get the number of variables.
Definition: ExplicitStateDfa.h:70
+
+
+ + + + diff --git a/FairReachabilitySynthesizer_8h_source.html b/FairReachabilitySynthesizer_8h_source.html new file mode 100644 index 0000000..f6d7210 --- /dev/null +++ b/FairReachabilitySynthesizer_8h_source.html @@ -0,0 +1,140 @@ + + + + + + + +LydiaSyft: src/synthesis/header/game/FairReachabilitySynthesizer.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
LydiaSyft +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
FairReachabilitySynthesizer.h
+
+
+
1 //
+
2 // Created by shuzhu on 20/01/24.
+
3 //
+
4 
+
5 #ifndef LYDIASYFT_FAIRREACHABILITYSYNTHESIZER_H
+
6 #define LYDIASYFT_FAIRREACHABILITYSYNTHESIZER_H
+
7 
+
8 #include "game/DfaGameSynthesizer.h"
+
9 
+
10 namespace Syft {
+
11 
+ +
17  private:
+
18 
+
19  CUDD::BDD goal_states_;
+
20  CUDD::BDD state_space_;
+
21 
+
22  //fair
+
23  CUDD::BDD assumption_;
+
24 
+
25  protected:
+
26  CUDD::BDD load_CNF(const std::string &filename) const;
+
27 
+
28  public:
+
29 
+
40  FairReachabilitySynthesizer(const SymbolicStateDfa &spec, Player starting_player, Player protagonist_player,
+
41  const CUDD::BDD &goal_states, const CUDD::BDD &state_space,
+
42  const std::string &assumption_filename);
+
43 
+
52  virtual SynthesisResult run() const final;
+
53 
+
54  };
+
55 
+
56 }
+
57 
+
58 #endif //LYDIASYFT_FAIRREACHABILITYSYNTHESIZER_H
+
A synthesizer for a game whose arena is a symbolic-state DFA.
Definition: DfaGameSynthesizer.h:15
+
A single-strategy-synthesizer for a reachability game given as a symbolic-state DFA,...
Definition: FairReachabilitySynthesizer.h:16
+
FairReachabilitySynthesizer(const SymbolicStateDfa &spec, Player starting_player, Player protagonist_player, const CUDD::BDD &goal_states, const CUDD::BDD &state_space, const std::string &assumption_filename)
Construct a single-strategy-synthesizer for the given coBuchi-reachability game.
Definition: FairReachabilitySynthesizer.cpp:13
+
virtual SynthesisResult run() const final
Solves the coBuchi-reachability game.
Definition: FairReachabilitySynthesizer.cpp:22
+
A DFA with symbolic states and transitions.
Definition: SymbolicStateDfa.h:16
+
Definition: Synthesizer.h:16
+
+
+ + + + diff --git a/FairnessLtlfSynthesizer_8h_source.html b/FairnessLtlfSynthesizer_8h_source.html new file mode 100644 index 0000000..5d2c8e6 --- /dev/null +++ b/FairnessLtlfSynthesizer_8h_source.html @@ -0,0 +1,144 @@ + + + + + + + +LydiaSyft: src/synthesis/header/synthesizer/FairnessLtlfSynthesizer.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
LydiaSyft +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
FairnessLtlfSynthesizer.h
+
+
+
1 //
+
2 // Created by shuzhu on 20/01/24.
+
3 //
+
4 
+
5 #ifndef LYDIASYFT_FAIRNESSLTLFSYNTHESIZER_H
+
6 #define LYDIASYFT_FAIRNESSLTLFSYNTHESIZER_H
+
7 
+
8 #include "automata/SymbolicStateDfa.h"
+
9 #include "Synthesizer.h"
+
10 
+
11 #include "game/coGR1Reachability.hpp"
+
12 #include "game/coBuchiReachability.hpp"
+
13 
+
14 namespace Syft {
+
15 
+ +
23  private:
+
27  std::shared_ptr<VarMgr> var_mgr_;
+
31  SymbolicStateDfa spec_;
+
35  Player starting_player_;
+
39  Player protagonist_player_;
+
43  CUDD::BDD goal_states_;
+
47  CUDD::BDD state_space_;
+
51  CUDD::BDD assumption_;
+
52 
+
53  protected:
+
54  CUDD::BDD load_CNF(const std::string &filename) const;
+
55 
+
56  public:
+
57 
+
68  FairnessLtlfSynthesizer(const SymbolicStateDfa &spec, Player starting_player, Player protagonist_player,
+
69  const CUDD::BDD &goal_states, const CUDD::BDD &state_space,
+
70  const std::string &assumption_filename);
+
71 
+
77  SynthesisResult run() const;
+
78 
+
79  };
+
80 
+
81 }
+
82 
+
83 #endif //LYDIASYFT_FAIRNESSLTLFSYNTHESIZER_H
+
A single-strategy-synthesizer for an LTLf formula given as a symbolic-state DFA, considering environm...
Definition: FairnessLtlfSynthesizer.h:22
+
FairnessLtlfSynthesizer(const SymbolicStateDfa &spec, Player starting_player, Player protagonist_player, const CUDD::BDD &goal_states, const CUDD::BDD &state_space, const std::string &assumption_filename)
Construct a FairnessLtlfSynthesizer.
Definition: FairnessLtlfSynthesizer.cpp:13
+
SynthesisResult run() const
Solves the synthesis problem of LTLf with simple Fairness environment assumption.
Definition: FairnessLtlfSynthesizer.cpp:25
+
A DFA with symbolic states and transitions.
Definition: SymbolicStateDfa.h:18
+
Definition: Synthesizer.h:16
+
+
+ + + + diff --git a/GR1LTLfSynthesizer_8h_source.html b/GR1LTLfSynthesizer_8h_source.html new file mode 100644 index 0000000..10f6b2c --- /dev/null +++ b/GR1LTLfSynthesizer_8h_source.html @@ -0,0 +1,142 @@ + + + + + + + +LydiaSyft: src/synthesis/header/synthesizer/GR1LTLfSynthesizer.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
LydiaSyft +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
GR1LTLfSynthesizer.h
+
+
+
1 //
+
2 // Created by shuzhu on 21/01/24.
+
3 //
+
4 
+
5 #ifndef LYDIASYFT_GR1LTLFSYNTHESIZER_H
+
6 #define LYDIASYFT_GR1LTLFSYNTHESIZER_H
+
7 
+
8 #include "automata/ExplicitStateDfaAdd.h"
+
9 #include "GR1.h"
+
10 #include "Stopwatch.h"
+
11 #include "automata/SymbolicStateDfa.h"
+
12 #include "Synthesizer.h"
+
13 #include "game/DfaGameSynthesizer.h"
+
14 
+
15 
+
16 namespace Syft {
+ +
25  private:
+
29  const std::shared_ptr<VarMgr> var_mgr_;
+
33  const GR1 gr1_;
+
37  const SymbolicStateDfa env_safety_;
+
41  const SymbolicStateDfa agn_safety_;
+
45  const SymbolicStateDfa agn_reach_;
+
49  const std::string benchmark_name_;
+
53  const std::string slugs_dir_;
+
54 
+
55  public:
+
65  GR1LTLfSynthesizer(const std::shared_ptr<VarMgr> &var_mgr, const GR1 &gr1,
+
66  const SymbolicStateDfa &env_safety,
+
67  const SymbolicStateDfa &agn_reach, const SymbolicStateDfa &agn_safety,
+
68  const std::string &slugs_dir,
+
69  const std::string &benchmark_name);
+
70 
+
76  SynthesisResult run() const;
+
77 
+
78  };
+
79 }
+
80 #endif //LYDIASYFT_GR1LTLFSYNTHESIZER_H
+
A single-strategy-synthesizer for an LTLf formula given as a symbolic-state DFA, considering environm...
Definition: GR1LTLfSynthesizer.h:24
+
GR1LTLfSynthesizer(const std::shared_ptr< VarMgr > &var_mgr, const GR1 &gr1, const SymbolicStateDfa &env_safety, const SymbolicStateDfa &agn_reach, const SymbolicStateDfa &agn_safety, const std::string &slugs_dir, const std::string &benchmark_name)
Construct a GR(1)LtlfSynthesizer.
Definition: GR1LTLfSynthesizer.cpp:12
+
SynthesisResult run() const
Solves the synthesis problem of LTLf with GR(1 environment assumption.
Definition: GR1LTLfSynthesizer.cpp:22
+
A DFA with symbolic states and transitions.
Definition: SymbolicStateDfa.h:18
+
Definition: GR1.h:52
+
Definition: Synthesizer.h:16
+
+
+ + + + diff --git a/GR1ReachabilitySynthesizer_8h_source.html b/GR1ReachabilitySynthesizer_8h_source.html new file mode 100644 index 0000000..115e5c4 --- /dev/null +++ b/GR1ReachabilitySynthesizer_8h_source.html @@ -0,0 +1,161 @@ + + + + + + + +LydiaSyft: src/synthesis/header/synthesizer/GR1ReachabilitySynthesizer.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
LydiaSyft +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
GR1ReachabilitySynthesizer.h
+
+
+
1 //
+
2 // Created by shuzhu on 21/01/24.
+
3 //
+
4 
+
5 #ifndef LYDIASYFT_GR1REACHABILITYSYNTHESIZER_H
+
6 #define LYDIASYFT_GR1REACHABILITYSYNTHESIZER_H
+
7 
+
8 #include "automata/ExplicitStateDfaAdd.h"
+
9 #include "game/InputOutputPartition.h"
+
10 #include "Player.h"
+
11 #include "GR1.h"
+
12 #include "Stopwatch.h"
+
13 #include "automata/SymbolicStateDfa.h"
+
14 #include "Synthesizer.h"
+
15 #include "game/DfaGameSynthesizer.h"
+
16 
+
17 
+
18 namespace Syft {
+
19 
+ +
21  private:
+
22  const std::shared_ptr<VarMgr> &var_mgr_;
+
23  const GR1 &gr1_;
+
24  const SymbolicStateDfa &env_safety_;
+
25  const SymbolicStateDfa &agn_safety_;
+
26  const SymbolicStateDfa &agn_reach_;
+
27  const std::string &benchmark_name_;
+
28 
+
29  std::string slugs_dir_;
+
30 
+
44  void print_variables(const SymbolicStateDfa &arena, const std::string &filename) const;
+
45 
+
57  void print_initial_conditions(const CUDD::BDD &arena_initial_state_bdd, const std::string &filename) const;
+
58 
+
71  void print_transitions(const SymbolicStateDfa &arena, const CUDD::BDD &safe_states,
+
72  const std::string &filename) const;
+
73 
+
83  void print_liveness_constraints(const std::string &filename) const;
+
84 
+
90  std::string get_slugs_path() const;
+
91 
+
92  public:
+
93 
+
104  GR1ReachabilitySynthesizer(const std::shared_ptr<VarMgr> &var_mgr, const GR1 &gr1,
+
105  const SymbolicStateDfa &env_safety,
+
106  const SymbolicStateDfa &agn_reach, const SymbolicStateDfa &agn_safety,
+
107  const std::string &slugs_dir,
+
108  const std::string &benchmark_name);
+
109 
+
110  const std::string exec_slugs(const std::string &slugs, const std::string &slugs_input_file,
+
111  const std::string &slugs_res_file, const std::string &slugs_strategy_file) const;
+
112 
+
121  SynthesisResult run() const;
+
122 
+
123  };
+
124 }
+
125 #endif //LYDIASYFT_GR1REACHABILITYSYNTHESIZER_H
+
Definition: GR1ReachabilitySynthesizer.h:20
+
GR1ReachabilitySynthesizer(const std::shared_ptr< VarMgr > &var_mgr, const GR1 &gr1, const SymbolicStateDfa &env_safety, const SymbolicStateDfa &agn_reach, const SymbolicStateDfa &agn_safety, const std::string &slugs_dir, const std::string &benchmark_name)
Construct a synthesizer for the given LTLf/GR(1) game.
Definition: GR1ReachabilitySynthesizer.cpp:11
+
SynthesisResult run() const
Solves the LTLf/GR(1) game.
Definition: GR1ReachabilitySynthesizer.cpp:223
+
A DFA with symbolic states and transitions.
Definition: SymbolicStateDfa.h:16
+
Definition: GR1.h:51
+
Definition: Synthesizer.h:16
+
+
+ + + + diff --git a/GR1_8h_source.html b/GR1_8h_source.html new file mode 100644 index 0000000..79b8c19 --- /dev/null +++ b/GR1_8h_source.html @@ -0,0 +1,190 @@ + + + + + + + +LydiaSyft: src/synthesis/header/GR1.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
LydiaSyft +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
GR1.h
+
+
+
1 //
+
2 // Created by shuzhu on 21/01/24.
+
3 //
+
4 
+
5 #ifndef LYDIASYFT_GR1_H
+
6 #define LYDIASYFT_GR1_H
+
7 
+
8 #include <fstream>
+
9 #include "string_utilities.h"
+
10 #include "VarMgr.h"
+
11 
+
12 namespace Syft {
+
52  struct GR1 {
+
53  std::vector<CUDD::BDD> env_justices;
+
54  std::vector<CUDD::BDD> agn_justices;
+
55 
+
59  static CUDD::BDD read_gr1_justice(const std::shared_ptr<VarMgr> &var_mgr,
+
60  std::istream &in,
+
61  std::size_t &line_number) {
+
62  std::string line;
+
63  CUDD::BDD justice = var_mgr->cudd_mgr()->bddOne();
+
64 
+
65  while (std::getline(in, line) && (line.find("Justice-End") == std::string::npos)) {
+
66 
+
67  CUDD::BDD clause = var_mgr->cudd_mgr()->bddZero();
+
68  if (line == "true") {
+
69  clause = var_mgr->cudd_mgr()->bddOne();
+
70  } else if (line == "false") {
+
71  clause = var_mgr->cudd_mgr()->bddZero();
+
72  } else {
+
73  std::vector<std::string> tokens;
+
74  trim(line); // remove leading and trailing whitespace
+
75  tokens = split(line, " ");
+
76  std::vector<std::string> variable_names;
+
77 
+
78  for (std::string token: tokens) {
+
79  std::string variable_name;
+
80  variable_name = (line.find("!") == std::string::npos) ? token : token.substr(2,
+
81  token.size() - 3);
+
82 // variable_name = to_upper_copy(variable_name); // turn variable names into uppercase to match the variable names in InputOutputPartition
+
83  variable_names.push_back(variable_name);
+
84  var_mgr->create_named_variables(variable_names);
+
85  CUDD::BDD variable_bdd = var_mgr->name_to_variable(variable_name);
+
86  clause = (line.find("!") == std::string::npos) ? (clause | variable_bdd) : (clause |
+
87  !variable_bdd);
+
88  }
+
89  }
+
90  justice = justice & clause;
+
91  ++line_number;
+
92  }
+
93  return justice;
+
94  }
+
95 
+
96  static std::runtime_error bad_file_format_exception(
+
97  std::size_t line_number) {
+
98  return std::runtime_error("Incorrect format in line " +
+
99  std::to_string(line_number) +
+
100  " of the GR(1) file.");
+
101  }
+
102 
+
109  static GR1 read_from_gr1_file(const std::shared_ptr<VarMgr> &var_mgr,
+
110  const std::string &gr1_filename) {
+
111  GR1 gr1;
+
112  std::ifstream in(gr1_filename);
+
113  std::size_t line_number = 0;
+
114  std::string line;
+
115  while (std::getline(in, line) && line != "End") {
+
116  if (line.find("Justice") != std::string::npos) {
+
117  if (line.find("Env") == std::string::npos && line.find("Agn") == std::string::npos) {
+
118  throw bad_file_format_exception(line_number);
+
119  }
+
120  ++line_number;
+
121  CUDD::BDD justice = read_gr1_justice(var_mgr, in, line_number);
+
122  if (line.find("Env") != std::string::npos) {
+
123  gr1.env_justices.push_back(justice);
+
124  } else {
+
125  gr1.agn_justices.push_back(justice);
+
126  }
+
127  }
+
128  ++line_number;
+
129  }
+
130  return gr1;
+
131  }
+
132  };
+
133 
+
134 
+
135 }
+
136 
+
137 #endif //LYDIASYFT_GR1_H
+
Definition: GR1.h:52
+
static GR1 read_from_gr1_file(const std::shared_ptr< VarMgr > &var_mgr, const std::string &gr1_filename)
Stores a GR(1) condition.
Definition: GR1.h:109
+
static CUDD::BDD read_gr1_justice(const std::shared_ptr< VarMgr > &var_mgr, std::istream &in, std::size_t &line_number)
Stores a player justice.
Definition: GR1.h:59
+
+
+ + + + diff --git a/InputOutputPartition_8h_source.html b/InputOutputPartition_8h_source.html new file mode 100644 index 0000000..47d052d --- /dev/null +++ b/InputOutputPartition_8h_source.html @@ -0,0 +1,136 @@ + + + + + + + +LydiaSyft: src/synthesis/header/game/InputOutputPartition.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
LydiaSyft +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
InputOutputPartition.h
+
+
+
1 #ifndef INPUT_OUTPUT_PARTITION_H
+
2 #define INPUT_OUTPUT_PARTITION_H
+
3 
+
4 #include <stdexcept>
+
5 #include <vector>
+
6 
+
7 namespace Syft {
+
8 
+ +
13 private:
+
14 
+
15  static std::runtime_error bad_file_format_exception(std::size_t line_number);
+
16 
+
17 public:
+
18 
+
19  std::vector<std::string> input_variables;
+
20  std::vector<std::string> output_variables;
+
21 
+ +
26 
+
30  bool is_input(const std::string& var_name);
+
31 
+
35  bool is_output(const std::string& var_name);
+
36 
+
47  static InputOutputPartition read_from_file(const std::string& filename);
+
48 
+
57  static InputOutputPartition construct_from_input(const std::vector<std::string> inputs_substr, std::vector<std::string> outputs_substr);
+
58 };
+
59 
+
60 }
+
61 
+
62 #endif // INPUT_OUTPUT_PARTITION_H
+
A partition of variables into input and output variables.
Definition: InputOutputPartition.h:12
+
bool is_input(const std::string &var_name)
check if a variable is an input variable
Definition: InputOutputPartition.cpp:64
+
InputOutputPartition()
Creates a partition with no variables.
Definition: InputOutputPartition.cpp:17
+
static InputOutputPartition construct_from_input(const std::vector< std::string > inputs_substr, std::vector< std::string > outputs_substr)
Constructs a partition from inputs.
Definition: InputOutputPartition.cpp:56
+
bool is_output(const std::string &var_name)
check if a variable is an output variable
Definition: InputOutputPartition.cpp:68
+
static InputOutputPartition read_from_file(const std::string &filename)
Constructs a partition from a file.
Definition: InputOutputPartition.cpp:20
+
+
+ + + + diff --git a/LTLfMaxSetSynthesizer_8h_source.html b/LTLfMaxSetSynthesizer_8h_source.html new file mode 100644 index 0000000..858ef97 --- /dev/null +++ b/LTLfMaxSetSynthesizer_8h_source.html @@ -0,0 +1,140 @@ + + + + + + + +LydiaSyft: src/synthesis/header/synthesizer/LTLfMaxSetSynthesizer.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
LydiaSyft +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
LTLfMaxSetSynthesizer.h
+
+
+
1 //
+
2 // Created by shuzhu on 20/01/24.
+
3 //
+
4 
+
5 #ifndef SYFT_REACHABILITYMAXSETSYNTHESIZER_H
+
6 #define SYFT_REACHABILITYMAXSETSYNTHESIZER_H
+
7 
+
8 #include "automata/SymbolicStateDfa.h"
+
9 #include "Synthesizer.h"
+
10 #include "game/ReachabilityMaxSet.hpp"
+
11 
+
12 namespace Syft {
+
13 
+ +
20  private:
+
24  std::shared_ptr<VarMgr> var_mgr_;
+
28  SymbolicStateDfa spec_;
+
32  Player starting_player_;
+
36  Player protagonist_player_;
+
40  CUDD::BDD goal_states_;
+
44  CUDD::BDD state_space_;
+
45 
+
46  public:
+
47 
+
57  LTLfMaxSetSynthesizer(SymbolicStateDfa spec, Player starting_player, Player protagonist_player,
+
58  CUDD::BDD goal_states, CUDD::BDD state_space);
+
59 
+
65  MaxSetSynthesisResult run() const;
+
66 
+
67  void dump_dot(MaxSetSynthesisResult maxset, const std::string &def_filename,
+
68  const std::string &nondef_filename) const;
+
69 
+
70  };
+
71 
+
72 }
+
73 
+
74 #endif //SYFT_REACHABILITYMAXSETSYNTHESIZER_H
+
A maxset-synthesizer for a reachability game given as a symbolic-state DFA.
Definition: LTLfMaxSetSynthesizer.h:19
+
LTLfMaxSetSynthesizer(SymbolicStateDfa spec, Player starting_player, Player protagonist_player, CUDD::BDD goal_states, CUDD::BDD state_space)
Construct a MaxSet-LtlfSynthesizer.
Definition: LTLfMaxSetSynthesizer.cpp:12
+
MaxSetSynthesisResult run() const
Solves the MaxSet-LTLf synthesis problem.
Definition: LTLfMaxSetSynthesizer.cpp:25
+
A DFA with symbolic states and transitions.
Definition: SymbolicStateDfa.h:18
+
Definition: Synthesizer.h:24
+
+
+ + + + diff --git a/LTLfSynthesizer_8h_source.html b/LTLfSynthesizer_8h_source.html new file mode 100644 index 0000000..f13253c --- /dev/null +++ b/LTLfSynthesizer_8h_source.html @@ -0,0 +1,136 @@ + + + + + + + +LydiaSyft: src/synthesis/header/synthesizer/LTLfSynthesizer.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
LydiaSyft +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
LTLfSynthesizer.h
+
+
+
1 #ifndef SYFT_REACHABILITYSYNTHESIZER_H
+
2 #define SYFT_REACHABILITYSYNTHESIZER_H
+
3 
+
4 #include "automata/SymbolicStateDfa.h"
+
5 #include "Synthesizer.h"
+
6 #include "game/Reachability.hpp"
+
7 
+
8 namespace Syft {
+
9 
+ +
16  private:
+
20  std::shared_ptr<VarMgr> var_mgr_;
+
24  SymbolicStateDfa spec_;
+
28  Player starting_player_;
+
32  Player protagonist_player_;
+
36  CUDD::BDD goal_states_;
+
40  CUDD::BDD state_space_;
+
41 
+
42  public:
+
43 
+
53  LTLfSynthesizer(SymbolicStateDfa spec, Player starting_player, Player protagonist_player,
+
54  CUDD::BDD goal_states, CUDD::BDD state_space);
+
55 
+
61  SynthesisResult run() const;
+
62 
+
68  std::unique_ptr<Transducer> AbstractSingleStrategy(const SynthesisResult &result) const;
+
69 
+
70  };
+
71 
+
72 }
+
73 
+
74 #endif //SYFT_REACHABILITYSYNTHESIZER_H
+
A single-strategy-synthesizer for an LTLf formula given as a symbolic-state DFA.
Definition: LTLfSynthesizer.h:15
+
LTLfSynthesizer(SymbolicStateDfa spec, Player starting_player, Player protagonist_player, CUDD::BDD goal_states, CUDD::BDD state_space)
Construct an LtlfSynthesizer.
Definition: LTLfSynthesizer.cpp:8
+
SynthesisResult run() const
Solves the LTLf synthesis problem.
Definition: LTLfSynthesizer.cpp:19
+
std::unique_ptr< Transducer > AbstractSingleStrategy(const SynthesisResult &result) const
Abstract a winning strategy for the agent.
+
A DFA with symbolic states and transitions.
Definition: SymbolicStateDfa.h:18
+
Definition: Synthesizer.h:16
+
+
+ + + + diff --git a/OneStepRealizability_8h_source.html b/OneStepRealizability_8h_source.html new file mode 100644 index 0000000..2128f9e --- /dev/null +++ b/OneStepRealizability_8h_source.html @@ -0,0 +1,148 @@ + + + + + + + +LydiaSyft: src/synthesis/header/OneStepRealizability.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
LydiaSyft +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
OneStepRealizability.h
+
+
+
1 #ifndef ONE_STEP_REALIZABILITY_HPP
+
2 #define ONE_STEP_REALIZABILITY_HPP
+
3 
+
4 #include <z3++.h>
+
5 #include <set>
+
6 #include <lydia/visitor.hpp>
+
7 #include <optional>
+
8 
+
9 #include "game/InputOutputPartition.h"
+
10 #include "VarMgr.h"
+
11 
+
12 namespace Syft {
+
13 
+
14 
+
15  class SmtOneStepRealizabilityVisitor : public whitemech::lydia::Visitor {
+
16  public:
+
17  InputOutputPartition partition;
+
18  const VarMgr& var_mgr;
+
19  z3::context& z3_context;
+
20  z3::solver& solver;
+
21  z3::expr result;
+
22  std::set<std::string> uncontrollableVars;
+
23  // dummy value for 'result' since z3::expr does not have a default constructor
+
24  explicit SmtOneStepRealizabilityVisitor(const InputOutputPartition &partition, const Syft::VarMgr& var_mgr, z3::context& z3_context, z3::solver& solver)
+
25  : partition{partition}, var_mgr{var_mgr}, z3_context{z3_context}, solver{solver}, result{z3_context.bool_val(true)} {}
+ +
27  void visit(const whitemech::lydia::LTLfTrue &) override;
+
28  void visit(const whitemech::lydia::LTLfFalse &) override;
+
29  void visit(const whitemech::lydia::LTLfAtom &) override;
+
30  void visit(const whitemech::lydia::LTLfNot &) override;
+
31  void visit(const whitemech::lydia::LTLfAnd &) override;
+
32  void visit(const whitemech::lydia::LTLfOr &) override;
+
33  void visit(const whitemech::lydia::LTLfNext &) override;
+
34  void visit(const whitemech::lydia::LTLfWeakNext &) override;
+
35  void visit(const whitemech::lydia::LTLfUntil &) override;
+
36  void visit(const whitemech::lydia::LTLfRelease &) override;
+
37  void visit(const whitemech::lydia::LTLfEventually &) override;
+
38  void visit(const whitemech::lydia::LTLfAlways &) override;
+
39 
+
40  z3::expr apply(const whitemech::lydia::LTLfFormula &f);
+
41  };
+
42 
+
43  std::optional<CUDD::BDD> one_step_realizable(const whitemech::lydia::LTLfFormula &f, const InputOutputPartition &partition, const Syft::VarMgr& var_mgr);
+
44 
+
45 }
+
46 
+
47 #endif //ONE_STEP_REALIZABILITY_HPP
+
A partition of variables into input and output variables.
Definition: InputOutputPartition.h:12
+
Definition: OneStepRealizability.h:15
+
A dictionary that maps variable names to indices and vice versa.
Definition: VarMgr.h:15
+
+
+ + + + diff --git a/OneStepUnrealizability_8h_source.html b/OneStepUnrealizability_8h_source.html new file mode 100644 index 0000000..f06f641 --- /dev/null +++ b/OneStepUnrealizability_8h_source.html @@ -0,0 +1,149 @@ + + + + + + + +LydiaSyft: src/synthesis/header/OneStepUnrealizability.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
LydiaSyft +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
OneStepUnrealizability.h
+
+
+
1 #ifndef ONE_STEP_UNREALIZABILITY_HPP
+
2 #define ONE_STEP_UNREALIZABILITY_HPP
+
3 
+
4 #include <z3++.h>
+
5 #include <set>
+
6 #include <lydia/visitor.hpp>
+
7 #include <optional>
+
8 
+
9 #include "game/InputOutputPartition.h"
+
10 #include "Player.h"
+
11 #include "VarMgr.h"
+
12 
+
13 namespace Syft {
+
14 
+
15 
+
16  class SmtOneStepUnrealizabilityVisitor : public whitemech::lydia::Visitor {
+
17  public:
+
18  InputOutputPartition partition;
+
19  const VarMgr& var_mgr;
+
20  z3::context& z3_context;
+
21  z3::solver& solver;
+
22  z3::expr result;
+
23  Syft::Player starting_player;
+
24  // dummy value for 'result' since z3::expr does not have a default constructor
+
25  explicit SmtOneStepUnrealizabilityVisitor(const InputOutputPartition &partition, const Syft::VarMgr& var_mgr, z3::context& z3_context, z3::solver& solver, Syft::Player starting_player)
+
26  : partition{partition}, var_mgr{var_mgr}, z3_context{z3_context}, solver{solver}, result{z3_context.bool_val(true)}, starting_player{starting_player} {}
+ +
28  void visit(const whitemech::lydia::LTLfTrue &) override;
+
29  void visit(const whitemech::lydia::LTLfFalse &) override;
+
30  void visit(const whitemech::lydia::LTLfAtom &) override;
+
31  void visit(const whitemech::lydia::LTLfNot &) override;
+
32  void visit(const whitemech::lydia::LTLfAnd &) override;
+
33  void visit(const whitemech::lydia::LTLfOr &) override;
+
34  void visit(const whitemech::lydia::LTLfNext &) override;
+
35  void visit(const whitemech::lydia::LTLfWeakNext &) override;
+
36  void visit(const whitemech::lydia::LTLfUntil &) override;
+
37  void visit(const whitemech::lydia::LTLfRelease &) override;
+
38  void visit(const whitemech::lydia::LTLfEventually &) override;
+
39  void visit(const whitemech::lydia::LTLfAlways &) override;
+
40 
+
41  z3::expr apply(const whitemech::lydia::LTLfFormula &f);
+
42  };
+
43 
+
44  bool one_step_unrealizable(const whitemech::lydia::LTLfFormula &f, const InputOutputPartition &partition, const Syft::VarMgr& var_mgr, Syft::Player starting_player);
+
45 
+
46 }
+
47 
+
48 #endif //ONE_STEP_UNREALIZABILITY_HPP
+
A partition of variables into input and output variables.
Definition: InputOutputPartition.h:12
+
Definition: OneStepUnrealizability.h:16
+
A dictionary that maps variable names to indices and vice versa.
Definition: VarMgr.h:15
+
+
+ + + + diff --git a/Parser_8h_source.html b/Parser_8h_source.html new file mode 100644 index 0000000..aff4bb9 --- /dev/null +++ b/Parser_8h_source.html @@ -0,0 +1,150 @@ + + + + + + + +LydiaSyft: src/parser/Parser.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
LydiaSyft +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
Parser.h
+
+
+
1 //
+
2 // Created by shuzhu on 18/05/23.
+
3 //
+
4 
+
5 #ifndef LYDIASYFT_APARSER_H
+
6 #define LYDIASYFT_APARSER_H
+
7 
+
8 #include <stdexcept>
+
9 #include <vector>
+
10 
+
11 namespace Syft {
+
12 
+
16  class Parser {
+
17  private:
+
18 
+
19  std::vector<std::string> input_variables;
+
20  std::vector<std::string> output_variables;
+
21  std::string formula;
+
22  bool sys_first;
+
23 
+
24  std::string exec(const char* cmd);
+
25  std::string ltrim(const std::string &s);
+
26 
+
27  std::string rtrim(const std::string &s);
+
28 
+
29  std::string trim(const std::string &s);
+
30 
+
31  public:
+
32 
+
36  Parser();
+
37 
+
42  static Parser read_from_file(const std::string &syfco_location, const std::string &filename);
+
43 
+
47  std::vector<std::string> get_input_variables() const;
+
48 
+
52  std::vector<std::string> get_output_variables() const;
+
53 
+
57  std::string get_formula() const;
+
58 
+
62  bool get_sys_first() const;
+
63  };
+
64 
+
65 }
+
66 
+
67 #endif //LYDIASYFT_APARSER_H
+
A parser for reading LTLf synthesis benchmarks in TLSF format.
Definition: Parser.h:16
+
std::vector< std::string > get_output_variables() const
Return output variables in a vector.
Definition: Parser.cpp:73
+
std::vector< std::string > get_input_variables() const
Return input variables in a vector.
Definition: Parser.cpp:69
+
std::string get_formula() const
Return the formula.
Definition: Parser.cpp:77
+
Parser()
Creates a parser with no items.
Definition: Parser.cpp:15
+
static Parser read_from_file(const std::string &syfco_location, const std::string &filename)
Obtain an LTLf formula and construct a partition from a TLSF file.
Definition: Parser.cpp:30
+
bool get_sys_first() const
Return true if the target is a Moore machine.
Definition: Parser.cpp:81
+
+
+ + + + diff --git a/Player_8h_source.html b/Player_8h_source.html new file mode 100644 index 0000000..3c7f3fd --- /dev/null +++ b/Player_8h_source.html @@ -0,0 +1,111 @@ + + + + + + + +LydiaSyft: src/synthesis/header/Player.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
LydiaSyft +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
Player.h
+
+
+
1 #ifndef PLAYER_H
+
2 #define PLAYER_H
+
3 
+
4 namespace Syft {
+
5 
+
9 enum class Player {
+
10  Agent,
+
11  Environment
+
12 };
+
13 
+
14 }
+
15 
+
16 #endif // PLAYER_H
+
+
+ + + + diff --git a/Preprocessing_8h_source.html b/Preprocessing_8h_source.html new file mode 100644 index 0000000..1519857 --- /dev/null +++ b/Preprocessing_8h_source.html @@ -0,0 +1,114 @@ + + + + + + + +LydiaSyft: src/synthesis/header/Preprocessing.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
LydiaSyft +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
Preprocessing.h
+
+
+
1 #ifndef PREPROCESSING_HPP
+
2 #define PREPROCESSING_HPP
+
3 
+
4 #include "Synthesizer.h"
+
5 #include "game/InputOutputPartition.h"
+
6 #include <lydia/logic/ltlf/base.hpp>
+
7 
+
8 namespace Syft {
+
9 
+
10  OneStepSynthesisResult
+
11  preprocessing(const whitemech::lydia::LTLfFormula &formula, const InputOutputPartition &partition,
+
12  const Syft::VarMgr &var_mgr, Syft::Player starting_player);
+
13 }
+
14 
+
15 #endif //PREPROCESSING_HPP
+
A dictionary that maps variable names to indices and vice versa.
Definition: VarMgr.h:15
+
+
+ + + + diff --git a/Quantification_8h_source.html b/Quantification_8h_source.html new file mode 100644 index 0000000..91c68b6 --- /dev/null +++ b/Quantification_8h_source.html @@ -0,0 +1,171 @@ + + + + + + + +LydiaSyft: src/synthesis/header/game/Quantification.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
LydiaSyft +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
Quantification.h
+
+
+
1 #ifndef QUANTIFICATION_H
+
2 #define QUANTIFICATION_H
+
3 
+
4 #include <cuddObj.hh>
+
5 
+
6 namespace Syft {
+
7 
+ +
12  public:
+
13  virtual ~Quantification() {}
+
14  virtual CUDD::BDD apply(const CUDD::BDD& bdd) const = 0;
+
15 };
+
16 
+
20 class NoQuantification final : public Quantification {
+
21  public:
+
22  CUDD::BDD apply(const CUDD::BDD& bdd) const override;
+
23 };
+
24 
+
28 class Forall final : public Quantification {
+
29  private:
+
30  CUDD::BDD universal_variables_;
+
31 
+
32  public:
+
33  Forall(CUDD::BDD universal_variables);
+
34 
+
35  CUDD::BDD apply(const CUDD::BDD& bdd) const override;
+
36 };
+
37 
+
41 class Exists final : public Quantification {
+
42  private:
+
43  CUDD::BDD existential_variables_;
+
44 
+
45  public:
+
46  Exists(CUDD::BDD existential_variables);
+
47 
+
48  CUDD::BDD apply(const CUDD::BDD& bdd) const override;
+
49 };
+
50 
+
54 class ForallExists final : public Quantification {
+
55  private:
+
56  Forall forall_;
+
57  Exists exists_;
+
58 
+
59  public:
+
60  ForallExists(CUDD::BDD universal_variables,
+
61  CUDD::BDD existential_variables);
+
62 
+
63  CUDD::BDD apply(const CUDD::BDD& bdd) const override;
+
64 };
+
65 
+
69  class ExistsForall final : public Quantification {
+
70  private:
+
71  Exists exists_;
+
72  Forall forall_;
+
73 
+
74  public:
+
75  ExistsForall(CUDD::BDD existential_variables,
+
76  CUDD::BDD universal_variables);
+
77 
+
78  CUDD::BDD apply(const CUDD::BDD& bdd) const override;
+
79  };
+
80 
+
81 
+
82 
+
83 }
+
84 
+
85 #endif // QUANTIFICATION_H
+
Performs both universal and existential quantification.
Definition: Quantification.h:69
+
Performs existential quantification.
Definition: Quantification.h:41
+
Performs both universal and existential quantification.
Definition: Quantification.h:54
+
Performs universal quantification.
Definition: Quantification.h:28
+
Performs no quantification.
Definition: Quantification.h:20
+
Abstract class representing a quantification operation on BDDs.
Definition: Quantification.h:11
+
+
+ + + + diff --git a/ReachabilityMaxSetSynthesizer_8h_source.html b/ReachabilityMaxSetSynthesizer_8h_source.html new file mode 100644 index 0000000..71e6084 --- /dev/null +++ b/ReachabilityMaxSetSynthesizer_8h_source.html @@ -0,0 +1,142 @@ + + + + + + + +LydiaSyft: src/synthesis/header/game/ReachabilityMaxSetSynthesizer.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
LydiaSyft +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
ReachabilityMaxSetSynthesizer.h
+
+
+
1 //
+
2 // Created by shuzhu on 20/01/24.
+
3 //
+
4 
+
5 #ifndef SYFT_REACHABILITYMAXSETSYNTHESIZER_H
+
6 #define SYFT_REACHABILITYMAXSETSYNTHESIZER_H
+
7 
+
8 #include "game/DfaGameSynthesizer.h"
+
9 
+
10 namespace Syft {
+
11  struct MaxSet {
+
12  CUDD::BDD deferring_strategy;
+
13  CUDD::BDD nondeferring_strategy;
+
14  };
+
15 
+ +
20  private:
+
21 
+
22  CUDD::BDD goal_states_;
+
23  CUDD::BDD state_space_;
+
24 
+
25  public:
+
26 
+
34  ReachabilityMaxSetSynthesizer(SymbolicStateDfa spec, Player starting_player, Player protagonist_player,
+
35  CUDD::BDD goal_states, CUDD::BDD state_space);
+
36 
+
45  virtual SynthesisResult run() const final;
+
46 
+
47  MaxSet AbstractMaxSet(const SynthesisResult &) const;
+
48 
+
49  void dump_dot(MaxSet maxset, const std::string &def_filename, const std::string &nondef_filename) const;
+
50 
+
51  };
+
52 
+
53 }
+
54 
+
55 #endif //SYFT_REACHABILITYMAXSETSYNTHESIZER_H
+
A synthesizer for a game whose arena is a symbolic-state DFA.
Definition: DfaGameSynthesizer.h:15
+
A maxset-synthesizer for a reachability game given as a symbolic-state DFA.
Definition: ReachabilityMaxSetSynthesizer.h:19
+
ReachabilityMaxSetSynthesizer(SymbolicStateDfa spec, Player starting_player, Player protagonist_player, CUDD::BDD goal_states, CUDD::BDD state_space)
Construct a maxset-synthesizer for the given reachability game.
Definition: ReachabilityMaxSetSynthesizer.cpp:10
+
virtual SynthesisResult run() const final
Solves the reachability game.
Definition: ReachabilityMaxSetSynthesizer.cpp:19
+
A DFA with symbolic states and transitions.
Definition: SymbolicStateDfa.h:16
+
Definition: ReachabilityMaxSetSynthesizer.h:11
+
Definition: Synthesizer.h:16
+
+
+ + + + diff --git a/ReachabilityMaxSet_8hpp_source.html b/ReachabilityMaxSet_8hpp_source.html new file mode 100644 index 0000000..f0aa2f2 --- /dev/null +++ b/ReachabilityMaxSet_8hpp_source.html @@ -0,0 +1,140 @@ + + + + + + + +LydiaSyft: src/synthesis/header/game/ReachabilityMaxSet.hpp Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
LydiaSyft +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
ReachabilityMaxSet.hpp
+
+
+
1 //
+
2 // Created by shuzhu on 16/04/24.
+
3 //
+
4 
+
5 #ifndef LYDIASYFT_REACHABILITYMAXSET_HPP
+
6 #define LYDIASYFT_REACHABILITYMAXSET_HPP
+
7 
+
8 
+
9 #include "game/DfaGameSynthesizer.h"
+
10 
+
11 namespace Syft {
+ +
18  private:
+
22  CUDD::BDD goal_states_;
+
26  CUDD::BDD state_space_;
+
27 
+
28  public:
+
29 
+
39  ReachabilityMaxSet(const SymbolicStateDfa &spec, Player starting_player, Player protagonist_player,
+
40  const CUDD::BDD &goal_states, const CUDD::BDD &state_space);
+
41 
+
42 
+ +
52 
+
61  SynthesisResult run() const final;
+
62 
+
63  void dump_dot(MaxSetSynthesisResult maxset, const std::string &def_filename,
+
64  const std::string &nondef_filename) const;
+
65 
+
66  };
+
67 }
+
68 
+
69 
+
70 #endif //LYDIASYFT_REACHABILITYMAXSET_HPP
+
A synthesizer for a game whose arena is a symbolic-state DFA.
Definition: DfaGameSynthesizer.h:15
+
A maxset-strategy-synthesizer for a reachability game given as a symbolic-state DFA.
Definition: ReachabilityMaxSet.hpp:17
+
ReachabilityMaxSet(const SymbolicStateDfa &spec, Player starting_player, Player protagonist_player, const CUDD::BDD &goal_states, const CUDD::BDD &state_space)
Construct a maxset-strategy-synthesizer for the given reachability game.
Definition: ReachabilityMaxSet.cpp:8
+
MaxSetSynthesisResult run_maxset() const
Solves the maxset-reachability game.
Definition: ReachabilityMaxSet.cpp:57
+
SynthesisResult run() const final
Solve standard reachability game.
Definition: ReachabilityMaxSet.cpp:15
+
A DFA with symbolic states and transitions.
Definition: SymbolicStateDfa.h:18
+
Definition: Synthesizer.h:24
+
Definition: Synthesizer.h:16
+
+
+ + + + diff --git a/ReachabilitySynthesizer_8h_source.html b/ReachabilitySynthesizer_8h_source.html new file mode 100644 index 0000000..04cd918 --- /dev/null +++ b/ReachabilitySynthesizer_8h_source.html @@ -0,0 +1,129 @@ + + + + + + + +LydiaSyft: src/synthesis/header/game/ReachabilitySynthesizer.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
LydiaSyft +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
ReachabilitySynthesizer.h
+
+
+
1 #ifndef SYFT_REACHABILITYSYNTHESIZER_H
+
2 #define SYFT_REACHABILITYSYNTHESIZER_H
+
3 
+
4 #include "game/DfaGameSynthesizer.h"
+
5 
+
6 namespace Syft {
+
7 
+ +
12  private:
+
13 
+
14  CUDD::BDD goal_states_;
+
15  CUDD::BDD state_space_;
+
16 
+
17  public:
+
18 
+
28  ReachabilitySynthesizer(SymbolicStateDfa spec, Player starting_player, Player protagonist_player,
+
29  CUDD::BDD goal_states, CUDD::BDD state_space);
+
30 
+
39  virtual SynthesisResult run() const final;
+
40 
+
41  };
+
42 
+
43 }
+
44 
+
45 #endif //SYFT_REACHABILITYSYNTHESIZER_H
+
A synthesizer for a game whose arena is a symbolic-state DFA.
Definition: DfaGameSynthesizer.h:15
+
A single-strategy-synthesizer for a reachability game given as a symbolic-state DFA.
Definition: ReachabilitySynthesizer.h:11
+
virtual SynthesisResult run() const final
Solves the reachability game.
Definition: ReachabilitySynthesizer.cpp:16
+
ReachabilitySynthesizer(SymbolicStateDfa spec, Player starting_player, Player protagonist_player, CUDD::BDD goal_states, CUDD::BDD state_space)
Construct a single-strategy-synthesizer for the given reachability game.
Definition: ReachabilitySynthesizer.cpp:7
+
A DFA with symbolic states and transitions.
Definition: SymbolicStateDfa.h:16
+
Definition: Synthesizer.h:16
+
+
+ + + + diff --git a/Reachability_8hpp_source.html b/Reachability_8hpp_source.html new file mode 100644 index 0000000..9bf64e2 --- /dev/null +++ b/Reachability_8hpp_source.html @@ -0,0 +1,132 @@ + + + + + + + +LydiaSyft: src/synthesis/header/game/Reachability.hpp Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
LydiaSyft +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
Reachability.hpp
+
+
+
1 //
+
2 // Created by shuzhu on 16/04/24.
+
3 //
+
4 
+
5 #ifndef LYDIASYFT_REACHABILITY_HPP
+
6 #define LYDIASYFT_REACHABILITY_HPP
+
7 
+
8 #include "game/DfaGameSynthesizer.h"
+
9 
+
10 namespace Syft {
+ +
17  private:
+
21  CUDD::BDD goal_states_;
+
25  CUDD::BDD state_space_;
+
26 
+
27  public:
+
28 
+
38  Reachability(const SymbolicStateDfa &spec, Player starting_player, Player protagonist_player,
+
39  const CUDD::BDD &goal_states, const CUDD::BDD &state_space);
+
40 
+
41 
+
50  SynthesisResult run() const final;
+
51 
+
52  };
+
53 }
+
54 
+
55 
+
56 #endif //LYDIASYFT_REACHABILITY_HPP
+
A synthesizer for a game whose arena is a symbolic-state DFA.
Definition: DfaGameSynthesizer.h:15
+
A single-strategy-synthesizer for a reachability game given as a symbolic-state DFA.
Definition: Reachability.hpp:16
+
SynthesisResult run() const final
Solves the reachability game.
Definition: Reachability.cpp:15
+
Reachability(const SymbolicStateDfa &spec, Player starting_player, Player protagonist_player, const CUDD::BDD &goal_states, const CUDD::BDD &state_space)
Construct a single-strategy-synthesizer for the given reachability game.
Definition: Reachability.cpp:8
+
A DFA with symbolic states and transitions.
Definition: SymbolicStateDfa.h:18
+
Definition: Synthesizer.h:16
+
+
+ + + + diff --git a/StabilityLtlfSynthesizer_8h_source.html b/StabilityLtlfSynthesizer_8h_source.html new file mode 100644 index 0000000..69cf2f5 --- /dev/null +++ b/StabilityLtlfSynthesizer_8h_source.html @@ -0,0 +1,144 @@ + + + + + + + +LydiaSyft: src/synthesis/header/synthesizer/StabilityLtlfSynthesizer.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
LydiaSyft +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
StabilityLtlfSynthesizer.h
+
+
+
1 //
+
2 // Created by shuzhu on 21/01/24.
+
3 //
+
4 
+
5 #ifndef LYDIASYFT_STABILITYLTLFSYNTHESIZER_H
+
6 #define LYDIASYFT_STABILITYLTLFSYNTHESIZER_H
+
7 
+
8 #include "automata/SymbolicStateDfa.h"
+
9 #include "Synthesizer.h"
+
10 #include "game/BuchiReachability.hpp"
+
11 
+
12 namespace Syft {
+
13 
+
14 
+ +
22  private:
+
26  std::shared_ptr<VarMgr> var_mgr_;
+
30  SymbolicStateDfa spec_;
+
34  Player starting_player_;
+
38  Player protagonist_player_;
+
42  CUDD::BDD goal_states_;
+
46  CUDD::BDD state_space_;
+
50  CUDD::BDD assumption_;
+
51 
+
52  protected:
+
53  CUDD::BDD load_CNF(const std::string &filename) const;
+
54 
+
55  public:
+
56 
+
67  StabilityLtlfSynthesizer(SymbolicStateDfa spec, Player starting_player, Player protagonist_player,
+
68  CUDD::BDD goal_states, CUDD::BDD state_space,
+
69  std::string &assumption_filename);
+
70 
+
71 
+
77  SynthesisResult run() const;
+
78 
+
79  };
+
80 
+
81 }
+
82 
+
83 #endif //LYDIASYFT_STABILITYLTLFSYNTHESIZER_H
+
A single-strategy-synthesizer for an LTLf formula given as a symbolic-state DFA, considering environm...
Definition: StabilityLtlfSynthesizer.h:21
+
SynthesisResult run() const
Solves the synthesis problem of LTLf with simple Stability environment assumption.
Definition: StabilityLtlfSynthesizer.cpp:27
+
StabilityLtlfSynthesizer(SymbolicStateDfa spec, Player starting_player, Player protagonist_player, CUDD::BDD goal_states, CUDD::BDD state_space, std::string &assumption_filename)
Construct an StabilityLtlfSynthesizer.
Definition: StabilityLtlfSynthesizer.cpp:14
+
A DFA with symbolic states and transitions.
Definition: SymbolicStateDfa.h:18
+
Definition: Synthesizer.h:16
+
+
+ + + + diff --git a/StableReachabilitySynthesizer_8h_source.html b/StableReachabilitySynthesizer_8h_source.html new file mode 100644 index 0000000..2cb2570 --- /dev/null +++ b/StableReachabilitySynthesizer_8h_source.html @@ -0,0 +1,142 @@ + + + + + + + +LydiaSyft: src/synthesis/header/game/StableReachabilitySynthesizer.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
LydiaSyft +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
StableReachabilitySynthesizer.h
+
+
+
1 //
+
2 // Created by shuzhu on 21/01/24.
+
3 //
+
4 
+
5 #ifndef LYDIASYFT_STABLEREACHABILITYSYNTHESIZER_H
+
6 #define LYDIASYFT_STABLEREACHABILITYSYNTHESIZER_H
+
7 
+
8 #include "game/DfaGameSynthesizer.h"
+
9 
+
10 namespace Syft {
+
11 
+ +
16  private:
+
17 
+
18  CUDD::BDD goal_states_;
+
19  CUDD::BDD state_space_;
+
20 
+
21 
+
22  //fair
+
23  CUDD::BDD assumption_;
+
24 
+
25  protected:
+
26  CUDD::BDD load_CNF(const std::string &filename) const;
+
27 
+
28  public:
+
29 
+
37  StableReachabilitySynthesizer(SymbolicStateDfa spec, Player starting_player, Player protagonist_player,
+
38  CUDD::BDD goal_states, CUDD::BDD state_space,
+
39  std::string &assumption_filename);
+
40 
+
41 
+
50  virtual SynthesisResult run() const final;
+
51 
+
52  };
+
53 
+
54 }
+
55 
+
56 #endif //LYDIASYFT_STABLEREACHABILITYSYNTHESIZER_H
+
A synthesizer for a game whose arena is a symbolic-state DFA.
Definition: DfaGameSynthesizer.h:15
+
A single-strategy-synthesizer for a Buchi-reachability game given as a symbolic-state DFA.
Definition: StableReachabilitySynthesizer.h:15
+
virtual SynthesisResult run() const final
Solves the coBuchi-reachability game.
Definition: StableReachabilitySynthesizer.cpp:26
+
StableReachabilitySynthesizer(SymbolicStateDfa spec, Player starting_player, Player protagonist_player, CUDD::BDD goal_states, CUDD::BDD state_space, std::string &assumption_filename)
Construct a single-strategy-synthesizer for the given Buchi-reachability game.
Definition: StableReachabilitySynthesizer.cpp:14
+
A DFA with symbolic states and transitions.
Definition: SymbolicStateDfa.h:16
+
Definition: Synthesizer.h:16
+
+
+ + + + diff --git a/Stopwatch_8h_source.html b/Stopwatch_8h_source.html new file mode 100644 index 0000000..f57c0cb --- /dev/null +++ b/Stopwatch_8h_source.html @@ -0,0 +1,128 @@ + + + + + + + +LydiaSyft: src/synthesis/header/Stopwatch.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
LydiaSyft +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
Stopwatch.h
+
+
+
1 #ifndef STOPWATCH_H
+
2 #define STOPWATCH_H
+
3 
+
4 #include <chrono>
+
5 
+
6 namespace Syft {
+
7 
+
11 class Stopwatch {
+
12  private:
+
13 
+
14  bool is_started_;
+
15  std::chrono::high_resolution_clock::time_point start_time_;
+
16 
+
17  public:
+
18 
+
22  Stopwatch();
+
23 
+
27  void start();
+
28 
+
37  std::chrono::milliseconds stop();
+
38 
+
39 };
+
40 
+
41 }
+
42 
+
43 #endif // STOPWATCH_H
+
Stopwatch for timing executions.
Definition: Stopwatch.h:11
+
std::chrono::milliseconds stop()
Stop the stopwatch.
Definition: Stopwatch.cpp:16
+
Stopwatch()
Create a stopwatch without starting it.
Definition: Stopwatch.cpp:7
+
void start()
Start the stopwatch.
Definition: Stopwatch.cpp:11
+
+
+ + + + diff --git a/SymbolicStateDfa_8h_source.html b/SymbolicStateDfa_8h_source.html new file mode 100644 index 0000000..54bd47a --- /dev/null +++ b/SymbolicStateDfa_8h_source.html @@ -0,0 +1,199 @@ + + + + + + + +LydiaSyft: src/synthesis/header/automata/SymbolicStateDfa.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
LydiaSyft +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
SymbolicStateDfa.h
+
+
+
1 #ifndef SYMBOLIC_STATE_DFA_H
+
2 #define SYMBOLIC_STATE_DFA_H
+
3 
+
4 #include <memory>
+
5 #include <vector>
+
6 
+
7 #include <cuddObj.hh>
+
8 
+
9 #include "ExplicitStateDfaAdd.h"
+
10 
+
11 namespace Syft {
+
12 
+ +
19  private:
+
20 
+
21  std::shared_ptr<VarMgr> var_mgr_;
+
22  std::size_t automaton_id_;
+
23 
+
24  std::vector<int> initial_state_;
+
25  CUDD::BDD final_states_;
+
26  std::vector<CUDD::BDD> transition_function_;
+
27 
+
28  SymbolicStateDfa(std::shared_ptr<VarMgr> var_mgr);
+
29 
+
30  static std::pair<std::size_t, std::size_t> create_state_variables(
+
31  std::shared_ptr<VarMgr> &mgr,
+
32  std::size_t state_count);
+
33 
+
34  static CUDD::BDD state_to_bdd(const std::shared_ptr<VarMgr> &mgr,
+
35  std::size_t automaton_id,
+
36  std::size_t state);
+
37 
+
38  static CUDD::BDD state_set_to_bdd(
+
39  const std::shared_ptr<VarMgr> &mgr,
+
40  std::size_t automaton_id,
+
41  const std::vector<size_t> &states);
+
42 
+
43  static std::vector<CUDD::BDD> symbolic_transition_function(
+
44  const std::shared_ptr<VarMgr> &mgr,
+
45  std::size_t automaton_id,
+
46  const std::vector<CUDD::ADD> &transition_function);
+
47 
+
48  public:
+
49 
+
50 
+
61  static SymbolicStateDfa from_explicit(const ExplicitStateDfaAdd &explicit_dfa);
+
62 
+
74  static SymbolicStateDfa from_predicates(std::shared_ptr<VarMgr> var_mgr,
+
75  std::vector<CUDD::BDD> predicates);
+
76 
+
80  std::shared_ptr<VarMgr> var_mgr() const;
+
81 
+
88  std::size_t automaton_id() const;
+
89 
+
93  std::vector<int> initial_state() const;
+
94 
+
98  CUDD::BDD initial_state_bdd() const;
+
99 
+
103  CUDD::BDD final_states() const;
+
104 
+
111  std::vector<CUDD::BDD> transition_function() const;
+
112 
+
121  void restrict_dfa_with_states(const CUDD::BDD &valid_states);
+
122 
+
129  void restrict_dfa_with_transitions(const CUDD::BDD &feasible_moves);
+
130 
+
139  void dump_dot(const std::string &filename) const;
+
140 
+
148  static SymbolicStateDfa product_AND(const std::vector<SymbolicStateDfa> &dfa_vector);
+
149 
+
157  static std::vector<int> state_to_binary(std::size_t state,
+
158  std::size_t bit_count);
+
159 
+
165  void new_sink_states(const CUDD::BDD &sink_states);
+
166 
+
174  static SymbolicStateDfa product_OR(const std::vector<SymbolicStateDfa> &dfa_vector);
+
175 
+
182  static SymbolicStateDfa complement(const SymbolicStateDfa dfa);
+
183  };
+
184 
+
185 }
+
186 
+
187 #endif // SYMBOLIC_STATE_DFA_H
+
A DFA with explicit states and symbolic transitions represented in ADDs.
Definition: ExplicitStateDfaAdd.h:18
+
A DFA with symbolic states and transitions.
Definition: SymbolicStateDfa.h:18
+
CUDD::BDD final_states() const
Returns the BDD encoding the set of final states.
Definition: SymbolicStateDfa.cpp:135
+
std::size_t automaton_id() const
Returns the automaton ID.
Definition: SymbolicStateDfa.cpp:123
+
static std::vector< int > state_to_binary(std::size_t state, std::size_t bit_count)
Returns the binary encoding of a given state index.
Definition: SymbolicStateDfa.cpp:27
+
static SymbolicStateDfa product_OR(const std::vector< SymbolicStateDfa > &dfa_vector)
Returns a product AND of two symbolic DFAs.
Definition: SymbolicStateDfa.cpp:245
+
void restrict_dfa_with_states(const CUDD::BDD &valid_states)
Restrict a symbolic DFA with a given set of states.
Definition: SymbolicStateDfa.cpp:143
+
std::vector< CUDD::BDD > transition_function() const
Returns the transition function of the DFA as a vector of BDDs.
Definition: SymbolicStateDfa.cpp:139
+
std::vector< int > initial_state() const
Returns the bitvector representing the initial state of the DFA.
Definition: SymbolicStateDfa.cpp:127
+
void new_sink_states(const CUDD::BDD &sink_states)
Shrink a set of states to a sink state.
Definition: SymbolicStateDfa.cpp:233
+
static SymbolicStateDfa complement(const SymbolicStateDfa dfa)
Returns the complement of a symbolic DFA.
Definition: SymbolicStateDfa.cpp:283
+
CUDD::BDD initial_state_bdd() const
Returns the BDD representing the initial state of the DFA.
Definition: SymbolicStateDfa.cpp:131
+
static SymbolicStateDfa product_AND(const std::vector< SymbolicStateDfa > &dfa_vector)
Returns a product AND of two symbolic DFAs.
Definition: SymbolicStateDfa.cpp:196
+
static SymbolicStateDfa from_predicates(std::shared_ptr< VarMgr > var_mgr, std::vector< CUDD::BDD > predicates)
Creates a simple automaton that remembers the value of predicates.
Definition: SymbolicStateDfa.cpp:179
+
void restrict_dfa_with_transitions(const CUDD::BDD &feasible_moves)
Restrict a symbolic DFA with a set of feasible moves.
Definition: SymbolicStateDfa.cpp:154
+
static SymbolicStateDfa from_explicit(const ExplicitStateDfaAdd &explicit_dfa)
Converts an explicit DFA to a symbolic representation.
Definition: SymbolicStateDfa.cpp:92
+
void dump_dot(const std::string &filename) const
Saves the symbolic representation of the DFA in a .dot file.
Definition: SymbolicStateDfa.cpp:162
+
std::shared_ptr< VarMgr > var_mgr() const
Returns the variable manager.
Definition: SymbolicStateDfa.cpp:119
+
+
+ + + + diff --git a/Synthesizer_8h_source.html b/Synthesizer_8h_source.html new file mode 100644 index 0000000..a5c1915 --- /dev/null +++ b/Synthesizer_8h_source.html @@ -0,0 +1,157 @@ + + + + + + + +LydiaSyft: src/synthesis/header/Synthesizer.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
LydiaSyft +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
Synthesizer.h
+
+
+
1 #ifndef SYNTHESIZER_H
+
2 #define SYNTHESIZER_H
+
3 
+
4 #include <memory>
+
5 
+
6 #include "game/Transducer.h"
+
7 #include <tuple>
+
8 #include <optional>
+
9 
+
10 
+
11 namespace Syft {
+
12 
+
13  static const std::string REALIZABLE_STR = "REALIZABLE";
+
14  static const std::string UNREALIZABLE_STR = "UNREALIZABLE";
+
15 
+
16  struct SynthesisResult {
+
17  bool realizability;
+
18  CUDD::BDD winning_states;
+
19  CUDD::BDD winning_moves;
+
20  std::unique_ptr<Transducer> transducer;
+
21  CUDD::BDD safe_states;
+
22  };
+
23 
+ +
25  bool realizability;
+
26  CUDD::BDD deferring_strategy;
+
27  CUDD::BDD nondeferring_strategy;
+
28  };
+
29 
+ +
31  std::optional<bool> realizability = std::nullopt;
+
32  CUDD::BDD winning_move;
+
33  };
+
34 
+
40  template<class Spec>
+
41  class Synthesizer {
+
42  protected:
+
46  Spec spec_;
+
47 
+
48  public:
+
49 
+
50  Synthesizer(Spec spec)
+
51  : spec_(std::move(spec)) {}
+
52 
+
53 
+
54  virtual ~Synthesizer() {}
+
55 
+
64  virtual SynthesisResult run() const = 0;
+
65  };
+
66 
+
67 }
+
68 
+
69 #endif // SYNTHESIZER_H
+
Abstract class for synthesizers.
Definition: Synthesizer.h:41
+
virtual SynthesisResult run() const =0
Solves the synthesis problem of the specification.
+
Spec spec_
The game arena.
Definition: Synthesizer.h:46
+
Definition: Synthesizer.h:24
+
Definition: Synthesizer.h:30
+
Definition: Synthesizer.h:16
+
+
+ + + + diff --git a/Transducer_8h_source.html b/Transducer_8h_source.html new file mode 100644 index 0000000..62f0361 --- /dev/null +++ b/Transducer_8h_source.html @@ -0,0 +1,139 @@ + + + + + + + +LydiaSyft: src/synthesis/header/game/Transducer.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
LydiaSyft +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
Transducer.h
+
+
+
1 #ifndef TRANSDUCER_H
+
2 #define TRANSDUCER_H
+
3 
+
4 #include <memory>
+
5 #include <unordered_map>
+
6 #include <vector>
+
7 
+
8 #include <cuddObj.hh>
+
9 
+
10 #include "Player.h"
+
11 #include "VarMgr.h"
+
12 
+
13 namespace Syft {
+
14 
+
20 class Transducer {
+
21  private:
+
22 
+
23  const std::shared_ptr<VarMgr>& var_mgr_;
+
24  const std::vector<int>& initial_vector_;
+
25  const std::unordered_map<int, CUDD::BDD>& output_function_;
+
26  const std::vector<CUDD::BDD>& transition_function_;
+
27  const Player starting_player_;
+
28  const Player protagonist_player_;
+
29 
+
30  public:
+
31 
+
32  Transducer(const std::shared_ptr<VarMgr>& var_mgr,
+
33  const std::vector<int>& initial_vector,
+
34  const std::unordered_map<int, CUDD::BDD>& output_function,
+
35  const std::vector<CUDD::BDD>& transition_function,
+
36  Player starting_player,
+
37  Player protagonist_player = Player::Agent);
+
38 
+
42  void dump_dot(const std::string& filename) const;
+
43 };
+
44 
+
45 }
+
46 
+
47 #endif // TRANSDUCER_H
+
A symbolic tranducer representing a winning strategy for a game.
Definition: Transducer.h:20
+
void dump_dot(const std::string &filename) const
Saves the output function of the transducer in a .dot file.
Definition: Transducer.cpp:21
+
+
+ + + + diff --git a/VarMgr_8h_source.html b/VarMgr_8h_source.html new file mode 100644 index 0000000..5dab0df --- /dev/null +++ b/VarMgr_8h_source.html @@ -0,0 +1,229 @@ + + + + + + + +LydiaSyft: src/synthesis/header/VarMgr.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
LydiaSyft +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
VarMgr.h
+
+
+
1 #ifndef VAR_MGR_H
+
2 #define VAR_MGR_H
+
3 
+
4 #include <memory>
+
5 #include <unordered_map>
+
6 #include <vector>
+
7 
+
8 #include "cuddObj.hh"
+
9 
+
10 namespace Syft {
+
11 
+
15  class VarMgr {
+
16  private:
+
17 
+
18  std::shared_ptr<CUDD::Cudd> mgr_;
+
19  std::unordered_map<int, std::string> index_to_name_;
+
20  std::unordered_map<std::string, CUDD::BDD> name_to_variable_;
+
21  std::size_t state_variable_count_ = 0;
+
22  std::vector<std::vector<CUDD::BDD>> state_variables_;
+
23  std::vector<CUDD::BDD> input_variables_;
+
24  std::vector<CUDD::BDD> output_variables_;
+
25  std::size_t total_variable_count_ = 0;
+
26 
+
27  public:
+
28 
+
32  VarMgr();
+
33 
+
40  void create_named_variables(const std::vector<std::string> &variable_names);
+
41 
+
52  std::size_t create_state_variables(std::size_t variable_count);
+
53 
+
66  std::size_t create_product_state_space(
+
67  const std::vector<std::size_t> &automaton_ids);
+
68 
+
69 
+
73  CUDD::BDD state_variable(std::size_t automaton_id, std::size_t i) const;
+
74 
+
85  CUDD::BDD state_vector_to_bdd(std::size_t automaton_id,
+
86  const std::vector<int> &state_vector) const;
+
87 
+
96  void partition_variables(const std::vector<std::string> &input_names,
+
97  const std::vector<std::string> &output_names);
+
98 
+
102  std::shared_ptr<CUDD::Cudd> cudd_mgr() const;
+
103 
+
107  CUDD::BDD name_to_variable(const std::string &name) const;
+
108 
+
112  std::string index_to_name(int index) const;
+
113 
+
117  std::size_t total_variable_count() const;
+
118 
+
122  std::size_t total_state_variable_count() const;
+
123 
+
127  std::size_t state_variable_count(std::size_t automaton_id) const;
+
128 
+
132  std::size_t input_variable_count() const;
+
133 
+
137  std::size_t output_variable_count() const;
+
138 
+
142  CUDD::BDD input_cube() const;
+
143 
+
147  CUDD::BDD output_cube() const;
+
148 
+
152  CUDD::BDD state_variables_cube(std::size_t automaton_id) const;
+
153 
+
165  std::vector<int> make_eval_vector(std::size_t automaton_id,
+
166  const std::vector<int> &state_vector) const;
+
167 
+
179  std::vector<int> make_state_eval_vector(std::size_t automaton_id,
+
180  const std::vector<int> &state_vector) const;
+
181 
+
194  std::vector<CUDD::BDD> make_compose_vector(
+
195  std::size_t automaton_id,
+
196  const std::vector<CUDD::BDD> &state_bdds) const;
+
197 
+
208  std::vector<std::string> variable_labels() const;
+
209 
+
218  std::vector<std::string> input_variable_labels() const;
+
219 
+
228  std::vector<std::string> output_variable_labels() const;
+
229 
+
238  std::vector<std::string> state_variable_labels(
+
239  std::size_t automaton_id) const;
+
240 
+
249  void dump_dot(const CUDD::ADD &add, const std::string &filename) const;
+
250 
+
260  void dump_dot(const std::vector<CUDD::ADD> &adds,
+
261  const std::vector<std::string> &function_labels,
+
262  const std::string &filename) const;
+
263 
+
268  std::size_t automaton_num() const;
+
269 
+
276  std::string bdd_to_string(const CUDD::BDD &bdd) const;
+
277 
+
282  std::size_t create_complement_state_space(
+
283  const std::size_t automaton_id);
+
284  };
+
285 
+
286 }
+
287 
+
288 #endif // VAR_MGR_H
+
A dictionary that maps variable names to indices and vice versa.
Definition: VarMgr.h:15
+
std::vector< int > make_state_eval_vector(std::size_t automaton_id, const std::vector< int > &state_vector) const
Creates a valid input to CUDD::BDD::Eval.
Definition: VarMgr.cpp:184
+
std::string index_to_name(int index) const
Returns the name of the variable at index index.
Definition: VarMgr.cpp:136
+
std::size_t automaton_num() const
Returns the number of DFAs the manager handles.
Definition: VarMgr.cpp:334
+
std::vector< std::string > output_variable_labels() const
Returns a vector with a label for each output variable.
Definition: VarMgr.cpp:250
+
VarMgr()
Constructs a VarMgr with no variables.
Definition: VarMgr.cpp:10
+
CUDD::BDD input_cube() const
Returns a BDD formed by the conjunction of all input variables.
Definition: VarMgr.cpp:160
+
std::size_t create_complement_state_space(const std::size_t automaton_id)
Create the state space when complementing a DFA.
Definition: VarMgr.cpp:67
+
std::shared_ptr< CUDD::Cudd > cudd_mgr() const
Returns the CUDD manager used to create the variables.
Definition: VarMgr.cpp:128
+
CUDD::BDD name_to_variable(const std::string &name) const
Returns the index of the variable with the given name.
Definition: VarMgr.cpp:132
+
std::size_t total_state_variable_count() const
Returns the total number of state variables.
Definition: VarMgr.cpp:144
+
std::vector< std::string > input_variable_labels() const
Returns a vector with a label for each input variable.
Definition: VarMgr.cpp:261
+
CUDD::BDD state_variable(std::size_t automaton_id, std::size_t i) const
Returns the i-th state variable for a given automaton.
Definition: VarMgr.cpp:81
+
void create_named_variables(const std::vector< std::string > &variable_names)
Creates BDD variables and associates each with a name.
Definition: VarMgr.cpp:14
+
std::vector< std::string > state_variable_labels(std::size_t automaton_id) const
Returns a vector with a label for each state variable.
Definition: VarMgr.cpp:272
+
std::string bdd_to_string(const CUDD::BDD &bdd) const
Prints a BDD as a Boolean formula, where each variable has a specific label.
Definition: VarMgr.cpp:338
+
CUDD::BDD state_vector_to_bdd(std::size_t automaton_id, const std::vector< int > &state_vector) const
Converts a state vector to a BDD.
Definition: VarMgr.cpp:86
+
void partition_variables(const std::vector< std::string > &input_names, const std::vector< std::string > &output_names)
Partitions the named variables between inputs and outputs.
Definition: VarMgr.cpp:102
+
void dump_dot(const CUDD::ADD &add, const std::string &filename) const
Saves an ADD in a .dot file.
Definition: VarMgr.cpp:286
+
CUDD::BDD output_cube() const
Returns a BDD formed by the conjunction of all output variables.
Definition: VarMgr.cpp:164
+
std::size_t input_variable_count() const
Returns the number of input variables.
Definition: VarMgr.cpp:152
+
std::size_t output_variable_count() const
Returns the number of output variables.
Definition: VarMgr.cpp:156
+
std::size_t state_variable_count(std::size_t automaton_id) const
Returns the number of state variables for a given automaton.
Definition: VarMgr.cpp:148
+
std::size_t create_product_state_space(const std::vector< std::size_t > &automaton_ids)
Registers a new automaton ID associated with a product state space.
Definition: VarMgr.cpp:51
+
std::size_t create_state_variables(std::size_t variable_count)
Creates and stores state variables.
Definition: VarMgr.cpp:27
+
std::size_t total_variable_count() const
Returns the total number of variables, including named and state.
Definition: VarMgr.cpp:140
+
std::vector< int > make_eval_vector(std::size_t automaton_id, const std::vector< int > &state_vector) const
Creates a valid input to CUDD::BDD::Eval.
Definition: VarMgr.cpp:172
+
std::vector< CUDD::BDD > make_compose_vector(std::size_t automaton_id, const std::vector< CUDD::BDD > &state_bdds) const
Creates a valid input to CUDD::BDD::VectorCompose.
Definition: VarMgr.cpp:196
+
CUDD::BDD state_variables_cube(std::size_t automaton_id) const
Returns a BDD formed by the conjunction of all state variables of automaton automaton_id.
Definition: VarMgr.cpp:168
+
std::vector< std::string > variable_labels() const
Returns a vector with a label for each variable.
Definition: VarMgr.cpp:233
+
+
+ + + + diff --git a/annotated.html b/annotated.html new file mode 100644 index 0000000..5677790 --- /dev/null +++ b/annotated.html @@ -0,0 +1,142 @@ + + + + + + + +LydiaSyft: Class List + + + + + + + + + + + + + +
+
+ + + + + + +
+
LydiaSyft +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
Class List
+
+
+
Here are the classes, structs, unions and interfaces with brief descriptions:
+
[detail level 12]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
 NSyft
 CTLSFArgs
 CPrinter
 CBaseRunner
 CFairnessRunner
 CGR1Runner
 CMaxSetRunner
 CStabilityRunner
 CSynthesisRunner
 CParserA parser for reading LTLf synthesis benchmarks in TLSF format
 CExplicitStateDfaA DFA with explicit states and symbolic transitions
 CExplicitStateDfaAddA DFA with explicit states and symbolic transitions represented in ADDs
 CSymbolicStateDfaA DFA with symbolic states and transitions
 CBuchiReachabilityA single-strategy-synthesizer for a Buchi-reachability game given as a symbolic-state DFA
 CcoBuchiReachabilityA single-strategy-synthesizer for a coBuchi-reachability game given as a symbolic-state DFA
 CcoGR1ReachabilityA single-strategy-synthesizer for a Buchi-reachability game given as a symbolic-state DFA
 CDfaGameSynthesizerA synthesizer for a game whose arena is a symbolic-state DFA
 CInputOutputPartitionA partition of variables into input and output variables
 CQuantificationAbstract class representing a quantification operation on BDDs
 CNoQuantificationPerforms no quantification
 CForallPerforms universal quantification
 CExistsPerforms existential quantification
 CForallExistsPerforms both universal and existential quantification
 CExistsForallPerforms both universal and existential quantification
 CReachabilityA single-strategy-synthesizer for a reachability game given as a symbolic-state DFA
 CReachabilityMaxSetA maxset-strategy-synthesizer for a reachability game given as a symbolic-state DFA
 CTransducerA symbolic tranducer representing a winning strategy for a game
 CGR1
 CSmtOneStepRealizabilityVisitor
 CSmtOneStepUnrealizabilityVisitor
 CStopwatchStopwatch for timing executions
 CFairnessLtlfSynthesizerA single-strategy-synthesizer for an LTLf formula given as a symbolic-state DFA, considering environment simple Fairness assumption. The simple Fairness assumption is in the form of GF\alpha, where \alpha is a Boolean formula over environment variables
 CGR1LTLfSynthesizerA single-strategy-synthesizer for an LTLf formula given as a symbolic-state DFA, considering environment GR(1) assumption. Additionally, one can also add safety conditions to both the environment and the agent, utilizing LTLf formulas
 CLTLfMaxSetSynthesizerA maxset-synthesizer for a reachability game given as a symbolic-state DFA
 CLTLfSynthesizerA single-strategy-synthesizer for an LTLf formula given as a symbolic-state DFA
 CStabilityLtlfSynthesizerA single-strategy-synthesizer for an LTLf formula given as a symbolic-state DFA, considering environment simple Stability assumption. The simple Stability assumption is in the form of FG\alpha, where \alpha is a Boolean formula over environment variables
 CSynthesisResult
 CMaxSetSynthesisResult
 COneStepSynthesisResult
 CSynthesizerAbstract class for synthesizers
 CVarMgrA dictionary that maps variable names to indices and vice versa
+
+
+
+ + + + diff --git a/annotated_dup.js b/annotated_dup.js new file mode 100644 index 0000000..b1e56a6 --- /dev/null +++ b/annotated_dup.js @@ -0,0 +1,45 @@ +var annotated_dup = +[ + [ "Syft", null, [ + [ "TLSFArgs", "structSyft_1_1TLSFArgs.html", "structSyft_1_1TLSFArgs" ], + [ "Printer", "classSyft_1_1Printer.html", "classSyft_1_1Printer" ], + [ "BaseRunner", "classSyft_1_1BaseRunner.html", "classSyft_1_1BaseRunner" ], + [ "FairnessRunner", "classSyft_1_1FairnessRunner.html", "classSyft_1_1FairnessRunner" ], + [ "GR1Runner", "classSyft_1_1GR1Runner.html", "classSyft_1_1GR1Runner" ], + [ "MaxSetRunner", "classSyft_1_1MaxSetRunner.html", "classSyft_1_1MaxSetRunner" ], + [ "StabilityRunner", "classSyft_1_1StabilityRunner.html", "classSyft_1_1StabilityRunner" ], + [ "SynthesisRunner", "classSyft_1_1SynthesisRunner.html", "classSyft_1_1SynthesisRunner" ], + [ "Parser", "classSyft_1_1Parser.html", "classSyft_1_1Parser" ], + [ "ExplicitStateDfa", "classSyft_1_1ExplicitStateDfa.html", "classSyft_1_1ExplicitStateDfa" ], + [ "ExplicitStateDfaAdd", "classSyft_1_1ExplicitStateDfaAdd.html", "classSyft_1_1ExplicitStateDfaAdd" ], + [ "SymbolicStateDfa", "classSyft_1_1SymbolicStateDfa.html", "classSyft_1_1SymbolicStateDfa" ], + [ "BuchiReachability", "classSyft_1_1BuchiReachability.html", "classSyft_1_1BuchiReachability" ], + [ "coBuchiReachability", "classSyft_1_1coBuchiReachability.html", "classSyft_1_1coBuchiReachability" ], + [ "coGR1Reachability", "classSyft_1_1coGR1Reachability.html", "classSyft_1_1coGR1Reachability" ], + [ "DfaGameSynthesizer", "classSyft_1_1DfaGameSynthesizer.html", "classSyft_1_1DfaGameSynthesizer" ], + [ "InputOutputPartition", "classSyft_1_1InputOutputPartition.html", "classSyft_1_1InputOutputPartition" ], + [ "Quantification", "classSyft_1_1Quantification.html", "classSyft_1_1Quantification" ], + [ "NoQuantification", "classSyft_1_1NoQuantification.html", "classSyft_1_1NoQuantification" ], + [ "Forall", "classSyft_1_1Forall.html", "classSyft_1_1Forall" ], + [ "Exists", "classSyft_1_1Exists.html", "classSyft_1_1Exists" ], + [ "ForallExists", "classSyft_1_1ForallExists.html", "classSyft_1_1ForallExists" ], + [ "ExistsForall", "classSyft_1_1ExistsForall.html", "classSyft_1_1ExistsForall" ], + [ "Reachability", "classSyft_1_1Reachability.html", "classSyft_1_1Reachability" ], + [ "ReachabilityMaxSet", "classSyft_1_1ReachabilityMaxSet.html", "classSyft_1_1ReachabilityMaxSet" ], + [ "Transducer", "classSyft_1_1Transducer.html", "classSyft_1_1Transducer" ], + [ "GR1", "structSyft_1_1GR1.html", "structSyft_1_1GR1" ], + [ "SmtOneStepRealizabilityVisitor", "classSyft_1_1SmtOneStepRealizabilityVisitor.html", "classSyft_1_1SmtOneStepRealizabilityVisitor" ], + [ "SmtOneStepUnrealizabilityVisitor", "classSyft_1_1SmtOneStepUnrealizabilityVisitor.html", "classSyft_1_1SmtOneStepUnrealizabilityVisitor" ], + [ "Stopwatch", "classSyft_1_1Stopwatch.html", "classSyft_1_1Stopwatch" ], + [ "FairnessLtlfSynthesizer", "classSyft_1_1FairnessLtlfSynthesizer.html", "classSyft_1_1FairnessLtlfSynthesizer" ], + [ "GR1LTLfSynthesizer", "classSyft_1_1GR1LTLfSynthesizer.html", "classSyft_1_1GR1LTLfSynthesizer" ], + [ "LTLfMaxSetSynthesizer", "classSyft_1_1LTLfMaxSetSynthesizer.html", "classSyft_1_1LTLfMaxSetSynthesizer" ], + [ "LTLfSynthesizer", "classSyft_1_1LTLfSynthesizer.html", "classSyft_1_1LTLfSynthesizer" ], + [ "StabilityLtlfSynthesizer", "classSyft_1_1StabilityLtlfSynthesizer.html", "classSyft_1_1StabilityLtlfSynthesizer" ], + [ "SynthesisResult", "structSyft_1_1SynthesisResult.html", "structSyft_1_1SynthesisResult" ], + [ "MaxSetSynthesisResult", "structSyft_1_1MaxSetSynthesisResult.html", "structSyft_1_1MaxSetSynthesisResult" ], + [ "OneStepSynthesisResult", "structSyft_1_1OneStepSynthesisResult.html", "structSyft_1_1OneStepSynthesisResult" ], + [ "Synthesizer", "classSyft_1_1Synthesizer.html", "classSyft_1_1Synthesizer" ], + [ "VarMgr", "classSyft_1_1VarMgr.html", "classSyft_1_1VarMgr" ] + ] ] +]; \ No newline at end of file diff --git a/base_8hpp_source.html b/base_8hpp_source.html new file mode 100644 index 0000000..de15c9f --- /dev/null +++ b/base_8hpp_source.html @@ -0,0 +1,235 @@ + + + + + + + +LydiaSyft: src/cli/base.hpp Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
LydiaSyft +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
base.hpp
+
+
+
1 //
+
2 // Created by marcofavorito on 23/01/24.
+
3 //
+
4 
+
5 #ifndef LYDIASYFT_CLI_BASE_HPP
+
6 #define LYDIASYFT_CLI_BASE_HPP
+
7 
+
8 #include <string>
+
9 #include <CLI/CLI.hpp>
+
10 #include "lydia/types.hpp"
+
11 #include "Player.h"
+
12 #include "VarMgr.h"
+
13 #include "Parser.h"
+
14 #include "game/InputOutputPartition.h"
+
15 #include "game/Transducer.h"
+
16 #include "Stopwatch.h"
+
17 #include "Synthesizer.h"
+
18 #include "synthesizer/LTLfMaxSetSynthesizer.h"
+
19 #include "lydia/parser/ltlf/driver.hpp"
+
20 
+
21 
+
22 namespace Syft {
+
23  static const std::string DEFAULT_SYFCO_PATH_ = "./syfco";
+
24  static const std::string DEFAULT_SLUGS_PATH_ = "./slugs";
+
25 
+
26  struct TLSFArgs {
+
27  const Player starting_player;
+
28  const Player protagonist_player;
+
29  const InputOutputPartition partition;
+
30  const whitemech::lydia::ltlf_ptr formula;
+
31  };
+
32 
+
33  class Printer {
+
34  private:
+
35  const bool print_strategy_;
+
36  const bool print_times_;
+
37 
+
38  // for output messages
+
39  std::ostream &out_;
+
40 
+
41  public:
+
42  Printer(bool print_strategy, bool print_times, std::ostream &out) :
+
43  print_strategy_(print_strategy), print_times_(print_times), out_(out) {}
+
44 
+
45  void
+
46  dump_transducer_if_enabled(const Transducer &transducer, const std::string &output_file = "strategy.dot") const;
+
47 
+
48  void dump_add_if_enabled(const std::shared_ptr<VarMgr> &var_mgr, const CUDD::ADD &add,
+
49  const std::string &output_file) const;
+
50 
+
51  void
+
52  dump_maxset_if_enabled(const LTLfMaxSetSynthesizer &maxset_synthesizer,
+
53  const MaxSetSynthesisResult &maxset_strategy,
+
54  const std::string &def_strategy_output_file = "def_strategy.dot",
+
55  const std::string &nondef_strategy_output_file = "nondef_strategy.dot") const;
+
56 
+
57  void print_times_if_enabled(const std::string &message, std::chrono::milliseconds time) const;
+
58 
+
59  void print_realizable() const { out_ << Syft::REALIZABLE_STR << std::endl; }
+
60 
+
61  void print_unrealizable() const { out_ << Syft::UNREALIZABLE_STR << std::endl; }
+
62 
+
63  };
+
64 
+
65 
+
66  void add_assumption_file_option(CLI::App *, std::string &);
+
67 
+
68  void add_gr1_file_option(CLI::App *, std::string &);
+
69 
+
70  void add_env_safety_file_option(CLI::App *, std::optional<std::string> &);
+
71 
+
72  void add_agent_safety_file_option(CLI::App *, std::optional<std::string> &);
+
73 
+
74  void add_spec_file_option(CLI::App *, std::string &);
+
75 
+
76  void add_syfco_option(CLI::App *, std::string &);
+
77 
+
78  void add_slugs_option(CLI::App *, std::string &);
+
79 
+
80  TLSFArgs parse_tlsf(const std::shared_ptr<whitemech::lydia::parsers::ltlf::LTLfDriver> &driver,
+
81  const std::string &path_to_syfco, const std::string &formula_file);
+
82 
+
83  whitemech::lydia::ltlf_ptr parse_formula(const std::shared_ptr<whitemech::lydia::parsers::ltlf::LTLfDriver> &driver,
+
84  const std::string &formula);
+
85 
+
86  std::shared_ptr<Syft::VarMgr> build_var_mgr(const InputOutputPartition &partition);
+
87 
+ +
89  do_dfa_construction(const whitemech::lydia::LTLfFormula &formula, const std::shared_ptr<Syft::VarMgr> &var_mgr);
+
90 
+
91  class BaseRunner {
+
92  protected:
+
93  const std::string formula_file_;
+
94  const std::string path_to_syfco_;
+
95 
+
96  const TLSFArgs args_;
+
97  const std::shared_ptr<Syft::VarMgr> var_mgr_;
+
98 
+
99  const Printer printer_;
+
100 
+
101  std::shared_ptr<whitemech::lydia::parsers::ltlf::LTLfDriver> driver_;
+
102 
+
103  bool handle_preprocessing_result_(const OneStepSynthesisResult &one_step_result,
+
104  Stopwatch &total_time_stopwatch) const;
+
105 
+
106  void handle_synthesis_result_(const DfaGameSynthesizer &synthesizer, const SynthesisResult &result) const;
+
107 
+
108  void handle_synthesis_result_(const SynthesisResult &result) const;
+
109 
+
110  SymbolicStateDfa do_dfa_construction_() const;
+
111 
+
112  public:
+
113  BaseRunner(const std::shared_ptr<whitemech::lydia::parsers::ltlf::LTLfDriver> &driver,
+
114  const std::string &formula_file, const std::string &path_to_syfco, bool print_strategy,
+
115  bool print_times) :
+
116  driver_(driver),
+
117  formula_file_(formula_file), path_to_syfco_(path_to_syfco),
+
118  printer_(print_strategy, print_times, std::cout),
+
119  args_(parse_tlsf(driver, path_to_syfco, formula_file)),
+
120  var_mgr_(build_var_mgr(args_.partition)) {}
+
121  };
+
122 
+
123 }
+
124 
+
125 #endif //LYDIASYFT_CLI_BASE_HPP
+
Definition: base.hpp:91
+
A synthesizer for a game whose arena is a symbolic-state DFA.
Definition: DfaGameSynthesizer.h:15
+
A partition of variables into input and output variables.
Definition: InputOutputPartition.h:12
+
A maxset-synthesizer for a reachability game given as a symbolic-state DFA.
Definition: LTLfMaxSetSynthesizer.h:19
+
Definition: base.hpp:33
+
Stopwatch for timing executions.
Definition: Stopwatch.h:11
+
A DFA with symbolic states and transitions.
Definition: SymbolicStateDfa.h:18
+
A symbolic tranducer representing a winning strategy for a game.
Definition: Transducer.h:20
+
Definition: Synthesizer.h:24
+
Definition: Synthesizer.h:30
+
Definition: Synthesizer.h:16
+
Definition: base.hpp:26
+
+
+ + + + diff --git a/bc_s.png b/bc_s.png new file mode 100644 index 0000000..224b29a Binary files /dev/null and b/bc_s.png differ diff --git a/bdwn.png b/bdwn.png new file mode 100644 index 0000000..940a0b9 Binary files /dev/null and b/bdwn.png differ diff --git a/classSyft_1_1BaseRunner-members.html b/classSyft_1_1BaseRunner-members.html new file mode 100644 index 0000000..a84bd1f --- /dev/null +++ b/classSyft_1_1BaseRunner-members.html @@ -0,0 +1,111 @@ + + + + + + + +LydiaSyft: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
LydiaSyft +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
Syft::BaseRunner Member List
+
+
+ +

This is the complete list of members for Syft::BaseRunner, including all inherited members.

+ + + + + + + + + + + + +
args_ (defined in Syft::BaseRunner)Syft::BaseRunnerprotected
BaseRunner(const std::shared_ptr< whitemech::lydia::parsers::ltlf::LTLfDriver > &driver, const std::string &formula_file, const std::string &path_to_syfco, bool print_strategy, bool print_times) (defined in Syft::BaseRunner)Syft::BaseRunnerinline
do_dfa_construction_() const (defined in Syft::BaseRunner)Syft::BaseRunnerprotected
driver_ (defined in Syft::BaseRunner)Syft::BaseRunnerprotected
formula_file_ (defined in Syft::BaseRunner)Syft::BaseRunnerprotected
handle_preprocessing_result_(const OneStepSynthesisResult &one_step_result, Stopwatch &total_time_stopwatch) const (defined in Syft::BaseRunner)Syft::BaseRunnerprotected
handle_synthesis_result_(const DfaGameSynthesizer &synthesizer, const SynthesisResult &result) const (defined in Syft::BaseRunner)Syft::BaseRunnerprotected
handle_synthesis_result_(const SynthesisResult &result) const (defined in Syft::BaseRunner)Syft::BaseRunnerprotected
path_to_syfco_ (defined in Syft::BaseRunner)Syft::BaseRunnerprotected
printer_ (defined in Syft::BaseRunner)Syft::BaseRunnerprotected
var_mgr_ (defined in Syft::BaseRunner)Syft::BaseRunnerprotected
+
+ + + + diff --git a/classSyft_1_1BaseRunner.html b/classSyft_1_1BaseRunner.html new file mode 100644 index 0000000..865ed05 --- /dev/null +++ b/classSyft_1_1BaseRunner.html @@ -0,0 +1,174 @@ + + + + + + + +LydiaSyft: Syft::BaseRunner Class Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
LydiaSyft +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
Syft::BaseRunner Class Reference
+
+
+
+Inheritance diagram for Syft::BaseRunner:
+
+
Inheritance graph
+ + + + + + + + +
[legend]
+
+Collaboration diagram for Syft::BaseRunner:
+
+
Collaboration graph
+ + + + + + +
[legend]
+ + + + +

+Public Member Functions

BaseRunner (const std::shared_ptr< whitemech::lydia::parsers::ltlf::LTLfDriver > &driver, const std::string &formula_file, const std::string &path_to_syfco, bool print_strategy, bool print_times)
 
+ + + + + + + + + +

+Protected Member Functions

+bool handle_preprocessing_result_ (const OneStepSynthesisResult &one_step_result, Stopwatch &total_time_stopwatch) const
 
+void handle_synthesis_result_ (const DfaGameSynthesizer &synthesizer, const SynthesisResult &result) const
 
+void handle_synthesis_result_ (const SynthesisResult &result) const
 
+SymbolicStateDfa do_dfa_construction_ () const
 
+ + + + + + + + + + + + + +

+Protected Attributes

+const std::string formula_file_
 
+const std::string path_to_syfco_
 
+const TLSFArgs args_
 
+const std::shared_ptr< Syft::VarMgrvar_mgr_
 
+const Printer printer_
 
+std::shared_ptr< whitemech::lydia::parsers::ltlf::LTLfDriver > driver_
 
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/classSyft_1_1BaseRunner.js b/classSyft_1_1BaseRunner.js new file mode 100644 index 0000000..0f60600 --- /dev/null +++ b/classSyft_1_1BaseRunner.js @@ -0,0 +1,14 @@ +var classSyft_1_1BaseRunner = +[ + [ "BaseRunner", "classSyft_1_1BaseRunner.html#a2036987d0768a0bd2231a35031ca3944", null ], + [ "do_dfa_construction_", "classSyft_1_1BaseRunner.html#a4dacb31be496b37683f1eb9a3ca9c813", null ], + [ "handle_preprocessing_result_", "classSyft_1_1BaseRunner.html#a65c1a05ce36ec236417961f95f93cdde", null ], + [ "handle_synthesis_result_", "classSyft_1_1BaseRunner.html#a38c939907af7ca3a45b04959fe88dc3d", null ], + [ "handle_synthesis_result_", "classSyft_1_1BaseRunner.html#afc5effee511e2c99c2acc08b68e3457a", null ], + [ "args_", "classSyft_1_1BaseRunner.html#a621a2724b9141913d1756179c18c5167", null ], + [ "driver_", "classSyft_1_1BaseRunner.html#acb6d9cfa43693e95fe449024066923f7", null ], + [ "formula_file_", "classSyft_1_1BaseRunner.html#a61dbfd6514eb061b33bfbd7b24fb4535", null ], + [ "path_to_syfco_", "classSyft_1_1BaseRunner.html#a998a614764a47c3e2d745c1eb4ba2bfe", null ], + [ "printer_", "classSyft_1_1BaseRunner.html#a96bad3e35dc45d5618bad0dbec35dcfc", null ], + [ "var_mgr_", "classSyft_1_1BaseRunner.html#aa48d3d2fa5b98acb3ae5fb03c8b6660c", null ] +]; \ No newline at end of file diff --git a/classSyft_1_1BaseRunner__coll__graph.map b/classSyft_1_1BaseRunner__coll__graph.map new file mode 100644 index 0000000..f7b9859 --- /dev/null +++ b/classSyft_1_1BaseRunner__coll__graph.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/classSyft_1_1BaseRunner__coll__graph.md5 b/classSyft_1_1BaseRunner__coll__graph.md5 new file mode 100644 index 0000000..01502e6 --- /dev/null +++ b/classSyft_1_1BaseRunner__coll__graph.md5 @@ -0,0 +1 @@ +c3420197a76907b1e031f9dc8de89b9c \ No newline at end of file diff --git a/classSyft_1_1BaseRunner__coll__graph.png b/classSyft_1_1BaseRunner__coll__graph.png new file mode 100644 index 0000000..565d792 Binary files /dev/null and b/classSyft_1_1BaseRunner__coll__graph.png differ diff --git a/classSyft_1_1BaseRunner__inherit__graph.map b/classSyft_1_1BaseRunner__inherit__graph.map new file mode 100644 index 0000000..8d3dd44 --- /dev/null +++ b/classSyft_1_1BaseRunner__inherit__graph.map @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/classSyft_1_1BaseRunner__inherit__graph.md5 b/classSyft_1_1BaseRunner__inherit__graph.md5 new file mode 100644 index 0000000..e813707 --- /dev/null +++ b/classSyft_1_1BaseRunner__inherit__graph.md5 @@ -0,0 +1 @@ +4de383764f018cbad59274b75899d729 \ No newline at end of file diff --git a/classSyft_1_1BaseRunner__inherit__graph.png b/classSyft_1_1BaseRunner__inherit__graph.png new file mode 100644 index 0000000..f6d77a2 Binary files /dev/null and b/classSyft_1_1BaseRunner__inherit__graph.png differ diff --git a/classSyft_1_1BuchiReachability-members.html b/classSyft_1_1BuchiReachability-members.html new file mode 100644 index 0000000..8d2c064 --- /dev/null +++ b/classSyft_1_1BuchiReachability-members.html @@ -0,0 +1,117 @@ + + + + + + + +LydiaSyft: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
LydiaSyft +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
Syft::BuchiReachability Member List
+
+
+ +

This is the complete list of members for Syft::BuchiReachability, including all inherited members.

+ + + + + + + + + + + + + + + + + + +
AbstractSingleStrategy(const SynthesisResult &result) constSyft::DfaGameSynthesizer
BuchiReachability(const SymbolicStateDfa &spec, Player starting_player, Player protagonist_player, const CUDD::BDD &goal_states, const CUDD::BDD &Buchi, const CUDD::BDD &state_space)Syft::BuchiReachability
DfaGameSynthesizer(SymbolicStateDfa spec, Player starting_player, Player protagonist_player)Syft::DfaGameSynthesizer
includes_initial_state(const CUDD::BDD &winning_states) constSyft::DfaGameSynthesizerprotected
initial_vector_Syft::DfaGameSynthesizerprotected
preimage(const CUDD::BDD &winning_states) constSyft::DfaGameSynthesizerprotected
project_into_states(const CUDD::BDD &winning_moves) constSyft::DfaGameSynthesizerprotected
protagonist_player_Syft::DfaGameSynthesizerprotected
quantify_independent_variables_Syft::DfaGameSynthesizerprotected
quantify_non_state_variables_Syft::DfaGameSynthesizerprotected
run() const finalSyft::BuchiReachabilityvirtual
spec_Syft::Synthesizer< SymbolicStateDfa >protected
starting_player_Syft::DfaGameSynthesizerprotected
Synthesizer(SymbolicStateDfa spec) (defined in Syft::Synthesizer< SymbolicStateDfa >)Syft::Synthesizer< SymbolicStateDfa >inline
transition_vector_Syft::DfaGameSynthesizerprotected
var_mgr_Syft::DfaGameSynthesizerprotected
~Synthesizer() (defined in Syft::Synthesizer< SymbolicStateDfa >)Syft::Synthesizer< SymbolicStateDfa >inlinevirtual
+
+ + + + diff --git a/classSyft_1_1BuchiReachability.html b/classSyft_1_1BuchiReachability.html new file mode 100644 index 0000000..957345c --- /dev/null +++ b/classSyft_1_1BuchiReachability.html @@ -0,0 +1,298 @@ + + + + + + + +LydiaSyft: Syft::BuchiReachability Class Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
LydiaSyft +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
Syft::BuchiReachability Class Reference
+
+
+ +

A single-strategy-synthesizer for a Buchi-reachability game given as a symbolic-state DFA. + More...

+ +

#include <BuchiReachability.hpp>

+
+Inheritance diagram for Syft::BuchiReachability:
+
+
Inheritance graph
+ + + + + +
[legend]
+
+Collaboration diagram for Syft::BuchiReachability:
+
+
Collaboration graph
+ + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + +

+Public Member Functions

 BuchiReachability (const SymbolicStateDfa &spec, Player starting_player, Player protagonist_player, const CUDD::BDD &goal_states, const CUDD::BDD &Buchi, const CUDD::BDD &state_space)
 Construct a single-strategy-synthesizer for the given Buchi-reachability game. More...
 
SynthesisResult run () const final
 Solves the Buchi-reachability game. More...
 
- Public Member Functions inherited from Syft::DfaGameSynthesizer
 DfaGameSynthesizer (SymbolicStateDfa spec, Player starting_player, Player protagonist_player)
 Construct a synthesizer for a given DFA game. More...
 
std::unique_ptr< TransducerAbstractSingleStrategy (const SynthesisResult &result) const
 Abstract a winning strategy for the game. More...
 
- Public Member Functions inherited from Syft::Synthesizer< SymbolicStateDfa >
Synthesizer (SymbolicStateDfa spec)
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Protected Member Functions inherited from Syft::DfaGameSynthesizer
CUDD::BDD preimage (const CUDD::BDD &winning_states) const
 Compute a set of winning moves. More...
 
CUDD::BDD project_into_states (const CUDD::BDD &winning_moves) const
 Project a set of winning moves to a set of winning states. More...
 
bool includes_initial_state (const CUDD::BDD &winning_states) const
 Check whether the initial state is a winning state. More...
 
- Protected Attributes inherited from Syft::DfaGameSynthesizer
+std::shared_ptr< VarMgrvar_mgr_
 Variable manager.
 
+Player starting_player_
 The player that moves first each turn.
 
+Player protagonist_player_
 The player for which we aim to find the winning strategy.
 
+std::vector< int > initial_vector_
 The initial state of the game arena.
 
+std::vector< CUDD::BDD > transition_vector_
 The transition function of the game arena.
 
+std::unique_ptr< Quantificationquantify_independent_variables_
 Quantification on the variables that the protagonist player does not depend on.
 
+std::unique_ptr< Quantificationquantify_non_state_variables_
 Quantification on non-state variables.
 
- Protected Attributes inherited from Syft::Synthesizer< SymbolicStateDfa >
+SymbolicStateDfa spec_
 The game arena.
 
+

Detailed Description

+

A single-strategy-synthesizer for a Buchi-reachability game given as a symbolic-state DFA.

+

Either Buchi condition holds or reachability condition holds.

+

Constructor & Destructor Documentation

+ +

◆ BuchiReachability()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Syft::BuchiReachability::BuchiReachability (const SymbolicStateDfaspec,
Player starting_player,
Player protagonist_player,
const CUDD::BDD & goal_states,
const CUDD::BDD & Buchi,
const CUDD::BDD & state_space 
)
+
+ +

Construct a single-strategy-synthesizer for the given Buchi-reachability game.

+
Parameters
+ + + + + + + +
specA symbolic-state DFA representing the Buchi-reachability game arena.
starting_playerThe player that moves first each turn.
protagonist_playerThe player for which we aim to find the winning strategy.
goal_statesThe reachability condition.
BuchiThe Buchi condition represented as a Boolean formula \beta over input variables, denoting the Buchi condition FG\beta.
state_spaceThe state space.
+
+
+ +
+
+

Member Function Documentation

+ +

◆ run()

+ +
+
+ + + + + +
+ + + + + + + +
SynthesisResult Syft::BuchiReachability::run () const
+
+finalvirtual
+
+ +

Solves the Buchi-reachability game.

+
Returns
The result consists of realizability a set of agent winning states a transducer representing a winning strategy or nullptr if the game is unrealizable.
+ +

Implements Syft::DfaGameSynthesizer.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/classSyft_1_1BuchiReachability.js b/classSyft_1_1BuchiReachability.js new file mode 100644 index 0000000..be7be33 --- /dev/null +++ b/classSyft_1_1BuchiReachability.js @@ -0,0 +1,5 @@ +var classSyft_1_1BuchiReachability = +[ + [ "BuchiReachability", "classSyft_1_1BuchiReachability.html#abc9591a945c0bbe104d027bce1de07b5", null ], + [ "run", "classSyft_1_1BuchiReachability.html#a9f1945cbb20abdd0bff1f0606ca352d4", null ] +]; \ No newline at end of file diff --git a/classSyft_1_1BuchiReachability__coll__graph.map b/classSyft_1_1BuchiReachability__coll__graph.map new file mode 100644 index 0000000..9e84437 --- /dev/null +++ b/classSyft_1_1BuchiReachability__coll__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/classSyft_1_1BuchiReachability__coll__graph.md5 b/classSyft_1_1BuchiReachability__coll__graph.md5 new file mode 100644 index 0000000..a9e2d39 --- /dev/null +++ b/classSyft_1_1BuchiReachability__coll__graph.md5 @@ -0,0 +1 @@ +47898e22361ceb0b812f00f99cfc036b \ No newline at end of file diff --git a/classSyft_1_1BuchiReachability__coll__graph.png b/classSyft_1_1BuchiReachability__coll__graph.png new file mode 100644 index 0000000..72ec2d3 Binary files /dev/null and b/classSyft_1_1BuchiReachability__coll__graph.png differ diff --git a/classSyft_1_1BuchiReachability__inherit__graph.map b/classSyft_1_1BuchiReachability__inherit__graph.map new file mode 100644 index 0000000..9e84437 --- /dev/null +++ b/classSyft_1_1BuchiReachability__inherit__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/classSyft_1_1BuchiReachability__inherit__graph.md5 b/classSyft_1_1BuchiReachability__inherit__graph.md5 new file mode 100644 index 0000000..a9e2d39 --- /dev/null +++ b/classSyft_1_1BuchiReachability__inherit__graph.md5 @@ -0,0 +1 @@ +47898e22361ceb0b812f00f99cfc036b \ No newline at end of file diff --git a/classSyft_1_1BuchiReachability__inherit__graph.png b/classSyft_1_1BuchiReachability__inherit__graph.png new file mode 100644 index 0000000..72ec2d3 Binary files /dev/null and b/classSyft_1_1BuchiReachability__inherit__graph.png differ diff --git a/classSyft_1_1DfaGameSynthesizer-members.html b/classSyft_1_1DfaGameSynthesizer-members.html new file mode 100644 index 0000000..8fd86df --- /dev/null +++ b/classSyft_1_1DfaGameSynthesizer-members.html @@ -0,0 +1,116 @@ + + + + + + + +LydiaSyft: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
LydiaSyft +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
Syft::DfaGameSynthesizer Member List
+
+
+ +

This is the complete list of members for Syft::DfaGameSynthesizer, including all inherited members.

+ + + + + + + + + + + + + + + + + +
AbstractSingleStrategy(const SynthesisResult &result) constSyft::DfaGameSynthesizer
DfaGameSynthesizer(SymbolicStateDfa spec, Player starting_player, Player protagonist_player)Syft::DfaGameSynthesizer
includes_initial_state(const CUDD::BDD &winning_states) constSyft::DfaGameSynthesizerprotected
initial_vector_Syft::DfaGameSynthesizerprotected
preimage(const CUDD::BDD &winning_states) constSyft::DfaGameSynthesizerprotected
project_into_states(const CUDD::BDD &winning_moves) constSyft::DfaGameSynthesizerprotected
protagonist_player_Syft::DfaGameSynthesizerprotected
quantify_independent_variables_Syft::DfaGameSynthesizerprotected
quantify_non_state_variables_Syft::DfaGameSynthesizerprotected
run() const override=0Syft::DfaGameSynthesizerpure virtual
spec_Syft::Synthesizer< SymbolicStateDfa >protected
starting_player_Syft::DfaGameSynthesizerprotected
Synthesizer(SymbolicStateDfa spec) (defined in Syft::Synthesizer< SymbolicStateDfa >)Syft::Synthesizer< SymbolicStateDfa >inline
transition_vector_Syft::DfaGameSynthesizerprotected
var_mgr_Syft::DfaGameSynthesizerprotected
~Synthesizer() (defined in Syft::Synthesizer< SymbolicStateDfa >)Syft::Synthesizer< SymbolicStateDfa >inlinevirtual
+
+ + + + diff --git a/classSyft_1_1DfaGameSynthesizer.html b/classSyft_1_1DfaGameSynthesizer.html new file mode 100644 index 0000000..6bd44ad --- /dev/null +++ b/classSyft_1_1DfaGameSynthesizer.html @@ -0,0 +1,406 @@ + + + + + + + +LydiaSyft: Syft::DfaGameSynthesizer Class Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
LydiaSyft +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
Syft::DfaGameSynthesizer Class Referenceabstract
+
+
+ +

A synthesizer for a game whose arena is a symbolic-state DFA. + More...

+ +

#include <DfaGameSynthesizer.h>

+
+Inheritance diagram for Syft::DfaGameSynthesizer:
+
+
Inheritance graph
+ + + + + + + + +
[legend]
+
+Collaboration diagram for Syft::DfaGameSynthesizer:
+
+
Collaboration graph
+ + + + +
[legend]
+ + + + + + + + + + + + + + +

+Public Member Functions

 DfaGameSynthesizer (SymbolicStateDfa spec, Player starting_player, Player protagonist_player)
 Construct a synthesizer for a given DFA game. More...
 
virtual SynthesisResult run () const override=0
 Synthesis for the game. More...
 
std::unique_ptr< TransducerAbstractSingleStrategy (const SynthesisResult &result) const
 Abstract a winning strategy for the game. More...
 
- Public Member Functions inherited from Syft::Synthesizer< SymbolicStateDfa >
Synthesizer (SymbolicStateDfa spec)
 
+ + + + + + + + + + +

+Protected Member Functions

CUDD::BDD preimage (const CUDD::BDD &winning_states) const
 Compute a set of winning moves. More...
 
CUDD::BDD project_into_states (const CUDD::BDD &winning_moves) const
 Project a set of winning moves to a set of winning states. More...
 
bool includes_initial_state (const CUDD::BDD &winning_states) const
 Check whether the initial state is a winning state. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + +

+Protected Attributes

+std::shared_ptr< VarMgrvar_mgr_
 Variable manager.
 
+Player starting_player_
 The player that moves first each turn.
 
+Player protagonist_player_
 The player for which we aim to find the winning strategy.
 
+std::vector< int > initial_vector_
 The initial state of the game arena.
 
+std::vector< CUDD::BDD > transition_vector_
 The transition function of the game arena.
 
+std::unique_ptr< Quantificationquantify_independent_variables_
 Quantification on the variables that the protagonist player does not depend on.
 
+std::unique_ptr< Quantificationquantify_non_state_variables_
 Quantification on non-state variables.
 
- Protected Attributes inherited from Syft::Synthesizer< SymbolicStateDfa >
+SymbolicStateDfa spec_
 The game arena.
 
+

Detailed Description

+

A synthesizer for a game whose arena is a symbolic-state DFA.

+

Constructor & Destructor Documentation

+ +

◆ DfaGameSynthesizer()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
Syft::DfaGameSynthesizer::DfaGameSynthesizer (SymbolicStateDfa spec,
Player starting_player,
Player protagonist_player 
)
+
+ +

Construct a synthesizer for a given DFA game.

+

The winning condition is unspecified and should be defined by the subclass.

+
Parameters
+ + + + +
specA symbolic-state DFA representing the game's arena.
starting_playerThe player that moves first each turn.
protagonist_playerThe player for which we aim to find the winning strategy.
+
+
+ +
+
+

Member Function Documentation

+ +

◆ AbstractSingleStrategy()

+ +
+
+ + + + + + + + +
std::unique_ptr< Transducer > Syft::DfaGameSynthesizer::AbstractSingleStrategy (const SynthesisResultresult) const
+
+ +

Abstract a winning strategy for the game.

+
Returns
A winning strategy represented as a transducer.
+ +
+
+ +

◆ includes_initial_state()

+ +
+
+ + + + + +
+ + + + + + + + +
bool Syft::DfaGameSynthesizer::includes_initial_state (const CUDD::BDD & winning_states) const
+
+protected
+
+ +

Check whether the initial state is a winning state.

+
Parameters
+ + +
winning_statesA set of winning states.
+
+
+
Returns
True if the initial state is a winning state.
+ +
+
+ +

◆ preimage()

+ +
+
+ + + + + +
+ + + + + + + + +
CUDD::BDD Syft::DfaGameSynthesizer::preimage (const CUDD::BDD & winning_states) const
+
+protected
+
+ +

Compute a set of winning moves.

+

Basically first collect the transitions that move into a winning state, and then quantify all variables that the protagonist player doesn't depend on.

Parameters
+ + +
winning_statesA set of winning states.
+
+
+
Returns
The preimage.
+ +
+
+ +

◆ project_into_states()

+ +
+
+ + + + + +
+ + + + + + + + +
CUDD::BDD Syft::DfaGameSynthesizer::project_into_states (const CUDD::BDD & winning_moves) const
+
+protected
+
+ +

Project a set of winning moves to a set of winning states.

+

Basically quantify all the non-state variables.

Parameters
+ + +
winning_movesA set of winning moves.
+
+
+
Returns
A set of winning states.
+ +
+
+ +

◆ run()

+ +
+
+ + + + + +
+ + + + + + + +
virtual SynthesisResult Syft::DfaGameSynthesizer::run () const
+
+overridepure virtual
+
+ +

Synthesis for the game.

+
Returns
The synthesis result, consisting of realizability, the set of winning states and the set of winning moves.
+ +

Implements Syft::Synthesizer< SymbolicStateDfa >.

+ +

Implemented in Syft::ReachabilityMaxSet, Syft::Reachability, Syft::coBuchiReachability, and Syft::BuchiReachability.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/classSyft_1_1DfaGameSynthesizer.js b/classSyft_1_1DfaGameSynthesizer.js new file mode 100644 index 0000000..bbf7906 --- /dev/null +++ b/classSyft_1_1DfaGameSynthesizer.js @@ -0,0 +1,16 @@ +var classSyft_1_1DfaGameSynthesizer = +[ + [ "DfaGameSynthesizer", "classSyft_1_1DfaGameSynthesizer.html#a5793361e1c8892a18cb76faa5309097a", null ], + [ "AbstractSingleStrategy", "classSyft_1_1DfaGameSynthesizer.html#aaa124c897532d012e4f844190c3587e8", null ], + [ "includes_initial_state", "classSyft_1_1DfaGameSynthesizer.html#a162cc46aa8ebc5e7e5aa2ce9dd9f9ccd", null ], + [ "preimage", "classSyft_1_1DfaGameSynthesizer.html#ad479ca400c626e26f3a178b0b44d66db", null ], + [ "project_into_states", "classSyft_1_1DfaGameSynthesizer.html#ae011d7451fa534119a49ffc06478925f", null ], + [ "run", "classSyft_1_1DfaGameSynthesizer.html#a385fea5ebd717479ee51399647c5d651", null ], + [ "initial_vector_", "classSyft_1_1DfaGameSynthesizer.html#abc276f9a5cc2b8b1a6238711e01eee4f", null ], + [ "protagonist_player_", "classSyft_1_1DfaGameSynthesizer.html#abfaa90f84c18bc4fca026fbe3fd773d8", null ], + [ "quantify_independent_variables_", "classSyft_1_1DfaGameSynthesizer.html#a13197b158f0731406d177fc8d1abfd4f", null ], + [ "quantify_non_state_variables_", "classSyft_1_1DfaGameSynthesizer.html#a56543024a550a28c7b419e4475f5f5ce", null ], + [ "starting_player_", "classSyft_1_1DfaGameSynthesizer.html#a265506e2950231f37cf70f1e09b7c7e9", null ], + [ "transition_vector_", "classSyft_1_1DfaGameSynthesizer.html#ab6c87ceed400fc936a96b52d65ff70ed", null ], + [ "var_mgr_", "classSyft_1_1DfaGameSynthesizer.html#aad1bbf1f88035a84e7db9de3309ea86e", null ] +]; \ No newline at end of file diff --git a/classSyft_1_1DfaGameSynthesizer__coll__graph.map b/classSyft_1_1DfaGameSynthesizer__coll__graph.map new file mode 100644 index 0000000..62b6341 --- /dev/null +++ b/classSyft_1_1DfaGameSynthesizer__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/classSyft_1_1DfaGameSynthesizer__coll__graph.md5 b/classSyft_1_1DfaGameSynthesizer__coll__graph.md5 new file mode 100644 index 0000000..4cd3af5 --- /dev/null +++ b/classSyft_1_1DfaGameSynthesizer__coll__graph.md5 @@ -0,0 +1 @@ +8184d81e7f10584f769bfe4613293938 \ No newline at end of file diff --git a/classSyft_1_1DfaGameSynthesizer__coll__graph.png b/classSyft_1_1DfaGameSynthesizer__coll__graph.png new file mode 100644 index 0000000..f01c641 Binary files /dev/null and b/classSyft_1_1DfaGameSynthesizer__coll__graph.png differ diff --git a/classSyft_1_1DfaGameSynthesizer__inherit__graph.map b/classSyft_1_1DfaGameSynthesizer__inherit__graph.map new file mode 100644 index 0000000..3822832 --- /dev/null +++ b/classSyft_1_1DfaGameSynthesizer__inherit__graph.map @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/classSyft_1_1DfaGameSynthesizer__inherit__graph.md5 b/classSyft_1_1DfaGameSynthesizer__inherit__graph.md5 new file mode 100644 index 0000000..d89118c --- /dev/null +++ b/classSyft_1_1DfaGameSynthesizer__inherit__graph.md5 @@ -0,0 +1 @@ +ea88066006a8d9171468fe810b98ebec \ No newline at end of file diff --git a/classSyft_1_1DfaGameSynthesizer__inherit__graph.png b/classSyft_1_1DfaGameSynthesizer__inherit__graph.png new file mode 100644 index 0000000..0be9043 Binary files /dev/null and b/classSyft_1_1DfaGameSynthesizer__inherit__graph.png differ diff --git a/classSyft_1_1Exists-members.html b/classSyft_1_1Exists-members.html new file mode 100644 index 0000000..10d7f94 --- /dev/null +++ b/classSyft_1_1Exists-members.html @@ -0,0 +1,103 @@ + + + + + + + +LydiaSyft: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
LydiaSyft +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
Syft::Exists Member List
+
+
+ +

This is the complete list of members for Syft::Exists, including all inherited members.

+ + + + +
apply(const CUDD::BDD &bdd) const override (defined in Syft::Exists)Syft::Existsvirtual
Exists(CUDD::BDD existential_variables) (defined in Syft::Exists)Syft::Exists
~Quantification() (defined in Syft::Quantification)Syft::Quantificationinlinevirtual
+
+ + + + diff --git a/classSyft_1_1Exists.html b/classSyft_1_1Exists.html new file mode 100644 index 0000000..36d3c85 --- /dev/null +++ b/classSyft_1_1Exists.html @@ -0,0 +1,140 @@ + + + + + + + +LydiaSyft: Syft::Exists Class Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
LydiaSyft +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
Syft::Exists Class Referencefinal
+
+
+ +

Performs existential quantification. + More...

+ +

#include <Quantification.h>

+
+Inheritance diagram for Syft::Exists:
+
+
Inheritance graph
+ + + + +
[legend]
+
+Collaboration diagram for Syft::Exists:
+
+
Collaboration graph
+ + + + +
[legend]
+ + + + + + +

+Public Member Functions

Exists (CUDD::BDD existential_variables)
 
+CUDD::BDD apply (const CUDD::BDD &bdd) const override
 
+

Detailed Description

+

Performs existential quantification.

+

The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/classSyft_1_1Exists.js b/classSyft_1_1Exists.js new file mode 100644 index 0000000..a9e63d6 --- /dev/null +++ b/classSyft_1_1Exists.js @@ -0,0 +1,5 @@ +var classSyft_1_1Exists = +[ + [ "Exists", "classSyft_1_1Exists.html#af126d14eb8865c3e50cf7a291a74c1eb", null ], + [ "apply", "classSyft_1_1Exists.html#a52d07cf48f921222e1b8927c90193498", null ] +]; \ No newline at end of file diff --git a/classSyft_1_1ExistsForall-members.html b/classSyft_1_1ExistsForall-members.html new file mode 100644 index 0000000..e018636 --- /dev/null +++ b/classSyft_1_1ExistsForall-members.html @@ -0,0 +1,103 @@ + + + + + + + +LydiaSyft: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
LydiaSyft +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
Syft::ExistsForall Member List
+
+
+ +

This is the complete list of members for Syft::ExistsForall, including all inherited members.

+ + + + +
apply(const CUDD::BDD &bdd) const override (defined in Syft::ExistsForall)Syft::ExistsForallvirtual
ExistsForall(CUDD::BDD existential_variables, CUDD::BDD universal_variables) (defined in Syft::ExistsForall)Syft::ExistsForall
~Quantification() (defined in Syft::Quantification)Syft::Quantificationinlinevirtual
+
+ + + + diff --git a/classSyft_1_1ExistsForall.html b/classSyft_1_1ExistsForall.html new file mode 100644 index 0000000..2d24b91 --- /dev/null +++ b/classSyft_1_1ExistsForall.html @@ -0,0 +1,140 @@ + + + + + + + +LydiaSyft: Syft::ExistsForall Class Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
LydiaSyft +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
Syft::ExistsForall Class Referencefinal
+
+
+ +

Performs both universal and existential quantification. + More...

+ +

#include <Quantification.h>

+
+Inheritance diagram for Syft::ExistsForall:
+
+
Inheritance graph
+ + + + +
[legend]
+
+Collaboration diagram for Syft::ExistsForall:
+
+
Collaboration graph
+ + + + +
[legend]
+ + + + + + +

+Public Member Functions

ExistsForall (CUDD::BDD existential_variables, CUDD::BDD universal_variables)
 
+CUDD::BDD apply (const CUDD::BDD &bdd) const override
 
+

Detailed Description

+

Performs both universal and existential quantification.

+

The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/classSyft_1_1ExistsForall.js b/classSyft_1_1ExistsForall.js new file mode 100644 index 0000000..ece5f37 --- /dev/null +++ b/classSyft_1_1ExistsForall.js @@ -0,0 +1,5 @@ +var classSyft_1_1ExistsForall = +[ + [ "ExistsForall", "classSyft_1_1ExistsForall.html#a3c39df7036e7b1320e47bfffc587321b", null ], + [ "apply", "classSyft_1_1ExistsForall.html#a30d96f294a70ae57fabead4903d96ffb", null ] +]; \ No newline at end of file diff --git a/classSyft_1_1ExistsForall__coll__graph.map b/classSyft_1_1ExistsForall__coll__graph.map new file mode 100644 index 0000000..0f05329 --- /dev/null +++ b/classSyft_1_1ExistsForall__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/classSyft_1_1ExistsForall__coll__graph.md5 b/classSyft_1_1ExistsForall__coll__graph.md5 new file mode 100644 index 0000000..baf63af --- /dev/null +++ b/classSyft_1_1ExistsForall__coll__graph.md5 @@ -0,0 +1 @@ +60118c6393135da223c3328e1ac969fb \ No newline at end of file diff --git a/classSyft_1_1ExistsForall__coll__graph.png b/classSyft_1_1ExistsForall__coll__graph.png new file mode 100644 index 0000000..1c46bc7 Binary files /dev/null and b/classSyft_1_1ExistsForall__coll__graph.png differ diff --git a/classSyft_1_1ExistsForall__inherit__graph.map b/classSyft_1_1ExistsForall__inherit__graph.map new file mode 100644 index 0000000..0f05329 --- /dev/null +++ b/classSyft_1_1ExistsForall__inherit__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/classSyft_1_1ExistsForall__inherit__graph.md5 b/classSyft_1_1ExistsForall__inherit__graph.md5 new file mode 100644 index 0000000..baf63af --- /dev/null +++ b/classSyft_1_1ExistsForall__inherit__graph.md5 @@ -0,0 +1 @@ +60118c6393135da223c3328e1ac969fb \ No newline at end of file diff --git a/classSyft_1_1ExistsForall__inherit__graph.png b/classSyft_1_1ExistsForall__inherit__graph.png new file mode 100644 index 0000000..1c46bc7 Binary files /dev/null and b/classSyft_1_1ExistsForall__inherit__graph.png differ diff --git a/classSyft_1_1Exists__coll__graph.map b/classSyft_1_1Exists__coll__graph.map new file mode 100644 index 0000000..cc83663 --- /dev/null +++ b/classSyft_1_1Exists__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/classSyft_1_1Exists__coll__graph.md5 b/classSyft_1_1Exists__coll__graph.md5 new file mode 100644 index 0000000..1c6b486 --- /dev/null +++ b/classSyft_1_1Exists__coll__graph.md5 @@ -0,0 +1 @@ +9c12ce34a33d8196520a00d0049e6329 \ No newline at end of file diff --git a/classSyft_1_1Exists__coll__graph.png b/classSyft_1_1Exists__coll__graph.png new file mode 100644 index 0000000..2fb1f50 Binary files /dev/null and b/classSyft_1_1Exists__coll__graph.png differ diff --git a/classSyft_1_1Exists__inherit__graph.map b/classSyft_1_1Exists__inherit__graph.map new file mode 100644 index 0000000..cc83663 --- /dev/null +++ b/classSyft_1_1Exists__inherit__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/classSyft_1_1Exists__inherit__graph.md5 b/classSyft_1_1Exists__inherit__graph.md5 new file mode 100644 index 0000000..1c6b486 --- /dev/null +++ b/classSyft_1_1Exists__inherit__graph.md5 @@ -0,0 +1 @@ +9c12ce34a33d8196520a00d0049e6329 \ No newline at end of file diff --git a/classSyft_1_1Exists__inherit__graph.png b/classSyft_1_1Exists__inherit__graph.png new file mode 100644 index 0000000..2fb1f50 Binary files /dev/null and b/classSyft_1_1Exists__inherit__graph.png differ diff --git a/classSyft_1_1ExplicitStateDfa-members.html b/classSyft_1_1ExplicitStateDfa-members.html new file mode 100644 index 0000000..886ad44 --- /dev/null +++ b/classSyft_1_1ExplicitStateDfa-members.html @@ -0,0 +1,114 @@ + + + + + + + +LydiaSyft: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
LydiaSyft +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
Syft::ExplicitStateDfa Member List
+
+
+ +

This is the complete list of members for Syft::ExplicitStateDfa, including all inherited members.

+ + + + + + + + + + + + + + + +
dfa_complement(ExplicitStateDfa &d)Syft::ExplicitStateDfastatic
dfa_minimize(const ExplicitStateDfa &d)Syft::ExplicitStateDfastatic
dfa_of_formula(const whitemech::lydia::LTLfFormula &formula)Syft::ExplicitStateDfastatic
dfa_print()Syft::ExplicitStateDfa
dfa_product_and(const std::vector< ExplicitStateDfa > &dfa_vector)Syft::ExplicitStateDfastatic
dfa_product_or(const std::vector< ExplicitStateDfa > &dfa_vector)Syft::ExplicitStateDfastatic
ExplicitStateDfa(DFA *dfa, int nb_variables)Syft::ExplicitStateDfainline
ExplicitStateDfa(DFA *dfa, const std::vector< std::string > &names)Syft::ExplicitStateDfainline
ExplicitStateDfa(const ExplicitStateDfa &other)Syft::ExplicitStateDfainline
get_nb_variables()Syft::ExplicitStateDfainline
operator=(ExplicitStateDfa other)Syft::ExplicitStateDfainline
restrict_dfa_with_states(ExplicitStateDfa &d, std::vector< size_t > states)Syft::ExplicitStateDfastatic
restrict_dfa_with_transitions(ExplicitStateDfa &d, std::unordered_map< size_t, CUDD::BDD > transitions, std::shared_ptr< VarMgr > var_mgr)Syft::ExplicitStateDfastatic
~ExplicitStateDfa() (defined in Syft::ExplicitStateDfa)Syft::ExplicitStateDfainline
+
+ + + + diff --git a/classSyft_1_1ExplicitStateDfa.html b/classSyft_1_1ExplicitStateDfa.html new file mode 100644 index 0000000..2ba5b0a --- /dev/null +++ b/classSyft_1_1ExplicitStateDfa.html @@ -0,0 +1,550 @@ + + + + + + + +LydiaSyft: Syft::ExplicitStateDfa Class Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
LydiaSyft +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
Syft::ExplicitStateDfa Class Reference
+
+
+ +

A DFA with explicit states and symbolic transitions. + More...

+ +

#include <ExplicitStateDfa.h>

+
+Inheritance diagram for Syft::ExplicitStateDfa:
+
+
Inheritance graph
+ + + + +
[legend]
+
+Collaboration diagram for Syft::ExplicitStateDfa:
+
+
Collaboration graph
+ + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 ExplicitStateDfa (DFA *dfa, int nb_variables)
 Create an explicit-state DFA from an Lydia DFA structure and the number of variables. More...
 
 ExplicitStateDfa (DFA *dfa, const std::vector< std::string > &names)
 Create an explicit-state DFA from an Lydia DFA structure and the names of variables. More...
 
ExplicitStateDfa (const ExplicitStateDfa &other)
 Create an explicit-state DFA from an existing one.
 
+ExplicitStateDfaoperator= (ExplicitStateDfa other)
 Create an explicit-state DFA from an existing one using the opeartor =.
 
+int get_nb_variables ()
 Get the number of variables.
 
+void dfa_print ()
 Print the explicit-state DFA.
 
+ + + + + + + + + + + + + + + + + + + + + + +

+Static Public Member Functions

static ExplicitStateDfa dfa_of_formula (const whitemech::lydia::LTLfFormula &formula)
 Construct an explicit-state DFA from a given formula using Lydia. More...
 
static ExplicitStateDfa dfa_product_and (const std::vector< ExplicitStateDfa > &dfa_vector)
 Take the product AND of a sequence of explicit-state DFAs. More...
 
static ExplicitStateDfa dfa_product_or (const std::vector< ExplicitStateDfa > &dfa_vector)
 Take the product OR of a sequence of explicit-state DFAs. More...
 
static ExplicitStateDfa dfa_minimize (const ExplicitStateDfa &d)
 Minimize a given explicit-state DFA. More...
 
static ExplicitStateDfa restrict_dfa_with_states (ExplicitStateDfa &d, std::vector< size_t > states)
 Restrict an explicit-state DFA with a given set of states. More...
 
static ExplicitStateDfa restrict_dfa_with_transitions (ExplicitStateDfa &d, std::unordered_map< size_t, CUDD::BDD > transitions, std::shared_ptr< VarMgr > var_mgr)
 Restrict a DFA with a given set of transitions. More...
 
static ExplicitStateDfa dfa_complement (ExplicitStateDfa &d)
 Complement a DFA. More...
 
+

Detailed Description

+

A DFA with explicit states and symbolic transitions.

+

The LTLf-to-DFA consstruction utilizes Lydia. Giuseppe De Giacomo, Marco Favorito: Compositional Approach to Translate LTLf/LDLf into Deterministic Finite Automata. ICAPS 2021: 122-130

+

Constructor & Destructor Documentation

+ +

◆ ExplicitStateDfa() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
Syft::ExplicitStateDfa::ExplicitStateDfa (DFA * dfa,
int nb_variables 
)
+
+inline
+
+ +

Create an explicit-state DFA from an Lydia DFA structure and the number of variables.

+
Parameters
+ + + +
dfaA Lydia DFA structure.
nb_variablesThe number of variables in the Lydia DFA.
+
+
+ +
+
+ +

◆ ExplicitStateDfa() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
Syft::ExplicitStateDfa::ExplicitStateDfa (DFA * dfa,
const std::vector< std::string > & names 
)
+
+inline
+
+ +

Create an explicit-state DFA from an Lydia DFA structure and the names of variables.

+
Parameters
+ + + +
dfaA Lydia DFA structure.
namesThe names of the variables in the Lydia DFA.
+
+
+ +
+
+

Member Function Documentation

+ +

◆ dfa_complement()

+ +
+
+ + + + + +
+ + + + + + + + +
ExplicitStateDfa Syft::ExplicitStateDfa::dfa_complement (ExplicitStateDfad)
+
+static
+
+ +

Complement a DFA.

+

Basically exchange the accepting states and the non-accepting states.

+
Parameters
+ + +
dThe DFA to be complemented.
+
+
+
Returns
The complement DFA.
+ +
+
+ +

◆ dfa_minimize()

+ +
+
+ + + + + +
+ + + + + + + + +
ExplicitStateDfa Syft::ExplicitStateDfa::dfa_minimize (const ExplicitStateDfad)
+
+static
+
+ +

Minimize a given explicit-state DFA.

+
Parameters
+ + +
dThe DFA to be minimized.
+
+
+
Returns
The minimal explicit-state DFA.
+ +
+
+ +

◆ dfa_of_formula()

+ +
+
+ + + + + +
+ + + + + + + + +
ExplicitStateDfa Syft::ExplicitStateDfa::dfa_of_formula (const whitemech::lydia::LTLfFormula & formula)
+
+static
+
+ +

Construct an explicit-state DFA from a given formula using Lydia.

+
Parameters
+ + +
formulaAn LTLf formula.
+
+
+
Returns
The corresponding explicit-state DFA.
+ +
+
+ +

◆ dfa_product_and()

+ +
+
+ + + + + +
+ + + + + + + + +
ExplicitStateDfa Syft::ExplicitStateDfa::dfa_product_and (const std::vector< ExplicitStateDfa > & dfa_vector)
+
+static
+
+ +

Take the product AND of a sequence of explicit-state DFAs.

+
Parameters
+ + +
dfa_vectorThe DFAs to be processed.
+
+
+
Returns
The product explicit-state DFA, which is also minimized.
+ +
+
+ +

◆ dfa_product_or()

+ +
+
+ + + + + +
+ + + + + + + + +
ExplicitStateDfa Syft::ExplicitStateDfa::dfa_product_or (const std::vector< ExplicitStateDfa > & dfa_vector)
+
+static
+
+ +

Take the product OR of a sequence of explicit-state DFAs.

+
Parameters
+ + +
dfa_vectorThe DFAs to be processed.
+
+
+
Returns
The product explicit-state DFA, which is also minimized.
+ +
+
+ +

◆ restrict_dfa_with_states()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
ExplicitStateDfa Syft::ExplicitStateDfa::restrict_dfa_with_states (ExplicitStateDfad,
std::vector< size_t > states 
)
+
+static
+
+ +

Restrict an explicit-state DFA with a given set of states.

+

Basically restrict a DFA to a set of states from the DFA, and return a minimized one.

+
Parameters
+ + + +
dThe DFA to be restricted.
statesThe set of states to be kept.
+
+
+
Returns
The restricted explicit-state DFA, which is also minimized.
+ +
+
+ +

◆ restrict_dfa_with_transitions()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
ExplicitStateDfa Syft::ExplicitStateDfa::restrict_dfa_with_transitions (ExplicitStateDfad,
std::unordered_map< size_t, CUDD::BDD > transitions,
std::shared_ptr< VarMgrvar_mgr 
)
+
+static
+
+ +

Restrict a DFA with a given set of transitions.

+

Basically restrict a DFA to a set of transitions, and return a minimized one.

+
Parameters
+ + + +
dThe DFA to be restricted.
transitionsThe set of transitions to be kept.
+
+
+
Returns
The restricted explicit-state DFA, which is also minimized.
+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/classSyft_1_1ExplicitStateDfa.js b/classSyft_1_1ExplicitStateDfa.js new file mode 100644 index 0000000..6a706cf --- /dev/null +++ b/classSyft_1_1ExplicitStateDfa.js @@ -0,0 +1,10 @@ +var classSyft_1_1ExplicitStateDfa = +[ + [ "ExplicitStateDfa", "classSyft_1_1ExplicitStateDfa.html#ab20fb099de4fd604d9c9aa0c2044fc94", null ], + [ "ExplicitStateDfa", "classSyft_1_1ExplicitStateDfa.html#a3a3f1cff74bb344cbcf031b8e064ebc5", null ], + [ "ExplicitStateDfa", "classSyft_1_1ExplicitStateDfa.html#ab0267e55f151d7dc79a6a49e7b5e636b", null ], + [ "~ExplicitStateDfa", "classSyft_1_1ExplicitStateDfa.html#a19bcdf07b4f64e1cdf6f36a5b87e15ef", null ], + [ "dfa_print", "classSyft_1_1ExplicitStateDfa.html#a2c6c1842c479a3bdeb28fba6ebedf8f3", null ], + [ "get_nb_variables", "classSyft_1_1ExplicitStateDfa.html#afca00daf9a3446a81c435f263a0ff1e5", null ], + [ "operator=", "classSyft_1_1ExplicitStateDfa.html#a34c2a98c2296b307d4e88e16d64fcc50", null ] +]; \ No newline at end of file diff --git a/classSyft_1_1ExplicitStateDfaAdd-members.html b/classSyft_1_1ExplicitStateDfaAdd-members.html new file mode 100644 index 0000000..bf84821 --- /dev/null +++ b/classSyft_1_1ExplicitStateDfaAdd-members.html @@ -0,0 +1,107 @@ + + + + + + + +LydiaSyft: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
LydiaSyft +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
Syft::ExplicitStateDfaAdd Member List
+
+
+ +

This is the complete list of members for Syft::ExplicitStateDfaAdd, including all inherited members.

+ + + + + + + + +
dump_dot(const std::string &filename) constSyft::ExplicitStateDfaAdd
final_states() constSyft::ExplicitStateDfaAdd
from_dfa_mona(std::shared_ptr< VarMgr > var_mgr, const ExplicitStateDfa &explicit_dfa)Syft::ExplicitStateDfaAddstatic
initial_state() constSyft::ExplicitStateDfaAdd
state_count() constSyft::ExplicitStateDfaAdd
transition_function() constSyft::ExplicitStateDfaAdd
var_mgr() constSyft::ExplicitStateDfaAdd
+
+ + + + diff --git a/classSyft_1_1ExplicitStateDfaAdd.html b/classSyft_1_1ExplicitStateDfaAdd.html new file mode 100644 index 0000000..8587ac2 --- /dev/null +++ b/classSyft_1_1ExplicitStateDfaAdd.html @@ -0,0 +1,238 @@ + + + + + + + +LydiaSyft: Syft::ExplicitStateDfaAdd Class Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
LydiaSyft +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
Syft::ExplicitStateDfaAdd Class Reference
+
+
+ +

A DFA with explicit states and symbolic transitions represented in ADDs. + More...

+ +

#include <ExplicitStateDfaAdd.h>

+ + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+std::shared_ptr< VarMgrvar_mgr () const
 Returns the variable manager.
 
+std::size_t initial_state () const
 Returns the initial state of the DFA.
 
+std::size_t state_count () const
 Returns the number of states in the DFA.
 
+std::vector< std::size_t > final_states () const
 Returns the list of indices of final states of the DFA.
 
std::vector< CUDD::ADD > transition_function () const
 Returns the transition function of the DFA as a vector of ADDs. More...
 
void dump_dot (const std::string &filename) const
 Saves the transition function of the DFA in a .dot file. More...
 
+ + + + +

+Static Public Member Functions

static ExplicitStateDfaAdd from_dfa_mona (std::shared_ptr< VarMgr > var_mgr, const ExplicitStateDfa &explicit_dfa)
 Constructs an explicit-state DFA in ADD representation from an explicit-state DFA. More...
 
+

Detailed Description

+

A DFA with explicit states and symbolic transitions represented in ADDs.

+

Member Function Documentation

+ +

◆ dump_dot()

+ +
+
+ + + + + + + + +
void Syft::ExplicitStateDfaAdd::dump_dot (const std::string & filename) const
+
+ +

Saves the transition function of the DFA in a .dot file.

+
Parameters
+ + +
filenameThe name of the file to save the transition function to.
+
+
+ +
+
+ +

◆ from_dfa_mona()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
ExplicitStateDfaAdd Syft::ExplicitStateDfaAdd::from_dfa_mona (std::shared_ptr< VarMgrvar_mgr,
const ExplicitStateDfaexplicit_dfa 
)
+
+static
+
+ +

Constructs an explicit-state DFA in ADD representation from an explicit-state DFA.

+
Parameters
+ + + +
var_mgrThe variable manager for managing transition variables.
explicit_dfaAn explicit-state DFA.
+
+
+
Returns
An explicit-state DFA in ADD representation.
+ +
+
+ +

◆ transition_function()

+ +
+
+ + + + + + + +
std::vector< CUDD::ADD > Syft::ExplicitStateDfaAdd::transition_function () const
+
+ +

Returns the transition function of the DFA as a vector of ADDs.

+

The ADD in index i represents the transition function for state i.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/classSyft_1_1ExplicitStateDfaAdd.js b/classSyft_1_1ExplicitStateDfaAdd.js new file mode 100644 index 0000000..046dca8 --- /dev/null +++ b/classSyft_1_1ExplicitStateDfaAdd.js @@ -0,0 +1,9 @@ +var classSyft_1_1ExplicitStateDfaAdd = +[ + [ "dump_dot", "classSyft_1_1ExplicitStateDfaAdd.html#afcacdbd314e1e6c237b99cc0f61313ae", null ], + [ "final_states", "classSyft_1_1ExplicitStateDfaAdd.html#abd534cb84ca826dbd230be07cf118e77", null ], + [ "initial_state", "classSyft_1_1ExplicitStateDfaAdd.html#a84be5bec8f4559399f6ac7046619c2bb", null ], + [ "state_count", "classSyft_1_1ExplicitStateDfaAdd.html#a686e1862ade00a1c99d9025995b4ecb5", null ], + [ "transition_function", "classSyft_1_1ExplicitStateDfaAdd.html#a429bdcdb58191cd368753bf3c7109cbb", null ], + [ "var_mgr", "classSyft_1_1ExplicitStateDfaAdd.html#ac263afc4a6271d39068db9945b56aec0", null ] +]; \ No newline at end of file diff --git a/classSyft_1_1ExplicitStateDfaMona-members.html b/classSyft_1_1ExplicitStateDfaMona-members.html new file mode 100644 index 0000000..bc03f37 --- /dev/null +++ b/classSyft_1_1ExplicitStateDfaMona-members.html @@ -0,0 +1,115 @@ + + + + + + + +LydiaSyft: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
LydiaSyft +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
Syft::ExplicitStateDfaMona Member List
+
+
+ +

This is the complete list of members for Syft::ExplicitStateDfaMona, including all inherited members.

+ + + + + + + + + + + + + + + + +
dfa_complement(ExplicitStateDfaMona &d)Syft::ExplicitStateDfaMonastatic
dfa_minimize(const ExplicitStateDfaMona &d)Syft::ExplicitStateDfaMonastatic
dfa_of_formula(const whitemech::lydia::LTLfFormula &formula)Syft::ExplicitStateDfaMonastatic
dfa_of_formula(const std::string &formula)Syft::ExplicitStateDfaMonastatic
dfa_print()Syft::ExplicitStateDfaMona
dfa_product_and(const std::vector< ExplicitStateDfaMona > &dfa_vector)Syft::ExplicitStateDfaMonastatic
dfa_product_or(const std::vector< ExplicitStateDfaMona > &dfa_vector)Syft::ExplicitStateDfaMonastatic
ExplicitStateDfaMona(DFA *dfa, int nb_variables) (defined in Syft::ExplicitStateDfaMona)Syft::ExplicitStateDfaMonainline
ExplicitStateDfaMona(DFA *dfa, const std::vector< std::string > &names) (defined in Syft::ExplicitStateDfaMona)Syft::ExplicitStateDfaMonainline
ExplicitStateDfaMona(const ExplicitStateDfaMona &other) (defined in Syft::ExplicitStateDfaMona)Syft::ExplicitStateDfaMonainline
get_nb_variables() (defined in Syft::ExplicitStateDfaMona)Syft::ExplicitStateDfaMonainline
operator=(ExplicitStateDfaMona other) (defined in Syft::ExplicitStateDfaMona)Syft::ExplicitStateDfaMonainline
prune_dfa_with_states(ExplicitStateDfaMona &d, std::vector< size_t > states)Syft::ExplicitStateDfaMonastatic
prune_dfa_with_transitions(ExplicitStateDfaMona &d, std::unordered_map< size_t, CUDD::BDD > transitions, std::shared_ptr< VarMgr > var_mgr)Syft::ExplicitStateDfaMonastatic
~ExplicitStateDfaMona() (defined in Syft::ExplicitStateDfaMona)Syft::ExplicitStateDfaMonainline
+
+ + + + diff --git a/classSyft_1_1ExplicitStateDfaMona.html b/classSyft_1_1ExplicitStateDfaMona.html new file mode 100644 index 0000000..a21e8e1 --- /dev/null +++ b/classSyft_1_1ExplicitStateDfaMona.html @@ -0,0 +1,486 @@ + + + + + + + +LydiaSyft: Syft::ExplicitStateDfaMona Class Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
LydiaSyft +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
Syft::ExplicitStateDfaMona Class Reference
+
+
+
+Inheritance diagram for Syft::ExplicitStateDfaMona:
+
+
Inheritance graph
+ + + + +
[legend]
+
+Collaboration diagram for Syft::ExplicitStateDfaMona:
+
+
Collaboration graph
+ + + + +
[legend]
+ + + + + + + + + + + + + + + +

+Public Member Functions

ExplicitStateDfaMona (DFA *dfa, int nb_variables)
 
ExplicitStateDfaMona (DFA *dfa, const std::vector< std::string > &names)
 
ExplicitStateDfaMona (const ExplicitStateDfaMona &other)
 
+ExplicitStateDfaMonaoperator= (ExplicitStateDfaMona other)
 
+int get_nb_variables ()
 
+void dfa_print ()
 Print the DFA.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + +

+Static Public Member Functions

static ExplicitStateDfaMona dfa_of_formula (const whitemech::lydia::LTLfFormula &formula)
 Construct DFA from a given formula. More...
 
static ExplicitStateDfaMona dfa_product_and (const std::vector< ExplicitStateDfaMona > &dfa_vector)
 Take the product AND of a vector of DFAs. More...
 
static ExplicitStateDfaMona dfa_product_or (const std::vector< ExplicitStateDfaMona > &dfa_vector)
 Take the product AND of a vector of DFAs. More...
 
static ExplicitStateDfaMona dfa_minimize (const ExplicitStateDfaMona &d)
 Minimize a given DFA. More...
 
static ExplicitStateDfaMona dfa_of_formula (const std::string &formula)
 Construct DFA from a given formula. More...
 
static ExplicitStateDfaMona prune_dfa_with_states (ExplicitStateDfaMona &d, std::vector< size_t > states)
 Prune a DFA with given set of states. More...
 
static ExplicitStateDfaMona prune_dfa_with_transitions (ExplicitStateDfaMona &d, std::unordered_map< size_t, CUDD::BDD > transitions, std::shared_ptr< VarMgr > var_mgr)
 Prune a DFA with given transitions. More...
 
static ExplicitStateDfaMona dfa_complement (ExplicitStateDfaMona &d)
 Complement a DFA. More...
 
+

Member Function Documentation

+ +

◆ dfa_complement()

+ +
+
+ + + + + +
+ + + + + + + + +
ExplicitStateDfaMona Syft::ExplicitStateDfaMona::dfa_complement (ExplicitStateDfaMonad)
+
+static
+
+ +

Complement a DFA.

+

Basically exchange the accepting states and the non-accepting states.

+
Parameters
+ + +
dThe DFA to be complemented.
+
+
+
Returns
The complement DFA.
+ +
+
+ +

◆ dfa_minimize()

+ +
+
+ + + + + +
+ + + + + + + + +
ExplicitStateDfaMona Syft::ExplicitStateDfaMona::dfa_minimize (const ExplicitStateDfaMonad)
+
+static
+
+ +

Minimize a given DFA.

+
Parameters
+ + +
dThe DFA to be minimized.
+
+
+
Returns
The minimal DFA.
+ +
+
+ +

◆ dfa_of_formula() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + +
static ExplicitStateDfaMona Syft::ExplicitStateDfaMona::dfa_of_formula (const std::string & formula)
+
+static
+
+ +

Construct DFA from a given formula.

+
Parameters
+ + +
formulaAn LTLf formula.
+
+
+
Returns
The corresponding explicit-state DFA.
+ +
+
+ +

◆ dfa_of_formula() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
ExplicitStateDfaMona Syft::ExplicitStateDfaMona::dfa_of_formula (const whitemech::lydia::LTLfFormula & formula)
+
+static
+
+ +

Construct DFA from a given formula.

+
Parameters
+ + +
formulaAn LTLf formula.
+
+
+
Returns
The corresponding explicit-state DFA.
+ +
+
+ +

◆ dfa_product_and()

+ +
+
+ + + + + +
+ + + + + + + + +
ExplicitStateDfaMona Syft::ExplicitStateDfaMona::dfa_product_and (const std::vector< ExplicitStateDfaMona > & dfa_vector)
+
+static
+
+ +

Take the product AND of a vector of DFAs.

+
Parameters
+ + +
dfa_vectorThe DFAs to be processed.
+
+
+
Returns
The product DFA.
+ +
+
+ +

◆ dfa_product_or()

+ +
+
+ + + + + +
+ + + + + + + + +
ExplicitStateDfaMona Syft::ExplicitStateDfaMona::dfa_product_or (const std::vector< ExplicitStateDfaMona > & dfa_vector)
+
+static
+
+ +

Take the product AND of a vector of DFAs.

+
Parameters
+ + +
dfa_vectorThe DFAs to be processed.
+
+
+
Returns
The product DFA.
+ +
+
+ +

◆ prune_dfa_with_states()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
ExplicitStateDfaMona Syft::ExplicitStateDfaMona::prune_dfa_with_states (ExplicitStateDfaMonad,
std::vector< size_t > states 
)
+
+static
+
+ +

Prune a DFA with given set of states.

+

Basically remove a set of states from the DFA, and return a minimized one.

+
Parameters
+ + + +
dThe DFA to be pruned.
statesThe set of states to be removed.
+
+
+
Returns
The pruned DFA.
+ +
+
+ +

◆ prune_dfa_with_transitions()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
ExplicitStateDfaMona Syft::ExplicitStateDfaMona::prune_dfa_with_transitions (ExplicitStateDfaMonad,
std::unordered_map< size_t, CUDD::BDD > transitions,
std::shared_ptr< VarMgrvar_mgr 
)
+
+static
+
+ +

Prune a DFA with given transitions.

+

Basically remove a set of transitions from the DFA, and return a minimized one.

+
Parameters
+ + + +
dThe DFA to be pruned.
transitionsThe set of transitions to be removed.
+
+
+
Returns
The pruned DFA.
+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/classSyft_1_1ExplicitStateDfaMona.js b/classSyft_1_1ExplicitStateDfaMona.js new file mode 100644 index 0000000..092a6c8 --- /dev/null +++ b/classSyft_1_1ExplicitStateDfaMona.js @@ -0,0 +1,10 @@ +var classSyft_1_1ExplicitStateDfaMona = +[ + [ "ExplicitStateDfaMona", "classSyft_1_1ExplicitStateDfaMona.html#aa8c6c61875fb0bb600af8644b27194ed", null ], + [ "ExplicitStateDfaMona", "classSyft_1_1ExplicitStateDfaMona.html#aeec583175257e03c0f5916f8a94a28e3", null ], + [ "ExplicitStateDfaMona", "classSyft_1_1ExplicitStateDfaMona.html#aaeeefa93af981fab9bcffd207d9dc43b", null ], + [ "~ExplicitStateDfaMona", "classSyft_1_1ExplicitStateDfaMona.html#a3a07e2f678c999e8adfa184624af8fc9", null ], + [ "dfa_print", "classSyft_1_1ExplicitStateDfaMona.html#a281bbd4eed4f27c974b9e3d8ab6c631e", null ], + [ "get_nb_variables", "classSyft_1_1ExplicitStateDfaMona.html#a7bcadb76de5484fe532b7bbc75a06194", null ], + [ "operator=", "classSyft_1_1ExplicitStateDfaMona.html#a19d40aca5bb00ffbecde92ec0c8961f5", null ] +]; \ No newline at end of file diff --git a/classSyft_1_1ExplicitStateDfaMona__coll__graph.map b/classSyft_1_1ExplicitStateDfaMona__coll__graph.map new file mode 100644 index 0000000..326da84 --- /dev/null +++ b/classSyft_1_1ExplicitStateDfaMona__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/classSyft_1_1ExplicitStateDfaMona__coll__graph.md5 b/classSyft_1_1ExplicitStateDfaMona__coll__graph.md5 new file mode 100644 index 0000000..ef1ed2f --- /dev/null +++ b/classSyft_1_1ExplicitStateDfaMona__coll__graph.md5 @@ -0,0 +1 @@ +7c270689220d8255c2e57a23b4ea6f1d \ No newline at end of file diff --git a/classSyft_1_1ExplicitStateDfaMona__coll__graph.png b/classSyft_1_1ExplicitStateDfaMona__coll__graph.png new file mode 100644 index 0000000..745b70c Binary files /dev/null and b/classSyft_1_1ExplicitStateDfaMona__coll__graph.png differ diff --git a/classSyft_1_1ExplicitStateDfaMona__inherit__graph.map b/classSyft_1_1ExplicitStateDfaMona__inherit__graph.map new file mode 100644 index 0000000..326da84 --- /dev/null +++ b/classSyft_1_1ExplicitStateDfaMona__inherit__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/classSyft_1_1ExplicitStateDfaMona__inherit__graph.md5 b/classSyft_1_1ExplicitStateDfaMona__inherit__graph.md5 new file mode 100644 index 0000000..ef1ed2f --- /dev/null +++ b/classSyft_1_1ExplicitStateDfaMona__inherit__graph.md5 @@ -0,0 +1 @@ +7c270689220d8255c2e57a23b4ea6f1d \ No newline at end of file diff --git a/classSyft_1_1ExplicitStateDfaMona__inherit__graph.png b/classSyft_1_1ExplicitStateDfaMona__inherit__graph.png new file mode 100644 index 0000000..745b70c Binary files /dev/null and b/classSyft_1_1ExplicitStateDfaMona__inherit__graph.png differ diff --git a/classSyft_1_1ExplicitStateDfa__coll__graph.map b/classSyft_1_1ExplicitStateDfa__coll__graph.map new file mode 100644 index 0000000..2b9034d --- /dev/null +++ b/classSyft_1_1ExplicitStateDfa__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/classSyft_1_1ExplicitStateDfa__coll__graph.md5 b/classSyft_1_1ExplicitStateDfa__coll__graph.md5 new file mode 100644 index 0000000..959b1d0 --- /dev/null +++ b/classSyft_1_1ExplicitStateDfa__coll__graph.md5 @@ -0,0 +1 @@ +dc4475421749bbfeb42e0a814270115a \ No newline at end of file diff --git a/classSyft_1_1ExplicitStateDfa__coll__graph.png b/classSyft_1_1ExplicitStateDfa__coll__graph.png new file mode 100644 index 0000000..d94f15c Binary files /dev/null and b/classSyft_1_1ExplicitStateDfa__coll__graph.png differ diff --git a/classSyft_1_1ExplicitStateDfa__inherit__graph.map b/classSyft_1_1ExplicitStateDfa__inherit__graph.map new file mode 100644 index 0000000..2b9034d --- /dev/null +++ b/classSyft_1_1ExplicitStateDfa__inherit__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/classSyft_1_1ExplicitStateDfa__inherit__graph.md5 b/classSyft_1_1ExplicitStateDfa__inherit__graph.md5 new file mode 100644 index 0000000..959b1d0 --- /dev/null +++ b/classSyft_1_1ExplicitStateDfa__inherit__graph.md5 @@ -0,0 +1 @@ +dc4475421749bbfeb42e0a814270115a \ No newline at end of file diff --git a/classSyft_1_1ExplicitStateDfa__inherit__graph.png b/classSyft_1_1ExplicitStateDfa__inherit__graph.png new file mode 100644 index 0000000..d94f15c Binary files /dev/null and b/classSyft_1_1ExplicitStateDfa__inherit__graph.png differ diff --git a/classSyft_1_1FairReachabilitySynthesizer-members.html b/classSyft_1_1FairReachabilitySynthesizer-members.html new file mode 100644 index 0000000..adfb6ce --- /dev/null +++ b/classSyft_1_1FairReachabilitySynthesizer-members.html @@ -0,0 +1,118 @@ + + + + + + + +LydiaSyft: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
LydiaSyft +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
Syft::FairReachabilitySynthesizer Member List
+
+
+ +

This is the complete list of members for Syft::FairReachabilitySynthesizer, including all inherited members.

+ + + + + + + + + + + + + + + + + + + +
AbstractSingleStrategy(const SynthesisResult &result) constSyft::DfaGameSynthesizer
DfaGameSynthesizer(SymbolicStateDfa spec, Player starting_player, Player protagonist_player)Syft::DfaGameSynthesizer
FairReachabilitySynthesizer(const SymbolicStateDfa &spec, Player starting_player, Player protagonist_player, const CUDD::BDD &goal_states, const CUDD::BDD &state_space, const std::string &assumption_filename)Syft::FairReachabilitySynthesizer
includes_initial_state(const CUDD::BDD &winning_states) constSyft::DfaGameSynthesizerprotected
initial_vector_Syft::DfaGameSynthesizerprotected
load_CNF(const std::string &filename) const (defined in Syft::FairReachabilitySynthesizer)Syft::FairReachabilitySynthesizerprotected
preimage(const CUDD::BDD &winning_states) constSyft::DfaGameSynthesizerprotected
project_into_states(const CUDD::BDD &winning_moves) constSyft::DfaGameSynthesizerprotected
protagonist_player_Syft::DfaGameSynthesizerprotected
quantify_independent_variables_Syft::DfaGameSynthesizerprotected
quantify_non_state_variables_Syft::DfaGameSynthesizerprotected
run() const finalSyft::FairReachabilitySynthesizervirtual
spec_ (defined in Syft::Synthesizer< SymbolicStateDfa >)Syft::Synthesizer< SymbolicStateDfa >protected
starting_player_Syft::DfaGameSynthesizerprotected
Synthesizer(SymbolicStateDfa spec) (defined in Syft::Synthesizer< SymbolicStateDfa >)Syft::Synthesizer< SymbolicStateDfa >inline
transition_vector_Syft::DfaGameSynthesizerprotected
var_mgr_Syft::DfaGameSynthesizerprotected
~Synthesizer() (defined in Syft::Synthesizer< SymbolicStateDfa >)Syft::Synthesizer< SymbolicStateDfa >inlinevirtual
+
+ + + + diff --git a/classSyft_1_1FairReachabilitySynthesizer.html b/classSyft_1_1FairReachabilitySynthesizer.html new file mode 100644 index 0000000..48d5db9 --- /dev/null +++ b/classSyft_1_1FairReachabilitySynthesizer.html @@ -0,0 +1,303 @@ + + + + + + + +LydiaSyft: Syft::FairReachabilitySynthesizer Class Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
LydiaSyft +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
Syft::FairReachabilitySynthesizer Class Reference
+
+
+ +

A single-strategy-synthesizer for a reachability game given as a symbolic-state DFA, considering environment simple Fairness assumption. The simple Fairness assumption is in the form of GF\alpha, where \alpha is a Boolean formula over environment variables. + More...

+ +

#include <FairReachabilitySynthesizer.h>

+
+Inheritance diagram for Syft::FairReachabilitySynthesizer:
+
+
Inheritance graph
+ + + + + +
[legend]
+
+Collaboration diagram for Syft::FairReachabilitySynthesizer:
+
+
Collaboration graph
+ + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + +

+Public Member Functions

 FairReachabilitySynthesizer (const SymbolicStateDfa &spec, Player starting_player, Player protagonist_player, const CUDD::BDD &goal_states, const CUDD::BDD &state_space, const std::string &assumption_filename)
 Construct a single-strategy-synthesizer for the given coBuchi-reachability game. More...
 
virtual SynthesisResult run () const final
 Solves the coBuchi-reachability game. More...
 
- Public Member Functions inherited from Syft::DfaGameSynthesizer
 DfaGameSynthesizer (SymbolicStateDfa spec, Player starting_player, Player protagonist_player)
 Construct a synthesizer for a given DFA game. More...
 
std::unique_ptr< TransducerAbstractSingleStrategy (const SynthesisResult &result) const
 Abstract a winning strategy for the game. More...
 
- Public Member Functions inherited from Syft::Synthesizer< SymbolicStateDfa >
Synthesizer (SymbolicStateDfa spec)
 
+ + + + + + + + + + + + + +

+Protected Member Functions

+CUDD::BDD load_CNF (const std::string &filename) const
 
- Protected Member Functions inherited from Syft::DfaGameSynthesizer
CUDD::BDD preimage (const CUDD::BDD &winning_states) const
 Compute a set of winning moves. More...
 
CUDD::BDD project_into_states (const CUDD::BDD &winning_moves) const
 Project a set of winning moves to a set of winning states. More...
 
bool includes_initial_state (const CUDD::BDD &winning_states) const
 Check whether the initial state is a winning state. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Protected Attributes inherited from Syft::DfaGameSynthesizer
+std::shared_ptr< VarMgrvar_mgr_
 Variable manager.
 
+Player starting_player_
 The player that moves first each turn.
 
+Player protagonist_player_
 The player for which we aim to find the winning strategy.
 
+std::vector< int > initial_vector_
 The initial state of the game arena.
 
+std::vector< CUDD::BDD > transition_vector_
 The transition function of the game arena.
 
+std::unique_ptr< Quantificationquantify_independent_variables_
 Quantification on the variables that the protagonist player does not depend on.
 
+std::unique_ptr< Quantificationquantify_non_state_variables_
 Quantification on non-state variables.
 
- Protected Attributes inherited from Syft::Synthesizer< SymbolicStateDfa >
+SymbolicStateDfa spec_
 
+

Detailed Description

+

A single-strategy-synthesizer for a reachability game given as a symbolic-state DFA, considering environment simple Fairness assumption. The simple Fairness assumption is in the form of GF\alpha, where \alpha is a Boolean formula over environment variables.

+

Constructor & Destructor Documentation

+ +

◆ FairReachabilitySynthesizer()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Syft::FairReachabilitySynthesizer::FairReachabilitySynthesizer (const SymbolicStateDfaspec,
Player starting_player,
Player protagonist_player,
const CUDD::BDD & goal_states,
const CUDD::BDD & state_space,
const std::string & assumption_filename 
)
+
+ +

Construct a single-strategy-synthesizer for the given coBuchi-reachability game.

+
Parameters
+ + + + + + + +
specA symbolic-state DFA representing the coBuchi-reachability game arena.
starting_playerThe player that moves first each turn.
protagonist_playerThe player for which we aim to find the winning strategy.
goal_statesThe set of states that the agent must reach to win.
state_spaceThe state space.
assumption_filenameThe file that specifies a Boolean formula \alpha over input variables, denoting the simple Fairness assumption GF\alpha.
+
+
+ +
+
+

Member Function Documentation

+ +

◆ run()

+ +
+
+ + + + + +
+ + + + + + + +
SynthesisResult Syft::FairReachabilitySynthesizer::run () const
+
+finalvirtual
+
+ +

Solves the coBuchi-reachability game.

+
Returns
The result consists of realizability a set of agent winning states a transducer representing a winning strategy or nullptr if the game is unrealizable.
+ +

Implements Syft::DfaGameSynthesizer.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/classSyft_1_1FairReachabilitySynthesizer.js b/classSyft_1_1FairReachabilitySynthesizer.js new file mode 100644 index 0000000..2bdf18e --- /dev/null +++ b/classSyft_1_1FairReachabilitySynthesizer.js @@ -0,0 +1,6 @@ +var classSyft_1_1FairReachabilitySynthesizer = +[ + [ "FairReachabilitySynthesizer", "classSyft_1_1FairReachabilitySynthesizer.html#a05a26a96717b6c9f4af5ec605a86cd99", null ], + [ "load_CNF", "classSyft_1_1FairReachabilitySynthesizer.html#af6da6a798fdcbdb9cf8c54b842f81511", null ], + [ "run", "classSyft_1_1FairReachabilitySynthesizer.html#a22f098fdf3645c12280ad12e7c7eb57a", null ] +]; \ No newline at end of file diff --git a/classSyft_1_1FairReachabilitySynthesizer__coll__graph.map b/classSyft_1_1FairReachabilitySynthesizer__coll__graph.map new file mode 100644 index 0000000..069a4d3 --- /dev/null +++ b/classSyft_1_1FairReachabilitySynthesizer__coll__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/classSyft_1_1FairReachabilitySynthesizer__coll__graph.md5 b/classSyft_1_1FairReachabilitySynthesizer__coll__graph.md5 new file mode 100644 index 0000000..f796c2b --- /dev/null +++ b/classSyft_1_1FairReachabilitySynthesizer__coll__graph.md5 @@ -0,0 +1 @@ +04b61d891f84a02f76c1131518051043 \ No newline at end of file diff --git a/classSyft_1_1FairReachabilitySynthesizer__coll__graph.png b/classSyft_1_1FairReachabilitySynthesizer__coll__graph.png new file mode 100644 index 0000000..74430d7 Binary files /dev/null and b/classSyft_1_1FairReachabilitySynthesizer__coll__graph.png differ diff --git a/classSyft_1_1FairReachabilitySynthesizer__inherit__graph.map b/classSyft_1_1FairReachabilitySynthesizer__inherit__graph.map new file mode 100644 index 0000000..069a4d3 --- /dev/null +++ b/classSyft_1_1FairReachabilitySynthesizer__inherit__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/classSyft_1_1FairReachabilitySynthesizer__inherit__graph.md5 b/classSyft_1_1FairReachabilitySynthesizer__inherit__graph.md5 new file mode 100644 index 0000000..f796c2b --- /dev/null +++ b/classSyft_1_1FairReachabilitySynthesizer__inherit__graph.md5 @@ -0,0 +1 @@ +04b61d891f84a02f76c1131518051043 \ No newline at end of file diff --git a/classSyft_1_1FairReachabilitySynthesizer__inherit__graph.png b/classSyft_1_1FairReachabilitySynthesizer__inherit__graph.png new file mode 100644 index 0000000..74430d7 Binary files /dev/null and b/classSyft_1_1FairReachabilitySynthesizer__inherit__graph.png differ diff --git a/classSyft_1_1FairnessLtlfSynthesizer-members.html b/classSyft_1_1FairnessLtlfSynthesizer-members.html new file mode 100644 index 0000000..550230e --- /dev/null +++ b/classSyft_1_1FairnessLtlfSynthesizer-members.html @@ -0,0 +1,103 @@ + + + + + + + +LydiaSyft: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
LydiaSyft +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
Syft::FairnessLtlfSynthesizer Member List
+
+
+ +

This is the complete list of members for Syft::FairnessLtlfSynthesizer, including all inherited members.

+ + + + +
FairnessLtlfSynthesizer(const SymbolicStateDfa &spec, Player starting_player, Player protagonist_player, const CUDD::BDD &goal_states, const CUDD::BDD &state_space, const std::string &assumption_filename)Syft::FairnessLtlfSynthesizer
load_CNF(const std::string &filename) const (defined in Syft::FairnessLtlfSynthesizer)Syft::FairnessLtlfSynthesizerprotected
run() constSyft::FairnessLtlfSynthesizer
+
+ + + + diff --git a/classSyft_1_1FairnessLtlfSynthesizer.html b/classSyft_1_1FairnessLtlfSynthesizer.html new file mode 100644 index 0000000..689c15e --- /dev/null +++ b/classSyft_1_1FairnessLtlfSynthesizer.html @@ -0,0 +1,217 @@ + + + + + + + +LydiaSyft: Syft::FairnessLtlfSynthesizer Class Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
LydiaSyft +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
Syft::FairnessLtlfSynthesizer Class Reference
+
+
+ +

A single-strategy-synthesizer for an LTLf formula given as a symbolic-state DFA, considering environment simple Fairness assumption. The simple Fairness assumption is in the form of GF\alpha, where \alpha is a Boolean formula over environment variables. + More...

+ +

#include <FairnessLtlfSynthesizer.h>

+ + + + + + + + +

+Public Member Functions

 FairnessLtlfSynthesizer (const SymbolicStateDfa &spec, Player starting_player, Player protagonist_player, const CUDD::BDD &goal_states, const CUDD::BDD &state_space, const std::string &assumption_filename)
 Construct a FairnessLtlfSynthesizer. More...
 
SynthesisResult run () const
 Solves the synthesis problem of LTLf with simple Fairness environment assumption. More...
 
+ + + +

+Protected Member Functions

+CUDD::BDD load_CNF (const std::string &filename) const
 
+

Detailed Description

+

A single-strategy-synthesizer for an LTLf formula given as a symbolic-state DFA, considering environment simple Fairness assumption. The simple Fairness assumption is in the form of GF\alpha, where \alpha is a Boolean formula over environment variables.

+
Shufang Zhu, Giuseppe De Giacomo, Geguang Pu, Moshe Y. Vardi: LTLÆ’ Synthesis with Fairness and Stability Assumptions. AAAI 2020: 3088-3095
+

Constructor & Destructor Documentation

+ +

◆ FairnessLtlfSynthesizer()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Syft::FairnessLtlfSynthesizer::FairnessLtlfSynthesizer (const SymbolicStateDfaspec,
Player starting_player,
Player protagonist_player,
const CUDD::BDD & goal_states,
const CUDD::BDD & state_space,
const std::string & assumption_filename 
)
+
+ +

Construct a FairnessLtlfSynthesizer.

+
Parameters
+ + + + + + + +
specA symbolic-state DFA representing the LTLf formula.
starting_playerThe player that moves first each turn.
protagonist_playerThe player for which we aim to find the winning strategy.
goal_statesThe set of states that the agent must reach to win.
state_spaceThe state space.
assumption_filenameThe file that specifies a Boolean formula \alpha over input variables, denoting the simple Fairness assumption GF\alpha.
+
+
+ +
+
+

Member Function Documentation

+ +

◆ run()

+ +
+
+ + + + + + + +
SynthesisResult Syft::FairnessLtlfSynthesizer::run () const
+
+ +

Solves the synthesis problem of LTLf with simple Fairness environment assumption.

+
Returns
The synthesis result.
+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/classSyft_1_1FairnessLtlfSynthesizer.js b/classSyft_1_1FairnessLtlfSynthesizer.js new file mode 100644 index 0000000..ea87727 --- /dev/null +++ b/classSyft_1_1FairnessLtlfSynthesizer.js @@ -0,0 +1,6 @@ +var classSyft_1_1FairnessLtlfSynthesizer = +[ + [ "FairnessLtlfSynthesizer", "classSyft_1_1FairnessLtlfSynthesizer.html#a475779ad4ca2ad03f6d8d38241ae4f4e", null ], + [ "load_CNF", "classSyft_1_1FairnessLtlfSynthesizer.html#a241028caf307c9b36b458d5a52f3f960", null ], + [ "run", "classSyft_1_1FairnessLtlfSynthesizer.html#a8b03186e0732a6d713d9d26fa014a166", null ] +]; \ No newline at end of file diff --git a/classSyft_1_1FairnessRunner-members.html b/classSyft_1_1FairnessRunner-members.html new file mode 100644 index 0000000..1d1db35 --- /dev/null +++ b/classSyft_1_1FairnessRunner-members.html @@ -0,0 +1,113 @@ + + + + + + + +LydiaSyft: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
LydiaSyft +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
Syft::FairnessRunner Member List
+
+
+ +

This is the complete list of members for Syft::FairnessRunner, including all inherited members.

+ + + + + + + + + + + + + + +
args_ (defined in Syft::BaseRunner)Syft::BaseRunnerprotected
BaseRunner(const std::shared_ptr< whitemech::lydia::parsers::ltlf::LTLfDriver > &driver, const std::string &formula_file, const std::string &path_to_syfco, bool print_strategy, bool print_times) (defined in Syft::BaseRunner)Syft::BaseRunnerinline
do_dfa_construction_() const (defined in Syft::BaseRunner)Syft::BaseRunnerprotected
driver_ (defined in Syft::BaseRunner)Syft::BaseRunnerprotected
FairnessRunner(const std::shared_ptr< whitemech::lydia::parsers::ltlf::LTLfDriver > &driver, const std::string &formula_file, const std::string &path_to_syfco, const std::string &assumption_filename, bool print_strategy, bool print_times) (defined in Syft::FairnessRunner)Syft::FairnessRunnerinline
formula_file_ (defined in Syft::BaseRunner)Syft::BaseRunnerprotected
handle_preprocessing_result_(const OneStepSynthesisResult &one_step_result, Stopwatch &total_time_stopwatch) const (defined in Syft::BaseRunner)Syft::BaseRunnerprotected
handle_synthesis_result_(const DfaGameSynthesizer &synthesizer, const SynthesisResult &result) const (defined in Syft::BaseRunner)Syft::BaseRunnerprotected
handle_synthesis_result_(const SynthesisResult &result) const (defined in Syft::BaseRunner)Syft::BaseRunnerprotected
path_to_syfco_ (defined in Syft::BaseRunner)Syft::BaseRunnerprotected
printer_ (defined in Syft::BaseRunner)Syft::BaseRunnerprotected
run() const (defined in Syft::FairnessRunner)Syft::FairnessRunner
var_mgr_ (defined in Syft::BaseRunner)Syft::BaseRunnerprotected
+
+ + + + diff --git a/classSyft_1_1FairnessRunner.html b/classSyft_1_1FairnessRunner.html new file mode 100644 index 0000000..0291586 --- /dev/null +++ b/classSyft_1_1FairnessRunner.html @@ -0,0 +1,175 @@ + + + + + + + +LydiaSyft: Syft::FairnessRunner Class Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
LydiaSyft +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
Syft::FairnessRunner Class Reference
+
+
+
+Inheritance diagram for Syft::FairnessRunner:
+
+
Inheritance graph
+ + + + +
[legend]
+
+Collaboration diagram for Syft::FairnessRunner:
+
+
Collaboration graph
+ + + + + + + +
[legend]
+ + + + + + + + + +

+Public Member Functions

FairnessRunner (const std::shared_ptr< whitemech::lydia::parsers::ltlf::LTLfDriver > &driver, const std::string &formula_file, const std::string &path_to_syfco, const std::string &assumption_filename, bool print_strategy, bool print_times)
 
+void run () const
 
- Public Member Functions inherited from Syft::BaseRunner
BaseRunner (const std::shared_ptr< whitemech::lydia::parsers::ltlf::LTLfDriver > &driver, const std::string &formula_file, const std::string &path_to_syfco, bool print_strategy, bool print_times)
 
+ + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Protected Member Functions inherited from Syft::BaseRunner
+bool handle_preprocessing_result_ (const OneStepSynthesisResult &one_step_result, Stopwatch &total_time_stopwatch) const
 
+void handle_synthesis_result_ (const DfaGameSynthesizer &synthesizer, const SynthesisResult &result) const
 
+void handle_synthesis_result_ (const SynthesisResult &result) const
 
+SymbolicStateDfa do_dfa_construction_ () const
 
- Protected Attributes inherited from Syft::BaseRunner
+const std::string formula_file_
 
+const std::string path_to_syfco_
 
+const TLSFArgs args_
 
+const std::shared_ptr< Syft::VarMgrvar_mgr_
 
+const Printer printer_
 
+std::shared_ptr< whitemech::lydia::parsers::ltlf::LTLfDriver > driver_
 
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/classSyft_1_1FairnessRunner.js b/classSyft_1_1FairnessRunner.js new file mode 100644 index 0000000..41c0cca --- /dev/null +++ b/classSyft_1_1FairnessRunner.js @@ -0,0 +1,5 @@ +var classSyft_1_1FairnessRunner = +[ + [ "FairnessRunner", "classSyft_1_1FairnessRunner.html#a31ecd437c4d79c3cd25f17733a356d5f", null ], + [ "run", "classSyft_1_1FairnessRunner.html#a1646e984225d1745b227e073556dda47", null ] +]; \ No newline at end of file diff --git a/classSyft_1_1FairnessRunner__coll__graph.map b/classSyft_1_1FairnessRunner__coll__graph.map new file mode 100644 index 0000000..fef5e10 --- /dev/null +++ b/classSyft_1_1FairnessRunner__coll__graph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/classSyft_1_1FairnessRunner__coll__graph.md5 b/classSyft_1_1FairnessRunner__coll__graph.md5 new file mode 100644 index 0000000..d2e471b --- /dev/null +++ b/classSyft_1_1FairnessRunner__coll__graph.md5 @@ -0,0 +1 @@ +14903bd4ae79855ed3d0917c221ddb17 \ No newline at end of file diff --git a/classSyft_1_1FairnessRunner__coll__graph.png b/classSyft_1_1FairnessRunner__coll__graph.png new file mode 100644 index 0000000..6d67ca8 Binary files /dev/null and b/classSyft_1_1FairnessRunner__coll__graph.png differ diff --git a/classSyft_1_1FairnessRunner__inherit__graph.map b/classSyft_1_1FairnessRunner__inherit__graph.map new file mode 100644 index 0000000..a7dffae --- /dev/null +++ b/classSyft_1_1FairnessRunner__inherit__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/classSyft_1_1FairnessRunner__inherit__graph.md5 b/classSyft_1_1FairnessRunner__inherit__graph.md5 new file mode 100644 index 0000000..d08c2e9 --- /dev/null +++ b/classSyft_1_1FairnessRunner__inherit__graph.md5 @@ -0,0 +1 @@ +5c939a5d260ab45cf7bacf3103f9be45 \ No newline at end of file diff --git a/classSyft_1_1FairnessRunner__inherit__graph.png b/classSyft_1_1FairnessRunner__inherit__graph.png new file mode 100644 index 0000000..5702561 Binary files /dev/null and b/classSyft_1_1FairnessRunner__inherit__graph.png differ diff --git a/classSyft_1_1Forall-members.html b/classSyft_1_1Forall-members.html new file mode 100644 index 0000000..a074326 --- /dev/null +++ b/classSyft_1_1Forall-members.html @@ -0,0 +1,103 @@ + + + + + + + +LydiaSyft: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
LydiaSyft +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
Syft::Forall Member List
+
+
+ +

This is the complete list of members for Syft::Forall, including all inherited members.

+ + + + +
apply(const CUDD::BDD &bdd) const override (defined in Syft::Forall)Syft::Forallvirtual
Forall(CUDD::BDD universal_variables) (defined in Syft::Forall)Syft::Forall
~Quantification() (defined in Syft::Quantification)Syft::Quantificationinlinevirtual
+
+ + + + diff --git a/classSyft_1_1Forall.html b/classSyft_1_1Forall.html new file mode 100644 index 0000000..3e702ab --- /dev/null +++ b/classSyft_1_1Forall.html @@ -0,0 +1,140 @@ + + + + + + + +LydiaSyft: Syft::Forall Class Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
LydiaSyft +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
Syft::Forall Class Referencefinal
+
+
+ +

Performs universal quantification. + More...

+ +

#include <Quantification.h>

+
+Inheritance diagram for Syft::Forall:
+
+
Inheritance graph
+ + + + +
[legend]
+
+Collaboration diagram for Syft::Forall:
+
+
Collaboration graph
+ + + + +
[legend]
+ + + + + + +

+Public Member Functions

Forall (CUDD::BDD universal_variables)
 
+CUDD::BDD apply (const CUDD::BDD &bdd) const override
 
+

Detailed Description

+

Performs universal quantification.

+

The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/classSyft_1_1Forall.js b/classSyft_1_1Forall.js new file mode 100644 index 0000000..a5d6f8b --- /dev/null +++ b/classSyft_1_1Forall.js @@ -0,0 +1,5 @@ +var classSyft_1_1Forall = +[ + [ "Forall", "classSyft_1_1Forall.html#a74628bd12fa9a0a3e5fba924636cfa53", null ], + [ "apply", "classSyft_1_1Forall.html#ae0c5e40cd67dbaa433e3ff87d4b7abc9", null ] +]; \ No newline at end of file diff --git a/classSyft_1_1ForallExists-members.html b/classSyft_1_1ForallExists-members.html new file mode 100644 index 0000000..113d2a9 --- /dev/null +++ b/classSyft_1_1ForallExists-members.html @@ -0,0 +1,103 @@ + + + + + + + +LydiaSyft: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
LydiaSyft +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
Syft::ForallExists Member List
+
+
+ +

This is the complete list of members for Syft::ForallExists, including all inherited members.

+ + + + +
apply(const CUDD::BDD &bdd) const override (defined in Syft::ForallExists)Syft::ForallExistsvirtual
ForallExists(CUDD::BDD universal_variables, CUDD::BDD existential_variables) (defined in Syft::ForallExists)Syft::ForallExists
~Quantification() (defined in Syft::Quantification)Syft::Quantificationinlinevirtual
+
+ + + + diff --git a/classSyft_1_1ForallExists.html b/classSyft_1_1ForallExists.html new file mode 100644 index 0000000..4a6ca4a --- /dev/null +++ b/classSyft_1_1ForallExists.html @@ -0,0 +1,140 @@ + + + + + + + +LydiaSyft: Syft::ForallExists Class Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
LydiaSyft +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
Syft::ForallExists Class Referencefinal
+
+
+ +

Performs both universal and existential quantification. + More...

+ +

#include <Quantification.h>

+
+Inheritance diagram for Syft::ForallExists:
+
+
Inheritance graph
+ + + + +
[legend]
+
+Collaboration diagram for Syft::ForallExists:
+
+
Collaboration graph
+ + + + +
[legend]
+ + + + + + +

+Public Member Functions

ForallExists (CUDD::BDD universal_variables, CUDD::BDD existential_variables)
 
+CUDD::BDD apply (const CUDD::BDD &bdd) const override
 
+

Detailed Description

+

Performs both universal and existential quantification.

+

The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/classSyft_1_1ForallExists.js b/classSyft_1_1ForallExists.js new file mode 100644 index 0000000..0ba949e --- /dev/null +++ b/classSyft_1_1ForallExists.js @@ -0,0 +1,5 @@ +var classSyft_1_1ForallExists = +[ + [ "ForallExists", "classSyft_1_1ForallExists.html#a4890fcb0e1a3cf2d2000fd888449f5b9", null ], + [ "apply", "classSyft_1_1ForallExists.html#aefd832451d6d373da210f87459f7acb0", null ] +]; \ No newline at end of file diff --git a/classSyft_1_1ForallExists__coll__graph.map b/classSyft_1_1ForallExists__coll__graph.map new file mode 100644 index 0000000..1c13ab2 --- /dev/null +++ b/classSyft_1_1ForallExists__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/classSyft_1_1ForallExists__coll__graph.md5 b/classSyft_1_1ForallExists__coll__graph.md5 new file mode 100644 index 0000000..a1dc0bd --- /dev/null +++ b/classSyft_1_1ForallExists__coll__graph.md5 @@ -0,0 +1 @@ +1d7e80b330544c2deb53653aff60d18d \ No newline at end of file diff --git a/classSyft_1_1ForallExists__coll__graph.png b/classSyft_1_1ForallExists__coll__graph.png new file mode 100644 index 0000000..5ca79b8 Binary files /dev/null and b/classSyft_1_1ForallExists__coll__graph.png differ diff --git a/classSyft_1_1ForallExists__inherit__graph.map b/classSyft_1_1ForallExists__inherit__graph.map new file mode 100644 index 0000000..1c13ab2 --- /dev/null +++ b/classSyft_1_1ForallExists__inherit__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/classSyft_1_1ForallExists__inherit__graph.md5 b/classSyft_1_1ForallExists__inherit__graph.md5 new file mode 100644 index 0000000..a1dc0bd --- /dev/null +++ b/classSyft_1_1ForallExists__inherit__graph.md5 @@ -0,0 +1 @@ +1d7e80b330544c2deb53653aff60d18d \ No newline at end of file diff --git a/classSyft_1_1ForallExists__inherit__graph.png b/classSyft_1_1ForallExists__inherit__graph.png new file mode 100644 index 0000000..5ca79b8 Binary files /dev/null and b/classSyft_1_1ForallExists__inherit__graph.png differ diff --git a/classSyft_1_1Forall__coll__graph.map b/classSyft_1_1Forall__coll__graph.map new file mode 100644 index 0000000..66c092a --- /dev/null +++ b/classSyft_1_1Forall__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/classSyft_1_1Forall__coll__graph.md5 b/classSyft_1_1Forall__coll__graph.md5 new file mode 100644 index 0000000..c60e1d2 --- /dev/null +++ b/classSyft_1_1Forall__coll__graph.md5 @@ -0,0 +1 @@ +c447bd40ef77c385ef563fd209cb57f5 \ No newline at end of file diff --git a/classSyft_1_1Forall__coll__graph.png b/classSyft_1_1Forall__coll__graph.png new file mode 100644 index 0000000..3c01ce2 Binary files /dev/null and b/classSyft_1_1Forall__coll__graph.png differ diff --git a/classSyft_1_1Forall__inherit__graph.map b/classSyft_1_1Forall__inherit__graph.map new file mode 100644 index 0000000..66c092a --- /dev/null +++ b/classSyft_1_1Forall__inherit__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/classSyft_1_1Forall__inherit__graph.md5 b/classSyft_1_1Forall__inherit__graph.md5 new file mode 100644 index 0000000..c60e1d2 --- /dev/null +++ b/classSyft_1_1Forall__inherit__graph.md5 @@ -0,0 +1 @@ +c447bd40ef77c385ef563fd209cb57f5 \ No newline at end of file diff --git a/classSyft_1_1Forall__inherit__graph.png b/classSyft_1_1Forall__inherit__graph.png new file mode 100644 index 0000000..3c01ce2 Binary files /dev/null and b/classSyft_1_1Forall__inherit__graph.png differ diff --git a/classSyft_1_1GR1LTLfSynthesizer-members.html b/classSyft_1_1GR1LTLfSynthesizer-members.html new file mode 100644 index 0000000..70f6c37 --- /dev/null +++ b/classSyft_1_1GR1LTLfSynthesizer-members.html @@ -0,0 +1,102 @@ + + + + + + + +LydiaSyft: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
LydiaSyft +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
Syft::GR1LTLfSynthesizer Member List
+
+
+ +

This is the complete list of members for Syft::GR1LTLfSynthesizer, including all inherited members.

+ + + +
GR1LTLfSynthesizer(const std::shared_ptr< VarMgr > &var_mgr, const GR1 &gr1, const SymbolicStateDfa &env_safety, const SymbolicStateDfa &agn_reach, const SymbolicStateDfa &agn_safety, const std::string &slugs_dir, const std::string &benchmark_name)Syft::GR1LTLfSynthesizer
run() constSyft::GR1LTLfSynthesizer
+
+ + + + diff --git a/classSyft_1_1GR1LTLfSynthesizer.html b/classSyft_1_1GR1LTLfSynthesizer.html new file mode 100644 index 0000000..4cfff83 --- /dev/null +++ b/classSyft_1_1GR1LTLfSynthesizer.html @@ -0,0 +1,215 @@ + + + + + + + +LydiaSyft: Syft::GR1LTLfSynthesizer Class Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
LydiaSyft +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
Syft::GR1LTLfSynthesizer Class Reference
+
+
+ +

A single-strategy-synthesizer for an LTLf formula given as a symbolic-state DFA, considering environment GR(1) assumption. Additionally, one can also add safety conditions to both the environment and the agent, utilizing LTLf formulas. + More...

+ +

#include <GR1LTLfSynthesizer.h>

+ + + + + + + + +

+Public Member Functions

 GR1LTLfSynthesizer (const std::shared_ptr< VarMgr > &var_mgr, const GR1 &gr1, const SymbolicStateDfa &env_safety, const SymbolicStateDfa &agn_reach, const SymbolicStateDfa &agn_safety, const std::string &slugs_dir, const std::string &benchmark_name)
 Construct a GR(1)LtlfSynthesizer. More...
 
SynthesisResult run () const
 Solves the synthesis problem of LTLf with GR(1 environment assumption. More...
 
+

Detailed Description

+

A single-strategy-synthesizer for an LTLf formula given as a symbolic-state DFA, considering environment GR(1) assumption. Additionally, one can also add safety conditions to both the environment and the agent, utilizing LTLf formulas.

+

Giuseppe De Giacomo, Antonio Di Stasio, Lucas M. Tabajara, Moshe Y. Vardi, Shufang Zhu: Finite-Trace and Generalized-Reactivity Specifications in Temporal Synthesis. IJCAI 2021: 1852-1858

+

Constructor & Destructor Documentation

+ +

◆ GR1LTLfSynthesizer()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Syft::GR1LTLfSynthesizer::GR1LTLfSynthesizer (const std::shared_ptr< VarMgr > & var_mgr,
const GR1gr1,
const SymbolicStateDfaenv_safety,
const SymbolicStateDfaagn_reach,
const SymbolicStateDfaagn_safety,
const std::string & slugs_dir,
const std::string & benchmark_name 
)
+
+ +

Construct a GR(1)LtlfSynthesizer.

+
Parameters
+ + + + + + +
gr1The GR(1) environment assumption.
env_safetyA symbolic-state DFA representing the LTLf formula indicating the environment safety condition
agn_reachA symbolic-state DFA representing the LTLf formula indicating the system reachability condition
agn_safetyA symbolic-state DFA representing the LTLf formula indicating the system safety condition
slugs_dirThe root directory of SLUGS
+
+
+ +
+
+

Member Function Documentation

+ +

◆ run()

+ +
+
+ + + + + + + +
SynthesisResult Syft::GR1LTLfSynthesizer::run () const
+
+ +

Solves the synthesis problem of LTLf with GR(1 environment assumption.

+
Returns
The synthesis result.
+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/classSyft_1_1GR1LTLfSynthesizer.js b/classSyft_1_1GR1LTLfSynthesizer.js new file mode 100644 index 0000000..9f1ff99 --- /dev/null +++ b/classSyft_1_1GR1LTLfSynthesizer.js @@ -0,0 +1,5 @@ +var classSyft_1_1GR1LTLfSynthesizer = +[ + [ "GR1LTLfSynthesizer", "classSyft_1_1GR1LTLfSynthesizer.html#a3fb8c2f3166ee646d824a77760b26180", null ], + [ "run", "classSyft_1_1GR1LTLfSynthesizer.html#ab0b1f5f0d4fcd24b642549f950f5f59b", null ] +]; \ No newline at end of file diff --git a/classSyft_1_1GR1ReachabilitySynthesizer-members.html b/classSyft_1_1GR1ReachabilitySynthesizer-members.html new file mode 100644 index 0000000..05f2dea --- /dev/null +++ b/classSyft_1_1GR1ReachabilitySynthesizer-members.html @@ -0,0 +1,103 @@ + + + + + + + +LydiaSyft: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
LydiaSyft +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
Syft::GR1ReachabilitySynthesizer Member List
+
+
+ +

This is the complete list of members for Syft::GR1ReachabilitySynthesizer, including all inherited members.

+ + + + +
exec_slugs(const std::string &slugs, const std::string &slugs_input_file, const std::string &slugs_res_file, const std::string &slugs_strategy_file) const (defined in Syft::GR1ReachabilitySynthesizer)Syft::GR1ReachabilitySynthesizer
GR1ReachabilitySynthesizer(const std::shared_ptr< VarMgr > &var_mgr, const GR1 &gr1, const SymbolicStateDfa &env_safety, const SymbolicStateDfa &agn_reach, const SymbolicStateDfa &agn_safety, const std::string &slugs_dir, const std::string &benchmark_name)Syft::GR1ReachabilitySynthesizer
run() constSyft::GR1ReachabilitySynthesizer
+
+ + + + diff --git a/classSyft_1_1GR1ReachabilitySynthesizer.html b/classSyft_1_1GR1ReachabilitySynthesizer.html new file mode 100644 index 0000000..3b945c9 --- /dev/null +++ b/classSyft_1_1GR1ReachabilitySynthesizer.html @@ -0,0 +1,210 @@ + + + + + + + +LydiaSyft: Syft::GR1ReachabilitySynthesizer Class Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
LydiaSyft +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
Syft::GR1ReachabilitySynthesizer Class Reference
+
+
+ + + + + + + + + + +

+Public Member Functions

 GR1ReachabilitySynthesizer (const std::shared_ptr< VarMgr > &var_mgr, const GR1 &gr1, const SymbolicStateDfa &env_safety, const SymbolicStateDfa &agn_reach, const SymbolicStateDfa &agn_safety, const std::string &slugs_dir, const std::string &benchmark_name)
 Construct a synthesizer for the given LTLf/GR(1) game. More...
 
+const std::string exec_slugs (const std::string &slugs, const std::string &slugs_input_file, const std::string &slugs_res_file, const std::string &slugs_strategy_file) const
 
SynthesisResult run () const
 Solves the LTLf/GR(1) game. More...
 
+

Constructor & Destructor Documentation

+ +

◆ GR1ReachabilitySynthesizer()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Syft::GR1ReachabilitySynthesizer::GR1ReachabilitySynthesizer (const std::shared_ptr< VarMgr > & var_mgr,
const GR1gr1,
const SymbolicStateDfaenv_safety,
const SymbolicStateDfaagn_reach,
const SymbolicStateDfaagn_safety,
const std::string & slugs_dir,
const std::string & benchmark_name 
)
+
+ +

Construct a synthesizer for the given LTLf/GR(1) game.

+
Parameters
+ + + + + + +
gr1A GR(1) formula stating the winning condition.
env_safetyA symbolic-state DFA representing the environment safety game arena
agn_reachA symbolic-state DFA representing the system reachability game arena
agn_safetyA symbolic-state DFA representing the system safety game arena
slugs_dirThe root directory of the SLUGS project
+
+
+ +
+
+

Member Function Documentation

+ +

◆ run()

+ +
+
+ + + + + + + +
SynthesisResult Syft::GR1ReachabilitySynthesizer::run () const
+
+ +

Solves the LTLf/GR(1) game.

+
Returns
The result consists of realizability a set of agent winning states a transducer representing a winning strategy or nullptr if the game is unrealizable.
+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/classSyft_1_1GR1ReachabilitySynthesizer.js b/classSyft_1_1GR1ReachabilitySynthesizer.js new file mode 100644 index 0000000..a161d4a --- /dev/null +++ b/classSyft_1_1GR1ReachabilitySynthesizer.js @@ -0,0 +1,6 @@ +var classSyft_1_1GR1ReachabilitySynthesizer = +[ + [ "GR1ReachabilitySynthesizer", "classSyft_1_1GR1ReachabilitySynthesizer.html#a9fbe3fc2f3c93c18f03e5e1523276628", null ], + [ "exec_slugs", "classSyft_1_1GR1ReachabilitySynthesizer.html#a4df1da2373ea23087a529c5341e81535", null ], + [ "run", "classSyft_1_1GR1ReachabilitySynthesizer.html#ab058a725fe76f6adf6a9086878f44870", null ] +]; \ No newline at end of file diff --git a/classSyft_1_1GR1Runner-members.html b/classSyft_1_1GR1Runner-members.html new file mode 100644 index 0000000..8b2d3e7 --- /dev/null +++ b/classSyft_1_1GR1Runner-members.html @@ -0,0 +1,113 @@ + + + + + + + +LydiaSyft: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
LydiaSyft +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
Syft::GR1Runner Member List
+
+
+ +

This is the complete list of members for Syft::GR1Runner, including all inherited members.

+ + + + + + + + + + + + + + +
args_ (defined in Syft::BaseRunner)Syft::BaseRunnerprotected
BaseRunner(const std::shared_ptr< whitemech::lydia::parsers::ltlf::LTLfDriver > &driver, const std::string &formula_file, const std::string &path_to_syfco, bool print_strategy, bool print_times) (defined in Syft::BaseRunner)Syft::BaseRunnerinline
do_dfa_construction_() const (defined in Syft::BaseRunner)Syft::BaseRunnerprotected
driver_ (defined in Syft::BaseRunner)Syft::BaseRunnerprotected
formula_file_ (defined in Syft::BaseRunner)Syft::BaseRunnerprotected
GR1Runner(const std::shared_ptr< whitemech::lydia::parsers::ltlf::LTLfDriver > &driver, const std::string &formula_file, const std::string &path_to_syfco, const std::string &path_to_slugs, const std::string &gr1_file, const std::optional< std::string > &env_safety_file, const std::optional< std::string > &agent_safety_file, bool print_strategy, bool print_times) (defined in Syft::GR1Runner)Syft::GR1Runnerinline
handle_preprocessing_result_(const OneStepSynthesisResult &one_step_result, Stopwatch &total_time_stopwatch) const (defined in Syft::BaseRunner)Syft::BaseRunnerprotected
handle_synthesis_result_(const DfaGameSynthesizer &synthesizer, const SynthesisResult &result) const (defined in Syft::BaseRunner)Syft::BaseRunnerprotected
handle_synthesis_result_(const SynthesisResult &result) const (defined in Syft::BaseRunner)Syft::BaseRunnerprotected
path_to_syfco_ (defined in Syft::BaseRunner)Syft::BaseRunnerprotected
printer_ (defined in Syft::BaseRunner)Syft::BaseRunnerprotected
run() const (defined in Syft::GR1Runner)Syft::GR1Runner
var_mgr_ (defined in Syft::BaseRunner)Syft::BaseRunnerprotected
+
+ + + + diff --git a/classSyft_1_1GR1Runner.html b/classSyft_1_1GR1Runner.html new file mode 100644 index 0000000..8fe8fb5 --- /dev/null +++ b/classSyft_1_1GR1Runner.html @@ -0,0 +1,175 @@ + + + + + + + +LydiaSyft: Syft::GR1Runner Class Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
LydiaSyft +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
Syft::GR1Runner Class Reference
+
+
+
+Inheritance diagram for Syft::GR1Runner:
+
+
Inheritance graph
+ + + + +
[legend]
+
+Collaboration diagram for Syft::GR1Runner:
+
+
Collaboration graph
+ + + + + + + +
[legend]
+ + + + + + + + + +

+Public Member Functions

GR1Runner (const std::shared_ptr< whitemech::lydia::parsers::ltlf::LTLfDriver > &driver, const std::string &formula_file, const std::string &path_to_syfco, const std::string &path_to_slugs, const std::string &gr1_file, const std::optional< std::string > &env_safety_file, const std::optional< std::string > &agent_safety_file, bool print_strategy, bool print_times)
 
+void run () const
 
- Public Member Functions inherited from Syft::BaseRunner
BaseRunner (const std::shared_ptr< whitemech::lydia::parsers::ltlf::LTLfDriver > &driver, const std::string &formula_file, const std::string &path_to_syfco, bool print_strategy, bool print_times)
 
+ + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Protected Member Functions inherited from Syft::BaseRunner
+bool handle_preprocessing_result_ (const OneStepSynthesisResult &one_step_result, Stopwatch &total_time_stopwatch) const
 
+void handle_synthesis_result_ (const DfaGameSynthesizer &synthesizer, const SynthesisResult &result) const
 
+void handle_synthesis_result_ (const SynthesisResult &result) const
 
+SymbolicStateDfa do_dfa_construction_ () const
 
- Protected Attributes inherited from Syft::BaseRunner
+const std::string formula_file_
 
+const std::string path_to_syfco_
 
+const TLSFArgs args_
 
+const std::shared_ptr< Syft::VarMgrvar_mgr_
 
+const Printer printer_
 
+std::shared_ptr< whitemech::lydia::parsers::ltlf::LTLfDriver > driver_
 
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/classSyft_1_1GR1Runner.js b/classSyft_1_1GR1Runner.js new file mode 100644 index 0000000..7cb8478 --- /dev/null +++ b/classSyft_1_1GR1Runner.js @@ -0,0 +1,5 @@ +var classSyft_1_1GR1Runner = +[ + [ "GR1Runner", "classSyft_1_1GR1Runner.html#a105fbfa0918bca9f244a8b054e3d43bb", null ], + [ "run", "classSyft_1_1GR1Runner.html#ac14049768cd1f16f0da968965fa63681", null ] +]; \ No newline at end of file diff --git a/classSyft_1_1GR1Runner__coll__graph.map b/classSyft_1_1GR1Runner__coll__graph.map new file mode 100644 index 0000000..b5889cd --- /dev/null +++ b/classSyft_1_1GR1Runner__coll__graph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/classSyft_1_1GR1Runner__coll__graph.md5 b/classSyft_1_1GR1Runner__coll__graph.md5 new file mode 100644 index 0000000..0a44676 --- /dev/null +++ b/classSyft_1_1GR1Runner__coll__graph.md5 @@ -0,0 +1 @@ +0c17fe2c65d704f969e2b1dd98714c62 \ No newline at end of file diff --git a/classSyft_1_1GR1Runner__coll__graph.png b/classSyft_1_1GR1Runner__coll__graph.png new file mode 100644 index 0000000..aadcb19 Binary files /dev/null and b/classSyft_1_1GR1Runner__coll__graph.png differ diff --git a/classSyft_1_1GR1Runner__inherit__graph.map b/classSyft_1_1GR1Runner__inherit__graph.map new file mode 100644 index 0000000..3c21512 --- /dev/null +++ b/classSyft_1_1GR1Runner__inherit__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/classSyft_1_1GR1Runner__inherit__graph.md5 b/classSyft_1_1GR1Runner__inherit__graph.md5 new file mode 100644 index 0000000..6cf4cbb --- /dev/null +++ b/classSyft_1_1GR1Runner__inherit__graph.md5 @@ -0,0 +1 @@ +23ce8eaff4994f98b3ce69525cf853f0 \ No newline at end of file diff --git a/classSyft_1_1GR1Runner__inherit__graph.png b/classSyft_1_1GR1Runner__inherit__graph.png new file mode 100644 index 0000000..7954260 Binary files /dev/null and b/classSyft_1_1GR1Runner__inherit__graph.png differ diff --git a/classSyft_1_1InputOutputPartition-members.html b/classSyft_1_1InputOutputPartition-members.html new file mode 100644 index 0000000..2c0e9b6 --- /dev/null +++ b/classSyft_1_1InputOutputPartition-members.html @@ -0,0 +1,107 @@ + + + + + + + +LydiaSyft: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
LydiaSyft +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
Syft::InputOutputPartition Member List
+
+
+ +

This is the complete list of members for Syft::InputOutputPartition, including all inherited members.

+ + + + + + + + +
construct_from_input(const std::vector< std::string > inputs_substr, std::vector< std::string > outputs_substr)Syft::InputOutputPartitionstatic
input_variables (defined in Syft::InputOutputPartition)Syft::InputOutputPartition
InputOutputPartition()Syft::InputOutputPartition
is_input(const std::string &var_name)Syft::InputOutputPartition
is_output(const std::string &var_name)Syft::InputOutputPartition
output_variables (defined in Syft::InputOutputPartition)Syft::InputOutputPartition
read_from_file(const std::string &filename)Syft::InputOutputPartitionstatic
+
+ + + + diff --git a/classSyft_1_1InputOutputPartition.html b/classSyft_1_1InputOutputPartition.html new file mode 100644 index 0000000..cefc1e6 --- /dev/null +++ b/classSyft_1_1InputOutputPartition.html @@ -0,0 +1,232 @@ + + + + + + + +LydiaSyft: Syft::InputOutputPartition Class Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
LydiaSyft +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
Syft::InputOutputPartition Class Reference
+
+
+ +

A partition of variables into input and output variables. + More...

+ +

#include <InputOutputPartition.h>

+ + + + + + + + + + + +

+Public Member Functions

InputOutputPartition ()
 Creates a partition with no variables.
 
+bool is_input (const std::string &var_name)
 check if a variable is an input variable
 
+bool is_output (const std::string &var_name)
 check if a variable is an output variable
 
+ + + + + + + +

+Static Public Member Functions

static InputOutputPartition read_from_file (const std::string &filename)
 Constructs a partition from a file. More...
 
static InputOutputPartition construct_from_input (const std::vector< std::string > inputs_substr, std::vector< std::string > outputs_substr)
 Constructs a partition from inputs. More...
 
+ + + + + +

+Public Attributes

+std::vector< std::string > input_variables
 
+std::vector< std::string > output_variables
 
+

Detailed Description

+

A partition of variables into input and output variables.

+

Member Function Documentation

+ +

◆ construct_from_input()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
InputOutputPartition Syft::InputOutputPartition::construct_from_input (const std::vector< std::string > inputs_substr,
std::vector< std::string > outputs_substr 
)
+
+static
+
+ +

Constructs a partition from inputs.

+
Parameters
+ + + +
inputs_substrA string vector of input variables.
outputs_substrA string vector of output variables.
+
+
+
Returns
A partition with the input and output variables listed in the file
+ +
+
+ +

◆ read_from_file()

+ +
+
+ + + + + +
+ + + + + + + + +
InputOutputPartition Syft::InputOutputPartition::read_from_file (const std::string & filename)
+
+static
+
+ +

Constructs a partition from a file.

+

The file should look like .inputs: X1 X2 X3 X4 .outputs: Y1 Y2 Y3

+
Parameters
+ + +
filenameThe name of the partition file.
+
+
+
+
Returns
A partition with the input and output variables listed in the file
+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/classSyft_1_1InputOutputPartition.js b/classSyft_1_1InputOutputPartition.js new file mode 100644 index 0000000..05fbd9f --- /dev/null +++ b/classSyft_1_1InputOutputPartition.js @@ -0,0 +1,8 @@ +var classSyft_1_1InputOutputPartition = +[ + [ "InputOutputPartition", "classSyft_1_1InputOutputPartition.html#a9194a36f490e82ff2da202042fce76bf", null ], + [ "is_input", "classSyft_1_1InputOutputPartition.html#a5dca88d72a00d3ca71de24b7192876fd", null ], + [ "is_output", "classSyft_1_1InputOutputPartition.html#ad48782db48ed3d083ca6d9b84583636c", null ], + [ "input_variables", "classSyft_1_1InputOutputPartition.html#ad20b4d44f60edf9089163e778bb71f2c", null ], + [ "output_variables", "classSyft_1_1InputOutputPartition.html#ab92ae34f94c0bcdd2ad377f6ddaf6cce", null ] +]; \ No newline at end of file diff --git a/classSyft_1_1LTLfMaxSetSynthesizer-members.html b/classSyft_1_1LTLfMaxSetSynthesizer-members.html new file mode 100644 index 0000000..397d8c8 --- /dev/null +++ b/classSyft_1_1LTLfMaxSetSynthesizer-members.html @@ -0,0 +1,103 @@ + + + + + + + +LydiaSyft: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
LydiaSyft +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
Syft::LTLfMaxSetSynthesizer Member List
+
+
+ +

This is the complete list of members for Syft::LTLfMaxSetSynthesizer, including all inherited members.

+ + + + +
dump_dot(MaxSetSynthesisResult maxset, const std::string &def_filename, const std::string &nondef_filename) const (defined in Syft::LTLfMaxSetSynthesizer)Syft::LTLfMaxSetSynthesizer
LTLfMaxSetSynthesizer(SymbolicStateDfa spec, Player starting_player, Player protagonist_player, CUDD::BDD goal_states, CUDD::BDD state_space)Syft::LTLfMaxSetSynthesizer
run() constSyft::LTLfMaxSetSynthesizer
+
+ + + + diff --git a/classSyft_1_1LTLfMaxSetSynthesizer.html b/classSyft_1_1LTLfMaxSetSynthesizer.html new file mode 100644 index 0000000..73c81c6 --- /dev/null +++ b/classSyft_1_1LTLfMaxSetSynthesizer.html @@ -0,0 +1,206 @@ + + + + + + + +LydiaSyft: Syft::LTLfMaxSetSynthesizer Class Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
LydiaSyft +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
Syft::LTLfMaxSetSynthesizer Class Reference
+
+
+ +

A maxset-synthesizer for a reachability game given as a symbolic-state DFA. + More...

+ +

#include <LTLfMaxSetSynthesizer.h>

+ + + + + + + + + + +

+Public Member Functions

 LTLfMaxSetSynthesizer (SymbolicStateDfa spec, Player starting_player, Player protagonist_player, CUDD::BDD goal_states, CUDD::BDD state_space)
 Construct a MaxSet-LtlfSynthesizer. More...
 
MaxSetSynthesisResult run () const
 Solves the MaxSet-LTLf synthesis problem. More...
 
+void dump_dot (MaxSetSynthesisResult maxset, const std::string &def_filename, const std::string &nondef_filename) const
 
+

Detailed Description

+

A maxset-synthesizer for a reachability game given as a symbolic-state DFA.

+

Shufang Zhu, Giuseppe De Giacomo: Synthesis of Maximally Permissive Strategies for LTLf Specifications. IJCAI 2022: 2783-2789

+

Constructor & Destructor Documentation

+ +

◆ LTLfMaxSetSynthesizer()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Syft::LTLfMaxSetSynthesizer::LTLfMaxSetSynthesizer (SymbolicStateDfa spec,
Player starting_player,
Player protagonist_player,
CUDD::BDD goal_states,
CUDD::BDD state_space 
)
+
+ +

Construct a MaxSet-LtlfSynthesizer.

+
Parameters
+ + + + + + +
specA symbolic-state DFA representing the LTLf formula.
starting_playerThe player that moves first each turn.
protagonist_playerThe player for which we aim to find the winning strategy.
goal_statesThe set of states that the agent must reach to win.
state_spaceThe state space.
+
+
+ +
+
+

Member Function Documentation

+ +

◆ run()

+ +
+
+ + + + + + + +
MaxSetSynthesisResult Syft::LTLfMaxSetSynthesizer::run () const
+
+ +

Solves the MaxSet-LTLf synthesis problem.

+
Returns
The synthesis result.
+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/classSyft_1_1LTLfMaxSetSynthesizer.js b/classSyft_1_1LTLfMaxSetSynthesizer.js new file mode 100644 index 0000000..f5f489e --- /dev/null +++ b/classSyft_1_1LTLfMaxSetSynthesizer.js @@ -0,0 +1,6 @@ +var classSyft_1_1LTLfMaxSetSynthesizer = +[ + [ "LTLfMaxSetSynthesizer", "classSyft_1_1LTLfMaxSetSynthesizer.html#a1b1ec8f693c47a58f5a14c7552ae4e72", null ], + [ "dump_dot", "classSyft_1_1LTLfMaxSetSynthesizer.html#afd568e395cd980a6b79e891c62a69f72", null ], + [ "run", "classSyft_1_1LTLfMaxSetSynthesizer.html#a8872a798e4881426eb27605aee1e0e2e", null ] +]; \ No newline at end of file diff --git a/classSyft_1_1LTLfSynthesizer-members.html b/classSyft_1_1LTLfSynthesizer-members.html new file mode 100644 index 0000000..b1abce7 --- /dev/null +++ b/classSyft_1_1LTLfSynthesizer-members.html @@ -0,0 +1,103 @@ + + + + + + + +LydiaSyft: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
LydiaSyft +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
Syft::LTLfSynthesizer Member List
+
+
+ +

This is the complete list of members for Syft::LTLfSynthesizer, including all inherited members.

+ + + + +
AbstractSingleStrategy(const SynthesisResult &result) constSyft::LTLfSynthesizer
LTLfSynthesizer(SymbolicStateDfa spec, Player starting_player, Player protagonist_player, CUDD::BDD goal_states, CUDD::BDD state_space)Syft::LTLfSynthesizer
run() constSyft::LTLfSynthesizer
+
+ + + + diff --git a/classSyft_1_1LTLfSynthesizer.html b/classSyft_1_1LTLfSynthesizer.html new file mode 100644 index 0000000..9c5ff68 --- /dev/null +++ b/classSyft_1_1LTLfSynthesizer.html @@ -0,0 +1,227 @@ + + + + + + + +LydiaSyft: Syft::LTLfSynthesizer Class Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
LydiaSyft +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
Syft::LTLfSynthesizer Class Reference
+
+
+ +

A single-strategy-synthesizer for an LTLf formula given as a symbolic-state DFA. + More...

+ +

#include <LTLfSynthesizer.h>

+ + + + + + + + + + + +

+Public Member Functions

 LTLfSynthesizer (SymbolicStateDfa spec, Player starting_player, Player protagonist_player, CUDD::BDD goal_states, CUDD::BDD state_space)
 Construct an LtlfSynthesizer. More...
 
SynthesisResult run () const
 Solves the LTLf synthesis problem. More...
 
std::unique_ptr< TransducerAbstractSingleStrategy (const SynthesisResult &result) const
 Abstract a winning strategy for the agent. More...
 
+

Detailed Description

+

A single-strategy-synthesizer for an LTLf formula given as a symbolic-state DFA.

+
Shufang Zhu, Lucas M. Tabajara, Jianwen Li, Geguang Pu, Moshe Y. Vardi: Symbolic LTLf Synthesis. IJCAI 2017: 1362-1369
+

Constructor & Destructor Documentation

+ +

◆ LTLfSynthesizer()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Syft::LTLfSynthesizer::LTLfSynthesizer (SymbolicStateDfa spec,
Player starting_player,
Player protagonist_player,
CUDD::BDD goal_states,
CUDD::BDD state_space 
)
+
+ +

Construct an LtlfSynthesizer.

+
Parameters
+ + + + + + +
specA symbolic-state DFA representing the LTLf formula.
starting_playerThe player that moves first each turn.
protagonist_playerThe player for which we aim to find the winning strategy.
goal_statesThe set of states that the agent must reach to win.
state_spaceThe state space.
+
+
+ +
+
+

Member Function Documentation

+ +

◆ AbstractSingleStrategy()

+ +
+
+ + + + + + + + +
std::unique_ptr<Transducer> Syft::LTLfSynthesizer::AbstractSingleStrategy (const SynthesisResultresult) const
+
+ +

Abstract a winning strategy for the agent.

+
Returns
A winning strategy for the agent.
+ +
+
+ +

◆ run()

+ +
+
+ + + + + + + +
SynthesisResult Syft::LTLfSynthesizer::run () const
+
+ +

Solves the LTLf synthesis problem.

+
Returns
The synthesis result.
+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/classSyft_1_1LTLfSynthesizer.js b/classSyft_1_1LTLfSynthesizer.js new file mode 100644 index 0000000..e7a586e --- /dev/null +++ b/classSyft_1_1LTLfSynthesizer.js @@ -0,0 +1,6 @@ +var classSyft_1_1LTLfSynthesizer = +[ + [ "LTLfSynthesizer", "classSyft_1_1LTLfSynthesizer.html#a3049e69dff410e8b09c8f8da7ee7c5c4", null ], + [ "AbstractSingleStrategy", "classSyft_1_1LTLfSynthesizer.html#ae0781228bd68bc7c8bb5ad7fdfe7c137", null ], + [ "run", "classSyft_1_1LTLfSynthesizer.html#a90b9890a9815ff757da7e92e3dfa83d4", null ] +]; \ No newline at end of file diff --git a/classSyft_1_1MaxSetRunner-members.html b/classSyft_1_1MaxSetRunner-members.html new file mode 100644 index 0000000..5e08f9a --- /dev/null +++ b/classSyft_1_1MaxSetRunner-members.html @@ -0,0 +1,113 @@ + + + + + + + +LydiaSyft: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
LydiaSyft +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
Syft::MaxSetRunner Member List
+
+
+ +

This is the complete list of members for Syft::MaxSetRunner, including all inherited members.

+ + + + + + + + + + + + + + +
args_ (defined in Syft::BaseRunner)Syft::BaseRunnerprotected
BaseRunner(const std::shared_ptr< whitemech::lydia::parsers::ltlf::LTLfDriver > &driver, const std::string &formula_file, const std::string &path_to_syfco, bool print_strategy, bool print_times) (defined in Syft::BaseRunner)Syft::BaseRunnerinline
do_dfa_construction_() const (defined in Syft::BaseRunner)Syft::BaseRunnerprotected
driver_ (defined in Syft::BaseRunner)Syft::BaseRunnerprotected
formula_file_ (defined in Syft::BaseRunner)Syft::BaseRunnerprotected
handle_preprocessing_result_(const OneStepSynthesisResult &one_step_result, Stopwatch &total_time_stopwatch) const (defined in Syft::BaseRunner)Syft::BaseRunnerprotected
handle_synthesis_result_(const DfaGameSynthesizer &synthesizer, const SynthesisResult &result) const (defined in Syft::BaseRunner)Syft::BaseRunnerprotected
handle_synthesis_result_(const SynthesisResult &result) const (defined in Syft::BaseRunner)Syft::BaseRunnerprotected
MaxSetRunner(const std::shared_ptr< whitemech::lydia::parsers::ltlf::LTLfDriver > &driver, const std::string &formula_file, const std::string &path_to_syfco, bool print_strategy, bool print_times) (defined in Syft::MaxSetRunner)Syft::MaxSetRunnerinline
path_to_syfco_ (defined in Syft::BaseRunner)Syft::BaseRunnerprotected
printer_ (defined in Syft::BaseRunner)Syft::BaseRunnerprotected
run() (defined in Syft::MaxSetRunner)Syft::MaxSetRunner
var_mgr_ (defined in Syft::BaseRunner)Syft::BaseRunnerprotected
+
+ + + + diff --git a/classSyft_1_1MaxSetRunner.html b/classSyft_1_1MaxSetRunner.html new file mode 100644 index 0000000..6014738 --- /dev/null +++ b/classSyft_1_1MaxSetRunner.html @@ -0,0 +1,175 @@ + + + + + + + +LydiaSyft: Syft::MaxSetRunner Class Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
LydiaSyft +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
Syft::MaxSetRunner Class Reference
+
+
+
+Inheritance diagram for Syft::MaxSetRunner:
+
+
Inheritance graph
+ + + + +
[legend]
+
+Collaboration diagram for Syft::MaxSetRunner:
+
+
Collaboration graph
+ + + + + + + +
[legend]
+ + + + + + + + + +

+Public Member Functions

MaxSetRunner (const std::shared_ptr< whitemech::lydia::parsers::ltlf::LTLfDriver > &driver, const std::string &formula_file, const std::string &path_to_syfco, bool print_strategy, bool print_times)
 
+void run ()
 
- Public Member Functions inherited from Syft::BaseRunner
BaseRunner (const std::shared_ptr< whitemech::lydia::parsers::ltlf::LTLfDriver > &driver, const std::string &formula_file, const std::string &path_to_syfco, bool print_strategy, bool print_times)
 
+ + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Protected Member Functions inherited from Syft::BaseRunner
+bool handle_preprocessing_result_ (const OneStepSynthesisResult &one_step_result, Stopwatch &total_time_stopwatch) const
 
+void handle_synthesis_result_ (const DfaGameSynthesizer &synthesizer, const SynthesisResult &result) const
 
+void handle_synthesis_result_ (const SynthesisResult &result) const
 
+SymbolicStateDfa do_dfa_construction_ () const
 
- Protected Attributes inherited from Syft::BaseRunner
+const std::string formula_file_
 
+const std::string path_to_syfco_
 
+const TLSFArgs args_
 
+const std::shared_ptr< Syft::VarMgrvar_mgr_
 
+const Printer printer_
 
+std::shared_ptr< whitemech::lydia::parsers::ltlf::LTLfDriver > driver_
 
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/classSyft_1_1MaxSetRunner.js b/classSyft_1_1MaxSetRunner.js new file mode 100644 index 0000000..21f2614 --- /dev/null +++ b/classSyft_1_1MaxSetRunner.js @@ -0,0 +1,5 @@ +var classSyft_1_1MaxSetRunner = +[ + [ "MaxSetRunner", "classSyft_1_1MaxSetRunner.html#a4179b0507dee7746affa58f64bdac613", null ], + [ "run", "classSyft_1_1MaxSetRunner.html#a881ecd1ee14192f218defa91b5163048", null ] +]; \ No newline at end of file diff --git a/classSyft_1_1MaxSetRunner__coll__graph.map b/classSyft_1_1MaxSetRunner__coll__graph.map new file mode 100644 index 0000000..38bff2c --- /dev/null +++ b/classSyft_1_1MaxSetRunner__coll__graph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/classSyft_1_1MaxSetRunner__coll__graph.md5 b/classSyft_1_1MaxSetRunner__coll__graph.md5 new file mode 100644 index 0000000..f5d6988 --- /dev/null +++ b/classSyft_1_1MaxSetRunner__coll__graph.md5 @@ -0,0 +1 @@ +a127dc55791185660b6ca4d00c86903c \ No newline at end of file diff --git a/classSyft_1_1MaxSetRunner__coll__graph.png b/classSyft_1_1MaxSetRunner__coll__graph.png new file mode 100644 index 0000000..bd9de8a Binary files /dev/null and b/classSyft_1_1MaxSetRunner__coll__graph.png differ diff --git a/classSyft_1_1MaxSetRunner__inherit__graph.map b/classSyft_1_1MaxSetRunner__inherit__graph.map new file mode 100644 index 0000000..26d2432 --- /dev/null +++ b/classSyft_1_1MaxSetRunner__inherit__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/classSyft_1_1MaxSetRunner__inherit__graph.md5 b/classSyft_1_1MaxSetRunner__inherit__graph.md5 new file mode 100644 index 0000000..75eb61a --- /dev/null +++ b/classSyft_1_1MaxSetRunner__inherit__graph.md5 @@ -0,0 +1 @@ +1d2c2075577e277bcb46614e09aeb7ea \ No newline at end of file diff --git a/classSyft_1_1MaxSetRunner__inherit__graph.png b/classSyft_1_1MaxSetRunner__inherit__graph.png new file mode 100644 index 0000000..b5bf5b3 Binary files /dev/null and b/classSyft_1_1MaxSetRunner__inherit__graph.png differ diff --git a/classSyft_1_1NoQuantification-members.html b/classSyft_1_1NoQuantification-members.html new file mode 100644 index 0000000..eac7ea9 --- /dev/null +++ b/classSyft_1_1NoQuantification-members.html @@ -0,0 +1,102 @@ + + + + + + + +LydiaSyft: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
LydiaSyft +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
Syft::NoQuantification Member List
+
+
+ +

This is the complete list of members for Syft::NoQuantification, including all inherited members.

+ + + +
apply(const CUDD::BDD &bdd) const override (defined in Syft::NoQuantification)Syft::NoQuantificationvirtual
~Quantification() (defined in Syft::Quantification)Syft::Quantificationinlinevirtual
+
+ + + + diff --git a/classSyft_1_1NoQuantification.html b/classSyft_1_1NoQuantification.html new file mode 100644 index 0000000..8d3c045 --- /dev/null +++ b/classSyft_1_1NoQuantification.html @@ -0,0 +1,137 @@ + + + + + + + +LydiaSyft: Syft::NoQuantification Class Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
LydiaSyft +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
Syft::NoQuantification Class Referencefinal
+
+
+ +

Performs no quantification. + More...

+ +

#include <Quantification.h>

+
+Inheritance diagram for Syft::NoQuantification:
+
+
Inheritance graph
+ + + + +
[legend]
+
+Collaboration diagram for Syft::NoQuantification:
+
+
Collaboration graph
+ + + + +
[legend]
+ + + + +

+Public Member Functions

+CUDD::BDD apply (const CUDD::BDD &bdd) const override
 
+

Detailed Description

+

Performs no quantification.

+

The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/classSyft_1_1NoQuantification.js b/classSyft_1_1NoQuantification.js new file mode 100644 index 0000000..c96529f --- /dev/null +++ b/classSyft_1_1NoQuantification.js @@ -0,0 +1,4 @@ +var classSyft_1_1NoQuantification = +[ + [ "apply", "classSyft_1_1NoQuantification.html#afba07db1af3359d92ef55aa7bb8e8a58", null ] +]; \ No newline at end of file diff --git a/classSyft_1_1NoQuantification__coll__graph.map b/classSyft_1_1NoQuantification__coll__graph.map new file mode 100644 index 0000000..d7af073 --- /dev/null +++ b/classSyft_1_1NoQuantification__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/classSyft_1_1NoQuantification__coll__graph.md5 b/classSyft_1_1NoQuantification__coll__graph.md5 new file mode 100644 index 0000000..7cc3fc8 --- /dev/null +++ b/classSyft_1_1NoQuantification__coll__graph.md5 @@ -0,0 +1 @@ +ff41d9d2b8a6f471bf5d41566717bf89 \ No newline at end of file diff --git a/classSyft_1_1NoQuantification__coll__graph.png b/classSyft_1_1NoQuantification__coll__graph.png new file mode 100644 index 0000000..128fb39 Binary files /dev/null and b/classSyft_1_1NoQuantification__coll__graph.png differ diff --git a/classSyft_1_1NoQuantification__inherit__graph.map b/classSyft_1_1NoQuantification__inherit__graph.map new file mode 100644 index 0000000..d7af073 --- /dev/null +++ b/classSyft_1_1NoQuantification__inherit__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/classSyft_1_1NoQuantification__inherit__graph.md5 b/classSyft_1_1NoQuantification__inherit__graph.md5 new file mode 100644 index 0000000..7cc3fc8 --- /dev/null +++ b/classSyft_1_1NoQuantification__inherit__graph.md5 @@ -0,0 +1 @@ +ff41d9d2b8a6f471bf5d41566717bf89 \ No newline at end of file diff --git a/classSyft_1_1NoQuantification__inherit__graph.png b/classSyft_1_1NoQuantification__inherit__graph.png new file mode 100644 index 0000000..128fb39 Binary files /dev/null and b/classSyft_1_1NoQuantification__inherit__graph.png differ diff --git a/classSyft_1_1Parser-members.html b/classSyft_1_1Parser-members.html new file mode 100644 index 0000000..a8cac32 --- /dev/null +++ b/classSyft_1_1Parser-members.html @@ -0,0 +1,106 @@ + + + + + + + +LydiaSyft: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
LydiaSyft +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
Syft::Parser Member List
+
+
+ +

This is the complete list of members for Syft::Parser, including all inherited members.

+ + + + + + + +
get_formula() constSyft::Parser
get_input_variables() constSyft::Parser
get_output_variables() constSyft::Parser
get_sys_first() constSyft::Parser
Parser()Syft::Parser
read_from_file(const std::string &syfco_location, const std::string &filename)Syft::Parserstatic
+
+ + + + diff --git a/classSyft_1_1Parser.html b/classSyft_1_1Parser.html new file mode 100644 index 0000000..733d86b --- /dev/null +++ b/classSyft_1_1Parser.html @@ -0,0 +1,188 @@ + + + + + + + +LydiaSyft: Syft::Parser Class Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
LydiaSyft +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
Syft::Parser Class Reference
+
+
+ +

A parser for reading LTLf synthesis benchmarks in TLSF format. + More...

+ +

#include <Parser.h>

+ + + + + + + + + + + + + + + + + +

+Public Member Functions

Parser ()
 Creates a parser with no items.
 
+std::vector< std::string > get_input_variables () const
 Return input variables in a vector.
 
+std::vector< std::string > get_output_variables () const
 Return output variables in a vector.
 
+std::string get_formula () const
 Return the formula.
 
+bool get_sys_first () const
 Return true if the target is a Moore machine.
 
+ + + + +

+Static Public Member Functions

static Parser read_from_file (const std::string &syfco_location, const std::string &filename)
 Obtain an LTLf formula and construct a partition from a TLSF file. More...
 
+

Detailed Description

+

A parser for reading LTLf synthesis benchmarks in TLSF format.

+

Member Function Documentation

+ +

◆ read_from_file()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
Parser Syft::Parser::read_from_file (const std::string & syfco_location,
const std::string & filename 
)
+
+static
+
+ +

Obtain an LTLf formula and construct a partition from a TLSF file.

+
Parameters
+ + +
filenameThe name of the TLSF file.
+
+
+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/classSyft_1_1Parser.js b/classSyft_1_1Parser.js new file mode 100644 index 0000000..e149b7f --- /dev/null +++ b/classSyft_1_1Parser.js @@ -0,0 +1,8 @@ +var classSyft_1_1Parser = +[ + [ "Parser", "classSyft_1_1Parser.html#ac4c01ee811e3977644f357a0c60b9a52", null ], + [ "get_formula", "classSyft_1_1Parser.html#ac0062a4301f7ec4cdce3376d05b7c5d4", null ], + [ "get_input_variables", "classSyft_1_1Parser.html#aa76c345bca41d45862c14acca78f999e", null ], + [ "get_output_variables", "classSyft_1_1Parser.html#a0aa460587f3519cde1c59d8196601817", null ], + [ "get_sys_first", "classSyft_1_1Parser.html#afd506c507b2c47b6e397197b3d89a551", null ] +]; \ No newline at end of file diff --git a/classSyft_1_1Printer-members.html b/classSyft_1_1Printer-members.html new file mode 100644 index 0000000..cc06787 --- /dev/null +++ b/classSyft_1_1Printer-members.html @@ -0,0 +1,107 @@ + + + + + + + +LydiaSyft: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
LydiaSyft +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
Syft::Printer Member List
+
+
+ +

This is the complete list of members for Syft::Printer, including all inherited members.

+ + + + + + + + +
dump_add_if_enabled(const std::shared_ptr< VarMgr > &var_mgr, const CUDD::ADD &add, const std::string &output_file) const (defined in Syft::Printer)Syft::Printer
dump_maxset_if_enabled(const LTLfMaxSetSynthesizer &maxset_synthesizer, const MaxSetSynthesisResult &maxset_strategy, const std::string &def_strategy_output_file="def_strategy.dot", const std::string &nondef_strategy_output_file="nondef_strategy.dot") const (defined in Syft::Printer)Syft::Printer
dump_transducer_if_enabled(const Transducer &transducer, const std::string &output_file="strategy.dot") const (defined in Syft::Printer)Syft::Printer
print_realizable() const (defined in Syft::Printer)Syft::Printerinline
print_times_if_enabled(const std::string &message, std::chrono::milliseconds time) const (defined in Syft::Printer)Syft::Printer
print_unrealizable() const (defined in Syft::Printer)Syft::Printerinline
Printer(bool print_strategy, bool print_times, std::ostream &out) (defined in Syft::Printer)Syft::Printerinline
+
+ + + + diff --git a/classSyft_1_1Printer.html b/classSyft_1_1Printer.html new file mode 100644 index 0000000..7654089 --- /dev/null +++ b/classSyft_1_1Printer.html @@ -0,0 +1,130 @@ + + + + + + + +LydiaSyft: Syft::Printer Class Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
LydiaSyft +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
Syft::Printer Class Reference
+
+
+ + + + + + + + + + + + + + + + +

+Public Member Functions

Printer (bool print_strategy, bool print_times, std::ostream &out)
 
+void dump_transducer_if_enabled (const Transducer &transducer, const std::string &output_file="strategy.dot") const
 
+void dump_add_if_enabled (const std::shared_ptr< VarMgr > &var_mgr, const CUDD::ADD &add, const std::string &output_file) const
 
+void dump_maxset_if_enabled (const LTLfMaxSetSynthesizer &maxset_synthesizer, const MaxSetSynthesisResult &maxset_strategy, const std::string &def_strategy_output_file="def_strategy.dot", const std::string &nondef_strategy_output_file="nondef_strategy.dot") const
 
+void print_times_if_enabled (const std::string &message, std::chrono::milliseconds time) const
 
+void print_realizable () const
 
+void print_unrealizable () const
 
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/classSyft_1_1Printer.js b/classSyft_1_1Printer.js new file mode 100644 index 0000000..1ea4aee --- /dev/null +++ b/classSyft_1_1Printer.js @@ -0,0 +1,10 @@ +var classSyft_1_1Printer = +[ + [ "Printer", "classSyft_1_1Printer.html#a9f5ee5a3cba5a31aab8536ef2aaeb4a0", null ], + [ "dump_add_if_enabled", "classSyft_1_1Printer.html#a8aa3d068d330639e12cb26ec1ad05b5d", null ], + [ "dump_maxset_if_enabled", "classSyft_1_1Printer.html#ac9ff7e41bc9db36cae702516f3745a41", null ], + [ "dump_transducer_if_enabled", "classSyft_1_1Printer.html#ab6a1c51a40c1b6efa8d9c4cef70e899d", null ], + [ "print_realizable", "classSyft_1_1Printer.html#ab6b472df9125f1a6876d063f3c44cb32", null ], + [ "print_times_if_enabled", "classSyft_1_1Printer.html#a243978d743c934f9736d85f3cfe3e513", null ], + [ "print_unrealizable", "classSyft_1_1Printer.html#ac34d8e2cf7588910f80b09d0fb0f2f5c", null ] +]; \ No newline at end of file diff --git a/classSyft_1_1Quantification-members.html b/classSyft_1_1Quantification-members.html new file mode 100644 index 0000000..c4f2959 --- /dev/null +++ b/classSyft_1_1Quantification-members.html @@ -0,0 +1,102 @@ + + + + + + + +LydiaSyft: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
LydiaSyft +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
Syft::Quantification Member List
+
+
+ +

This is the complete list of members for Syft::Quantification, including all inherited members.

+ + + +
apply(const CUDD::BDD &bdd) const =0 (defined in Syft::Quantification)Syft::Quantificationpure virtual
~Quantification() (defined in Syft::Quantification)Syft::Quantificationinlinevirtual
+
+ + + + diff --git a/classSyft_1_1Quantification.html b/classSyft_1_1Quantification.html new file mode 100644 index 0000000..2b21ab9 --- /dev/null +++ b/classSyft_1_1Quantification.html @@ -0,0 +1,131 @@ + + + + + + + +LydiaSyft: Syft::Quantification Class Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
LydiaSyft +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
Syft::Quantification Class Referenceabstract
+
+
+ +

Abstract class representing a quantification operation on BDDs. + More...

+ +

#include <Quantification.h>

+
+Inheritance diagram for Syft::Quantification:
+
+
Inheritance graph
+ + + + + + + + +
[legend]
+ + + + +

+Public Member Functions

+virtual CUDD::BDD apply (const CUDD::BDD &bdd) const =0
 
+

Detailed Description

+

Abstract class representing a quantification operation on BDDs.

+

The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/classSyft_1_1Quantification.js b/classSyft_1_1Quantification.js new file mode 100644 index 0000000..338221e --- /dev/null +++ b/classSyft_1_1Quantification.js @@ -0,0 +1,5 @@ +var classSyft_1_1Quantification = +[ + [ "~Quantification", "classSyft_1_1Quantification.html#abc062a9b4f92825d193d08eab416ab72", null ], + [ "apply", "classSyft_1_1Quantification.html#ab4a769be18decb1ed6f1e1ef8195ef34", null ] +]; \ No newline at end of file diff --git a/classSyft_1_1Quantification__inherit__graph.map b/classSyft_1_1Quantification__inherit__graph.map new file mode 100644 index 0000000..b7b749c --- /dev/null +++ b/classSyft_1_1Quantification__inherit__graph.map @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/classSyft_1_1Quantification__inherit__graph.md5 b/classSyft_1_1Quantification__inherit__graph.md5 new file mode 100644 index 0000000..87ea8ca --- /dev/null +++ b/classSyft_1_1Quantification__inherit__graph.md5 @@ -0,0 +1 @@ +be5867c00245c04bc41a5a566307f2f8 \ No newline at end of file diff --git a/classSyft_1_1Quantification__inherit__graph.png b/classSyft_1_1Quantification__inherit__graph.png new file mode 100644 index 0000000..9cfebbb Binary files /dev/null and b/classSyft_1_1Quantification__inherit__graph.png differ diff --git a/classSyft_1_1Reachability-members.html b/classSyft_1_1Reachability-members.html new file mode 100644 index 0000000..d730fd0 --- /dev/null +++ b/classSyft_1_1Reachability-members.html @@ -0,0 +1,117 @@ + + + + + + + +LydiaSyft: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
LydiaSyft +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
Syft::Reachability Member List
+
+
+ +

This is the complete list of members for Syft::Reachability, including all inherited members.

+ + + + + + + + + + + + + + + + + + +
AbstractSingleStrategy(const SynthesisResult &result) constSyft::DfaGameSynthesizer
DfaGameSynthesizer(SymbolicStateDfa spec, Player starting_player, Player protagonist_player)Syft::DfaGameSynthesizer
includes_initial_state(const CUDD::BDD &winning_states) constSyft::DfaGameSynthesizerprotected
initial_vector_Syft::DfaGameSynthesizerprotected
preimage(const CUDD::BDD &winning_states) constSyft::DfaGameSynthesizerprotected
project_into_states(const CUDD::BDD &winning_moves) constSyft::DfaGameSynthesizerprotected
protagonist_player_Syft::DfaGameSynthesizerprotected
quantify_independent_variables_Syft::DfaGameSynthesizerprotected
quantify_non_state_variables_Syft::DfaGameSynthesizerprotected
Reachability(const SymbolicStateDfa &spec, Player starting_player, Player protagonist_player, const CUDD::BDD &goal_states, const CUDD::BDD &state_space)Syft::Reachability
run() const finalSyft::Reachabilityvirtual
spec_Syft::Synthesizer< SymbolicStateDfa >protected
starting_player_Syft::DfaGameSynthesizerprotected
Synthesizer(SymbolicStateDfa spec) (defined in Syft::Synthesizer< SymbolicStateDfa >)Syft::Synthesizer< SymbolicStateDfa >inline
transition_vector_Syft::DfaGameSynthesizerprotected
var_mgr_Syft::DfaGameSynthesizerprotected
~Synthesizer() (defined in Syft::Synthesizer< SymbolicStateDfa >)Syft::Synthesizer< SymbolicStateDfa >inlinevirtual
+
+ + + + diff --git a/classSyft_1_1Reachability.html b/classSyft_1_1Reachability.html new file mode 100644 index 0000000..52fb604 --- /dev/null +++ b/classSyft_1_1Reachability.html @@ -0,0 +1,291 @@ + + + + + + + +LydiaSyft: Syft::Reachability Class Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
LydiaSyft +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
Syft::Reachability Class Reference
+
+
+ +

A single-strategy-synthesizer for a reachability game given as a symbolic-state DFA. + More...

+ +

#include <Reachability.hpp>

+
+Inheritance diagram for Syft::Reachability:
+
+
Inheritance graph
+ + + + + +
[legend]
+
+Collaboration diagram for Syft::Reachability:
+
+
Collaboration graph
+ + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + +

+Public Member Functions

 Reachability (const SymbolicStateDfa &spec, Player starting_player, Player protagonist_player, const CUDD::BDD &goal_states, const CUDD::BDD &state_space)
 Construct a single-strategy-synthesizer for the given reachability game. More...
 
SynthesisResult run () const final
 Solves the reachability game. More...
 
- Public Member Functions inherited from Syft::DfaGameSynthesizer
 DfaGameSynthesizer (SymbolicStateDfa spec, Player starting_player, Player protagonist_player)
 Construct a synthesizer for a given DFA game. More...
 
std::unique_ptr< TransducerAbstractSingleStrategy (const SynthesisResult &result) const
 Abstract a winning strategy for the game. More...
 
- Public Member Functions inherited from Syft::Synthesizer< SymbolicStateDfa >
Synthesizer (SymbolicStateDfa spec)
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Protected Member Functions inherited from Syft::DfaGameSynthesizer
CUDD::BDD preimage (const CUDD::BDD &winning_states) const
 Compute a set of winning moves. More...
 
CUDD::BDD project_into_states (const CUDD::BDD &winning_moves) const
 Project a set of winning moves to a set of winning states. More...
 
bool includes_initial_state (const CUDD::BDD &winning_states) const
 Check whether the initial state is a winning state. More...
 
- Protected Attributes inherited from Syft::DfaGameSynthesizer
+std::shared_ptr< VarMgrvar_mgr_
 Variable manager.
 
+Player starting_player_
 The player that moves first each turn.
 
+Player protagonist_player_
 The player for which we aim to find the winning strategy.
 
+std::vector< int > initial_vector_
 The initial state of the game arena.
 
+std::vector< CUDD::BDD > transition_vector_
 The transition function of the game arena.
 
+std::unique_ptr< Quantificationquantify_independent_variables_
 Quantification on the variables that the protagonist player does not depend on.
 
+std::unique_ptr< Quantificationquantify_non_state_variables_
 Quantification on non-state variables.
 
- Protected Attributes inherited from Syft::Synthesizer< SymbolicStateDfa >
+SymbolicStateDfa spec_
 The game arena.
 
+

Detailed Description

+

A single-strategy-synthesizer for a reachability game given as a symbolic-state DFA.

+

Reachability condition holds.

+

Constructor & Destructor Documentation

+ +

◆ Reachability()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Syft::Reachability::Reachability (const SymbolicStateDfaspec,
Player starting_player,
Player protagonist_player,
const CUDD::BDD & goal_states,
const CUDD::BDD & state_space 
)
+
+ +

Construct a single-strategy-synthesizer for the given reachability game.

+
Parameters
+ + + + + + +
specA symbolic-state DFA representing the reachability game arena.
starting_playerThe player that moves first each turn.
protagonist_playerThe player for which we aim to find the winning strategy.
goal_statesThe reachability condition.
state_spaceThe state space.
+
+
+ +
+
+

Member Function Documentation

+ +

◆ run()

+ +
+
+ + + + + +
+ + + + + + + +
SynthesisResult Syft::Reachability::run () const
+
+finalvirtual
+
+ +

Solves the reachability game.

+
Returns
The result consists of realizability a set of agent winning states a transducer representing a winning strategy or nullptr if the game is unrealizable.
+ +

Implements Syft::DfaGameSynthesizer.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/classSyft_1_1Reachability.js b/classSyft_1_1Reachability.js new file mode 100644 index 0000000..a6ef754 --- /dev/null +++ b/classSyft_1_1Reachability.js @@ -0,0 +1,5 @@ +var classSyft_1_1Reachability = +[ + [ "Reachability", "classSyft_1_1Reachability.html#ae0a594a1b0edf589e2c0abdbef8a5e54", null ], + [ "run", "classSyft_1_1Reachability.html#a9b0ffe1dbf4ea8dbfee8c71d774556c9", null ] +]; \ No newline at end of file diff --git a/classSyft_1_1ReachabilityMaxSet-members.html b/classSyft_1_1ReachabilityMaxSet-members.html new file mode 100644 index 0000000..d80c42b --- /dev/null +++ b/classSyft_1_1ReachabilityMaxSet-members.html @@ -0,0 +1,119 @@ + + + + + + + +LydiaSyft: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
LydiaSyft +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
Syft::ReachabilityMaxSet Member List
+
+
+ +

This is the complete list of members for Syft::ReachabilityMaxSet, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + +
AbstractSingleStrategy(const SynthesisResult &result) constSyft::DfaGameSynthesizer
DfaGameSynthesizer(SymbolicStateDfa spec, Player starting_player, Player protagonist_player)Syft::DfaGameSynthesizer
dump_dot(MaxSetSynthesisResult maxset, const std::string &def_filename, const std::string &nondef_filename) const (defined in Syft::ReachabilityMaxSet)Syft::ReachabilityMaxSet
includes_initial_state(const CUDD::BDD &winning_states) constSyft::DfaGameSynthesizerprotected
initial_vector_Syft::DfaGameSynthesizerprotected
preimage(const CUDD::BDD &winning_states) constSyft::DfaGameSynthesizerprotected
project_into_states(const CUDD::BDD &winning_moves) constSyft::DfaGameSynthesizerprotected
protagonist_player_Syft::DfaGameSynthesizerprotected
quantify_independent_variables_Syft::DfaGameSynthesizerprotected
quantify_non_state_variables_Syft::DfaGameSynthesizerprotected
ReachabilityMaxSet(const SymbolicStateDfa &spec, Player starting_player, Player protagonist_player, const CUDD::BDD &goal_states, const CUDD::BDD &state_space)Syft::ReachabilityMaxSet
run() const finalSyft::ReachabilityMaxSetvirtual
run_maxset() constSyft::ReachabilityMaxSet
spec_Syft::Synthesizer< SymbolicStateDfa >protected
starting_player_Syft::DfaGameSynthesizerprotected
Synthesizer(SymbolicStateDfa spec) (defined in Syft::Synthesizer< SymbolicStateDfa >)Syft::Synthesizer< SymbolicStateDfa >inline
transition_vector_Syft::DfaGameSynthesizerprotected
var_mgr_Syft::DfaGameSynthesizerprotected
~Synthesizer() (defined in Syft::Synthesizer< SymbolicStateDfa >)Syft::Synthesizer< SymbolicStateDfa >inlinevirtual
+
+ + + + diff --git a/classSyft_1_1ReachabilityMaxSet.html b/classSyft_1_1ReachabilityMaxSet.html new file mode 100644 index 0000000..492b039 --- /dev/null +++ b/classSyft_1_1ReachabilityMaxSet.html @@ -0,0 +1,317 @@ + + + + + + + +LydiaSyft: Syft::ReachabilityMaxSet Class Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
LydiaSyft +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
Syft::ReachabilityMaxSet Class Reference
+
+
+ +

A maxset-strategy-synthesizer for a reachability game given as a symbolic-state DFA. + More...

+ +

#include <ReachabilityMaxSet.hpp>

+
+Inheritance diagram for Syft::ReachabilityMaxSet:
+
+
Inheritance graph
+ + + + + +
[legend]
+
+Collaboration diagram for Syft::ReachabilityMaxSet:
+
+
Collaboration graph
+ + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 ReachabilityMaxSet (const SymbolicStateDfa &spec, Player starting_player, Player protagonist_player, const CUDD::BDD &goal_states, const CUDD::BDD &state_space)
 Construct a maxset-strategy-synthesizer for the given reachability game. More...
 
MaxSetSynthesisResult run_maxset () const
 Solves the maxset-reachability game. More...
 
SynthesisResult run () const final
 Solve standard reachability game. More...
 
+void dump_dot (MaxSetSynthesisResult maxset, const std::string &def_filename, const std::string &nondef_filename) const
 
- Public Member Functions inherited from Syft::DfaGameSynthesizer
 DfaGameSynthesizer (SymbolicStateDfa spec, Player starting_player, Player protagonist_player)
 Construct a synthesizer for a given DFA game. More...
 
std::unique_ptr< TransducerAbstractSingleStrategy (const SynthesisResult &result) const
 Abstract a winning strategy for the game. More...
 
- Public Member Functions inherited from Syft::Synthesizer< SymbolicStateDfa >
Synthesizer (SymbolicStateDfa spec)
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Protected Member Functions inherited from Syft::DfaGameSynthesizer
CUDD::BDD preimage (const CUDD::BDD &winning_states) const
 Compute a set of winning moves. More...
 
CUDD::BDD project_into_states (const CUDD::BDD &winning_moves) const
 Project a set of winning moves to a set of winning states. More...
 
bool includes_initial_state (const CUDD::BDD &winning_states) const
 Check whether the initial state is a winning state. More...
 
- Protected Attributes inherited from Syft::DfaGameSynthesizer
+std::shared_ptr< VarMgrvar_mgr_
 Variable manager.
 
+Player starting_player_
 The player that moves first each turn.
 
+Player protagonist_player_
 The player for which we aim to find the winning strategy.
 
+std::vector< int > initial_vector_
 The initial state of the game arena.
 
+std::vector< CUDD::BDD > transition_vector_
 The transition function of the game arena.
 
+std::unique_ptr< Quantificationquantify_independent_variables_
 Quantification on the variables that the protagonist player does not depend on.
 
+std::unique_ptr< Quantificationquantify_non_state_variables_
 Quantification on non-state variables.
 
- Protected Attributes inherited from Syft::Synthesizer< SymbolicStateDfa >
+SymbolicStateDfa spec_
 The game arena.
 
+

Detailed Description

+

A maxset-strategy-synthesizer for a reachability game given as a symbolic-state DFA.

+

Reachability condition holds.

+

Constructor & Destructor Documentation

+ +

◆ ReachabilityMaxSet()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Syft::ReachabilityMaxSet::ReachabilityMaxSet (const SymbolicStateDfaspec,
Player starting_player,
Player protagonist_player,
const CUDD::BDD & goal_states,
const CUDD::BDD & state_space 
)
+
+ +

Construct a maxset-strategy-synthesizer for the given reachability game.

+
Parameters
+ + + + + + +
specA symbolic-state DFA representing the reachability game arena.
starting_playerThe player that moves first each turn.
protagonist_playerThe player for which we aim to find the winning strategy.
goal_statesThe reachability condition.
state_spaceThe state space.
+
+
+ +
+
+

Member Function Documentation

+ +

◆ run()

+ +
+
+ + + + + +
+ + + + + + + +
SynthesisResult Syft::ReachabilityMaxSet::run () const
+
+finalvirtual
+
+ +

Solve standard reachability game.

+
Returns
The result consists of realizability the non-deferring strategy the deferring strategy.
+ +

Implements Syft::DfaGameSynthesizer.

+ +
+
+ +

◆ run_maxset()

+ +
+
+ + + + + + + +
MaxSetSynthesisResult Syft::ReachabilityMaxSet::run_maxset () const
+
+ +

Solves the maxset-reachability game.

+
Returns
The result consists of realizability the non-deferring strategy the deferring strategy.
+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/classSyft_1_1ReachabilityMaxSet.js b/classSyft_1_1ReachabilityMaxSet.js new file mode 100644 index 0000000..56aec4b --- /dev/null +++ b/classSyft_1_1ReachabilityMaxSet.js @@ -0,0 +1,7 @@ +var classSyft_1_1ReachabilityMaxSet = +[ + [ "ReachabilityMaxSet", "classSyft_1_1ReachabilityMaxSet.html#a15ecc7aeea8faa5cf5e6481019dffe14", null ], + [ "dump_dot", "classSyft_1_1ReachabilityMaxSet.html#ade3ce2ccb6c6f0a2ef8a385f56bcfb39", null ], + [ "run", "classSyft_1_1ReachabilityMaxSet.html#aed2afd6a549e6f7b3bed0a304dc29c42", null ], + [ "run_maxset", "classSyft_1_1ReachabilityMaxSet.html#a9567dd9af5eef782afee1aa18e7c9615", null ] +]; \ No newline at end of file diff --git a/classSyft_1_1ReachabilityMaxSetSynthesizer-members.html b/classSyft_1_1ReachabilityMaxSetSynthesizer-members.html new file mode 100644 index 0000000..63fe150 --- /dev/null +++ b/classSyft_1_1ReachabilityMaxSetSynthesizer-members.html @@ -0,0 +1,119 @@ + + + + + + + +LydiaSyft: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
LydiaSyft +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
Syft::ReachabilityMaxSetSynthesizer Member List
+
+
+ +

This is the complete list of members for Syft::ReachabilityMaxSetSynthesizer, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + +
AbstractMaxSet(const SynthesisResult &) const (defined in Syft::ReachabilityMaxSetSynthesizer)Syft::ReachabilityMaxSetSynthesizer
AbstractSingleStrategy(const SynthesisResult &result) constSyft::DfaGameSynthesizer
DfaGameSynthesizer(SymbolicStateDfa spec, Player starting_player, Player protagonist_player)Syft::DfaGameSynthesizer
dump_dot(MaxSet maxset, const std::string &def_filename, const std::string &nondef_filename) const (defined in Syft::ReachabilityMaxSetSynthesizer)Syft::ReachabilityMaxSetSynthesizer
includes_initial_state(const CUDD::BDD &winning_states) constSyft::DfaGameSynthesizerprotected
initial_vector_Syft::DfaGameSynthesizerprotected
preimage(const CUDD::BDD &winning_states) constSyft::DfaGameSynthesizerprotected
project_into_states(const CUDD::BDD &winning_moves) constSyft::DfaGameSynthesizerprotected
protagonist_player_Syft::DfaGameSynthesizerprotected
quantify_independent_variables_Syft::DfaGameSynthesizerprotected
quantify_non_state_variables_Syft::DfaGameSynthesizerprotected
ReachabilityMaxSetSynthesizer(SymbolicStateDfa spec, Player starting_player, Player protagonist_player, CUDD::BDD goal_states, CUDD::BDD state_space)Syft::ReachabilityMaxSetSynthesizer
run() const finalSyft::ReachabilityMaxSetSynthesizervirtual
spec_ (defined in Syft::Synthesizer< SymbolicStateDfa >)Syft::Synthesizer< SymbolicStateDfa >protected
starting_player_Syft::DfaGameSynthesizerprotected
Synthesizer(SymbolicStateDfa spec) (defined in Syft::Synthesizer< SymbolicStateDfa >)Syft::Synthesizer< SymbolicStateDfa >inline
transition_vector_Syft::DfaGameSynthesizerprotected
var_mgr_Syft::DfaGameSynthesizerprotected
~Synthesizer() (defined in Syft::Synthesizer< SymbolicStateDfa >)Syft::Synthesizer< SymbolicStateDfa >inlinevirtual
+
+ + + + diff --git a/classSyft_1_1ReachabilityMaxSetSynthesizer.html b/classSyft_1_1ReachabilityMaxSetSynthesizer.html new file mode 100644 index 0000000..d4676d1 --- /dev/null +++ b/classSyft_1_1ReachabilityMaxSetSynthesizer.html @@ -0,0 +1,293 @@ + + + + + + + +LydiaSyft: Syft::ReachabilityMaxSetSynthesizer Class Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
LydiaSyft +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
Syft::ReachabilityMaxSetSynthesizer Class Reference
+
+
+ +

A maxset-synthesizer for a reachability game given as a symbolic-state DFA. + More...

+ +

#include <ReachabilityMaxSetSynthesizer.h>

+
+Inheritance diagram for Syft::ReachabilityMaxSetSynthesizer:
+
+
Inheritance graph
+ + + + + +
[legend]
+
+Collaboration diagram for Syft::ReachabilityMaxSetSynthesizer:
+
+
Collaboration graph
+ + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 ReachabilityMaxSetSynthesizer (SymbolicStateDfa spec, Player starting_player, Player protagonist_player, CUDD::BDD goal_states, CUDD::BDD state_space)
 Construct a maxset-synthesizer for the given reachability game. More...
 
virtual SynthesisResult run () const final
 Solves the reachability game. More...
 
+MaxSet AbstractMaxSet (const SynthesisResult &) const
 
+void dump_dot (MaxSet maxset, const std::string &def_filename, const std::string &nondef_filename) const
 
- Public Member Functions inherited from Syft::DfaGameSynthesizer
 DfaGameSynthesizer (SymbolicStateDfa spec, Player starting_player, Player protagonist_player)
 Construct a synthesizer for a given DFA game. More...
 
std::unique_ptr< TransducerAbstractSingleStrategy (const SynthesisResult &result) const
 Abstract a winning strategy for the game. More...
 
- Public Member Functions inherited from Syft::Synthesizer< SymbolicStateDfa >
Synthesizer (SymbolicStateDfa spec)
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Protected Member Functions inherited from Syft::DfaGameSynthesizer
CUDD::BDD preimage (const CUDD::BDD &winning_states) const
 Compute a set of winning moves. More...
 
CUDD::BDD project_into_states (const CUDD::BDD &winning_moves) const
 Project a set of winning moves to a set of winning states. More...
 
bool includes_initial_state (const CUDD::BDD &winning_states) const
 Check whether the initial state is a winning state. More...
 
- Protected Attributes inherited from Syft::DfaGameSynthesizer
+std::shared_ptr< VarMgrvar_mgr_
 Variable manager.
 
+Player starting_player_
 The player that moves first each turn.
 
+Player protagonist_player_
 The player for which we aim to find the winning strategy.
 
+std::vector< int > initial_vector_
 The initial state of the game arena.
 
+std::vector< CUDD::BDD > transition_vector_
 The transition function of the game arena.
 
+std::unique_ptr< Quantificationquantify_independent_variables_
 Quantification on the variables that the protagonist player does not depend on.
 
+std::unique_ptr< Quantificationquantify_non_state_variables_
 Quantification on non-state variables.
 
- Protected Attributes inherited from Syft::Synthesizer< SymbolicStateDfa >
+SymbolicStateDfa spec_
 
+

Detailed Description

+

A maxset-synthesizer for a reachability game given as a symbolic-state DFA.

+

Constructor & Destructor Documentation

+ +

◆ ReachabilityMaxSetSynthesizer()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Syft::ReachabilityMaxSetSynthesizer::ReachabilityMaxSetSynthesizer (SymbolicStateDfa spec,
Player starting_player,
Player protagonist_player,
CUDD::BDD goal_states,
CUDD::BDD state_space 
)
+
+ +

Construct a maxset-synthesizer for the given reachability game.

+
Parameters
+ + + + +
specA symbolic-state DFA representing the reachability game.
starting_playerThe player that moves first each turn.
goal_statesThe set of states that the agent must reach to win.
+
+
+ +
+
+

Member Function Documentation

+ +

◆ run()

+ +
+
+ + + + + +
+ + + + + + + +
SynthesisResult Syft::ReachabilityMaxSetSynthesizer::run () const
+
+finalvirtual
+
+ +

Solves the reachability game.

+
Returns
The result consists of realizability a set of agent winning states a transducer representing a winning strategy or nullptr if the game is unrealizable.
+ +

Implements Syft::DfaGameSynthesizer.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/classSyft_1_1ReachabilityMaxSetSynthesizer.js b/classSyft_1_1ReachabilityMaxSetSynthesizer.js new file mode 100644 index 0000000..db353db --- /dev/null +++ b/classSyft_1_1ReachabilityMaxSetSynthesizer.js @@ -0,0 +1,7 @@ +var classSyft_1_1ReachabilityMaxSetSynthesizer = +[ + [ "ReachabilityMaxSetSynthesizer", "classSyft_1_1ReachabilityMaxSetSynthesizer.html#a5a72e140cd5d6438d0ee3499c39c9ce3", null ], + [ "AbstractMaxSet", "classSyft_1_1ReachabilityMaxSetSynthesizer.html#ae8ae00707dd262efcd001a99a3445203", null ], + [ "dump_dot", "classSyft_1_1ReachabilityMaxSetSynthesizer.html#af1ef33da138572751d5e411fb275f795", null ], + [ "run", "classSyft_1_1ReachabilityMaxSetSynthesizer.html#ae9f0b5cb43a11ccaebe384c2d76e7b1a", null ] +]; \ No newline at end of file diff --git a/classSyft_1_1ReachabilityMaxSetSynthesizer__coll__graph.map b/classSyft_1_1ReachabilityMaxSetSynthesizer__coll__graph.map new file mode 100644 index 0000000..c615352 --- /dev/null +++ b/classSyft_1_1ReachabilityMaxSetSynthesizer__coll__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/classSyft_1_1ReachabilityMaxSetSynthesizer__coll__graph.md5 b/classSyft_1_1ReachabilityMaxSetSynthesizer__coll__graph.md5 new file mode 100644 index 0000000..e249240 --- /dev/null +++ b/classSyft_1_1ReachabilityMaxSetSynthesizer__coll__graph.md5 @@ -0,0 +1 @@ +000cf429158ff924b108c087d665ad33 \ No newline at end of file diff --git a/classSyft_1_1ReachabilityMaxSetSynthesizer__coll__graph.png b/classSyft_1_1ReachabilityMaxSetSynthesizer__coll__graph.png new file mode 100644 index 0000000..bc3feb2 Binary files /dev/null and b/classSyft_1_1ReachabilityMaxSetSynthesizer__coll__graph.png differ diff --git a/classSyft_1_1ReachabilityMaxSetSynthesizer__inherit__graph.map b/classSyft_1_1ReachabilityMaxSetSynthesizer__inherit__graph.map new file mode 100644 index 0000000..c615352 --- /dev/null +++ b/classSyft_1_1ReachabilityMaxSetSynthesizer__inherit__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/classSyft_1_1ReachabilityMaxSetSynthesizer__inherit__graph.md5 b/classSyft_1_1ReachabilityMaxSetSynthesizer__inherit__graph.md5 new file mode 100644 index 0000000..e249240 --- /dev/null +++ b/classSyft_1_1ReachabilityMaxSetSynthesizer__inherit__graph.md5 @@ -0,0 +1 @@ +000cf429158ff924b108c087d665ad33 \ No newline at end of file diff --git a/classSyft_1_1ReachabilityMaxSetSynthesizer__inherit__graph.png b/classSyft_1_1ReachabilityMaxSetSynthesizer__inherit__graph.png new file mode 100644 index 0000000..bc3feb2 Binary files /dev/null and b/classSyft_1_1ReachabilityMaxSetSynthesizer__inherit__graph.png differ diff --git a/classSyft_1_1ReachabilityMaxSet__coll__graph.map b/classSyft_1_1ReachabilityMaxSet__coll__graph.map new file mode 100644 index 0000000..97925c5 --- /dev/null +++ b/classSyft_1_1ReachabilityMaxSet__coll__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/classSyft_1_1ReachabilityMaxSet__coll__graph.md5 b/classSyft_1_1ReachabilityMaxSet__coll__graph.md5 new file mode 100644 index 0000000..9360880 --- /dev/null +++ b/classSyft_1_1ReachabilityMaxSet__coll__graph.md5 @@ -0,0 +1 @@ +411bf77fa49ad98e2509eaf15fd8e04d \ No newline at end of file diff --git a/classSyft_1_1ReachabilityMaxSet__coll__graph.png b/classSyft_1_1ReachabilityMaxSet__coll__graph.png new file mode 100644 index 0000000..809dc6f Binary files /dev/null and b/classSyft_1_1ReachabilityMaxSet__coll__graph.png differ diff --git a/classSyft_1_1ReachabilityMaxSet__inherit__graph.map b/classSyft_1_1ReachabilityMaxSet__inherit__graph.map new file mode 100644 index 0000000..97925c5 --- /dev/null +++ b/classSyft_1_1ReachabilityMaxSet__inherit__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/classSyft_1_1ReachabilityMaxSet__inherit__graph.md5 b/classSyft_1_1ReachabilityMaxSet__inherit__graph.md5 new file mode 100644 index 0000000..9360880 --- /dev/null +++ b/classSyft_1_1ReachabilityMaxSet__inherit__graph.md5 @@ -0,0 +1 @@ +411bf77fa49ad98e2509eaf15fd8e04d \ No newline at end of file diff --git a/classSyft_1_1ReachabilityMaxSet__inherit__graph.png b/classSyft_1_1ReachabilityMaxSet__inherit__graph.png new file mode 100644 index 0000000..809dc6f Binary files /dev/null and b/classSyft_1_1ReachabilityMaxSet__inherit__graph.png differ diff --git a/classSyft_1_1ReachabilitySynthesizer-members.html b/classSyft_1_1ReachabilitySynthesizer-members.html new file mode 100644 index 0000000..6ef3c9b --- /dev/null +++ b/classSyft_1_1ReachabilitySynthesizer-members.html @@ -0,0 +1,117 @@ + + + + + + + +LydiaSyft: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
LydiaSyft +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
Syft::ReachabilitySynthesizer Member List
+
+
+ +

This is the complete list of members for Syft::ReachabilitySynthesizer, including all inherited members.

+ + + + + + + + + + + + + + + + + + +
AbstractSingleStrategy(const SynthesisResult &result) constSyft::DfaGameSynthesizer
DfaGameSynthesizer(SymbolicStateDfa spec, Player starting_player, Player protagonist_player)Syft::DfaGameSynthesizer
includes_initial_state(const CUDD::BDD &winning_states) constSyft::DfaGameSynthesizerprotected
initial_vector_Syft::DfaGameSynthesizerprotected
preimage(const CUDD::BDD &winning_states) constSyft::DfaGameSynthesizerprotected
project_into_states(const CUDD::BDD &winning_moves) constSyft::DfaGameSynthesizerprotected
protagonist_player_Syft::DfaGameSynthesizerprotected
quantify_independent_variables_Syft::DfaGameSynthesizerprotected
quantify_non_state_variables_Syft::DfaGameSynthesizerprotected
ReachabilitySynthesizer(SymbolicStateDfa spec, Player starting_player, Player protagonist_player, CUDD::BDD goal_states, CUDD::BDD state_space)Syft::ReachabilitySynthesizer
run() const finalSyft::ReachabilitySynthesizervirtual
spec_ (defined in Syft::Synthesizer< SymbolicStateDfa >)Syft::Synthesizer< SymbolicStateDfa >protected
starting_player_Syft::DfaGameSynthesizerprotected
Synthesizer(SymbolicStateDfa spec) (defined in Syft::Synthesizer< SymbolicStateDfa >)Syft::Synthesizer< SymbolicStateDfa >inline
transition_vector_Syft::DfaGameSynthesizerprotected
var_mgr_Syft::DfaGameSynthesizerprotected
~Synthesizer() (defined in Syft::Synthesizer< SymbolicStateDfa >)Syft::Synthesizer< SymbolicStateDfa >inlinevirtual
+
+ + + + diff --git a/classSyft_1_1ReachabilitySynthesizer.html b/classSyft_1_1ReachabilitySynthesizer.html new file mode 100644 index 0000000..cc9e288 --- /dev/null +++ b/classSyft_1_1ReachabilitySynthesizer.html @@ -0,0 +1,289 @@ + + + + + + + +LydiaSyft: Syft::ReachabilitySynthesizer Class Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
LydiaSyft +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
Syft::ReachabilitySynthesizer Class Reference
+
+
+ +

A single-strategy-synthesizer for a reachability game given as a symbolic-state DFA. + More...

+ +

#include <ReachabilitySynthesizer.h>

+
+Inheritance diagram for Syft::ReachabilitySynthesizer:
+
+
Inheritance graph
+ + + + + +
[legend]
+
+Collaboration diagram for Syft::ReachabilitySynthesizer:
+
+
Collaboration graph
+ + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + +

+Public Member Functions

 ReachabilitySynthesizer (SymbolicStateDfa spec, Player starting_player, Player protagonist_player, CUDD::BDD goal_states, CUDD::BDD state_space)
 Construct a single-strategy-synthesizer for the given reachability game. More...
 
virtual SynthesisResult run () const final
 Solves the reachability game. More...
 
- Public Member Functions inherited from Syft::DfaGameSynthesizer
 DfaGameSynthesizer (SymbolicStateDfa spec, Player starting_player, Player protagonist_player)
 Construct a synthesizer for a given DFA game. More...
 
std::unique_ptr< TransducerAbstractSingleStrategy (const SynthesisResult &result) const
 Abstract a winning strategy for the game. More...
 
- Public Member Functions inherited from Syft::Synthesizer< SymbolicStateDfa >
Synthesizer (SymbolicStateDfa spec)
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Protected Member Functions inherited from Syft::DfaGameSynthesizer
CUDD::BDD preimage (const CUDD::BDD &winning_states) const
 Compute a set of winning moves. More...
 
CUDD::BDD project_into_states (const CUDD::BDD &winning_moves) const
 Project a set of winning moves to a set of winning states. More...
 
bool includes_initial_state (const CUDD::BDD &winning_states) const
 Check whether the initial state is a winning state. More...
 
- Protected Attributes inherited from Syft::DfaGameSynthesizer
+std::shared_ptr< VarMgrvar_mgr_
 Variable manager.
 
+Player starting_player_
 The player that moves first each turn.
 
+Player protagonist_player_
 The player for which we aim to find the winning strategy.
 
+std::vector< int > initial_vector_
 The initial state of the game arena.
 
+std::vector< CUDD::BDD > transition_vector_
 The transition function of the game arena.
 
+std::unique_ptr< Quantificationquantify_independent_variables_
 Quantification on the variables that the protagonist player does not depend on.
 
+std::unique_ptr< Quantificationquantify_non_state_variables_
 Quantification on non-state variables.
 
- Protected Attributes inherited from Syft::Synthesizer< SymbolicStateDfa >
+SymbolicStateDfa spec_
 
+

Detailed Description

+

A single-strategy-synthesizer for a reachability game given as a symbolic-state DFA.

+

Constructor & Destructor Documentation

+ +

◆ ReachabilitySynthesizer()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Syft::ReachabilitySynthesizer::ReachabilitySynthesizer (SymbolicStateDfa spec,
Player starting_player,
Player protagonist_player,
CUDD::BDD goal_states,
CUDD::BDD state_space 
)
+
+ +

Construct a single-strategy-synthesizer for the given reachability game.

+
Parameters
+ + + + + + +
specA symbolic-state DFA representing the reachability game arena.
starting_playerThe player that moves first each turn.
protagonist_playerThe player for which we aim to find the winning strategy.
goal_statesThe set of states that the agent must reach to win.
state_spaceThe state space.
+
+
+ +
+
+

Member Function Documentation

+ +

◆ run()

+ +
+
+ + + + + +
+ + + + + + + +
SynthesisResult Syft::ReachabilitySynthesizer::run () const
+
+finalvirtual
+
+ +

Solves the reachability game.

+
Returns
The result consists of realizability a set of agent winning states a transducer representing a winning strategy or nullptr if the game is unrealizable.
+ +

Implements Syft::DfaGameSynthesizer.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/classSyft_1_1ReachabilitySynthesizer.js b/classSyft_1_1ReachabilitySynthesizer.js new file mode 100644 index 0000000..c0ddb59 --- /dev/null +++ b/classSyft_1_1ReachabilitySynthesizer.js @@ -0,0 +1,5 @@ +var classSyft_1_1ReachabilitySynthesizer = +[ + [ "ReachabilitySynthesizer", "classSyft_1_1ReachabilitySynthesizer.html#aa9d107352eea706e0e1a01a484a31064", null ], + [ "run", "classSyft_1_1ReachabilitySynthesizer.html#a473c18532fa81bf768db1217fa46dc30", null ] +]; \ No newline at end of file diff --git a/classSyft_1_1ReachabilitySynthesizer__coll__graph.map b/classSyft_1_1ReachabilitySynthesizer__coll__graph.map new file mode 100644 index 0000000..1bedd04 --- /dev/null +++ b/classSyft_1_1ReachabilitySynthesizer__coll__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/classSyft_1_1ReachabilitySynthesizer__coll__graph.md5 b/classSyft_1_1ReachabilitySynthesizer__coll__graph.md5 new file mode 100644 index 0000000..4b49698 --- /dev/null +++ b/classSyft_1_1ReachabilitySynthesizer__coll__graph.md5 @@ -0,0 +1 @@ +841d2b0fd56b9e7c32afd39f720f041e \ No newline at end of file diff --git a/classSyft_1_1ReachabilitySynthesizer__coll__graph.png b/classSyft_1_1ReachabilitySynthesizer__coll__graph.png new file mode 100644 index 0000000..fc8d94c Binary files /dev/null and b/classSyft_1_1ReachabilitySynthesizer__coll__graph.png differ diff --git a/classSyft_1_1ReachabilitySynthesizer__inherit__graph.map b/classSyft_1_1ReachabilitySynthesizer__inherit__graph.map new file mode 100644 index 0000000..1bedd04 --- /dev/null +++ b/classSyft_1_1ReachabilitySynthesizer__inherit__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/classSyft_1_1ReachabilitySynthesizer__inherit__graph.md5 b/classSyft_1_1ReachabilitySynthesizer__inherit__graph.md5 new file mode 100644 index 0000000..4b49698 --- /dev/null +++ b/classSyft_1_1ReachabilitySynthesizer__inherit__graph.md5 @@ -0,0 +1 @@ +841d2b0fd56b9e7c32afd39f720f041e \ No newline at end of file diff --git a/classSyft_1_1ReachabilitySynthesizer__inherit__graph.png b/classSyft_1_1ReachabilitySynthesizer__inherit__graph.png new file mode 100644 index 0000000..fc8d94c Binary files /dev/null and b/classSyft_1_1ReachabilitySynthesizer__inherit__graph.png differ diff --git a/classSyft_1_1Reachability__coll__graph.map b/classSyft_1_1Reachability__coll__graph.map new file mode 100644 index 0000000..32b83ea --- /dev/null +++ b/classSyft_1_1Reachability__coll__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/classSyft_1_1Reachability__coll__graph.md5 b/classSyft_1_1Reachability__coll__graph.md5 new file mode 100644 index 0000000..566b242 --- /dev/null +++ b/classSyft_1_1Reachability__coll__graph.md5 @@ -0,0 +1 @@ +228451674e225b287728ae5d5469989d \ No newline at end of file diff --git a/classSyft_1_1Reachability__coll__graph.png b/classSyft_1_1Reachability__coll__graph.png new file mode 100644 index 0000000..f2b0082 Binary files /dev/null and b/classSyft_1_1Reachability__coll__graph.png differ diff --git a/classSyft_1_1Reachability__inherit__graph.map b/classSyft_1_1Reachability__inherit__graph.map new file mode 100644 index 0000000..32b83ea --- /dev/null +++ b/classSyft_1_1Reachability__inherit__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/classSyft_1_1Reachability__inherit__graph.md5 b/classSyft_1_1Reachability__inherit__graph.md5 new file mode 100644 index 0000000..566b242 --- /dev/null +++ b/classSyft_1_1Reachability__inherit__graph.md5 @@ -0,0 +1 @@ +228451674e225b287728ae5d5469989d \ No newline at end of file diff --git a/classSyft_1_1Reachability__inherit__graph.png b/classSyft_1_1Reachability__inherit__graph.png new file mode 100644 index 0000000..f2b0082 Binary files /dev/null and b/classSyft_1_1Reachability__inherit__graph.png differ diff --git a/classSyft_1_1SmtOneStepRealizabilityVisitor-members.html b/classSyft_1_1SmtOneStepRealizabilityVisitor-members.html new file mode 100644 index 0000000..e6c5e82 --- /dev/null +++ b/classSyft_1_1SmtOneStepRealizabilityVisitor-members.html @@ -0,0 +1,121 @@ + + + + + + + +LydiaSyft: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
LydiaSyft +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
Syft::SmtOneStepRealizabilityVisitor Member List
+
+
+ +

This is the complete list of members for Syft::SmtOneStepRealizabilityVisitor, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + +
apply(const whitemech::lydia::LTLfFormula &f) (defined in Syft::SmtOneStepRealizabilityVisitor)Syft::SmtOneStepRealizabilityVisitor
partition (defined in Syft::SmtOneStepRealizabilityVisitor)Syft::SmtOneStepRealizabilityVisitor
result (defined in Syft::SmtOneStepRealizabilityVisitor)Syft::SmtOneStepRealizabilityVisitor
SmtOneStepRealizabilityVisitor(const InputOutputPartition &partition, const Syft::VarMgr &var_mgr, z3::context &z3_context, z3::solver &solver) (defined in Syft::SmtOneStepRealizabilityVisitor)Syft::SmtOneStepRealizabilityVisitorinlineexplicit
solver (defined in Syft::SmtOneStepRealizabilityVisitor)Syft::SmtOneStepRealizabilityVisitor
uncontrollableVars (defined in Syft::SmtOneStepRealizabilityVisitor)Syft::SmtOneStepRealizabilityVisitor
var_mgr (defined in Syft::SmtOneStepRealizabilityVisitor)Syft::SmtOneStepRealizabilityVisitor
visit(const whitemech::lydia::LTLfTrue &) override (defined in Syft::SmtOneStepRealizabilityVisitor)Syft::SmtOneStepRealizabilityVisitor
visit(const whitemech::lydia::LTLfFalse &) override (defined in Syft::SmtOneStepRealizabilityVisitor)Syft::SmtOneStepRealizabilityVisitor
visit(const whitemech::lydia::LTLfAtom &) override (defined in Syft::SmtOneStepRealizabilityVisitor)Syft::SmtOneStepRealizabilityVisitor
visit(const whitemech::lydia::LTLfNot &) override (defined in Syft::SmtOneStepRealizabilityVisitor)Syft::SmtOneStepRealizabilityVisitor
visit(const whitemech::lydia::LTLfAnd &) override (defined in Syft::SmtOneStepRealizabilityVisitor)Syft::SmtOneStepRealizabilityVisitor
visit(const whitemech::lydia::LTLfOr &) override (defined in Syft::SmtOneStepRealizabilityVisitor)Syft::SmtOneStepRealizabilityVisitor
visit(const whitemech::lydia::LTLfNext &) override (defined in Syft::SmtOneStepRealizabilityVisitor)Syft::SmtOneStepRealizabilityVisitor
visit(const whitemech::lydia::LTLfWeakNext &) override (defined in Syft::SmtOneStepRealizabilityVisitor)Syft::SmtOneStepRealizabilityVisitor
visit(const whitemech::lydia::LTLfUntil &) override (defined in Syft::SmtOneStepRealizabilityVisitor)Syft::SmtOneStepRealizabilityVisitor
visit(const whitemech::lydia::LTLfRelease &) override (defined in Syft::SmtOneStepRealizabilityVisitor)Syft::SmtOneStepRealizabilityVisitor
visit(const whitemech::lydia::LTLfEventually &) override (defined in Syft::SmtOneStepRealizabilityVisitor)Syft::SmtOneStepRealizabilityVisitor
visit(const whitemech::lydia::LTLfAlways &) override (defined in Syft::SmtOneStepRealizabilityVisitor)Syft::SmtOneStepRealizabilityVisitor
z3_context (defined in Syft::SmtOneStepRealizabilityVisitor)Syft::SmtOneStepRealizabilityVisitor
~SmtOneStepRealizabilityVisitor() (defined in Syft::SmtOneStepRealizabilityVisitor)Syft::SmtOneStepRealizabilityVisitorinline
+
+ + + + diff --git a/classSyft_1_1SmtOneStepRealizabilityVisitor.html b/classSyft_1_1SmtOneStepRealizabilityVisitor.html new file mode 100644 index 0000000..76bd13b --- /dev/null +++ b/classSyft_1_1SmtOneStepRealizabilityVisitor.html @@ -0,0 +1,193 @@ + + + + + + + +LydiaSyft: Syft::SmtOneStepRealizabilityVisitor Class Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
LydiaSyft +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
Syft::SmtOneStepRealizabilityVisitor Class Reference
+
+
+
+Inheritance diagram for Syft::SmtOneStepRealizabilityVisitor:
+
+
Inheritance graph
+ + + + +
[legend]
+
+Collaboration diagram for Syft::SmtOneStepRealizabilityVisitor:
+
+
Collaboration graph
+ + + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

SmtOneStepRealizabilityVisitor (const InputOutputPartition &partition, const Syft::VarMgr &var_mgr, z3::context &z3_context, z3::solver &solver)
 
+void visit (const whitemech::lydia::LTLfTrue &) override
 
+void visit (const whitemech::lydia::LTLfFalse &) override
 
+void visit (const whitemech::lydia::LTLfAtom &) override
 
+void visit (const whitemech::lydia::LTLfNot &) override
 
+void visit (const whitemech::lydia::LTLfAnd &) override
 
+void visit (const whitemech::lydia::LTLfOr &) override
 
+void visit (const whitemech::lydia::LTLfNext &) override
 
+void visit (const whitemech::lydia::LTLfWeakNext &) override
 
+void visit (const whitemech::lydia::LTLfUntil &) override
 
+void visit (const whitemech::lydia::LTLfRelease &) override
 
+void visit (const whitemech::lydia::LTLfEventually &) override
 
+void visit (const whitemech::lydia::LTLfAlways &) override
 
+z3::expr apply (const whitemech::lydia::LTLfFormula &f)
 
+ + + + + + + + + + + + + +

+Public Attributes

+InputOutputPartition partition
 
+const VarMgrvar_mgr
 
+z3::context & z3_context
 
+z3::solver & solver
 
+z3::expr result
 
+std::set< std::string > uncontrollableVars
 
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/classSyft_1_1SmtOneStepRealizabilityVisitor.js b/classSyft_1_1SmtOneStepRealizabilityVisitor.js new file mode 100644 index 0000000..1cd0858 --- /dev/null +++ b/classSyft_1_1SmtOneStepRealizabilityVisitor.js @@ -0,0 +1,24 @@ +var classSyft_1_1SmtOneStepRealizabilityVisitor = +[ + [ "SmtOneStepRealizabilityVisitor", "classSyft_1_1SmtOneStepRealizabilityVisitor.html#accd923e3213b819a034d5e4d75b99df4", null ], + [ "~SmtOneStepRealizabilityVisitor", "classSyft_1_1SmtOneStepRealizabilityVisitor.html#a88ee8ba99bbffa8fa320e3306a65b4c4", null ], + [ "apply", "classSyft_1_1SmtOneStepRealizabilityVisitor.html#aadfa73d6683eb1b60faaa94495dcf532", null ], + [ "visit", "classSyft_1_1SmtOneStepRealizabilityVisitor.html#a12ae55eec0e77ffb68325cb6794c7bd9", null ], + [ "visit", "classSyft_1_1SmtOneStepRealizabilityVisitor.html#ac1016bbc2a0c5a2000575ad25e6c126b", null ], + [ "visit", "classSyft_1_1SmtOneStepRealizabilityVisitor.html#ac6c51ef61d0edc6322914408da59a56e", null ], + [ "visit", "classSyft_1_1SmtOneStepRealizabilityVisitor.html#a5c78e3c1288c639c8eb9ee55174a47f3", null ], + [ "visit", "classSyft_1_1SmtOneStepRealizabilityVisitor.html#a89a46539e9235453e0e3407453b998bd", null ], + [ "visit", "classSyft_1_1SmtOneStepRealizabilityVisitor.html#a4c292fd63d36082363c796968a6cbc75", null ], + [ "visit", "classSyft_1_1SmtOneStepRealizabilityVisitor.html#ac7be0822d11b2cf43e3c665c11bf89cc", null ], + [ "visit", "classSyft_1_1SmtOneStepRealizabilityVisitor.html#a4576f77e5f97a6255714dc24921df017", null ], + [ "visit", "classSyft_1_1SmtOneStepRealizabilityVisitor.html#aab18dcbafbb427272cf74f33122956f1", null ], + [ "visit", "classSyft_1_1SmtOneStepRealizabilityVisitor.html#a40ee93ec2914dd58b0758deaf752872f", null ], + [ "visit", "classSyft_1_1SmtOneStepRealizabilityVisitor.html#a1a926590d2b2988a04fefdbeecbbf493", null ], + [ "visit", "classSyft_1_1SmtOneStepRealizabilityVisitor.html#a698ad1c109c127ddb5da1a11c3d36659", null ], + [ "partition", "classSyft_1_1SmtOneStepRealizabilityVisitor.html#a8807cb8dfad2681eb71d6f118bd442eb", null ], + [ "result", "classSyft_1_1SmtOneStepRealizabilityVisitor.html#af29c938b127112c32fdbc3967638efb7", null ], + [ "solver", "classSyft_1_1SmtOneStepRealizabilityVisitor.html#a2c875aef856c055824b3818b97e7bb57", null ], + [ "uncontrollableVars", "classSyft_1_1SmtOneStepRealizabilityVisitor.html#acf30c9a60a5765630802a7ebfd4f8e0e", null ], + [ "var_mgr", "classSyft_1_1SmtOneStepRealizabilityVisitor.html#a0bae2a80cc8b936ab578f537e2f9163a", null ], + [ "z3_context", "classSyft_1_1SmtOneStepRealizabilityVisitor.html#af5c83c018f2d16576a3e57378d88a7d9", null ] +]; \ No newline at end of file diff --git a/classSyft_1_1SmtOneStepRealizabilityVisitor__coll__graph.map b/classSyft_1_1SmtOneStepRealizabilityVisitor__coll__graph.map new file mode 100644 index 0000000..1d3b2cb --- /dev/null +++ b/classSyft_1_1SmtOneStepRealizabilityVisitor__coll__graph.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/classSyft_1_1SmtOneStepRealizabilityVisitor__coll__graph.md5 b/classSyft_1_1SmtOneStepRealizabilityVisitor__coll__graph.md5 new file mode 100644 index 0000000..4984b87 --- /dev/null +++ b/classSyft_1_1SmtOneStepRealizabilityVisitor__coll__graph.md5 @@ -0,0 +1 @@ +8da3e08e76c8a485ef5e3ab3c36b857f \ No newline at end of file diff --git a/classSyft_1_1SmtOneStepRealizabilityVisitor__coll__graph.png b/classSyft_1_1SmtOneStepRealizabilityVisitor__coll__graph.png new file mode 100644 index 0000000..608d1c0 Binary files /dev/null and b/classSyft_1_1SmtOneStepRealizabilityVisitor__coll__graph.png differ diff --git a/classSyft_1_1SmtOneStepRealizabilityVisitor__inherit__graph.map b/classSyft_1_1SmtOneStepRealizabilityVisitor__inherit__graph.map new file mode 100644 index 0000000..442f3d0 --- /dev/null +++ b/classSyft_1_1SmtOneStepRealizabilityVisitor__inherit__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/classSyft_1_1SmtOneStepRealizabilityVisitor__inherit__graph.md5 b/classSyft_1_1SmtOneStepRealizabilityVisitor__inherit__graph.md5 new file mode 100644 index 0000000..8d88d9f --- /dev/null +++ b/classSyft_1_1SmtOneStepRealizabilityVisitor__inherit__graph.md5 @@ -0,0 +1 @@ +36912cd3afaeb2b9a6621b39abcc7ec2 \ No newline at end of file diff --git a/classSyft_1_1SmtOneStepRealizabilityVisitor__inherit__graph.png b/classSyft_1_1SmtOneStepRealizabilityVisitor__inherit__graph.png new file mode 100644 index 0000000..593ae12 Binary files /dev/null and b/classSyft_1_1SmtOneStepRealizabilityVisitor__inherit__graph.png differ diff --git a/classSyft_1_1SmtOneStepUnrealizabilityVisitor-members.html b/classSyft_1_1SmtOneStepUnrealizabilityVisitor-members.html new file mode 100644 index 0000000..de14a73 --- /dev/null +++ b/classSyft_1_1SmtOneStepUnrealizabilityVisitor-members.html @@ -0,0 +1,121 @@ + + + + + + + +LydiaSyft: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
LydiaSyft +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
Syft::SmtOneStepUnrealizabilityVisitor Member List
+
+
+ +

This is the complete list of members for Syft::SmtOneStepUnrealizabilityVisitor, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + +
apply(const whitemech::lydia::LTLfFormula &f) (defined in Syft::SmtOneStepUnrealizabilityVisitor)Syft::SmtOneStepUnrealizabilityVisitor
partition (defined in Syft::SmtOneStepUnrealizabilityVisitor)Syft::SmtOneStepUnrealizabilityVisitor
result (defined in Syft::SmtOneStepUnrealizabilityVisitor)Syft::SmtOneStepUnrealizabilityVisitor
SmtOneStepUnrealizabilityVisitor(const InputOutputPartition &partition, const Syft::VarMgr &var_mgr, z3::context &z3_context, z3::solver &solver, Syft::Player starting_player) (defined in Syft::SmtOneStepUnrealizabilityVisitor)Syft::SmtOneStepUnrealizabilityVisitorinlineexplicit
solver (defined in Syft::SmtOneStepUnrealizabilityVisitor)Syft::SmtOneStepUnrealizabilityVisitor
starting_player (defined in Syft::SmtOneStepUnrealizabilityVisitor)Syft::SmtOneStepUnrealizabilityVisitor
var_mgr (defined in Syft::SmtOneStepUnrealizabilityVisitor)Syft::SmtOneStepUnrealizabilityVisitor
visit(const whitemech::lydia::LTLfTrue &) override (defined in Syft::SmtOneStepUnrealizabilityVisitor)Syft::SmtOneStepUnrealizabilityVisitor
visit(const whitemech::lydia::LTLfFalse &) override (defined in Syft::SmtOneStepUnrealizabilityVisitor)Syft::SmtOneStepUnrealizabilityVisitor
visit(const whitemech::lydia::LTLfAtom &) override (defined in Syft::SmtOneStepUnrealizabilityVisitor)Syft::SmtOneStepUnrealizabilityVisitor
visit(const whitemech::lydia::LTLfNot &) override (defined in Syft::SmtOneStepUnrealizabilityVisitor)Syft::SmtOneStepUnrealizabilityVisitor
visit(const whitemech::lydia::LTLfAnd &) override (defined in Syft::SmtOneStepUnrealizabilityVisitor)Syft::SmtOneStepUnrealizabilityVisitor
visit(const whitemech::lydia::LTLfOr &) override (defined in Syft::SmtOneStepUnrealizabilityVisitor)Syft::SmtOneStepUnrealizabilityVisitor
visit(const whitemech::lydia::LTLfNext &) override (defined in Syft::SmtOneStepUnrealizabilityVisitor)Syft::SmtOneStepUnrealizabilityVisitor
visit(const whitemech::lydia::LTLfWeakNext &) override (defined in Syft::SmtOneStepUnrealizabilityVisitor)Syft::SmtOneStepUnrealizabilityVisitor
visit(const whitemech::lydia::LTLfUntil &) override (defined in Syft::SmtOneStepUnrealizabilityVisitor)Syft::SmtOneStepUnrealizabilityVisitor
visit(const whitemech::lydia::LTLfRelease &) override (defined in Syft::SmtOneStepUnrealizabilityVisitor)Syft::SmtOneStepUnrealizabilityVisitor
visit(const whitemech::lydia::LTLfEventually &) override (defined in Syft::SmtOneStepUnrealizabilityVisitor)Syft::SmtOneStepUnrealizabilityVisitor
visit(const whitemech::lydia::LTLfAlways &) override (defined in Syft::SmtOneStepUnrealizabilityVisitor)Syft::SmtOneStepUnrealizabilityVisitor
z3_context (defined in Syft::SmtOneStepUnrealizabilityVisitor)Syft::SmtOneStepUnrealizabilityVisitor
~SmtOneStepUnrealizabilityVisitor() (defined in Syft::SmtOneStepUnrealizabilityVisitor)Syft::SmtOneStepUnrealizabilityVisitorinline
+
+ + + + diff --git a/classSyft_1_1SmtOneStepUnrealizabilityVisitor.html b/classSyft_1_1SmtOneStepUnrealizabilityVisitor.html new file mode 100644 index 0000000..07a9769 --- /dev/null +++ b/classSyft_1_1SmtOneStepUnrealizabilityVisitor.html @@ -0,0 +1,193 @@ + + + + + + + +LydiaSyft: Syft::SmtOneStepUnrealizabilityVisitor Class Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
LydiaSyft +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
Syft::SmtOneStepUnrealizabilityVisitor Class Reference
+
+
+
+Inheritance diagram for Syft::SmtOneStepUnrealizabilityVisitor:
+
+
Inheritance graph
+ + + + +
[legend]
+
+Collaboration diagram for Syft::SmtOneStepUnrealizabilityVisitor:
+
+
Collaboration graph
+ + + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

SmtOneStepUnrealizabilityVisitor (const InputOutputPartition &partition, const Syft::VarMgr &var_mgr, z3::context &z3_context, z3::solver &solver, Syft::Player starting_player)
 
+void visit (const whitemech::lydia::LTLfTrue &) override
 
+void visit (const whitemech::lydia::LTLfFalse &) override
 
+void visit (const whitemech::lydia::LTLfAtom &) override
 
+void visit (const whitemech::lydia::LTLfNot &) override
 
+void visit (const whitemech::lydia::LTLfAnd &) override
 
+void visit (const whitemech::lydia::LTLfOr &) override
 
+void visit (const whitemech::lydia::LTLfNext &) override
 
+void visit (const whitemech::lydia::LTLfWeakNext &) override
 
+void visit (const whitemech::lydia::LTLfUntil &) override
 
+void visit (const whitemech::lydia::LTLfRelease &) override
 
+void visit (const whitemech::lydia::LTLfEventually &) override
 
+void visit (const whitemech::lydia::LTLfAlways &) override
 
+z3::expr apply (const whitemech::lydia::LTLfFormula &f)
 
+ + + + + + + + + + + + + +

+Public Attributes

+InputOutputPartition partition
 
+const VarMgrvar_mgr
 
+z3::context & z3_context
 
+z3::solver & solver
 
+z3::expr result
 
+Syft::Player starting_player
 
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/classSyft_1_1SmtOneStepUnrealizabilityVisitor.js b/classSyft_1_1SmtOneStepUnrealizabilityVisitor.js new file mode 100644 index 0000000..ccd2642 --- /dev/null +++ b/classSyft_1_1SmtOneStepUnrealizabilityVisitor.js @@ -0,0 +1,24 @@ +var classSyft_1_1SmtOneStepUnrealizabilityVisitor = +[ + [ "SmtOneStepUnrealizabilityVisitor", "classSyft_1_1SmtOneStepUnrealizabilityVisitor.html#a3e621d5422bde6cc014151891fef19e8", null ], + [ "~SmtOneStepUnrealizabilityVisitor", "classSyft_1_1SmtOneStepUnrealizabilityVisitor.html#a52314b4d04b623d446fdcf2a26063d83", null ], + [ "apply", "classSyft_1_1SmtOneStepUnrealizabilityVisitor.html#a1f4a428294ebcd5770ef7d5089693a31", null ], + [ "visit", "classSyft_1_1SmtOneStepUnrealizabilityVisitor.html#a2b101119c03e76b01cdc1812d3340db2", null ], + [ "visit", "classSyft_1_1SmtOneStepUnrealizabilityVisitor.html#a06b7a3b49296ada4a270e559c6b3daf1", null ], + [ "visit", "classSyft_1_1SmtOneStepUnrealizabilityVisitor.html#ad318bc7b7661bb7ba9ebffa094874d02", null ], + [ "visit", "classSyft_1_1SmtOneStepUnrealizabilityVisitor.html#ae6e0649409cd9d62b8179236e93b3716", null ], + [ "visit", "classSyft_1_1SmtOneStepUnrealizabilityVisitor.html#a6e6e97cec83e794deaeecd5553559e3c", null ], + [ "visit", "classSyft_1_1SmtOneStepUnrealizabilityVisitor.html#a1ec26b2b23889f5185f66a1708279daa", null ], + [ "visit", "classSyft_1_1SmtOneStepUnrealizabilityVisitor.html#a3505985def804b37e8b67f4ba1ce31cf", null ], + [ "visit", "classSyft_1_1SmtOneStepUnrealizabilityVisitor.html#a6337196eee8e22f069d81a82a9589bb4", null ], + [ "visit", "classSyft_1_1SmtOneStepUnrealizabilityVisitor.html#a14a4d220f55929ba16143b7448ce5e17", null ], + [ "visit", "classSyft_1_1SmtOneStepUnrealizabilityVisitor.html#aa9356b26f51352f3f17da90d0c72a2ad", null ], + [ "visit", "classSyft_1_1SmtOneStepUnrealizabilityVisitor.html#a6861790606d4beb69ee63534db329c3c", null ], + [ "visit", "classSyft_1_1SmtOneStepUnrealizabilityVisitor.html#a746974d806fdd4afd72b328b8294debb", null ], + [ "partition", "classSyft_1_1SmtOneStepUnrealizabilityVisitor.html#a162b8d7f803a1927c00dc99826bdfc3e", null ], + [ "result", "classSyft_1_1SmtOneStepUnrealizabilityVisitor.html#a7fe22c6d3df993e7c7634e00faa46975", null ], + [ "solver", "classSyft_1_1SmtOneStepUnrealizabilityVisitor.html#a5ea93425553ab5cf548688ed1cd2dd20", null ], + [ "starting_player", "classSyft_1_1SmtOneStepUnrealizabilityVisitor.html#a5e9536c345deefb6a0e0dbc04b12a04d", null ], + [ "var_mgr", "classSyft_1_1SmtOneStepUnrealizabilityVisitor.html#a8e68cf8685a9178ba0395fb16e1dd879", null ], + [ "z3_context", "classSyft_1_1SmtOneStepUnrealizabilityVisitor.html#a2e4f268578edc8286c18599860cfd41e", null ] +]; \ No newline at end of file diff --git a/classSyft_1_1SmtOneStepUnrealizabilityVisitor__coll__graph.map b/classSyft_1_1SmtOneStepUnrealizabilityVisitor__coll__graph.map new file mode 100644 index 0000000..cb568ed --- /dev/null +++ b/classSyft_1_1SmtOneStepUnrealizabilityVisitor__coll__graph.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/classSyft_1_1SmtOneStepUnrealizabilityVisitor__coll__graph.md5 b/classSyft_1_1SmtOneStepUnrealizabilityVisitor__coll__graph.md5 new file mode 100644 index 0000000..f14c356 --- /dev/null +++ b/classSyft_1_1SmtOneStepUnrealizabilityVisitor__coll__graph.md5 @@ -0,0 +1 @@ +7c43ede197e4e54009251c5fdc97c015 \ No newline at end of file diff --git a/classSyft_1_1SmtOneStepUnrealizabilityVisitor__coll__graph.png b/classSyft_1_1SmtOneStepUnrealizabilityVisitor__coll__graph.png new file mode 100644 index 0000000..afb63b8 Binary files /dev/null and b/classSyft_1_1SmtOneStepUnrealizabilityVisitor__coll__graph.png differ diff --git a/classSyft_1_1SmtOneStepUnrealizabilityVisitor__inherit__graph.map b/classSyft_1_1SmtOneStepUnrealizabilityVisitor__inherit__graph.map new file mode 100644 index 0000000..6259fad --- /dev/null +++ b/classSyft_1_1SmtOneStepUnrealizabilityVisitor__inherit__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/classSyft_1_1SmtOneStepUnrealizabilityVisitor__inherit__graph.md5 b/classSyft_1_1SmtOneStepUnrealizabilityVisitor__inherit__graph.md5 new file mode 100644 index 0000000..88b30cb --- /dev/null +++ b/classSyft_1_1SmtOneStepUnrealizabilityVisitor__inherit__graph.md5 @@ -0,0 +1 @@ +34e8b7e60b2409aa5252b6a7cb8345aa \ No newline at end of file diff --git a/classSyft_1_1SmtOneStepUnrealizabilityVisitor__inherit__graph.png b/classSyft_1_1SmtOneStepUnrealizabilityVisitor__inherit__graph.png new file mode 100644 index 0000000..5849c09 Binary files /dev/null and b/classSyft_1_1SmtOneStepUnrealizabilityVisitor__inherit__graph.png differ diff --git a/classSyft_1_1StabilityLtlfSynthesizer-members.html b/classSyft_1_1StabilityLtlfSynthesizer-members.html new file mode 100644 index 0000000..c0ec26b --- /dev/null +++ b/classSyft_1_1StabilityLtlfSynthesizer-members.html @@ -0,0 +1,103 @@ + + + + + + + +LydiaSyft: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
LydiaSyft +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
Syft::StabilityLtlfSynthesizer Member List
+
+
+ +

This is the complete list of members for Syft::StabilityLtlfSynthesizer, including all inherited members.

+ + + + +
load_CNF(const std::string &filename) const (defined in Syft::StabilityLtlfSynthesizer)Syft::StabilityLtlfSynthesizerprotected
run() constSyft::StabilityLtlfSynthesizer
StabilityLtlfSynthesizer(SymbolicStateDfa spec, Player starting_player, Player protagonist_player, CUDD::BDD goal_states, CUDD::BDD state_space, std::string &assumption_filename)Syft::StabilityLtlfSynthesizer
+
+ + + + diff --git a/classSyft_1_1StabilityLtlfSynthesizer.html b/classSyft_1_1StabilityLtlfSynthesizer.html new file mode 100644 index 0000000..16f23ba --- /dev/null +++ b/classSyft_1_1StabilityLtlfSynthesizer.html @@ -0,0 +1,217 @@ + + + + + + + +LydiaSyft: Syft::StabilityLtlfSynthesizer Class Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
LydiaSyft +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
Syft::StabilityLtlfSynthesizer Class Reference
+
+
+ +

A single-strategy-synthesizer for an LTLf formula given as a symbolic-state DFA, considering environment simple Stability assumption. The simple Stability assumption is in the form of FG\alpha, where \alpha is a Boolean formula over environment variables. + More...

+ +

#include <StabilityLtlfSynthesizer.h>

+ + + + + + + + +

+Public Member Functions

 StabilityLtlfSynthesizer (SymbolicStateDfa spec, Player starting_player, Player protagonist_player, CUDD::BDD goal_states, CUDD::BDD state_space, std::string &assumption_filename)
 Construct an StabilityLtlfSynthesizer. More...
 
SynthesisResult run () const
 Solves the synthesis problem of LTLf with simple Stability environment assumption. More...
 
+ + + +

+Protected Member Functions

+CUDD::BDD load_CNF (const std::string &filename) const
 
+

Detailed Description

+

A single-strategy-synthesizer for an LTLf formula given as a symbolic-state DFA, considering environment simple Stability assumption. The simple Stability assumption is in the form of FG\alpha, where \alpha is a Boolean formula over environment variables.

+
Shufang Zhu, Giuseppe De Giacomo, Geguang Pu, Moshe Y. Vardi: LTLÆ’ Synthesis with Fairness and Stability Assumptions. AAAI 2020: 3088-3095
+

Constructor & Destructor Documentation

+ +

◆ StabilityLtlfSynthesizer()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Syft::StabilityLtlfSynthesizer::StabilityLtlfSynthesizer (SymbolicStateDfa spec,
Player starting_player,
Player protagonist_player,
CUDD::BDD goal_states,
CUDD::BDD state_space,
std::string & assumption_filename 
)
+
+ +

Construct an StabilityLtlfSynthesizer.

+
Parameters
+ + + + + + + +
specA symbolic-state DFA representing the LTLf formula.
starting_playerThe player that moves first each turn.
protagonist_playerThe player for which we aim to find the winning strategy.
goal_statesThe set of states that the agent must reach to win.
state_spaceThe state space.
assumption_filenameThe file that specifies a Boolean formula \alpha over input variables, denoting the simple Stability assumption FG\alpha.
+
+
+ +
+
+

Member Function Documentation

+ +

◆ run()

+ +
+
+ + + + + + + +
SynthesisResult Syft::StabilityLtlfSynthesizer::run () const
+
+ +

Solves the synthesis problem of LTLf with simple Stability environment assumption.

+
Returns
The synthesis result.
+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/classSyft_1_1StabilityLtlfSynthesizer.js b/classSyft_1_1StabilityLtlfSynthesizer.js new file mode 100644 index 0000000..c023873 --- /dev/null +++ b/classSyft_1_1StabilityLtlfSynthesizer.js @@ -0,0 +1,6 @@ +var classSyft_1_1StabilityLtlfSynthesizer = +[ + [ "StabilityLtlfSynthesizer", "classSyft_1_1StabilityLtlfSynthesizer.html#a51b8ea1014e85b852b7c5e6f4c4a2927", null ], + [ "load_CNF", "classSyft_1_1StabilityLtlfSynthesizer.html#adc0f90f192889d075574ae28827905a7", null ], + [ "run", "classSyft_1_1StabilityLtlfSynthesizer.html#a165546eb5d978ebbbce90837ca393e33", null ] +]; \ No newline at end of file diff --git a/classSyft_1_1StabilityRunner-members.html b/classSyft_1_1StabilityRunner-members.html new file mode 100644 index 0000000..25bb365 --- /dev/null +++ b/classSyft_1_1StabilityRunner-members.html @@ -0,0 +1,113 @@ + + + + + + + +LydiaSyft: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
LydiaSyft +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
Syft::StabilityRunner Member List
+
+
+ +

This is the complete list of members for Syft::StabilityRunner, including all inherited members.

+ + + + + + + + + + + + + + +
args_ (defined in Syft::BaseRunner)Syft::BaseRunnerprotected
BaseRunner(const std::shared_ptr< whitemech::lydia::parsers::ltlf::LTLfDriver > &driver, const std::string &formula_file, const std::string &path_to_syfco, bool print_strategy, bool print_times) (defined in Syft::BaseRunner)Syft::BaseRunnerinline
do_dfa_construction_() const (defined in Syft::BaseRunner)Syft::BaseRunnerprotected
driver_ (defined in Syft::BaseRunner)Syft::BaseRunnerprotected
formula_file_ (defined in Syft::BaseRunner)Syft::BaseRunnerprotected
handle_preprocessing_result_(const OneStepSynthesisResult &one_step_result, Stopwatch &total_time_stopwatch) const (defined in Syft::BaseRunner)Syft::BaseRunnerprotected
handle_synthesis_result_(const DfaGameSynthesizer &synthesizer, const SynthesisResult &result) const (defined in Syft::BaseRunner)Syft::BaseRunnerprotected
handle_synthesis_result_(const SynthesisResult &result) const (defined in Syft::BaseRunner)Syft::BaseRunnerprotected
path_to_syfco_ (defined in Syft::BaseRunner)Syft::BaseRunnerprotected
printer_ (defined in Syft::BaseRunner)Syft::BaseRunnerprotected
run() (defined in Syft::StabilityRunner)Syft::StabilityRunner
StabilityRunner(const std::shared_ptr< whitemech::lydia::parsers::ltlf::LTLfDriver > &driver, const std::string &formula_file, const std::string &path_to_syfco, const std::string &assumption_filename, bool print_strategy, bool print_times) (defined in Syft::StabilityRunner)Syft::StabilityRunnerinline
var_mgr_ (defined in Syft::BaseRunner)Syft::BaseRunnerprotected
+
+ + + + diff --git a/classSyft_1_1StabilityRunner.html b/classSyft_1_1StabilityRunner.html new file mode 100644 index 0000000..a340cab --- /dev/null +++ b/classSyft_1_1StabilityRunner.html @@ -0,0 +1,175 @@ + + + + + + + +LydiaSyft: Syft::StabilityRunner Class Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
LydiaSyft +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
Syft::StabilityRunner Class Reference
+
+
+
+Inheritance diagram for Syft::StabilityRunner:
+
+
Inheritance graph
+ + + + +
[legend]
+
+Collaboration diagram for Syft::StabilityRunner:
+
+
Collaboration graph
+ + + + + + + +
[legend]
+ + + + + + + + + +

+Public Member Functions

StabilityRunner (const std::shared_ptr< whitemech::lydia::parsers::ltlf::LTLfDriver > &driver, const std::string &formula_file, const std::string &path_to_syfco, const std::string &assumption_filename, bool print_strategy, bool print_times)
 
+void run ()
 
- Public Member Functions inherited from Syft::BaseRunner
BaseRunner (const std::shared_ptr< whitemech::lydia::parsers::ltlf::LTLfDriver > &driver, const std::string &formula_file, const std::string &path_to_syfco, bool print_strategy, bool print_times)
 
+ + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Protected Member Functions inherited from Syft::BaseRunner
+bool handle_preprocessing_result_ (const OneStepSynthesisResult &one_step_result, Stopwatch &total_time_stopwatch) const
 
+void handle_synthesis_result_ (const DfaGameSynthesizer &synthesizer, const SynthesisResult &result) const
 
+void handle_synthesis_result_ (const SynthesisResult &result) const
 
+SymbolicStateDfa do_dfa_construction_ () const
 
- Protected Attributes inherited from Syft::BaseRunner
+const std::string formula_file_
 
+const std::string path_to_syfco_
 
+const TLSFArgs args_
 
+const std::shared_ptr< Syft::VarMgrvar_mgr_
 
+const Printer printer_
 
+std::shared_ptr< whitemech::lydia::parsers::ltlf::LTLfDriver > driver_
 
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/classSyft_1_1StabilityRunner.js b/classSyft_1_1StabilityRunner.js new file mode 100644 index 0000000..6645924 --- /dev/null +++ b/classSyft_1_1StabilityRunner.js @@ -0,0 +1,5 @@ +var classSyft_1_1StabilityRunner = +[ + [ "StabilityRunner", "classSyft_1_1StabilityRunner.html#a6697d368a07ca5845536b6e125301aa1", null ], + [ "run", "classSyft_1_1StabilityRunner.html#a11604ebf193f9b4137b30242a4512633", null ] +]; \ No newline at end of file diff --git a/classSyft_1_1StabilityRunner__coll__graph.map b/classSyft_1_1StabilityRunner__coll__graph.map new file mode 100644 index 0000000..e26bc31 --- /dev/null +++ b/classSyft_1_1StabilityRunner__coll__graph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/classSyft_1_1StabilityRunner__coll__graph.md5 b/classSyft_1_1StabilityRunner__coll__graph.md5 new file mode 100644 index 0000000..64a6bbe --- /dev/null +++ b/classSyft_1_1StabilityRunner__coll__graph.md5 @@ -0,0 +1 @@ +069549a054d56004fbe7d9ff9709de82 \ No newline at end of file diff --git a/classSyft_1_1StabilityRunner__coll__graph.png b/classSyft_1_1StabilityRunner__coll__graph.png new file mode 100644 index 0000000..dd4fcf0 Binary files /dev/null and b/classSyft_1_1StabilityRunner__coll__graph.png differ diff --git a/classSyft_1_1StabilityRunner__inherit__graph.map b/classSyft_1_1StabilityRunner__inherit__graph.map new file mode 100644 index 0000000..d56496d --- /dev/null +++ b/classSyft_1_1StabilityRunner__inherit__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/classSyft_1_1StabilityRunner__inherit__graph.md5 b/classSyft_1_1StabilityRunner__inherit__graph.md5 new file mode 100644 index 0000000..f279d18 --- /dev/null +++ b/classSyft_1_1StabilityRunner__inherit__graph.md5 @@ -0,0 +1 @@ +c0157f358d300351d10a6495ca04aa1b \ No newline at end of file diff --git a/classSyft_1_1StabilityRunner__inherit__graph.png b/classSyft_1_1StabilityRunner__inherit__graph.png new file mode 100644 index 0000000..69a7496 Binary files /dev/null and b/classSyft_1_1StabilityRunner__inherit__graph.png differ diff --git a/classSyft_1_1StableReachabilitySynthesizer-members.html b/classSyft_1_1StableReachabilitySynthesizer-members.html new file mode 100644 index 0000000..fcd5860 --- /dev/null +++ b/classSyft_1_1StableReachabilitySynthesizer-members.html @@ -0,0 +1,118 @@ + + + + + + + +LydiaSyft: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
LydiaSyft +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
Syft::StableReachabilitySynthesizer Member List
+
+
+ +

This is the complete list of members for Syft::StableReachabilitySynthesizer, including all inherited members.

+ + + + + + + + + + + + + + + + + + + +
AbstractSingleStrategy(const SynthesisResult &result) constSyft::DfaGameSynthesizer
DfaGameSynthesizer(SymbolicStateDfa spec, Player starting_player, Player protagonist_player)Syft::DfaGameSynthesizer
includes_initial_state(const CUDD::BDD &winning_states) constSyft::DfaGameSynthesizerprotected
initial_vector_Syft::DfaGameSynthesizerprotected
load_CNF(const std::string &filename) const (defined in Syft::StableReachabilitySynthesizer)Syft::StableReachabilitySynthesizerprotected
preimage(const CUDD::BDD &winning_states) constSyft::DfaGameSynthesizerprotected
project_into_states(const CUDD::BDD &winning_moves) constSyft::DfaGameSynthesizerprotected
protagonist_player_Syft::DfaGameSynthesizerprotected
quantify_independent_variables_Syft::DfaGameSynthesizerprotected
quantify_non_state_variables_Syft::DfaGameSynthesizerprotected
run() const finalSyft::StableReachabilitySynthesizervirtual
spec_ (defined in Syft::Synthesizer< SymbolicStateDfa >)Syft::Synthesizer< SymbolicStateDfa >protected
StableReachabilitySynthesizer(SymbolicStateDfa spec, Player starting_player, Player protagonist_player, CUDD::BDD goal_states, CUDD::BDD state_space, std::string &assumption_filename)Syft::StableReachabilitySynthesizer
starting_player_Syft::DfaGameSynthesizerprotected
Synthesizer(SymbolicStateDfa spec) (defined in Syft::Synthesizer< SymbolicStateDfa >)Syft::Synthesizer< SymbolicStateDfa >inline
transition_vector_Syft::DfaGameSynthesizerprotected
var_mgr_Syft::DfaGameSynthesizerprotected
~Synthesizer() (defined in Syft::Synthesizer< SymbolicStateDfa >)Syft::Synthesizer< SymbolicStateDfa >inlinevirtual
+
+ + + + diff --git a/classSyft_1_1StableReachabilitySynthesizer.html b/classSyft_1_1StableReachabilitySynthesizer.html new file mode 100644 index 0000000..785b0d8 --- /dev/null +++ b/classSyft_1_1StableReachabilitySynthesizer.html @@ -0,0 +1,300 @@ + + + + + + + +LydiaSyft: Syft::StableReachabilitySynthesizer Class Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
LydiaSyft +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
Syft::StableReachabilitySynthesizer Class Reference
+
+
+ +

A single-strategy-synthesizer for a Buchi-reachability game given as a symbolic-state DFA. + More...

+ +

#include <StableReachabilitySynthesizer.h>

+
+Inheritance diagram for Syft::StableReachabilitySynthesizer:
+
+
Inheritance graph
+ + + + + +
[legend]
+
+Collaboration diagram for Syft::StableReachabilitySynthesizer:
+
+
Collaboration graph
+ + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + +

+Public Member Functions

 StableReachabilitySynthesizer (SymbolicStateDfa spec, Player starting_player, Player protagonist_player, CUDD::BDD goal_states, CUDD::BDD state_space, std::string &assumption_filename)
 Construct a single-strategy-synthesizer for the given Buchi-reachability game. More...
 
virtual SynthesisResult run () const final
 Solves the coBuchi-reachability game. More...
 
- Public Member Functions inherited from Syft::DfaGameSynthesizer
 DfaGameSynthesizer (SymbolicStateDfa spec, Player starting_player, Player protagonist_player)
 Construct a synthesizer for a given DFA game. More...
 
std::unique_ptr< TransducerAbstractSingleStrategy (const SynthesisResult &result) const
 Abstract a winning strategy for the game. More...
 
- Public Member Functions inherited from Syft::Synthesizer< SymbolicStateDfa >
Synthesizer (SymbolicStateDfa spec)
 
+ + + + + + + + + + + + + +

+Protected Member Functions

+CUDD::BDD load_CNF (const std::string &filename) const
 
- Protected Member Functions inherited from Syft::DfaGameSynthesizer
CUDD::BDD preimage (const CUDD::BDD &winning_states) const
 Compute a set of winning moves. More...
 
CUDD::BDD project_into_states (const CUDD::BDD &winning_moves) const
 Project a set of winning moves to a set of winning states. More...
 
bool includes_initial_state (const CUDD::BDD &winning_states) const
 Check whether the initial state is a winning state. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Protected Attributes inherited from Syft::DfaGameSynthesizer
+std::shared_ptr< VarMgrvar_mgr_
 Variable manager.
 
+Player starting_player_
 The player that moves first each turn.
 
+Player protagonist_player_
 The player for which we aim to find the winning strategy.
 
+std::vector< int > initial_vector_
 The initial state of the game arena.
 
+std::vector< CUDD::BDD > transition_vector_
 The transition function of the game arena.
 
+std::unique_ptr< Quantificationquantify_independent_variables_
 Quantification on the variables that the protagonist player does not depend on.
 
+std::unique_ptr< Quantificationquantify_non_state_variables_
 Quantification on non-state variables.
 
- Protected Attributes inherited from Syft::Synthesizer< SymbolicStateDfa >
+SymbolicStateDfa spec_
 
+

Detailed Description

+

A single-strategy-synthesizer for a Buchi-reachability game given as a symbolic-state DFA.

+

Constructor & Destructor Documentation

+ +

◆ StableReachabilitySynthesizer()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Syft::StableReachabilitySynthesizer::StableReachabilitySynthesizer (SymbolicStateDfa spec,
Player starting_player,
Player protagonist_player,
CUDD::BDD goal_states,
CUDD::BDD state_space,
std::string & assumption_filename 
)
+
+ +

Construct a single-strategy-synthesizer for the given Buchi-reachability game.

+
Parameters
+ + + + +
specA symbolic-state DFA representing the Buchi-reachability game.
starting_playerThe player that moves first each turn.
goal_statesThe set of states that the agent must reach to win.
+
+
+ +
+
+

Member Function Documentation

+ +

◆ run()

+ +
+
+ + + + + +
+ + + + + + + +
SynthesisResult Syft::StableReachabilitySynthesizer::run () const
+
+finalvirtual
+
+ +

Solves the coBuchi-reachability game.

+
Returns
The result consists of realizability a set of agent winning states a transducer representing a winning strategy or nullptr if the game is unrealizable.
+ +

Implements Syft::DfaGameSynthesizer.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/classSyft_1_1StableReachabilitySynthesizer.js b/classSyft_1_1StableReachabilitySynthesizer.js new file mode 100644 index 0000000..be86d7f --- /dev/null +++ b/classSyft_1_1StableReachabilitySynthesizer.js @@ -0,0 +1,6 @@ +var classSyft_1_1StableReachabilitySynthesizer = +[ + [ "StableReachabilitySynthesizer", "classSyft_1_1StableReachabilitySynthesizer.html#ae832a2c835fee7638fce942f5f70cfc2", null ], + [ "load_CNF", "classSyft_1_1StableReachabilitySynthesizer.html#adbad9ed30e7e9f1e488e88404bf670ee", null ], + [ "run", "classSyft_1_1StableReachabilitySynthesizer.html#a37feb2f1972e6612fb17e83e2b2e32f5", null ] +]; \ No newline at end of file diff --git a/classSyft_1_1StableReachabilitySynthesizer__coll__graph.map b/classSyft_1_1StableReachabilitySynthesizer__coll__graph.map new file mode 100644 index 0000000..8f15764 --- /dev/null +++ b/classSyft_1_1StableReachabilitySynthesizer__coll__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/classSyft_1_1StableReachabilitySynthesizer__coll__graph.md5 b/classSyft_1_1StableReachabilitySynthesizer__coll__graph.md5 new file mode 100644 index 0000000..53a7986 --- /dev/null +++ b/classSyft_1_1StableReachabilitySynthesizer__coll__graph.md5 @@ -0,0 +1 @@ +6eca19c6353ef547f3f18e062b1d33d5 \ No newline at end of file diff --git a/classSyft_1_1StableReachabilitySynthesizer__coll__graph.png b/classSyft_1_1StableReachabilitySynthesizer__coll__graph.png new file mode 100644 index 0000000..8c7a550 Binary files /dev/null and b/classSyft_1_1StableReachabilitySynthesizer__coll__graph.png differ diff --git a/classSyft_1_1StableReachabilitySynthesizer__inherit__graph.map b/classSyft_1_1StableReachabilitySynthesizer__inherit__graph.map new file mode 100644 index 0000000..8f15764 --- /dev/null +++ b/classSyft_1_1StableReachabilitySynthesizer__inherit__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/classSyft_1_1StableReachabilitySynthesizer__inherit__graph.md5 b/classSyft_1_1StableReachabilitySynthesizer__inherit__graph.md5 new file mode 100644 index 0000000..53a7986 --- /dev/null +++ b/classSyft_1_1StableReachabilitySynthesizer__inherit__graph.md5 @@ -0,0 +1 @@ +6eca19c6353ef547f3f18e062b1d33d5 \ No newline at end of file diff --git a/classSyft_1_1StableReachabilitySynthesizer__inherit__graph.png b/classSyft_1_1StableReachabilitySynthesizer__inherit__graph.png new file mode 100644 index 0000000..8c7a550 Binary files /dev/null and b/classSyft_1_1StableReachabilitySynthesizer__inherit__graph.png differ diff --git a/classSyft_1_1Stopwatch-members.html b/classSyft_1_1Stopwatch-members.html new file mode 100644 index 0000000..bae2256 --- /dev/null +++ b/classSyft_1_1Stopwatch-members.html @@ -0,0 +1,103 @@ + + + + + + + +LydiaSyft: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
LydiaSyft +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
Syft::Stopwatch Member List
+
+
+ +

This is the complete list of members for Syft::Stopwatch, including all inherited members.

+ + + + +
start()Syft::Stopwatch
stop()Syft::Stopwatch
Stopwatch()Syft::Stopwatch
+
+ + + + diff --git a/classSyft_1_1Stopwatch.html b/classSyft_1_1Stopwatch.html new file mode 100644 index 0000000..013adfa --- /dev/null +++ b/classSyft_1_1Stopwatch.html @@ -0,0 +1,149 @@ + + + + + + + +LydiaSyft: Syft::Stopwatch Class Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
LydiaSyft +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
Syft::Stopwatch Class Reference
+
+
+ +

Stopwatch for timing executions. + More...

+ +

#include <Stopwatch.h>

+ + + + + + + + + + + +

+Public Member Functions

Stopwatch ()
 Create a stopwatch without starting it.
 
+void start ()
 Start the stopwatch.
 
std::chrono::milliseconds stop ()
 Stop the stopwatch. More...
 
+

Detailed Description

+

Stopwatch for timing executions.

+

Member Function Documentation

+ +

◆ stop()

+ +
+
+ + + + + + + +
std::chrono::milliseconds Syft::Stopwatch::stop ()
+
+ +

Stop the stopwatch.

+

Throws an exception if stopwatch hasn't been started since the last time it was stopped.

+
Returns
The time elapsed in ms between starting and stopping the stopwatch.
+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/classSyft_1_1Stopwatch.js b/classSyft_1_1Stopwatch.js new file mode 100644 index 0000000..5e465f1 --- /dev/null +++ b/classSyft_1_1Stopwatch.js @@ -0,0 +1,6 @@ +var classSyft_1_1Stopwatch = +[ + [ "Stopwatch", "classSyft_1_1Stopwatch.html#a4d9295677bba0dcdfd0edf4cb1ab05eb", null ], + [ "start", "classSyft_1_1Stopwatch.html#ab42c3f661b49199ff3c613ecd152f736", null ], + [ "stop", "classSyft_1_1Stopwatch.html#a327bb2613e461e0ce1202178a0959d12", null ] +]; \ No newline at end of file diff --git a/classSyft_1_1SymbolicStateDfa-members.html b/classSyft_1_1SymbolicStateDfa-members.html new file mode 100644 index 0000000..54d0ad0 --- /dev/null +++ b/classSyft_1_1SymbolicStateDfa-members.html @@ -0,0 +1,116 @@ + + + + + + + +LydiaSyft: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
LydiaSyft +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
Syft::SymbolicStateDfa Member List
+
+
+ +

This is the complete list of members for Syft::SymbolicStateDfa, including all inherited members.

+ + + + + + + + + + + + + + + + + +
automaton_id() constSyft::SymbolicStateDfa
complement(const SymbolicStateDfa dfa)Syft::SymbolicStateDfastatic
dump_dot(const std::string &filename) constSyft::SymbolicStateDfa
final_states() constSyft::SymbolicStateDfa
from_explicit(const ExplicitStateDfaAdd &explicit_dfa)Syft::SymbolicStateDfastatic
from_predicates(std::shared_ptr< VarMgr > var_mgr, std::vector< CUDD::BDD > predicates)Syft::SymbolicStateDfastatic
initial_state() constSyft::SymbolicStateDfa
initial_state_bdd() constSyft::SymbolicStateDfa
new_sink_states(const CUDD::BDD &sink_states)Syft::SymbolicStateDfa
product_AND(const std::vector< SymbolicStateDfa > &dfa_vector)Syft::SymbolicStateDfastatic
product_OR(const std::vector< SymbolicStateDfa > &dfa_vector)Syft::SymbolicStateDfastatic
restrict_dfa_with_states(const CUDD::BDD &valid_states)Syft::SymbolicStateDfa
restrict_dfa_with_transitions(const CUDD::BDD &feasible_moves)Syft::SymbolicStateDfa
state_to_binary(std::size_t state, std::size_t bit_count)Syft::SymbolicStateDfastatic
transition_function() constSyft::SymbolicStateDfa
var_mgr() constSyft::SymbolicStateDfa
+
+ + + + diff --git a/classSyft_1_1SymbolicStateDfa.html b/classSyft_1_1SymbolicStateDfa.html new file mode 100644 index 0000000..8501420 --- /dev/null +++ b/classSyft_1_1SymbolicStateDfa.html @@ -0,0 +1,557 @@ + + + + + + + +LydiaSyft: Syft::SymbolicStateDfa Class Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
LydiaSyft +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
Syft::SymbolicStateDfa Class Reference
+
+
+ +

A DFA with symbolic states and transitions. + More...

+ +

#include <SymbolicStateDfa.h>

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+std::shared_ptr< VarMgrvar_mgr () const
 Returns the variable manager.
 
std::size_t automaton_id () const
 Returns the automaton ID. More...
 
+std::vector< int > initial_state () const
 Returns the bitvector representing the initial state of the DFA.
 
+CUDD::BDD initial_state_bdd () const
 Returns the BDD representing the initial state of the DFA.
 
+CUDD::BDD final_states () const
 Returns the BDD encoding the set of final states.
 
std::vector< CUDD::BDD > transition_function () const
 Returns the transition function of the DFA as a vector of BDDs. More...
 
void restrict_dfa_with_states (const CUDD::BDD &valid_states)
 Restrict a symbolic DFA with a given set of states. More...
 
void restrict_dfa_with_transitions (const CUDD::BDD &feasible_moves)
 Restrict a symbolic DFA with a set of feasible moves. More...
 
void dump_dot (const std::string &filename) const
 Saves the symbolic representation of the DFA in a .dot file. More...
 
void new_sink_states (const CUDD::BDD &sink_states)
 Shrink a set of states to a sink state. More...
 
+ + + + + + + + + + + + + + + + + + + +

+Static Public Member Functions

static SymbolicStateDfa from_explicit (const ExplicitStateDfaAdd &explicit_dfa)
 Converts an explicit DFA to a symbolic representation. More...
 
static SymbolicStateDfa from_predicates (std::shared_ptr< VarMgr > var_mgr, std::vector< CUDD::BDD > predicates)
 Creates a simple automaton that remembers the value of predicates. More...
 
static SymbolicStateDfa product_AND (const std::vector< SymbolicStateDfa > &dfa_vector)
 Returns a product AND of two symbolic DFAs. More...
 
static std::vector< int > state_to_binary (std::size_t state, std::size_t bit_count)
 Returns the binary encoding of a given state index. More...
 
static SymbolicStateDfa product_OR (const std::vector< SymbolicStateDfa > &dfa_vector)
 Returns a product AND of two symbolic DFAs. More...
 
static SymbolicStateDfa complement (const SymbolicStateDfa dfa)
 Returns the complement of a symbolic DFA. More...
 
+

Detailed Description

+

A DFA with symbolic states and transitions.

+

Shufang Zhu, Lucas M. Tabajara, Jianwen Li, Geguang Pu, Moshe Y. Vardi: Symbolic LTLf Synthesis. IJCAI 2017: 1362-1369

+

Member Function Documentation

+ +

◆ automaton_id()

+ +
+
+ + + + + + + +
std::size_t Syft::SymbolicStateDfa::automaton_id () const
+
+ +

Returns the automaton ID.

+

This ID can be used to retrieve the associated state variables from the variable manager.

+ +
+
+ +

◆ complement()

+ +
+
+ + + + + +
+ + + + + + + + +
SymbolicStateDfa Syft::SymbolicStateDfa::complement (const SymbolicStateDfa dfa)
+
+static
+
+ +

Returns the complement of a symbolic DFA.

+
Parameters
+ + +
dfaThe DFA to be complemented.
+
+
+
Returns
A symbolic DFA of the complement.
+ +
+
+ +

◆ dump_dot()

+ +
+
+ + + + + + + + +
void Syft::SymbolicStateDfa::dump_dot (const std::string & filename) const
+
+ +

Saves the symbolic representation of the DFA in a .dot file.

+

The file includes both the BDDs representing the transition function and the BDD representing the final states.

+
Parameters
+ + +
filenameThe name of the file to save the symbolic DFA to.
+
+
+ +
+
+ +

◆ from_explicit()

+ +
+
+ + + + + +
+ + + + + + + + +
SymbolicStateDfa Syft::SymbolicStateDfa::from_explicit (const ExplicitStateDfaAddexplicit_dfa)
+
+static
+
+ +

Converts an explicit DFA to a symbolic representation.

+

Encodes the state space of the DFA in a logarithmic number of state variables, using BDDs to represent the transition function and the set of final states.

+
Parameters
+ + +
explicit_dfaThe explicit DFA to be converted.
+
+
+
Returns
The symbolic representation of the DFA.
+ +
+
+ +

◆ from_predicates()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
SymbolicStateDfa Syft::SymbolicStateDfa::from_predicates (std::shared_ptr< VarMgrvar_mgr,
std::vector< CUDD::BDD > predicates 
)
+
+static
+
+ +

Creates a simple automaton that remembers the value of predicates.

+
Parameters
+ + + +
var_mgrThe variable manager to use to create the state variables.
predicatesA vector of BDDs over named variables representing the predicates to remember.
+
+
+
Returns
A symbolic DFA with one state variable for each predicate. The i-th state variable records whether predicates[i] was true in the last step. The initial state has all state variables set to 0. All states are accepting states.
+ +
+
+ +

◆ new_sink_states()

+ +
+
+ + + + + + + + +
void Syft::SymbolicStateDfa::new_sink_states (const CUDD::BDD & sink_states)
+
+ +

Shrink a set of states to a sink state.

+
Parameters
+ + +
sink_statesThe set of states to shrink.
+
+
+ +
+
+ +

◆ product_AND()

+ +
+
+ + + + + +
+ + + + + + + + +
SymbolicStateDfa Syft::SymbolicStateDfa::product_AND (const std::vector< SymbolicStateDfa > & dfa_vector)
+
+static
+
+ +

Returns a product AND of two symbolic DFAs.

+
Parameters
+ + + +
first_dfaThe first DFA.
second_dfaThe second DFA.
+
+
+
Returns
A symbolic DFA of the product AND.
+ +
+
+ +

◆ product_OR()

+ +
+
+ + + + + +
+ + + + + + + + +
SymbolicStateDfa Syft::SymbolicStateDfa::product_OR (const std::vector< SymbolicStateDfa > & dfa_vector)
+
+static
+
+ +

Returns a product AND of two symbolic DFAs.

+
Parameters
+ + + +
first_dfaThe first DFA.
second_dfaThe second DFA.
+
+
+
Returns
A symbolic DFA of the product OR.
+ +
+
+ +

◆ restrict_dfa_with_states()

+ +
+
+ + + + + + + + +
void Syft::SymbolicStateDfa::restrict_dfa_with_states (const CUDD::BDD & valid_states)
+
+ +

Restrict a symbolic DFA with a given set of states.

+

Basically restrict a DFA to a set of states from the DFA.

+
Parameters
+ + +
valid_statesThe set of states to be kept.
+
+
+
Returns
The restricted symbolic DFA.
+ +
+
+ +

◆ restrict_dfa_with_transitions()

+ +
+
+ + + + + + + + +
void Syft::SymbolicStateDfa::restrict_dfa_with_transitions (const CUDD::BDD & feasible_moves)
+
+ +

Restrict a symbolic DFA with a set of feasible moves.

+
Parameters
+ + +
feasible_movesThe set of feasible moves to be kept.
+
+
+
Returns
The restricted symbolic DFA.
+ +
+
+ +

◆ state_to_binary()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
std::vector< int > Syft::SymbolicStateDfa::state_to_binary (std::size_t state,
std::size_t bit_count 
)
+
+static
+
+ +

Returns the binary encoding of a given state index.

+
Parameters
+ + + +
stateThe state index.
bit_countThe number of bits in the binary encoding DFA.
+
+
+
Returns
The binary encoding.
+ +
+
+ +

◆ transition_function()

+ +
+
+ + + + + + + +
std::vector< CUDD::BDD > Syft::SymbolicStateDfa::transition_function () const
+
+ +

Returns the transition function of the DFA as a vector of BDDs.

+

The BDD in index i computes the value of state variable i in the next step, given the current values of the state and alphabet variables.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/classSyft_1_1SymbolicStateDfa.js b/classSyft_1_1SymbolicStateDfa.js new file mode 100644 index 0000000..91c8d1d --- /dev/null +++ b/classSyft_1_1SymbolicStateDfa.js @@ -0,0 +1,13 @@ +var classSyft_1_1SymbolicStateDfa = +[ + [ "automaton_id", "classSyft_1_1SymbolicStateDfa.html#a502d2737fedec0dd27268dc6d94be4c4", null ], + [ "dump_dot", "classSyft_1_1SymbolicStateDfa.html#ae2b6e13bfc5497239544cfe45fab5683", null ], + [ "final_states", "classSyft_1_1SymbolicStateDfa.html#a3805aee1a5f0cc11f6598460646e29e1", null ], + [ "initial_state", "classSyft_1_1SymbolicStateDfa.html#a7670c2e0ffdf1c0a907dac1f07a76272", null ], + [ "initial_state_bdd", "classSyft_1_1SymbolicStateDfa.html#aa46646950e6f09c82fcca5058a68e583", null ], + [ "new_sink_states", "classSyft_1_1SymbolicStateDfa.html#a8216a69451ffc470881aabb3494a45cb", null ], + [ "restrict_dfa_with_states", "classSyft_1_1SymbolicStateDfa.html#a6c01d1be879947637a2d55c9c321f728", null ], + [ "restrict_dfa_with_transitions", "classSyft_1_1SymbolicStateDfa.html#ab216bbd556a0a49699d07113044d09e7", null ], + [ "transition_function", "classSyft_1_1SymbolicStateDfa.html#a74df1a95cf5cc82e36c6f9da61da13b0", null ], + [ "var_mgr", "classSyft_1_1SymbolicStateDfa.html#ae7f9d8c71e2e180894b0eb5bdc34a3c3", null ] +]; \ No newline at end of file diff --git a/classSyft_1_1SynthesisRunner-members.html b/classSyft_1_1SynthesisRunner-members.html new file mode 100644 index 0000000..9a4bcc7 --- /dev/null +++ b/classSyft_1_1SynthesisRunner-members.html @@ -0,0 +1,113 @@ + + + + + + + +LydiaSyft: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
LydiaSyft +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
Syft::SynthesisRunner Member List
+
+
+ +

This is the complete list of members for Syft::SynthesisRunner, including all inherited members.

+ + + + + + + + + + + + + + +
args_ (defined in Syft::BaseRunner)Syft::BaseRunnerprotected
BaseRunner(const std::shared_ptr< whitemech::lydia::parsers::ltlf::LTLfDriver > &driver, const std::string &formula_file, const std::string &path_to_syfco, bool print_strategy, bool print_times) (defined in Syft::BaseRunner)Syft::BaseRunnerinline
do_dfa_construction_() const (defined in Syft::BaseRunner)Syft::BaseRunnerprotected
driver_ (defined in Syft::BaseRunner)Syft::BaseRunnerprotected
formula_file_ (defined in Syft::BaseRunner)Syft::BaseRunnerprotected
handle_preprocessing_result_(const OneStepSynthesisResult &one_step_result, Stopwatch &total_time_stopwatch) const (defined in Syft::BaseRunner)Syft::BaseRunnerprotected
handle_synthesis_result_(const DfaGameSynthesizer &synthesizer, const SynthesisResult &result) const (defined in Syft::BaseRunner)Syft::BaseRunnerprotected
handle_synthesis_result_(const SynthesisResult &result) const (defined in Syft::BaseRunner)Syft::BaseRunnerprotected
path_to_syfco_ (defined in Syft::BaseRunner)Syft::BaseRunnerprotected
printer_ (defined in Syft::BaseRunner)Syft::BaseRunnerprotected
run() (defined in Syft::SynthesisRunner)Syft::SynthesisRunner
SynthesisRunner(const std::shared_ptr< whitemech::lydia::parsers::ltlf::LTLfDriver > &driver, const std::string &formula_file, const std::string &path_to_syfco, bool print_strategy, bool print_times) (defined in Syft::SynthesisRunner)Syft::SynthesisRunnerinline
var_mgr_ (defined in Syft::BaseRunner)Syft::BaseRunnerprotected
+
+ + + + diff --git a/classSyft_1_1SynthesisRunner.html b/classSyft_1_1SynthesisRunner.html new file mode 100644 index 0000000..4e6bbe4 --- /dev/null +++ b/classSyft_1_1SynthesisRunner.html @@ -0,0 +1,175 @@ + + + + + + + +LydiaSyft: Syft::SynthesisRunner Class Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
LydiaSyft +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
Syft::SynthesisRunner Class Reference
+
+
+
+Inheritance diagram for Syft::SynthesisRunner:
+
+
Inheritance graph
+ + + + +
[legend]
+
+Collaboration diagram for Syft::SynthesisRunner:
+
+
Collaboration graph
+ + + + + + + +
[legend]
+ + + + + + + + + +

+Public Member Functions

SynthesisRunner (const std::shared_ptr< whitemech::lydia::parsers::ltlf::LTLfDriver > &driver, const std::string &formula_file, const std::string &path_to_syfco, bool print_strategy, bool print_times)
 
+void run ()
 
- Public Member Functions inherited from Syft::BaseRunner
BaseRunner (const std::shared_ptr< whitemech::lydia::parsers::ltlf::LTLfDriver > &driver, const std::string &formula_file, const std::string &path_to_syfco, bool print_strategy, bool print_times)
 
+ + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Protected Member Functions inherited from Syft::BaseRunner
+bool handle_preprocessing_result_ (const OneStepSynthesisResult &one_step_result, Stopwatch &total_time_stopwatch) const
 
+void handle_synthesis_result_ (const DfaGameSynthesizer &synthesizer, const SynthesisResult &result) const
 
+void handle_synthesis_result_ (const SynthesisResult &result) const
 
+SymbolicStateDfa do_dfa_construction_ () const
 
- Protected Attributes inherited from Syft::BaseRunner
+const std::string formula_file_
 
+const std::string path_to_syfco_
 
+const TLSFArgs args_
 
+const std::shared_ptr< Syft::VarMgrvar_mgr_
 
+const Printer printer_
 
+std::shared_ptr< whitemech::lydia::parsers::ltlf::LTLfDriver > driver_
 
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/classSyft_1_1SynthesisRunner.js b/classSyft_1_1SynthesisRunner.js new file mode 100644 index 0000000..b6c8aa7 --- /dev/null +++ b/classSyft_1_1SynthesisRunner.js @@ -0,0 +1,5 @@ +var classSyft_1_1SynthesisRunner = +[ + [ "SynthesisRunner", "classSyft_1_1SynthesisRunner.html#a133b49429abbc2fa913e9c040c24b991", null ], + [ "run", "classSyft_1_1SynthesisRunner.html#a6844877cbb6b834ea9d6419d95a4b6c8", null ] +]; \ No newline at end of file diff --git a/classSyft_1_1SynthesisRunner__coll__graph.map b/classSyft_1_1SynthesisRunner__coll__graph.map new file mode 100644 index 0000000..5cabbe8 --- /dev/null +++ b/classSyft_1_1SynthesisRunner__coll__graph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/classSyft_1_1SynthesisRunner__coll__graph.md5 b/classSyft_1_1SynthesisRunner__coll__graph.md5 new file mode 100644 index 0000000..5e70809 --- /dev/null +++ b/classSyft_1_1SynthesisRunner__coll__graph.md5 @@ -0,0 +1 @@ +6dcd45ef2727b7bb09b5b715e2d4beae \ No newline at end of file diff --git a/classSyft_1_1SynthesisRunner__coll__graph.png b/classSyft_1_1SynthesisRunner__coll__graph.png new file mode 100644 index 0000000..8fd5cfb Binary files /dev/null and b/classSyft_1_1SynthesisRunner__coll__graph.png differ diff --git a/classSyft_1_1SynthesisRunner__inherit__graph.map b/classSyft_1_1SynthesisRunner__inherit__graph.map new file mode 100644 index 0000000..ab7994b --- /dev/null +++ b/classSyft_1_1SynthesisRunner__inherit__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/classSyft_1_1SynthesisRunner__inherit__graph.md5 b/classSyft_1_1SynthesisRunner__inherit__graph.md5 new file mode 100644 index 0000000..235a2c3 --- /dev/null +++ b/classSyft_1_1SynthesisRunner__inherit__graph.md5 @@ -0,0 +1 @@ +da0aece93a746c76db5e5e4618c454bf \ No newline at end of file diff --git a/classSyft_1_1SynthesisRunner__inherit__graph.png b/classSyft_1_1SynthesisRunner__inherit__graph.png new file mode 100644 index 0000000..92ed4f2 Binary files /dev/null and b/classSyft_1_1SynthesisRunner__inherit__graph.png differ diff --git a/classSyft_1_1Synthesizer-members.html b/classSyft_1_1Synthesizer-members.html new file mode 100644 index 0000000..c531100 --- /dev/null +++ b/classSyft_1_1Synthesizer-members.html @@ -0,0 +1,104 @@ + + + + + + + +LydiaSyft: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
LydiaSyft +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
Syft::Synthesizer< Spec > Member List
+
+
+ +

This is the complete list of members for Syft::Synthesizer< Spec >, including all inherited members.

+ + + + + +
run() const =0Syft::Synthesizer< Spec >pure virtual
spec_Syft::Synthesizer< Spec >protected
Synthesizer(Spec spec) (defined in Syft::Synthesizer< Spec >)Syft::Synthesizer< Spec >inline
~Synthesizer() (defined in Syft::Synthesizer< Spec >)Syft::Synthesizer< Spec >inlinevirtual
+
+ + + + diff --git a/classSyft_1_1Synthesizer.html b/classSyft_1_1Synthesizer.html new file mode 100644 index 0000000..7fe3459 --- /dev/null +++ b/classSyft_1_1Synthesizer.html @@ -0,0 +1,166 @@ + + + + + + + +LydiaSyft: Syft::Synthesizer< Spec > Class Template Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
LydiaSyft +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
Syft::Synthesizer< Spec > Class Template Referenceabstract
+
+
+ +

Abstract class for synthesizers. + More...

+ +

#include <Synthesizer.h>

+ + + + + + + +

+Public Member Functions

Synthesizer (Spec spec)
 
virtual SynthesisResult run () const =0
 Solves the synthesis problem of the specification. More...
 
+ + + + +

+Protected Attributes

+Spec spec_
 The game arena.
 
+

Detailed Description

+

template<class Spec>
+class Syft::Synthesizer< Spec >

+ +

Abstract class for synthesizers.

+

Can be inherited to implement synthesizers for different specification types.

+

Member Function Documentation

+ +

◆ run()

+ +
+
+
+template<class Spec >
+ + + + + +
+ + + + + + + +
virtual SynthesisResult Syft::Synthesizer< Spec >::run () const
+
+pure virtual
+
+ +

Solves the synthesis problem of the specification.

+
Returns
The result consists of realizability a set of agent winning states a transducer representing a winning strategy for the specification or nullptr if the specification is unrealizable.
+ +

Implemented in Syft::DfaGameSynthesizer, Syft::ReachabilityMaxSet, Syft::Reachability, Syft::coBuchiReachability, and Syft::BuchiReachability.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/classSyft_1_1Synthesizer.js b/classSyft_1_1Synthesizer.js new file mode 100644 index 0000000..6a4c9f2 --- /dev/null +++ b/classSyft_1_1Synthesizer.js @@ -0,0 +1,7 @@ +var classSyft_1_1Synthesizer = +[ + [ "Synthesizer", "classSyft_1_1Synthesizer.html#ab870ec59532040eb327dd508b3e8a26d", null ], + [ "~Synthesizer", "classSyft_1_1Synthesizer.html#a310c9e5862a11afab477bd68864bb559", null ], + [ "run", "classSyft_1_1Synthesizer.html#a19589fbbdbc174df570e763f29f51606", null ], + [ "spec_", "classSyft_1_1Synthesizer.html#a530ac437b63754f83d6ee0d6f27bb075", null ] +]; \ No newline at end of file diff --git a/classSyft_1_1Transducer-members.html b/classSyft_1_1Transducer-members.html new file mode 100644 index 0000000..b32790b --- /dev/null +++ b/classSyft_1_1Transducer-members.html @@ -0,0 +1,102 @@ + + + + + + + +LydiaSyft: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
LydiaSyft +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
Syft::Transducer Member List
+
+
+ +

This is the complete list of members for Syft::Transducer, including all inherited members.

+ + + +
dump_dot(const std::string &filename) constSyft::Transducer
Transducer(const std::shared_ptr< VarMgr > &var_mgr, const std::vector< int > &initial_vector, const std::unordered_map< int, CUDD::BDD > &output_function, const std::vector< CUDD::BDD > &transition_function, Player starting_player, Player protagonist_player=Player::Agent) (defined in Syft::Transducer)Syft::Transducer
+
+ + + + diff --git a/classSyft_1_1Transducer.html b/classSyft_1_1Transducer.html new file mode 100644 index 0000000..7dc0e0c --- /dev/null +++ b/classSyft_1_1Transducer.html @@ -0,0 +1,124 @@ + + + + + + + +LydiaSyft: Syft::Transducer Class Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
LydiaSyft +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
Syft::Transducer Class Reference
+
+
+ +

A symbolic tranducer representing a winning strategy for a game. + More...

+ +

#include <Transducer.h>

+ + + + + + + +

+Public Member Functions

Transducer (const std::shared_ptr< VarMgr > &var_mgr, const std::vector< int > &initial_vector, const std::unordered_map< int, CUDD::BDD > &output_function, const std::vector< CUDD::BDD > &transition_function, Player starting_player, Player protagonist_player=Player::Agent)
 
+void dump_dot (const std::string &filename) const
 Saves the output function of the transducer in a .dot file.
 
+

Detailed Description

+

A symbolic tranducer representing a winning strategy for a game.

+

May be either a Moore or Mealy machine.

+

The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/classSyft_1_1Transducer.js b/classSyft_1_1Transducer.js new file mode 100644 index 0000000..6b8370e --- /dev/null +++ b/classSyft_1_1Transducer.js @@ -0,0 +1,5 @@ +var classSyft_1_1Transducer = +[ + [ "Transducer", "classSyft_1_1Transducer.html#ab55b1de193286150865b0c67b553e70e", null ], + [ "dump_dot", "classSyft_1_1Transducer.html#a0f2c3d5656d2a211e0b72b51897e881d", null ] +]; \ No newline at end of file diff --git a/classSyft_1_1VarMgr-members.html b/classSyft_1_1VarMgr-members.html new file mode 100644 index 0000000..b40fbcd --- /dev/null +++ b/classSyft_1_1VarMgr-members.html @@ -0,0 +1,130 @@ + + + + + + + +LydiaSyft: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
LydiaSyft +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
Syft::VarMgr Member List
+
+
+ +

This is the complete list of members for Syft::VarMgr, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
automaton_num() constSyft::VarMgr
bdd_to_string(const CUDD::BDD &bdd) constSyft::VarMgr
create_complement_state_space(const std::size_t automaton_id)Syft::VarMgr
create_named_variables(const std::vector< std::string > &variable_names)Syft::VarMgr
create_product_state_space(const std::vector< std::size_t > &automaton_ids)Syft::VarMgr
create_state_variables(std::size_t variable_count)Syft::VarMgr
cudd_mgr() constSyft::VarMgr
dump_dot(const CUDD::ADD &add, const std::string &filename) constSyft::VarMgr
dump_dot(const std::vector< CUDD::ADD > &adds, const std::vector< std::string > &function_labels, const std::string &filename) constSyft::VarMgr
index_to_name(int index) constSyft::VarMgr
input_cube() constSyft::VarMgr
input_variable_count() constSyft::VarMgr
input_variable_labels() constSyft::VarMgr
make_compose_vector(std::size_t automaton_id, const std::vector< CUDD::BDD > &state_bdds) constSyft::VarMgr
make_eval_vector(std::size_t automaton_id, const std::vector< int > &state_vector) constSyft::VarMgr
make_state_eval_vector(std::size_t automaton_id, const std::vector< int > &state_vector) constSyft::VarMgr
name_to_variable(const std::string &name) constSyft::VarMgr
output_cube() constSyft::VarMgr
output_variable_count() constSyft::VarMgr
output_variable_labels() constSyft::VarMgr
partition_variables(const std::vector< std::string > &input_names, const std::vector< std::string > &output_names)Syft::VarMgr
state_variable(std::size_t automaton_id, std::size_t i) constSyft::VarMgr
state_variable_count(std::size_t automaton_id) constSyft::VarMgr
state_variable_labels(std::size_t automaton_id) constSyft::VarMgr
state_variables_cube(std::size_t automaton_id) constSyft::VarMgr
state_vector_to_bdd(std::size_t automaton_id, const std::vector< int > &state_vector) constSyft::VarMgr
total_state_variable_count() constSyft::VarMgr
total_variable_count() constSyft::VarMgr
variable_labels() constSyft::VarMgr
VarMgr()Syft::VarMgr
+
+ + + + diff --git a/classSyft_1_1VarMgr.html b/classSyft_1_1VarMgr.html new file mode 100644 index 0000000..125e0b4 --- /dev/null +++ b/classSyft_1_1VarMgr.html @@ -0,0 +1,686 @@ + + + + + + + +LydiaSyft: Syft::VarMgr Class Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
LydiaSyft +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
Syft::VarMgr Class Reference
+
+
+ +

A dictionary that maps variable names to indices and vice versa. + More...

+ +

#include <VarMgr.h>

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

VarMgr ()
 Constructs a VarMgr with no variables.
 
void create_named_variables (const std::vector< std::string > &variable_names)
 Creates BDD variables and associates each with a name. More...
 
std::size_t create_state_variables (std::size_t variable_count)
 Creates and stores state variables. More...
 
std::size_t create_product_state_space (const std::vector< std::size_t > &automaton_ids)
 Registers a new automaton ID associated with a product state space. More...
 
+CUDD::BDD state_variable (std::size_t automaton_id, std::size_t i) const
 Returns the i-th state variable for a given automaton.
 
CUDD::BDD state_vector_to_bdd (std::size_t automaton_id, const std::vector< int > &state_vector) const
 Converts a state vector to a BDD. More...
 
void partition_variables (const std::vector< std::string > &input_names, const std::vector< std::string > &output_names)
 Partitions the named variables between inputs and outputs. More...
 
+std::shared_ptr< CUDD::Cudd > cudd_mgr () const
 Returns the CUDD manager used to create the variables.
 
+CUDD::BDD name_to_variable (const std::string &name) const
 Returns the index of the variable with the given name.
 
+std::string index_to_name (int index) const
 Returns the name of the variable at index index.
 
+std::size_t total_variable_count () const
 Returns the total number of variables, including named and state.
 
+std::size_t total_state_variable_count () const
 Returns the total number of state variables.
 
+std::size_t state_variable_count (std::size_t automaton_id) const
 Returns the number of state variables for a given automaton.
 
+std::size_t input_variable_count () const
 Returns the number of input variables.
 
+std::size_t output_variable_count () const
 Returns the number of output variables.
 
+CUDD::BDD input_cube () const
 Returns a BDD formed by the conjunction of all input variables.
 
+CUDD::BDD output_cube () const
 Returns a BDD formed by the conjunction of all output variables.
 
+CUDD::BDD state_variables_cube (std::size_t automaton_id) const
 Returns a BDD formed by the conjunction of all state variables of automaton automaton_id.
 
std::vector< int > make_eval_vector (std::size_t automaton_id, const std::vector< int > &state_vector) const
 Creates a valid input to CUDD::BDD::Eval. More...
 
std::vector< int > make_state_eval_vector (std::size_t automaton_id, const std::vector< int > &state_vector) const
 Creates a valid input to CUDD::BDD::Eval. More...
 
std::vector< CUDD::BDD > make_compose_vector (std::size_t automaton_id, const std::vector< CUDD::BDD > &state_bdds) const
 Creates a valid input to CUDD::BDD::VectorCompose. More...
 
std::vector< std::string > variable_labels () const
 Returns a vector with a label for each variable. More...
 
std::vector< std::string > input_variable_labels () const
 Returns a vector with a label for each input variable. More...
 
std::vector< std::string > output_variable_labels () const
 Returns a vector with a label for each output variable. More...
 
std::vector< std::string > state_variable_labels (std::size_t automaton_id) const
 Returns a vector with a label for each state variable. More...
 
void dump_dot (const CUDD::ADD &add, const std::string &filename) const
 Saves an ADD in a .dot file. More...
 
void dump_dot (const std::vector< CUDD::ADD > &adds, const std::vector< std::string > &function_labels, const std::string &filename) const
 Saves ADDs to a .dot file with corresponding labels. More...
 
+std::size_t automaton_num () const
 Returns the number of DFAs the manager handles.
 
std::string bdd_to_string (const CUDD::BDD &bdd) const
 Prints a BDD as a Boolean formula, where each variable has a specific label. More...
 
+std::size_t create_complement_state_space (const std::size_t automaton_id)
 Create the state space when complementing a DFA.
 
+

Detailed Description

+

A dictionary that maps variable names to indices and vice versa.

+

Member Function Documentation

+ +

◆ bdd_to_string()

+ +
+
+ + + + + + + + +
std::string Syft::VarMgr::bdd_to_string (const CUDD::BDD & bdd) const
+
+ +

Prints a BDD as a Boolean formula, where each variable has a specific label.

+
Parameters
+ + +
Agiven BDD.
+
+
+
Returns
A string that represents a Boolean formula.
+ +
+
+ +

◆ create_named_variables()

+ +
+
+ + + + + + + + +
void Syft::VarMgr::create_named_variables (const std::vector< std::string > & variable_names)
+
+ +

Creates BDD variables and associates each with a name.

+
Parameters
+ + +
variable_namesThe names of the variables to create. A new variable is only created if a variable by that name does not already exist.
+
+
+ +
+
+ +

◆ create_product_state_space()

+ +
+
+ + + + + + + + +
std::size_t Syft::VarMgr::create_product_state_space (const std::vector< std::size_t > & automaton_ids)
+
+ +

Registers a new automaton ID associated with a product state space.

+

This function does not create new state variables. Instead, the variables associated with the new ID are the union of all variables for the automata that form the product.

+
Parameters
+ + +
automaton_idsA vector of automaton IDs all of which must already exist in the manager.
+
+
+
Returns
The automaton ID for the automaton formed by taking the product of the automata whose IDs were provided in automaton_ids.
+ +
+
+ +

◆ create_state_variables()

+ +
+
+ + + + + + + + +
std::size_t Syft::VarMgr::create_state_variables (std::size_t variable_count)
+
+ +

Creates and stores state variables.

+

Multiple calls of this function create separate groups of state variables. The call generates an ID for the automaton whose state space the variables represent, so that the correct group of variables can be retrieved later.

+
Parameters
+ + +
variable_countThe number of state variables to create.
+
+
+
Returns
The automaton ID the variables are associated with.
+ +
+
+ +

◆ dump_dot() [1/2]

+ +
+
+ + + + + + + + + + + + + + + + + + +
void Syft::VarMgr::dump_dot (const CUDD::ADD & add,
const std::string & filename 
) const
+
+ +

Saves an ADD in a .dot file.

+

Uses ADD for better visualization in the .dot file. To call with a BDD, use dump_dot(bdd.Add(), filename).

+
Parameters
+ + +
AnADD add and filename.
+
+
+ +
+
+ +

◆ dump_dot() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void Syft::VarMgr::dump_dot (const std::vector< CUDD::ADD > & adds,
const std::vector< std::string > & function_labels,
const std::string & filename 
) const
+
+ +

Saves ADDs to a .dot file with corresponding labels.

+
Parameters
+ + + + +
addsA vector of ADDs to be saved to file.
function_labelsA vector such that function_labels[i] contains the label for adds[i]. The labels appear above the corresponding ADD in the file.
filenameThe name of the .dot file.
+
+
+ +
+
+ +

◆ input_variable_labels()

+ +
+
+ + + + + + + +
std::vector< std::string > Syft::VarMgr::input_variable_labels () const
+
+ +

Returns a vector with a label for each input variable.

+

To be used with CUDD::Cudd::DumpDot.

+
Returns
A vector v such that v[i] contains the name of the i-th input variable.
+ +
+
+ +

◆ make_compose_vector()

+ +
+
+ + + + + + + + + + + + + + + + + + +
std::vector< CUDD::BDD > Syft::VarMgr::make_compose_vector (std::size_t automaton_id,
const std::vector< CUDD::BDD > & state_bdds 
) const
+
+ +

Creates a valid input to CUDD::BDD::VectorCompose.

+
Parameters
+ + + +
automaton_idThe ID of the automaton whose variables to use.
state_bddsA vector containing one BDD for each state variable of the automaton.
+
+
+
Returns
A vector with one position for each BDD variable, including both named and state variables, where the index corresponding to the i-th state variable of the requested automaton contains state_bdds[i]. Indices corresponding to other variables have the identity BDD for that variable.
+ +
+
+ +

◆ make_eval_vector()

+ +
+
+ + + + + + + + + + + + + + + + + + +
std::vector< int > Syft::VarMgr::make_eval_vector (std::size_t automaton_id,
const std::vector< int > & state_vector 
) const
+
+ +

Creates a valid input to CUDD::BDD::Eval.

+
Parameters
+ + + +
automaton_idThe ID of the automaton whose variables to use.
state_vectorA vector of 1s and 0s encoding a state's binary representation.
+
+
+
Returns
A vector with one position for each BDD variable, including both named and state variables, where the index corresponding to the i-th state variable of the requested automaton contains state_vector[i]. Indices corresponding to other variables have a 0.
+ +
+
+ +

◆ make_state_eval_vector()

+ +
+
+ + + + + + + + + + + + + + + + + + +
std::vector< int > Syft::VarMgr::make_state_eval_vector (std::size_t automaton_id,
const std::vector< int > & state_vector 
) const
+
+ +

Creates a valid input to CUDD::BDD::Eval.

+
Parameters
+ + + +
automaton_idThe ID of the automaton whose variables to use.
state_vectorA vector of 1s and 0s encoding a state's binary representation.
+
+
+
Returns
A vector with one position for each BDD variable, including only state variables, where the index corresponding to the i-th state variable of the requested automaton contains state_vector[i]. Indices corresponding to other variables have a 0.
+ +
+
+ +

◆ output_variable_labels()

+ +
+
+ + + + + + + +
std::vector< std::string > Syft::VarMgr::output_variable_labels () const
+
+ +

Returns a vector with a label for each output variable.

+

To be used with CUDD::Cudd::DumpDot.

+
Returns
A vector v such that v[i] contains the name of the i-th output variable.
+ +
+
+ +

◆ partition_variables()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void Syft::VarMgr::partition_variables (const std::vector< std::string > & input_names,
const std::vector< std::string > & output_names 
)
+
+ +

Partitions the named variables between inputs and outputs.

+
Parameters
+ + + +
input_namesThe names of the variables that should be considered inputs.
output_namesThe names of the variables that should be considered outputs.
+
+
+ +
+
+ +

◆ state_variable_labels()

+ +
+
+ + + + + + + + +
std::vector< std::string > Syft::VarMgr::state_variable_labels (std::size_t automaton_id) const
+
+ +

Returns a vector with a label for each state variable.

+

To be used with CUDD::Cudd::DumpDot.

+
Returns
A vector v such that v[i] has a label for the i-th state variable. The label is the same as the one used in variable_labels().
+ +
+
+ +

◆ state_vector_to_bdd()

+ +
+
+ + + + + + + + + + + + + + + + + + +
CUDD::BDD Syft::VarMgr::state_vector_to_bdd (std::size_t automaton_id,
const std::vector< int > & state_vector 
) const
+
+ +

Converts a state vector to a BDD.

+
Parameters
+ + + +
automaton_idThe ID of the automaton whose variables to use.
state_vectorA vector of 1s and 0s encoding a state's binary representation.
+
+
+
Returns
A BDD representing a conjunction (l_1 & l_2 & ... & l_n) where l_i = !x_i if state_vector[i] = 0 and l_i = x_i otherwise, where x_i is the i-th state variable of the automaton with the given ID.
+ +
+
+ +

◆ variable_labels()

+ +
+
+ + + + + + + +
std::vector< std::string > Syft::VarMgr::variable_labels () const
+
+ +

Returns a vector with a label for each variable.

+

To be used with CUDD::Cudd::DumpDot.

+
Returns
A vector v such that v[i] has a label for the variable with index i. For named variables the label is the variable's name. For state variables the label is a representation that indicates which automaton the variable is from and which bit of the state it represents.
+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/classSyft_1_1VarMgr.js b/classSyft_1_1VarMgr.js new file mode 100644 index 0000000..e24acfb --- /dev/null +++ b/classSyft_1_1VarMgr.js @@ -0,0 +1,33 @@ +var classSyft_1_1VarMgr = +[ + [ "VarMgr", "classSyft_1_1VarMgr.html#a1b5b1ace9b0157d1087bff239260cd65", null ], + [ "automaton_num", "classSyft_1_1VarMgr.html#a1562901363bb109776a991853e114e89", null ], + [ "bdd_to_string", "classSyft_1_1VarMgr.html#a80bcad06ff814173f8fa58f4e337acb3", null ], + [ "create_complement_state_space", "classSyft_1_1VarMgr.html#a20968a4054e4474addf55e6857d0bcff", null ], + [ "create_named_variables", "classSyft_1_1VarMgr.html#a624e50cbd328e79847949a02c5450c9a", null ], + [ "create_product_state_space", "classSyft_1_1VarMgr.html#ada4600a6e9ef8a146d30134d7c15f885", null ], + [ "create_state_variables", "classSyft_1_1VarMgr.html#ae532b674990f328df75803861fc83019", null ], + [ "cudd_mgr", "classSyft_1_1VarMgr.html#a2cca5b6b5c8ac7653162a84a0314204d", null ], + [ "dump_dot", "classSyft_1_1VarMgr.html#ab8d03ecaca62d7a1eeaaf5a28bd73d6c", null ], + [ "dump_dot", "classSyft_1_1VarMgr.html#a293ad8c34f959aaeea0fa38aa2bca50d", null ], + [ "index_to_name", "classSyft_1_1VarMgr.html#a11c5cc79c94f17c76de11399933dd045", null ], + [ "input_cube", "classSyft_1_1VarMgr.html#a1d61504ecc6df26d61e0e50dea0b5706", null ], + [ "input_variable_count", "classSyft_1_1VarMgr.html#abe1fa46a7b9911d683bb18b2acbb1d69", null ], + [ "input_variable_labels", "classSyft_1_1VarMgr.html#a3d23f98e3716b1f8f1528c7a0e82a199", null ], + [ "make_compose_vector", "classSyft_1_1VarMgr.html#af5fc355872038ae5564da7d436709eb7", null ], + [ "make_eval_vector", "classSyft_1_1VarMgr.html#af210f7054001c41a021a4848a27e4a14", null ], + [ "make_state_eval_vector", "classSyft_1_1VarMgr.html#a02dea41f6c9bc9f60991c4538e0117cf", null ], + [ "name_to_variable", "classSyft_1_1VarMgr.html#a2e3e6a63ab9e482caf2a0e38a0493e6c", null ], + [ "output_cube", "classSyft_1_1VarMgr.html#abae667a77bc43e813b027205620d475f", null ], + [ "output_variable_count", "classSyft_1_1VarMgr.html#ac175ed202b133e0dace9362b22f3ac57", null ], + [ "output_variable_labels", "classSyft_1_1VarMgr.html#a1abb49c5f62b69c00975d2e810c8e99a", null ], + [ "partition_variables", "classSyft_1_1VarMgr.html#ab829aa3b49133ac514a30cbd060eb117", null ], + [ "state_variable", "classSyft_1_1VarMgr.html#a4585a150e1a0bc2d908d0e249f95ea9a", null ], + [ "state_variable_count", "classSyft_1_1VarMgr.html#ad3c878bdf9e9cc1d718a67f4e1955bf9", null ], + [ "state_variable_labels", "classSyft_1_1VarMgr.html#a71b969a46c6e16f4489c1b3cdd3ad1b2", null ], + [ "state_variables_cube", "classSyft_1_1VarMgr.html#afe31cc2babdf454ef853f6480b53192f", null ], + [ "state_vector_to_bdd", "classSyft_1_1VarMgr.html#a8cd8b52db7087b049cc588e4ebbe9b20", null ], + [ "total_state_variable_count", "classSyft_1_1VarMgr.html#a387816710b48e0131d72e929bdc8e0ae", null ], + [ "total_variable_count", "classSyft_1_1VarMgr.html#ae8c39857542ccbecd14aaa1c6e8d5551", null ], + [ "variable_labels", "classSyft_1_1VarMgr.html#afef5b1b9131a252617ffafc2f5021be1", null ] +]; \ No newline at end of file diff --git a/classSyft_1_1coBuchiReachability-members.html b/classSyft_1_1coBuchiReachability-members.html new file mode 100644 index 0000000..0663788 --- /dev/null +++ b/classSyft_1_1coBuchiReachability-members.html @@ -0,0 +1,117 @@ + + + + + + + +LydiaSyft: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
LydiaSyft +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
Syft::coBuchiReachability Member List
+
+
+ +

This is the complete list of members for Syft::coBuchiReachability, including all inherited members.

+ + + + + + + + + + + + + + + + + + +
AbstractSingleStrategy(const SynthesisResult &result) constSyft::DfaGameSynthesizer
coBuchiReachability(const SymbolicStateDfa &spec, Player starting_player, Player protagonist_player, const CUDD::BDD &goal_states, const CUDD::BDD &coBuchi, const CUDD::BDD &state_space)Syft::coBuchiReachability
DfaGameSynthesizer(SymbolicStateDfa spec, Player starting_player, Player protagonist_player)Syft::DfaGameSynthesizer
includes_initial_state(const CUDD::BDD &winning_states) constSyft::DfaGameSynthesizerprotected
initial_vector_Syft::DfaGameSynthesizerprotected
preimage(const CUDD::BDD &winning_states) constSyft::DfaGameSynthesizerprotected
project_into_states(const CUDD::BDD &winning_moves) constSyft::DfaGameSynthesizerprotected
protagonist_player_Syft::DfaGameSynthesizerprotected
quantify_independent_variables_Syft::DfaGameSynthesizerprotected
quantify_non_state_variables_Syft::DfaGameSynthesizerprotected
run() const finalSyft::coBuchiReachabilityvirtual
spec_Syft::Synthesizer< SymbolicStateDfa >protected
starting_player_Syft::DfaGameSynthesizerprotected
Synthesizer(SymbolicStateDfa spec) (defined in Syft::Synthesizer< SymbolicStateDfa >)Syft::Synthesizer< SymbolicStateDfa >inline
transition_vector_Syft::DfaGameSynthesizerprotected
var_mgr_Syft::DfaGameSynthesizerprotected
~Synthesizer() (defined in Syft::Synthesizer< SymbolicStateDfa >)Syft::Synthesizer< SymbolicStateDfa >inlinevirtual
+
+ + + + diff --git a/classSyft_1_1coBuchiReachability.html b/classSyft_1_1coBuchiReachability.html new file mode 100644 index 0000000..d124a44 --- /dev/null +++ b/classSyft_1_1coBuchiReachability.html @@ -0,0 +1,298 @@ + + + + + + + +LydiaSyft: Syft::coBuchiReachability Class Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
LydiaSyft +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
Syft::coBuchiReachability Class Reference
+
+
+ +

A single-strategy-synthesizer for a coBuchi-reachability game given as a symbolic-state DFA. + More...

+ +

#include <coBuchiReachability.hpp>

+
+Inheritance diagram for Syft::coBuchiReachability:
+
+
Inheritance graph
+ + + + + +
[legend]
+
+Collaboration diagram for Syft::coBuchiReachability:
+
+
Collaboration graph
+ + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + +

+Public Member Functions

 coBuchiReachability (const SymbolicStateDfa &spec, Player starting_player, Player protagonist_player, const CUDD::BDD &goal_states, const CUDD::BDD &coBuchi, const CUDD::BDD &state_space)
 Construct a single-strategy-synthesizer for the given coBuchi-reachability game. More...
 
SynthesisResult run () const final
 Solves the coBuchi-reachability game. More...
 
- Public Member Functions inherited from Syft::DfaGameSynthesizer
 DfaGameSynthesizer (SymbolicStateDfa spec, Player starting_player, Player protagonist_player)
 Construct a synthesizer for a given DFA game. More...
 
std::unique_ptr< TransducerAbstractSingleStrategy (const SynthesisResult &result) const
 Abstract a winning strategy for the game. More...
 
- Public Member Functions inherited from Syft::Synthesizer< SymbolicStateDfa >
Synthesizer (SymbolicStateDfa spec)
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Protected Member Functions inherited from Syft::DfaGameSynthesizer
CUDD::BDD preimage (const CUDD::BDD &winning_states) const
 Compute a set of winning moves. More...
 
CUDD::BDD project_into_states (const CUDD::BDD &winning_moves) const
 Project a set of winning moves to a set of winning states. More...
 
bool includes_initial_state (const CUDD::BDD &winning_states) const
 Check whether the initial state is a winning state. More...
 
- Protected Attributes inherited from Syft::DfaGameSynthesizer
+std::shared_ptr< VarMgrvar_mgr_
 Variable manager.
 
+Player starting_player_
 The player that moves first each turn.
 
+Player protagonist_player_
 The player for which we aim to find the winning strategy.
 
+std::vector< int > initial_vector_
 The initial state of the game arena.
 
+std::vector< CUDD::BDD > transition_vector_
 The transition function of the game arena.
 
+std::unique_ptr< Quantificationquantify_independent_variables_
 Quantification on the variables that the protagonist player does not depend on.
 
+std::unique_ptr< Quantificationquantify_non_state_variables_
 Quantification on non-state variables.
 
- Protected Attributes inherited from Syft::Synthesizer< SymbolicStateDfa >
+SymbolicStateDfa spec_
 The game arena.
 
+

Detailed Description

+

A single-strategy-synthesizer for a coBuchi-reachability game given as a symbolic-state DFA.

+

Either coBuchi condition holds or reachability condition holds.

+

Constructor & Destructor Documentation

+ +

◆ coBuchiReachability()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Syft::coBuchiReachability::coBuchiReachability (const SymbolicStateDfaspec,
Player starting_player,
Player protagonist_player,
const CUDD::BDD & goal_states,
const CUDD::BDD & coBuchi,
const CUDD::BDD & state_space 
)
+
+ +

Construct a single-strategy-synthesizer for the given coBuchi-reachability game.

+
Parameters
+ + + + + + + +
specA symbolic-state DFA representing the coBuchi-reachability game arena.
starting_playerThe player that moves first each turn.
protagonist_playerThe player for which we aim to find the winning strategy.
goal_statesThe reachability condition.
coBuchiThe coBuchi condition represented as a Boolean formula \beta over input variables, denoting the coBuchi condition FG\beta.
state_spaceThe state space.
+
+
+ +
+
+

Member Function Documentation

+ +

◆ run()

+ +
+
+ + + + + +
+ + + + + + + +
SynthesisResult Syft::coBuchiReachability::run () const
+
+finalvirtual
+
+ +

Solves the coBuchi-reachability game.

+
Returns
The result consists of realizability a set of agent winning states a transducer representing a winning strategy or nullptr if the game is unrealizable.
+ +

Implements Syft::DfaGameSynthesizer.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/classSyft_1_1coBuchiReachability.js b/classSyft_1_1coBuchiReachability.js new file mode 100644 index 0000000..2661c57 --- /dev/null +++ b/classSyft_1_1coBuchiReachability.js @@ -0,0 +1,5 @@ +var classSyft_1_1coBuchiReachability = +[ + [ "coBuchiReachability", "classSyft_1_1coBuchiReachability.html#a5ae90e1083cbc89561756e733f260b3a", null ], + [ "run", "classSyft_1_1coBuchiReachability.html#acac33d2314323a35a026fa4dc8273b6c", null ] +]; \ No newline at end of file diff --git a/classSyft_1_1coBuchiReachability__coll__graph.map b/classSyft_1_1coBuchiReachability__coll__graph.map new file mode 100644 index 0000000..99d87f7 --- /dev/null +++ b/classSyft_1_1coBuchiReachability__coll__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/classSyft_1_1coBuchiReachability__coll__graph.md5 b/classSyft_1_1coBuchiReachability__coll__graph.md5 new file mode 100644 index 0000000..0357555 --- /dev/null +++ b/classSyft_1_1coBuchiReachability__coll__graph.md5 @@ -0,0 +1 @@ +2fbc43f5f2490015c4cf3519424fcad5 \ No newline at end of file diff --git a/classSyft_1_1coBuchiReachability__coll__graph.png b/classSyft_1_1coBuchiReachability__coll__graph.png new file mode 100644 index 0000000..fa0c3ef Binary files /dev/null and b/classSyft_1_1coBuchiReachability__coll__graph.png differ diff --git a/classSyft_1_1coBuchiReachability__inherit__graph.map b/classSyft_1_1coBuchiReachability__inherit__graph.map new file mode 100644 index 0000000..99d87f7 --- /dev/null +++ b/classSyft_1_1coBuchiReachability__inherit__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/classSyft_1_1coBuchiReachability__inherit__graph.md5 b/classSyft_1_1coBuchiReachability__inherit__graph.md5 new file mode 100644 index 0000000..0357555 --- /dev/null +++ b/classSyft_1_1coBuchiReachability__inherit__graph.md5 @@ -0,0 +1 @@ +2fbc43f5f2490015c4cf3519424fcad5 \ No newline at end of file diff --git a/classSyft_1_1coBuchiReachability__inherit__graph.png b/classSyft_1_1coBuchiReachability__inherit__graph.png new file mode 100644 index 0000000..fa0c3ef Binary files /dev/null and b/classSyft_1_1coBuchiReachability__inherit__graph.png differ diff --git a/classSyft_1_1coGR1Reachability-members.html b/classSyft_1_1coGR1Reachability-members.html new file mode 100644 index 0000000..80f54ef --- /dev/null +++ b/classSyft_1_1coGR1Reachability-members.html @@ -0,0 +1,104 @@ + + + + + + + +LydiaSyft: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
LydiaSyft +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
Syft::coGR1Reachability Member List
+
+
+ +

This is the complete list of members for Syft::coGR1Reachability, including all inherited members.

+ + + + + +
coGR1Reachability(const std::shared_ptr< VarMgr > &var_mgr, const GR1 &gr1, const SymbolicStateDfa &arena, const CUDD::BDD &state_space, const CUDD::BDD &initial_condition, const std::string &slugs_dir, const std::string &benchmark_name)Syft::coGR1Reachability
coGR1Reachability(SymbolicStateDfa dfa, Player player, Player player1, CUDD::BDD bdd, CUDD::BDD bdd1, CUDD::BDD bdd2) (defined in Syft::coGR1Reachability)Syft::coGR1Reachability
exec_slugs(const std::string &slugs, const std::string &slugs_input_file, const std::string &slugs_res_file, const std::string &slugs_strategy_file) const (defined in Syft::coGR1Reachability)Syft::coGR1Reachability
run() constSyft::coGR1Reachability
+
+ + + + diff --git a/classSyft_1_1coGR1Reachability.html b/classSyft_1_1coGR1Reachability.html new file mode 100644 index 0000000..45c2465 --- /dev/null +++ b/classSyft_1_1coGR1Reachability.html @@ -0,0 +1,222 @@ + + + + + + + +LydiaSyft: Syft::coGR1Reachability Class Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
LydiaSyft +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
Syft::coGR1Reachability Class Reference
+
+
+ +

A single-strategy-synthesizer for a Buchi-reachability game given as a symbolic-state DFA. + More...

+ +

#include <coGR1Reachability.hpp>

+ + + + + + + + + + + + +

+Public Member Functions

 coGR1Reachability (const std::shared_ptr< VarMgr > &var_mgr, const GR1 &gr1, const SymbolicStateDfa &arena, const CUDD::BDD &state_space, const CUDD::BDD &initial_condition, const std::string &slugs_dir, const std::string &benchmark_name)
 Construct a single-strategy-synthesizer for the given Buchi-reachability game. More...
 
+const std::string exec_slugs (const std::string &slugs, const std::string &slugs_input_file, const std::string &slugs_res_file, const std::string &slugs_strategy_file) const
 
SynthesisResult run () const
 Solves the Buchi-reachability game. More...
 
coGR1Reachability (SymbolicStateDfa dfa, Player player, Player player1, CUDD::BDD bdd, CUDD::BDD bdd1, CUDD::BDD bdd2)
 
+

Detailed Description

+

A single-strategy-synthesizer for a Buchi-reachability game given as a symbolic-state DFA.

+

Either Buchi condition holds or reachability condition holds.

+

Constructor & Destructor Documentation

+ +

◆ coGR1Reachability()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Syft::coGR1Reachability::coGR1Reachability (const std::shared_ptr< VarMgr > & var_mgr,
const GR1gr1,
const SymbolicStateDfaarena,
const CUDD::BDD & state_space,
const CUDD::BDD & initial_condition,
const std::string & slugs_dir,
const std::string & benchmark_name 
)
+
+ +

Construct a single-strategy-synthesizer for the given Buchi-reachability game.

+
Parameters
+ + + + + + + +
specA symbolic-state DFA representing the Buchi-reachability game arena.
starting_playerThe player that moves first each turn.
protagonist_playerThe player for which we aim to find the winning strategy.
goal_statesThe reachability condition.
BuchiThe Buchi condition represented as a Boolean formula \beta over input variables, denoting the Buchi condition FG\beta.
state_spaceThe state space.
+
+
+ +
+
+

Member Function Documentation

+ +

◆ run()

+ +
+
+ + + + + + + +
SynthesisResult Syft::coGR1Reachability::run () const
+
+ +

Solves the Buchi-reachability game.

+
Returns
The result consists of realizability a set of agent winning states a transducer representing a winning strategy or nullptr if the game is unrealizable.
+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/classSyft_1_1coGR1Reachability.js b/classSyft_1_1coGR1Reachability.js new file mode 100644 index 0000000..3aa3934 --- /dev/null +++ b/classSyft_1_1coGR1Reachability.js @@ -0,0 +1,7 @@ +var classSyft_1_1coGR1Reachability = +[ + [ "coGR1Reachability", "classSyft_1_1coGR1Reachability.html#a09b9502d0d163b793f9dbfd504a7b168", null ], + [ "coGR1Reachability", "classSyft_1_1coGR1Reachability.html#ac43852d2f4c05c26ee5e7c10e3b6024b", null ], + [ "exec_slugs", "classSyft_1_1coGR1Reachability.html#aa4ec0589c3780a59d0f35ea49f5022d8", null ], + [ "run", "classSyft_1_1coGR1Reachability.html#ad46a94cf541a7cc3a733285e7b892957", null ] +]; \ No newline at end of file diff --git a/classes.html b/classes.html new file mode 100644 index 0000000..326d951 --- /dev/null +++ b/classes.html @@ -0,0 +1,151 @@ + + + + + + + +LydiaSyft: Class Index + + + + + + + + + + + + + +
+
+ + + + + + +
+
LydiaSyft +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
Class Index
+
+
+
B | C | D | E | F | G | I | L | M | N | O | P | Q | R | S | T | V
+ +
+
+ + + + diff --git a/closed.png b/closed.png new file mode 100644 index 0000000..98cc2c9 Binary files /dev/null and b/closed.png differ diff --git a/coBuchiReachability_8hpp_source.html b/coBuchiReachability_8hpp_source.html new file mode 100644 index 0000000..d775e9c --- /dev/null +++ b/coBuchiReachability_8hpp_source.html @@ -0,0 +1,135 @@ + + + + + + + +LydiaSyft: src/synthesis/header/game/coBuchiReachability.hpp Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
LydiaSyft +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
coBuchiReachability.hpp
+
+
+
1 //
+
2 // Created by shuzhu on 16/04/24.
+
3 //
+
4 
+
5 #ifndef LYDIASYFT_COBUCHIREACHABILITY_HPP
+
6 #define LYDIASYFT_COBUCHIREACHABILITY_HPP
+
7 
+
8 #include "game/DfaGameSynthesizer.h"
+
9 
+
10 namespace Syft {
+
11 
+ +
18  private:
+
22  CUDD::BDD goal_states_;
+
26  CUDD::BDD state_space_;
+
30  CUDD::BDD coBuchi_;
+
31 
+
32 
+
33  public:
+
34 
+
45  coBuchiReachability(const SymbolicStateDfa &spec, Player starting_player, Player protagonist_player,
+
46  const CUDD::BDD &goal_states, const CUDD::BDD &coBuchi, const CUDD::BDD &state_space);
+
47 
+
56  SynthesisResult run() const final;
+
57 
+
58  };
+
59 
+
60 }
+
61 
+
62 
+
63 #endif //LYDIASYFT_COBUCHIREACHABILITY_HPP
+
A synthesizer for a game whose arena is a symbolic-state DFA.
Definition: DfaGameSynthesizer.h:15
+
A DFA with symbolic states and transitions.
Definition: SymbolicStateDfa.h:18
+
A single-strategy-synthesizer for a coBuchi-reachability game given as a symbolic-state DFA.
Definition: coBuchiReachability.hpp:17
+
coBuchiReachability(const SymbolicStateDfa &spec, Player starting_player, Player protagonist_player, const CUDD::BDD &goal_states, const CUDD::BDD &coBuchi, const CUDD::BDD &state_space)
Construct a single-strategy-synthesizer for the given coBuchi-reachability game.
Definition: coBuchiReachability.cpp:8
+
SynthesisResult run() const final
Solves the coBuchi-reachability game.
Definition: coBuchiReachability.cpp:17
+
Definition: Synthesizer.h:16
+
+
+ + + + diff --git a/coGR1Reachability_8hpp_source.html b/coGR1Reachability_8hpp_source.html new file mode 100644 index 0000000..d571755 --- /dev/null +++ b/coGR1Reachability_8hpp_source.html @@ -0,0 +1,160 @@ + + + + + + + +LydiaSyft: src/synthesis/header/game/coGR1Reachability.hpp Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
LydiaSyft +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
coGR1Reachability.hpp
+
+
+
1 //
+
2 // Created by shuzhu on 18/04/24.
+
3 //
+
4 
+
5 #ifndef LYDIASYFT_COGR1REACHABILITY_HPP
+
6 #define LYDIASYFT_COGR1REACHABILITY_HPP
+
7 
+
8 #include "GR1.h"
+
9 #include "automata/SymbolicStateDfa.h"
+
10 #include "Synthesizer.h"
+
11 
+
12 namespace Syft {
+ +
19  private:
+
23  const std::shared_ptr<VarMgr> var_mgr_;
+
27  const GR1 gr1_;
+
31  const SymbolicStateDfa arena_;
+
35  const CUDD::BDD state_space_;
+
39  const CUDD::BDD initial_condition_;
+
43  const std::string benchmark_name_;
+
47  const std::string slugs_dir_;
+
48 
+
62  void print_variables(const std::string &filename) const;
+
63 
+
75  void print_initial_conditions(const CUDD::BDD &arena_initial_state_bdd, const std::string &filename) const;
+
76 
+
89  void print_transitions(const SymbolicStateDfa &arena, const CUDD::BDD &safe_states,
+
90  const std::string &filename) const;
+
91 
+
101  void print_liveness_constraints(const std::string &filename) const;
+
102 
+
108  std::string get_slugs_path() const;
+
109 
+
110 
+
111  public:
+
112 
+
123  coGR1Reachability(const std::shared_ptr<VarMgr> &var_mgr, const GR1 &gr1,
+
124  const SymbolicStateDfa &arena,
+
125  const CUDD::BDD &state_space,
+
126  const CUDD::BDD &initial_condition,
+
127  const std::string &slugs_dir,
+
128  const std::string &benchmark_name);
+
129 
+
130  const std::string exec_slugs(const std::string &slugs, const std::string &slugs_input_file,
+
131  const std::string &slugs_res_file, const std::string &slugs_strategy_file) const;
+
132 
+
133 
+
142  SynthesisResult run() const;
+
143 
+
144  coGR1Reachability(SymbolicStateDfa dfa, Player player, Player player1, CUDD::BDD bdd, CUDD::BDD bdd1,
+
145  CUDD::BDD bdd2);
+
146  };
+
147 }
+
148 
+
149 
+
150 #endif //LYDIASYFT_COGR1REACHABILITY_HPP
+
A DFA with symbolic states and transitions.
Definition: SymbolicStateDfa.h:18
+
A single-strategy-synthesizer for a Buchi-reachability game given as a symbolic-state DFA.
Definition: coGR1Reachability.hpp:18
+
coGR1Reachability(const std::shared_ptr< VarMgr > &var_mgr, const GR1 &gr1, const SymbolicStateDfa &arena, const CUDD::BDD &state_space, const CUDD::BDD &initial_condition, const std::string &slugs_dir, const std::string &benchmark_name)
Construct a single-strategy-synthesizer for the given Buchi-reachability game.
Definition: coGR1Reachability.cpp:11
+
SynthesisResult run() const
Solves the Buchi-reachability game.
Definition: coGR1Reachability.cpp:228
+
Definition: GR1.h:52
+
Definition: Synthesizer.h:16
+
+
+ + + + diff --git a/dir_313caf1132e152dd9b58bea13a4052ca.html b/dir_313caf1132e152dd9b58bea13a4052ca.html new file mode 100644 index 0000000..6a4990b --- /dev/null +++ b/dir_313caf1132e152dd9b58bea13a4052ca.html @@ -0,0 +1,98 @@ + + + + + + + +LydiaSyft: src/utils Directory Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
LydiaSyft +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
utils Directory Reference
+
+
+
+
+ + + + diff --git a/dir_313caf1132e152dd9b58bea13a4052ca.js b/dir_313caf1132e152dd9b58bea13a4052ca.js new file mode 100644 index 0000000..6caad2d --- /dev/null +++ b/dir_313caf1132e152dd9b58bea13a4052ca.js @@ -0,0 +1,4 @@ +var dir_313caf1132e152dd9b58bea13a4052ca = +[ + [ "string_utilities.h", "string__utilities_8h_source.html", null ] +]; \ No newline at end of file diff --git a/dir_320eb4ba59eee957906050ddd0cdf685.html b/dir_320eb4ba59eee957906050ddd0cdf685.html new file mode 100644 index 0000000..0963f66 --- /dev/null +++ b/dir_320eb4ba59eee957906050ddd0cdf685.html @@ -0,0 +1,98 @@ + + + + + + + +LydiaSyft: src/synthesis/header/automata Directory Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
LydiaSyft +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
automata Directory Reference
+
+
+
+
+ + + + diff --git a/dir_320eb4ba59eee957906050ddd0cdf685.js b/dir_320eb4ba59eee957906050ddd0cdf685.js new file mode 100644 index 0000000..520c4b3 --- /dev/null +++ b/dir_320eb4ba59eee957906050ddd0cdf685.js @@ -0,0 +1,6 @@ +var dir_320eb4ba59eee957906050ddd0cdf685 = +[ + [ "ExplicitStateDfa.h", "ExplicitStateDfa_8h_source.html", null ], + [ "ExplicitStateDfaAdd.h", "ExplicitStateDfaAdd_8h_source.html", null ], + [ "SymbolicStateDfa.h", "SymbolicStateDfa_8h_source.html", null ] +]; \ No newline at end of file diff --git a/dir_5b99d129890bb6c8686fe210e25999ea.html b/dir_5b99d129890bb6c8686fe210e25999ea.html new file mode 100644 index 0000000..4914171 --- /dev/null +++ b/dir_5b99d129890bb6c8686fe210e25999ea.html @@ -0,0 +1,98 @@ + + + + + + + +LydiaSyft: src/synthesis/header/game Directory Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
LydiaSyft +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
game Directory Reference
+
+
+
+
+ + + + diff --git a/dir_5b99d129890bb6c8686fe210e25999ea.js b/dir_5b99d129890bb6c8686fe210e25999ea.js new file mode 100644 index 0000000..9c4f9b4 --- /dev/null +++ b/dir_5b99d129890bb6c8686fe210e25999ea.js @@ -0,0 +1,12 @@ +var dir_5b99d129890bb6c8686fe210e25999ea = +[ + [ "BuchiReachability.hpp", "BuchiReachability_8hpp_source.html", null ], + [ "coBuchiReachability.hpp", "coBuchiReachability_8hpp_source.html", null ], + [ "coGR1Reachability.hpp", "coGR1Reachability_8hpp_source.html", null ], + [ "DfaGameSynthesizer.h", "DfaGameSynthesizer_8h_source.html", null ], + [ "InputOutputPartition.h", "InputOutputPartition_8h_source.html", null ], + [ "Quantification.h", "Quantification_8h_source.html", null ], + [ "Reachability.hpp", "Reachability_8hpp_source.html", null ], + [ "ReachabilityMaxSet.hpp", "ReachabilityMaxSet_8hpp_source.html", null ], + [ "Transducer.h", "Transducer_8h_source.html", null ] +]; \ No newline at end of file diff --git a/dir_68267d1309a1af8e8297ef4c3efbcdba.html b/dir_68267d1309a1af8e8297ef4c3efbcdba.html new file mode 100644 index 0000000..a079312 --- /dev/null +++ b/dir_68267d1309a1af8e8297ef4c3efbcdba.html @@ -0,0 +1,104 @@ + + + + + + + +LydiaSyft: src Directory Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
LydiaSyft +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
src Directory Reference
+
+
+ + + + +

+Directories

directory  synthesis
 
+
+
+ + + + diff --git a/dir_68267d1309a1af8e8297ef4c3efbcdba.js b/dir_68267d1309a1af8e8297ef4c3efbcdba.js new file mode 100644 index 0000000..9d6affc --- /dev/null +++ b/dir_68267d1309a1af8e8297ef4c3efbcdba.js @@ -0,0 +1,7 @@ +var dir_68267d1309a1af8e8297ef4c3efbcdba = +[ + [ "cli", "dir_b78fdfbbb632ce54d070469d6a721373.html", "dir_b78fdfbbb632ce54d070469d6a721373" ], + [ "parser", "dir_6cd8491d143eb218b70983dbdb3c58bc.html", "dir_6cd8491d143eb218b70983dbdb3c58bc" ], + [ "synthesis", "dir_957d8196b17c2a3ea74332cb4b59d36d.html", "dir_957d8196b17c2a3ea74332cb4b59d36d" ], + [ "utils", "dir_313caf1132e152dd9b58bea13a4052ca.html", "dir_313caf1132e152dd9b58bea13a4052ca" ] +]; \ No newline at end of file diff --git a/dir_6cd8491d143eb218b70983dbdb3c58bc.html b/dir_6cd8491d143eb218b70983dbdb3c58bc.html new file mode 100644 index 0000000..1656de7 --- /dev/null +++ b/dir_6cd8491d143eb218b70983dbdb3c58bc.html @@ -0,0 +1,98 @@ + + + + + + + +LydiaSyft: src/parser Directory Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
LydiaSyft +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
parser Directory Reference
+
+
+
+
+ + + + diff --git a/dir_6cd8491d143eb218b70983dbdb3c58bc.js b/dir_6cd8491d143eb218b70983dbdb3c58bc.js new file mode 100644 index 0000000..a64c7ab --- /dev/null +++ b/dir_6cd8491d143eb218b70983dbdb3c58bc.js @@ -0,0 +1,4 @@ +var dir_6cd8491d143eb218b70983dbdb3c58bc = +[ + [ "Parser.h", "Parser_8h_source.html", null ] +]; \ No newline at end of file diff --git a/dir_7118b4b29768f3ff8b8742612faa3388.html b/dir_7118b4b29768f3ff8b8742612faa3388.html new file mode 100644 index 0000000..87209ad --- /dev/null +++ b/dir_7118b4b29768f3ff8b8742612faa3388.html @@ -0,0 +1,98 @@ + + + + + + + +LydiaSyft: src/synthesis/source/synthesizer Directory Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
LydiaSyft +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
synthesizer Directory Reference
+
+
+
+
+ + + + diff --git a/dir_957d8196b17c2a3ea74332cb4b59d36d.html b/dir_957d8196b17c2a3ea74332cb4b59d36d.html new file mode 100644 index 0000000..028ac75 --- /dev/null +++ b/dir_957d8196b17c2a3ea74332cb4b59d36d.html @@ -0,0 +1,102 @@ + + + + + + + +LydiaSyft: src/synthesis Directory Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
LydiaSyft +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
synthesis Directory Reference
+
+
+ + +

+Directories

+
+
+ + + + diff --git a/dir_957d8196b17c2a3ea74332cb4b59d36d.js b/dir_957d8196b17c2a3ea74332cb4b59d36d.js new file mode 100644 index 0000000..25cfd5e --- /dev/null +++ b/dir_957d8196b17c2a3ea74332cb4b59d36d.js @@ -0,0 +1,4 @@ +var dir_957d8196b17c2a3ea74332cb4b59d36d = +[ + [ "header", "dir_d46d0e22f608a1c36cc907cacfa408f6.html", "dir_d46d0e22f608a1c36cc907cacfa408f6" ] +]; \ No newline at end of file diff --git a/dir_b78fdfbbb632ce54d070469d6a721373.html b/dir_b78fdfbbb632ce54d070469d6a721373.html new file mode 100644 index 0000000..e6256f7 --- /dev/null +++ b/dir_b78fdfbbb632ce54d070469d6a721373.html @@ -0,0 +1,98 @@ + + + + + + + +LydiaSyft: src/cli Directory Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
LydiaSyft +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
cli Directory Reference
+
+
+
+
+ + + + diff --git a/dir_b78fdfbbb632ce54d070469d6a721373.js b/dir_b78fdfbbb632ce54d070469d6a721373.js new file mode 100644 index 0000000..2b2fa7c --- /dev/null +++ b/dir_b78fdfbbb632ce54d070469d6a721373.js @@ -0,0 +1,9 @@ +var dir_b78fdfbbb632ce54d070469d6a721373 = +[ + [ "base.hpp", "base_8hpp_source.html", null ], + [ "fairness.hpp", "fairness_8hpp_source.html", null ], + [ "gr1.hpp", "gr1_8hpp_source.html", null ], + [ "maxset.hpp", "maxset_8hpp_source.html", null ], + [ "stability.hpp", "stability_8hpp_source.html", null ], + [ "synthesis.hpp", "synthesis_8hpp_source.html", null ] +]; \ No newline at end of file diff --git a/dir_b7ee310ccfe32409cf0ad13256eb48bb.html b/dir_b7ee310ccfe32409cf0ad13256eb48bb.html new file mode 100644 index 0000000..e65b7e8 --- /dev/null +++ b/dir_b7ee310ccfe32409cf0ad13256eb48bb.html @@ -0,0 +1,98 @@ + + + + + + + +LydiaSyft: src/synthesis/source/automata Directory Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
LydiaSyft +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
automata Directory Reference
+
+
+
+
+ + + + diff --git a/dir_c1bfcaf2be5812acbfb348d930b5f93c.html b/dir_c1bfcaf2be5812acbfb348d930b5f93c.html new file mode 100644 index 0000000..d26bfa7 --- /dev/null +++ b/dir_c1bfcaf2be5812acbfb348d930b5f93c.html @@ -0,0 +1,98 @@ + + + + + + + +LydiaSyft: src/synthesis/header/synthesizer Directory Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
LydiaSyft +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
synthesizer Directory Reference
+
+
+
+
+ + + + diff --git a/dir_c1bfcaf2be5812acbfb348d930b5f93c.js b/dir_c1bfcaf2be5812acbfb348d930b5f93c.js new file mode 100644 index 0000000..b505e0a --- /dev/null +++ b/dir_c1bfcaf2be5812acbfb348d930b5f93c.js @@ -0,0 +1,8 @@ +var dir_c1bfcaf2be5812acbfb348d930b5f93c = +[ + [ "FairnessLtlfSynthesizer.h", "FairnessLtlfSynthesizer_8h_source.html", null ], + [ "GR1LTLfSynthesizer.h", "GR1LTLfSynthesizer_8h_source.html", null ], + [ "LTLfMaxSetSynthesizer.h", "LTLfMaxSetSynthesizer_8h_source.html", null ], + [ "LTLfSynthesizer.h", "LTLfSynthesizer_8h_source.html", null ], + [ "StabilityLtlfSynthesizer.h", "StabilityLtlfSynthesizer_8h_source.html", null ] +]; \ No newline at end of file diff --git a/dir_d46d0e22f608a1c36cc907cacfa408f6.html b/dir_d46d0e22f608a1c36cc907cacfa408f6.html new file mode 100644 index 0000000..b02055f --- /dev/null +++ b/dir_d46d0e22f608a1c36cc907cacfa408f6.html @@ -0,0 +1,102 @@ + + + + + + + +LydiaSyft: src/synthesis/header Directory Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
LydiaSyft +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
header Directory Reference
+
+
+ + +

+Directories

+
+
+ + + + diff --git a/dir_d46d0e22f608a1c36cc907cacfa408f6.js b/dir_d46d0e22f608a1c36cc907cacfa408f6.js new file mode 100644 index 0000000..e5dd58b --- /dev/null +++ b/dir_d46d0e22f608a1c36cc907cacfa408f6.js @@ -0,0 +1,14 @@ +var dir_d46d0e22f608a1c36cc907cacfa408f6 = +[ + [ "automata", "dir_320eb4ba59eee957906050ddd0cdf685.html", "dir_320eb4ba59eee957906050ddd0cdf685" ], + [ "game", "dir_5b99d129890bb6c8686fe210e25999ea.html", "dir_5b99d129890bb6c8686fe210e25999ea" ], + [ "synthesizer", "dir_c1bfcaf2be5812acbfb348d930b5f93c.html", "dir_c1bfcaf2be5812acbfb348d930b5f93c" ], + [ "GR1.h", "GR1_8h_source.html", null ], + [ "OneStepRealizability.h", "OneStepRealizability_8h_source.html", null ], + [ "OneStepUnrealizability.h", "OneStepUnrealizability_8h_source.html", null ], + [ "Player.h", "Player_8h_source.html", null ], + [ "Preprocessing.h", "Preprocessing_8h_source.html", null ], + [ "Stopwatch.h", "Stopwatch_8h_source.html", null ], + [ "Synthesizer.h", "Synthesizer_8h_source.html", null ], + [ "VarMgr.h", "VarMgr_8h_source.html", null ] +]; \ No newline at end of file diff --git a/dir_df67f42fc909bca6d515c070d21f41c3.html b/dir_df67f42fc909bca6d515c070d21f41c3.html new file mode 100644 index 0000000..c656606 --- /dev/null +++ b/dir_df67f42fc909bca6d515c070d21f41c3.html @@ -0,0 +1,98 @@ + + + + + + + +LydiaSyft: src/synthesis/source/game Directory Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
LydiaSyft +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
game Directory Reference
+
+
+
+
+ + + + diff --git a/dir_f524262a48a341145f51280f7b0f4117.html b/dir_f524262a48a341145f51280f7b0f4117.html new file mode 100644 index 0000000..e891919 --- /dev/null +++ b/dir_f524262a48a341145f51280f7b0f4117.html @@ -0,0 +1,102 @@ + + + + + + + +LydiaSyft: src/synthesis/source Directory Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
LydiaSyft +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
source Directory Reference
+
+
+ + +

+Directories

+
+
+ + + + diff --git a/doc.png b/doc.png new file mode 100644 index 0000000..17edabf Binary files /dev/null and b/doc.png differ diff --git a/doxygen.css b/doxygen.css new file mode 100644 index 0000000..ffbff02 --- /dev/null +++ b/doxygen.css @@ -0,0 +1,1793 @@ +/* The standard CSS for doxygen 1.9.1 */ + +body, table, div, p, dl { + font: 400 14px/22px Roboto,sans-serif; +} + +p.reference, p.definition { + font: 400 14px/22px Roboto,sans-serif; +} + +/* @group Heading Levels */ + +h1.groupheader { + font-size: 150%; +} + +.title { + font: 400 14px/28px Roboto,sans-serif; + font-size: 150%; + font-weight: bold; + margin: 10px 2px; +} + +h2.groupheader { + border-bottom: 1px solid #879ECB; + color: #354C7B; + font-size: 150%; + font-weight: normal; + margin-top: 1.75em; + padding-top: 8px; + padding-bottom: 4px; + width: 100%; +} + +h3.groupheader { + font-size: 100%; +} + +h1, h2, h3, h4, h5, h6 { + -webkit-transition: text-shadow 0.5s linear; + -moz-transition: text-shadow 0.5s linear; + -ms-transition: text-shadow 0.5s linear; + -o-transition: text-shadow 0.5s linear; + transition: text-shadow 0.5s linear; + margin-right: 15px; +} + +h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { + text-shadow: 0 0 15px cyan; +} + +dt { + font-weight: bold; +} + +ul.multicol { + -moz-column-gap: 1em; + -webkit-column-gap: 1em; + column-gap: 1em; + -moz-column-count: 3; + -webkit-column-count: 3; + column-count: 3; +} + +p.startli, p.startdd { + margin-top: 2px; +} + +th p.starttd, th p.intertd, th p.endtd { + font-size: 100%; + font-weight: 700; +} + +p.starttd { + margin-top: 0px; +} + +p.endli { + margin-bottom: 0px; +} + +p.enddd { + margin-bottom: 4px; +} + +p.endtd { + margin-bottom: 2px; +} + +p.interli { +} + +p.interdd { +} + +p.intertd { +} + +/* @end */ + +caption { + font-weight: bold; +} + +span.legend { + font-size: 70%; + text-align: center; +} + +h3.version { + font-size: 90%; + text-align: center; +} + +div.navtab { + border-right: 1px solid #A3B4D7; + padding-right: 15px; + text-align: right; + line-height: 110%; +} + +div.navtab table { + border-spacing: 0; +} + +td.navtab { + padding-right: 6px; + padding-left: 6px; +} +td.navtabHL { + background-image: url('tab_a.png'); + background-repeat:repeat-x; + padding-right: 6px; + padding-left: 6px; +} + +td.navtabHL a, td.navtabHL a:visited { + color: #fff; + text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +} + +a.navtab { + font-weight: bold; +} + +div.qindex{ + text-align: center; + width: 100%; + line-height: 140%; + font-size: 130%; + color: #A0A0A0; +} + +dt.alphachar{ + font-size: 180%; + font-weight: bold; +} + +.alphachar a{ + color: black; +} + +.alphachar a:hover, .alphachar a:visited{ + text-decoration: none; +} + +.classindex dl { + padding: 25px; + column-count:1 +} + +.classindex dd { + display:inline-block; + margin-left: 50px; + width: 90%; + line-height: 1.15em; +} + +.classindex dl.odd { + background-color: #F8F9FC; +} + +@media(min-width: 1120px) { + .classindex dl { + column-count:2 + } +} + +@media(min-width: 1320px) { + .classindex dl { + column-count:3 + } +} + + +/* @group Link Styling */ + +a { + color: #3D578C; + font-weight: normal; + text-decoration: none; +} + +.contents a:visited { + color: #4665A2; +} + +a:hover { + text-decoration: underline; +} + +.contents a.qindexHL:visited { + color: #FFFFFF; +} + +a.el { + font-weight: bold; +} + +a.elRef { +} + +a.code, a.code:visited, a.line, a.line:visited { + color: #4665A2; +} + +a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited { + color: #4665A2; +} + +/* @end */ + +dl.el { + margin-left: -1cm; +} + +ul { + overflow: hidden; /*Fixed: list item bullets overlap floating elements*/ +} + +#side-nav ul { + overflow: visible; /* reset ul rule for scroll bar in GENERATE_TREEVIEW window */ +} + +#main-nav ul { + overflow: visible; /* reset ul rule for the navigation bar drop down lists */ +} + +.fragment { + text-align: left; + direction: ltr; + overflow-x: auto; /*Fixed: fragment lines overlap floating elements*/ + overflow-y: hidden; +} + +pre.fragment { + border: 1px solid #C4CFE5; + background-color: #FBFCFD; + padding: 4px 6px; + margin: 4px 8px 4px 2px; + overflow: auto; + word-wrap: break-word; + font-size: 9pt; + line-height: 125%; + font-family: monospace, fixed; + font-size: 105%; +} + +div.fragment { + padding: 0 0 1px 0; /*Fixed: last line underline overlap border*/ + margin: 4px 8px 4px 2px; + background-color: #FBFCFD; + border: 1px solid #C4CFE5; +} + +div.line { + font-family: monospace, fixed; + font-size: 13px; + min-height: 13px; + line-height: 1.0; + text-wrap: unrestricted; + white-space: -moz-pre-wrap; /* Moz */ + white-space: -pre-wrap; /* Opera 4-6 */ + white-space: -o-pre-wrap; /* Opera 7 */ + white-space: pre-wrap; /* CSS3 */ + word-wrap: break-word; /* IE 5.5+ */ + text-indent: -53px; + padding-left: 53px; + padding-bottom: 0px; + margin: 0px; + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +div.line:after { + content:"\000A"; + white-space: pre; +} + +div.line.glow { + background-color: cyan; + box-shadow: 0 0 10px cyan; +} + + +span.lineno { + padding-right: 4px; + text-align: right; + border-right: 2px solid #0F0; + background-color: #E8E8E8; + white-space: pre; +} +span.lineno a { + background-color: #D8D8D8; +} + +span.lineno a:hover { + background-color: #C8C8C8; +} + +.lineno { + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +div.ah, span.ah { + background-color: black; + font-weight: bold; + color: #FFFFFF; + margin-bottom: 3px; + margin-top: 3px; + padding: 0.2em; + border: solid thin #333; + border-radius: 0.5em; + -webkit-border-radius: .5em; + -moz-border-radius: .5em; + box-shadow: 2px 2px 3px #999; + -webkit-box-shadow: 2px 2px 3px #999; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444)); + background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000 110%); +} + +div.classindex ul { + list-style: none; + padding-left: 0; +} + +div.classindex span.ai { + display: inline-block; +} + +div.groupHeader { + margin-left: 16px; + margin-top: 12px; + font-weight: bold; +} + +div.groupText { + margin-left: 16px; + font-style: italic; +} + +body { + background-color: white; + color: black; + margin: 0; +} + +div.contents { + margin-top: 10px; + margin-left: 12px; + margin-right: 8px; +} + +td.indexkey { + background-color: #EBEFF6; + font-weight: bold; + border: 1px solid #C4CFE5; + margin: 2px 0px 2px 0; + padding: 2px 10px; + white-space: nowrap; + vertical-align: top; +} + +td.indexvalue { + background-color: #EBEFF6; + border: 1px solid #C4CFE5; + padding: 2px 10px; + margin: 2px 0px; +} + +tr.memlist { + background-color: #EEF1F7; +} + +p.formulaDsp { + text-align: center; +} + +img.formulaDsp { + +} + +img.formulaInl, img.inline { + vertical-align: middle; +} + +div.center { + text-align: center; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; +} + +div.center img { + border: 0px; +} + +address.footer { + text-align: right; + padding-right: 12px; +} + +img.footer { + border: 0px; + vertical-align: middle; +} + +/* @group Code Colorization */ + +span.keyword { + color: #008000 +} + +span.keywordtype { + color: #604020 +} + +span.keywordflow { + color: #e08000 +} + +span.comment { + color: #800000 +} + +span.preprocessor { + color: #806020 +} + +span.stringliteral { + color: #002080 +} + +span.charliteral { + color: #008080 +} + +span.vhdldigit { + color: #ff00ff +} + +span.vhdlchar { + color: #000000 +} + +span.vhdlkeyword { + color: #700070 +} + +span.vhdllogic { + color: #ff0000 +} + +blockquote { + background-color: #F7F8FB; + border-left: 2px solid #9CAFD4; + margin: 0 24px 0 4px; + padding: 0 12px 0 16px; +} + +blockquote.DocNodeRTL { + border-left: 0; + border-right: 2px solid #9CAFD4; + margin: 0 4px 0 24px; + padding: 0 16px 0 12px; +} + +/* @end */ + +/* +.search { + color: #003399; + font-weight: bold; +} + +form.search { + margin-bottom: 0px; + margin-top: 0px; +} + +input.search { + font-size: 75%; + color: #000080; + font-weight: normal; + background-color: #e8eef2; +} +*/ + +td.tiny { + font-size: 75%; +} + +.dirtab { + padding: 4px; + border-collapse: collapse; + border: 1px solid #A3B4D7; +} + +th.dirtab { + background: #EBEFF6; + font-weight: bold; +} + +hr { + height: 0px; + border: none; + border-top: 1px solid #4A6AAA; +} + +hr.footer { + height: 1px; +} + +/* @group Member Descriptions */ + +table.memberdecls { + border-spacing: 0px; + padding: 0px; +} + +.memberdecls td, .fieldtable tr { + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +.memberdecls td.glow, .fieldtable tr.glow { + background-color: cyan; + box-shadow: 0 0 15px cyan; +} + +.mdescLeft, .mdescRight, +.memItemLeft, .memItemRight, +.memTemplItemLeft, .memTemplItemRight, .memTemplParams { + background-color: #F9FAFC; + border: none; + margin: 4px; + padding: 1px 0 0 8px; +} + +.mdescLeft, .mdescRight { + padding: 0px 8px 4px 8px; + color: #555; +} + +.memSeparator { + border-bottom: 1px solid #DEE4F0; + line-height: 1px; + margin: 0px; + padding: 0px; +} + +.memItemLeft, .memTemplItemLeft { + white-space: nowrap; +} + +.memItemRight, .memTemplItemRight { + width: 100%; +} + +.memTemplParams { + color: #4665A2; + white-space: nowrap; + font-size: 80%; +} + +/* @end */ + +/* @group Member Details */ + +/* Styles for detailed member documentation */ + +.memtitle { + padding: 8px; + border-top: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + border-top-right-radius: 4px; + border-top-left-radius: 4px; + margin-bottom: -1px; + background-image: url('nav_f.png'); + background-repeat: repeat-x; + background-color: #E2E8F2; + line-height: 1.25; + font-weight: 300; + float:left; +} + +.permalink +{ + font-size: 65%; + display: inline-block; + vertical-align: middle; +} + +.memtemplate { + font-size: 80%; + color: #4665A2; + font-weight: normal; + margin-left: 9px; +} + +.memnav { + background-color: #EBEFF6; + border: 1px solid #A3B4D7; + text-align: center; + margin: 2px; + margin-right: 15px; + padding: 2px; +} + +.mempage { + width: 100%; +} + +.memitem { + padding: 0; + margin-bottom: 10px; + margin-right: 5px; + -webkit-transition: box-shadow 0.5s linear; + -moz-transition: box-shadow 0.5s linear; + -ms-transition: box-shadow 0.5s linear; + -o-transition: box-shadow 0.5s linear; + transition: box-shadow 0.5s linear; + display: table !important; + width: 100%; +} + +.memitem.glow { + box-shadow: 0 0 15px cyan; +} + +.memname { + font-weight: 400; + margin-left: 6px; +} + +.memname td { + vertical-align: bottom; +} + +.memproto, dl.reflist dt { + border-top: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 6px 0px 6px 0px; + color: #253555; + font-weight: bold; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + background-color: #DFE5F1; + /* opera specific markup */ + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + border-top-right-radius: 4px; + /* firefox specific markup */ + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + -moz-border-radius-topright: 4px; + /* webkit specific markup */ + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + -webkit-border-top-right-radius: 4px; + +} + +.overload { + font-family: "courier new",courier,monospace; + font-size: 65%; +} + +.memdoc, dl.reflist dd { + border-bottom: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 6px 10px 2px 10px; + background-color: #FBFCFD; + border-top-width: 0; + background-image:url('nav_g.png'); + background-repeat:repeat-x; + background-color: #FFFFFF; + /* opera specific markup */ + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + /* firefox specific markup */ + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-bottomright: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + /* webkit specific markup */ + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +dl.reflist dt { + padding: 5px; +} + +dl.reflist dd { + margin: 0px 0px 10px 0px; + padding: 5px; +} + +.paramkey { + text-align: right; +} + +.paramtype { + white-space: nowrap; +} + +.paramname { + color: #602020; + white-space: nowrap; +} +.paramname em { + font-style: normal; +} +.paramname code { + line-height: 14px; +} + +.params, .retval, .exception, .tparams { + margin-left: 0px; + padding-left: 0px; +} + +.params .paramname, .retval .paramname, .tparams .paramname, .exception .paramname { + font-weight: bold; + vertical-align: top; +} + +.params .paramtype, .tparams .paramtype { + font-style: italic; + vertical-align: top; +} + +.params .paramdir, .tparams .paramdir { + font-family: "courier new",courier,monospace; + vertical-align: top; +} + +table.mlabels { + border-spacing: 0px; +} + +td.mlabels-left { + width: 100%; + padding: 0px; +} + +td.mlabels-right { + vertical-align: bottom; + padding: 0px; + white-space: nowrap; +} + +span.mlabels { + margin-left: 8px; +} + +span.mlabel { + background-color: #728DC1; + border-top:1px solid #5373B4; + border-left:1px solid #5373B4; + border-right:1px solid #C4CFE5; + border-bottom:1px solid #C4CFE5; + text-shadow: none; + color: white; + margin-right: 4px; + padding: 2px 3px; + border-radius: 3px; + font-size: 7pt; + white-space: nowrap; + vertical-align: middle; +} + + + +/* @end */ + +/* these are for tree view inside a (index) page */ + +div.directory { + margin: 10px 0px; + border-top: 1px solid #9CAFD4; + border-bottom: 1px solid #9CAFD4; + width: 100%; +} + +.directory table { + border-collapse:collapse; +} + +.directory td { + margin: 0px; + padding: 0px; + vertical-align: top; +} + +.directory td.entry { + white-space: nowrap; + padding-right: 6px; + padding-top: 3px; +} + +.directory td.entry a { + outline:none; +} + +.directory td.entry a img { + border: none; +} + +.directory td.desc { + width: 100%; + padding-left: 6px; + padding-right: 6px; + padding-top: 3px; + border-left: 1px solid rgba(0,0,0,0.05); +} + +.directory tr.even { + padding-left: 6px; + background-color: #F7F8FB; +} + +.directory img { + vertical-align: -30%; +} + +.directory .levels { + white-space: nowrap; + width: 100%; + text-align: right; + font-size: 9pt; +} + +.directory .levels span { + cursor: pointer; + padding-left: 2px; + padding-right: 2px; + color: #3D578C; +} + +.arrow { + color: #9CAFD4; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: pointer; + font-size: 80%; + display: inline-block; + width: 16px; + height: 22px; +} + +.icon { + font-family: Arial, Helvetica; + font-weight: bold; + font-size: 12px; + height: 14px; + width: 16px; + display: inline-block; + background-color: #728DC1; + color: white; + text-align: center; + border-radius: 4px; + margin-left: 2px; + margin-right: 2px; +} + +.icona { + width: 24px; + height: 22px; + display: inline-block; +} + +.iconfopen { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('folderopen.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.iconfclosed { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('folderclosed.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.icondoc { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('doc.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +table.directory { + font: 400 14px Roboto,sans-serif; +} + +/* @end */ + +div.dynheader { + margin-top: 8px; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +address { + font-style: normal; + color: #2A3D61; +} + +table.doxtable caption { + caption-side: top; +} + +table.doxtable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.doxtable td, table.doxtable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.doxtable th { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +table.fieldtable { + /*width: 100%;*/ + margin-bottom: 10px; + border: 1px solid #A8B8D9; + border-spacing: 0px; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + -webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); + box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); +} + +.fieldtable td, .fieldtable th { + padding: 3px 7px 2px; +} + +.fieldtable td.fieldtype, .fieldtable td.fieldname { + white-space: nowrap; + border-right: 1px solid #A8B8D9; + border-bottom: 1px solid #A8B8D9; + vertical-align: top; +} + +.fieldtable td.fieldname { + padding-top: 3px; +} + +.fieldtable td.fielddoc { + border-bottom: 1px solid #A8B8D9; + /*width: 100%;*/ +} + +.fieldtable td.fielddoc p:first-child { + margin-top: 0px; +} + +.fieldtable td.fielddoc p:last-child { + margin-bottom: 2px; +} + +.fieldtable tr:last-child td { + border-bottom: none; +} + +.fieldtable th { + background-image:url('nav_f.png'); + background-repeat:repeat-x; + background-color: #E2E8F2; + font-size: 90%; + color: #253555; + padding-bottom: 4px; + padding-top: 5px; + text-align:left; + font-weight: 400; + -moz-border-radius-topleft: 4px; + -moz-border-radius-topright: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom: 1px solid #A8B8D9; +} + + +.tabsearch { + top: 0px; + left: 10px; + height: 36px; + background-image: url('tab_b.png'); + z-index: 101; + overflow: hidden; + font-size: 13px; +} + +.navpath ul +{ + font-size: 11px; + background-image:url('tab_b.png'); + background-repeat:repeat-x; + background-position: 0 -5px; + height:30px; + line-height:30px; + color:#8AA0CC; + border:solid 1px #C2CDE4; + overflow:hidden; + margin:0px; + padding:0px; +} + +.navpath li +{ + list-style-type:none; + float:left; + padding-left:10px; + padding-right:15px; + background-image:url('bc_s.png'); + background-repeat:no-repeat; + background-position:right; + color:#364D7C; +} + +.navpath li.navelem a +{ + height:32px; + display:block; + text-decoration: none; + outline: none; + color: #283A5D; + font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + text-decoration: none; +} + +.navpath li.navelem a:hover +{ + color:#6884BD; +} + +.navpath li.footer +{ + list-style-type:none; + float:right; + padding-left:10px; + padding-right:15px; + background-image:none; + background-repeat:no-repeat; + background-position:right; + color:#364D7C; + font-size: 8pt; +} + + +div.summary +{ + float: right; + font-size: 8pt; + padding-right: 5px; + width: 50%; + text-align: right; +} + +div.summary a +{ + white-space: nowrap; +} + +table.classindex +{ + margin: 10px; + white-space: nowrap; + margin-left: 3%; + margin-right: 3%; + width: 94%; + border: 0; + border-spacing: 0; + padding: 0; +} + +div.ingroups +{ + font-size: 8pt; + width: 50%; + text-align: left; +} + +div.ingroups a +{ + white-space: nowrap; +} + +div.header +{ + background-image:url('nav_h.png'); + background-repeat:repeat-x; + background-color: #F9FAFC; + margin: 0px; + border-bottom: 1px solid #C4CFE5; +} + +div.headertitle +{ + padding: 5px 5px 5px 10px; +} + +.PageDocRTL-title div.headertitle { + text-align: right; + direction: rtl; +} + +dl { + padding: 0 0 0 0; +} + +/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug, dl.examples */ +dl.section { + margin-left: 0px; + padding-left: 0px; +} + +dl.section.DocNodeRTL { + margin-right: 0px; + padding-right: 0px; +} + +dl.note { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #D0C000; +} + +dl.note.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #D0C000; +} + +dl.warning, dl.attention { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #FF0000; +} + +dl.warning.DocNodeRTL, dl.attention.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #FF0000; +} + +dl.pre, dl.post, dl.invariant { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #00D000; +} + +dl.pre.DocNodeRTL, dl.post.DocNodeRTL, dl.invariant.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #00D000; +} + +dl.deprecated { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #505050; +} + +dl.deprecated.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #505050; +} + +dl.todo { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #00C0E0; +} + +dl.todo.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #00C0E0; +} + +dl.test { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #3030E0; +} + +dl.test.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #3030E0; +} + +dl.bug { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #C08050; +} + +dl.bug.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #C08050; +} + +dl.section dd { + margin-bottom: 6px; +} + + +#projectlogo +{ + text-align: center; + vertical-align: bottom; + border-collapse: separate; +} + +#projectlogo img +{ + border: 0px none; +} + +#projectalign +{ + vertical-align: middle; +} + +#projectname +{ + font: 300% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 2px 0px; +} + +#projectbrief +{ + font: 120% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#projectnumber +{ + font: 50% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#titlearea +{ + padding: 0px; + margin: 0px; + width: 100%; + border-bottom: 1px solid #5373B4; +} + +.image +{ + text-align: center; +} + +.dotgraph +{ + text-align: center; +} + +.mscgraph +{ + text-align: center; +} + +.plantumlgraph +{ + text-align: center; +} + +.diagraph +{ + text-align: center; +} + +.caption +{ + font-weight: bold; +} + +div.zoom +{ + border: 1px solid #90A5CE; +} + +dl.citelist { + margin-bottom:50px; +} + +dl.citelist dt { + color:#334975; + float:left; + font-weight:bold; + margin-right:10px; + padding:5px; + text-align:right; + width:52px; +} + +dl.citelist dd { + margin:2px 0 2px 72px; + padding:5px 0; +} + +div.toc { + padding: 14px 25px; + background-color: #F4F6FA; + border: 1px solid #D8DFEE; + border-radius: 7px 7px 7px 7px; + float: right; + height: auto; + margin: 0 8px 10px 10px; + width: 200px; +} + +.PageDocRTL-title div.toc { + float: left !important; + text-align: right; +} + +div.toc li { + background: url("bdwn.png") no-repeat scroll 0 5px transparent; + font: 10px/1.2 Verdana,DejaVu Sans,Geneva,sans-serif; + margin-top: 5px; + padding-left: 10px; + padding-top: 2px; +} + +.PageDocRTL-title div.toc li { + background-position-x: right !important; + padding-left: 0 !important; + padding-right: 10px; +} + +div.toc h3 { + font: bold 12px/1.2 Arial,FreeSans,sans-serif; + color: #4665A2; + border-bottom: 0 none; + margin: 0; +} + +div.toc ul { + list-style: none outside none; + border: medium none; + padding: 0px; +} + +div.toc li.level1 { + margin-left: 0px; +} + +div.toc li.level2 { + margin-left: 15px; +} + +div.toc li.level3 { + margin-left: 30px; +} + +div.toc li.level4 { + margin-left: 45px; +} + +span.emoji { + /* font family used at the site: https://unicode.org/emoji/charts/full-emoji-list.html + * font-family: "Noto Color Emoji", "Apple Color Emoji", "Segoe UI Emoji", Times, Symbola, Aegyptus, Code2000, Code2001, Code2002, Musica, serif, LastResort; + */ +} + +.PageDocRTL-title div.toc li.level1 { + margin-left: 0 !important; + margin-right: 0; +} + +.PageDocRTL-title div.toc li.level2 { + margin-left: 0 !important; + margin-right: 15px; +} + +.PageDocRTL-title div.toc li.level3 { + margin-left: 0 !important; + margin-right: 30px; +} + +.PageDocRTL-title div.toc li.level4 { + margin-left: 0 !important; + margin-right: 45px; +} + +.inherit_header { + font-weight: bold; + color: gray; + cursor: pointer; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.inherit_header td { + padding: 6px 0px 2px 5px; +} + +.inherit { + display: none; +} + +tr.heading h2 { + margin-top: 12px; + margin-bottom: 4px; +} + +/* tooltip related style info */ + +.ttc { + position: absolute; + display: none; +} + +#powerTip { + cursor: default; + white-space: nowrap; + background-color: white; + border: 1px solid gray; + border-radius: 4px 4px 4px 4px; + box-shadow: 1px 1px 7px gray; + display: none; + font-size: smaller; + max-width: 80%; + opacity: 0.9; + padding: 1ex 1em 1em; + position: absolute; + z-index: 2147483647; +} + +#powerTip div.ttdoc { + color: grey; + font-style: italic; +} + +#powerTip div.ttname a { + font-weight: bold; +} + +#powerTip div.ttname { + font-weight: bold; +} + +#powerTip div.ttdeci { + color: #006318; +} + +#powerTip div { + margin: 0px; + padding: 0px; + font: 12px/16px Roboto,sans-serif; +} + +#powerTip:before, #powerTip:after { + content: ""; + position: absolute; + margin: 0px; +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.s:after, #powerTip.s:before, +#powerTip.w:after, #powerTip.w:before, +#powerTip.e:after, #powerTip.e:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.nw:after, #powerTip.nw:before, +#powerTip.sw:after, #powerTip.sw:before { + border: solid transparent; + content: " "; + height: 0; + width: 0; + position: absolute; +} + +#powerTip.n:after, #powerTip.s:after, +#powerTip.w:after, #powerTip.e:after, +#powerTip.nw:after, #powerTip.ne:after, +#powerTip.sw:after, #powerTip.se:after { + border-color: rgba(255, 255, 255, 0); +} + +#powerTip.n:before, #powerTip.s:before, +#powerTip.w:before, #powerTip.e:before, +#powerTip.nw:before, #powerTip.ne:before, +#powerTip.sw:before, #powerTip.se:before { + border-color: rgba(128, 128, 128, 0); +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.nw:after, #powerTip.nw:before { + top: 100%; +} + +#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after { + border-top-color: #FFFFFF; + border-width: 10px; + margin: 0px -10px; +} +#powerTip.n:before { + border-top-color: #808080; + border-width: 11px; + margin: 0px -11px; +} +#powerTip.n:after, #powerTip.n:before { + left: 50%; +} + +#powerTip.nw:after, #powerTip.nw:before { + right: 14px; +} + +#powerTip.ne:after, #powerTip.ne:before { + left: 14px; +} + +#powerTip.s:after, #powerTip.s:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.sw:after, #powerTip.sw:before { + bottom: 100%; +} + +#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after { + border-bottom-color: #FFFFFF; + border-width: 10px; + margin: 0px -10px; +} + +#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before { + border-bottom-color: #808080; + border-width: 11px; + margin: 0px -11px; +} + +#powerTip.s:after, #powerTip.s:before { + left: 50%; +} + +#powerTip.sw:after, #powerTip.sw:before { + right: 14px; +} + +#powerTip.se:after, #powerTip.se:before { + left: 14px; +} + +#powerTip.e:after, #powerTip.e:before { + left: 100%; +} +#powerTip.e:after { + border-left-color: #FFFFFF; + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.e:before { + border-left-color: #808080; + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +#powerTip.w:after, #powerTip.w:before { + right: 100%; +} +#powerTip.w:after { + border-right-color: #FFFFFF; + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.w:before { + border-right-color: #808080; + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +@media print +{ + #top { display: none; } + #side-nav { display: none; } + #nav-path { display: none; } + body { overflow:visible; } + h1, h2, h3, h4, h5, h6 { page-break-after: avoid; } + .summary { display: none; } + .memitem { page-break-inside: avoid; } + #doc-content + { + margin-left:0 !important; + height:auto !important; + width:auto !important; + overflow:inherit; + display:inline; + } +} + +/* @group Markdown */ + +table.markdownTable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.markdownTable td, table.markdownTable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.markdownTable tr { +} + +th.markdownTableHeadLeft, th.markdownTableHeadRight, th.markdownTableHeadCenter, th.markdownTableHeadNone { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +th.markdownTableHeadLeft, td.markdownTableBodyLeft { + text-align: left +} + +th.markdownTableHeadRight, td.markdownTableBodyRight { + text-align: right +} + +th.markdownTableHeadCenter, td.markdownTableBodyCenter { + text-align: center +} + +.DocNodeRTL { + text-align: right; + direction: rtl; +} + +.DocNodeLTR { + text-align: left; + direction: ltr; +} + +table.DocNodeRTL { + width: auto; + margin-right: 0; + margin-left: auto; +} + +table.DocNodeLTR { + width: auto; + margin-right: auto; + margin-left: 0; +} + +tt, code, kbd, samp +{ + display: inline-block; + direction:ltr; +} +/* @end */ + +u { + text-decoration: underline; +} + diff --git a/doxygen.svg b/doxygen.svg new file mode 100644 index 0000000..d42dad5 --- /dev/null +++ b/doxygen.svg @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/dynsections.js b/dynsections.js new file mode 100644 index 0000000..3174bd7 --- /dev/null +++ b/dynsections.js @@ -0,0 +1,121 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function toggleVisibility(linkObj) +{ + var base = $(linkObj).attr('id'); + var summary = $('#'+base+'-summary'); + var content = $('#'+base+'-content'); + var trigger = $('#'+base+'-trigger'); + var src=$(trigger).attr('src'); + if (content.is(':visible')===true) { + content.hide(); + summary.show(); + $(linkObj).addClass('closed').removeClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); + } else { + content.show(); + summary.hide(); + $(linkObj).removeClass('closed').addClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); + } + return false; +} + +function updateStripes() +{ + $('table.directory tr'). + removeClass('even').filter(':visible:even').addClass('even'); +} + +function toggleLevel(level) +{ + $('table.directory tr').each(function() { + var l = this.id.split('_').length-1; + var i = $('#img'+this.id.substring(3)); + var a = $('#arr'+this.id.substring(3)); + if (l + + + + + + +LydiaSyft: src/cli/fairness.hpp Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
LydiaSyft +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
fairness.hpp
+
+
+
1 //
+
2 // Created by marcofavorito on 22/01/24.
+
3 //
+
4 
+
5 #ifndef LYDIASYFT_CLI_FAIRNESS_H
+
6 #define LYDIASYFT_CLI_FAIRNESS_H
+
7 
+
8 #include <CLI/CLI.hpp>
+
9 
+
10 
+
11 namespace Syft {
+
12 
+
13  class FairnessRunner : public BaseRunner {
+
14  private:
+
15  const std::string assumption_filename_;
+
16 
+
17  void do_fairness_synthesis_(const SymbolicStateDfa &dfa) const;
+
18 
+
19  public:
+
20  FairnessRunner(const std::shared_ptr<whitemech::lydia::parsers::ltlf::LTLfDriver>& driver,
+
21  const std::string &formula_file, const std::string &path_to_syfco,
+
22  const std::string &assumption_filename, bool print_strategy, bool print_times) : BaseRunner(
+
23  driver, formula_file, path_to_syfco, print_strategy, print_times), assumption_filename_(assumption_filename) {}
+
24 
+
25  void run() const;
+
26 
+
27  };
+
28 
+
29 }
+
30 
+
31 
+
32 #endif //LYDIASYFT_CLI_FAIRNESS_H
+
Definition: base.hpp:91
+
Definition: fairness.hpp:13
+
A DFA with symbolic states and transitions.
Definition: SymbolicStateDfa.h:18
+
+
+ + + + diff --git a/files.html b/files.html new file mode 100644 index 0000000..2704bbf --- /dev/null +++ b/files.html @@ -0,0 +1,143 @@ + + + + + + + +LydiaSyft: File List + + + + + + + + + + + + + +
+
+ + + + + + +
+
LydiaSyft +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
File List
+
+
+
Here is a list of all documented files with brief descriptions:
+
[detail level 12345]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
  src
  cli
 base.hpp
 fairness.hpp
 gr1.hpp
 maxset.hpp
 stability.hpp
 synthesis.hpp
  parser
 Parser.h
  synthesis
  header
  automata
 ExplicitStateDfa.h
 ExplicitStateDfaAdd.h
 SymbolicStateDfa.h
  game
 BuchiReachability.hpp
 coBuchiReachability.hpp
 coGR1Reachability.hpp
 DfaGameSynthesizer.h
 InputOutputPartition.h
 Quantification.h
 Reachability.hpp
 ReachabilityMaxSet.hpp
 Transducer.h
  synthesizer
 FairnessLtlfSynthesizer.h
 GR1LTLfSynthesizer.h
 LTLfMaxSetSynthesizer.h
 LTLfSynthesizer.h
 StabilityLtlfSynthesizer.h
 GR1.h
 OneStepRealizability.h
 OneStepUnrealizability.h
 Player.h
 Preprocessing.h
 Stopwatch.h
 Synthesizer.h
 VarMgr.h
  utils
 string_utilities.h
+
+
+
+ + + + diff --git a/files_dup.js b/files_dup.js new file mode 100644 index 0000000..c3b39c4 --- /dev/null +++ b/files_dup.js @@ -0,0 +1,4 @@ +var files_dup = +[ + [ "src", "dir_68267d1309a1af8e8297ef4c3efbcdba.html", "dir_68267d1309a1af8e8297ef4c3efbcdba" ] +]; \ No newline at end of file diff --git a/folderclosed.png b/folderclosed.png new file mode 100644 index 0000000..bb8ab35 Binary files /dev/null and b/folderclosed.png differ diff --git a/folderopen.png b/folderopen.png new file mode 100644 index 0000000..d6c7f67 Binary files /dev/null and b/folderopen.png differ diff --git a/functions.html b/functions.html new file mode 100644 index 0000000..5b6d5ec --- /dev/null +++ b/functions.html @@ -0,0 +1,472 @@ + + + + + + + +LydiaSyft: Class Members + + + + + + + + + + + + + +
+
+ + + + + + +
+
LydiaSyft +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- a -

+ + +

- b -

+ + +

- c -

+ + +

- d -

+ + +

- e -

+ + +

- f -

+ + +

- g -

+ + +

- i -

+ + +

- l -

+ + +

- m -

+ + +

- n -

+ + +

- o -

+ + +

- p -

+ + +

- q -

+ + +

- r -

+ + +

- s -

+ + +

- t -

+ + +

- v -

+
+
+ + + + diff --git a/functions_func.html b/functions_func.html new file mode 100644 index 0000000..4baf165 --- /dev/null +++ b/functions_func.html @@ -0,0 +1,444 @@ + + + + + + + +LydiaSyft: Class Members - Functions + + + + + + + + + + + + + +
+
+ + + + + + +
+
LydiaSyft +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+  + +

- a -

+ + +

- b -

+ + +

- c -

+ + +

- d -

+ + +

- e -

+ + +

- f -

+ + +

- g -

+ + +

- i -

+ + +

- l -

+ + +

- m -

+ + +

- n -

+ + +

- o -

+ + +

- p -

+ + +

- r -

+ + +

- s -

+ + +

- t -

+ + +

- v -

+
+
+ + + + diff --git a/functions_vars.html b/functions_vars.html new file mode 100644 index 0000000..f7dbc58 --- /dev/null +++ b/functions_vars.html @@ -0,0 +1,119 @@ + + + + + + + +LydiaSyft: Class Members - Variables + + + + + + + + + + + + + +
+
+ + + + + + +
+
LydiaSyft +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
+ + + + diff --git a/gr1_8hpp_source.html b/gr1_8hpp_source.html new file mode 100644 index 0000000..5769a76 --- /dev/null +++ b/gr1_8hpp_source.html @@ -0,0 +1,163 @@ + + + + + + + +LydiaSyft: src/cli/gr1.hpp Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
LydiaSyft +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
gr1.hpp
+
+
+
1 //
+
2 // Created by marcofavorito on 22/01/24.
+
3 //
+
4 
+
5 #ifndef LYDIASYFT_CLI_GR1_H
+
6 #define LYDIASYFT_CLI_GR1_H
+
7 
+
8 #include <CLI/CLI.hpp>
+
9 #include "synthesizer/GR1LTLfSynthesizer.h"
+
10 
+
11 
+
12 namespace Syft {
+
13 
+
14  std::string read_assumption_file_if_file_specified_(const std::optional<std::string> &filename);
+
15 
+
16  class GR1Runner : public BaseRunner {
+
17  private:
+
18  const std::string path_to_slugs_;
+
19  const std::string gr1_file_;
+
20  const std::optional<std::string> env_safety_file_;
+
21  const std::optional<std::string> agent_safety_file_;
+
22 
+
23  const whitemech::lydia::ltlf_ptr agent_safety_;
+
24  const whitemech::lydia::ltlf_ptr env_safety_;
+
25 
+
26  Syft::SymbolicStateDfa do_dfa_construction_with_message_(const whitemech::lydia::LTLfFormula &formula,
+
27  const std::shared_ptr<VarMgr> &var_mgr,
+
28  const std::string &msg) const;
+
29 
+
30  void do_gr1_synthesis_(const SymbolicStateDfa &dfa, const SymbolicStateDfa &dfa1,
+
31  const SymbolicStateDfa &dfa2) const;
+
32 
+
33  void handle_gr1_synthesis_result_(const GR1LTLfSynthesizer &synthesizer,
+
34  const SynthesisResult &result) const;
+
35 
+
36 
+
37  public:
+
38  GR1Runner(const std::shared_ptr<whitemech::lydia::parsers::ltlf::LTLfDriver> &driver,
+
39  const std::string &formula_file, const std::string &path_to_syfco, const std::string &path_to_slugs,
+
40  const std::string &gr1_file, const std::optional<std::string> &env_safety_file,
+
41  const std::optional<std::string> &agent_safety_file,
+
42  bool print_strategy, bool print_times) : BaseRunner(driver, formula_file, path_to_syfco,
+
43  print_strategy, print_times),
+
44  path_to_slugs_(path_to_slugs), gr1_file_(gr1_file),
+
45  env_safety_file_(env_safety_file),
+
46  agent_safety_file_(agent_safety_file),
+
47  agent_safety_(parse_formula(driver_,
+
48  read_assumption_file_if_file_specified_(
+
49  agent_safety_file_))),
+
50  env_safety_(parse_formula(driver_,
+
51  read_assumption_file_if_file_specified_(
+
52  env_safety_file_))) {}
+
53 
+
54  void run() const;
+
55  };
+
56 
+
57 }
+
58 
+
59 
+
60 #endif //LYDIASYFT_CLI_GR1_H
+
Definition: base.hpp:91
+
A single-strategy-synthesizer for an LTLf formula given as a symbolic-state DFA, considering environm...
Definition: GR1LTLfSynthesizer.h:24
+
Definition: gr1.hpp:16
+
A DFA with symbolic states and transitions.
Definition: SymbolicStateDfa.h:18
+
Definition: Synthesizer.h:16
+
+
+ + + + diff --git a/graph_legend.html b/graph_legend.html new file mode 100644 index 0000000..ee8573f --- /dev/null +++ b/graph_legend.html @@ -0,0 +1,157 @@ + + + + + + + +LydiaSyft: Graph Legend + + + + + + + + + + + + + +
+
+ + + + + + +
+
LydiaSyft +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
Graph Legend
+
+
+

This page explains how to interpret the graphs that are generated by doxygen.

+

Consider the following example:

/*! Invisible class because of truncation */
+
class Invisible { };
+
+
/*! Truncated class, inheritance relation is hidden */
+
class Truncated : public Invisible { };
+
+
/* Class not documented with doxygen comments */
+
class Undocumented { };
+
+
/*! Class that is inherited using public inheritance */
+
class PublicBase : public Truncated { };
+
+
/*! A template class */
+
template<class T> class Templ { };
+
+
/*! Class that is inherited using protected inheritance */
+
class ProtectedBase { };
+
+
/*! Class that is inherited using private inheritance */
+
class PrivateBase { };
+
+
/*! Class that is used by the Inherited class */
+
class Used { };
+
+
/*! Super class that inherits a number of other classes */
+
class Inherited : public PublicBase,
+
protected ProtectedBase,
+
private PrivateBase,
+
public Undocumented,
+
public Templ<int>
+
{
+
private:
+
Used *m_usedClass;
+
};
+

This will result in the following graph:

+

The boxes in the above graph have the following meaning:

+
    +
  • +A filled gray box represents the struct or class for which the graph is generated.
  • +
  • +A box with a black border denotes a documented struct or class.
  • +
  • +A box with a gray border denotes an undocumented struct or class.
  • +
  • +A box with a red border denotes a documented struct or class forwhich not all inheritance/containment relations are shown. A graph is truncated if it does not fit within the specified boundaries.
  • +
+

The arrows have the following meaning:

+
    +
  • +A dark blue arrow is used to visualize a public inheritance relation between two classes.
  • +
  • +A dark green arrow is used for protected inheritance.
  • +
  • +A dark red arrow is used for private inheritance.
  • +
  • +A purple dashed arrow is used if a class is contained or used by another class. The arrow is labelled with the variable(s) through which the pointed class or struct is accessible.
  • +
  • +A yellow dashed arrow denotes a relation between a template instance and the template class it was instantiated from. The arrow is labelled with the template parameters of the instance.
  • +
+
+
+ + + + diff --git a/graph_legend.md5 b/graph_legend.md5 new file mode 100644 index 0000000..8fcdccd --- /dev/null +++ b/graph_legend.md5 @@ -0,0 +1 @@ +f51bf6e9a10430aafef59831b08dcbfe \ No newline at end of file diff --git a/graph_legend.png b/graph_legend.png new file mode 100644 index 0000000..7e2cbcf Binary files /dev/null and b/graph_legend.png differ diff --git a/hierarchy.html b/hierarchy.html new file mode 100644 index 0000000..0f529ac --- /dev/null +++ b/hierarchy.html @@ -0,0 +1,146 @@ + + + + + + + +LydiaSyft: Class Hierarchy + + + + + + + + + + + + + +
+
+ + + + + + +
+
LydiaSyft +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
Class Hierarchy
+
+
+
+

Go to the graphical class hierarchy

+This inheritance list is sorted roughly, but not completely, alphabetically:
+
[detail level 123]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
 CSyft::BaseRunner
 CSyft::FairnessRunner
 CSyft::GR1Runner
 CSyft::MaxSetRunner
 CSyft::StabilityRunner
 CSyft::SynthesisRunner
 CSyft::coGR1ReachabilityA single-strategy-synthesizer for a Buchi-reachability game given as a symbolic-state DFA
 CSyft::ExplicitStateDfaAddA DFA with explicit states and symbolic transitions represented in ADDs
 CSyft::FairnessLtlfSynthesizerA single-strategy-synthesizer for an LTLf formula given as a symbolic-state DFA, considering environment simple Fairness assumption. The simple Fairness assumption is in the form of GF\alpha, where \alpha is a Boolean formula over environment variables
 CSyft::GR1
 CSyft::GR1LTLfSynthesizerA single-strategy-synthesizer for an LTLf formula given as a symbolic-state DFA, considering environment GR(1) assumption. Additionally, one can also add safety conditions to both the environment and the agent, utilizing LTLf formulas
 CSyft::InputOutputPartitionA partition of variables into input and output variables
 CSyft::LTLfMaxSetSynthesizerA maxset-synthesizer for a reachability game given as a symbolic-state DFA
 CSyft::LTLfSynthesizerA single-strategy-synthesizer for an LTLf formula given as a symbolic-state DFA
 CSyft::MaxSetSynthesisResult
 Cwhitemech::lydia::mona_dfa
 CSyft::ExplicitStateDfaA DFA with explicit states and symbolic transitions
 CSyft::OneStepSynthesisResult
 CSyft::ParserA parser for reading LTLf synthesis benchmarks in TLSF format
 CSyft::Printer
 CSyft::QuantificationAbstract class representing a quantification operation on BDDs
 CSyft::ExistsPerforms existential quantification
 CSyft::ExistsForallPerforms both universal and existential quantification
 CSyft::ForallPerforms universal quantification
 CSyft::ForallExistsPerforms both universal and existential quantification
 CSyft::NoQuantificationPerforms no quantification
 CSyft::StabilityLtlfSynthesizerA single-strategy-synthesizer for an LTLf formula given as a symbolic-state DFA, considering environment simple Stability assumption. The simple Stability assumption is in the form of FG\alpha, where \alpha is a Boolean formula over environment variables
 CSyft::StopwatchStopwatch for timing executions
 CSyft::SymbolicStateDfaA DFA with symbolic states and transitions
 CSyft::SynthesisResult
 CSyft::Synthesizer< Spec >Abstract class for synthesizers
 CSyft::Synthesizer< SymbolicStateDfa >
 CSyft::DfaGameSynthesizerA synthesizer for a game whose arena is a symbolic-state DFA
 CSyft::BuchiReachabilityA single-strategy-synthesizer for a Buchi-reachability game given as a symbolic-state DFA
 CSyft::ReachabilityA single-strategy-synthesizer for a reachability game given as a symbolic-state DFA
 CSyft::ReachabilityMaxSetA maxset-strategy-synthesizer for a reachability game given as a symbolic-state DFA
 CSyft::coBuchiReachabilityA single-strategy-synthesizer for a coBuchi-reachability game given as a symbolic-state DFA
 CSyft::TLSFArgs
 CSyft::TransducerA symbolic tranducer representing a winning strategy for a game
 CSyft::VarMgrA dictionary that maps variable names to indices and vice versa
 Cwhitemech::lydia::Visitor
 CSyft::SmtOneStepRealizabilityVisitor
 CSyft::SmtOneStepUnrealizabilityVisitor
+
+
+
+ + + + diff --git a/hierarchy.js b/hierarchy.js new file mode 100644 index 0000000..d2afcb5 --- /dev/null +++ b/hierarchy.js @@ -0,0 +1,52 @@ +var hierarchy = +[ + [ "Syft::BaseRunner", "classSyft_1_1BaseRunner.html", [ + [ "Syft::FairnessRunner", "classSyft_1_1FairnessRunner.html", null ], + [ "Syft::GR1Runner", "classSyft_1_1GR1Runner.html", null ], + [ "Syft::MaxSetRunner", "classSyft_1_1MaxSetRunner.html", null ], + [ "Syft::StabilityRunner", "classSyft_1_1StabilityRunner.html", null ], + [ "Syft::SynthesisRunner", "classSyft_1_1SynthesisRunner.html", null ] + ] ], + [ "Syft::coGR1Reachability", "classSyft_1_1coGR1Reachability.html", null ], + [ "Syft::ExplicitStateDfaAdd", "classSyft_1_1ExplicitStateDfaAdd.html", null ], + [ "Syft::FairnessLtlfSynthesizer", "classSyft_1_1FairnessLtlfSynthesizer.html", null ], + [ "Syft::GR1", "structSyft_1_1GR1.html", null ], + [ "Syft::GR1LTLfSynthesizer", "classSyft_1_1GR1LTLfSynthesizer.html", null ], + [ "Syft::InputOutputPartition", "classSyft_1_1InputOutputPartition.html", null ], + [ "Syft::LTLfMaxSetSynthesizer", "classSyft_1_1LTLfMaxSetSynthesizer.html", null ], + [ "Syft::LTLfSynthesizer", "classSyft_1_1LTLfSynthesizer.html", null ], + [ "Syft::MaxSetSynthesisResult", "structSyft_1_1MaxSetSynthesisResult.html", null ], + [ "whitemech::lydia::mona_dfa", null, [ + [ "Syft::ExplicitStateDfa", "classSyft_1_1ExplicitStateDfa.html", null ] + ] ], + [ "Syft::OneStepSynthesisResult", "structSyft_1_1OneStepSynthesisResult.html", null ], + [ "Syft::Parser", "classSyft_1_1Parser.html", null ], + [ "Syft::Printer", "classSyft_1_1Printer.html", null ], + [ "Syft::Quantification", "classSyft_1_1Quantification.html", [ + [ "Syft::Exists", "classSyft_1_1Exists.html", null ], + [ "Syft::ExistsForall", "classSyft_1_1ExistsForall.html", null ], + [ "Syft::Forall", "classSyft_1_1Forall.html", null ], + [ "Syft::ForallExists", "classSyft_1_1ForallExists.html", null ], + [ "Syft::NoQuantification", "classSyft_1_1NoQuantification.html", null ] + ] ], + [ "Syft::StabilityLtlfSynthesizer", "classSyft_1_1StabilityLtlfSynthesizer.html", null ], + [ "Syft::Stopwatch", "classSyft_1_1Stopwatch.html", null ], + [ "Syft::SymbolicStateDfa", "classSyft_1_1SymbolicStateDfa.html", null ], + [ "Syft::SynthesisResult", "structSyft_1_1SynthesisResult.html", null ], + [ "Syft::Synthesizer< Spec >", "classSyft_1_1Synthesizer.html", null ], + [ "Syft::Synthesizer< SymbolicStateDfa >", "classSyft_1_1Synthesizer.html", [ + [ "Syft::DfaGameSynthesizer", "classSyft_1_1DfaGameSynthesizer.html", [ + [ "Syft::BuchiReachability", "classSyft_1_1BuchiReachability.html", null ], + [ "Syft::Reachability", "classSyft_1_1Reachability.html", null ], + [ "Syft::ReachabilityMaxSet", "classSyft_1_1ReachabilityMaxSet.html", null ], + [ "Syft::coBuchiReachability", "classSyft_1_1coBuchiReachability.html", null ] + ] ] + ] ], + [ "Syft::TLSFArgs", "structSyft_1_1TLSFArgs.html", null ], + [ "Syft::Transducer", "classSyft_1_1Transducer.html", null ], + [ "Syft::VarMgr", "classSyft_1_1VarMgr.html", null ], + [ "whitemech::lydia::Visitor", null, [ + [ "Syft::SmtOneStepRealizabilityVisitor", "classSyft_1_1SmtOneStepRealizabilityVisitor.html", null ], + [ "Syft::SmtOneStepUnrealizabilityVisitor", "classSyft_1_1SmtOneStepUnrealizabilityVisitor.html", null ] + ] ] +]; \ No newline at end of file diff --git a/index.html b/index.html new file mode 100644 index 0000000..cf927e3 --- /dev/null +++ b/index.html @@ -0,0 +1,212 @@ + + + + + + + +LydiaSyft: LydiaSyft: A Compositional Symbolic Synthesis Framework for LTLf Specification + + + + + + + + + + + + + +
+
+ + + + + + +
+
LydiaSyft +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
LydiaSyft: A Compositional Symbolic Synthesis Framework for LTLf Specification
+
+
+

+

+Compilation Instructions using CMake

+

+System-wide dependencies

+

We assume the software will be built on a Ubuntu 22.04 machine.

+

First, install the following system-wide dependencies:

+
sudo apt install -y \
+
automake \
+
cmake \
+
gcc \
+
g++ \
+
libtool \
+
wget \
+
unzip
+

+Install CUDD

+

0.1 Make sure CUDD is installed. CUDD can be found at:

https://github.com/KavrakiLab/cudd.git
+

0.2 Install CUDD:

./configure --enable-silent-rules --enable-obj --enable-dddmp --prefix=[install location]
+sudo make install
+
+If you get an error about aclocal, this might be due to either
+a. Not having automake:
+    sudo apt-get install automake
+b. Needing to reconfigure, do this before configuring:
+    autoreconf -i
+

+Install FLEX, BISON

+

0.3 Install flex and bison:

sudo apt-get install flex bison
+

+Install LYDIA

+

The tool requires the installation of Lydia, which will be triggered by the CMake configuration.

+

However, if you want to install Lydia manually, you can co into submodules/lydia and follow the installation instructions in the README.md.

+

+Install Z3

+

By default, the CMake configuration will fetch z3 automatically from the GitHub repository. In order to disable this behaviour, you can configure the project by setting -DZ3_FETCH=OFF.

+

In that case, you have to have the library installed on your system. To link the static library of z3, you have to install z3 manually:

+
wget https://github.com/Z3Prover/z3/releases/download/z3-4.8.12/z3-4.8.12-x64-glibc-2.31.zip
+
unzip z3-4.8.12-x64-glibc-2.31.zip
+
cd z3-4.8.12-x64-glibc-2.31
+
cp bin/libz3.a /usr/local/lib
+
cp include/*.h /usr/local/include
+

+Graphviz

+

For the graphical features (automata and strategy visualization), graphviz need to be installed:

+
sudo apt install graphviz libgraphviz-dev
+

+Build LYDIASYFT

+
    +
  1. Make build folder so your directory is not flooded with build files:
  2. +
+
mkdir build && cd build
+
    +
  1. Run CMake to generate the makefile:
  2. +
+
cmake -DCMAKE_BUILD_TYPE=Release ..
+
    +
  1. Compile using the generated makefile:
  2. +
+
make -j$(nproc --ignore=1) LydiaSyft
+

4.1. For solving LTLf synthesis with GR(1) conditions, please install slugs following submodules/slugs/README.md

+
    +
  1. Compile and Run tests:
  2. +
+
make -j$(nproc --ignore=1) tests
+
./bin/tests
+

+Run LYDIASYFT

+

Usage:

+
LydiaSyft: A compositional synthesizer for Linear Temporal Logic on finite traces (LTLf)
+
Usage: ./cmake-build-debug/bin/LydiaSyft [OPTIONS] SUBCOMMAND
+
+
Options:
+
-h,--help Print this help message and exit
+
--help-all Expand all help
+
-p,--print-strategy Print out the synthesized strategy (default: false)
+
-t,--print-times Print out running times of each step (default: false)
+
+
Subcommands:
+
synthesis solve a classical LTLf synthesis problem
+
maxset solve LTLf synthesis with maximally permissive strategies
+
fairness solve LTLf synthesis with fairness assumptions
+
stability solve LTLf synthesis with stability assumptions
+
gr1 Solve LTLf synthesis with GR(1) conditions
+

To see the options of each subcommand, run:

+
LydiaSyft [SUBCOMMAND] --help
+

Examples (run commands from the root directory of the project):

+
    +
  • Classical synthesis:
  • +
+
./build/bin/LydiaSyft synthesis -f example/test.tlsf # UNREALIZABLE
+
./build/bin/LydiaSyft synthesis -f example/test1.tlsf # REALIZABLE
+
    +
  • Maxset synthesis:
  • +
+
./build/bin/LydiaSyft maxset -f example/test1.tlsf
+
    +
  • Fairness synthesis:
  • +
+
./build/bin/LydiaSyft fairness -f example/fair_stable_test.tlsf -a example/fair_stable_test_assumption.txt # REALIZABLE
+
    +
  • Stability synthesis:
  • +
+
./build/bin/LydiaSyft stability -f example/fair_stable_counter_test.tlsf -a example/fair_stable_test_assumption.txt # REALIZABLE
+
    +
  • GR(1) synthesis:
  • +
+
./build/bin/LydiaSyft gr1 -f example/GR1benchmarks/finding_nemo_agn_goal.tlsf -g example/GR1benchmarks/finding_nemo_env_gr1.txt -e example/GR1benchmarks/finding_nemo_env_safety.ltlf -a example/GR1benchmarks/finding_nemo_agn_safety.ltlf --slugs-path ./submodules/slugs/ # REALIZABLE
+

+Documentation

+

The documentation is built using Doxygen. First, install doxygen:

+
sudo apt install doxygen
+

Then:

+
doxygen Doxyfile
+
+
+
+ + + + diff --git a/inherit_graph_0.map b/inherit_graph_0.map new file mode 100644 index 0000000..0a1b8ca --- /dev/null +++ b/inherit_graph_0.map @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/inherit_graph_0.md5 b/inherit_graph_0.md5 new file mode 100644 index 0000000..82ec00c --- /dev/null +++ b/inherit_graph_0.md5 @@ -0,0 +1 @@ +a9226b136f729eeb5ef6ac1b83115c28 \ No newline at end of file diff --git a/inherit_graph_0.png b/inherit_graph_0.png new file mode 100644 index 0000000..4f64962 Binary files /dev/null and b/inherit_graph_0.png differ diff --git a/inherit_graph_1.map b/inherit_graph_1.map new file mode 100644 index 0000000..57ddab0 --- /dev/null +++ b/inherit_graph_1.map @@ -0,0 +1,3 @@ + + + diff --git a/inherit_graph_1.md5 b/inherit_graph_1.md5 new file mode 100644 index 0000000..ab58c99 --- /dev/null +++ b/inherit_graph_1.md5 @@ -0,0 +1 @@ +9b782fc17671922494012cc3768b4fa4 \ No newline at end of file diff --git a/inherit_graph_1.png b/inherit_graph_1.png new file mode 100644 index 0000000..f3ab2b3 Binary files /dev/null and b/inherit_graph_1.png differ diff --git a/inherit_graph_10.map b/inherit_graph_10.map new file mode 100644 index 0000000..445ff27 --- /dev/null +++ b/inherit_graph_10.map @@ -0,0 +1,3 @@ + + + diff --git a/inherit_graph_10.md5 b/inherit_graph_10.md5 new file mode 100644 index 0000000..4672110 --- /dev/null +++ b/inherit_graph_10.md5 @@ -0,0 +1 @@ +cffe9eb4d7852bd529ca26e5139f071d \ No newline at end of file diff --git a/inherit_graph_10.png b/inherit_graph_10.png new file mode 100644 index 0000000..22c71ca Binary files /dev/null and b/inherit_graph_10.png differ diff --git a/inherit_graph_11.map b/inherit_graph_11.map new file mode 100644 index 0000000..48a3cea --- /dev/null +++ b/inherit_graph_11.map @@ -0,0 +1,3 @@ + + + diff --git a/inherit_graph_11.md5 b/inherit_graph_11.md5 new file mode 100644 index 0000000..7d94fe1 --- /dev/null +++ b/inherit_graph_11.md5 @@ -0,0 +1 @@ +f30530b51bc7ec4c6809a1daf618e8bf \ No newline at end of file diff --git a/inherit_graph_11.png b/inherit_graph_11.png new file mode 100644 index 0000000..bbe4c0e Binary files /dev/null and b/inherit_graph_11.png differ diff --git a/inherit_graph_12.map b/inherit_graph_12.map new file mode 100644 index 0000000..6b59a77 --- /dev/null +++ b/inherit_graph_12.map @@ -0,0 +1,3 @@ + + + diff --git a/inherit_graph_12.md5 b/inherit_graph_12.md5 new file mode 100644 index 0000000..6e53040 --- /dev/null +++ b/inherit_graph_12.md5 @@ -0,0 +1 @@ +d21165ab35b96b923ea94597b617b1e9 \ No newline at end of file diff --git a/inherit_graph_12.png b/inherit_graph_12.png new file mode 100644 index 0000000..098e5d5 Binary files /dev/null and b/inherit_graph_12.png differ diff --git a/inherit_graph_13.map b/inherit_graph_13.map new file mode 100644 index 0000000..ac2547b --- /dev/null +++ b/inherit_graph_13.map @@ -0,0 +1,3 @@ + + + diff --git a/inherit_graph_13.md5 b/inherit_graph_13.md5 new file mode 100644 index 0000000..5cc9462 --- /dev/null +++ b/inherit_graph_13.md5 @@ -0,0 +1 @@ +c8d2d2c0c8f79afeb56fe5e099652fb7 \ No newline at end of file diff --git a/inherit_graph_13.png b/inherit_graph_13.png new file mode 100644 index 0000000..9cae024 Binary files /dev/null and b/inherit_graph_13.png differ diff --git a/inherit_graph_14.map b/inherit_graph_14.map new file mode 100644 index 0000000..5c37443 --- /dev/null +++ b/inherit_graph_14.map @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/inherit_graph_14.md5 b/inherit_graph_14.md5 new file mode 100644 index 0000000..c52c36c --- /dev/null +++ b/inherit_graph_14.md5 @@ -0,0 +1 @@ +52434cc499eb6d98538411ce4f80dc4a \ No newline at end of file diff --git a/inherit_graph_14.png b/inherit_graph_14.png new file mode 100644 index 0000000..3b081a5 Binary files /dev/null and b/inherit_graph_14.png differ diff --git a/inherit_graph_15.map b/inherit_graph_15.map new file mode 100644 index 0000000..d7b52dc --- /dev/null +++ b/inherit_graph_15.map @@ -0,0 +1,5 @@ + + + + + diff --git a/inherit_graph_15.md5 b/inherit_graph_15.md5 new file mode 100644 index 0000000..91e6d22 --- /dev/null +++ b/inherit_graph_15.md5 @@ -0,0 +1 @@ +8a8d89c033a2d82c18ce9a02e2a1c6f0 \ No newline at end of file diff --git a/inherit_graph_15.png b/inherit_graph_15.png new file mode 100644 index 0000000..1decf34 Binary files /dev/null and b/inherit_graph_15.png differ diff --git a/inherit_graph_16.map b/inherit_graph_16.map new file mode 100644 index 0000000..1e8f81d --- /dev/null +++ b/inherit_graph_16.map @@ -0,0 +1,3 @@ + + + diff --git a/inherit_graph_16.md5 b/inherit_graph_16.md5 new file mode 100644 index 0000000..e8cffe3 --- /dev/null +++ b/inherit_graph_16.md5 @@ -0,0 +1 @@ +e6d86f8bcc122f29c3f36ba571757b9e \ No newline at end of file diff --git a/inherit_graph_16.png b/inherit_graph_16.png new file mode 100644 index 0000000..a46cdf3 Binary files /dev/null and b/inherit_graph_16.png differ diff --git a/inherit_graph_17.map b/inherit_graph_17.map new file mode 100644 index 0000000..34cb85d --- /dev/null +++ b/inherit_graph_17.map @@ -0,0 +1,3 @@ + + + diff --git a/inherit_graph_17.md5 b/inherit_graph_17.md5 new file mode 100644 index 0000000..0d02fb7 --- /dev/null +++ b/inherit_graph_17.md5 @@ -0,0 +1 @@ +8aeb41ef7988c7622d5104eeb3b20ac5 \ No newline at end of file diff --git a/inherit_graph_17.png b/inherit_graph_17.png new file mode 100644 index 0000000..eb14003 Binary files /dev/null and b/inherit_graph_17.png differ diff --git a/inherit_graph_18.map b/inherit_graph_18.map new file mode 100644 index 0000000..819b168 --- /dev/null +++ b/inherit_graph_18.map @@ -0,0 +1,3 @@ + + + diff --git a/inherit_graph_18.md5 b/inherit_graph_18.md5 new file mode 100644 index 0000000..b72d848 --- /dev/null +++ b/inherit_graph_18.md5 @@ -0,0 +1 @@ +16f28d351e224b062beae66f80e985bc \ No newline at end of file diff --git a/inherit_graph_18.png b/inherit_graph_18.png new file mode 100644 index 0000000..43f453f Binary files /dev/null and b/inherit_graph_18.png differ diff --git a/inherit_graph_19.map b/inherit_graph_19.map new file mode 100644 index 0000000..784151c --- /dev/null +++ b/inherit_graph_19.map @@ -0,0 +1,3 @@ + + + diff --git a/inherit_graph_19.md5 b/inherit_graph_19.md5 new file mode 100644 index 0000000..cc8a294 --- /dev/null +++ b/inherit_graph_19.md5 @@ -0,0 +1 @@ +2ea4b7d6773e395c8b4966db582b524e \ No newline at end of file diff --git a/inherit_graph_19.png b/inherit_graph_19.png new file mode 100644 index 0000000..73a6dbe Binary files /dev/null and b/inherit_graph_19.png differ diff --git a/inherit_graph_2.map b/inherit_graph_2.map new file mode 100644 index 0000000..7f27ec5 --- /dev/null +++ b/inherit_graph_2.map @@ -0,0 +1,4 @@ + + + + diff --git a/inherit_graph_2.md5 b/inherit_graph_2.md5 new file mode 100644 index 0000000..55ffd0e --- /dev/null +++ b/inherit_graph_2.md5 @@ -0,0 +1 @@ +238c28a9f0165bbec78ef229884a8644 \ No newline at end of file diff --git a/inherit_graph_2.png b/inherit_graph_2.png new file mode 100644 index 0000000..23dc1cd Binary files /dev/null and b/inherit_graph_2.png differ diff --git a/inherit_graph_20.map b/inherit_graph_20.map new file mode 100644 index 0000000..fc0d344 --- /dev/null +++ b/inherit_graph_20.map @@ -0,0 +1,3 @@ + + + diff --git a/inherit_graph_20.md5 b/inherit_graph_20.md5 new file mode 100644 index 0000000..ea502ab --- /dev/null +++ b/inherit_graph_20.md5 @@ -0,0 +1 @@ +dbecaf9d9d6c02fb3aa0bdf594c0d7c6 \ No newline at end of file diff --git a/inherit_graph_20.png b/inherit_graph_20.png new file mode 100644 index 0000000..1750bab Binary files /dev/null and b/inherit_graph_20.png differ diff --git a/inherit_graph_21.map b/inherit_graph_21.map new file mode 100644 index 0000000..d2f156d --- /dev/null +++ b/inherit_graph_21.map @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/inherit_graph_21.md5 b/inherit_graph_21.md5 new file mode 100644 index 0000000..9a480af --- /dev/null +++ b/inherit_graph_21.md5 @@ -0,0 +1 @@ +9d0816fc8b77a75d8902eeb79d2d83b1 \ No newline at end of file diff --git a/inherit_graph_21.png b/inherit_graph_21.png new file mode 100644 index 0000000..014ca35 Binary files /dev/null and b/inherit_graph_21.png differ diff --git a/inherit_graph_22.map b/inherit_graph_22.map new file mode 100644 index 0000000..e362280 --- /dev/null +++ b/inherit_graph_22.map @@ -0,0 +1,3 @@ + + + diff --git a/inherit_graph_22.md5 b/inherit_graph_22.md5 new file mode 100644 index 0000000..9a0e5de --- /dev/null +++ b/inherit_graph_22.md5 @@ -0,0 +1 @@ +2e9dff2db98bcc09785a33f28286fa19 \ No newline at end of file diff --git a/inherit_graph_22.png b/inherit_graph_22.png new file mode 100644 index 0000000..f5bb53e Binary files /dev/null and b/inherit_graph_22.png differ diff --git a/inherit_graph_23.map b/inherit_graph_23.map new file mode 100644 index 0000000..d251b4b --- /dev/null +++ b/inherit_graph_23.map @@ -0,0 +1,3 @@ + + + diff --git a/inherit_graph_23.md5 b/inherit_graph_23.md5 new file mode 100644 index 0000000..0628d05 --- /dev/null +++ b/inherit_graph_23.md5 @@ -0,0 +1 @@ +626aa26486eeacd4420577468a4110d6 \ No newline at end of file diff --git a/inherit_graph_23.png b/inherit_graph_23.png new file mode 100644 index 0000000..754e140 Binary files /dev/null and b/inherit_graph_23.png differ diff --git a/inherit_graph_24.map b/inherit_graph_24.map new file mode 100644 index 0000000..c859343 --- /dev/null +++ b/inherit_graph_24.map @@ -0,0 +1,3 @@ + + + diff --git a/inherit_graph_24.md5 b/inherit_graph_24.md5 new file mode 100644 index 0000000..cca5ad1 --- /dev/null +++ b/inherit_graph_24.md5 @@ -0,0 +1 @@ +9e00510f1eee40d2952a142a26baa5c4 \ No newline at end of file diff --git a/inherit_graph_24.png b/inherit_graph_24.png new file mode 100644 index 0000000..2bd4abc Binary files /dev/null and b/inherit_graph_24.png differ diff --git a/inherit_graph_3.map b/inherit_graph_3.map new file mode 100644 index 0000000..97d76dd --- /dev/null +++ b/inherit_graph_3.map @@ -0,0 +1,3 @@ + + + diff --git a/inherit_graph_3.md5 b/inherit_graph_3.md5 new file mode 100644 index 0000000..1c091fd --- /dev/null +++ b/inherit_graph_3.md5 @@ -0,0 +1 @@ +5f583aff99e270fb492e82711328dd12 \ No newline at end of file diff --git a/inherit_graph_3.png b/inherit_graph_3.png new file mode 100644 index 0000000..19a3311 Binary files /dev/null and b/inherit_graph_3.png differ diff --git a/inherit_graph_4.map b/inherit_graph_4.map new file mode 100644 index 0000000..2832cef --- /dev/null +++ b/inherit_graph_4.map @@ -0,0 +1,3 @@ + + + diff --git a/inherit_graph_4.md5 b/inherit_graph_4.md5 new file mode 100644 index 0000000..839b254 --- /dev/null +++ b/inherit_graph_4.md5 @@ -0,0 +1 @@ +95f57030f9b2154749e4f21a60fe9f76 \ No newline at end of file diff --git a/inherit_graph_4.png b/inherit_graph_4.png new file mode 100644 index 0000000..d8c13ef Binary files /dev/null and b/inherit_graph_4.png differ diff --git a/inherit_graph_5.map b/inherit_graph_5.map new file mode 100644 index 0000000..de5bad5 --- /dev/null +++ b/inherit_graph_5.map @@ -0,0 +1,3 @@ + + + diff --git a/inherit_graph_5.md5 b/inherit_graph_5.md5 new file mode 100644 index 0000000..e8c4e59 --- /dev/null +++ b/inherit_graph_5.md5 @@ -0,0 +1 @@ +71bcdfd1bedf4e7e8bc2910672e08d69 \ No newline at end of file diff --git a/inherit_graph_5.png b/inherit_graph_5.png new file mode 100644 index 0000000..792c41a Binary files /dev/null and b/inherit_graph_5.png differ diff --git a/inherit_graph_6.map b/inherit_graph_6.map new file mode 100644 index 0000000..8506110 --- /dev/null +++ b/inherit_graph_6.map @@ -0,0 +1,3 @@ + + + diff --git a/inherit_graph_6.md5 b/inherit_graph_6.md5 new file mode 100644 index 0000000..1dbd7f4 --- /dev/null +++ b/inherit_graph_6.md5 @@ -0,0 +1 @@ +345485afd6ca00f191f256f3b3f67040 \ No newline at end of file diff --git a/inherit_graph_6.png b/inherit_graph_6.png new file mode 100644 index 0000000..273d9a9 Binary files /dev/null and b/inherit_graph_6.png differ diff --git a/inherit_graph_7.map b/inherit_graph_7.map new file mode 100644 index 0000000..060388d --- /dev/null +++ b/inherit_graph_7.map @@ -0,0 +1,3 @@ + + + diff --git a/inherit_graph_7.md5 b/inherit_graph_7.md5 new file mode 100644 index 0000000..2ea695f --- /dev/null +++ b/inherit_graph_7.md5 @@ -0,0 +1 @@ +085b868c3612b7f91c6f2e65774b81a5 \ No newline at end of file diff --git a/inherit_graph_7.png b/inherit_graph_7.png new file mode 100644 index 0000000..f871141 Binary files /dev/null and b/inherit_graph_7.png differ diff --git a/inherit_graph_8.map b/inherit_graph_8.map new file mode 100644 index 0000000..08f2baa --- /dev/null +++ b/inherit_graph_8.map @@ -0,0 +1,3 @@ + + + diff --git a/inherit_graph_8.md5 b/inherit_graph_8.md5 new file mode 100644 index 0000000..945ac4c --- /dev/null +++ b/inherit_graph_8.md5 @@ -0,0 +1 @@ +d38546d45cb459489b007c19914531ec \ No newline at end of file diff --git a/inherit_graph_8.png b/inherit_graph_8.png new file mode 100644 index 0000000..b5fd8f9 Binary files /dev/null and b/inherit_graph_8.png differ diff --git a/inherit_graph_9.map b/inherit_graph_9.map new file mode 100644 index 0000000..bbb56b5 --- /dev/null +++ b/inherit_graph_9.map @@ -0,0 +1,3 @@ + + + diff --git a/inherit_graph_9.md5 b/inherit_graph_9.md5 new file mode 100644 index 0000000..b505794 --- /dev/null +++ b/inherit_graph_9.md5 @@ -0,0 +1 @@ +0c056ab6fc640b48095dd315f0d75b87 \ No newline at end of file diff --git a/inherit_graph_9.png b/inherit_graph_9.png new file mode 100644 index 0000000..7a768ed Binary files /dev/null and b/inherit_graph_9.png differ diff --git a/inherits.html b/inherits.html new file mode 100644 index 0000000..bdd3fa1 --- /dev/null +++ b/inherits.html @@ -0,0 +1,244 @@ + + + + + + + +LydiaSyft: Class Hierarchy + + + + + + + + + + + + + +
+
+ + + + + + +
+
LydiaSyft +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
Class Hierarchy
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ + + +
+ + + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + + + + + + +
+ + + + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + + + + + + +
+ + + +
+ + + +
+ + + +
+
+
+ + + + diff --git a/jquery.js b/jquery.js new file mode 100644 index 0000000..103c32d --- /dev/null +++ b/jquery.js @@ -0,0 +1,35 @@ +/*! jQuery v3.4.1 | (c) JS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],E=C.document,r=Object.getPrototypeOf,s=t.slice,g=t.concat,u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.4.1",k=function(e,t){return new k.fn.init(e,t)},p=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;function d(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp($),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+$),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),ne=function(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(m.childNodes),m.childNodes),t[m.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&((e?e.ownerDocument||e:m)!==C&&T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!A[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&U.test(t)){(s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=k),o=(l=h(t)).length;while(o--)l[o]="#"+s+" "+xe(l[o]);c=l.join(","),f=ee.test(t)&&ye(e.parentNode)||e}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){A(t,!0)}finally{s===k&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[k]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:m;return r!==C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),m!==C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=k,!C.getElementsByName||!C.getElementsByName(k).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+k+"-]").length||v.push("~="),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+k+"+*").length||v.push(".#.+[+~]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",$)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e===C||e.ownerDocument===m&&y(m,e)?-1:t===C||t.ownerDocument===m&&y(m,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===C?-1:t===C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]===m?-1:s[r]===m?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if((e.ownerDocument||e)!==C&&T(e),d.matchesSelector&&E&&!A[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){A(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=p[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&p(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?k.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?k.grep(e,function(e){return e===n!==r}):"string"!=typeof n?k.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(k.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||q,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:L.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof k?t[0]:t,k.merge(this,k.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),D.test(r[1])&&k.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(k):k.makeArray(e,this)}).prototype=k.fn,q=k(E);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}k.fn.extend({has:function(e){var t=k(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,""],thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?k.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;nx",y.noCloneChecked=!!me.cloneNode(!0).lastChild.defaultValue;var Te=/^key/,Ce=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ee=/^([^.]*)(?:\.(.+)|)/;function ke(){return!0}function Se(){return!1}function Ne(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function Ae(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Ae(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Se;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return k().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=k.guid++)),e.each(function(){k.event.add(this,t,i,r,n)})}function De(e,i,o){o?(Q.set(e,i,!1),k.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Q.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(k.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Q.set(this,i,r),t=o(this,i),this[i](),r!==(n=Q.get(this,i))||t?Q.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n.value}else r.length&&(Q.set(this,i,{value:k.event.trigger(k.extend(r[0],k.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Q.get(e,i)&&k.event.add(e,i,ke)}k.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.get(t);if(v){n.handler&&(n=(o=n).handler,i=o.selector),i&&k.find.matchesSelector(ie,i),n.guid||(n.guid=k.guid++),(u=v.events)||(u=v.events={}),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof k&&k.event.triggered!==e.type?k.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(R)||[""]).length;while(l--)d=g=(s=Ee.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=k.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=k.event.special[d]||{},c=k.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&k.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),k.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.hasData(e)&&Q.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(R)||[""]).length;while(l--)if(d=g=(s=Ee.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=k.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||k.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)k.event.remove(e,d+t[l],n,r,!0);k.isEmptyObject(u)&&Q.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=k.event.fix(e),u=new Array(arguments.length),l=(Q.get(this,"events")||{})[s.type]||[],c=k.event.special[s.type]||{};for(u[0]=s,t=1;t\x20\t\r\n\f]*)[^>]*)\/>/gi,qe=/\s*$/g;function Oe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&k(e).children("tbody")[0]||e}function Pe(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Re(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Me(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(Q.hasData(e)&&(o=Q.access(e),a=Q.set(t,o),l=o.events))for(i in delete a.handle,a.events={},l)for(n=0,r=l[i].length;n")},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=oe(e);if(!(y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||k.isXMLDoc(e)))for(a=ve(c),r=0,i=(o=ve(e)).length;r").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Vt,Gt=[],Yt=/(=)\?(?=&|$)|\?\?/;k.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Gt.pop()||k.expando+"_"+kt++;return this[e]=!0,e}}),k.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Yt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Yt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Yt,"$1"+r):!1!==e.jsonp&&(e.url+=(St.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||k.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?k(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Gt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Vt=E.implementation.createHTMLDocument("").body).innerHTML="
",2===Vt.childNodes.length),k.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=D.exec(e))?[t.createElement(i[1])]:(i=we([e],t,o),o&&o.length&&k(o).remove(),k.merge([],i.childNodes)));var r,i,o},k.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(k.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},k.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){k.fn[t]=function(e){return this.on(t,e)}}),k.expr.pseudos.animated=function(t){return k.grep(k.timers,function(e){return t===e.elem}).length},k.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=k.css(e,"position"),c=k(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=k.css(e,"top"),u=k.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,k.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},k.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){k.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===k.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===k.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=k(e).offset()).top+=k.css(e,"borderTopWidth",!0),i.left+=k.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-k.css(r,"marginTop",!0),left:t.left-i.left-k.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===k.css(e,"position"))e=e.offsetParent;return e||ie})}}),k.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;k.fn[t]=function(e){return _(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),k.each(["top","left"],function(e,n){k.cssHooks[n]=ze(y.pixelPosition,function(e,t){if(t)return t=_e(e,n),$e.test(t)?k(e).position()[n]+"px":t})}),k.each({Height:"height",Width:"width"},function(a,s){k.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){k.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return _(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?k.css(e,t,i):k.style(e,t,n,i)},s,n?e:void 0,n)}})}),k.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){k.fn[n]=function(e,t){return 0a;a++)for(i in o[a])n=o[a][i],o[a].hasOwnProperty(i)&&void 0!==n&&(e[i]=t.isPlainObject(n)?t.isPlainObject(e[i])?t.widget.extend({},e[i],n):t.widget.extend({},n):n);return e},t.widget.bridge=function(e,i){var n=i.prototype.widgetFullName||e;t.fn[e]=function(o){var a="string"==typeof o,r=s.call(arguments,1),h=this;return a?this.length||"instance"!==o?this.each(function(){var i,s=t.data(this,n);return"instance"===o?(h=s,!1):s?t.isFunction(s[o])&&"_"!==o.charAt(0)?(i=s[o].apply(s,r),i!==s&&void 0!==i?(h=i&&i.jquery?h.pushStack(i.get()):i,!1):void 0):t.error("no such method '"+o+"' for "+e+" widget instance"):t.error("cannot call methods on "+e+" prior to initialization; "+"attempted to call method '"+o+"'")}):h=void 0:(r.length&&(o=t.widget.extend.apply(null,[o].concat(r))),this.each(function(){var e=t.data(this,n);e?(e.option(o||{}),e._init&&e._init()):t.data(this,n,new i(o,this))})),h}},t.Widget=function(){},t.Widget._childConstructors=[],t.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"
",options:{classes:{},disabled:!1,create:null},_createWidget:function(e,s){s=t(s||this.defaultElement||this)[0],this.element=t(s),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=t(),this.hoverable=t(),this.focusable=t(),this.classesElementLookup={},s!==this&&(t.data(s,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===s&&this.destroy()}}),this.document=t(s.style?s.ownerDocument:s.document||s),this.window=t(this.document[0].defaultView||this.document[0].parentWindow)),this.options=t.widget.extend({},this.options,this._getCreateOptions(),e),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:t.noop,_create:t.noop,_init:t.noop,destroy:function(){var e=this;this._destroy(),t.each(this.classesElementLookup,function(t,i){e._removeClass(i,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:t.noop,widget:function(){return this.element},option:function(e,i){var s,n,o,a=e;if(0===arguments.length)return t.widget.extend({},this.options);if("string"==typeof e)if(a={},s=e.split("."),e=s.shift(),s.length){for(n=a[e]=t.widget.extend({},this.options[e]),o=0;s.length-1>o;o++)n[s[o]]=n[s[o]]||{},n=n[s[o]];if(e=s.pop(),1===arguments.length)return void 0===n[e]?null:n[e];n[e]=i}else{if(1===arguments.length)return void 0===this.options[e]?null:this.options[e];a[e]=i}return this._setOptions(a),this},_setOptions:function(t){var e;for(e in t)this._setOption(e,t[e]);return this},_setOption:function(t,e){return"classes"===t&&this._setOptionClasses(e),this.options[t]=e,"disabled"===t&&this._setOptionDisabled(e),this},_setOptionClasses:function(e){var i,s,n;for(i in e)n=this.classesElementLookup[i],e[i]!==this.options.classes[i]&&n&&n.length&&(s=t(n.get()),this._removeClass(n,i),s.addClass(this._classes({element:s,keys:i,classes:e,add:!0})))},_setOptionDisabled:function(t){this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,!!t),t&&(this._removeClass(this.hoverable,null,"ui-state-hover"),this._removeClass(this.focusable,null,"ui-state-focus"))},enable:function(){return this._setOptions({disabled:!1})},disable:function(){return this._setOptions({disabled:!0})},_classes:function(e){function i(i,o){var a,r;for(r=0;i.length>r;r++)a=n.classesElementLookup[i[r]]||t(),a=e.add?t(t.unique(a.get().concat(e.element.get()))):t(a.not(e.element).get()),n.classesElementLookup[i[r]]=a,s.push(i[r]),o&&e.classes[i[r]]&&s.push(e.classes[i[r]])}var s=[],n=this;return e=t.extend({element:this.element,classes:this.options.classes||{}},e),this._on(e.element,{remove:"_untrackClassesElement"}),e.keys&&i(e.keys.match(/\S+/g)||[],!0),e.extra&&i(e.extra.match(/\S+/g)||[]),s.join(" ")},_untrackClassesElement:function(e){var i=this;t.each(i.classesElementLookup,function(s,n){-1!==t.inArray(e.target,n)&&(i.classesElementLookup[s]=t(n.not(e.target).get()))})},_removeClass:function(t,e,i){return this._toggleClass(t,e,i,!1)},_addClass:function(t,e,i){return this._toggleClass(t,e,i,!0)},_toggleClass:function(t,e,i,s){s="boolean"==typeof s?s:i;var n="string"==typeof t||null===t,o={extra:n?e:i,keys:n?t:e,element:n?this.element:t,add:s};return o.element.toggleClass(this._classes(o),s),this},_on:function(e,i,s){var n,o=this;"boolean"!=typeof e&&(s=i,i=e,e=!1),s?(i=n=t(i),this.bindings=this.bindings.add(i)):(s=i,i=this.element,n=this.widget()),t.each(s,function(s,a){function r(){return e||o.options.disabled!==!0&&!t(this).hasClass("ui-state-disabled")?("string"==typeof a?o[a]:a).apply(o,arguments):void 0}"string"!=typeof a&&(r.guid=a.guid=a.guid||r.guid||t.guid++);var h=s.match(/^([\w:-]*)\s*(.*)$/),l=h[1]+o.eventNamespace,c=h[2];c?n.on(l,c,r):i.on(l,r)})},_off:function(e,i){i=(i||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,e.off(i).off(i),this.bindings=t(this.bindings.not(e).get()),this.focusable=t(this.focusable.not(e).get()),this.hoverable=t(this.hoverable.not(e).get())},_delay:function(t,e){function i(){return("string"==typeof t?s[t]:t).apply(s,arguments)}var s=this;return setTimeout(i,e||0)},_hoverable:function(e){this.hoverable=this.hoverable.add(e),this._on(e,{mouseenter:function(e){this._addClass(t(e.currentTarget),null,"ui-state-hover")},mouseleave:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-hover")}})},_focusable:function(e){this.focusable=this.focusable.add(e),this._on(e,{focusin:function(e){this._addClass(t(e.currentTarget),null,"ui-state-focus")},focusout:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-focus")}})},_trigger:function(e,i,s){var n,o,a=this.options[e];if(s=s||{},i=t.Event(i),i.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase(),i.target=this.element[0],o=i.originalEvent)for(n in o)n in i||(i[n]=o[n]);return this.element.trigger(i,s),!(t.isFunction(a)&&a.apply(this.element[0],[i].concat(s))===!1||i.isDefaultPrevented())}},t.each({show:"fadeIn",hide:"fadeOut"},function(e,i){t.Widget.prototype["_"+e]=function(s,n,o){"string"==typeof n&&(n={effect:n});var a,r=n?n===!0||"number"==typeof n?i:n.effect||i:e;n=n||{},"number"==typeof n&&(n={duration:n}),a=!t.isEmptyObject(n),n.complete=o,n.delay&&s.delay(n.delay),a&&t.effects&&t.effects.effect[r]?s[e](n):r!==e&&s[r]?s[r](n.duration,n.easing,o):s.queue(function(i){t(this)[e](),o&&o.call(s[0]),i()})}}),t.widget,function(){function e(t,e,i){return[parseFloat(t[0])*(u.test(t[0])?e/100:1),parseFloat(t[1])*(u.test(t[1])?i/100:1)]}function i(e,i){return parseInt(t.css(e,i),10)||0}function s(e){var i=e[0];return 9===i.nodeType?{width:e.width(),height:e.height(),offset:{top:0,left:0}}:t.isWindow(i)?{width:e.width(),height:e.height(),offset:{top:e.scrollTop(),left:e.scrollLeft()}}:i.preventDefault?{width:0,height:0,offset:{top:i.pageY,left:i.pageX}}:{width:e.outerWidth(),height:e.outerHeight(),offset:e.offset()}}var n,o=Math.max,a=Math.abs,r=/left|center|right/,h=/top|center|bottom/,l=/[\+\-]\d+(\.[\d]+)?%?/,c=/^\w+/,u=/%$/,d=t.fn.position;t.position={scrollbarWidth:function(){if(void 0!==n)return n;var e,i,s=t("
"),o=s.children()[0];return t("body").append(s),e=o.offsetWidth,s.css("overflow","scroll"),i=o.offsetWidth,e===i&&(i=s[0].clientWidth),s.remove(),n=e-i},getScrollInfo:function(e){var i=e.isWindow||e.isDocument?"":e.element.css("overflow-x"),s=e.isWindow||e.isDocument?"":e.element.css("overflow-y"),n="scroll"===i||"auto"===i&&e.widthi?"left":e>0?"right":"center",vertical:0>r?"top":s>0?"bottom":"middle"};l>p&&p>a(e+i)&&(u.horizontal="center"),c>f&&f>a(s+r)&&(u.vertical="middle"),u.important=o(a(e),a(i))>o(a(s),a(r))?"horizontal":"vertical",n.using.call(this,t,u)}),h.offset(t.extend(D,{using:r}))})},t.ui.position={fit:{left:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollLeft:s.offset.left,a=s.width,r=t.left-e.collisionPosition.marginLeft,h=n-r,l=r+e.collisionWidth-a-n;e.collisionWidth>a?h>0&&0>=l?(i=t.left+h+e.collisionWidth-a-n,t.left+=h-i):t.left=l>0&&0>=h?n:h>l?n+a-e.collisionWidth:n:h>0?t.left+=h:l>0?t.left-=l:t.left=o(t.left-r,t.left)},top:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollTop:s.offset.top,a=e.within.height,r=t.top-e.collisionPosition.marginTop,h=n-r,l=r+e.collisionHeight-a-n;e.collisionHeight>a?h>0&&0>=l?(i=t.top+h+e.collisionHeight-a-n,t.top+=h-i):t.top=l>0&&0>=h?n:h>l?n+a-e.collisionHeight:n:h>0?t.top+=h:l>0?t.top-=l:t.top=o(t.top-r,t.top)}},flip:{left:function(t,e){var i,s,n=e.within,o=n.offset.left+n.scrollLeft,r=n.width,h=n.isWindow?n.scrollLeft:n.offset.left,l=t.left-e.collisionPosition.marginLeft,c=l-h,u=l+e.collisionWidth-r-h,d="left"===e.my[0]?-e.elemWidth:"right"===e.my[0]?e.elemWidth:0,p="left"===e.at[0]?e.targetWidth:"right"===e.at[0]?-e.targetWidth:0,f=-2*e.offset[0];0>c?(i=t.left+d+p+f+e.collisionWidth-r-o,(0>i||a(c)>i)&&(t.left+=d+p+f)):u>0&&(s=t.left-e.collisionPosition.marginLeft+d+p+f-h,(s>0||u>a(s))&&(t.left+=d+p+f))},top:function(t,e){var i,s,n=e.within,o=n.offset.top+n.scrollTop,r=n.height,h=n.isWindow?n.scrollTop:n.offset.top,l=t.top-e.collisionPosition.marginTop,c=l-h,u=l+e.collisionHeight-r-h,d="top"===e.my[1],p=d?-e.elemHeight:"bottom"===e.my[1]?e.elemHeight:0,f="top"===e.at[1]?e.targetHeight:"bottom"===e.at[1]?-e.targetHeight:0,m=-2*e.offset[1];0>c?(s=t.top+p+f+m+e.collisionHeight-r-o,(0>s||a(c)>s)&&(t.top+=p+f+m)):u>0&&(i=t.top-e.collisionPosition.marginTop+p+f+m-h,(i>0||u>a(i))&&(t.top+=p+f+m))}},flipfit:{left:function(){t.ui.position.flip.left.apply(this,arguments),t.ui.position.fit.left.apply(this,arguments)},top:function(){t.ui.position.flip.top.apply(this,arguments),t.ui.position.fit.top.apply(this,arguments)}}}}(),t.ui.position,t.extend(t.expr[":"],{data:t.expr.createPseudo?t.expr.createPseudo(function(e){return function(i){return!!t.data(i,e)}}):function(e,i,s){return!!t.data(e,s[3])}}),t.fn.extend({disableSelection:function(){var t="onselectstart"in document.createElement("div")?"selectstart":"mousedown";return function(){return this.on(t+".ui-disableSelection",function(t){t.preventDefault()})}}(),enableSelection:function(){return this.off(".ui-disableSelection")}}),t.ui.focusable=function(i,s){var n,o,a,r,h,l=i.nodeName.toLowerCase();return"area"===l?(n=i.parentNode,o=n.name,i.href&&o&&"map"===n.nodeName.toLowerCase()?(a=t("img[usemap='#"+o+"']"),a.length>0&&a.is(":visible")):!1):(/^(input|select|textarea|button|object)$/.test(l)?(r=!i.disabled,r&&(h=t(i).closest("fieldset")[0],h&&(r=!h.disabled))):r="a"===l?i.href||s:s,r&&t(i).is(":visible")&&e(t(i)))},t.extend(t.expr[":"],{focusable:function(e){return t.ui.focusable(e,null!=t.attr(e,"tabindex"))}}),t.ui.focusable,t.fn.form=function(){return"string"==typeof this[0].form?this.closest("form"):t(this[0].form)},t.ui.formResetMixin={_formResetHandler:function(){var e=t(this);setTimeout(function(){var i=e.data("ui-form-reset-instances");t.each(i,function(){this.refresh()})})},_bindFormResetHandler:function(){if(this.form=this.element.form(),this.form.length){var t=this.form.data("ui-form-reset-instances")||[];t.length||this.form.on("reset.ui-form-reset",this._formResetHandler),t.push(this),this.form.data("ui-form-reset-instances",t)}},_unbindFormResetHandler:function(){if(this.form.length){var e=this.form.data("ui-form-reset-instances");e.splice(t.inArray(this,e),1),e.length?this.form.data("ui-form-reset-instances",e):this.form.removeData("ui-form-reset-instances").off("reset.ui-form-reset")}}},"1.7"===t.fn.jquery.substring(0,3)&&(t.each(["Width","Height"],function(e,i){function s(e,i,s,o){return t.each(n,function(){i-=parseFloat(t.css(e,"padding"+this))||0,s&&(i-=parseFloat(t.css(e,"border"+this+"Width"))||0),o&&(i-=parseFloat(t.css(e,"margin"+this))||0)}),i}var n="Width"===i?["Left","Right"]:["Top","Bottom"],o=i.toLowerCase(),a={innerWidth:t.fn.innerWidth,innerHeight:t.fn.innerHeight,outerWidth:t.fn.outerWidth,outerHeight:t.fn.outerHeight};t.fn["inner"+i]=function(e){return void 0===e?a["inner"+i].call(this):this.each(function(){t(this).css(o,s(this,e)+"px")})},t.fn["outer"+i]=function(e,n){return"number"!=typeof e?a["outer"+i].call(this,e):this.each(function(){t(this).css(o,s(this,e,!0,n)+"px")})}}),t.fn.addBack=function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))}),t.ui.keyCode={BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38},t.ui.escapeSelector=function(){var t=/([!"#$%&'()*+,./:;<=>?@[\]^`{|}~])/g;return function(e){return e.replace(t,"\\$1")}}(),t.fn.labels=function(){var e,i,s,n,o;return this[0].labels&&this[0].labels.length?this.pushStack(this[0].labels):(n=this.eq(0).parents("label"),s=this.attr("id"),s&&(e=this.eq(0).parents().last(),o=e.add(e.length?e.siblings():this.siblings()),i="label[for='"+t.ui.escapeSelector(s)+"']",n=n.add(o.find(i).addBack(i))),this.pushStack(n))},t.fn.scrollParent=function(e){var i=this.css("position"),s="absolute"===i,n=e?/(auto|scroll|hidden)/:/(auto|scroll)/,o=this.parents().filter(function(){var e=t(this);return s&&"static"===e.css("position")?!1:n.test(e.css("overflow")+e.css("overflow-y")+e.css("overflow-x"))}).eq(0);return"fixed"!==i&&o.length?o:t(this[0].ownerDocument||document)},t.extend(t.expr[":"],{tabbable:function(e){var i=t.attr(e,"tabindex"),s=null!=i;return(!s||i>=0)&&t.ui.focusable(e,s)}}),t.fn.extend({uniqueId:function(){var t=0;return function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++t)})}}(),removeUniqueId:function(){return this.each(function(){/^ui-id-\d+$/.test(this.id)&&t(this).removeAttr("id")})}}),t.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase());var n=!1;t(document).on("mouseup",function(){n=!1}),t.widget("ui.mouse",{version:"1.12.1",options:{cancel:"input, textarea, button, select, option",distance:1,delay:0},_mouseInit:function(){var e=this;this.element.on("mousedown."+this.widgetName,function(t){return e._mouseDown(t)}).on("click."+this.widgetName,function(i){return!0===t.data(i.target,e.widgetName+".preventClickEvent")?(t.removeData(i.target,e.widgetName+".preventClickEvent"),i.stopImmediatePropagation(),!1):void 0}),this.started=!1},_mouseDestroy:function(){this.element.off("."+this.widgetName),this._mouseMoveDelegate&&this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(e){if(!n){this._mouseMoved=!1,this._mouseStarted&&this._mouseUp(e),this._mouseDownEvent=e;var i=this,s=1===e.which,o="string"==typeof this.options.cancel&&e.target.nodeName?t(e.target).closest(this.options.cancel).length:!1;return s&&!o&&this._mouseCapture(e)?(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){i.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(e)!==!1,!this._mouseStarted)?(e.preventDefault(),!0):(!0===t.data(e.target,this.widgetName+".preventClickEvent")&&t.removeData(e.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(t){return i._mouseMove(t)},this._mouseUpDelegate=function(t){return i._mouseUp(t)},this.document.on("mousemove."+this.widgetName,this._mouseMoveDelegate).on("mouseup."+this.widgetName,this._mouseUpDelegate),e.preventDefault(),n=!0,!0)):!0}},_mouseMove:function(e){if(this._mouseMoved){if(t.ui.ie&&(!document.documentMode||9>document.documentMode)&&!e.button)return this._mouseUp(e);if(!e.which)if(e.originalEvent.altKey||e.originalEvent.ctrlKey||e.originalEvent.metaKey||e.originalEvent.shiftKey)this.ignoreMissingWhich=!0;else if(!this.ignoreMissingWhich)return this._mouseUp(e)}return(e.which||e.button)&&(this._mouseMoved=!0),this._mouseStarted?(this._mouseDrag(e),e.preventDefault()):(this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,e)!==!1,this._mouseStarted?this._mouseDrag(e):this._mouseUp(e)),!this._mouseStarted)},_mouseUp:function(e){this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,e.target===this._mouseDownEvent.target&&t.data(e.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(e)),this._mouseDelayTimer&&(clearTimeout(this._mouseDelayTimer),delete this._mouseDelayTimer),this.ignoreMissingWhich=!1,n=!1,e.preventDefault()},_mouseDistanceMet:function(t){return Math.max(Math.abs(this._mouseDownEvent.pageX-t.pageX),Math.abs(this._mouseDownEvent.pageY-t.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),t.ui.plugin={add:function(e,i,s){var n,o=t.ui[e].prototype;for(n in s)o.plugins[n]=o.plugins[n]||[],o.plugins[n].push([i,s[n]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;o.length>n;n++)t.options[o[n][0]]&&o[n][1].apply(t.element,i)}},t.widget("ui.resizable",t.ui.mouse,{version:"1.12.1",widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,classes:{"ui-resizable-se":"ui-icon ui-icon-gripsmall-diagonal-se"},containment:!1,ghost:!1,grid:!1,handles:"e,s,se",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:90,resize:null,start:null,stop:null},_num:function(t){return parseFloat(t)||0},_isNumber:function(t){return!isNaN(parseFloat(t))},_hasScroll:function(e,i){if("hidden"===t(e).css("overflow"))return!1;var s=i&&"left"===i?"scrollLeft":"scrollTop",n=!1;return e[s]>0?!0:(e[s]=1,n=e[s]>0,e[s]=0,n)},_create:function(){var e,i=this.options,s=this;this._addClass("ui-resizable"),t.extend(this,{_aspectRatio:!!i.aspectRatio,aspectRatio:i.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:i.helper||i.ghost||i.animate?i.helper||"ui-resizable-helper":null}),this.element[0].nodeName.match(/^(canvas|textarea|input|select|button|img)$/i)&&(this.element.wrap(t("
").css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,e={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(e),this.originalElement.css("margin",0),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css(e),this._proportionallyResize()),this._setupHandles(),i.autoHide&&t(this.element).on("mouseenter",function(){i.disabled||(s._removeClass("ui-resizable-autohide"),s._handles.show())}).on("mouseleave",function(){i.disabled||s.resizing||(s._addClass("ui-resizable-autohide"),s._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy();var e,i=function(e){t(e).removeData("resizable").removeData("ui-resizable").off(".resizable").find(".ui-resizable-handle").remove()};return this.elementIsWrapper&&(i(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),i(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;default:}},_setupHandles:function(){var e,i,s,n,o,a=this.options,r=this;if(this.handles=a.handles||(t(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=t(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),s=this.handles.split(","),this.handles={},i=0;s.length>i;i++)e=t.trim(s[i]),n="ui-resizable-"+e,o=t("
"),this._addClass(o,"ui-resizable-handle "+n),o.css({zIndex:a.zIndex}),this.handles[e]=".ui-resizable-"+e,this.element.append(o);this._renderAxis=function(e){var i,s,n,o;e=e||this.element;for(i in this.handles)this.handles[i].constructor===String?this.handles[i]=this.element.children(this.handles[i]).first().show():(this.handles[i].jquery||this.handles[i].nodeType)&&(this.handles[i]=t(this.handles[i]),this._on(this.handles[i],{mousedown:r._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(s=t(this.handles[i],this.element),o=/sw|ne|nw|se|n|s/.test(i)?s.outerHeight():s.outerWidth(),n=["padding",/ne|nw|n/.test(i)?"Top":/se|sw|s/.test(i)?"Bottom":/^e$/.test(i)?"Right":"Left"].join(""),e.css(n,o),this._proportionallyResize()),this._handles=this._handles.add(this.handles[i])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){r.resizing||(this.className&&(o=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),r.axis=o&&o[1]?o[1]:"se")}),a.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._handles.remove()},_mouseCapture:function(e){var i,s,n=!1;for(i in this.handles)s=t(this.handles[i])[0],(s===e.target||t.contains(s,e.target))&&(n=!0);return!this.options.disabled&&n},_mouseStart:function(e){var i,s,n,o=this.options,a=this.element;return this.resizing=!0,this._renderProxy(),i=this._num(this.helper.css("left")),s=this._num(this.helper.css("top")),o.containment&&(i+=t(o.containment).scrollLeft()||0,s+=t(o.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:i,top:s},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:a.width(),height:a.height()},this.originalSize=this._helper?{width:a.outerWidth(),height:a.outerHeight()}:{width:a.width(),height:a.height()},this.sizeDiff={width:a.outerWidth()-a.width(),height:a.outerHeight()-a.height()},this.originalPosition={left:i,top:s},this.originalMousePosition={left:e.pageX,top:e.pageY},this.aspectRatio="number"==typeof o.aspectRatio?o.aspectRatio:this.originalSize.width/this.originalSize.height||1,n=t(".ui-resizable-"+this.axis).css("cursor"),t("body").css("cursor","auto"===n?this.axis+"-resize":n),this._addClass("ui-resizable-resizing"),this._propagate("start",e),!0},_mouseDrag:function(e){var i,s,n=this.originalMousePosition,o=this.axis,a=e.pageX-n.left||0,r=e.pageY-n.top||0,h=this._change[o];return this._updatePrevProperties(),h?(i=h.apply(this,[e,a,r]),this._updateVirtualBoundaries(e.shiftKey),(this._aspectRatio||e.shiftKey)&&(i=this._updateRatio(i,e)),i=this._respectSize(i,e),this._updateCache(i),this._propagate("resize",e),s=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),t.isEmptyObject(s)||(this._updatePrevProperties(),this._trigger("resize",e,this.ui()),this._applyChanges()),!1):!1},_mouseStop:function(e){this.resizing=!1;var i,s,n,o,a,r,h,l=this.options,c=this;return this._helper&&(i=this._proportionallyResizeElements,s=i.length&&/textarea/i.test(i[0].nodeName),n=s&&this._hasScroll(i[0],"left")?0:c.sizeDiff.height,o=s?0:c.sizeDiff.width,a={width:c.helper.width()-o,height:c.helper.height()-n},r=parseFloat(c.element.css("left"))+(c.position.left-c.originalPosition.left)||null,h=parseFloat(c.element.css("top"))+(c.position.top-c.originalPosition.top)||null,l.animate||this.element.css(t.extend(a,{top:h,left:r})),c.helper.height(c.size.height),c.helper.width(c.size.width),this._helper&&!l.animate&&this._proportionallyResize()),t("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",e),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px"),this.helper.css(t),t},_updateVirtualBoundaries:function(t){var e,i,s,n,o,a=this.options;o={minWidth:this._isNumber(a.minWidth)?a.minWidth:0,maxWidth:this._isNumber(a.maxWidth)?a.maxWidth:1/0,minHeight:this._isNumber(a.minHeight)?a.minHeight:0,maxHeight:this._isNumber(a.maxHeight)?a.maxHeight:1/0},(this._aspectRatio||t)&&(e=o.minHeight*this.aspectRatio,s=o.minWidth/this.aspectRatio,i=o.maxHeight*this.aspectRatio,n=o.maxWidth/this.aspectRatio,e>o.minWidth&&(o.minWidth=e),s>o.minHeight&&(o.minHeight=s),o.maxWidth>i&&(o.maxWidth=i),o.maxHeight>n&&(o.maxHeight=n)),this._vBoundaries=o},_updateCache:function(t){this.offset=this.helper.offset(),this._isNumber(t.left)&&(this.position.left=t.left),this._isNumber(t.top)&&(this.position.top=t.top),this._isNumber(t.height)&&(this.size.height=t.height),this._isNumber(t.width)&&(this.size.width=t.width)},_updateRatio:function(t){var e=this.position,i=this.size,s=this.axis;return this._isNumber(t.height)?t.width=t.height*this.aspectRatio:this._isNumber(t.width)&&(t.height=t.width/this.aspectRatio),"sw"===s&&(t.left=e.left+(i.width-t.width),t.top=null),"nw"===s&&(t.top=e.top+(i.height-t.height),t.left=e.left+(i.width-t.width)),t},_respectSize:function(t){var e=this._vBoundaries,i=this.axis,s=this._isNumber(t.width)&&e.maxWidth&&e.maxWidtht.width,a=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,r=this.originalPosition.left+this.originalSize.width,h=this.originalPosition.top+this.originalSize.height,l=/sw|nw|w/.test(i),c=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),a&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&l&&(t.left=r-e.minWidth),s&&l&&(t.left=r-e.maxWidth),a&&c&&(t.top=h-e.minHeight),n&&c&&(t.top=h-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],n=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];4>e;e++)i[e]=parseFloat(s[e])||0,i[e]+=parseFloat(n[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;this._proportionallyResizeElements.length>e;e++)t=this._proportionallyResizeElements[e],this.outerDimensions||(this.outerDimensions=this._getPaddingPlusBorderDimensions(t)),t.css({height:i.height()-this.outerDimensions.height||0,width:i.width()-this.outerDimensions.width||0})},_renderProxy:function(){var e=this.element,i=this.options;this.elementOffset=e.offset(),this._helper?(this.helper=this.helper||t("
"),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++i.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element +},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize,s=this.originalPosition;return{left:s.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize,n=this.originalPosition;return{top:n.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},sw:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[e,i,s]))},ne:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},nw:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[e,i,s]))}},_propagate:function(e,i){t.ui.plugin.call(this,e,[i,this.ui()]),"resize"!==e&&this._trigger(e,i,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),t.ui.plugin.add("resizable","animate",{stop:function(e){var i=t(this).resizable("instance"),s=i.options,n=i._proportionallyResizeElements,o=n.length&&/textarea/i.test(n[0].nodeName),a=o&&i._hasScroll(n[0],"left")?0:i.sizeDiff.height,r=o?0:i.sizeDiff.width,h={width:i.size.width-r,height:i.size.height-a},l=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left)||null,c=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(t.extend(h,c&&l?{top:c,left:l}:{}),{duration:s.animateDuration,easing:s.animateEasing,step:function(){var s={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};n&&n.length&&t(n[0]).css({width:s.width,height:s.height}),i._updateCache(s),i._propagate("resize",e)}})}}),t.ui.plugin.add("resizable","containment",{start:function(){var e,i,s,n,o,a,r,h=t(this).resizable("instance"),l=h.options,c=h.element,u=l.containment,d=u instanceof t?u.get(0):/parent/.test(u)?c.parent().get(0):u;d&&(h.containerElement=t(d),/document/.test(u)||u===document?(h.containerOffset={left:0,top:0},h.containerPosition={left:0,top:0},h.parentData={element:t(document),left:0,top:0,width:t(document).width(),height:t(document).height()||document.body.parentNode.scrollHeight}):(e=t(d),i=[],t(["Top","Right","Left","Bottom"]).each(function(t,s){i[t]=h._num(e.css("padding"+s))}),h.containerOffset=e.offset(),h.containerPosition=e.position(),h.containerSize={height:e.innerHeight()-i[3],width:e.innerWidth()-i[1]},s=h.containerOffset,n=h.containerSize.height,o=h.containerSize.width,a=h._hasScroll(d,"left")?d.scrollWidth:o,r=h._hasScroll(d)?d.scrollHeight:n,h.parentData={element:d,left:s.left,top:s.top,width:a,height:r}))},resize:function(e){var i,s,n,o,a=t(this).resizable("instance"),r=a.options,h=a.containerOffset,l=a.position,c=a._aspectRatio||e.shiftKey,u={top:0,left:0},d=a.containerElement,p=!0;d[0]!==document&&/static/.test(d.css("position"))&&(u=h),l.left<(a._helper?h.left:0)&&(a.size.width=a.size.width+(a._helper?a.position.left-h.left:a.position.left-u.left),c&&(a.size.height=a.size.width/a.aspectRatio,p=!1),a.position.left=r.helper?h.left:0),l.top<(a._helper?h.top:0)&&(a.size.height=a.size.height+(a._helper?a.position.top-h.top:a.position.top),c&&(a.size.width=a.size.height*a.aspectRatio,p=!1),a.position.top=a._helper?h.top:0),n=a.containerElement.get(0)===a.element.parent().get(0),o=/relative|absolute/.test(a.containerElement.css("position")),n&&o?(a.offset.left=a.parentData.left+a.position.left,a.offset.top=a.parentData.top+a.position.top):(a.offset.left=a.element.offset().left,a.offset.top=a.element.offset().top),i=Math.abs(a.sizeDiff.width+(a._helper?a.offset.left-u.left:a.offset.left-h.left)),s=Math.abs(a.sizeDiff.height+(a._helper?a.offset.top-u.top:a.offset.top-h.top)),i+a.size.width>=a.parentData.width&&(a.size.width=a.parentData.width-i,c&&(a.size.height=a.size.width/a.aspectRatio,p=!1)),s+a.size.height>=a.parentData.height&&(a.size.height=a.parentData.height-s,c&&(a.size.width=a.size.height*a.aspectRatio,p=!1)),p||(a.position.left=a.prevPosition.left,a.position.top=a.prevPosition.top,a.size.width=a.prevSize.width,a.size.height=a.prevSize.height)},stop:function(){var e=t(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.containerPosition,o=e.containerElement,a=t(e.helper),r=a.offset(),h=a.outerWidth()-e.sizeDiff.width,l=a.outerHeight()-e.sizeDiff.height;e._helper&&!i.animate&&/relative/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l}),e._helper&&!i.animate&&/static/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l})}}),t.ui.plugin.add("resizable","alsoResize",{start:function(){var e=t(this).resizable("instance"),i=e.options;t(i.alsoResize).each(function(){var e=t(this);e.data("ui-resizable-alsoresize",{width:parseFloat(e.width()),height:parseFloat(e.height()),left:parseFloat(e.css("left")),top:parseFloat(e.css("top"))})})},resize:function(e,i){var s=t(this).resizable("instance"),n=s.options,o=s.originalSize,a=s.originalPosition,r={height:s.size.height-o.height||0,width:s.size.width-o.width||0,top:s.position.top-a.top||0,left:s.position.left-a.left||0};t(n.alsoResize).each(function(){var e=t(this),s=t(this).data("ui-resizable-alsoresize"),n={},o=e.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];t.each(o,function(t,e){var i=(s[e]||0)+(r[e]||0);i&&i>=0&&(n[e]=i||null)}),e.css(n)})},stop:function(){t(this).removeData("ui-resizable-alsoresize")}}),t.ui.plugin.add("resizable","ghost",{start:function(){var e=t(this).resizable("instance"),i=e.size;e.ghost=e.originalElement.clone(),e.ghost.css({opacity:.25,display:"block",position:"relative",height:i.height,width:i.width,margin:0,left:0,top:0}),e._addClass(e.ghost,"ui-resizable-ghost"),t.uiBackCompat!==!1&&"string"==typeof e.options.ghost&&e.ghost.addClass(this.options.ghost),e.ghost.appendTo(e.helper)},resize:function(){var e=t(this).resizable("instance");e.ghost&&e.ghost.css({position:"relative",height:e.size.height,width:e.size.width})},stop:function(){var e=t(this).resizable("instance");e.ghost&&e.helper&&e.helper.get(0).removeChild(e.ghost.get(0))}}),t.ui.plugin.add("resizable","grid",{resize:function(){var e,i=t(this).resizable("instance"),s=i.options,n=i.size,o=i.originalSize,a=i.originalPosition,r=i.axis,h="number"==typeof s.grid?[s.grid,s.grid]:s.grid,l=h[0]||1,c=h[1]||1,u=Math.round((n.width-o.width)/l)*l,d=Math.round((n.height-o.height)/c)*c,p=o.width+u,f=o.height+d,m=s.maxWidth&&p>s.maxWidth,g=s.maxHeight&&f>s.maxHeight,_=s.minWidth&&s.minWidth>p,v=s.minHeight&&s.minHeight>f;s.grid=h,_&&(p+=l),v&&(f+=c),m&&(p-=l),g&&(f-=c),/^(se|s|e)$/.test(r)?(i.size.width=p,i.size.height=f):/^(ne)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.top=a.top-d):/^(sw)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.left=a.left-u):((0>=f-c||0>=p-l)&&(e=i._getPaddingPlusBorderDimensions(this)),f-c>0?(i.size.height=f,i.position.top=a.top-d):(f=c-e.height,i.size.height=f,i.position.top=a.top+o.height-f),p-l>0?(i.size.width=p,i.position.left=a.left-u):(p=l-e.width,i.size.width=p,i.position.left=a.left+o.width-p))}}),t.ui.resizable});/** + * Copyright (c) 2007 Ariel Flesler - aflesler ○ gmail • com | https://github.com/flesler + * Licensed under MIT + * @author Ariel Flesler + * @version 2.1.2 + */ +;(function(f){"use strict";"function"===typeof define&&define.amd?define(["jquery"],f):"undefined"!==typeof module&&module.exports?module.exports=f(require("jquery")):f(jQuery)})(function($){"use strict";function n(a){return!a.nodeName||-1!==$.inArray(a.nodeName.toLowerCase(),["iframe","#document","html","body"])}function h(a){return $.isFunction(a)||$.isPlainObject(a)?a:{top:a,left:a}}var p=$.scrollTo=function(a,d,b){return $(window).scrollTo(a,d,b)};p.defaults={axis:"xy",duration:0,limit:!0};$.fn.scrollTo=function(a,d,b){"object"=== typeof d&&(b=d,d=0);"function"===typeof b&&(b={onAfter:b});"max"===a&&(a=9E9);b=$.extend({},p.defaults,b);d=d||b.duration;var u=b.queue&&1=f[g]?0:Math.min(f[g],n));!a&&1-1){targetElements.on(evt+EVENT_NAMESPACE,function elementToggle(event){$.powerTip.toggle(this,event)})}else{targetElements.on(evt+EVENT_NAMESPACE,function elementOpen(event){$.powerTip.show(this,event)})}});$.each(options.closeEvents,function(idx,evt){if($.inArray(evt,options.openEvents)<0){targetElements.on(evt+EVENT_NAMESPACE,function elementClose(event){$.powerTip.hide(this,!isMouseEvent(event))})}});targetElements.on("keydown"+EVENT_NAMESPACE,function elementKeyDown(event){if(event.keyCode===27){$.powerTip.hide(this,true)}})}return targetElements};$.fn.powerTip.defaults={fadeInTime:200,fadeOutTime:100,followMouse:false,popupId:"powerTip",popupClass:null,intentSensitivity:7,intentPollInterval:100,closeDelay:100,placement:"n",smartPlacement:false,offset:10,mouseOnToPopup:false,manual:false,openEvents:["mouseenter","focus"],closeEvents:["mouseleave","blur"]};$.fn.powerTip.smartPlacementLists={n:["n","ne","nw","s"],e:["e","ne","se","w","nw","sw","n","s","e"],s:["s","se","sw","n"],w:["w","nw","sw","e","ne","se","n","s","w"],nw:["nw","w","sw","n","s","se","nw"],ne:["ne","e","se","n","s","sw","ne"],sw:["sw","w","nw","s","n","ne","sw"],se:["se","e","ne","s","n","nw","se"],"nw-alt":["nw-alt","n","ne-alt","sw-alt","s","se-alt","w","e"],"ne-alt":["ne-alt","n","nw-alt","se-alt","s","sw-alt","e","w"],"sw-alt":["sw-alt","s","se-alt","nw-alt","n","ne-alt","w","e"],"se-alt":["se-alt","s","sw-alt","ne-alt","n","nw-alt","e","w"]};$.powerTip={show:function apiShowTip(element,event){if(isMouseEvent(event)){trackMouse(event);session.previousX=event.pageX;session.previousY=event.pageY;$(element).data(DATA_DISPLAYCONTROLLER).show()}else{$(element).first().data(DATA_DISPLAYCONTROLLER).show(true,true)}return element},reposition:function apiResetPosition(element){$(element).first().data(DATA_DISPLAYCONTROLLER).resetPosition();return element},hide:function apiCloseTip(element,immediate){var displayController;immediate=element?immediate:true;if(element){displayController=$(element).first().data(DATA_DISPLAYCONTROLLER)}else if(session.activeHover){displayController=session.activeHover.data(DATA_DISPLAYCONTROLLER)}if(displayController){displayController.hide(immediate)}return element},toggle:function apiToggle(element,event){if(session.activeHover&&session.activeHover.is(element)){$.powerTip.hide(element,!isMouseEvent(event))}else{$.powerTip.show(element,event)}return element}};$.powerTip.showTip=$.powerTip.show;$.powerTip.closeTip=$.powerTip.hide;function CSSCoordinates(){var me=this;me.top="auto";me.left="auto";me.right="auto";me.bottom="auto";me.set=function(property,value){if($.isNumeric(value)){me[property]=Math.round(value)}}}function DisplayController(element,options,tipController){var hoverTimer=null,myCloseDelay=null;function openTooltip(immediate,forceOpen){cancelTimer();if(!element.data(DATA_HASACTIVEHOVER)){if(!immediate){session.tipOpenImminent=true;hoverTimer=setTimeout(function intentDelay(){hoverTimer=null;checkForIntent()},options.intentPollInterval)}else{if(forceOpen){element.data(DATA_FORCEDOPEN,true)}closeAnyDelayed();tipController.showTip(element)}}else{cancelClose()}}function closeTooltip(disableDelay){if(myCloseDelay){myCloseDelay=session.closeDelayTimeout=clearTimeout(myCloseDelay);session.delayInProgress=false}cancelTimer();session.tipOpenImminent=false;if(element.data(DATA_HASACTIVEHOVER)){element.data(DATA_FORCEDOPEN,false);if(!disableDelay){session.delayInProgress=true;session.closeDelayTimeout=setTimeout(function closeDelay(){session.closeDelayTimeout=null;tipController.hideTip(element);session.delayInProgress=false;myCloseDelay=null},options.closeDelay);myCloseDelay=session.closeDelayTimeout}else{tipController.hideTip(element)}}}function checkForIntent(){var xDifference=Math.abs(session.previousX-session.currentX),yDifference=Math.abs(session.previousY-session.currentY),totalDifference=xDifference+yDifference;if(totalDifference",{id:options.popupId});if($body.length===0){$body=$("body")}$body.append(tipElement);session.tooltips=session.tooltips?session.tooltips.add(tipElement):tipElement}if(options.followMouse){if(!tipElement.data(DATA_HASMOUSEMOVE)){$document.on("mousemove"+EVENT_NAMESPACE,positionTipOnCursor);$window.on("scroll"+EVENT_NAMESPACE,positionTipOnCursor);tipElement.data(DATA_HASMOUSEMOVE,true)}}function beginShowTip(element){element.data(DATA_HASACTIVEHOVER,true);tipElement.queue(function queueTipInit(next){showTip(element);next()})}function showTip(element){var tipContent;if(!element.data(DATA_HASACTIVEHOVER)){return}if(session.isTipOpen){if(!session.isClosing){hideTip(session.activeHover)}tipElement.delay(100).queue(function queueTipAgain(next){showTip(element);next()});return}element.trigger("powerTipPreRender");tipContent=getTooltipContent(element);if(tipContent){tipElement.empty().append(tipContent)}else{return}element.trigger("powerTipRender");session.activeHover=element;session.isTipOpen=true;tipElement.data(DATA_MOUSEONTOTIP,options.mouseOnToPopup);tipElement.addClass(options.popupClass);if(!options.followMouse||element.data(DATA_FORCEDOPEN)){positionTipOnElement(element);session.isFixedTipOpen=true}else{positionTipOnCursor()}if(!element.data(DATA_FORCEDOPEN)&&!options.followMouse){$document.on("click"+EVENT_NAMESPACE,function documentClick(event){var target=event.target;if(target!==element[0]){if(options.mouseOnToPopup){if(target!==tipElement[0]&&!$.contains(tipElement[0],target)){$.powerTip.hide()}}else{$.powerTip.hide()}}})}if(options.mouseOnToPopup&&!options.manual){tipElement.on("mouseenter"+EVENT_NAMESPACE,function tipMouseEnter(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).cancel()}});tipElement.on("mouseleave"+EVENT_NAMESPACE,function tipMouseLeave(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).hide()}})}tipElement.fadeIn(options.fadeInTime,function fadeInCallback(){if(!session.desyncTimeout){session.desyncTimeout=setInterval(closeDesyncedTip,500)}element.trigger("powerTipOpen")})}function hideTip(element){session.isClosing=true;session.isTipOpen=false;session.desyncTimeout=clearInterval(session.desyncTimeout);element.data(DATA_HASACTIVEHOVER,false);element.data(DATA_FORCEDOPEN,false);$document.off("click"+EVENT_NAMESPACE);tipElement.off(EVENT_NAMESPACE);tipElement.fadeOut(options.fadeOutTime,function fadeOutCallback(){var coords=new CSSCoordinates;session.activeHover=null;session.isClosing=false;session.isFixedTipOpen=false;tipElement.removeClass();coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);tipElement.css(coords);element.trigger("powerTipClose")})}function positionTipOnCursor(){var tipWidth,tipHeight,coords,collisions,collisionCount;if(!session.isFixedTipOpen&&(session.isTipOpen||session.tipOpenImminent&&tipElement.data(DATA_HASMOUSEMOVE))){tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=new CSSCoordinates;coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);collisions=getViewportCollisions(coords,tipWidth,tipHeight);if(collisions!==Collision.none){collisionCount=countFlags(collisions);if(collisionCount===1){if(collisions===Collision.right){coords.set("left",session.scrollLeft+session.windowWidth-tipWidth)}else if(collisions===Collision.bottom){coords.set("top",session.scrollTop+session.windowHeight-tipHeight)}}else{coords.set("left",session.currentX-tipWidth-options.offset);coords.set("top",session.currentY-tipHeight-options.offset)}}tipElement.css(coords)}}function positionTipOnElement(element){var priorityList,finalPlacement;if(options.smartPlacement||options.followMouse&&element.data(DATA_FORCEDOPEN)){priorityList=$.fn.powerTip.smartPlacementLists[options.placement];$.each(priorityList,function(idx,pos){var collisions=getViewportCollisions(placeTooltip(element,pos),tipElement.outerWidth(),tipElement.outerHeight());finalPlacement=pos;return collisions!==Collision.none})}else{placeTooltip(element,options.placement);finalPlacement=options.placement}tipElement.removeClass("w nw sw e ne se n s w se-alt sw-alt ne-alt nw-alt");tipElement.addClass(finalPlacement)}function placeTooltip(element,placement){var iterationCount=0,tipWidth,tipHeight,coords=new CSSCoordinates;coords.set("top",0);coords.set("left",0);tipElement.css(coords);do{tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=placementCalculator.compute(element,placement,tipWidth,tipHeight,options.offset);tipElement.css(coords)}while(++iterationCount<=5&&(tipWidth!==tipElement.outerWidth()||tipHeight!==tipElement.outerHeight()));return coords}function closeDesyncedTip(){var isDesynced=false,hasDesyncableCloseEvent=$.grep(["mouseleave","mouseout","blur","focusout"],function(eventType){return $.inArray(eventType,options.closeEvents)!==-1}).length>0;if(session.isTipOpen&&!session.isClosing&&!session.delayInProgress&&hasDesyncableCloseEvent){if(session.activeHover.data(DATA_HASACTIVEHOVER)===false||session.activeHover.is(":disabled")){isDesynced=true}else if(!isMouseOver(session.activeHover)&&!session.activeHover.is(":focus")&&!session.activeHover.data(DATA_FORCEDOPEN)){if(tipElement.data(DATA_MOUSEONTOTIP)){if(!isMouseOver(tipElement)){isDesynced=true}}else{isDesynced=true}}if(isDesynced){hideTip(session.activeHover)}}}this.showTip=beginShowTip;this.hideTip=hideTip;this.resetPosition=positionTipOnElement}function isSvgElement(element){return Boolean(window.SVGElement&&element[0]instanceof SVGElement)}function isMouseEvent(event){return Boolean(event&&$.inArray(event.type,MOUSE_EVENTS)>-1&&typeof event.pageX==="number")}function initTracking(){if(!session.mouseTrackingActive){session.mouseTrackingActive=true;getViewportDimensions();$(getViewportDimensions);$document.on("mousemove"+EVENT_NAMESPACE,trackMouse);$window.on("resize"+EVENT_NAMESPACE,trackResize);$window.on("scroll"+EVENT_NAMESPACE,trackScroll)}}function getViewportDimensions(){session.scrollLeft=$window.scrollLeft();session.scrollTop=$window.scrollTop();session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackResize(){session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackScroll(){var x=$window.scrollLeft(),y=$window.scrollTop();if(x!==session.scrollLeft){session.currentX+=x-session.scrollLeft;session.scrollLeft=x}if(y!==session.scrollTop){session.currentY+=y-session.scrollTop;session.scrollTop=y}}function trackMouse(event){session.currentX=event.pageX;session.currentY=event.pageY}function isMouseOver(element){var elementPosition=element.offset(),elementBox=element[0].getBoundingClientRect(),elementWidth=elementBox.right-elementBox.left,elementHeight=elementBox.bottom-elementBox.top;return session.currentX>=elementPosition.left&&session.currentX<=elementPosition.left+elementWidth&&session.currentY>=elementPosition.top&&session.currentY<=elementPosition.top+elementHeight}function getTooltipContent(element){var tipText=element.data(DATA_POWERTIP),tipObject=element.data(DATA_POWERTIPJQ),tipTarget=element.data(DATA_POWERTIPTARGET),targetElement,content;if(tipText){if($.isFunction(tipText)){tipText=tipText.call(element[0])}content=tipText}else if(tipObject){if($.isFunction(tipObject)){tipObject=tipObject.call(element[0])}if(tipObject.length>0){content=tipObject.clone(true,true)}}else if(tipTarget){targetElement=$("#"+tipTarget);if(targetElement.length>0){content=targetElement.html()}}return content}function getViewportCollisions(coords,elementWidth,elementHeight){var viewportTop=session.scrollTop,viewportLeft=session.scrollLeft,viewportBottom=viewportTop+session.windowHeight,viewportRight=viewportLeft+session.windowWidth,collisions=Collision.none;if(coords.topviewportBottom||Math.abs(coords.bottom-session.windowHeight)>viewportBottom){collisions|=Collision.bottom}if(coords.leftviewportRight){collisions|=Collision.left}if(coords.left+elementWidth>viewportRight||coords.right1)){a.preventDefault();var c=a.originalEvent.changedTouches[0],d=document.createEvent("MouseEvents");d.initMouseEvent(b,!0,!0,window,1,c.screenX,c.screenY,c.clientX,c.clientY,!1,!1,!1,!1,0,null),a.target.dispatchEvent(d)}}if(a.support.touch="ontouchend"in document,a.support.touch){var e,b=a.ui.mouse.prototype,c=b._mouseInit,d=b._mouseDestroy;b._touchStart=function(a){var b=this;!e&&b._mouseCapture(a.originalEvent.changedTouches[0])&&(e=!0,b._touchMoved=!1,f(a,"mouseover"),f(a,"mousemove"),f(a,"mousedown"))},b._touchMove=function(a){e&&(this._touchMoved=!0,f(a,"mousemove"))},b._touchEnd=function(a){e&&(f(a,"mouseup"),f(a,"mouseout"),this._touchMoved||f(a,"click"),e=!1)},b._mouseInit=function(){var b=this;b.element.bind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),c.call(b)},b._mouseDestroy=function(){var b=this;b.element.unbind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),d.call(b)}}}(jQuery);/*! SmartMenus jQuery Plugin - v1.1.0 - September 17, 2017 + * http://www.smartmenus.org/ + * Copyright Vasil Dinkov, Vadikom Web Ltd. http://vadikom.com; Licensed MIT */(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):"object"==typeof module&&"object"==typeof module.exports?module.exports=t(require("jquery")):t(jQuery)})(function($){function initMouseDetection(t){var e=".smartmenus_mouse";if(mouseDetectionEnabled||t)mouseDetectionEnabled&&t&&($(document).off(e),mouseDetectionEnabled=!1);else{var i=!0,s=null,o={mousemove:function(t){var e={x:t.pageX,y:t.pageY,timeStamp:(new Date).getTime()};if(s){var o=Math.abs(s.x-e.x),a=Math.abs(s.y-e.y);if((o>0||a>0)&&2>=o&&2>=a&&300>=e.timeStamp-s.timeStamp&&(mouse=!0,i)){var n=$(t.target).closest("a");n.is("a")&&$.each(menuTrees,function(){return $.contains(this.$root[0],n[0])?(this.itemEnter({currentTarget:n[0]}),!1):void 0}),i=!1}}s=e}};o[touchEvents?"touchstart":"pointerover pointermove pointerout MSPointerOver MSPointerMove MSPointerOut"]=function(t){isTouchEvent(t.originalEvent)&&(mouse=!1)},$(document).on(getEventsNS(o,e)),mouseDetectionEnabled=!0}}function isTouchEvent(t){return!/^(4|mouse)$/.test(t.pointerType)}function getEventsNS(t,e){e||(e="");var i={};for(var s in t)i[s.split(" ").join(e+" ")+e]=t[s];return i}var menuTrees=[],mouse=!1,touchEvents="ontouchstart"in window,mouseDetectionEnabled=!1,requestAnimationFrame=window.requestAnimationFrame||function(t){return setTimeout(t,1e3/60)},cancelAnimationFrame=window.cancelAnimationFrame||function(t){clearTimeout(t)},canAnimate=!!$.fn.animate;return $.SmartMenus=function(t,e){this.$root=$(t),this.opts=e,this.rootId="",this.accessIdPrefix="",this.$subArrow=null,this.activatedItems=[],this.visibleSubMenus=[],this.showTimeout=0,this.hideTimeout=0,this.scrollTimeout=0,this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.idInc=0,this.$firstLink=null,this.$firstSub=null,this.disabled=!1,this.$disableOverlay=null,this.$touchScrollingSub=null,this.cssTransforms3d="perspective"in t.style||"webkitPerspective"in t.style,this.wasCollapsible=!1,this.init()},$.extend($.SmartMenus,{hideAll:function(){$.each(menuTrees,function(){this.menuHideAll()})},destroy:function(){for(;menuTrees.length;)menuTrees[0].destroy();initMouseDetection(!0)},prototype:{init:function(t){var e=this;if(!t){menuTrees.push(this),this.rootId=((new Date).getTime()+Math.random()+"").replace(/\D/g,""),this.accessIdPrefix="sm-"+this.rootId+"-",this.$root.hasClass("sm-rtl")&&(this.opts.rightToLeftSubMenus=!0);var i=".smartmenus";this.$root.data("smartmenus",this).attr("data-smartmenus-id",this.rootId).dataSM("level",1).on(getEventsNS({"mouseover focusin":$.proxy(this.rootOver,this),"mouseout focusout":$.proxy(this.rootOut,this),keydown:$.proxy(this.rootKeyDown,this)},i)).on(getEventsNS({mouseenter:$.proxy(this.itemEnter,this),mouseleave:$.proxy(this.itemLeave,this),mousedown:$.proxy(this.itemDown,this),focus:$.proxy(this.itemFocus,this),blur:$.proxy(this.itemBlur,this),click:$.proxy(this.itemClick,this)},i),"a"),i+=this.rootId,this.opts.hideOnClick&&$(document).on(getEventsNS({touchstart:$.proxy(this.docTouchStart,this),touchmove:$.proxy(this.docTouchMove,this),touchend:$.proxy(this.docTouchEnd,this),click:$.proxy(this.docClick,this)},i)),$(window).on(getEventsNS({"resize orientationchange":$.proxy(this.winResize,this)},i)),this.opts.subIndicators&&(this.$subArrow=$("").addClass("sub-arrow"),this.opts.subIndicatorsText&&this.$subArrow.html(this.opts.subIndicatorsText)),initMouseDetection()}if(this.$firstSub=this.$root.find("ul").each(function(){e.menuInit($(this))}).eq(0),this.$firstLink=this.$root.find("a").eq(0),this.opts.markCurrentItem){var s=/(index|default)\.[^#\?\/]*/i,o=/#.*/,a=window.location.href.replace(s,""),n=a.replace(o,"");this.$root.find("a").each(function(){var t=this.href.replace(s,""),i=$(this);(t==a||t==n)&&(i.addClass("current"),e.opts.markCurrentTree&&i.parentsUntil("[data-smartmenus-id]","ul").each(function(){$(this).dataSM("parent-a").addClass("current")}))})}this.wasCollapsible=this.isCollapsible()},destroy:function(t){if(!t){var e=".smartmenus";this.$root.removeData("smartmenus").removeAttr("data-smartmenus-id").removeDataSM("level").off(e),e+=this.rootId,$(document).off(e),$(window).off(e),this.opts.subIndicators&&(this.$subArrow=null)}this.menuHideAll();var i=this;this.$root.find("ul").each(function(){var t=$(this);t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.dataSM("shown-before")&&((i.opts.subMenusMinWidth||i.opts.subMenusMaxWidth)&&t.css({width:"",minWidth:"",maxWidth:""}).removeClass("sm-nowrap"),t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.css({zIndex:"",top:"",left:"",marginLeft:"",marginTop:"",display:""})),0==(t.attr("id")||"").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeDataSM("in-mega").removeDataSM("shown-before").removeDataSM("scroll-arrows").removeDataSM("parent-a").removeDataSM("level").removeDataSM("beforefirstshowfired").removeAttr("role").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeAttr("aria-expanded"),this.$root.find("a.has-submenu").each(function(){var t=$(this);0==t.attr("id").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeClass("has-submenu").removeDataSM("sub").removeAttr("aria-haspopup").removeAttr("aria-controls").removeAttr("aria-expanded").closest("li").removeDataSM("sub"),this.opts.subIndicators&&this.$root.find("span.sub-arrow").remove(),this.opts.markCurrentItem&&this.$root.find("a.current").removeClass("current"),t||(this.$root=null,this.$firstLink=null,this.$firstSub=null,this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),menuTrees.splice($.inArray(this,menuTrees),1))},disable:function(t){if(!this.disabled){if(this.menuHideAll(),!t&&!this.opts.isPopup&&this.$root.is(":visible")){var e=this.$root.offset();this.$disableOverlay=$('
').css({position:"absolute",top:e.top,left:e.left,width:this.$root.outerWidth(),height:this.$root.outerHeight(),zIndex:this.getStartZIndex(!0),opacity:0}).appendTo(document.body)}this.disabled=!0}},docClick:function(t){return this.$touchScrollingSub?(this.$touchScrollingSub=null,void 0):((this.visibleSubMenus.length&&!$.contains(this.$root[0],t.target)||$(t.target).closest("a").length)&&this.menuHideAll(),void 0)},docTouchEnd:function(){if(this.lastTouch){if(!(!this.visibleSubMenus.length||void 0!==this.lastTouch.x2&&this.lastTouch.x1!=this.lastTouch.x2||void 0!==this.lastTouch.y2&&this.lastTouch.y1!=this.lastTouch.y2||this.lastTouch.target&&$.contains(this.$root[0],this.lastTouch.target))){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var t=this;this.hideTimeout=setTimeout(function(){t.menuHideAll()},350)}this.lastTouch=null}},docTouchMove:function(t){if(this.lastTouch){var e=t.originalEvent.touches[0];this.lastTouch.x2=e.pageX,this.lastTouch.y2=e.pageY}},docTouchStart:function(t){var e=t.originalEvent.touches[0];this.lastTouch={x1:e.pageX,y1:e.pageY,target:e.target}},enable:function(){this.disabled&&(this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),this.disabled=!1)},getClosestMenu:function(t){for(var e=$(t).closest("ul");e.dataSM("in-mega");)e=e.parent().closest("ul");return e[0]||null},getHeight:function(t){return this.getOffset(t,!0)},getOffset:function(t,e){var i;"none"==t.css("display")&&(i={position:t[0].style.position,visibility:t[0].style.visibility},t.css({position:"absolute",visibility:"hidden"}).show());var s=t[0].getBoundingClientRect&&t[0].getBoundingClientRect(),o=s&&(e?s.height||s.bottom-s.top:s.width||s.right-s.left);return o||0===o||(o=e?t[0].offsetHeight:t[0].offsetWidth),i&&t.hide().css(i),o},getStartZIndex:function(t){var e=parseInt(this[t?"$root":"$firstSub"].css("z-index"));return!t&&isNaN(e)&&(e=parseInt(this.$root.css("z-index"))),isNaN(e)?1:e},getTouchPoint:function(t){return t.touches&&t.touches[0]||t.changedTouches&&t.changedTouches[0]||t},getViewport:function(t){var e=t?"Height":"Width",i=document.documentElement["client"+e],s=window["inner"+e];return s&&(i=Math.min(i,s)),i},getViewportHeight:function(){return this.getViewport(!0)},getViewportWidth:function(){return this.getViewport()},getWidth:function(t){return this.getOffset(t)},handleEvents:function(){return!this.disabled&&this.isCSSOn()},handleItemEvents:function(t){return this.handleEvents()&&!this.isLinkInMegaMenu(t)},isCollapsible:function(){return"static"==this.$firstSub.css("position")},isCSSOn:function(){return"inline"!=this.$firstLink.css("display")},isFixed:function(){var t="fixed"==this.$root.css("position");return t||this.$root.parentsUntil("body").each(function(){return"fixed"==$(this).css("position")?(t=!0,!1):void 0}),t},isLinkInMegaMenu:function(t){return $(this.getClosestMenu(t[0])).hasClass("mega-menu")},isTouchMode:function(){return!mouse||this.opts.noMouseOver||this.isCollapsible()},itemActivate:function(t,e){var i=t.closest("ul"),s=i.dataSM("level");if(s>1&&(!this.activatedItems[s-2]||this.activatedItems[s-2][0]!=i.dataSM("parent-a")[0])){var o=this;$(i.parentsUntil("[data-smartmenus-id]","ul").get().reverse()).add(i).each(function(){o.itemActivate($(this).dataSM("parent-a"))})}if((!this.isCollapsible()||e)&&this.menuHideSubMenus(this.activatedItems[s-1]&&this.activatedItems[s-1][0]==t[0]?s:s-1),this.activatedItems[s-1]=t,this.$root.triggerHandler("activate.smapi",t[0])!==!1){var a=t.dataSM("sub");a&&(this.isTouchMode()||!this.opts.showOnClick||this.clickActivated)&&this.menuShow(a)}},itemBlur:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&this.$root.triggerHandler("blur.smapi",e[0])},itemClick:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(this.$touchScrollingSub&&this.$touchScrollingSub[0]==e.closest("ul")[0])return this.$touchScrollingSub=null,t.stopPropagation(),!1;if(this.$root.triggerHandler("click.smapi",e[0])===!1)return!1;var i=$(t.target).is(".sub-arrow"),s=e.dataSM("sub"),o=s?2==s.dataSM("level"):!1,a=this.isCollapsible(),n=/toggle$/.test(this.opts.collapsibleBehavior),r=/link$/.test(this.opts.collapsibleBehavior),h=/^accordion/.test(this.opts.collapsibleBehavior);if(s&&!s.is(":visible")){if((!r||!a||i)&&(this.opts.showOnClick&&o&&(this.clickActivated=!0),this.itemActivate(e,h),s.is(":visible")))return this.focusActivated=!0,!1}else if(a&&(n||i))return this.itemActivate(e,h),this.menuHide(s),n&&(this.focusActivated=!1),!1;return this.opts.showOnClick&&o||e.hasClass("disabled")||this.$root.triggerHandler("select.smapi",e[0])===!1?!1:void 0}},itemDown:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&e.dataSM("mousedown",!0)},itemEnter:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(!this.isTouchMode()){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);var i=this;this.showTimeout=setTimeout(function(){i.itemActivate(e)},this.opts.showOnClick&&1==e.closest("ul").dataSM("level")?1:this.opts.showTimeout)}this.$root.triggerHandler("mouseenter.smapi",e[0])}},itemFocus:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(!this.focusActivated||this.isTouchMode()&&e.dataSM("mousedown")||this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0]==e[0]||this.itemActivate(e,!0),this.$root.triggerHandler("focus.smapi",e[0]))},itemLeave:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(this.isTouchMode()||(e[0].blur(),this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0)),e.removeDataSM("mousedown"),this.$root.triggerHandler("mouseleave.smapi",e[0]))},menuHide:function(t){if(this.$root.triggerHandler("beforehide.smapi",t[0])!==!1&&(canAnimate&&t.stop(!0,!0),"none"!=t.css("display"))){var e=function(){t.css("z-index","")};this.isCollapsible()?canAnimate&&this.opts.collapsibleHideFunction?this.opts.collapsibleHideFunction.call(this,t,e):t.hide(this.opts.collapsibleHideDuration,e):canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,t,e):t.hide(this.opts.hideDuration,e),t.dataSM("scroll")&&(this.menuScrollStop(t),t.css({"touch-action":"","-ms-touch-action":"","-webkit-transform":"",transform:""}).off(".smartmenus_scroll").removeDataSM("scroll").dataSM("scroll-arrows").hide()),t.dataSM("parent-a").removeClass("highlighted").attr("aria-expanded","false"),t.attr({"aria-expanded":"false","aria-hidden":"true"});var i=t.dataSM("level");this.activatedItems.splice(i-1,1),this.visibleSubMenus.splice($.inArray(t,this.visibleSubMenus),1),this.$root.triggerHandler("hide.smapi",t[0])}},menuHideAll:function(){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);for(var t=this.opts.isPopup?1:0,e=this.visibleSubMenus.length-1;e>=t;e--)this.menuHide(this.visibleSubMenus[e]);this.opts.isPopup&&(canAnimate&&this.$root.stop(!0,!0),this.$root.is(":visible")&&(canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,this.$root):this.$root.hide(this.opts.hideDuration))),this.activatedItems=[],this.visibleSubMenus=[],this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.$root.triggerHandler("hideAll.smapi")},menuHideSubMenus:function(t){for(var e=this.activatedItems.length-1;e>=t;e--){var i=this.activatedItems[e].dataSM("sub");i&&this.menuHide(i)}},menuInit:function(t){if(!t.dataSM("in-mega")){t.hasClass("mega-menu")&&t.find("ul").dataSM("in-mega",!0);for(var e=2,i=t[0];(i=i.parentNode.parentNode)!=this.$root[0];)e++;var s=t.prevAll("a").eq(-1);s.length||(s=t.prevAll().find("a").eq(-1)),s.addClass("has-submenu").dataSM("sub",t),t.dataSM("parent-a",s).dataSM("level",e).parent().dataSM("sub",t);var o=s.attr("id")||this.accessIdPrefix+ ++this.idInc,a=t.attr("id")||this.accessIdPrefix+ ++this.idInc;s.attr({id:o,"aria-haspopup":"true","aria-controls":a,"aria-expanded":"false"}),t.attr({id:a,role:"group","aria-hidden":"true","aria-labelledby":o,"aria-expanded":"false"}),this.opts.subIndicators&&s[this.opts.subIndicatorsPos](this.$subArrow.clone())}},menuPosition:function(t){var e,i,s=t.dataSM("parent-a"),o=s.closest("li"),a=o.parent(),n=t.dataSM("level"),r=this.getWidth(t),h=this.getHeight(t),u=s.offset(),l=u.left,c=u.top,d=this.getWidth(s),m=this.getHeight(s),p=$(window),f=p.scrollLeft(),v=p.scrollTop(),b=this.getViewportWidth(),S=this.getViewportHeight(),g=a.parent().is("[data-sm-horizontal-sub]")||2==n&&!a.hasClass("sm-vertical"),M=this.opts.rightToLeftSubMenus&&!o.is("[data-sm-reverse]")||!this.opts.rightToLeftSubMenus&&o.is("[data-sm-reverse]"),w=2==n?this.opts.mainMenuSubOffsetX:this.opts.subMenusSubOffsetX,T=2==n?this.opts.mainMenuSubOffsetY:this.opts.subMenusSubOffsetY;if(g?(e=M?d-r-w:w,i=this.opts.bottomToTopSubMenus?-h-T:m+T):(e=M?w-r:d-w,i=this.opts.bottomToTopSubMenus?m-T-h:T),this.opts.keepInViewport){var y=l+e,I=c+i;if(M&&f>y?e=g?f-y+e:d-w:!M&&y+r>f+b&&(e=g?f+b-r-y+e:w-r),g||(S>h&&I+h>v+S?i+=v+S-h-I:(h>=S||v>I)&&(i+=v-I)),g&&(I+h>v+S+.49||v>I)||!g&&h>S+.49){var x=this;t.dataSM("scroll-arrows")||t.dataSM("scroll-arrows",$([$('')[0],$('')[0]]).on({mouseenter:function(){t.dataSM("scroll").up=$(this).hasClass("scroll-up"),x.menuScroll(t)},mouseleave:function(e){x.menuScrollStop(t),x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(t){t.preventDefault()}}).insertAfter(t));var A=".smartmenus_scroll";if(t.dataSM("scroll",{y:this.cssTransforms3d?0:i-m,step:1,itemH:m,subH:h,arrowDownH:this.getHeight(t.dataSM("scroll-arrows").eq(1))}).on(getEventsNS({mouseover:function(e){x.menuScrollOver(t,e)},mouseout:function(e){x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(e){x.menuScrollMousewheel(t,e)}},A)).dataSM("scroll-arrows").css({top:"auto",left:"0",marginLeft:e+(parseInt(t.css("border-left-width"))||0),width:r-(parseInt(t.css("border-left-width"))||0)-(parseInt(t.css("border-right-width"))||0),zIndex:t.css("z-index")}).eq(g&&this.opts.bottomToTopSubMenus?0:1).show(),this.isFixed()){var C={};C[touchEvents?"touchstart touchmove touchend":"pointerdown pointermove pointerup MSPointerDown MSPointerMove MSPointerUp"]=function(e){x.menuScrollTouch(t,e)},t.css({"touch-action":"none","-ms-touch-action":"none"}).on(getEventsNS(C,A))}}}t.css({top:"auto",left:"0",marginLeft:e,marginTop:i-m})},menuScroll:function(t,e,i){var s,o=t.dataSM("scroll"),a=t.dataSM("scroll-arrows"),n=o.up?o.upEnd:o.downEnd;if(!e&&o.momentum){if(o.momentum*=.92,s=o.momentum,.5>s)return this.menuScrollStop(t),void 0}else s=i||(e||!this.opts.scrollAccelerate?this.opts.scrollStep:Math.floor(o.step));var r=t.dataSM("level");if(this.activatedItems[r-1]&&this.activatedItems[r-1].dataSM("sub")&&this.activatedItems[r-1].dataSM("sub").is(":visible")&&this.menuHideSubMenus(r-1),o.y=o.up&&o.y>=n||!o.up&&n>=o.y?o.y:Math.abs(n-o.y)>s?o.y+(o.up?s:-s):n,t.css(this.cssTransforms3d?{"-webkit-transform":"translate3d(0, "+o.y+"px, 0)",transform:"translate3d(0, "+o.y+"px, 0)"}:{marginTop:o.y}),mouse&&(o.up&&o.y>o.downEnd||!o.up&&o.y0;t.dataSM("scroll-arrows").eq(i?0:1).is(":visible")&&(t.dataSM("scroll").up=i,this.menuScroll(t,!0))}e.preventDefault()},menuScrollOut:function(t,e){mouse&&(/^scroll-(up|down)/.test((e.relatedTarget||"").className)||(t[0]==e.relatedTarget||$.contains(t[0],e.relatedTarget))&&this.getClosestMenu(e.relatedTarget)==t[0]||t.dataSM("scroll-arrows").css("visibility","hidden"))},menuScrollOver:function(t,e){if(mouse&&!/^scroll-(up|down)/.test(e.target.className)&&this.getClosestMenu(e.target)==t[0]){this.menuScrollRefreshData(t);var i=t.dataSM("scroll"),s=$(window).scrollTop()-t.dataSM("parent-a").offset().top-i.itemH;t.dataSM("scroll-arrows").eq(0).css("margin-top",s).end().eq(1).css("margin-top",s+this.getViewportHeight()-i.arrowDownH).end().css("visibility","visible")}},menuScrollRefreshData:function(t){var e=t.dataSM("scroll"),i=$(window).scrollTop()-t.dataSM("parent-a").offset().top-e.itemH;this.cssTransforms3d&&(i=-(parseFloat(t.css("margin-top"))-i)),$.extend(e,{upEnd:i,downEnd:i+this.getViewportHeight()-e.subH})},menuScrollStop:function(t){return this.scrollTimeout?(cancelAnimationFrame(this.scrollTimeout),this.scrollTimeout=0,t.dataSM("scroll").step=1,!0):void 0},menuScrollTouch:function(t,e){if(e=e.originalEvent,isTouchEvent(e)){var i=this.getTouchPoint(e);if(this.getClosestMenu(i.target)==t[0]){var s=t.dataSM("scroll");if(/(start|down)$/i.test(e.type))this.menuScrollStop(t)?(e.preventDefault(),this.$touchScrollingSub=t):this.$touchScrollingSub=null,this.menuScrollRefreshData(t),$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp});else if(/move$/i.test(e.type)){var o=void 0!==s.touchY?s.touchY:s.touchStartY;if(void 0!==o&&o!=i.pageY){this.$touchScrollingSub=t;var a=i.pageY>o;void 0!==s.up&&s.up!=a&&$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp}),$.extend(s,{up:a,touchY:i.pageY}),this.menuScroll(t,!0,Math.abs(i.pageY-o))}e.preventDefault()}else void 0!==s.touchY&&((s.momentum=15*Math.pow(Math.abs(i.pageY-s.touchStartY)/(e.timeStamp-s.touchStartTime),2))&&(this.menuScrollStop(t),this.menuScroll(t),e.preventDefault()),delete s.touchY)}}},menuShow:function(t){if((t.dataSM("beforefirstshowfired")||(t.dataSM("beforefirstshowfired",!0),this.$root.triggerHandler("beforefirstshow.smapi",t[0])!==!1))&&this.$root.triggerHandler("beforeshow.smapi",t[0])!==!1&&(t.dataSM("shown-before",!0),canAnimate&&t.stop(!0,!0),!t.is(":visible"))){var e=t.dataSM("parent-a"),i=this.isCollapsible();if((this.opts.keepHighlighted||i)&&e.addClass("highlighted"),i)t.removeClass("sm-nowrap").css({zIndex:"",width:"auto",minWidth:"",maxWidth:"",top:"",left:"",marginLeft:"",marginTop:""});else{if(t.css("z-index",this.zIndexInc=(this.zIndexInc||this.getStartZIndex())+1),(this.opts.subMenusMinWidth||this.opts.subMenusMaxWidth)&&(t.css({width:"auto",minWidth:"",maxWidth:""}).addClass("sm-nowrap"),this.opts.subMenusMinWidth&&t.css("min-width",this.opts.subMenusMinWidth),this.opts.subMenusMaxWidth)){var s=this.getWidth(t);t.css("max-width",this.opts.subMenusMaxWidth),s>this.getWidth(t)&&t.removeClass("sm-nowrap").css("width",this.opts.subMenusMaxWidth)}this.menuPosition(t)}var o=function(){t.css("overflow","")};i?canAnimate&&this.opts.collapsibleShowFunction?this.opts.collapsibleShowFunction.call(this,t,o):t.show(this.opts.collapsibleShowDuration,o):canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,t,o):t.show(this.opts.showDuration,o),e.attr("aria-expanded","true"),t.attr({"aria-expanded":"true","aria-hidden":"false"}),this.visibleSubMenus.push(t),this.$root.triggerHandler("show.smapi",t[0])}},popupHide:function(t){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},t?1:this.opts.hideTimeout)},popupShow:function(t,e){if(!this.opts.isPopup)return alert('SmartMenus jQuery Error:\n\nIf you want to show this menu via the "popupShow" method, set the isPopup:true option.'),void 0;if(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),this.$root.dataSM("shown-before",!0),canAnimate&&this.$root.stop(!0,!0),!this.$root.is(":visible")){this.$root.css({left:t,top:e});var i=this,s=function(){i.$root.css("overflow","")};canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,this.$root,s):this.$root.show(this.opts.showDuration,s),this.visibleSubMenus[0]=this.$root}},refresh:function(){this.destroy(!0),this.init(!0)},rootKeyDown:function(t){if(this.handleEvents())switch(t.keyCode){case 27:var e=this.activatedItems[0];if(e){this.menuHideAll(),e[0].focus();var i=e.dataSM("sub");i&&this.menuHide(i)}break;case 32:var s=$(t.target);if(s.is("a")&&this.handleItemEvents(s)){var i=s.dataSM("sub");i&&!i.is(":visible")&&(this.itemClick({currentTarget:t.target}),t.preventDefault())}}},rootOut:function(t){if(this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),!this.opts.showOnClick||!this.opts.hideOnClick)){var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},this.opts.hideTimeout)}},rootOver:function(t){this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0)},winResize:function(t){if(this.handleEvents()){if(!("onorientationchange"in window)||"orientationchange"==t.type){var e=this.isCollapsible();this.wasCollapsible&&e||(this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0].blur(),this.menuHideAll()),this.wasCollapsible=e}}else if(this.$disableOverlay){var i=this.$root.offset();this.$disableOverlay.css({top:i.top,left:i.left,width:this.$root.outerWidth(),height:this.$root.outerHeight()})}}}}),$.fn.dataSM=function(t,e){return e?this.data(t+"_smartmenus",e):this.data(t+"_smartmenus")},$.fn.removeDataSM=function(t){return this.removeData(t+"_smartmenus")},$.fn.smartmenus=function(options){if("string"==typeof options){var args=arguments,method=options;return Array.prototype.shift.call(args),this.each(function(){var t=$(this).data("smartmenus");t&&t[method]&&t[method].apply(t,args)})}return this.each(function(){var dataOpts=$(this).data("sm-options")||null;if(dataOpts)try{dataOpts=eval("("+dataOpts+")")}catch(e){dataOpts=null,alert('ERROR\n\nSmartMenus jQuery init:\nInvalid "data-sm-options" attribute value syntax.')}new $.SmartMenus(this,$.extend({},$.fn.smartmenus.defaults,options,dataOpts))})},$.fn.smartmenus.defaults={isPopup:!1,mainMenuSubOffsetX:0,mainMenuSubOffsetY:0,subMenusSubOffsetX:0,subMenusSubOffsetY:0,subMenusMinWidth:"10em",subMenusMaxWidth:"20em",subIndicators:!0,subIndicatorsPos:"append",subIndicatorsText:"",scrollStep:30,scrollAccelerate:!0,showTimeout:250,hideTimeout:500,showDuration:0,showFunction:null,hideDuration:0,hideFunction:function(t,e){t.fadeOut(200,e)},collapsibleShowDuration:0,collapsibleShowFunction:function(t,e){t.slideDown(200,e)},collapsibleHideDuration:0,collapsibleHideFunction:function(t,e){t.slideUp(200,e)},showOnClick:!1,hideOnClick:!0,noMouseOver:!1,keepInViewport:!0,keepHighlighted:!0,markCurrentItem:!1,markCurrentTree:!0,rightToLeftSubMenus:!1,bottomToTopSubMenus:!1,collapsibleBehavior:"default"},$}); \ No newline at end of file diff --git a/maxset_8hpp_source.html b/maxset_8hpp_source.html new file mode 100644 index 0000000..134d44e --- /dev/null +++ b/maxset_8hpp_source.html @@ -0,0 +1,134 @@ + + + + + + + +LydiaSyft: src/cli/maxset.hpp Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
LydiaSyft +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
maxset.hpp
+
+
+
1 //
+
2 // Created by marcofavorito on 22/01/24.
+
3 //
+
4 
+
5 #ifndef LYDIASYFT_CLI_MAXSET_H
+
6 #define LYDIASYFT_CLI_MAXSET_H
+
7 
+
8 #include <CLI/CLI.hpp>
+
9 
+
10 
+
11 namespace Syft {
+
12 
+
13 
+
14  class MaxSetRunner : public BaseRunner {
+
15  private:
+
16  Syft::Stopwatch aut_time_stopwatch_; // stopwatch for automata construction
+
17  Syft::Stopwatch nondef_strategy_time_stopwatch_; // stopwatch for nondeferring strategy
+
18  Syft::Stopwatch def_strategy_time_stopwatch_; // stopwatch for deferring strategy
+
19 
+
20  void do_maxset_synthesis(const SymbolicStateDfa& dfa);
+
21  public:
+
22  MaxSetRunner(const std::shared_ptr<whitemech::lydia::parsers::ltlf::LTLfDriver>& driver, const std::string& formula_file, const std::string& path_to_syfco, bool print_strategy, bool print_times) :
+
23  BaseRunner(driver, formula_file, path_to_syfco, print_strategy, print_times) {}
+
24  void run();
+
25 
+
26  };
+
27 
+
28 
+
29 }
+
30 
+
31 
+
32 #endif //LYDIASYFT_CLI_MAXSET_H
+
Definition: base.hpp:91
+
Definition: maxset.hpp:14
+
Stopwatch for timing executions.
Definition: Stopwatch.h:11
+
A DFA with symbolic states and transitions.
Definition: SymbolicStateDfa.h:18
+
+
+ + + + diff --git a/menu.js b/menu.js new file mode 100644 index 0000000..2fe2214 --- /dev/null +++ b/menu.js @@ -0,0 +1,51 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function initMenu(relPath,searchEnabled,serverSide,searchPage,search) { + function makeTree(data,relPath) { + var result=''; + if ('children' in data) { + result+=''; + } + return result; + } + + $('#main-nav').append(makeTree(menudata,relPath)); + $('#main-nav').children(':first').addClass('sm sm-dox').attr('id','main-menu'); + if (searchEnabled) { + if (serverSide) { + $('#main-menu').append('
  • '); + } else { + $('#main-menu').append('
  • '); + } + } + $('#main-menu').smartmenus(); +} +/* @license-end */ diff --git a/menudata.js b/menudata.js new file mode 100644 index 0000000..35f86f5 --- /dev/null +++ b/menudata.js @@ -0,0 +1,71 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file +*/ +var menudata={children:[ +{text:"Main Page",url:"index.html"}, +{text:"Classes",url:"annotated.html",children:[ +{text:"Class List",url:"annotated.html"}, +{text:"Class Index",url:"classes.html"}, +{text:"Class Hierarchy",url:"inherits.html"}, +{text:"Class Members",url:"functions.html",children:[ +{text:"All",url:"functions.html",children:[ +{text:"a",url:"functions.html#index_a"}, +{text:"b",url:"functions.html#index_b"}, +{text:"c",url:"functions.html#index_c"}, +{text:"d",url:"functions.html#index_d"}, +{text:"e",url:"functions.html#index_e"}, +{text:"f",url:"functions.html#index_f"}, +{text:"g",url:"functions.html#index_g"}, +{text:"i",url:"functions.html#index_i"}, +{text:"l",url:"functions.html#index_l"}, +{text:"m",url:"functions.html#index_m"}, +{text:"n",url:"functions.html#index_n"}, +{text:"o",url:"functions.html#index_o"}, +{text:"p",url:"functions.html#index_p"}, +{text:"q",url:"functions.html#index_q"}, +{text:"r",url:"functions.html#index_r"}, +{text:"s",url:"functions.html#index_s"}, +{text:"t",url:"functions.html#index_t"}, +{text:"v",url:"functions.html#index_v"}]}, +{text:"Functions",url:"functions_func.html",children:[ +{text:"a",url:"functions_func.html#index_a"}, +{text:"b",url:"functions_func.html#index_b"}, +{text:"c",url:"functions_func.html#index_c"}, +{text:"d",url:"functions_func.html#index_d"}, +{text:"e",url:"functions_func.html#index_e"}, +{text:"f",url:"functions_func.html#index_f"}, +{text:"g",url:"functions_func.html#index_g"}, +{text:"i",url:"functions_func.html#index_i"}, +{text:"l",url:"functions_func.html#index_l"}, +{text:"m",url:"functions_func.html#index_m"}, +{text:"n",url:"functions_func.html#index_n"}, +{text:"o",url:"functions_func.html#index_o"}, +{text:"p",url:"functions_func.html#index_p"}, +{text:"r",url:"functions_func.html#index_r"}, +{text:"s",url:"functions_func.html#index_s"}, +{text:"t",url:"functions_func.html#index_t"}, +{text:"v",url:"functions_func.html#index_v"}]}, +{text:"Variables",url:"functions_vars.html"}]}]}, +{text:"Files",url:"files.html",children:[ +{text:"File List",url:"files.html"}]}]} diff --git a/nav_f.png b/nav_f.png new file mode 100644 index 0000000..72a58a5 Binary files /dev/null and b/nav_f.png differ diff --git a/nav_g.png b/nav_g.png new file mode 100644 index 0000000..2093a23 Binary files /dev/null and b/nav_g.png differ diff --git a/nav_h.png b/nav_h.png new file mode 100644 index 0000000..33389b1 Binary files /dev/null and b/nav_h.png differ diff --git a/navtree.css b/navtree.css new file mode 100644 index 0000000..33341a6 --- /dev/null +++ b/navtree.css @@ -0,0 +1,146 @@ +#nav-tree .children_ul { + margin:0; + padding:4px; +} + +#nav-tree ul { + list-style:none outside none; + margin:0px; + padding:0px; +} + +#nav-tree li { + white-space:nowrap; + margin:0px; + padding:0px; +} + +#nav-tree .plus { + margin:0px; +} + +#nav-tree .selected { + background-image: url('tab_a.png'); + background-repeat:repeat-x; + color: #fff; + text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +} + +#nav-tree img { + margin:0px; + padding:0px; + border:0px; + vertical-align: middle; +} + +#nav-tree a { + text-decoration:none; + padding:0px; + margin:0px; + outline:none; +} + +#nav-tree .label { + margin:0px; + padding:0px; + font: 12px 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; +} + +#nav-tree .label a { + padding:2px; +} + +#nav-tree .selected a { + text-decoration:none; + color:#fff; +} + +#nav-tree .children_ul { + margin:0px; + padding:0px; +} + +#nav-tree .item { + margin:0px; + padding:0px; +} + +#nav-tree { + padding: 0px 0px; + background-color: #FAFAFF; + font-size:14px; + overflow:auto; +} + +#doc-content { + overflow:auto; + display:block; + padding:0px; + margin:0px; + -webkit-overflow-scrolling : touch; /* iOS 5+ */ +} + +#side-nav { + padding:0 6px 0 0; + margin: 0px; + display:block; + position: absolute; + left: 0px; + width: 250px; +} + +.ui-resizable .ui-resizable-handle { + display:block; +} + +.ui-resizable-e { + background-image:url("splitbar.png"); + background-size:100%; + background-repeat:repeat-y; + background-attachment: scroll; + cursor:ew-resize; + height:100%; + right:0; + top:0; + width:6px; +} + +.ui-resizable-handle { + display:none; + font-size:0.1px; + position:absolute; + z-index:1; +} + +#nav-tree-contents { + margin: 6px 0px 0px 0px; +} + +#nav-tree { + background-image:url('nav_h.png'); + background-repeat:repeat-x; + background-color: #F9FAFC; + -webkit-overflow-scrolling : touch; /* iOS 5+ */ +} + +#nav-sync { + position:absolute; + top:5px; + right:24px; + z-index:0; +} + +#nav-sync img { + opacity:0.3; +} + +#nav-sync img:hover { + opacity:0.9; +} + +@media print +{ + #nav-tree { display: none; } + div.ui-resizable-handle { display: none; position: relative; } +} + diff --git a/navtree.js b/navtree.js new file mode 100644 index 0000000..1e272d3 --- /dev/null +++ b/navtree.js @@ -0,0 +1,546 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +var navTreeSubIndices = new Array(); +var arrowDown = '▼'; +var arrowRight = '►'; + +function getData(varName) +{ + var i = varName.lastIndexOf('/'); + var n = i>=0 ? varName.substring(i+1) : varName; + return eval(n.replace(/\-/g,'_')); +} + +function stripPath(uri) +{ + return uri.substring(uri.lastIndexOf('/')+1); +} + +function stripPath2(uri) +{ + var i = uri.lastIndexOf('/'); + var s = uri.substring(i+1); + var m = uri.substring(0,i+1).match(/\/d\w\/d\w\w\/$/); + return m ? uri.substring(i-6) : s; +} + +function hashValue() +{ + return $(location).attr('hash').substring(1).replace(/[^\w\-]/g,''); +} + +function hashUrl() +{ + return '#'+hashValue(); +} + +function pathName() +{ + return $(location).attr('pathname').replace(/[^-A-Za-z0-9+&@#/%?=~_|!:,.;\(\)]/g, ''); +} + +function localStorageSupported() +{ + try { + return 'localStorage' in window && window['localStorage'] !== null && window.localStorage.getItem; + } + catch(e) { + return false; + } +} + +function storeLink(link) +{ + if (!$("#nav-sync").hasClass('sync') && localStorageSupported()) { + window.localStorage.setItem('navpath',link); + } +} + +function deleteLink() +{ + if (localStorageSupported()) { + window.localStorage.setItem('navpath',''); + } +} + +function cachedLink() +{ + if (localStorageSupported()) { + return window.localStorage.getItem('navpath'); + } else { + return ''; + } +} + +function getScript(scriptName,func,show) +{ + var head = document.getElementsByTagName("head")[0]; + var script = document.createElement('script'); + script.id = scriptName; + script.type = 'text/javascript'; + script.onload = func; + script.src = scriptName+'.js'; + head.appendChild(script); +} + +function createIndent(o,domNode,node,level) +{ + var level=-1; + var n = node; + while (n.parentNode) { level++; n=n.parentNode; } + if (node.childrenData) { + var imgNode = document.createElement("span"); + imgNode.className = 'arrow'; + imgNode.style.paddingLeft=(16*level).toString()+'px'; + imgNode.innerHTML=arrowRight; + node.plus_img = imgNode; + node.expandToggle = document.createElement("a"); + node.expandToggle.href = "javascript:void(0)"; + node.expandToggle.onclick = function() { + if (node.expanded) { + $(node.getChildrenUL()).slideUp("fast"); + node.plus_img.innerHTML=arrowRight; + node.expanded = false; + } else { + expandNode(o, node, false, false); + } + } + node.expandToggle.appendChild(imgNode); + domNode.appendChild(node.expandToggle); + } else { + var span = document.createElement("span"); + span.className = 'arrow'; + span.style.width = 16*(level+1)+'px'; + span.innerHTML = ' '; + domNode.appendChild(span); + } +} + +var animationInProgress = false; + +function gotoAnchor(anchor,aname,updateLocation) +{ + var pos, docContent = $('#doc-content'); + var ancParent = $(anchor.parent()); + if (ancParent.hasClass('memItemLeft') || + ancParent.hasClass('memtitle') || + ancParent.hasClass('fieldname') || + ancParent.hasClass('fieldtype') || + ancParent.is(':header')) + { + pos = ancParent.position().top; + } else if (anchor.position()) { + pos = anchor.position().top; + } + if (pos) { + var dist = Math.abs(Math.min( + pos-docContent.offset().top, + docContent[0].scrollHeight- + docContent.height()-docContent.scrollTop())); + animationInProgress=true; + docContent.animate({ + scrollTop: pos + docContent.scrollTop() - docContent.offset().top + },Math.max(50,Math.min(500,dist)),function(){ + if (updateLocation) window.location.href=aname; + animationInProgress=false; + }); + } +} + +function newNode(o, po, text, link, childrenData, lastNode) +{ + var node = new Object(); + node.children = Array(); + node.childrenData = childrenData; + node.depth = po.depth + 1; + node.relpath = po.relpath; + node.isLast = lastNode; + + node.li = document.createElement("li"); + po.getChildrenUL().appendChild(node.li); + node.parentNode = po; + + node.itemDiv = document.createElement("div"); + node.itemDiv.className = "item"; + + node.labelSpan = document.createElement("span"); + node.labelSpan.className = "label"; + + createIndent(o,node.itemDiv,node,0); + node.itemDiv.appendChild(node.labelSpan); + node.li.appendChild(node.itemDiv); + + var a = document.createElement("a"); + node.labelSpan.appendChild(a); + node.label = document.createTextNode(text); + node.expanded = false; + a.appendChild(node.label); + if (link) { + var url; + if (link.substring(0,1)=='^') { + url = link.substring(1); + link = url; + } else { + url = node.relpath+link; + } + a.className = stripPath(link.replace('#',':')); + if (link.indexOf('#')!=-1) { + var aname = '#'+link.split('#')[1]; + var srcPage = stripPath(pathName()); + var targetPage = stripPath(link.split('#')[0]); + a.href = srcPage!=targetPage ? url : "javascript:void(0)"; + a.onclick = function(){ + storeLink(link); + if (!$(a).parent().parent().hasClass('selected')) + { + $('.item').removeClass('selected'); + $('.item').removeAttr('id'); + $(a).parent().parent().addClass('selected'); + $(a).parent().parent().attr('id','selected'); + } + var anchor = $(aname); + gotoAnchor(anchor,aname,true); + }; + } else { + a.href = url; + a.onclick = function() { storeLink(link); } + } + } else { + if (childrenData != null) + { + a.className = "nolink"; + a.href = "javascript:void(0)"; + a.onclick = node.expandToggle.onclick; + } + } + + node.childrenUL = null; + node.getChildrenUL = function() { + if (!node.childrenUL) { + node.childrenUL = document.createElement("ul"); + node.childrenUL.className = "children_ul"; + node.childrenUL.style.display = "none"; + node.li.appendChild(node.childrenUL); + } + return node.childrenUL; + }; + + return node; +} + +function showRoot() +{ + var headerHeight = $("#top").height(); + var footerHeight = $("#nav-path").height(); + var windowHeight = $(window).height() - headerHeight - footerHeight; + (function (){ // retry until we can scroll to the selected item + try { + var navtree=$('#nav-tree'); + navtree.scrollTo('#selected',100,{offset:-windowHeight/2}); + } catch (err) { + setTimeout(arguments.callee, 0); + } + })(); +} + +function expandNode(o, node, imm, showRoot) +{ + if (node.childrenData && !node.expanded) { + if (typeof(node.childrenData)==='string') { + var varName = node.childrenData; + getScript(node.relpath+varName,function(){ + node.childrenData = getData(varName); + expandNode(o, node, imm, showRoot); + }, showRoot); + } else { + if (!node.childrenVisited) { + getNode(o, node); + } + $(node.getChildrenUL()).slideDown("fast"); + node.plus_img.innerHTML = arrowDown; + node.expanded = true; + } + } +} + +function glowEffect(n,duration) +{ + n.addClass('glow').delay(duration).queue(function(next){ + $(this).removeClass('glow');next(); + }); +} + +function highlightAnchor() +{ + var aname = hashUrl(); + var anchor = $(aname); + if (anchor.parent().attr('class')=='memItemLeft'){ + var rows = $('.memberdecls tr[class$="'+hashValue()+'"]'); + glowEffect(rows.children(),300); // member without details + } else if (anchor.parent().attr('class')=='fieldname'){ + glowEffect(anchor.parent().parent(),1000); // enum value + } else if (anchor.parent().attr('class')=='fieldtype'){ + glowEffect(anchor.parent().parent(),1000); // struct field + } else if (anchor.parent().is(":header")) { + glowEffect(anchor.parent(),1000); // section header + } else { + glowEffect(anchor.next(),1000); // normal member + } +} + +function selectAndHighlight(hash,n) +{ + var a; + if (hash) { + var link=stripPath(pathName())+':'+hash.substring(1); + a=$('.item a[class$="'+link+'"]'); + } + if (a && a.length) { + a.parent().parent().addClass('selected'); + a.parent().parent().attr('id','selected'); + highlightAnchor(); + } else if (n) { + $(n.itemDiv).addClass('selected'); + $(n.itemDiv).attr('id','selected'); + } + if ($('#nav-tree-contents .item:first').hasClass('selected')) { + $('#nav-sync').css('top','30px'); + } else { + $('#nav-sync').css('top','5px'); + } + showRoot(); +} + +function showNode(o, node, index, hash) +{ + if (node && node.childrenData) { + if (typeof(node.childrenData)==='string') { + var varName = node.childrenData; + getScript(node.relpath+varName,function(){ + node.childrenData = getData(varName); + showNode(o,node,index,hash); + },true); + } else { + if (!node.childrenVisited) { + getNode(o, node); + } + $(node.getChildrenUL()).css({'display':'block'}); + node.plus_img.innerHTML = arrowDown; + node.expanded = true; + var n = node.children[o.breadcrumbs[index]]; + if (index+11) hash = '#'+parts[1].replace(/[^\w\-]/g,''); + else hash=''; + } + if (hash.match(/^#l\d+$/)) { + var anchor=$('a[name='+hash.substring(1)+']'); + glowEffect(anchor.parent(),1000); // line number + hash=''; // strip line number anchors + } + var url=root+hash; + var i=-1; + while (NAVTREEINDEX[i+1]<=url) i++; + if (i==-1) { i=0; root=NAVTREE[0][1]; } // fallback: show index + if (navTreeSubIndices[i]) { + gotoNode(o,i,root,hash,relpath) + } else { + getScript(relpath+'navtreeindex'+i,function(){ + navTreeSubIndices[i] = eval('NAVTREEINDEX'+i); + if (navTreeSubIndices[i]) { + gotoNode(o,i,root,hash,relpath); + } + },true); + } +} + +function showSyncOff(n,relpath) +{ + n.html(''); +} + +function showSyncOn(n,relpath) +{ + n.html(''); +} + +function toggleSyncButton(relpath) +{ + var navSync = $('#nav-sync'); + if (navSync.hasClass('sync')) { + navSync.removeClass('sync'); + showSyncOff(navSync,relpath); + storeLink(stripPath2(pathName())+hashUrl()); + } else { + navSync.addClass('sync'); + showSyncOn(navSync,relpath); + deleteLink(); + } +} + +var loadTriggered = false; +var readyTriggered = false; +var loadObject,loadToRoot,loadUrl,loadRelPath; + +$(window).on('load',function(){ + if (readyTriggered) { // ready first + navTo(loadObject,loadToRoot,loadUrl,loadRelPath); + showRoot(); + } + loadTriggered=true; +}); + +function initNavTree(toroot,relpath) +{ + var o = new Object(); + o.toroot = toroot; + o.node = new Object(); + o.node.li = document.getElementById("nav-tree-contents"); + o.node.childrenData = NAVTREE; + o.node.children = new Array(); + o.node.childrenUL = document.createElement("ul"); + o.node.getChildrenUL = function() { return o.node.childrenUL; }; + o.node.li.appendChild(o.node.childrenUL); + o.node.depth = 0; + o.node.relpath = relpath; + o.node.expanded = false; + o.node.isLast = true; + o.node.plus_img = document.createElement("span"); + o.node.plus_img.className = 'arrow'; + o.node.plus_img.innerHTML = arrowRight; + + if (localStorageSupported()) { + var navSync = $('#nav-sync'); + if (cachedLink()) { + showSyncOff(navSync,relpath); + navSync.removeClass('sync'); + } else { + showSyncOn(navSync,relpath); + } + navSync.click(function(){ toggleSyncButton(relpath); }); + } + + if (loadTriggered) { // load before ready + navTo(o,toroot,hashUrl(),relpath); + showRoot(); + } else { // ready before load + loadObject = o; + loadToRoot = toroot; + loadUrl = hashUrl(); + loadRelPath = relpath; + readyTriggered=true; + } + + $(window).bind('hashchange', function(){ + if (window.location.hash && window.location.hash.length>1){ + var a; + if ($(location).attr('hash')){ + var clslink=stripPath(pathName())+':'+hashValue(); + a=$('.item a[class$="'+clslink.replace(/=desktop_vp) { + if (!collapsed) { + collapseExpand(); + } + } else if (width>desktop_vp && collapsedWidth0) { + restoreWidth(0); + collapsed=true; + } + else { + var width = readCookie('width'); + if (width>200 && width<$(window).width()) { restoreWidth(width); } else { restoreWidth(200); } + collapsed=false; + } + } + + header = $("#top"); + sidenav = $("#side-nav"); + content = $("#doc-content"); + navtree = $("#nav-tree"); + footer = $("#nav-path"); + $(".side-nav-resizable").resizable({resize: function(e, ui) { resizeWidth(); } }); + $(sidenav).resizable({ minWidth: 0 }); + $(window).resize(function() { resizeHeight(); }); + var device = navigator.userAgent.toLowerCase(); + var touch_device = device.match(/(iphone|ipod|ipad|android)/); + if (touch_device) { /* wider split bar for touch only devices */ + $(sidenav).css({ paddingRight:'20px' }); + $('.ui-resizable-e').css({ width:'20px' }); + $('#nav-sync').css({ right:'34px' }); + barWidth=20; + } + var width = readCookie('width'); + if (width) { restoreWidth(width); } else { resizeWidth(); } + resizeHeight(); + var url = location.href; + var i=url.indexOf("#"); + if (i>=0) window.location.hash=url.substr(i); + var _preventDefault = function(evt) { evt.preventDefault(); }; + $("#splitbar").bind("dragstart", _preventDefault).bind("selectstart", _preventDefault); + $(".ui-resizable-handle").dblclick(collapseExpand); + $(window).on('load',resizeHeight); +} +/* @license-end */ diff --git a/search/all_0.html b/search/all_0.html new file mode 100644 index 0000000..1ec5b2d --- /dev/null +++ b/search/all_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/all_0.js b/search/all_0.js new file mode 100644 index 0000000..3baae56 --- /dev/null +++ b/search/all_0.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['abstractsinglestrategy_0',['AbstractSingleStrategy',['../classSyft_1_1DfaGameSynthesizer.html#aaa124c897532d012e4f844190c3587e8',1,'Syft::DfaGameSynthesizer::AbstractSingleStrategy()'],['../classSyft_1_1LTLfSynthesizer.html#ae0781228bd68bc7c8bb5ad7fdfe7c137',1,'Syft::LTLfSynthesizer::AbstractSingleStrategy()']]], + ['automaton_5fid_1',['automaton_id',['../classSyft_1_1SymbolicStateDfa.html#a502d2737fedec0dd27268dc6d94be4c4',1,'Syft::SymbolicStateDfa']]], + ['automaton_5fnum_2',['automaton_num',['../classSyft_1_1VarMgr.html#a1562901363bb109776a991853e114e89',1,'Syft::VarMgr']]] +]; diff --git a/search/all_1.html b/search/all_1.html new file mode 100644 index 0000000..9f80e90 --- /dev/null +++ b/search/all_1.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/all_1.js b/search/all_1.js new file mode 100644 index 0000000..6aeedea --- /dev/null +++ b/search/all_1.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['baserunner_3',['BaseRunner',['../classSyft_1_1BaseRunner.html',1,'Syft']]], + ['bdd_5fto_5fstring_4',['bdd_to_string',['../classSyft_1_1VarMgr.html#a80bcad06ff814173f8fa58f4e337acb3',1,'Syft::VarMgr']]], + ['buchireachability_5',['BuchiReachability',['../classSyft_1_1BuchiReachability.html#abc9591a945c0bbe104d027bce1de07b5',1,'Syft::BuchiReachability::BuchiReachability()'],['../classSyft_1_1BuchiReachability.html',1,'Syft::BuchiReachability']]] +]; diff --git a/search/all_10.html b/search/all_10.html new file mode 100644 index 0000000..3bf1196 --- /dev/null +++ b/search/all_10.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/all_10.js b/search/all_10.js new file mode 100644 index 0000000..6178aed --- /dev/null +++ b/search/all_10.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['tlsfargs_111',['TLSFArgs',['../structSyft_1_1TLSFArgs.html',1,'Syft']]], + ['total_5fstate_5fvariable_5fcount_112',['total_state_variable_count',['../classSyft_1_1VarMgr.html#a387816710b48e0131d72e929bdc8e0ae',1,'Syft::VarMgr']]], + ['total_5fvariable_5fcount_113',['total_variable_count',['../classSyft_1_1VarMgr.html#ae8c39857542ccbecd14aaa1c6e8d5551',1,'Syft::VarMgr']]], + ['transducer_114',['Transducer',['../classSyft_1_1Transducer.html',1,'Syft']]], + ['transition_5ffunction_115',['transition_function',['../classSyft_1_1ExplicitStateDfaAdd.html#a429bdcdb58191cd368753bf3c7109cbb',1,'Syft::ExplicitStateDfaAdd::transition_function()'],['../classSyft_1_1SymbolicStateDfa.html#a74df1a95cf5cc82e36c6f9da61da13b0',1,'Syft::SymbolicStateDfa::transition_function()']]], + ['transition_5fvector_5f_116',['transition_vector_',['../classSyft_1_1DfaGameSynthesizer.html#ab6c87ceed400fc936a96b52d65ff70ed',1,'Syft::DfaGameSynthesizer']]] +]; diff --git a/search/all_11.html b/search/all_11.html new file mode 100644 index 0000000..c9f79d2 --- /dev/null +++ b/search/all_11.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/all_11.js b/search/all_11.js new file mode 100644 index 0000000..0e8eee8 --- /dev/null +++ b/search/all_11.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['var_5fmgr_117',['var_mgr',['../classSyft_1_1ExplicitStateDfaAdd.html#ac263afc4a6271d39068db9945b56aec0',1,'Syft::ExplicitStateDfaAdd::var_mgr()'],['../classSyft_1_1SymbolicStateDfa.html#ae7f9d8c71e2e180894b0eb5bdc34a3c3',1,'Syft::SymbolicStateDfa::var_mgr()']]], + ['var_5fmgr_5f_118',['var_mgr_',['../classSyft_1_1DfaGameSynthesizer.html#aad1bbf1f88035a84e7db9de3309ea86e',1,'Syft::DfaGameSynthesizer']]], + ['variable_5flabels_119',['variable_labels',['../classSyft_1_1VarMgr.html#afef5b1b9131a252617ffafc2f5021be1',1,'Syft::VarMgr']]], + ['varmgr_120',['VarMgr',['../classSyft_1_1VarMgr.html',1,'Syft::VarMgr'],['../classSyft_1_1VarMgr.html#a1b5b1ace9b0157d1087bff239260cd65',1,'Syft::VarMgr::VarMgr()']]] +]; diff --git a/search/all_2.html b/search/all_2.html new file mode 100644 index 0000000..02cfffc --- /dev/null +++ b/search/all_2.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/all_2.js b/search/all_2.js new file mode 100644 index 0000000..0b226d3 --- /dev/null +++ b/search/all_2.js @@ -0,0 +1,12 @@ +var searchData= +[ + ['cobuchireachability_6',['coBuchiReachability',['../classSyft_1_1coBuchiReachability.html#a5ae90e1083cbc89561756e733f260b3a',1,'Syft::coBuchiReachability::coBuchiReachability()'],['../classSyft_1_1coBuchiReachability.html',1,'Syft::coBuchiReachability']]], + ['cogr1reachability_7',['coGR1Reachability',['../classSyft_1_1coGR1Reachability.html#a09b9502d0d163b793f9dbfd504a7b168',1,'Syft::coGR1Reachability::coGR1Reachability()'],['../classSyft_1_1coGR1Reachability.html',1,'Syft::coGR1Reachability']]], + ['complement_8',['complement',['../classSyft_1_1SymbolicStateDfa.html#a87e6e8e5eceed87914c1e2ccb990d280',1,'Syft::SymbolicStateDfa']]], + ['construct_5ffrom_5finput_9',['construct_from_input',['../classSyft_1_1InputOutputPartition.html#a977c76841cb9c3aa7fe8a281993031d9',1,'Syft::InputOutputPartition']]], + ['create_5fcomplement_5fstate_5fspace_10',['create_complement_state_space',['../classSyft_1_1VarMgr.html#a20968a4054e4474addf55e6857d0bcff',1,'Syft::VarMgr']]], + ['create_5fnamed_5fvariables_11',['create_named_variables',['../classSyft_1_1VarMgr.html#a624e50cbd328e79847949a02c5450c9a',1,'Syft::VarMgr']]], + ['create_5fproduct_5fstate_5fspace_12',['create_product_state_space',['../classSyft_1_1VarMgr.html#ada4600a6e9ef8a146d30134d7c15f885',1,'Syft::VarMgr']]], + ['create_5fstate_5fvariables_13',['create_state_variables',['../classSyft_1_1VarMgr.html#ae532b674990f328df75803861fc83019',1,'Syft::VarMgr']]], + ['cudd_5fmgr_14',['cudd_mgr',['../classSyft_1_1VarMgr.html#a2cca5b6b5c8ac7653162a84a0314204d',1,'Syft::VarMgr']]] +]; diff --git a/search/all_3.html b/search/all_3.html new file mode 100644 index 0000000..39767b8 --- /dev/null +++ b/search/all_3.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/all_3.js b/search/all_3.js new file mode 100644 index 0000000..5a1a43f --- /dev/null +++ b/search/all_3.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['dfa_5fcomplement_15',['dfa_complement',['../classSyft_1_1ExplicitStateDfa.html#af0e4217b6bb04a9a210b29a63d45e5cf',1,'Syft::ExplicitStateDfa']]], + ['dfa_5fminimize_16',['dfa_minimize',['../classSyft_1_1ExplicitStateDfa.html#a057e79cedc7600fdefaea036eb745ee0',1,'Syft::ExplicitStateDfa']]], + ['dfa_5fof_5fformula_17',['dfa_of_formula',['../classSyft_1_1ExplicitStateDfa.html#aed0406d1f1d2dace3fc31bc288941969',1,'Syft::ExplicitStateDfa']]], + ['dfa_5fprint_18',['dfa_print',['../classSyft_1_1ExplicitStateDfa.html#a2c6c1842c479a3bdeb28fba6ebedf8f3',1,'Syft::ExplicitStateDfa']]], + ['dfa_5fproduct_5fand_19',['dfa_product_and',['../classSyft_1_1ExplicitStateDfa.html#af84fdaab633b5b1653a10908fd235f91',1,'Syft::ExplicitStateDfa']]], + ['dfa_5fproduct_5for_20',['dfa_product_or',['../classSyft_1_1ExplicitStateDfa.html#a5e6e64a2a47beead35ee231bf32a265c',1,'Syft::ExplicitStateDfa']]], + ['dfagamesynthesizer_21',['DfaGameSynthesizer',['../classSyft_1_1DfaGameSynthesizer.html#a5793361e1c8892a18cb76faa5309097a',1,'Syft::DfaGameSynthesizer::DfaGameSynthesizer()'],['../classSyft_1_1DfaGameSynthesizer.html',1,'Syft::DfaGameSynthesizer']]], + ['dump_5fdot_22',['dump_dot',['../classSyft_1_1ExplicitStateDfaAdd.html#afcacdbd314e1e6c237b99cc0f61313ae',1,'Syft::ExplicitStateDfaAdd::dump_dot()'],['../classSyft_1_1SymbolicStateDfa.html#ae2b6e13bfc5497239544cfe45fab5683',1,'Syft::SymbolicStateDfa::dump_dot()'],['../classSyft_1_1Transducer.html#a0f2c3d5656d2a211e0b72b51897e881d',1,'Syft::Transducer::dump_dot()'],['../classSyft_1_1VarMgr.html#ab8d03ecaca62d7a1eeaaf5a28bd73d6c',1,'Syft::VarMgr::dump_dot(const CUDD::ADD &add, const std::string &filename) const'],['../classSyft_1_1VarMgr.html#a293ad8c34f959aaeea0fa38aa2bca50d',1,'Syft::VarMgr::dump_dot(const std::vector< CUDD::ADD > &adds, const std::vector< std::string > &function_labels, const std::string &filename) const']]] +]; diff --git a/search/all_4.html b/search/all_4.html new file mode 100644 index 0000000..fc40463 --- /dev/null +++ b/search/all_4.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/all_4.js b/search/all_4.js new file mode 100644 index 0000000..3720acb --- /dev/null +++ b/search/all_4.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['exists_23',['Exists',['../classSyft_1_1Exists.html',1,'Syft']]], + ['existsforall_24',['ExistsForall',['../classSyft_1_1ExistsForall.html',1,'Syft']]], + ['explicitstatedfa_25',['ExplicitStateDfa',['../classSyft_1_1ExplicitStateDfa.html#ab20fb099de4fd604d9c9aa0c2044fc94',1,'Syft::ExplicitStateDfa::ExplicitStateDfa(DFA *dfa, int nb_variables)'],['../classSyft_1_1ExplicitStateDfa.html#a3a3f1cff74bb344cbcf031b8e064ebc5',1,'Syft::ExplicitStateDfa::ExplicitStateDfa(DFA *dfa, const std::vector< std::string > &names)'],['../classSyft_1_1ExplicitStateDfa.html#ab0267e55f151d7dc79a6a49e7b5e636b',1,'Syft::ExplicitStateDfa::ExplicitStateDfa(const ExplicitStateDfa &other)'],['../classSyft_1_1ExplicitStateDfa.html',1,'Syft::ExplicitStateDfa']]], + ['explicitstatedfaadd_26',['ExplicitStateDfaAdd',['../classSyft_1_1ExplicitStateDfaAdd.html',1,'Syft']]] +]; diff --git a/search/all_5.html b/search/all_5.html new file mode 100644 index 0000000..9dd9344 --- /dev/null +++ b/search/all_5.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/all_5.js b/search/all_5.js new file mode 100644 index 0000000..dcfa8e7 --- /dev/null +++ b/search/all_5.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['fairnessltlfsynthesizer_27',['FairnessLtlfSynthesizer',['../classSyft_1_1FairnessLtlfSynthesizer.html#a475779ad4ca2ad03f6d8d38241ae4f4e',1,'Syft::FairnessLtlfSynthesizer::FairnessLtlfSynthesizer()'],['../classSyft_1_1FairnessLtlfSynthesizer.html',1,'Syft::FairnessLtlfSynthesizer']]], + ['fairnessrunner_28',['FairnessRunner',['../classSyft_1_1FairnessRunner.html',1,'Syft']]], + ['final_5fstates_29',['final_states',['../classSyft_1_1ExplicitStateDfaAdd.html#abd534cb84ca826dbd230be07cf118e77',1,'Syft::ExplicitStateDfaAdd::final_states()'],['../classSyft_1_1SymbolicStateDfa.html#a3805aee1a5f0cc11f6598460646e29e1',1,'Syft::SymbolicStateDfa::final_states()']]], + ['forall_30',['Forall',['../classSyft_1_1Forall.html',1,'Syft']]], + ['forallexists_31',['ForallExists',['../classSyft_1_1ForallExists.html',1,'Syft']]], + ['from_5fdfa_5fmona_32',['from_dfa_mona',['../classSyft_1_1ExplicitStateDfaAdd.html#af4ec91852395c954072e3187d3232f77',1,'Syft::ExplicitStateDfaAdd']]], + ['from_5fexplicit_33',['from_explicit',['../classSyft_1_1SymbolicStateDfa.html#ac14b97fb14b1c3b97a3a9c7ffe4c76c8',1,'Syft::SymbolicStateDfa']]], + ['from_5fpredicates_34',['from_predicates',['../classSyft_1_1SymbolicStateDfa.html#ab1db86ccbee44e0f0763b2501f5ae112',1,'Syft::SymbolicStateDfa']]] +]; diff --git a/search/all_6.html b/search/all_6.html new file mode 100644 index 0000000..f1e516d --- /dev/null +++ b/search/all_6.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/all_6.js b/search/all_6.js new file mode 100644 index 0000000..70d15e4 --- /dev/null +++ b/search/all_6.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['get_5fformula_35',['get_formula',['../classSyft_1_1Parser.html#ac0062a4301f7ec4cdce3376d05b7c5d4',1,'Syft::Parser']]], + ['get_5finput_5fvariables_36',['get_input_variables',['../classSyft_1_1Parser.html#aa76c345bca41d45862c14acca78f999e',1,'Syft::Parser']]], + ['get_5fnb_5fvariables_37',['get_nb_variables',['../classSyft_1_1ExplicitStateDfa.html#afca00daf9a3446a81c435f263a0ff1e5',1,'Syft::ExplicitStateDfa']]], + ['get_5foutput_5fvariables_38',['get_output_variables',['../classSyft_1_1Parser.html#a0aa460587f3519cde1c59d8196601817',1,'Syft::Parser']]], + ['get_5fsys_5ffirst_39',['get_sys_first',['../classSyft_1_1Parser.html#afd506c507b2c47b6e397197b3d89a551',1,'Syft::Parser']]], + ['gr1_40',['GR1',['../structSyft_1_1GR1.html',1,'Syft']]], + ['gr1ltlfsynthesizer_41',['GR1LTLfSynthesizer',['../classSyft_1_1GR1LTLfSynthesizer.html#a3fb8c2f3166ee646d824a77760b26180',1,'Syft::GR1LTLfSynthesizer::GR1LTLfSynthesizer()'],['../classSyft_1_1GR1LTLfSynthesizer.html',1,'Syft::GR1LTLfSynthesizer']]], + ['gr1runner_42',['GR1Runner',['../classSyft_1_1GR1Runner.html',1,'Syft']]] +]; diff --git a/search/all_7.html b/search/all_7.html new file mode 100644 index 0000000..8ddbf6c --- /dev/null +++ b/search/all_7.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/all_7.js b/search/all_7.js new file mode 100644 index 0000000..a532265 --- /dev/null +++ b/search/all_7.js @@ -0,0 +1,14 @@ +var searchData= +[ + ['includes_5finitial_5fstate_43',['includes_initial_state',['../classSyft_1_1DfaGameSynthesizer.html#a162cc46aa8ebc5e7e5aa2ce9dd9f9ccd',1,'Syft::DfaGameSynthesizer']]], + ['index_5fto_5fname_44',['index_to_name',['../classSyft_1_1VarMgr.html#a11c5cc79c94f17c76de11399933dd045',1,'Syft::VarMgr']]], + ['initial_5fstate_45',['initial_state',['../classSyft_1_1ExplicitStateDfaAdd.html#a84be5bec8f4559399f6ac7046619c2bb',1,'Syft::ExplicitStateDfaAdd::initial_state()'],['../classSyft_1_1SymbolicStateDfa.html#a7670c2e0ffdf1c0a907dac1f07a76272',1,'Syft::SymbolicStateDfa::initial_state() const']]], + ['initial_5fstate_5fbdd_46',['initial_state_bdd',['../classSyft_1_1SymbolicStateDfa.html#aa46646950e6f09c82fcca5058a68e583',1,'Syft::SymbolicStateDfa']]], + ['initial_5fvector_5f_47',['initial_vector_',['../classSyft_1_1DfaGameSynthesizer.html#abc276f9a5cc2b8b1a6238711e01eee4f',1,'Syft::DfaGameSynthesizer']]], + ['input_5fcube_48',['input_cube',['../classSyft_1_1VarMgr.html#a1d61504ecc6df26d61e0e50dea0b5706',1,'Syft::VarMgr']]], + ['input_5fvariable_5fcount_49',['input_variable_count',['../classSyft_1_1VarMgr.html#abe1fa46a7b9911d683bb18b2acbb1d69',1,'Syft::VarMgr']]], + ['input_5fvariable_5flabels_50',['input_variable_labels',['../classSyft_1_1VarMgr.html#a3d23f98e3716b1f8f1528c7a0e82a199',1,'Syft::VarMgr']]], + ['inputoutputpartition_51',['InputOutputPartition',['../classSyft_1_1InputOutputPartition.html#a9194a36f490e82ff2da202042fce76bf',1,'Syft::InputOutputPartition::InputOutputPartition()'],['../classSyft_1_1InputOutputPartition.html',1,'Syft::InputOutputPartition']]], + ['is_5finput_52',['is_input',['../classSyft_1_1InputOutputPartition.html#a5dca88d72a00d3ca71de24b7192876fd',1,'Syft::InputOutputPartition']]], + ['is_5foutput_53',['is_output',['../classSyft_1_1InputOutputPartition.html#ad48782db48ed3d083ca6d9b84583636c',1,'Syft::InputOutputPartition']]] +]; diff --git a/search/all_8.html b/search/all_8.html new file mode 100644 index 0000000..83c55ae --- /dev/null +++ b/search/all_8.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/all_8.js b/search/all_8.js new file mode 100644 index 0000000..18ab154 --- /dev/null +++ b/search/all_8.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['ltlfmaxsetsynthesizer_54',['LTLfMaxSetSynthesizer',['../classSyft_1_1LTLfMaxSetSynthesizer.html#a1b1ec8f693c47a58f5a14c7552ae4e72',1,'Syft::LTLfMaxSetSynthesizer::LTLfMaxSetSynthesizer()'],['../classSyft_1_1LTLfMaxSetSynthesizer.html',1,'Syft::LTLfMaxSetSynthesizer']]], + ['ltlfsynthesizer_55',['LTLfSynthesizer',['../classSyft_1_1LTLfSynthesizer.html#a3049e69dff410e8b09c8f8da7ee7c5c4',1,'Syft::LTLfSynthesizer::LTLfSynthesizer()'],['../classSyft_1_1LTLfSynthesizer.html',1,'Syft::LTLfSynthesizer']]], + ['lydiasyft_3a_20a_20compositional_20symbolic_20synthesis_20framework_20for_20ltlf_20specification_56',['LydiaSyft: A Compositional Symbolic Synthesis Framework for LTLf Specification',['../index.html',1,'']]] +]; diff --git a/search/all_9.html b/search/all_9.html new file mode 100644 index 0000000..1e263c1 --- /dev/null +++ b/search/all_9.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/all_9.js b/search/all_9.js new file mode 100644 index 0000000..8bbb18a --- /dev/null +++ b/search/all_9.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['make_5fcompose_5fvector_57',['make_compose_vector',['../classSyft_1_1VarMgr.html#af5fc355872038ae5564da7d436709eb7',1,'Syft::VarMgr']]], + ['make_5feval_5fvector_58',['make_eval_vector',['../classSyft_1_1VarMgr.html#af210f7054001c41a021a4848a27e4a14',1,'Syft::VarMgr']]], + ['make_5fstate_5feval_5fvector_59',['make_state_eval_vector',['../classSyft_1_1VarMgr.html#a02dea41f6c9bc9f60991c4538e0117cf',1,'Syft::VarMgr']]], + ['maxsetrunner_60',['MaxSetRunner',['../classSyft_1_1MaxSetRunner.html',1,'Syft']]], + ['maxsetsynthesisresult_61',['MaxSetSynthesisResult',['../structSyft_1_1MaxSetSynthesisResult.html',1,'Syft']]] +]; diff --git a/search/all_a.html b/search/all_a.html new file mode 100644 index 0000000..3a6cac1 --- /dev/null +++ b/search/all_a.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/all_a.js b/search/all_a.js new file mode 100644 index 0000000..663639c --- /dev/null +++ b/search/all_a.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['name_5fto_5fvariable_62',['name_to_variable',['../classSyft_1_1VarMgr.html#a2e3e6a63ab9e482caf2a0e38a0493e6c',1,'Syft::VarMgr']]], + ['new_5fsink_5fstates_63',['new_sink_states',['../classSyft_1_1SymbolicStateDfa.html#a8216a69451ffc470881aabb3494a45cb',1,'Syft::SymbolicStateDfa']]], + ['noquantification_64',['NoQuantification',['../classSyft_1_1NoQuantification.html',1,'Syft']]] +]; diff --git a/search/all_b.html b/search/all_b.html new file mode 100644 index 0000000..130deb4 --- /dev/null +++ b/search/all_b.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/all_b.js b/search/all_b.js new file mode 100644 index 0000000..04b1ec8 --- /dev/null +++ b/search/all_b.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['onestepsynthesisresult_65',['OneStepSynthesisResult',['../structSyft_1_1OneStepSynthesisResult.html',1,'Syft']]], + ['operator_3d_66',['operator=',['../classSyft_1_1ExplicitStateDfa.html#a34c2a98c2296b307d4e88e16d64fcc50',1,'Syft::ExplicitStateDfa']]], + ['output_5fcube_67',['output_cube',['../classSyft_1_1VarMgr.html#abae667a77bc43e813b027205620d475f',1,'Syft::VarMgr']]], + ['output_5fvariable_5fcount_68',['output_variable_count',['../classSyft_1_1VarMgr.html#ac175ed202b133e0dace9362b22f3ac57',1,'Syft::VarMgr']]], + ['output_5fvariable_5flabels_69',['output_variable_labels',['../classSyft_1_1VarMgr.html#a1abb49c5f62b69c00975d2e810c8e99a',1,'Syft::VarMgr']]] +]; diff --git a/search/all_c.html b/search/all_c.html new file mode 100644 index 0000000..3dd5af0 --- /dev/null +++ b/search/all_c.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/all_c.js b/search/all_c.js new file mode 100644 index 0000000..b3a8e7f --- /dev/null +++ b/search/all_c.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['parser_70',['Parser',['../classSyft_1_1Parser.html#ac4c01ee811e3977644f357a0c60b9a52',1,'Syft::Parser::Parser()'],['../classSyft_1_1Parser.html',1,'Syft::Parser']]], + ['partition_5fvariables_71',['partition_variables',['../classSyft_1_1VarMgr.html#ab829aa3b49133ac514a30cbd060eb117',1,'Syft::VarMgr']]], + ['preimage_72',['preimage',['../classSyft_1_1DfaGameSynthesizer.html#ad479ca400c626e26f3a178b0b44d66db',1,'Syft::DfaGameSynthesizer']]], + ['printer_73',['Printer',['../classSyft_1_1Printer.html',1,'Syft']]], + ['product_5fand_74',['product_AND',['../classSyft_1_1SymbolicStateDfa.html#ab08f167d065dcb89277c012369c2a805',1,'Syft::SymbolicStateDfa']]], + ['product_5for_75',['product_OR',['../classSyft_1_1SymbolicStateDfa.html#a5a668389e3a7a4d579340bee83dd53a4',1,'Syft::SymbolicStateDfa']]], + ['project_5finto_5fstates_76',['project_into_states',['../classSyft_1_1DfaGameSynthesizer.html#ae011d7451fa534119a49ffc06478925f',1,'Syft::DfaGameSynthesizer']]], + ['protagonist_5fplayer_5f_77',['protagonist_player_',['../classSyft_1_1DfaGameSynthesizer.html#abfaa90f84c18bc4fca026fbe3fd773d8',1,'Syft::DfaGameSynthesizer']]] +]; diff --git a/search/all_d.html b/search/all_d.html new file mode 100644 index 0000000..af7f2f0 --- /dev/null +++ b/search/all_d.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/all_d.js b/search/all_d.js new file mode 100644 index 0000000..3ea289a --- /dev/null +++ b/search/all_d.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['quantification_78',['Quantification',['../classSyft_1_1Quantification.html',1,'Syft']]], + ['quantify_5findependent_5fvariables_5f_79',['quantify_independent_variables_',['../classSyft_1_1DfaGameSynthesizer.html#a13197b158f0731406d177fc8d1abfd4f',1,'Syft::DfaGameSynthesizer']]], + ['quantify_5fnon_5fstate_5fvariables_5f_80',['quantify_non_state_variables_',['../classSyft_1_1DfaGameSynthesizer.html#a56543024a550a28c7b419e4475f5f5ce',1,'Syft::DfaGameSynthesizer']]] +]; diff --git a/search/all_e.html b/search/all_e.html new file mode 100644 index 0000000..e25df42 --- /dev/null +++ b/search/all_e.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/all_e.js b/search/all_e.js new file mode 100644 index 0000000..e1d5a5e --- /dev/null +++ b/search/all_e.js @@ -0,0 +1,12 @@ +var searchData= +[ + ['reachability_81',['Reachability',['../classSyft_1_1Reachability.html#ae0a594a1b0edf589e2c0abdbef8a5e54',1,'Syft::Reachability::Reachability()'],['../classSyft_1_1Reachability.html',1,'Syft::Reachability']]], + ['reachabilitymaxset_82',['ReachabilityMaxSet',['../classSyft_1_1ReachabilityMaxSet.html#a15ecc7aeea8faa5cf5e6481019dffe14',1,'Syft::ReachabilityMaxSet::ReachabilityMaxSet()'],['../classSyft_1_1ReachabilityMaxSet.html',1,'Syft::ReachabilityMaxSet']]], + ['read_5ffrom_5ffile_83',['read_from_file',['../classSyft_1_1Parser.html#ae0ed0d2bb19955d5b3843aac6d60b833',1,'Syft::Parser::read_from_file()'],['../classSyft_1_1InputOutputPartition.html#ae21d6d853aa832b69153e166535b7d8b',1,'Syft::InputOutputPartition::read_from_file()']]], + ['read_5ffrom_5fgr1_5ffile_84',['read_from_gr1_file',['../structSyft_1_1GR1.html#a1dd0b84e50adb27328640c66f0fc21d4',1,'Syft::GR1']]], + ['read_5fgr1_5fjustice_85',['read_gr1_justice',['../structSyft_1_1GR1.html#a5e966ab62d98b02a64822aa9e664c53b',1,'Syft::GR1']]], + ['restrict_5fdfa_5fwith_5fstates_86',['restrict_dfa_with_states',['../classSyft_1_1SymbolicStateDfa.html#a6c01d1be879947637a2d55c9c321f728',1,'Syft::SymbolicStateDfa::restrict_dfa_with_states()'],['../classSyft_1_1ExplicitStateDfa.html#a7eb83170230a4f1c8f189c8e178ebd94',1,'Syft::ExplicitStateDfa::restrict_dfa_with_states(ExplicitStateDfa &d, std::vector< size_t > states)']]], + ['restrict_5fdfa_5fwith_5ftransitions_87',['restrict_dfa_with_transitions',['../classSyft_1_1ExplicitStateDfa.html#ac0dc4291d3d2efd97ca59b9a5cddf3b9',1,'Syft::ExplicitStateDfa::restrict_dfa_with_transitions()'],['../classSyft_1_1SymbolicStateDfa.html#ab216bbd556a0a49699d07113044d09e7',1,'Syft::SymbolicStateDfa::restrict_dfa_with_transitions()']]], + ['run_88',['run',['../classSyft_1_1BuchiReachability.html#a9f1945cbb20abdd0bff1f0606ca352d4',1,'Syft::BuchiReachability::run()'],['../classSyft_1_1Synthesizer.html#a19589fbbdbc174df570e763f29f51606',1,'Syft::Synthesizer::run()'],['../classSyft_1_1StabilityLtlfSynthesizer.html#a165546eb5d978ebbbce90837ca393e33',1,'Syft::StabilityLtlfSynthesizer::run()'],['../classSyft_1_1LTLfSynthesizer.html#a90b9890a9815ff757da7e92e3dfa83d4',1,'Syft::LTLfSynthesizer::run()'],['../classSyft_1_1LTLfMaxSetSynthesizer.html#a8872a798e4881426eb27605aee1e0e2e',1,'Syft::LTLfMaxSetSynthesizer::run()'],['../classSyft_1_1GR1LTLfSynthesizer.html#ab0b1f5f0d4fcd24b642549f950f5f59b',1,'Syft::GR1LTLfSynthesizer::run()'],['../classSyft_1_1FairnessLtlfSynthesizer.html#a8b03186e0732a6d713d9d26fa014a166',1,'Syft::FairnessLtlfSynthesizer::run()'],['../classSyft_1_1ReachabilityMaxSet.html#aed2afd6a549e6f7b3bed0a304dc29c42',1,'Syft::ReachabilityMaxSet::run()'],['../classSyft_1_1Reachability.html#a9b0ffe1dbf4ea8dbfee8c71d774556c9',1,'Syft::Reachability::run()'],['../classSyft_1_1DfaGameSynthesizer.html#a385fea5ebd717479ee51399647c5d651',1,'Syft::DfaGameSynthesizer::run()'],['../classSyft_1_1coGR1Reachability.html#ad46a94cf541a7cc3a733285e7b892957',1,'Syft::coGR1Reachability::run()'],['../classSyft_1_1coBuchiReachability.html#acac33d2314323a35a026fa4dc8273b6c',1,'Syft::coBuchiReachability::run()']]], + ['run_5fmaxset_89',['run_maxset',['../classSyft_1_1ReachabilityMaxSet.html#a9567dd9af5eef782afee1aa18e7c9615',1,'Syft::ReachabilityMaxSet']]] +]; diff --git a/search/all_f.html b/search/all_f.html new file mode 100644 index 0000000..b23da6c --- /dev/null +++ b/search/all_f.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/all_f.js b/search/all_f.js new file mode 100644 index 0000000..7f95eac --- /dev/null +++ b/search/all_f.js @@ -0,0 +1,24 @@ +var searchData= +[ + ['smtonesteprealizabilityvisitor_90',['SmtOneStepRealizabilityVisitor',['../classSyft_1_1SmtOneStepRealizabilityVisitor.html',1,'Syft']]], + ['smtonestepunrealizabilityvisitor_91',['SmtOneStepUnrealizabilityVisitor',['../classSyft_1_1SmtOneStepUnrealizabilityVisitor.html',1,'Syft']]], + ['spec_5f_92',['spec_',['../classSyft_1_1Synthesizer.html#a530ac437b63754f83d6ee0d6f27bb075',1,'Syft::Synthesizer']]], + ['stabilityltlfsynthesizer_93',['StabilityLtlfSynthesizer',['../classSyft_1_1StabilityLtlfSynthesizer.html#a51b8ea1014e85b852b7c5e6f4c4a2927',1,'Syft::StabilityLtlfSynthesizer::StabilityLtlfSynthesizer()'],['../classSyft_1_1StabilityLtlfSynthesizer.html',1,'Syft::StabilityLtlfSynthesizer']]], + ['stabilityrunner_94',['StabilityRunner',['../classSyft_1_1StabilityRunner.html',1,'Syft']]], + ['start_95',['start',['../classSyft_1_1Stopwatch.html#ab42c3f661b49199ff3c613ecd152f736',1,'Syft::Stopwatch']]], + ['starting_5fplayer_5f_96',['starting_player_',['../classSyft_1_1DfaGameSynthesizer.html#a265506e2950231f37cf70f1e09b7c7e9',1,'Syft::DfaGameSynthesizer']]], + ['state_5fcount_97',['state_count',['../classSyft_1_1ExplicitStateDfaAdd.html#a686e1862ade00a1c99d9025995b4ecb5',1,'Syft::ExplicitStateDfaAdd']]], + ['state_5fto_5fbinary_98',['state_to_binary',['../classSyft_1_1SymbolicStateDfa.html#a5254abde379d9878a754fffc30565c7b',1,'Syft::SymbolicStateDfa']]], + ['state_5fvariable_99',['state_variable',['../classSyft_1_1VarMgr.html#a4585a150e1a0bc2d908d0e249f95ea9a',1,'Syft::VarMgr']]], + ['state_5fvariable_5fcount_100',['state_variable_count',['../classSyft_1_1VarMgr.html#ad3c878bdf9e9cc1d718a67f4e1955bf9',1,'Syft::VarMgr']]], + ['state_5fvariable_5flabels_101',['state_variable_labels',['../classSyft_1_1VarMgr.html#a71b969a46c6e16f4489c1b3cdd3ad1b2',1,'Syft::VarMgr']]], + ['state_5fvariables_5fcube_102',['state_variables_cube',['../classSyft_1_1VarMgr.html#afe31cc2babdf454ef853f6480b53192f',1,'Syft::VarMgr']]], + ['state_5fvector_5fto_5fbdd_103',['state_vector_to_bdd',['../classSyft_1_1VarMgr.html#a8cd8b52db7087b049cc588e4ebbe9b20',1,'Syft::VarMgr']]], + ['stop_104',['stop',['../classSyft_1_1Stopwatch.html#a327bb2613e461e0ce1202178a0959d12',1,'Syft::Stopwatch']]], + ['stopwatch_105',['Stopwatch',['../classSyft_1_1Stopwatch.html#a4d9295677bba0dcdfd0edf4cb1ab05eb',1,'Syft::Stopwatch::Stopwatch()'],['../classSyft_1_1Stopwatch.html',1,'Syft::Stopwatch']]], + ['symbolicstatedfa_106',['SymbolicStateDfa',['../classSyft_1_1SymbolicStateDfa.html',1,'Syft']]], + ['synthesisresult_107',['SynthesisResult',['../structSyft_1_1SynthesisResult.html',1,'Syft']]], + ['synthesisrunner_108',['SynthesisRunner',['../classSyft_1_1SynthesisRunner.html',1,'Syft']]], + ['synthesizer_109',['Synthesizer',['../classSyft_1_1Synthesizer.html',1,'Syft']]], + ['synthesizer_3c_20symbolicstatedfa_20_3e_110',['Synthesizer< SymbolicStateDfa >',['../classSyft_1_1Synthesizer.html',1,'Syft']]] +]; diff --git a/search/classes_0.html b/search/classes_0.html new file mode 100644 index 0000000..af8159e --- /dev/null +++ b/search/classes_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/classes_0.js b/search/classes_0.js new file mode 100644 index 0000000..42646be --- /dev/null +++ b/search/classes_0.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['baserunner_121',['BaseRunner',['../classSyft_1_1BaseRunner.html',1,'Syft']]], + ['buchireachability_122',['BuchiReachability',['../classSyft_1_1BuchiReachability.html',1,'Syft']]] +]; diff --git a/search/classes_1.html b/search/classes_1.html new file mode 100644 index 0000000..576e916 --- /dev/null +++ b/search/classes_1.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/classes_1.js b/search/classes_1.js new file mode 100644 index 0000000..8e8ed93 --- /dev/null +++ b/search/classes_1.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['cobuchireachability_123',['coBuchiReachability',['../classSyft_1_1coBuchiReachability.html',1,'Syft']]], + ['cogr1reachability_124',['coGR1Reachability',['../classSyft_1_1coGR1Reachability.html',1,'Syft']]] +]; diff --git a/search/classes_10.html b/search/classes_10.html new file mode 100644 index 0000000..4af2c80 --- /dev/null +++ b/search/classes_10.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/classes_10.js b/search/classes_10.js new file mode 100644 index 0000000..04b78d7 --- /dev/null +++ b/search/classes_10.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['varmgr_161',['VarMgr',['../classSyft_1_1VarMgr.html',1,'Syft']]] +]; diff --git a/search/classes_2.html b/search/classes_2.html new file mode 100644 index 0000000..956405e --- /dev/null +++ b/search/classes_2.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/classes_2.js b/search/classes_2.js new file mode 100644 index 0000000..fb69d95 --- /dev/null +++ b/search/classes_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['dfagamesynthesizer_125',['DfaGameSynthesizer',['../classSyft_1_1DfaGameSynthesizer.html',1,'Syft']]] +]; diff --git a/search/classes_3.html b/search/classes_3.html new file mode 100644 index 0000000..d33343b --- /dev/null +++ b/search/classes_3.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/classes_3.js b/search/classes_3.js new file mode 100644 index 0000000..567f290 --- /dev/null +++ b/search/classes_3.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['exists_126',['Exists',['../classSyft_1_1Exists.html',1,'Syft']]], + ['existsforall_127',['ExistsForall',['../classSyft_1_1ExistsForall.html',1,'Syft']]], + ['explicitstatedfa_128',['ExplicitStateDfa',['../classSyft_1_1ExplicitStateDfa.html',1,'Syft']]], + ['explicitstatedfaadd_129',['ExplicitStateDfaAdd',['../classSyft_1_1ExplicitStateDfaAdd.html',1,'Syft']]] +]; diff --git a/search/classes_4.html b/search/classes_4.html new file mode 100644 index 0000000..8430b07 --- /dev/null +++ b/search/classes_4.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/classes_4.js b/search/classes_4.js new file mode 100644 index 0000000..fe611ec --- /dev/null +++ b/search/classes_4.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['fairnessltlfsynthesizer_130',['FairnessLtlfSynthesizer',['../classSyft_1_1FairnessLtlfSynthesizer.html',1,'Syft']]], + ['fairnessrunner_131',['FairnessRunner',['../classSyft_1_1FairnessRunner.html',1,'Syft']]], + ['forall_132',['Forall',['../classSyft_1_1Forall.html',1,'Syft']]], + ['forallexists_133',['ForallExists',['../classSyft_1_1ForallExists.html',1,'Syft']]] +]; diff --git a/search/classes_5.html b/search/classes_5.html new file mode 100644 index 0000000..c2f1b76 --- /dev/null +++ b/search/classes_5.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/classes_5.js b/search/classes_5.js new file mode 100644 index 0000000..7db17df --- /dev/null +++ b/search/classes_5.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['gr1_134',['GR1',['../structSyft_1_1GR1.html',1,'Syft']]], + ['gr1ltlfsynthesizer_135',['GR1LTLfSynthesizer',['../classSyft_1_1GR1LTLfSynthesizer.html',1,'Syft']]], + ['gr1runner_136',['GR1Runner',['../classSyft_1_1GR1Runner.html',1,'Syft']]] +]; diff --git a/search/classes_6.html b/search/classes_6.html new file mode 100644 index 0000000..e39847c --- /dev/null +++ b/search/classes_6.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/classes_6.js b/search/classes_6.js new file mode 100644 index 0000000..9f3b7a6 --- /dev/null +++ b/search/classes_6.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['inputoutputpartition_137',['InputOutputPartition',['../classSyft_1_1InputOutputPartition.html',1,'Syft']]] +]; diff --git a/search/classes_7.html b/search/classes_7.html new file mode 100644 index 0000000..a2c4d1a --- /dev/null +++ b/search/classes_7.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/classes_7.js b/search/classes_7.js new file mode 100644 index 0000000..de081c2 --- /dev/null +++ b/search/classes_7.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['ltlfmaxsetsynthesizer_138',['LTLfMaxSetSynthesizer',['../classSyft_1_1LTLfMaxSetSynthesizer.html',1,'Syft']]], + ['ltlfsynthesizer_139',['LTLfSynthesizer',['../classSyft_1_1LTLfSynthesizer.html',1,'Syft']]] +]; diff --git a/search/classes_8.html b/search/classes_8.html new file mode 100644 index 0000000..17003e4 --- /dev/null +++ b/search/classes_8.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/classes_8.js b/search/classes_8.js new file mode 100644 index 0000000..f3aaceb --- /dev/null +++ b/search/classes_8.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['maxsetrunner_140',['MaxSetRunner',['../classSyft_1_1MaxSetRunner.html',1,'Syft']]], + ['maxsetsynthesisresult_141',['MaxSetSynthesisResult',['../structSyft_1_1MaxSetSynthesisResult.html',1,'Syft']]] +]; diff --git a/search/classes_9.html b/search/classes_9.html new file mode 100644 index 0000000..b8afa8c --- /dev/null +++ b/search/classes_9.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/classes_9.js b/search/classes_9.js new file mode 100644 index 0000000..5b88c07 --- /dev/null +++ b/search/classes_9.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['noquantification_142',['NoQuantification',['../classSyft_1_1NoQuantification.html',1,'Syft']]] +]; diff --git a/search/classes_a.html b/search/classes_a.html new file mode 100644 index 0000000..6788af2 --- /dev/null +++ b/search/classes_a.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/classes_a.js b/search/classes_a.js new file mode 100644 index 0000000..73951ce --- /dev/null +++ b/search/classes_a.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['onestepsynthesisresult_143',['OneStepSynthesisResult',['../structSyft_1_1OneStepSynthesisResult.html',1,'Syft']]] +]; diff --git a/search/classes_b.html b/search/classes_b.html new file mode 100644 index 0000000..3fcb498 --- /dev/null +++ b/search/classes_b.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/classes_b.js b/search/classes_b.js new file mode 100644 index 0000000..8e45088 --- /dev/null +++ b/search/classes_b.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['parser_144',['Parser',['../classSyft_1_1Parser.html',1,'Syft']]], + ['printer_145',['Printer',['../classSyft_1_1Printer.html',1,'Syft']]] +]; diff --git a/search/classes_c.html b/search/classes_c.html new file mode 100644 index 0000000..2f7b1f3 --- /dev/null +++ b/search/classes_c.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/classes_c.js b/search/classes_c.js new file mode 100644 index 0000000..2931b93 --- /dev/null +++ b/search/classes_c.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['quantification_146',['Quantification',['../classSyft_1_1Quantification.html',1,'Syft']]] +]; diff --git a/search/classes_d.html b/search/classes_d.html new file mode 100644 index 0000000..f9011e7 --- /dev/null +++ b/search/classes_d.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/classes_d.js b/search/classes_d.js new file mode 100644 index 0000000..7043305 --- /dev/null +++ b/search/classes_d.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['reachability_147',['Reachability',['../classSyft_1_1Reachability.html',1,'Syft']]], + ['reachabilitymaxset_148',['ReachabilityMaxSet',['../classSyft_1_1ReachabilityMaxSet.html',1,'Syft']]] +]; diff --git a/search/classes_e.html b/search/classes_e.html new file mode 100644 index 0000000..bb33dcf --- /dev/null +++ b/search/classes_e.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/classes_e.js b/search/classes_e.js new file mode 100644 index 0000000..47389a2 --- /dev/null +++ b/search/classes_e.js @@ -0,0 +1,13 @@ +var searchData= +[ + ['smtonesteprealizabilityvisitor_149',['SmtOneStepRealizabilityVisitor',['../classSyft_1_1SmtOneStepRealizabilityVisitor.html',1,'Syft']]], + ['smtonestepunrealizabilityvisitor_150',['SmtOneStepUnrealizabilityVisitor',['../classSyft_1_1SmtOneStepUnrealizabilityVisitor.html',1,'Syft']]], + ['stabilityltlfsynthesizer_151',['StabilityLtlfSynthesizer',['../classSyft_1_1StabilityLtlfSynthesizer.html',1,'Syft']]], + ['stabilityrunner_152',['StabilityRunner',['../classSyft_1_1StabilityRunner.html',1,'Syft']]], + ['stopwatch_153',['Stopwatch',['../classSyft_1_1Stopwatch.html',1,'Syft']]], + ['symbolicstatedfa_154',['SymbolicStateDfa',['../classSyft_1_1SymbolicStateDfa.html',1,'Syft']]], + ['synthesisresult_155',['SynthesisResult',['../structSyft_1_1SynthesisResult.html',1,'Syft']]], + ['synthesisrunner_156',['SynthesisRunner',['../classSyft_1_1SynthesisRunner.html',1,'Syft']]], + ['synthesizer_157',['Synthesizer',['../classSyft_1_1Synthesizer.html',1,'Syft']]], + ['synthesizer_3c_20symbolicstatedfa_20_3e_158',['Synthesizer< SymbolicStateDfa >',['../classSyft_1_1Synthesizer.html',1,'Syft']]] +]; diff --git a/search/classes_f.html b/search/classes_f.html new file mode 100644 index 0000000..d1b67da --- /dev/null +++ b/search/classes_f.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/classes_f.js b/search/classes_f.js new file mode 100644 index 0000000..d64a66f --- /dev/null +++ b/search/classes_f.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['tlsfargs_159',['TLSFArgs',['../structSyft_1_1TLSFArgs.html',1,'Syft']]], + ['transducer_160',['Transducer',['../classSyft_1_1Transducer.html',1,'Syft']]] +]; diff --git a/search/close.svg b/search/close.svg new file mode 100644 index 0000000..a933eea --- /dev/null +++ b/search/close.svg @@ -0,0 +1,31 @@ + + + + + + image/svg+xml + + + + + + + + diff --git a/search/functions_0.html b/search/functions_0.html new file mode 100644 index 0000000..eb4c501 --- /dev/null +++ b/search/functions_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/functions_0.js b/search/functions_0.js new file mode 100644 index 0000000..7855416 --- /dev/null +++ b/search/functions_0.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['abstractsinglestrategy_162',['AbstractSingleStrategy',['../classSyft_1_1DfaGameSynthesizer.html#aaa124c897532d012e4f844190c3587e8',1,'Syft::DfaGameSynthesizer::AbstractSingleStrategy()'],['../classSyft_1_1LTLfSynthesizer.html#ae0781228bd68bc7c8bb5ad7fdfe7c137',1,'Syft::LTLfSynthesizer::AbstractSingleStrategy()']]], + ['automaton_5fid_163',['automaton_id',['../classSyft_1_1SymbolicStateDfa.html#a502d2737fedec0dd27268dc6d94be4c4',1,'Syft::SymbolicStateDfa']]], + ['automaton_5fnum_164',['automaton_num',['../classSyft_1_1VarMgr.html#a1562901363bb109776a991853e114e89',1,'Syft::VarMgr']]] +]; diff --git a/search/functions_1.html b/search/functions_1.html new file mode 100644 index 0000000..ef4088b --- /dev/null +++ b/search/functions_1.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/functions_1.js b/search/functions_1.js new file mode 100644 index 0000000..073f85e --- /dev/null +++ b/search/functions_1.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['bdd_5fto_5fstring_165',['bdd_to_string',['../classSyft_1_1VarMgr.html#a80bcad06ff814173f8fa58f4e337acb3',1,'Syft::VarMgr']]], + ['buchireachability_166',['BuchiReachability',['../classSyft_1_1BuchiReachability.html#abc9591a945c0bbe104d027bce1de07b5',1,'Syft::BuchiReachability']]] +]; diff --git a/search/functions_10.html b/search/functions_10.html new file mode 100644 index 0000000..1bdc125 --- /dev/null +++ b/search/functions_10.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/functions_10.js b/search/functions_10.js new file mode 100644 index 0000000..5201837 --- /dev/null +++ b/search/functions_10.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['var_5fmgr_246',['var_mgr',['../classSyft_1_1ExplicitStateDfaAdd.html#ac263afc4a6271d39068db9945b56aec0',1,'Syft::ExplicitStateDfaAdd::var_mgr()'],['../classSyft_1_1SymbolicStateDfa.html#ae7f9d8c71e2e180894b0eb5bdc34a3c3',1,'Syft::SymbolicStateDfa::var_mgr()']]], + ['variable_5flabels_247',['variable_labels',['../classSyft_1_1VarMgr.html#afef5b1b9131a252617ffafc2f5021be1',1,'Syft::VarMgr']]], + ['varmgr_248',['VarMgr',['../classSyft_1_1VarMgr.html#a1b5b1ace9b0157d1087bff239260cd65',1,'Syft::VarMgr']]] +]; diff --git a/search/functions_2.html b/search/functions_2.html new file mode 100644 index 0000000..ca5aa10 --- /dev/null +++ b/search/functions_2.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/functions_2.js b/search/functions_2.js new file mode 100644 index 0000000..f663703 --- /dev/null +++ b/search/functions_2.js @@ -0,0 +1,12 @@ +var searchData= +[ + ['cobuchireachability_167',['coBuchiReachability',['../classSyft_1_1coBuchiReachability.html#a5ae90e1083cbc89561756e733f260b3a',1,'Syft::coBuchiReachability']]], + ['cogr1reachability_168',['coGR1Reachability',['../classSyft_1_1coGR1Reachability.html#a09b9502d0d163b793f9dbfd504a7b168',1,'Syft::coGR1Reachability']]], + ['complement_169',['complement',['../classSyft_1_1SymbolicStateDfa.html#a87e6e8e5eceed87914c1e2ccb990d280',1,'Syft::SymbolicStateDfa']]], + ['construct_5ffrom_5finput_170',['construct_from_input',['../classSyft_1_1InputOutputPartition.html#a977c76841cb9c3aa7fe8a281993031d9',1,'Syft::InputOutputPartition']]], + ['create_5fcomplement_5fstate_5fspace_171',['create_complement_state_space',['../classSyft_1_1VarMgr.html#a20968a4054e4474addf55e6857d0bcff',1,'Syft::VarMgr']]], + ['create_5fnamed_5fvariables_172',['create_named_variables',['../classSyft_1_1VarMgr.html#a624e50cbd328e79847949a02c5450c9a',1,'Syft::VarMgr']]], + ['create_5fproduct_5fstate_5fspace_173',['create_product_state_space',['../classSyft_1_1VarMgr.html#ada4600a6e9ef8a146d30134d7c15f885',1,'Syft::VarMgr']]], + ['create_5fstate_5fvariables_174',['create_state_variables',['../classSyft_1_1VarMgr.html#ae532b674990f328df75803861fc83019',1,'Syft::VarMgr']]], + ['cudd_5fmgr_175',['cudd_mgr',['../classSyft_1_1VarMgr.html#a2cca5b6b5c8ac7653162a84a0314204d',1,'Syft::VarMgr']]] +]; diff --git a/search/functions_3.html b/search/functions_3.html new file mode 100644 index 0000000..d79f55b --- /dev/null +++ b/search/functions_3.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/functions_3.js b/search/functions_3.js new file mode 100644 index 0000000..6e9af31 --- /dev/null +++ b/search/functions_3.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['dfa_5fcomplement_176',['dfa_complement',['../classSyft_1_1ExplicitStateDfa.html#af0e4217b6bb04a9a210b29a63d45e5cf',1,'Syft::ExplicitStateDfa']]], + ['dfa_5fminimize_177',['dfa_minimize',['../classSyft_1_1ExplicitStateDfa.html#a057e79cedc7600fdefaea036eb745ee0',1,'Syft::ExplicitStateDfa']]], + ['dfa_5fof_5fformula_178',['dfa_of_formula',['../classSyft_1_1ExplicitStateDfa.html#aed0406d1f1d2dace3fc31bc288941969',1,'Syft::ExplicitStateDfa']]], + ['dfa_5fprint_179',['dfa_print',['../classSyft_1_1ExplicitStateDfa.html#a2c6c1842c479a3bdeb28fba6ebedf8f3',1,'Syft::ExplicitStateDfa']]], + ['dfa_5fproduct_5fand_180',['dfa_product_and',['../classSyft_1_1ExplicitStateDfa.html#af84fdaab633b5b1653a10908fd235f91',1,'Syft::ExplicitStateDfa']]], + ['dfa_5fproduct_5for_181',['dfa_product_or',['../classSyft_1_1ExplicitStateDfa.html#a5e6e64a2a47beead35ee231bf32a265c',1,'Syft::ExplicitStateDfa']]], + ['dfagamesynthesizer_182',['DfaGameSynthesizer',['../classSyft_1_1DfaGameSynthesizer.html#a5793361e1c8892a18cb76faa5309097a',1,'Syft::DfaGameSynthesizer']]], + ['dump_5fdot_183',['dump_dot',['../classSyft_1_1ExplicitStateDfaAdd.html#afcacdbd314e1e6c237b99cc0f61313ae',1,'Syft::ExplicitStateDfaAdd::dump_dot()'],['../classSyft_1_1SymbolicStateDfa.html#ae2b6e13bfc5497239544cfe45fab5683',1,'Syft::SymbolicStateDfa::dump_dot()'],['../classSyft_1_1Transducer.html#a0f2c3d5656d2a211e0b72b51897e881d',1,'Syft::Transducer::dump_dot()'],['../classSyft_1_1VarMgr.html#ab8d03ecaca62d7a1eeaaf5a28bd73d6c',1,'Syft::VarMgr::dump_dot(const CUDD::ADD &add, const std::string &filename) const'],['../classSyft_1_1VarMgr.html#a293ad8c34f959aaeea0fa38aa2bca50d',1,'Syft::VarMgr::dump_dot(const std::vector< CUDD::ADD > &adds, const std::vector< std::string > &function_labels, const std::string &filename) const']]] +]; diff --git a/search/functions_4.html b/search/functions_4.html new file mode 100644 index 0000000..1657cad --- /dev/null +++ b/search/functions_4.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/functions_4.js b/search/functions_4.js new file mode 100644 index 0000000..000eb73 --- /dev/null +++ b/search/functions_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['explicitstatedfa_184',['ExplicitStateDfa',['../classSyft_1_1ExplicitStateDfa.html#ab20fb099de4fd604d9c9aa0c2044fc94',1,'Syft::ExplicitStateDfa::ExplicitStateDfa(DFA *dfa, int nb_variables)'],['../classSyft_1_1ExplicitStateDfa.html#a3a3f1cff74bb344cbcf031b8e064ebc5',1,'Syft::ExplicitStateDfa::ExplicitStateDfa(DFA *dfa, const std::vector< std::string > &names)'],['../classSyft_1_1ExplicitStateDfa.html#ab0267e55f151d7dc79a6a49e7b5e636b',1,'Syft::ExplicitStateDfa::ExplicitStateDfa(const ExplicitStateDfa &other)']]] +]; diff --git a/search/functions_5.html b/search/functions_5.html new file mode 100644 index 0000000..9301d6b --- /dev/null +++ b/search/functions_5.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/functions_5.js b/search/functions_5.js new file mode 100644 index 0000000..66f403a --- /dev/null +++ b/search/functions_5.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['fairnessltlfsynthesizer_185',['FairnessLtlfSynthesizer',['../classSyft_1_1FairnessLtlfSynthesizer.html#a475779ad4ca2ad03f6d8d38241ae4f4e',1,'Syft::FairnessLtlfSynthesizer']]], + ['final_5fstates_186',['final_states',['../classSyft_1_1ExplicitStateDfaAdd.html#abd534cb84ca826dbd230be07cf118e77',1,'Syft::ExplicitStateDfaAdd::final_states()'],['../classSyft_1_1SymbolicStateDfa.html#a3805aee1a5f0cc11f6598460646e29e1',1,'Syft::SymbolicStateDfa::final_states()']]], + ['from_5fdfa_5fmona_187',['from_dfa_mona',['../classSyft_1_1ExplicitStateDfaAdd.html#af4ec91852395c954072e3187d3232f77',1,'Syft::ExplicitStateDfaAdd']]], + ['from_5fexplicit_188',['from_explicit',['../classSyft_1_1SymbolicStateDfa.html#ac14b97fb14b1c3b97a3a9c7ffe4c76c8',1,'Syft::SymbolicStateDfa']]], + ['from_5fpredicates_189',['from_predicates',['../classSyft_1_1SymbolicStateDfa.html#ab1db86ccbee44e0f0763b2501f5ae112',1,'Syft::SymbolicStateDfa']]] +]; diff --git a/search/functions_6.html b/search/functions_6.html new file mode 100644 index 0000000..9c4f5fc --- /dev/null +++ b/search/functions_6.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/functions_6.js b/search/functions_6.js new file mode 100644 index 0000000..08bd4fd --- /dev/null +++ b/search/functions_6.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['get_5fformula_190',['get_formula',['../classSyft_1_1Parser.html#ac0062a4301f7ec4cdce3376d05b7c5d4',1,'Syft::Parser']]], + ['get_5finput_5fvariables_191',['get_input_variables',['../classSyft_1_1Parser.html#aa76c345bca41d45862c14acca78f999e',1,'Syft::Parser']]], + ['get_5fnb_5fvariables_192',['get_nb_variables',['../classSyft_1_1ExplicitStateDfa.html#afca00daf9a3446a81c435f263a0ff1e5',1,'Syft::ExplicitStateDfa']]], + ['get_5foutput_5fvariables_193',['get_output_variables',['../classSyft_1_1Parser.html#a0aa460587f3519cde1c59d8196601817',1,'Syft::Parser']]], + ['get_5fsys_5ffirst_194',['get_sys_first',['../classSyft_1_1Parser.html#afd506c507b2c47b6e397197b3d89a551',1,'Syft::Parser']]], + ['gr1ltlfsynthesizer_195',['GR1LTLfSynthesizer',['../classSyft_1_1GR1LTLfSynthesizer.html#a3fb8c2f3166ee646d824a77760b26180',1,'Syft::GR1LTLfSynthesizer']]] +]; diff --git a/search/functions_7.html b/search/functions_7.html new file mode 100644 index 0000000..46b5c0f --- /dev/null +++ b/search/functions_7.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/functions_7.js b/search/functions_7.js new file mode 100644 index 0000000..25526a7 --- /dev/null +++ b/search/functions_7.js @@ -0,0 +1,13 @@ +var searchData= +[ + ['includes_5finitial_5fstate_196',['includes_initial_state',['../classSyft_1_1DfaGameSynthesizer.html#a162cc46aa8ebc5e7e5aa2ce9dd9f9ccd',1,'Syft::DfaGameSynthesizer']]], + ['index_5fto_5fname_197',['index_to_name',['../classSyft_1_1VarMgr.html#a11c5cc79c94f17c76de11399933dd045',1,'Syft::VarMgr']]], + ['initial_5fstate_198',['initial_state',['../classSyft_1_1ExplicitStateDfaAdd.html#a84be5bec8f4559399f6ac7046619c2bb',1,'Syft::ExplicitStateDfaAdd::initial_state()'],['../classSyft_1_1SymbolicStateDfa.html#a7670c2e0ffdf1c0a907dac1f07a76272',1,'Syft::SymbolicStateDfa::initial_state() const']]], + ['initial_5fstate_5fbdd_199',['initial_state_bdd',['../classSyft_1_1SymbolicStateDfa.html#aa46646950e6f09c82fcca5058a68e583',1,'Syft::SymbolicStateDfa']]], + ['input_5fcube_200',['input_cube',['../classSyft_1_1VarMgr.html#a1d61504ecc6df26d61e0e50dea0b5706',1,'Syft::VarMgr']]], + ['input_5fvariable_5fcount_201',['input_variable_count',['../classSyft_1_1VarMgr.html#abe1fa46a7b9911d683bb18b2acbb1d69',1,'Syft::VarMgr']]], + ['input_5fvariable_5flabels_202',['input_variable_labels',['../classSyft_1_1VarMgr.html#a3d23f98e3716b1f8f1528c7a0e82a199',1,'Syft::VarMgr']]], + ['inputoutputpartition_203',['InputOutputPartition',['../classSyft_1_1InputOutputPartition.html#a9194a36f490e82ff2da202042fce76bf',1,'Syft::InputOutputPartition']]], + ['is_5finput_204',['is_input',['../classSyft_1_1InputOutputPartition.html#a5dca88d72a00d3ca71de24b7192876fd',1,'Syft::InputOutputPartition']]], + ['is_5foutput_205',['is_output',['../classSyft_1_1InputOutputPartition.html#ad48782db48ed3d083ca6d9b84583636c',1,'Syft::InputOutputPartition']]] +]; diff --git a/search/functions_8.html b/search/functions_8.html new file mode 100644 index 0000000..31a1d95 --- /dev/null +++ b/search/functions_8.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/functions_8.js b/search/functions_8.js new file mode 100644 index 0000000..660fef9 --- /dev/null +++ b/search/functions_8.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['ltlfmaxsetsynthesizer_206',['LTLfMaxSetSynthesizer',['../classSyft_1_1LTLfMaxSetSynthesizer.html#a1b1ec8f693c47a58f5a14c7552ae4e72',1,'Syft::LTLfMaxSetSynthesizer']]], + ['ltlfsynthesizer_207',['LTLfSynthesizer',['../classSyft_1_1LTLfSynthesizer.html#a3049e69dff410e8b09c8f8da7ee7c5c4',1,'Syft::LTLfSynthesizer']]] +]; diff --git a/search/functions_9.html b/search/functions_9.html new file mode 100644 index 0000000..9a8e429 --- /dev/null +++ b/search/functions_9.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/functions_9.js b/search/functions_9.js new file mode 100644 index 0000000..5c40567 --- /dev/null +++ b/search/functions_9.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['make_5fcompose_5fvector_208',['make_compose_vector',['../classSyft_1_1VarMgr.html#af5fc355872038ae5564da7d436709eb7',1,'Syft::VarMgr']]], + ['make_5feval_5fvector_209',['make_eval_vector',['../classSyft_1_1VarMgr.html#af210f7054001c41a021a4848a27e4a14',1,'Syft::VarMgr']]], + ['make_5fstate_5feval_5fvector_210',['make_state_eval_vector',['../classSyft_1_1VarMgr.html#a02dea41f6c9bc9f60991c4538e0117cf',1,'Syft::VarMgr']]] +]; diff --git a/search/functions_a.html b/search/functions_a.html new file mode 100644 index 0000000..5ecc152 --- /dev/null +++ b/search/functions_a.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/functions_a.js b/search/functions_a.js new file mode 100644 index 0000000..68b9430 --- /dev/null +++ b/search/functions_a.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['name_5fto_5fvariable_211',['name_to_variable',['../classSyft_1_1VarMgr.html#a2e3e6a63ab9e482caf2a0e38a0493e6c',1,'Syft::VarMgr']]], + ['new_5fsink_5fstates_212',['new_sink_states',['../classSyft_1_1SymbolicStateDfa.html#a8216a69451ffc470881aabb3494a45cb',1,'Syft::SymbolicStateDfa']]] +]; diff --git a/search/functions_b.html b/search/functions_b.html new file mode 100644 index 0000000..e301fed --- /dev/null +++ b/search/functions_b.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/functions_b.js b/search/functions_b.js new file mode 100644 index 0000000..0a6eeeb --- /dev/null +++ b/search/functions_b.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['operator_3d_213',['operator=',['../classSyft_1_1ExplicitStateDfa.html#a34c2a98c2296b307d4e88e16d64fcc50',1,'Syft::ExplicitStateDfa']]], + ['output_5fcube_214',['output_cube',['../classSyft_1_1VarMgr.html#abae667a77bc43e813b027205620d475f',1,'Syft::VarMgr']]], + ['output_5fvariable_5fcount_215',['output_variable_count',['../classSyft_1_1VarMgr.html#ac175ed202b133e0dace9362b22f3ac57',1,'Syft::VarMgr']]], + ['output_5fvariable_5flabels_216',['output_variable_labels',['../classSyft_1_1VarMgr.html#a1abb49c5f62b69c00975d2e810c8e99a',1,'Syft::VarMgr']]] +]; diff --git a/search/functions_c.html b/search/functions_c.html new file mode 100644 index 0000000..c4f3268 --- /dev/null +++ b/search/functions_c.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/functions_c.js b/search/functions_c.js new file mode 100644 index 0000000..d91d4f3 --- /dev/null +++ b/search/functions_c.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['parser_217',['Parser',['../classSyft_1_1Parser.html#ac4c01ee811e3977644f357a0c60b9a52',1,'Syft::Parser']]], + ['partition_5fvariables_218',['partition_variables',['../classSyft_1_1VarMgr.html#ab829aa3b49133ac514a30cbd060eb117',1,'Syft::VarMgr']]], + ['preimage_219',['preimage',['../classSyft_1_1DfaGameSynthesizer.html#ad479ca400c626e26f3a178b0b44d66db',1,'Syft::DfaGameSynthesizer']]], + ['product_5fand_220',['product_AND',['../classSyft_1_1SymbolicStateDfa.html#ab08f167d065dcb89277c012369c2a805',1,'Syft::SymbolicStateDfa']]], + ['product_5for_221',['product_OR',['../classSyft_1_1SymbolicStateDfa.html#a5a668389e3a7a4d579340bee83dd53a4',1,'Syft::SymbolicStateDfa']]], + ['project_5finto_5fstates_222',['project_into_states',['../classSyft_1_1DfaGameSynthesizer.html#ae011d7451fa534119a49ffc06478925f',1,'Syft::DfaGameSynthesizer']]] +]; diff --git a/search/functions_d.html b/search/functions_d.html new file mode 100644 index 0000000..7a1ed06 --- /dev/null +++ b/search/functions_d.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/functions_d.js b/search/functions_d.js new file mode 100644 index 0000000..d457611 --- /dev/null +++ b/search/functions_d.js @@ -0,0 +1,12 @@ +var searchData= +[ + ['reachability_223',['Reachability',['../classSyft_1_1Reachability.html#ae0a594a1b0edf589e2c0abdbef8a5e54',1,'Syft::Reachability']]], + ['reachabilitymaxset_224',['ReachabilityMaxSet',['../classSyft_1_1ReachabilityMaxSet.html#a15ecc7aeea8faa5cf5e6481019dffe14',1,'Syft::ReachabilityMaxSet']]], + ['read_5ffrom_5ffile_225',['read_from_file',['../classSyft_1_1Parser.html#ae0ed0d2bb19955d5b3843aac6d60b833',1,'Syft::Parser::read_from_file()'],['../classSyft_1_1InputOutputPartition.html#ae21d6d853aa832b69153e166535b7d8b',1,'Syft::InputOutputPartition::read_from_file()']]], + ['read_5ffrom_5fgr1_5ffile_226',['read_from_gr1_file',['../structSyft_1_1GR1.html#a1dd0b84e50adb27328640c66f0fc21d4',1,'Syft::GR1']]], + ['read_5fgr1_5fjustice_227',['read_gr1_justice',['../structSyft_1_1GR1.html#a5e966ab62d98b02a64822aa9e664c53b',1,'Syft::GR1']]], + ['restrict_5fdfa_5fwith_5fstates_228',['restrict_dfa_with_states',['../classSyft_1_1ExplicitStateDfa.html#a7eb83170230a4f1c8f189c8e178ebd94',1,'Syft::ExplicitStateDfa::restrict_dfa_with_states()'],['../classSyft_1_1SymbolicStateDfa.html#a6c01d1be879947637a2d55c9c321f728',1,'Syft::SymbolicStateDfa::restrict_dfa_with_states()']]], + ['restrict_5fdfa_5fwith_5ftransitions_229',['restrict_dfa_with_transitions',['../classSyft_1_1ExplicitStateDfa.html#ac0dc4291d3d2efd97ca59b9a5cddf3b9',1,'Syft::ExplicitStateDfa::restrict_dfa_with_transitions()'],['../classSyft_1_1SymbolicStateDfa.html#ab216bbd556a0a49699d07113044d09e7',1,'Syft::SymbolicStateDfa::restrict_dfa_with_transitions()']]], + ['run_230',['run',['../classSyft_1_1coBuchiReachability.html#acac33d2314323a35a026fa4dc8273b6c',1,'Syft::coBuchiReachability::run()'],['../classSyft_1_1Synthesizer.html#a19589fbbdbc174df570e763f29f51606',1,'Syft::Synthesizer::run()'],['../classSyft_1_1StabilityLtlfSynthesizer.html#a165546eb5d978ebbbce90837ca393e33',1,'Syft::StabilityLtlfSynthesizer::run()'],['../classSyft_1_1LTLfSynthesizer.html#a90b9890a9815ff757da7e92e3dfa83d4',1,'Syft::LTLfSynthesizer::run()'],['../classSyft_1_1LTLfMaxSetSynthesizer.html#a8872a798e4881426eb27605aee1e0e2e',1,'Syft::LTLfMaxSetSynthesizer::run()'],['../classSyft_1_1GR1LTLfSynthesizer.html#ab0b1f5f0d4fcd24b642549f950f5f59b',1,'Syft::GR1LTLfSynthesizer::run()'],['../classSyft_1_1FairnessLtlfSynthesizer.html#a8b03186e0732a6d713d9d26fa014a166',1,'Syft::FairnessLtlfSynthesizer::run()'],['../classSyft_1_1ReachabilityMaxSet.html#aed2afd6a549e6f7b3bed0a304dc29c42',1,'Syft::ReachabilityMaxSet::run()'],['../classSyft_1_1Reachability.html#a9b0ffe1dbf4ea8dbfee8c71d774556c9',1,'Syft::Reachability::run()'],['../classSyft_1_1DfaGameSynthesizer.html#a385fea5ebd717479ee51399647c5d651',1,'Syft::DfaGameSynthesizer::run()'],['../classSyft_1_1coGR1Reachability.html#ad46a94cf541a7cc3a733285e7b892957',1,'Syft::coGR1Reachability::run()'],['../classSyft_1_1BuchiReachability.html#a9f1945cbb20abdd0bff1f0606ca352d4',1,'Syft::BuchiReachability::run()']]], + ['run_5fmaxset_231',['run_maxset',['../classSyft_1_1ReachabilityMaxSet.html#a9567dd9af5eef782afee1aa18e7c9615',1,'Syft::ReachabilityMaxSet']]] +]; diff --git a/search/functions_e.html b/search/functions_e.html new file mode 100644 index 0000000..22d2a6b --- /dev/null +++ b/search/functions_e.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/functions_e.js b/search/functions_e.js new file mode 100644 index 0000000..5b41ac3 --- /dev/null +++ b/search/functions_e.js @@ -0,0 +1,14 @@ +var searchData= +[ + ['stabilityltlfsynthesizer_232',['StabilityLtlfSynthesizer',['../classSyft_1_1StabilityLtlfSynthesizer.html#a51b8ea1014e85b852b7c5e6f4c4a2927',1,'Syft::StabilityLtlfSynthesizer']]], + ['start_233',['start',['../classSyft_1_1Stopwatch.html#ab42c3f661b49199ff3c613ecd152f736',1,'Syft::Stopwatch']]], + ['state_5fcount_234',['state_count',['../classSyft_1_1ExplicitStateDfaAdd.html#a686e1862ade00a1c99d9025995b4ecb5',1,'Syft::ExplicitStateDfaAdd']]], + ['state_5fto_5fbinary_235',['state_to_binary',['../classSyft_1_1SymbolicStateDfa.html#a5254abde379d9878a754fffc30565c7b',1,'Syft::SymbolicStateDfa']]], + ['state_5fvariable_236',['state_variable',['../classSyft_1_1VarMgr.html#a4585a150e1a0bc2d908d0e249f95ea9a',1,'Syft::VarMgr']]], + ['state_5fvariable_5fcount_237',['state_variable_count',['../classSyft_1_1VarMgr.html#ad3c878bdf9e9cc1d718a67f4e1955bf9',1,'Syft::VarMgr']]], + ['state_5fvariable_5flabels_238',['state_variable_labels',['../classSyft_1_1VarMgr.html#a71b969a46c6e16f4489c1b3cdd3ad1b2',1,'Syft::VarMgr']]], + ['state_5fvariables_5fcube_239',['state_variables_cube',['../classSyft_1_1VarMgr.html#afe31cc2babdf454ef853f6480b53192f',1,'Syft::VarMgr']]], + ['state_5fvector_5fto_5fbdd_240',['state_vector_to_bdd',['../classSyft_1_1VarMgr.html#a8cd8b52db7087b049cc588e4ebbe9b20',1,'Syft::VarMgr']]], + ['stop_241',['stop',['../classSyft_1_1Stopwatch.html#a327bb2613e461e0ce1202178a0959d12',1,'Syft::Stopwatch']]], + ['stopwatch_242',['Stopwatch',['../classSyft_1_1Stopwatch.html#a4d9295677bba0dcdfd0edf4cb1ab05eb',1,'Syft::Stopwatch']]] +]; diff --git a/search/functions_f.html b/search/functions_f.html new file mode 100644 index 0000000..54b7dee --- /dev/null +++ b/search/functions_f.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/functions_f.js b/search/functions_f.js new file mode 100644 index 0000000..145e941 --- /dev/null +++ b/search/functions_f.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['total_5fstate_5fvariable_5fcount_243',['total_state_variable_count',['../classSyft_1_1VarMgr.html#a387816710b48e0131d72e929bdc8e0ae',1,'Syft::VarMgr']]], + ['total_5fvariable_5fcount_244',['total_variable_count',['../classSyft_1_1VarMgr.html#ae8c39857542ccbecd14aaa1c6e8d5551',1,'Syft::VarMgr']]], + ['transition_5ffunction_245',['transition_function',['../classSyft_1_1ExplicitStateDfaAdd.html#a429bdcdb58191cd368753bf3c7109cbb',1,'Syft::ExplicitStateDfaAdd::transition_function()'],['../classSyft_1_1SymbolicStateDfa.html#a74df1a95cf5cc82e36c6f9da61da13b0',1,'Syft::SymbolicStateDfa::transition_function()']]] +]; diff --git a/search/mag_sel.svg b/search/mag_sel.svg new file mode 100644 index 0000000..03626f6 --- /dev/null +++ b/search/mag_sel.svg @@ -0,0 +1,74 @@ + + + + + + + + image/svg+xml + + + + + + + + + + + diff --git a/search/nomatches.html b/search/nomatches.html new file mode 100644 index 0000000..2b9360b --- /dev/null +++ b/search/nomatches.html @@ -0,0 +1,13 @@ + + + + + + + + +
    +
    No Matches
    +
    + + diff --git a/search/pages_0.html b/search/pages_0.html new file mode 100644 index 0000000..8517b48 --- /dev/null +++ b/search/pages_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/pages_0.js b/search/pages_0.js new file mode 100644 index 0000000..7965b28 --- /dev/null +++ b/search/pages_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['lydiasyft_3a_20a_20compositional_20symbolic_20synthesis_20framework_20for_20ltlf_20specification_257',['LydiaSyft: A Compositional Symbolic Synthesis Framework for LTLf Specification',['../index.html',1,'']]] +]; diff --git a/search/search.css b/search/search.css new file mode 100644 index 0000000..9074198 --- /dev/null +++ b/search/search.css @@ -0,0 +1,257 @@ +/*---------------- Search Box */ + +#MSearchBox { + white-space : nowrap; + background: white; + border-radius: 0.65em; + box-shadow: inset 0.5px 0.5px 3px 0px #555; + z-index: 102; +} + +#MSearchBox .left { + display: inline-block; + vertical-align: middle; + height: 1.4em; +} + +#MSearchSelect { + display: inline-block; + vertical-align: middle; + height: 1.4em; + padding: 0 0 0 0.3em; + margin: 0; +} + +#MSearchField { + display: inline-block; + vertical-align: middle; + width: 7.5em; + height: 1.1em; + margin: 0 0.15em; + padding: 0; + line-height: 1em; + border:none; + color: #909090; + outline: none; + font-family: Arial, Verdana, sans-serif; + -webkit-border-radius: 0px; + border-radius: 0px; + background: none; +} + + +#MSearchBox .right { + display: inline-block; + vertical-align: middle; + width: 1.4em; + height: 1.4em; +} + +#MSearchClose { + display: none; + font-size: inherit; + background : none; + border: none; + margin: 0; + padding: 0; + outline: none; + +} + +#MSearchCloseImg { + height: 1.4em; + padding: 0.3em; + margin: 0; +} + +.MSearchBoxActive #MSearchField { + color: #000000; +} + +#main-menu > li:last-child { + /* This
  • object is the parent of the search bar */ + display: flex; + justify-content: center; + align-items: center; + height: 36px; + margin-right: 1em; +} + +/*---------------- Search filter selection */ + +#MSearchSelectWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid #90A5CE; + background-color: #F9FAFC; + z-index: 10001; + padding-top: 4px; + padding-bottom: 4px; + -moz-border-radius: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +.SelectItem { + font: 8pt Arial, Verdana, sans-serif; + padding-left: 2px; + padding-right: 12px; + border: 0px; +} + +span.SelectionMark { + margin-right: 4px; + font-family: monospace; + outline-style: none; + text-decoration: none; +} + +a.SelectItem { + display: block; + outline-style: none; + color: #000000; + text-decoration: none; + padding-left: 6px; + padding-right: 12px; +} + +a.SelectItem:focus, +a.SelectItem:active { + color: #000000; + outline-style: none; + text-decoration: none; +} + +a.SelectItem:hover { + color: #FFFFFF; + background-color: #3D578C; + outline-style: none; + text-decoration: none; + cursor: pointer; + display: block; +} + +/*---------------- Search results window */ + +iframe#MSearchResults { + width: 60ex; + height: 15em; +} + +#MSearchResultsWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid #000; + background-color: #EEF1F7; + z-index:10000; +} + +/* ----------------------------------- */ + + +#SRIndex { + clear:both; + padding-bottom: 15px; +} + +.SREntry { + font-size: 10pt; + padding-left: 1ex; +} + +.SRPage .SREntry { + font-size: 8pt; + padding: 1px 5px; +} + +body.SRPage { + margin: 5px 2px; +} + +.SRChildren { + padding-left: 3ex; padding-bottom: .5em +} + +.SRPage .SRChildren { + display: none; +} + +.SRSymbol { + font-weight: bold; + color: #425E97; + font-family: Arial, Verdana, sans-serif; + text-decoration: none; + outline: none; +} + +a.SRScope { + display: block; + color: #425E97; + font-family: Arial, Verdana, sans-serif; + text-decoration: none; + outline: none; +} + +a.SRSymbol:focus, a.SRSymbol:active, +a.SRScope:focus, a.SRScope:active { + text-decoration: underline; +} + +span.SRScope { + padding-left: 4px; + font-family: Arial, Verdana, sans-serif; +} + +.SRPage .SRStatus { + padding: 2px 5px; + font-size: 8pt; + font-style: italic; + font-family: Arial, Verdana, sans-serif; +} + +.SRResult { + display: none; +} + +div.searchresults { + margin-left: 10px; + margin-right: 10px; +} + +/*---------------- External search page results */ + +.searchresult { + background-color: #F0F3F8; +} + +.pages b { + color: white; + padding: 5px 5px 3px 5px; + background-image: url("../tab_a.png"); + background-repeat: repeat-x; + text-shadow: 0 1px 1px #000000; +} + +.pages { + line-height: 17px; + margin-left: 4px; + text-decoration: none; +} + +.hl { + font-weight: bold; +} + +#searchresults { + margin-bottom: 20px; +} + +.searchpages { + margin-top: 10px; +} + diff --git a/search/search.js b/search/search.js new file mode 100644 index 0000000..fb226f7 --- /dev/null +++ b/search/search.js @@ -0,0 +1,816 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function convertToId(search) +{ + var result = ''; + for (i=0;i do a search + { + this.Search(); + } + } + + this.OnSearchSelectKey = function(evt) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==40 && this.searchIndex0) // Up + { + this.searchIndex--; + this.OnSelectItem(this.searchIndex); + } + else if (e.keyCode==13 || e.keyCode==27) + { + this.OnSelectItem(this.searchIndex); + this.CloseSelectionWindow(); + this.DOMSearchField().focus(); + } + return false; + } + + // --------- Actions + + // Closes the results window. + this.CloseResultsWindow = function() + { + this.DOMPopupSearchResultsWindow().style.display = 'none'; + this.DOMSearchClose().style.display = 'none'; + this.Activate(false); + } + + this.CloseSelectionWindow = function() + { + this.DOMSearchSelectWindow().style.display = 'none'; + } + + // Performs a search. + this.Search = function() + { + this.keyTimeout = 0; + + // strip leading whitespace + var searchValue = this.DOMSearchField().value.replace(/^ +/, ""); + + var code = searchValue.toLowerCase().charCodeAt(0); + var idxChar = searchValue.substr(0, 1).toLowerCase(); + if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) // surrogate pair + { + idxChar = searchValue.substr(0, 2); + } + + var resultsPage; + var resultsPageWithSearch; + var hasResultsPage; + + var idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar); + if (idx!=-1) + { + var hexCode=idx.toString(16); + resultsPage = this.resultsPath + '/' + indexSectionNames[this.searchIndex] + '_' + hexCode + this.extension; + resultsPageWithSearch = resultsPage+'?'+escape(searchValue); + hasResultsPage = true; + } + else // nothing available for this search term + { + resultsPage = this.resultsPath + '/nomatches' + this.extension; + resultsPageWithSearch = resultsPage; + hasResultsPage = false; + } + + window.frames.MSearchResults.location = resultsPageWithSearch; + var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); + + if (domPopupSearchResultsWindow.style.display!='block') + { + var domSearchBox = this.DOMSearchBox(); + this.DOMSearchClose().style.display = 'inline-block'; + if (this.insideFrame) + { + var domPopupSearchResults = this.DOMPopupSearchResults(); + domPopupSearchResultsWindow.style.position = 'relative'; + domPopupSearchResultsWindow.style.display = 'block'; + var width = document.body.clientWidth - 8; // the -8 is for IE :-( + domPopupSearchResultsWindow.style.width = width + 'px'; + domPopupSearchResults.style.width = width + 'px'; + } + else + { + var domPopupSearchResults = this.DOMPopupSearchResults(); + var left = getXPos(domSearchBox) + 150; // domSearchBox.offsetWidth; + var top = getYPos(domSearchBox) + 20; // domSearchBox.offsetHeight + 1; + domPopupSearchResultsWindow.style.display = 'block'; + left -= domPopupSearchResults.offsetWidth; + domPopupSearchResultsWindow.style.top = top + 'px'; + domPopupSearchResultsWindow.style.left = left + 'px'; + } + } + + this.lastSearchValue = searchValue; + this.lastResultsPage = resultsPage; + } + + // -------- Activation Functions + + // Activates or deactivates the search panel, resetting things to + // their default values if necessary. + this.Activate = function(isActive) + { + if (isActive || // open it + this.DOMPopupSearchResultsWindow().style.display == 'block' + ) + { + this.DOMSearchBox().className = 'MSearchBoxActive'; + + var searchField = this.DOMSearchField(); + + if (searchField.value == this.searchLabel) // clear "Search" term upon entry + { + searchField.value = ''; + this.searchActive = true; + } + } + else if (!isActive) // directly remove the panel + { + this.DOMSearchBox().className = 'MSearchBoxInactive'; + this.DOMSearchField().value = this.searchLabel; + this.searchActive = false; + this.lastSearchValue = '' + this.lastResultsPage = ''; + } + } +} + +// ----------------------------------------------------------------------- + +// The class that handles everything on the search results page. +function SearchResults(name) +{ + // The number of matches from the last run of . + this.lastMatchCount = 0; + this.lastKey = 0; + this.repeatOn = false; + + // Toggles the visibility of the passed element ID. + this.FindChildElement = function(id) + { + var parentElement = document.getElementById(id); + var element = parentElement.firstChild; + + while (element && element!=parentElement) + { + if (element.nodeName.toLowerCase() == 'div' && element.className == 'SRChildren') + { + return element; + } + + if (element.nodeName.toLowerCase() == 'div' && element.hasChildNodes()) + { + element = element.firstChild; + } + else if (element.nextSibling) + { + element = element.nextSibling; + } + else + { + do + { + element = element.parentNode; + } + while (element && element!=parentElement && !element.nextSibling); + + if (element && element!=parentElement) + { + element = element.nextSibling; + } + } + } + } + + this.Toggle = function(id) + { + var element = this.FindChildElement(id); + if (element) + { + if (element.style.display == 'block') + { + element.style.display = 'none'; + } + else + { + element.style.display = 'block'; + } + } + } + + // Searches for the passed string. If there is no parameter, + // it takes it from the URL query. + // + // Always returns true, since other documents may try to call it + // and that may or may not be possible. + this.Search = function(search) + { + if (!search) // get search word from URL + { + search = window.location.search; + search = search.substring(1); // Remove the leading '?' + search = unescape(search); + } + + search = search.replace(/^ +/, ""); // strip leading spaces + search = search.replace(/ +$/, ""); // strip trailing spaces + search = search.toLowerCase(); + search = convertToId(search); + + var resultRows = document.getElementsByTagName("div"); + var matches = 0; + + var i = 0; + while (i < resultRows.length) + { + var row = resultRows.item(i); + if (row.className == "SRResult") + { + var rowMatchName = row.id.toLowerCase(); + rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_' + + if (search.length<=rowMatchName.length && + rowMatchName.substr(0, search.length)==search) + { + row.style.display = 'block'; + matches++; + } + else + { + row.style.display = 'none'; + } + } + i++; + } + document.getElementById("Searching").style.display='none'; + if (matches == 0) // no results + { + document.getElementById("NoMatches").style.display='block'; + } + else // at least one result + { + document.getElementById("NoMatches").style.display='none'; + } + this.lastMatchCount = matches; + return true; + } + + // return the first item with index index or higher that is visible + this.NavNext = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index++; + } + return focusItem; + } + + this.NavPrev = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index--; + } + return focusItem; + } + + this.ProcessKeys = function(e) + { + if (e.type == "keydown") + { + this.repeatOn = false; + this.lastKey = e.keyCode; + } + else if (e.type == "keypress") + { + if (!this.repeatOn) + { + if (this.lastKey) this.repeatOn = true; + return false; // ignore first keypress after keydown + } + } + else if (e.type == "keyup") + { + this.lastKey = 0; + this.repeatOn = false; + } + return this.lastKey!=0; + } + + this.Nav = function(evt,itemIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + var newIndex = itemIndex-1; + var focusItem = this.NavPrev(newIndex); + if (focusItem) + { + var child = this.FindChildElement(focusItem.parentNode.parentNode.id); + if (child && child.style.display == 'block') // children visible + { + var n=0; + var tmpElem; + while (1) // search for last child + { + tmpElem = document.getElementById('Item'+newIndex+'_c'+n); + if (tmpElem) + { + focusItem = tmpElem; + } + else // found it! + { + break; + } + n++; + } + } + } + if (focusItem) + { + focusItem.focus(); + } + else // return focus to search field + { + parent.document.getElementById("MSearchField").focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = itemIndex+1; + var focusItem; + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem && elem.style.display == 'block') // children visible + { + focusItem = document.getElementById('Item'+itemIndex+'_c0'); + } + if (!focusItem) focusItem = this.NavNext(newIndex); + if (focusItem) focusItem.focus(); + } + else if (this.lastKey==39) // Right + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'block'; + } + else if (this.lastKey==37) // Left + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'none'; + } + else if (this.lastKey==27) // Escape + { + parent.searchBox.CloseResultsWindow(); + parent.document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } + + this.NavChild = function(evt,itemIndex,childIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + if (childIndex>0) + { + var newIndex = childIndex-1; + document.getElementById('Item'+itemIndex+'_c'+newIndex).focus(); + } + else // already at first child, jump to parent + { + document.getElementById('Item'+itemIndex).focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = childIndex+1; + var elem = document.getElementById('Item'+itemIndex+'_c'+newIndex); + if (!elem) // last child, jump to parent next parent + { + elem = this.NavNext(itemIndex+1); + } + if (elem) + { + elem.focus(); + } + } + else if (this.lastKey==27) // Escape + { + parent.searchBox.CloseResultsWindow(); + parent.document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } +} + +function setKeyActions(elem,action) +{ + elem.setAttribute('onkeydown',action); + elem.setAttribute('onkeypress',action); + elem.setAttribute('onkeyup',action); +} + +function setClassAttr(elem,attr) +{ + elem.setAttribute('class',attr); + elem.setAttribute('className',attr); +} + +function createResults() +{ + var results = document.getElementById("SRResults"); + for (var e=0; e + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/variables_0.js b/search/variables_0.js new file mode 100644 index 0000000..0b38074 --- /dev/null +++ b/search/variables_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['initial_5fvector_5f_249',['initial_vector_',['../classSyft_1_1DfaGameSynthesizer.html#abc276f9a5cc2b8b1a6238711e01eee4f',1,'Syft::DfaGameSynthesizer']]] +]; diff --git a/search/variables_1.html b/search/variables_1.html new file mode 100644 index 0000000..ea73d9a --- /dev/null +++ b/search/variables_1.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/variables_1.js b/search/variables_1.js new file mode 100644 index 0000000..c9438dc --- /dev/null +++ b/search/variables_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['protagonist_5fplayer_5f_250',['protagonist_player_',['../classSyft_1_1DfaGameSynthesizer.html#abfaa90f84c18bc4fca026fbe3fd773d8',1,'Syft::DfaGameSynthesizer']]] +]; diff --git a/search/variables_2.html b/search/variables_2.html new file mode 100644 index 0000000..0580462 --- /dev/null +++ b/search/variables_2.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/variables_2.js b/search/variables_2.js new file mode 100644 index 0000000..4c6acb0 --- /dev/null +++ b/search/variables_2.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['quantify_5findependent_5fvariables_5f_251',['quantify_independent_variables_',['../classSyft_1_1DfaGameSynthesizer.html#a13197b158f0731406d177fc8d1abfd4f',1,'Syft::DfaGameSynthesizer']]], + ['quantify_5fnon_5fstate_5fvariables_5f_252',['quantify_non_state_variables_',['../classSyft_1_1DfaGameSynthesizer.html#a56543024a550a28c7b419e4475f5f5ce',1,'Syft::DfaGameSynthesizer']]] +]; diff --git a/search/variables_3.html b/search/variables_3.html new file mode 100644 index 0000000..0d69e76 --- /dev/null +++ b/search/variables_3.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/variables_3.js b/search/variables_3.js new file mode 100644 index 0000000..32720d5 --- /dev/null +++ b/search/variables_3.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['spec_5f_253',['spec_',['../classSyft_1_1Synthesizer.html#a530ac437b63754f83d6ee0d6f27bb075',1,'Syft::Synthesizer']]], + ['starting_5fplayer_5f_254',['starting_player_',['../classSyft_1_1DfaGameSynthesizer.html#a265506e2950231f37cf70f1e09b7c7e9',1,'Syft::DfaGameSynthesizer']]] +]; diff --git a/search/variables_4.html b/search/variables_4.html new file mode 100644 index 0000000..a4b6506 --- /dev/null +++ b/search/variables_4.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/variables_4.js b/search/variables_4.js new file mode 100644 index 0000000..658ae90 --- /dev/null +++ b/search/variables_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['transition_5fvector_5f_255',['transition_vector_',['../classSyft_1_1DfaGameSynthesizer.html#ab6c87ceed400fc936a96b52d65ff70ed',1,'Syft::DfaGameSynthesizer']]] +]; diff --git a/search/variables_5.html b/search/variables_5.html new file mode 100644 index 0000000..7e345d1 --- /dev/null +++ b/search/variables_5.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/variables_5.js b/search/variables_5.js new file mode 100644 index 0000000..057ebc4 --- /dev/null +++ b/search/variables_5.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['var_5fmgr_5f_256',['var_mgr_',['../classSyft_1_1DfaGameSynthesizer.html#aad1bbf1f88035a84e7db9de3309ea86e',1,'Syft::DfaGameSynthesizer']]] +]; diff --git a/splitbar.png b/splitbar.png new file mode 100644 index 0000000..fe895f2 Binary files /dev/null and b/splitbar.png differ diff --git a/stability_8hpp_source.html b/stability_8hpp_source.html new file mode 100644 index 0000000..a915aa6 --- /dev/null +++ b/stability_8hpp_source.html @@ -0,0 +1,131 @@ + + + + + + + +LydiaSyft: src/cli/stability.hpp Source File + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    LydiaSyft +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    stability.hpp
    +
    +
    +
    1 //
    +
    2 // Created by marcofavorito on 22/01/24.
    +
    3 //
    +
    4 
    +
    5 #ifndef LYDIASYFT_CLI_STABILITY_H
    +
    6 #define LYDIASYFT_CLI_STABILITY_H
    +
    7 
    +
    8 #include <CLI/CLI.hpp>
    +
    9 
    +
    10 
    +
    11 namespace Syft {
    +
    12 
    +
    13  class StabilityRunner : public BaseRunner {
    +
    14  private:
    +
    15  std::string assumption_filename_;
    +
    16 
    +
    17  void do_stability_synthesis_(const SymbolicStateDfa &symbolic_dfa);
    +
    18 
    +
    19  public:
    +
    20  StabilityRunner(const std::shared_ptr<whitemech::lydia::parsers::ltlf::LTLfDriver>& driver,
    +
    21  const std::string &formula_file, const std::string &path_to_syfco,
    +
    22  const std::string &assumption_filename, bool print_strategy, bool print_times) : BaseRunner(
    +
    23  driver, formula_file, path_to_syfco, print_strategy, print_times), assumption_filename_(assumption_filename) {}
    +
    24 
    +
    25  void run();
    +
    26 
    +
    27  };
    +
    28 }
    +
    29 
    +
    30 #endif //LYDIASYFT_CLI_STABILITY_H
    +
    Definition: base.hpp:91
    +
    Definition: stability.hpp:13
    +
    A DFA with symbolic states and transitions.
    Definition: SymbolicStateDfa.h:18
    +
    +
    + + + + diff --git a/string__utilities_8h_source.html b/string__utilities_8h_source.html new file mode 100644 index 0000000..4c7757f --- /dev/null +++ b/string__utilities_8h_source.html @@ -0,0 +1,114 @@ + + + + + + + +LydiaSyft: src/utils/string_utilities.h Source File + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    LydiaSyft +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    string_utilities.h
    +
    +
    +
    1 #ifndef LYDIASYFT_STRING_UTILITIES_H
    +
    2 #define LYDIASYFT_STRING_UTILITIES_H
    +
    3 
    +
    4 #include <string>
    +
    5 #include <vector>
    +
    6 
    +
    7 
    +
    8 namespace Syft {
    +
    9 
    +
    10  std::vector<std::string> split(const std::string& str, const std::string& delimiter = " ");
    +
    11  std::string trim(const std::string& str);
    +
    12  std::string to_lower_copy(const std::string& str);
    +
    13  std::string to_upper_copy(const std::string& str);
    +
    14 }
    +
    15 
    +
    16 #endif //LYDIASYFT_STRING_UTILITIES_H
    +
    +
    + + + + diff --git a/structSyft_1_1GR1-members.html b/structSyft_1_1GR1-members.html new file mode 100644 index 0000000..1d16e47 --- /dev/null +++ b/structSyft_1_1GR1-members.html @@ -0,0 +1,105 @@ + + + + + + + +LydiaSyft: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    LydiaSyft +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    Syft::GR1 Member List
    +
    +
    + +

    This is the complete list of members for Syft::GR1, including all inherited members.

    + + + + + + +
    agn_justices (defined in Syft::GR1)Syft::GR1
    bad_file_format_exception(std::size_t line_number) (defined in Syft::GR1)Syft::GR1inlinestatic
    env_justices (defined in Syft::GR1)Syft::GR1
    read_from_gr1_file(const std::shared_ptr< VarMgr > &var_mgr, const std::string &gr1_filename)Syft::GR1inlinestatic
    read_gr1_justice(const std::shared_ptr< VarMgr > &var_mgr, std::istream &in, std::size_t &line_number)Syft::GR1inlinestatic
    +
    + + + + diff --git a/structSyft_1_1GR1.html b/structSyft_1_1GR1.html new file mode 100644 index 0000000..d861a46 --- /dev/null +++ b/structSyft_1_1GR1.html @@ -0,0 +1,183 @@ + + + + + + + +LydiaSyft: Syft::GR1 Struct Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    LydiaSyft +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    Syft::GR1 Struct Reference
    +
    +
    + +

    #include <GR1.h>

    + + + + + + + + + + +

    +Static Public Member Functions

    +static CUDD::BDD read_gr1_justice (const std::shared_ptr< VarMgr > &var_mgr, std::istream &in, std::size_t &line_number)
     Stores a player justice.
     
    +static std::runtime_error bad_file_format_exception (std::size_t line_number)
     
    static GR1 read_from_gr1_file (const std::shared_ptr< VarMgr > &var_mgr, const std::string &gr1_filename)
     Stores a GR(1) condition. More...
     
    + + + + + +

    +Public Attributes

    +std::vector< CUDD::BDD > env_justices
     
    +std::vector< CUDD::BDD > agn_justices
     
    +

    Detailed Description

    +

    GR(1) file format is similar to the regular CNF format, such that every justice is represented as a conjunction over disjunctive clauses. Each justice is labeled with env or agn to refer to environment or agent justice respectively, and ended with end. Consider GR(1) formula GF(p_1) & GF(p_1 & q_1) & ... & GF(!p_1 & (q_1 | q_2)) -> GF(q_1) & GF(p_1 & q_1) & ... & GF(!q_1 & (p_1 | p_2)), this formula is written as follows (variables in uppercase): –Env-Justice– P_1 –Justice-End–

    +

    –Env-Justice– P_1 Q_1 –Justice-End–

    +

    –Env-Justice– !P_1 Q_1 Q_2 –Justice-End–

    +

    –Agn-Justice– Q_1 –Justice-End–

    +

    –Agn-Justice– P_1 Q_1 –Justice-End–

    +

    –Agn-Justice– !Q_1 P_1 Q_1 –Justice-End– End

    +

    Member Function Documentation

    + +

    ◆ read_from_gr1_file()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    static GR1 Syft::GR1::read_from_gr1_file (const std::shared_ptr< VarMgr > & var_mgr,
    const std::string & gr1_filename 
    )
    +
    +inlinestatic
    +
    + +

    Stores a GR(1) condition.

    +
    Parameters
    + + +
    gr1_filenameThe name of the file to read the GR(1) condition from.
    +
    +
    +
    Returns
    The GR(1) condition stored in the file
    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • src/synthesis/header/GR1.h
    • +
    +
    +
    + + + + diff --git a/structSyft_1_1GR1.js b/structSyft_1_1GR1.js new file mode 100644 index 0000000..63b464e --- /dev/null +++ b/structSyft_1_1GR1.js @@ -0,0 +1,5 @@ +var structSyft_1_1GR1 = +[ + [ "agn_justices", "structSyft_1_1GR1.html#a92ab87cffe63867afffa1b2d3291ba90", null ], + [ "env_justices", "structSyft_1_1GR1.html#aefcd64ddec550e8cabbe8e03f05975c4", null ] +]; \ No newline at end of file diff --git a/structSyft_1_1MaxSet-members.html b/structSyft_1_1MaxSet-members.html new file mode 100644 index 0000000..05caea6 --- /dev/null +++ b/structSyft_1_1MaxSet-members.html @@ -0,0 +1,102 @@ + + + + + + + +LydiaSyft: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    LydiaSyft +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    Syft::MaxSet Member List
    +
    +
    + +

    This is the complete list of members for Syft::MaxSet, including all inherited members.

    + + + +
    deferring_strategy (defined in Syft::MaxSet)Syft::MaxSet
    nondeferring_strategy (defined in Syft::MaxSet)Syft::MaxSet
    +
    + + + + diff --git a/structSyft_1_1MaxSet.html b/structSyft_1_1MaxSet.html new file mode 100644 index 0000000..061f9d9 --- /dev/null +++ b/structSyft_1_1MaxSet.html @@ -0,0 +1,114 @@ + + + + + + + +LydiaSyft: Syft::MaxSet Struct Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    LydiaSyft +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    Syft::MaxSet Struct Reference
    +
    +
    + + + + + + +

    +Public Attributes

    +CUDD::BDD deferring_strategy
     
    +CUDD::BDD nondeferring_strategy
     
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structSyft_1_1MaxSet.js b/structSyft_1_1MaxSet.js new file mode 100644 index 0000000..25a05f9 --- /dev/null +++ b/structSyft_1_1MaxSet.js @@ -0,0 +1,5 @@ +var structSyft_1_1MaxSet = +[ + [ "deferring_strategy", "structSyft_1_1MaxSet.html#a5c26d648926b0b91d7d0b0c0e10ab064", null ], + [ "nondeferring_strategy", "structSyft_1_1MaxSet.html#a4547f688e0737185144c4499218149d2", null ] +]; \ No newline at end of file diff --git a/structSyft_1_1MaxSetSynthesisResult-members.html b/structSyft_1_1MaxSetSynthesisResult-members.html new file mode 100644 index 0000000..2a9dc18 --- /dev/null +++ b/structSyft_1_1MaxSetSynthesisResult-members.html @@ -0,0 +1,103 @@ + + + + + + + +LydiaSyft: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    LydiaSyft +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    Syft::MaxSetSynthesisResult Member List
    +
    +
    + +

    This is the complete list of members for Syft::MaxSetSynthesisResult, including all inherited members.

    + + + + +
    deferring_strategy (defined in Syft::MaxSetSynthesisResult)Syft::MaxSetSynthesisResult
    nondeferring_strategy (defined in Syft::MaxSetSynthesisResult)Syft::MaxSetSynthesisResult
    realizability (defined in Syft::MaxSetSynthesisResult)Syft::MaxSetSynthesisResult
    +
    + + + + diff --git a/structSyft_1_1MaxSetSynthesisResult.html b/structSyft_1_1MaxSetSynthesisResult.html new file mode 100644 index 0000000..72e70c5 --- /dev/null +++ b/structSyft_1_1MaxSetSynthesisResult.html @@ -0,0 +1,117 @@ + + + + + + + +LydiaSyft: Syft::MaxSetSynthesisResult Struct Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    LydiaSyft +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    Syft::MaxSetSynthesisResult Struct Reference
    +
    +
    + + + + + + + + +

    +Public Attributes

    +bool realizability
     
    +CUDD::BDD deferring_strategy
     
    +CUDD::BDD nondeferring_strategy
     
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structSyft_1_1MaxSetSynthesisResult.js b/structSyft_1_1MaxSetSynthesisResult.js new file mode 100644 index 0000000..b197471 --- /dev/null +++ b/structSyft_1_1MaxSetSynthesisResult.js @@ -0,0 +1,6 @@ +var structSyft_1_1MaxSetSynthesisResult = +[ + [ "deferring_strategy", "structSyft_1_1MaxSetSynthesisResult.html#a2e0731624af308e00a6f9a1010abc67e", null ], + [ "nondeferring_strategy", "structSyft_1_1MaxSetSynthesisResult.html#afd016a6ac32138e58a4984fdbbf6035b", null ], + [ "realizability", "structSyft_1_1MaxSetSynthesisResult.html#a7ac9a78ab451c49d214356d0b3206b6d", null ] +]; \ No newline at end of file diff --git a/structSyft_1_1OneStepSynthesisResult-members.html b/structSyft_1_1OneStepSynthesisResult-members.html new file mode 100644 index 0000000..a9e0a61 --- /dev/null +++ b/structSyft_1_1OneStepSynthesisResult-members.html @@ -0,0 +1,102 @@ + + + + + + + +LydiaSyft: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    LydiaSyft +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    Syft::OneStepSynthesisResult Member List
    +
    +
    + +

    This is the complete list of members for Syft::OneStepSynthesisResult, including all inherited members.

    + + + +
    realizability (defined in Syft::OneStepSynthesisResult)Syft::OneStepSynthesisResult
    winning_move (defined in Syft::OneStepSynthesisResult)Syft::OneStepSynthesisResult
    +
    + + + + diff --git a/structSyft_1_1OneStepSynthesisResult.html b/structSyft_1_1OneStepSynthesisResult.html new file mode 100644 index 0000000..e10cce7 --- /dev/null +++ b/structSyft_1_1OneStepSynthesisResult.html @@ -0,0 +1,114 @@ + + + + + + + +LydiaSyft: Syft::OneStepSynthesisResult Struct Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    LydiaSyft +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    Syft::OneStepSynthesisResult Struct Reference
    +
    +
    + + + + + + +

    +Public Attributes

    +std::optional< bool > realizability = std::nullopt
     
    +CUDD::BDD winning_move
     
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structSyft_1_1OneStepSynthesisResult.js b/structSyft_1_1OneStepSynthesisResult.js new file mode 100644 index 0000000..6526510 --- /dev/null +++ b/structSyft_1_1OneStepSynthesisResult.js @@ -0,0 +1,5 @@ +var structSyft_1_1OneStepSynthesisResult = +[ + [ "realizability", "structSyft_1_1OneStepSynthesisResult.html#a737f0c9b332758d5e4c1abab4c0ec558", null ], + [ "winning_move", "structSyft_1_1OneStepSynthesisResult.html#aa19371b7cf8b51212d8fd19697dc9db4", null ] +]; \ No newline at end of file diff --git a/structSyft_1_1SynthesisResult-members.html b/structSyft_1_1SynthesisResult-members.html new file mode 100644 index 0000000..2fce17f --- /dev/null +++ b/structSyft_1_1SynthesisResult-members.html @@ -0,0 +1,105 @@ + + + + + + + +LydiaSyft: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    LydiaSyft +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    Syft::SynthesisResult Member List
    +
    +
    + +

    This is the complete list of members for Syft::SynthesisResult, including all inherited members.

    + + + + + + +
    realizability (defined in Syft::SynthesisResult)Syft::SynthesisResult
    safe_states (defined in Syft::SynthesisResult)Syft::SynthesisResult
    transducer (defined in Syft::SynthesisResult)Syft::SynthesisResult
    winning_moves (defined in Syft::SynthesisResult)Syft::SynthesisResult
    winning_states (defined in Syft::SynthesisResult)Syft::SynthesisResult
    +
    + + + + diff --git a/structSyft_1_1SynthesisResult.html b/structSyft_1_1SynthesisResult.html new file mode 100644 index 0000000..f83ab70 --- /dev/null +++ b/structSyft_1_1SynthesisResult.html @@ -0,0 +1,123 @@ + + + + + + + +LydiaSyft: Syft::SynthesisResult Struct Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    LydiaSyft +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    Syft::SynthesisResult Struct Reference
    +
    +
    + + + + + + + + + + + + +

    +Public Attributes

    +bool realizability
     
    +CUDD::BDD winning_states
     
    +CUDD::BDD winning_moves
     
    +std::unique_ptr< Transducertransducer
     
    +CUDD::BDD safe_states
     
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structSyft_1_1SynthesisResult.js b/structSyft_1_1SynthesisResult.js new file mode 100644 index 0000000..d3f3188 --- /dev/null +++ b/structSyft_1_1SynthesisResult.js @@ -0,0 +1,8 @@ +var structSyft_1_1SynthesisResult = +[ + [ "realizability", "structSyft_1_1SynthesisResult.html#ae21828696f8e58d63d680800640d7fd3", null ], + [ "safe_states", "structSyft_1_1SynthesisResult.html#ae048c72bf009672cd85a612448983a0a", null ], + [ "transducer", "structSyft_1_1SynthesisResult.html#a7dec559b07b908815c3a4a6add5e2d47", null ], + [ "winning_moves", "structSyft_1_1SynthesisResult.html#a0717caa4636f54e40e00c9cfc616a6f8", null ], + [ "winning_states", "structSyft_1_1SynthesisResult.html#a8e5467af4680cd69506df3dfef1d3e96", null ] +]; \ No newline at end of file diff --git a/structSyft_1_1TLSFArgs-members.html b/structSyft_1_1TLSFArgs-members.html new file mode 100644 index 0000000..06834a8 --- /dev/null +++ b/structSyft_1_1TLSFArgs-members.html @@ -0,0 +1,104 @@ + + + + + + + +LydiaSyft: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    LydiaSyft +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    Syft::TLSFArgs Member List
    +
    +
    + +

    This is the complete list of members for Syft::TLSFArgs, including all inherited members.

    + + + + + +
    formula (defined in Syft::TLSFArgs)Syft::TLSFArgs
    partition (defined in Syft::TLSFArgs)Syft::TLSFArgs
    protagonist_player (defined in Syft::TLSFArgs)Syft::TLSFArgs
    starting_player (defined in Syft::TLSFArgs)Syft::TLSFArgs
    +
    + + + + diff --git a/structSyft_1_1TLSFArgs.html b/structSyft_1_1TLSFArgs.html new file mode 100644 index 0000000..5f960d3 --- /dev/null +++ b/structSyft_1_1TLSFArgs.html @@ -0,0 +1,129 @@ + + + + + + + +LydiaSyft: Syft::TLSFArgs Struct Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    LydiaSyft +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    Syft::TLSFArgs Struct Reference
    +
    +
    +
    +Collaboration diagram for Syft::TLSFArgs:
    +
    +
    Collaboration graph
    + + + + +
    [legend]
    + + + + + + + + + + +

    +Public Attributes

    +const Player starting_player
     
    +const Player protagonist_player
     
    +const InputOutputPartition partition
     
    +const whitemech::lydia::ltlf_ptr formula
     
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structSyft_1_1TLSFArgs.js b/structSyft_1_1TLSFArgs.js new file mode 100644 index 0000000..97a45d2 --- /dev/null +++ b/structSyft_1_1TLSFArgs.js @@ -0,0 +1,7 @@ +var structSyft_1_1TLSFArgs = +[ + [ "formula", "structSyft_1_1TLSFArgs.html#aa10f5b286b0ded59b1267249a0499cb9", null ], + [ "partition", "structSyft_1_1TLSFArgs.html#ab2d3021fe37469e6d8e20409ad98c267", null ], + [ "protagonist_player", "structSyft_1_1TLSFArgs.html#a3648031cbce003d7ed18f1e56cf28fa0", null ], + [ "starting_player", "structSyft_1_1TLSFArgs.html#a775cd041c7714db4e55fb8dc56d05c47", null ] +]; \ No newline at end of file diff --git a/structSyft_1_1TLSFArgs__coll__graph.map b/structSyft_1_1TLSFArgs__coll__graph.map new file mode 100644 index 0000000..fb18895 --- /dev/null +++ b/structSyft_1_1TLSFArgs__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/structSyft_1_1TLSFArgs__coll__graph.md5 b/structSyft_1_1TLSFArgs__coll__graph.md5 new file mode 100644 index 0000000..590ff05 --- /dev/null +++ b/structSyft_1_1TLSFArgs__coll__graph.md5 @@ -0,0 +1 @@ +eb3ca6777903f9620f6950579efdfe7e \ No newline at end of file diff --git a/structSyft_1_1TLSFArgs__coll__graph.png b/structSyft_1_1TLSFArgs__coll__graph.png new file mode 100644 index 0000000..d95a678 Binary files /dev/null and b/structSyft_1_1TLSFArgs__coll__graph.png differ diff --git a/sync_off.png b/sync_off.png new file mode 100644 index 0000000..3b443fc Binary files /dev/null and b/sync_off.png differ diff --git a/sync_on.png b/sync_on.png new file mode 100644 index 0000000..e08320f Binary files /dev/null and b/sync_on.png differ diff --git a/synthesis_8hpp_source.html b/synthesis_8hpp_source.html new file mode 100644 index 0000000..533f480 --- /dev/null +++ b/synthesis_8hpp_source.html @@ -0,0 +1,134 @@ + + + + + + + +LydiaSyft: src/cli/synthesis.hpp Source File + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    LydiaSyft +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    synthesis.hpp
    +
    +
    +
    1 //
    +
    2 // Created by marcofavorito on 22/01/24.
    +
    3 //
    +
    4 
    +
    5 #ifndef LYDIASYFT_CLI_SYNTHESIS_H
    +
    6 #define LYDIASYFT_CLI_SYNTHESIS_H
    +
    7 
    +
    8 #include <CLI/CLI.hpp>
    +
    9 #include "VarMgr.h"
    +
    10 #include "Stopwatch.h"
    +
    11 #include "base.hpp"
    +
    12 #include "synthesizer/LTLfSynthesizer.h"
    +
    13 
    +
    14 
    +
    15 namespace Syft {
    +
    16 
    +
    17  class SynthesisRunner : public BaseRunner {
    +
    18  private:
    +
    19 
    +
    20  void do_synthesis_(const SymbolicStateDfa &symbolic_dfa);
    +
    21 
    +
    22  public:
    +
    23  SynthesisRunner(const std::shared_ptr<whitemech::lydia::parsers::ltlf::LTLfDriver> &driver,
    +
    24  const std::string &formula_file, const std::string &path_to_syfco, bool print_strategy,
    +
    25  bool print_times) : BaseRunner(driver, formula_file, path_to_syfco, print_strategy,
    +
    26  print_times) {}
    +
    27 
    +
    28  void run();
    +
    29 
    +
    30  };
    +
    31 }
    +
    32 
    +
    33 #endif //LYDIASYFT_CLI_SYNTHESIS_H
    +
    Definition: base.hpp:91
    +
    A DFA with symbolic states and transitions.
    Definition: SymbolicStateDfa.h:18
    +
    Definition: synthesis.hpp:17
    +
    +
    + + + + diff --git a/tab_a.png b/tab_a.png new file mode 100644 index 0000000..3b725c4 Binary files /dev/null and b/tab_a.png differ diff --git a/tab_b.png b/tab_b.png new file mode 100644 index 0000000..e2b4a86 Binary files /dev/null and b/tab_b.png differ diff --git a/tab_h.png b/tab_h.png new file mode 100644 index 0000000..fd5cb70 Binary files /dev/null and b/tab_h.png differ diff --git a/tab_s.png b/tab_s.png new file mode 100644 index 0000000..ab478c9 Binary files /dev/null and b/tab_s.png differ diff --git a/tabs.css b/tabs.css new file mode 100644 index 0000000..7d45d36 --- /dev/null +++ b/tabs.css @@ -0,0 +1 @@ +.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:rgba(0,0,0,0)}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0px/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.sm-dox{background-image:url("tab_b.png")}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0px 12px;padding-right:43px;font-family:"Lucida Grande","Geneva","Helvetica",Arial,sans-serif;font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:0px 1px 1px rgba(255,255,255,0.9);color:#283A5D;outline:none}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox a.current{color:#D23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace !important;text-align:center;text-shadow:none;background:rgba(255,255,255,0.5);border-radius:5px}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{border-radius:0}.sm-dox ul{background:rgba(162,162,162,0.1)}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:white;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media (min-width: 768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:url("tab_b.png");line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:#283A5D transparent transparent transparent;background:transparent;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0px 12px;background-image:url("tab_s.png");background-repeat:no-repeat;background-position:right;border-radius:0 !important}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox a:hover span.sub-arrow{border-color:#fff transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent #fff transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:#fff;border-radius:5px !important;box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent #555;border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:#555;background-image:none;border:0 !important;color:#555;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent #fff}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:#fff;height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #D23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#D23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent #555 transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:#555 transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px !important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:url("tab_b.png")}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:#fff}}