blob: 84c3ca79b5d2c9516fd4644cb3836b86adbde544 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
|
/********************* */
/*! \file preprocessing_pass.cpp
** \verbatim
** Top contributors (to current version):
** Justin Xu, Andres Noetzli
** This file is part of the CVC4 project.
** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
**
** \brief The preprocessing pass super class
**
** Preprocessing pass super class.
**/
#include "preprocessing/preprocessing_pass.h"
#include "smt/dump.h"
#include "smt/smt_statistics_registry.h"
namespace CVC4 {
namespace preprocessing {
PreprocessingPassResult PreprocessingPass::apply(
AssertionPipeline* assertionsToPreprocess) {
TimerStat::CodeTimer codeTimer(d_timer);
Trace("preprocessing") << "PRE " << d_name << std::endl;
Chat() << d_name << "..." << std::endl;
dumpAssertions(("pre-" + d_name).c_str(), *assertionsToPreprocess);
PreprocessingPassResult result = applyInternal(assertionsToPreprocess);
dumpAssertions(("post-" + d_name).c_str(), *assertionsToPreprocess);
Trace("preprocessing") << "POST " << d_name << std::endl;
return result;
}
void PreprocessingPass::dumpAssertions(const char* key,
const AssertionPipeline& assertionList) {
if (Dump.isOn("assertions") && Dump.isOn(std::string("assertions:") + key))
{
// Push the simplified assertions to the dump output stream
for (const auto& n : assertionList) {
Dump("assertions") << AssertCommand(Expr(n.toExpr()));
}
}
}
PreprocessingPass::PreprocessingPass(PreprocessingPassContext* preprocContext,
const std::string& name)
: d_name(name), d_timer("preprocessing::" + name) {
d_preprocContext = preprocContext;
smtStatisticsRegistry()->registerStat(&d_timer);
}
PreprocessingPass::~PreprocessingPass() {
Assert(smt::smtEngineInScope());
if (smtStatisticsRegistry() != nullptr) {
smtStatisticsRegistry()->unregisterStat(&d_timer);
}
}
} // namespace preprocessing
} // namespace CVC4
|