Esempio n. 1
0
void Master::killActiveOrphans0()
{
    CALL("killActiveOrphans0()");
    _active.ResetIterator();
    for (Clause* cl = _active.Next(); cl; cl = _active.Next())
        if ((cl->Active())
                && (!cl->IsVIP())
                && (cl->IsOrphan()))
        {
            enqueueForDisposal(cl);
            _statActiveOrphansMurdered++;
        };
}; // void Master::killActiveOrphans0()
Esempio n. 2
0
bool Master::backSubsumeBy(Clause* cl)
{
    CALL("backSubsumeBy(Clause* cl)");
    _backwardSubsumptionSemaphore = true;
    Clause* subsumedClause;
    bool usedSubsumed = false;
    if (_backSubsumption.query(cl))
    {
        while (_backSubsumption.subsumeNext())
        {
            _statBackSubsumed++;
            cl->MakeVIP();
            subsumedClause = _backSubsumption.subsumed();
            ASSERT(subsumedClause != cl);
            ASSERT(subsumedClause->Active());
            usedSubsumed = (usedSubsumed
                            || (subsumedClause->mainSet() == Clause::MainSetActive)
                            || (subsumedClause->mainSet() == Clause::MainSetDefinitions));
            enqueueForDisposal(subsumedClause);
        };
    };
    _backwardSubsumptionSemaphore = false;
    return (bool)usedSubsumed;
}; // bool Master::backSubsumeBy(Clause* cl)