Complete rt-inconsistency check#784
Conversation
|
Could you rebase this PR, then I can take a look. |
- Implemented complete rt-Inconsistency pre-check
e839dfe to
1829bd8
Compare
@danieldietsch done. |
| ARCH="linux" | ||
| ARCHPATH="products/CLI-E4/linux/gtk/x86_64" | ||
| ADDS+=("adds/z3" "adds/cvc4nyu" "adds/cvc4" "adds/mathsat") | ||
| ADDS+=("adds/z3" "adds/cvc4nyu" "adds/cvc4" "adds/mathsat" "adds/mus_enumerator") |
There was a problem hiding this comment.
Does mus_enumerator have a licence? You also need to add some info to our READMEs.
There was a problem hiding this comment.
Is the name still meaningful?
| import de.uni_freiburg.informatik.ultimate.smtinterpol.muses.Translator; | ||
| import de.uni_freiburg.informatik.ultimate.smtinterpol.smtlib2.SMTInterpol; | ||
|
|
||
| public class CompleteRtInconsistencyCheck { |
There was a problem hiding this comment.
This class would benefit from comments... E.g., I cannot tell what most of the fields of the CritPhase record are supposed to be.
| private final IUltimateServiceProvider mServices; | ||
| private final ILogger mLogger; | ||
| private final CompleteRtInconsistencyCheckMode mMode; | ||
| final Map<String, AnnotatedReq> mAnnotatedReqs; |
| } | ||
|
|
||
| public List<Entry<PatternType<?>, PhaseEventAutomata>[]> check() { | ||
| // TODO: Add option to filter groups and muses with size 1 |
There was a problem hiding this comment.
Why, what would that do? Are you planning on doing that todo for this PR, or is this for the future?
| private final IIdentifierTranslator[] mIdentifierTranslators; | ||
| private final IReqSymbolTable mReqSymboltable; | ||
| private final Boogie2SMT mBoogieToSmt; | ||
| protected final Boogie2SMT mBoogieToSmt; |
| final List<Statement> stmtList = new ArrayList<>(); | ||
| final List<Entry<PatternType<?>, PhaseEventAutomata>[]> subsets = CrossProducts.subArrays( | ||
| consideredAutomata.toArray(new Entry[count]), actualCombinationNum, new Entry[actualCombinationNum]); | ||
| List<Entry<PatternType<?>, PhaseEventAutomata>[]> subsets = new ArrayList<>(); |
There was a problem hiding this comment.
Dont initialize if you override
| if (mCompleteRtInconsistencyCheck) { | ||
| subsets = mRtInconcistencyConditionGenerator.doRtiPreCheck(mReqPeas, mCompleteRtInconsistencyCheckMode); | ||
| if (mCompleteRtInconsistencyCheckCandidateExtraction) { | ||
| return new ArrayList<>(); |
| private static final boolean DEF_COMPLETE_RT_INCONSISTENCY_CHECK = true; | ||
| private static final String DESC_COMPLETE_RT_INCONSISTENCY_CHECK = """ | ||
| This check allows for a fast and complete analysis for rt-inconsistency by reducing the number of \ | ||
| requirement combinations that need to be checked."""; |
There was a problem hiding this comment.
You could point to some paper in the description.
| return results; | ||
| } | ||
|
|
||
| public static class SubsetSolver { |
There was a problem hiding this comment.
Its weird to have that as public static class -- are you sure you need to expose both solvers and cannot hide them completely?
This PR extends the existing rt-inconsistency analysis such that it uses a pre-computed candidate set.