dlinear  0.0.1
Delta-complete SMT solver for linear programming
Loading...
Searching...
No Matches
NaiveCnfizer.h
1
8#pragma once
9
10#include "dlinear/symbolic/FormulaVisitor.h"
11#include "dlinear/symbolic/Nnfizer.h"
12#include "dlinear/symbolic/symbolic.h"
13
14namespace dlinear {
15
23class NaiveCnfizer : public FormulaVisitor<> {
24 public:
29 explicit NaiveCnfizer(const Config &config) : FormulaVisitor{config, "NaiveCnfizer"} {}
30
36 [[nodiscard]] Formula Process(const Formula &f) const;
37 [[nodiscard]] Formula operator()(const Formula &f) const;
38
39 private:
40 [[nodiscard]] Formula VisitEqualTo(const Formula &f) const override;
41 [[nodiscard]] Formula VisitNotEqualTo(const Formula &f) const override;
42 [[nodiscard]] Formula VisitConjunction(const Formula &f) const override;
43 [[nodiscard]] Formula VisitDisjunction(const Formula &f) const override;
44 [[nodiscard]] Formula VisitNegation(const Formula &f) const override;
45 [[nodiscard]] Formula VisitForall(const Formula &f) const override;
46
48};
49
50} // namespace dlinear
Simple dataclass used to store the configuration of the program.
Definition Config.h:38
This base class provides all the methods expected to visit the underlying formula and return a modifi...
Transforms a symbolic formula f into a CNF formula by preserving its semantics.
NaiveCnfizer(const Config &config)
Construct a new NaiveCnfizer object with the given config.
Formula Process(const Formula &f) const
Convert a f into an equivalent formula f' in CNF.
Nnfizer nnfizer_
NNFizer. Used to convert the formula into NNF.
Implementation of NNF (Negation Normal Form) conversion.
Definition Nnfizer.h:24
Represents a symbolic form of a first-order logic formula.
Global namespace for the dlinear library.