libgsjj  1
Deterministic finite automata learning library
BinaryCNFMethod.h
Go to the documentation of this file.
1 
7 #pragma once
8 
9 #include "bcsat/bc.hh"
10 
11 #include "gsjj/passive/Method.h"
13 
14 namespace gsjj {
15  namespace passive {
16  namespace CNF {
22  class BinaryCNFMethod : public Method, public RegisterInFactory<BinaryCNFMethod> {
23  public:
24  BinaryCNFMethod() = delete;
25  virtual ~BinaryCNFMethod();
26 
27  bool solve() override;
28 
29  std::unique_ptr<DFA<char>> constructDFA() override;
30 
31  static std::string getFactoryName();
32 
33  virtual void setStopTrigger(const std::chrono::seconds &timeLimit, std::atomic_bool &stopTrigger, const bool *stopPointer) override;
34 
35  protected:
36  typedef std::map<std::pair<std::string, unsigned int>, Gate*> m_mapType;
37 
38  protected:
39  BinaryCNFMethod(const std::set<std::string> &SpSet, const std::set<std::string> &SmSet, const std::set<std::string> &SSet, const std::set<std::string> &prefixesSet, const std::set<char> &alphabetSet, unsigned int n);
40 
41  virtual void createVariables();
42  virtual Gate* createFormula();
43 
44  Gate* equal(const std::string &u, const std::string &v);
45  Gate* phi_different(const std::string &u, const std::string &v);
46  Gate* phi_not_q_i(const std::string &u, unsigned int i);
47 
48  unsigned int toState(const std::string &u) const;
49 
50  std::unique_ptr<DFA<char>> toDFA() const;
51 
52  protected:
53  std::unique_ptr<BC> m_solver;
54  SimplifyOptions m_simplify_opts;
58  unsigned int m_binarySize;
59  m_mapType m_stateToVar;
60  };
61  }
62  }
63 }
The namespace of the library.
Definition: binary.h:11
unsigned int toState(const std::string &u) const
std::unique_ptr< DFA< char > > constructDFA() override
Constructs the DFA induced by the variables according to the method.
The binary method with a CNF SAT solver.
bool solve() override
Solves the SAT/SMT problem induced by the method.
std::unique_ptr< DFA< char > > toDFA() const
std::map< std::pair< std::string, unsigned int >, Gate * > m_mapType
Helps to register a method in the factory.
Definition: MethodFactory.h:84
The base class of all passive methods.
Definition: Method.h:40
Gate * equal(const std::string &u, const std::string &v)
virtual void setStopTrigger(const std::chrono::seconds &timeLimit, std::atomic_bool &stopTrigger, const bool *stopPointer) override
Sets the stop trigger for this method.
Gate * phi_not_q_i(const std::string &u, unsigned int i)
Gate * phi_different(const std::string &u, const std::string &v)