const unsigned int sharingChannelSize = 1000000;
for(unsigned i = 0; i < d_numThreads; ++i){
- if(Debug.isOn("channel-empty")) {
- d_channelsOut.push_back
- (new EmptySharedChannel<ChannelFormat>(sharingChannelSize));
- d_channelsIn.push_back
- (new EmptySharedChannel<ChannelFormat>(sharingChannelSize));
- continue;
- }
d_channelsOut.push_back
(new SynchronizedSharedChannel<ChannelFormat>(sharingChannelSize));
d_channelsIn.push_back
d_seq->addCommand(cmd->clone());
return CommandExecutor::doCommandSingleton(cmd);
} else if(mode == 1) { // portfolio
+
+ // If quantified, stay sequential
+ if(d_smts[0]->getLogicInfo().isQuantified()) {
+ return CommandExecutor::doCommandSingleton(cmd);
+ }
+
d_seq->addCommand(cmd->clone());
// We currently don't support changing number of threads for each
d_lastWinner = portfolioReturn.first;
- // *d_options[options::out]
- // << "Winner = "
- // << portfolioReturn.first
- // << std::endl;
-
if(d_ostringstreams.size() != 0) {
assert(d_numThreads == d_options[options::threads]);
assert(portfolioReturn.first >= 0);
typedef expr::pickle::Pickle ChannelFormat;
-template <typename T>
-class EmptySharedChannel: public SharedChannel<T> {
-public:
- EmptySharedChannel(int) {}
- bool push(const T&) { return true; }
- T pop() { return T(); }
- bool empty() { return true; }
- bool full() { return false; }
-};/* class EmptySharedChannel */
-
class PortfolioLemmaOutputChannel : public LemmaOutputChannel {
private:
std::string d_tag;
{}
void notifyNewLemma(Expr lemma) {
- if(Debug.isOn("disable-lemma-sharing")) {
+ if(int(lemma.getNumChildren()) > options::sharingFilterByLength()) {
return;
}
- if(options::sharingFilterByLength() >= 0) {
- // 0 would mean no-sharing effectively
- if(int(lemma.getNumChildren()) > options::sharingFilterByLength()) {
- return;
- }
- }
++cnt;
Trace("sharing") << d_tag << ": " << lemma << std::endl;
expr::pickle::Pickle pkl;
setLogic(LogicInfo(s));
}
+LogicInfo SmtEngine::getLogicInfo() const {
+ return d_logic;
+}
+
// This function is called when d_logic has just been changed.
// The LogicInfo isn't passed in explicitly, because that might
// tempt people in the code to use the (potentially unlocked)
}
return preSkolemizeQuantifiers( nn, polarity, fvs );
}else{
- Assert( n.getKind()==AND || n.getKind()==OR );
+ Assert( n.getKind() == kind::AND || n.getKind() == kind::OR );
std::vector< Node > children;
for( int i=0; i<(int)n.getNumChildren(); i++ ){
children.push_back( preSkolemizeQuantifiers( n[i], polarity, fvs ) );
*/
void setLogic(const LogicInfo& logic) throw(ModalException);
+ /**
+ * Get the logic information currently set
+ */
+ LogicInfo getLogicInfo() const;
+
/**
* Set information about the script executing.
*/