Simplify heuristic in `processNEqc` (#4129)
authorAndres Noetzli <andres.noetzli@gmail.com>
Sat, 21 Mar 2020 19:57:22 +0000 (12:57 -0700)
committerGitHub <noreply@github.com>
Sat, 21 Mar 2020 19:57:22 +0000 (14:57 -0500)
This commit removes a special case in `CoreSolver::processNEqc()` where
we stopped looking for inferences for a given normal form as soon as we
found the highest priority inference (currently that an element in the
normal form is empty). This effectively elevates the priority of this
inference to the other inferences that are done immediately instead of
being added to the `pinfer` vector that holds the possible inferences.
The experiments that I've run seem to confirm that it is unnecessary to
have this special case.

src/theory/strings/core_solver.cpp

index f250647af7818c00bbfe82ae4572aa5730c637aa..447af00e8b5b5592e0df9679c89bb5d4b090748c 100644 (file)
@@ -953,10 +953,6 @@ void CoreSolver::processNEqc(std::vector<NormalForm>& normal_forms)
         {
           return;
         }
-        else if (!pinfer.empty() && pinfer.back().d_id == 1)
-        {
-          break;
-        }
         //AJR: for less aggressive endpoint inference
         //rindex = 0;
 
@@ -966,10 +962,6 @@ void CoreSolver::processNEqc(std::vector<NormalForm>& normal_forms)
         {
           return;
         }
-        else if (!pinfer.empty() && pinfer.back().d_id == 1)
-        {
-          break;
-        }
       }
     }
   }