Skip to content

Commit

Permalink
More aggressive proof elaboration for strings (cvc5#11154)
Browse files Browse the repository at this point in the history
A simpler alternative for cvc5#10680 that
suffices for a problem set of interest.
  • Loading branch information
ajreynol authored Aug 19, 2024
1 parent c1c2285 commit 70c2d14
Showing 1 changed file with 17 additions and 0 deletions.
17 changes: 17 additions & 0 deletions src/theory/strings/infer_proof_cons.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -228,6 +228,23 @@ void InferProofCons::convert(InferenceId infer,
{
useBuffer = true;
}
else
{
// More aggressive: lift to original form and use extended rewriting.
// A common case that this covers is arithmetic bound conflicts like
// (= (str.len @purifyN) 5) where @purifyN is the purification skolem
// for (str.++ "ABCDEF" x).
Node psrco = SkolemManager::getOriginalForm(psrc);
if (psb.applyPredTransform(psrco,
conc,
exps,
MethodId::SB_DEFAULT,
MethodId::SBA_SEQUENTIAL,
MethodId::RW_EXT_REWRITE))
{
useBuffer = psb.applyPredTransform(psrc, psrco, {});
}
}
}
else
{
Expand Down

0 comments on commit 70c2d14

Please sign in to comment.