LearnTA  0.0.1
equivalence_oracle.hh
1 
6 #pragma once
7 
8 #include <optional>
9 
10 #include "timed_automaton.hh"
11 #include "timed_word.hh"
12 
13 namespace learnta {
18  protected:
19  std::size_t eqQueryCount = 0;
20  public:
21  virtual ~EquivalenceOracle() = default;
22 
26  [[nodiscard]] virtual std::optional<TimedWord> findCounterExample(const TimedAutomaton &hypothesis) = 0;
27 
29  [[nodiscard]] std::size_t numEqQueries() const {
30  return eqQueryCount;
31  }
32 
34  virtual std::ostream &printStatistics(std::ostream &stream) const {
35  stream << "Number of equivalence queries: " << this->numEqQueries() << "\n";
36 
37  return stream;
38  }
39  };
40 }
Interface of the equivalence oracle.
Definition: equivalence_oracle.hh:17
virtual std::optional< TimedWord > findCounterExample(const TimedAutomaton &hypothesis)=0
Make an equivalence query.
virtual std::ostream & printStatistics(std::ostream &stream) const
Print the statistics.
Definition: equivalence_oracle.hh:34
std::size_t numEqQueries() const
Return the number of the executed equivalence queries.
Definition: equivalence_oracle.hh:29
Definition: experiment_runner.hh:23
A timed automaton.
Definition: timed_automaton.hh:213