* use "isPure(theory) && !isQuantified()".
*/
bool isPure(theory::TheoryId theory) const {
- // the third conjuct is really just to rule out the misleading case where you ask
- // isPure(THEORY_BOOL) and get true even in e.g. QF_LIA
+ // the third and fourth conjucts are really just to rule out the misleading
+ // case where you ask isPure(THEORY_BOOL) and get true even in e.g. QF_LIA
return isTheoryEnabled(theory) && !isSharingEnabled() &&
- ( !isTrueTheory(theory) || d_sharingTheories == 1 );
+ ( !isTrueTheory(theory) || d_sharingTheories == 1 ) &&
+ ( isTrueTheory(theory) || d_sharingTheories == 0 );
}
// these are for arithmetic
TS_ASSERT( !info.isQuantified() );
info.setLogicString("AUFLIA");
+ TS_ASSERT( !info.isPure( THEORY_BOOL ) );
TS_ASSERT( info.isSharingEnabled() );
TS_ASSERT( info.isQuantified() );
TS_ASSERT( info.isTheoryEnabled( THEORY_ARRAY ) );
TS_ASSERT( !info.areRealsUsed() );
info.setLogicString("AUFLIRA");
+ TS_ASSERT( !info.isPure( THEORY_BOOL ) );
TS_ASSERT( info.isSharingEnabled() );
TS_ASSERT( info.isQuantified() );
TS_ASSERT( info.isTheoryEnabled( THEORY_ARRAY ) );
TS_ASSERT( info.areRealsUsed() );
info.setLogicString("AUFNIRA");
+ TS_ASSERT( !info.isPure( THEORY_BOOL ) );
TS_ASSERT( info.isSharingEnabled() );
TS_ASSERT( info.isQuantified() );
TS_ASSERT( info.isTheoryEnabled( THEORY_ARRAY ) );
TS_ASSERT( info.areRealsUsed() );
info.setLogicString("LRA");
+ TS_ASSERT( !info.isPure( THEORY_BOOL ) );
TS_ASSERT( !info.isSharingEnabled() );
TS_ASSERT( info.isQuantified() );
TS_ASSERT( !info.isTheoryEnabled( THEORY_ARRAY ) );
TS_ASSERT( info.areRealsUsed() );
info.setLogicString("QF_ABV");
+ TS_ASSERT( !info.isPure( THEORY_BOOL ) );
TS_ASSERT( !info.isQuantified() );
TS_ASSERT( info.isSharingEnabled() );
TS_ASSERT( info.isTheoryEnabled( THEORY_ARRAY ) );
TS_ASSERT( info.areRealsUsed() );
info.setLogicString("QF_UF");
+ TS_ASSERT( !info.isPure( THEORY_BOOL ) );
TS_ASSERT( !info.isQuantified() );
TS_ASSERT( !info.isSharingEnabled() );
TS_ASSERT( !info.isTheoryEnabled( THEORY_ARRAY ) );