#ifndef __ForwardDemodulation__
#define __ForwardDemodulation__
#include "Forwards.hpp"
#include "Indexing/TermIndex.hpp"
#include "DemodulationHelper.hpp"
#include "InferenceEngine.hpp"
#include "ProofExtra.hpp"
namespace Inferences
{
using namespace Kernel;
using namespace Indexing;
using namespace Saturation;
class ForwardDemodulation
: public ForwardSimplificationEngine
{
public:
void attach(SaturationAlgorithm* salg) override;
void detach() override;
bool perform(Clause* cl, Clause*& replacement, ClauseIterator& premises) override;
protected:
bool _preorderedOnly;
bool _encompassing;
bool _useTermOrderingDiagrams;
bool _skipNonequationalLiterals;
DemodulationHelper _helper;
std::shared_ptr<DemodulationLHSIndex> _index;
};
using ForwardDemodulationExtra = RewriteInferenceExtra;
};
#endif