From f1a0b4762a6349307c9e7490cc2591c1530dd4f0 Mon Sep 17 00:00:00 2001 From: Drodt Date: Thu, 30 Jul 2026 13:17:48 +0200 Subject: [PATCH 01/13] Add \generateEQ and simplify heap rules --- .../key/nparser/builder/TacletPBuilder.java | 131 +++++- .../de/uka/ilkd/key/rule/AntecTaclet.java | 13 + .../java/de/uka/ilkd/key/rule/FindTaclet.java | 2 + .../de/uka/ilkd/key/rule/RewriteTaclet.java | 13 + .../java/de/uka/ilkd/key/rule/SuccTaclet.java | 13 +- .../tacletbuilder/AntecTacletBuilder.java | 28 ++ .../rule/tacletbuilder/FindTacletBuilder.java | 2 +- .../tacletbuilder/NoFindTacletBuilder.java | 16 +- .../tacletbuilder/RewriteTacletBuilder.java | 29 ++ ...ewriteTacletBuilderSchemaVarCollector.java | 3 +- .../rule/tacletbuilder/SuccTacletBuilder.java | 28 ++ .../key/rule/tacletbuilder/TacletBuilder.java | 4 +- .../tacletbuilder/TacletPrefixBuilder.java | 4 +- .../de/uka/ilkd/key/proof/rules/heapRules.key | 401 ++---------------- key.ncore/src/main/antlr/KeYLexer.g4 | 4 + key.ncore/src/main/antlr/KeYTacletParser.g4 | 7 +- 16 files changed, 304 insertions(+), 394 deletions(-) diff --git a/key.core/src/main/java/de/uka/ilkd/key/nparser/builder/TacletPBuilder.java b/key.core/src/main/java/de/uka/ilkd/key/nparser/builder/TacletPBuilder.java index 30a9d73ff2a..f85f4010b42 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/nparser/builder/TacletPBuilder.java +++ b/key.core/src/main/java/de/uka/ilkd/key/nparser/builder/TacletPBuilder.java @@ -104,8 +104,8 @@ public Object visitRulesOrAxioms(JavaKeYParser.RulesOrAxiomsContext ctx) { } ChoiceExpr choices = accept(ctx.choices); this.requiredChoices = Objects.requireNonNullElse(choices, ChoiceExpr.TRUE); - List seq = mapOf(ctx.taclet()); - topLevelTaclets.addAll(seq); + List> seq = this.mapOf(ctx.taclet()); + topLevelTaclets.addAll(seq.stream().flatMap(Collection::stream).toList()); disableJavaSchemaMode(); return null; } @@ -144,7 +144,7 @@ public TacletBuilder visitTriggers(JavaKeYParser.TriggersContext ctx) { } @Override - public Taclet visitTaclet(JavaKeYParser.TacletContext ctx) { + public List visitTaclet(JavaKeYParser.TacletContext ctx) { Sequent assumesSeq = JavaDLSequentKit.getInstance().getEmptySequent(); ImmutableSet tacletAnnotations = DefaultImmutableSet.nil(); if (ctx.LEMMA() != null) { @@ -178,7 +178,7 @@ public Taclet visitTaclet(JavaKeYParser.TacletContext ctx) { registerTaclet(ctx, r, doc, origin); currentTBuilder.pop(); - return r; + return List.of(r); } // schema var decls @@ -243,14 +243,127 @@ public Taclet visitTaclet(JavaKeYParser.TacletContext ctx) { Taclet r = peekTBuilder().getTaclet(); String doc = processDocumentation(ctx.doc); registerTaclet(ctx, r, doc, origin); + List res = new LinkedList<>(); + res.add(r); + if (ctx.modifiers().generateEQ() != null && !ctx.modifiers().generateEQ().isEmpty()) { + if (ctx.modifiers().generateEQ().size() != 1) { + semanticError(ctx.modifiers(), + "A taclet may have at most one \\generateEQ declaration."); + } + JavaKeYParser.GenerateEQContext generateEQContext = + ctx.modifiers().generateEQ().getFirst(); + JTerm eqTerm = accept(generateEQContext.term()); + if (eqTerm == null) { + semanticError(generateEQContext.term(), "failed to build term."); + } else { + List rs = generateEQContext.ruleset().isEmpty() ? null + : mapOf(generateEQContext.ruleset()); + var eqTB = + generateEQTaclet(b, eqTerm, rs == null ? null : ImmutableList.fromList(rs)); + Taclet eqTaclet = eqTB.getTaclet(); + res.add(eqTaclet); + currentTBuilder.push(eqTB); + registerTaclet(ctx, eqTaclet, doc, origin); + currentTBuilder.pop(); + } + } setSchemaVariables(schemaVariables().parent()); currentTBuilder.pop(); - return r; + return res; } catch (RuntimeException e) { throw new BuildingException(ctx, e); } } + private TacletBuilder generateEQTaclet(TacletBuilder tb, + JTerm eqTerm, ImmutableList ruleSets) { + var fb = tb.copy(); + var TB = services.getTermBuilder(); + setSchemaVariables(new Namespace<>(schemaVariables())); + fb.setName(new Name(fb.getName() + "EQ")); + fb.setDisplayName(fb.getTaclet().displayName() + "EQ"); + TermSV eqSV = SchemaVariableFactory.createTermSV(new Name("EQ"), eqTerm.sort()); + schemaVariables().add(eqSV); + JTerm eqSVTerm = TB.var(eqSV); + var assumesSeq = fb.assumesSequent(); + assumesSeq = assumesSeq + .addFormula(new SequentFormula(TB.equals(eqTerm, eqSVTerm)), true, false).sequent(); + fb.setAssumesSequent(assumesSeq); + if (ruleSets != null) + fb.setRuleSets(ruleSets); + switch (fb) { + case AntecTacletBuilder atb -> { + atb.setFind((Sequent) replace(atb.getFind(), eqTerm, eqSVTerm)); + } + case SuccTacletBuilder stb -> { + stb.setFind((Sequent) replace(stb.getFind(), eqTerm, eqSVTerm)); + } + case RewriteTacletBuilder rb -> { + rb.setFind((JTerm) replace(rb.getFind(), eqTerm, eqSVTerm)); + rb.setApplicationRestriction(rb.getTaclet().applicationRestriction() + .combine(ApplicationRestriction.SAME_UPDATE_LEVEL)); + } + default -> { + } + } + ImmutableList goalSpecs = + ImmutableList.nil(); + for (var tgt : fb.goalTemplates()) { + if (tgt.rules() != null && !tgt.rules().isEmpty()) { + ImmutableList rules = ImmutableList.nil(); + for (var r : tgt.rules()) { + if (r instanceof FindTaclet ft) { + ft.setFind(replace(ft.find(), eqTerm, eqSVTerm)); + } else { + rules = rules.append((Taclet) r); + } + } + org.key_project.prover.rules.tacletbuilder.TacletGoalTemplate newGoalSpec = + switch (tgt) { + case AntecSuccTacletGoalTemplate astg -> + new AntecSuccTacletGoalTemplate(astg.sequent(), rules, + astg.replaceWith(), astg.addedProgVars()); + case RewriteTacletGoalTemplate rtg -> new RewriteTacletGoalTemplate( + rtg.sequent(), rules, rtg.replaceWith(), rtg.addedProgVars()); + default -> tgt; + }; + goalSpecs = goalSpecs.append(newGoalSpec); + } else { + goalSpecs = goalSpecs.append(tgt); + } + ChoiceExpr soc = fb.getGoal2Choices().get(tgt); + if (soc != null) + fb.addGoal2ChoicesMapping((TacletGoalTemplate) tgt, soc); + } + fb.setTacletGoalTemplates(goalSpecs); + setSchemaVariables(schemaVariables().parent()); + return fb; + } + + private SyntaxElement replace(SyntaxElement se, JTerm find, JTerm to) { + if (se instanceof Sequent seq) + return replace(seq, find, to); + if (se instanceof JTerm t) + return replace(t, find, to); + return se; + } + + private Sequent replace(Sequent se, JTerm find, JTerm to) { + ImmutableList ante = ImmutableList.nil(); + for (var sf : se.antecedent().asList()) { + ante = ante.append(new SequentFormula(replace((JTerm) sf.formula(), find, to))); + } + ImmutableList succ = ImmutableList.nil(); + for (var sf : se.succedent().asList()) { + succ = succ.append(new SequentFormula(replace((JTerm) sf.formula(), find, to))); + } + return JavaDLSequentKit.createSequent(ante, succ); + } + + private JTerm replace(JTerm se, JTerm find, JTerm to) { + return GenericTermReplacer.replace(se, t -> t.equals(find), (ignored) -> to, services); + } + private void registerTaclet(JavaKeYParser.Datatype_declContext ctx, TacletBuilder tb) { var taclet = tb.getTaclet(); taclet2Builder.put(taclet, peekTBuilder()); @@ -863,8 +976,8 @@ public ImmutableSet visitAddprogvar(JavaKeYParser.AddprogvarCont @Override public ImmutableList visitTacletlist(JavaKeYParser.TacletlistContext ctx) { - List taclets = mapOf(ctx.taclet()); - return ImmutableList.fromList(taclets); + List> taclets = mapOf(ctx.taclet()); + return ImmutableList.fromList(taclets.stream().flatMap(Collection::stream).toList()); } private @NonNull TacletBuilder createTacletBuilderFor(Object find, @@ -1077,14 +1190,14 @@ protected JOperatorSV declareSchemaVariable(ParserRuleContext ctx, String name, } if (variables().lookup(v.name()) != null) { - semanticError(null, "Schema variables shadows previous declared variable: %s.", + semanticError(ctx, "Schema variables shadows previous declared variable: %s.", v.name()); } if (schemaVariables().lookup(v.name()) != null) { JOperatorSV old = (JOperatorSV) schemaVariables().lookup(v.name()); if (!old.sort().equals(v.sort())) { - semanticError(null, + semanticError(ctx, "Schema variables clashes with previous declared schema variable: %s.", v.name()); } diff --git a/key.core/src/main/java/de/uka/ilkd/key/rule/AntecTaclet.java b/key.core/src/main/java/de/uka/ilkd/key/rule/AntecTaclet.java index 3f61dfa4877..e9d30926f5d 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/rule/AntecTaclet.java +++ b/key.core/src/main/java/de/uka/ilkd/key/rule/AntecTaclet.java @@ -8,6 +8,7 @@ import org.key_project.logic.ChoiceExpr; import org.key_project.logic.Name; +import org.key_project.logic.SyntaxElement; import org.key_project.logic.op.sv.SchemaVariable; import org.key_project.prover.rules.*; import org.key_project.prover.rules.TacletPrefix; @@ -76,4 +77,16 @@ protected void createAndInitializeExecutor() { return new AntecTaclet(new Name(s), applPart, goalTemplates(), getRuleSets(), attrs, (Sequent) find, prefixMap, choices, tacletAnnotations); } + + @Override + public FindTaclet setFind(SyntaxElement find) { + final TacletApplPart applPart = + new TacletApplPart(assumesSequent(), applicationRestriction(), varsNew(), + varsNotFreeIn(), + varsNewDependingOn(), getVariableConditions()); + final TacletAttributes attrs = new TacletAttributes(displayName(), trigger); + + return new AntecTaclet(name, applPart, goalTemplates(), getRuleSets(), attrs, + (Sequent) find, prefixMap, choices, tacletAnnotations); + } } diff --git a/key.core/src/main/java/de/uka/ilkd/key/rule/FindTaclet.java b/key.core/src/main/java/de/uka/ilkd/key/rule/FindTaclet.java index ca71fd48507..1a7d802b270 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/rule/FindTaclet.java +++ b/key.core/src/main/java/de/uka/ilkd/key/rule/FindTaclet.java @@ -163,4 +163,6 @@ public String toString() { } return tacletAsString; } + + public abstract FindTaclet setFind(SyntaxElement find); } diff --git a/key.core/src/main/java/de/uka/ilkd/key/rule/RewriteTaclet.java b/key.core/src/main/java/de/uka/ilkd/key/rule/RewriteTaclet.java index 7d1cd26f955..0836a22cfb9 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/rule/RewriteTaclet.java +++ b/key.core/src/main/java/de/uka/ilkd/key/rule/RewriteTaclet.java @@ -17,6 +17,7 @@ import org.key_project.logic.ChoiceExpr; import org.key_project.logic.Name; +import org.key_project.logic.SyntaxElement; import org.key_project.logic.op.Operator; import org.key_project.logic.op.sv.SchemaVariable; import org.key_project.prover.rules.*; @@ -209,4 +210,16 @@ public SequentFormula getRewriteResult(Goal goal, TermLabelState termLabelState, (JTerm) find, prefixMap, choices, getSurviveSymbExec(), tacletAnnotations); } + + @Override + public RewriteTaclet setFind(SyntaxElement find) { + final TacletApplPart applPart = + new TacletApplPart(assumesSequent(), applicationRestriction(), varsNew(), + varsNotFreeIn(), + varsNewDependingOn(), getVariableConditions()); + final TacletAttributes attrs = new TacletAttributes(displayName(), trigger); + + return new RewriteTaclet(name, applPart, goalTemplates, getRuleSets(), attrs, (JTerm) find, + prefixMap, choices, getSurviveSymbExec(), tacletAnnotations); + } } diff --git a/key.core/src/main/java/de/uka/ilkd/key/rule/SuccTaclet.java b/key.core/src/main/java/de/uka/ilkd/key/rule/SuccTaclet.java index 56e4e129b83..b7bdae1b5bc 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/rule/SuccTaclet.java +++ b/key.core/src/main/java/de/uka/ilkd/key/rule/SuccTaclet.java @@ -8,6 +8,7 @@ import org.key_project.logic.ChoiceExpr; import org.key_project.logic.Name; +import org.key_project.logic.SyntaxElement; import org.key_project.logic.op.sv.SchemaVariable; import org.key_project.prover.rules.RuleSet; import org.key_project.prover.rules.TacletAnnotation; @@ -79,5 +80,15 @@ protected StringBuffer toStringFind(StringBuffer sb) { prefixMap, choices, tacletAnnotations); } - + @Override + public FindTaclet setFind(SyntaxElement find) { + final TacletApplPart applPart = + new TacletApplPart(assumesSequent(), applicationRestriction(), varsNew(), + varsNotFreeIn(), + varsNewDependingOn(), getVariableConditions()); + final TacletAttributes attrs = new TacletAttributes(displayName(), trigger); + return new SuccTaclet(name, applPart, goalTemplates(), getRuleSets(), attrs, + (Sequent) find, + prefixMap, choices, tacletAnnotations); + } } diff --git a/key.core/src/main/java/de/uka/ilkd/key/rule/tacletbuilder/AntecTacletBuilder.java b/key.core/src/main/java/de/uka/ilkd/key/rule/tacletbuilder/AntecTacletBuilder.java index cf7e4741f84..f89a5651b94 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/rule/tacletbuilder/AntecTacletBuilder.java +++ b/key.core/src/main/java/de/uka/ilkd/key/rule/tacletbuilder/AntecTacletBuilder.java @@ -94,4 +94,32 @@ public AntecTaclet getAntecTaclet() { choices, tacletAnnotations); return t; } + + @Override + public AntecTacletBuilder copy() { + var rb = new AntecTacletBuilder().setFind((Sequent) getFind()); + rb.setAnnotations(tacletAnnotations); + rb.setApplicationRestriction(applicationRestriction); + rb.setAssumesSequent(assumesSeq); + rb.setChoices(choices); + rb.setDisplayName(attrs.displayName()); + rb.setName(name); + rb.setTacletGoalTemplates(goals); + rb.setTrigger(attrs.trigger()); + rb.setRuleSets(ruleSets); + for (var vc : variableConditions) { + rb.addVariableCondition(vc); + } + rb.addVarsNew(varsNew); + rb.addVarsNotFreeIn(varsNotFreeIn); + for (var vc : varsNewDependingOn) { + rb.addVarsNewDependingOn(vc.first(), vc.second()); + } + rb.setFind((Sequent) find); + rb.setChoices(choices); + rb.goal2Choices = + (java.util.HashMap) goal2Choices + .clone(); + return rb; + } } diff --git a/key.core/src/main/java/de/uka/ilkd/key/rule/tacletbuilder/FindTacletBuilder.java b/key.core/src/main/java/de/uka/ilkd/key/rule/tacletbuilder/FindTacletBuilder.java index b6f8954bca5..b81bc3c5dc0 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/rule/tacletbuilder/FindTacletBuilder.java +++ b/key.core/src/main/java/de/uka/ilkd/key/rule/tacletbuilder/FindTacletBuilder.java @@ -41,7 +41,7 @@ public abstract class FindTacletBuilder extends TacletBuil * exception otherwise */ protected void checkBoundInIfAndFind() { - final BoundUniquenessChecker ch = new BoundUniquenessChecker(getFind(), ifSequent()); + final BoundUniquenessChecker ch = new BoundUniquenessChecker(getFind(), assumesSequent()); if (!ch.correct()) { throw new TacletBuilderException(this, "A bound SchemaVariable variables occurs both " + "in assumes and find clauses."); diff --git a/key.core/src/main/java/de/uka/ilkd/key/rule/tacletbuilder/NoFindTacletBuilder.java b/key.core/src/main/java/de/uka/ilkd/key/rule/tacletbuilder/NoFindTacletBuilder.java index 15d8cb6de45..a0987e2d2a9 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/rule/tacletbuilder/NoFindTacletBuilder.java +++ b/key.core/src/main/java/de/uka/ilkd/key/rule/tacletbuilder/NoFindTacletBuilder.java @@ -60,7 +60,7 @@ public void addTacletGoalTemplate(TacletGoalTemplate goal) { * an exception otherwise */ protected void checkBoundInIfAndFind() { - final BoundUniquenessChecker ch = new BoundUniquenessChecker(ifSequent()); + final BoundUniquenessChecker ch = new BoundUniquenessChecker(assumesSequent()); if (!ch.correct()) { throw new TacletBuilderException(this, "A bound SchemaVariable occurs twice in if."); } @@ -80,4 +80,18 @@ public NoFindTaclet getTaclet() { checkBoundInIfAndFind(); return getNoFindTaclet(); } + + @Override + public NoFindTacletBuilder copy() { + var rb = new NoFindTacletBuilder(); + rb.setAnnotations(tacletAnnotations); + rb.setAssumesSequent(assumesSeq); + rb.setChoices(choices); + rb.setDisplayName(attrs.displayName()); + rb.setName(name); + rb.setTacletGoalTemplates(goals); + rb.setTrigger(attrs.trigger()); + rb.setRuleSets(ruleSets); + return null; + } } diff --git a/key.core/src/main/java/de/uka/ilkd/key/rule/tacletbuilder/RewriteTacletBuilder.java b/key.core/src/main/java/de/uka/ilkd/key/rule/tacletbuilder/RewriteTacletBuilder.java index 60b25537f22..36edeaebabf 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/rule/tacletbuilder/RewriteTacletBuilder.java +++ b/key.core/src/main/java/de/uka/ilkd/key/rule/tacletbuilder/RewriteTacletBuilder.java @@ -92,4 +92,33 @@ public void addGoalTerm(JTerm goalTerm) { public T getTaclet() { return getRewriteTaclet(); } + + @Override + public RewriteTacletBuilder copy() { + var rb = new RewriteTacletBuilder().setFind((JTerm) getFind()); + rb.setSurviveSmbExec(surviveSmbExec); + rb.setAnnotations(tacletAnnotations); + rb.setApplicationRestriction(applicationRestriction); + rb.setAssumesSequent(assumesSeq); + rb.setChoices(choices); + rb.setDisplayName(attrs.displayName()); + rb.setName(name); + rb.setTacletGoalTemplates(goals); + rb.setTrigger(attrs.trigger()); + rb.setRuleSets(ruleSets); + for (var vc : variableConditions) { + rb.addVariableCondition(vc); + } + rb.addVarsNew(varsNew); + rb.addVarsNotFreeIn(varsNotFreeIn); + for (var vc : varsNewDependingOn) { + rb.addVarsNewDependingOn(vc.first(), vc.second()); + } + rb.setFind((JTerm) find); + rb.setChoices(choices); + rb.goal2Choices = + (java.util.HashMap) goal2Choices + .clone(); + return rb; + } } diff --git a/key.core/src/main/java/de/uka/ilkd/key/rule/tacletbuilder/RewriteTacletBuilderSchemaVarCollector.java b/key.core/src/main/java/de/uka/ilkd/key/rule/tacletbuilder/RewriteTacletBuilderSchemaVarCollector.java index ad02725c15c..aed931a991b 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/rule/tacletbuilder/RewriteTacletBuilderSchemaVarCollector.java +++ b/key.core/src/main/java/de/uka/ilkd/key/rule/tacletbuilder/RewriteTacletBuilderSchemaVarCollector.java @@ -35,7 +35,8 @@ public RewriteTacletBuilderSchemaVarCollector( public Set collectSchemaVariables() { - Set result = new LinkedHashSet<>(collectSchemaVariables(rtb.ifSequent())); + Set result = + new LinkedHashSet<>(collectSchemaVariables(rtb.assumesSequent())); if (rtb instanceof FindTacletBuilder) { result.addAll(collectSchemaVariables(rtb.getFind())); diff --git a/key.core/src/main/java/de/uka/ilkd/key/rule/tacletbuilder/SuccTacletBuilder.java b/key.core/src/main/java/de/uka/ilkd/key/rule/tacletbuilder/SuccTacletBuilder.java index db9e4bd9cbe..9509e8d8813 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/rule/tacletbuilder/SuccTacletBuilder.java +++ b/key.core/src/main/java/de/uka/ilkd/key/rule/tacletbuilder/SuccTacletBuilder.java @@ -90,4 +90,32 @@ public SuccTaclet getSuccTaclet() { public SuccTaclet getTaclet() { return getSuccTaclet(); } + + @Override + public SuccTacletBuilder copy() { + var rb = new SuccTacletBuilder().setFind((Sequent) getFind()); + rb.setAnnotations(tacletAnnotations); + rb.setApplicationRestriction(applicationRestriction); + rb.setAssumesSequent(assumesSeq); + rb.setChoices(choices); + rb.setDisplayName(attrs.displayName()); + rb.setName(name); + rb.setTacletGoalTemplates(goals); + rb.setTrigger(attrs.trigger()); + rb.setRuleSets(ruleSets); + for (var vc : variableConditions) { + rb.addVariableCondition(vc); + } + rb.addVarsNew(varsNew); + rb.addVarsNotFreeIn(varsNotFreeIn); + for (var vc : varsNewDependingOn) { + rb.addVarsNewDependingOn(vc.first(), vc.second()); + } + rb.setFind((Sequent) find); + rb.setChoices(choices); + rb.goal2Choices = + (java.util.HashMap) goal2Choices + .clone(); + return rb; + } } diff --git a/key.core/src/main/java/de/uka/ilkd/key/rule/tacletbuilder/TacletBuilder.java b/key.core/src/main/java/de/uka/ilkd/key/rule/tacletbuilder/TacletBuilder.java index e9120ba0f24..6c50e628d74 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/rule/tacletbuilder/TacletBuilder.java +++ b/key.core/src/main/java/de/uka/ilkd/key/rule/tacletbuilder/TacletBuilder.java @@ -274,7 +274,7 @@ public void setRuleSets(ImmutableList rs) { ruleSets = rs; } - public Sequent ifSequent() { + public Sequent assumesSequent() { return assumesSeq; } @@ -302,6 +302,8 @@ public void setTacletGoalTemplates( */ public abstract T getTaclet(); + public abstract TacletBuilder copy(); + public T getTacletWithoutInactiveGoalTemplates(Set active) { if (goal2Choices == null || goals.isEmpty()) { return getTaclet(); diff --git a/key.core/src/main/java/de/uka/ilkd/key/rule/tacletbuilder/TacletPrefixBuilder.java b/key.core/src/main/java/de/uka/ilkd/key/rule/tacletbuilder/TacletPrefixBuilder.java index ead5b391448..12c669d52b5 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/rule/tacletbuilder/TacletPrefixBuilder.java +++ b/key.core/src/main/java/de/uka/ilkd/key/rule/tacletbuilder/TacletPrefixBuilder.java @@ -124,7 +124,7 @@ private void visit(org.key_project.prover.rules.tacletbuilder.TacletGoalTemplate } public void build() { - visit(tacletBuilder.ifSequent()); + visit(tacletBuilder.assumesSequent()); if (tacletBuilder instanceof FindTacletBuilder findBuilder) { @SuppressWarnings("unchecked") @@ -187,7 +187,7 @@ private boolean atMostOneRepl() { private boolean occurrsOnlyInFindOrRepl(SchemaVariable sv) { TacletSchemaVariableCollector svc = new TacletSchemaVariableCollector(); - svc.visit(tacletBuilder.ifSequent()); + svc.visit(tacletBuilder.assumesSequent()); for (var tacletGoalTemplate : tacletBuilder.goalTemplates()) { // if (tmpl instanceof RewriteTacletGoalTemplate) { // RewriteTacletGoalTemplate diff --git a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/heapRules.key b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/heapRules.key index 358ef23fb10..c38ca113f5e 100644 --- a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/heapRules.key +++ b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/heapRules.key @@ -46,6 +46,8 @@ \then((beta)x) \else(select<[beta]>(h, o2, f2))) \heuristics(semantics_blasting) + // proven with KeY for beta = Object using selectOfStore (CS) + \generateEQ(store(h, o, f, x) : simplify_heap_high_costs) }; selectOfCreate { @@ -69,6 +71,8 @@ \else(select<[beta]>(h, o2, f))) } \heuristics(semantics_blasting) + // proven with KeY for beta = Object using selectOfCreate (CS) + \generateEQ(create(h, o) : simplify_heap_high_costs) }; selectOfAnon { @@ -84,6 +88,8 @@ \then(select<[beta]>(h2, o, f)) \else(select<[beta]>(h, o, f))) \heuristics(semantics_blasting) + // proven with KeY for beta = Object using selectOfAnon (CS) + \generateEQ(anon(h, s, h2) : simplify_heap_high_costs) }; selectOfMemset { @@ -99,6 +105,8 @@ \then((beta)x) \else(select<[beta]>(h, o, f))) \heuristics(semantics_blasting) + // proven with KeY for beta = Object using selectOfMemset (CS) + \generateEQ(memset(h, s, x) : simplify_heap_high_costs) }; // CS: This is an implicit axiom which follows from the rules @@ -117,87 +125,7 @@ }; // -------------------------------------------------------------------------- - // EQ versions of axioms for select/store (here for manual use only) - // -------------------------------------------------------------------------- - - // proven with KeY for beta = Object using selectOfStore (CS) - selectOfStoreEQ { - \schemaVar \term Heap h; - \schemaVar \term Object o, o2; - \schemaVar \term Field f, f2; - \schemaVar \term alpha x; - \schemaVar \term Heap EQ; - - \assumes(store(h, o, f, x) = EQ ==>) - \find(select<[beta]>(EQ, o2, f2)) - - \replacewith(\if(o = o2 & f = f2 & f != java.lang.Object::#$created) - \then((beta)x) - \else(select<[beta]>(h, o2, f2))) - \heuristics(simplify_heap_high_costs) - }; - - // proven with KeY for beta = Object using selectOfCreate (CS) - selectOfCreateEQ { - \schemaVar \term Heap h; - \schemaVar \term Object o, o2; - \schemaVar \term Field f; - \schemaVar \term Heap EQ; - - \assumes(create(h, o) = EQ ==>) - \find(select<[beta]>(EQ, o2, f)) - - (permissions:off) { - \replacewith(\if(o = o2 & o != null & f = java.lang.Object::#$created) - \then((beta)TRUE) - \else(select<[beta]>(h, o2, f))) - }; - (permissions:on) { - \replacewith(\if(o = o2 & o != null) - \then(\if(f = java.lang.Object::#$created) \then((beta)TRUE) \else(defaultValue<[beta]>)) - \else(select<[beta]>(h, o2, f))) - } - \heuristics(simplify_heap_high_costs) - }; - - // proven with KeY for beta = Object using selectOfAnon (CS) - selectOfAnonEQ { - \schemaVar \term Heap h, h2; - \schemaVar \term LocSet s; - \schemaVar \term Object o; - \schemaVar \term Field f; - \schemaVar \term Heap EQ; - - \assumes(anon(h, s, h2) = EQ ==>) - \find(select<[beta]>(EQ, o, f)) - - \replacewith(\if(elementOf(o, f, s) & f != java.lang.Object::#$created - | elementOf(o, f, freshLocs(h))) - \then(select<[beta]>(h2, o, f)) - \else(select<[beta]>(h, o, f))) - \heuristics(simplify_heap_high_costs) - }; - - // proven with KeY for beta = Object using selectOfMemset (CS) - selectOfMemsetEQ { - \schemaVar \term Heap h; - \schemaVar \term LocSet s; - \schemaVar \term any x; - \schemaVar \term Object o; - \schemaVar \term Field f; - \schemaVar \term Heap EQ; - - \assumes(memset(h, s, x) = EQ ==>) - \find(select<[beta]>(EQ, o, f)) - - \replacewith(\if(elementOf(o, f, s) & f != java.lang.Object::#$created) - \then((beta)x) - \else(select<[beta]>(h, o, f))) - \heuristics(simplify_heap_high_costs) - }; - - // -------------------------------------------------------------------------- - // Prevent exponetial term size explosion of select terms by introduction of + // Prevent exponential term size explosion of select terms by introduction of // linear many equations. // // author: scheben @@ -365,34 +293,7 @@ }) \heuristics(simplify_select) - }; - - simplifySelectOfStoreEQ { - \schemaVar \term Heap h, EQ; - \schemaVar \term Object o, o2; - \schemaVar \term Field f, f2; - \schemaVar \term alpha x; - \schemaVar \term beta sk; - - \assumes(store(h, o, f, x) = EQ ==>) - \find(select<[beta]>(EQ, o2, f2) = sk ==>) - \inSequentState - - \replacewith( - \if(o = o2 & f = f2 & f != java.lang.Object::#$created) - \then((beta)x) - \else(select<[beta]>(h, o2, f2)) - = sk ==>) - - \addrules( - replaceKnownSelect { - \find(select<[beta]>(EQ, o2, f2)) - \inSequentState - \replacewith(sk) - \heuristics(concrete) - }) - - \heuristics(simplify_select) + \generateEQ(store(h, o, f, x)) }; simplifySelectOfCreate { @@ -434,48 +335,7 @@ } \heuristics(simplify_select) - }; - - simplifySelectOfCreateEQ { - \schemaVar \term Heap h, EQ; - \schemaVar \term Object o, o2; - \schemaVar \term Field f; - \schemaVar \term beta sk; - - \assumes(create(h, o) = EQ ==>) - \find(select<[beta]>(EQ, o2, f) = sk ==>) - \inSequentState - - (permissions:off) { - \replacewith( - \if(o = o2 & o != null & f = java.lang.Object::#$created) - \then((beta)TRUE) - \else(select<[beta]>(h, o2, f)) - = sk ==>) - \addrules( - replaceKnownSelect { - \find(select<[beta]>(EQ, o2, f)) - \inSequentState - \replacewith(sk) - \heuristics(concrete) - } - ) - }; - (permissions:on) { - \replacewith( - \if(o = o2 & o != null) - \then(\if(f = java.lang.Object::#$created) \then((beta)TRUE) \else(defaultValue<[beta]>)) - \else(select<[beta]>(h, o2, f)) - = sk ==>) - \addrules( - replaceKnownSelect { - \find(select<[beta]>(EQ, o2, f)) - \inSequentState - \replacewith(sk) - \heuristics(concrete) - }) - } - \heuristics(simplify_select) + \generateEQ(create(h, o)) }; simplifySelectOfAnon { @@ -504,35 +364,7 @@ }) \heuristics(simplify_select) - }; - - simplifySelectOfAnonEQ { - \schemaVar \term Heap h, h2, EQ; - \schemaVar \term LocSet s; - \schemaVar \term Object o; - \schemaVar \term Field f; - \schemaVar \term beta sk; - - \assumes(anon(h, s, h2) = EQ ==>) - \find(select<[beta]>(EQ, o, f) = sk ==>) - \inSequentState - - \replacewith( - \if(elementOf(o, f, s) & f != java.lang.Object::#$created - | elementOf(o, f, freshLocs(h))) - \then(select<[beta]>(h2, o, f)) - \else(select<[beta]>(h, o, f)) - = sk ==>) - - \addrules( - replaceKnownSelect { - \find(select<[beta]>(EQ, o, f)) - \inSequentState - \replacewith(sk) - \heuristics(concrete) - }) - - \heuristics(simplify_select) + \generateEQ(anon(h, s, h2)) }; simplifySelectOfMemset { @@ -561,35 +393,7 @@ }) \heuristics(simplify_select) - }; - - simplifySelectOfMemsetEQ { - \schemaVar \term Heap h, EQ; - \schemaVar \term LocSet s; - \schemaVar \term any x; - \schemaVar \term Object o; - \schemaVar \term Field f; - \schemaVar \term beta sk; - - \assumes(memset(h, s, x) = EQ ==>) - \find(select<[beta]>(EQ, o, f) = sk ==>) - \inSequentState - - \replacewith( - \if(elementOf(o, f, s) & f != java.lang.Object::#$created) - \then((beta)x) - \else(select<[beta]>(h, o, f)) - = sk ==>) - - \addrules( - replaceKnownSelect { - \find(select<[beta]>(EQ, o, f)) - \inSequentState - \replacewith(sk) - \heuristics(concrete) - }) - - \heuristics(simplify_select) + \generateEQ(memset(h, s, x)) }; // --- @@ -743,21 +547,7 @@ \replacewith(select<[alpha]>(h, u, f2)) \heuristics(simplify_select_elim_store) - }; - - dismissNonSelectedFieldEQ { - \schemaVar \term Heap h, EQ; - \schemaVar \term Object o, u; - \schemaVar \term Field f1, f2; - \schemaVar \term any x; - - \assumes(store(h, o, f1, x) = EQ ==>) - \find(select<[alpha]>(EQ, u, f2)) - \varcond(\differentFields(f1, f2)) - - \replacewith(select<[alpha]>(h, u, f2)) - - \heuristics(simplify_select_elim_store) + \generateEQ(store(h, o, f1, x)) }; dropEffectlessStores { @@ -819,6 +609,8 @@ \else(select<[boolean]>(h2, o, java.lang.Object::#$created))) \heuristics(simplify_heap_high_costs) + // proven with KeY using selectCreatedOfAnon (CS) + \generateEQ(anon(h, s, h2)) }; // proven with KeY using selectCreatedOfAnon (CS) @@ -833,39 +625,8 @@ select<[boolean]>(h2, o, java.lang.Object::#$created) = TRUE) \heuristics(simplify_ENLARGING) - }; - - // proven with KeY using selectCreatedOfAnon (CS) - selectCreatedOfAnonEQ { - \schemaVar \term Heap h, h2; - \schemaVar \term LocSet s; - \schemaVar \term Object o; - \schemaVar \term Heap EQ; - - \assumes(anon(h, s, h2) = EQ ==>) - \find(select<[boolean]>(EQ, o, java.lang.Object::#$created)) - - \replacewith(\if(select<[boolean]>(h, o, java.lang.Object::#$created) = TRUE) - \then(TRUE) - \else(select<[boolean]>(h2, o, java.lang.Object::#$created))) - - \heuristics(simplify_heap_high_costs) - }; - - // proven with KeY using selectCreatedOfAnon (CS) - selectCreatedOfAnonAsFormulaEQ { - \schemaVar \term Heap h, h2; - \schemaVar \term LocSet s; - \schemaVar \term Object o; - \schemaVar \term Heap EQ; - - \assumes(anon(h, s, h2) = EQ ==>) - \find(select<[boolean]>(EQ, o, java.lang.Object::#$created) = TRUE) - - \replacewith(select<[boolean]>(h, o, java.lang.Object::#$created) = TRUE | - select<[boolean]>(h2, o, java.lang.Object::#$created) = TRUE) - - \heuristics(simplify_ENLARGING) + // proven with KeY using selectCreatedOfAnon (CS) + \generateEQ(anon(h, s, h2)) }; equalityToSelect { @@ -934,6 +695,7 @@ java.lang.Object::#$created) = TRUE ==>) \heuristics(inReachableStateImplication) + \generateEQ(select<[LocSet]>(h, o, f)) }; onlyCreatedObjectsAreInLocSetsFinal { @@ -950,46 +712,9 @@ java.lang.Object::#$created) = TRUE ==>) \heuristics(inReachableStateImplication) + \generateEQ(final<[LocSet]>(o, f)) }; - - onlyCreatedObjectsAreInLocSetsEQ { - \schemaVar \term Heap h; - \schemaVar \term Object o, o2; - \schemaVar \term Field f, f2; - \schemaVar \term LocSet EQ; - - \assumes(wellFormed(h), select<[LocSet]>(h, o, f) = EQ ==>) - \find(elementOf(o2, f2, EQ) ==>) - - \add(o2 = null - | select<[boolean]>(h, - o2, - java.lang.Object::#$created) = TRUE ==>) - - \heuristics(inReachableStateImplication) - }; - - onlyCreatedObjectsAreInLocSetsEQFinal { - \schemaVar \term Heap h; - \schemaVar \term Object o, o2; - \schemaVar \term Field f, f2; - \schemaVar \term LocSet EQ; - - \assumes(wellFormed(h), final<[LocSet]>(o, f) = EQ ==>) - \find(elementOf(o2, f2, EQ) ==>) - - \add(o2 = null - | select<[boolean]>(h, - o2, - java.lang.Object::#$created) = TRUE ==>) - - \heuristics(inReachableStateImplication) - }; - - - - arrayLengthNotNegative { \schemaVar \term Object o; @@ -1029,6 +754,7 @@ \replacewith(wellFormed(h) & (x = null | select<[boolean]>(h, x, java.lang.Object::#$created) = TRUE & instance<[alpha]>(x) = TRUE)) \heuristics(simplify_enlarging) + \generateEQ(store(h, o, f, x)) }; wellFormedStoreArray { @@ -1061,6 +787,7 @@ \replacewith(wellFormed(h) & createdInHeap(x, h)) \heuristics(simplify_enlarging) + \generateEQ(store(h, o, f, x)) }; wellFormedStorePrimitive { @@ -1080,6 +807,7 @@ \replacewith(wellFormed(h)) \heuristics(concrete) + \generateEQ(store(h, o, f, x)) }; wellFormedStorePrimitiveArray { @@ -1124,6 +852,7 @@ \replacewith(wellFormed(h) & wellFormed(h2)) \heuristics(concrete) + \generateEQ(anon(h, s, h2)) }; wellFormedMemsetArrayObject { @@ -1227,71 +956,6 @@ // EQ versions of taclets for proving wellFormed (these are lemmata) // -------------------------------------------------------------------------- - wellFormedStoreObjectEQ { - \schemaVar \term Heap h; - \schemaVar \term Object o; - \schemaVar \term Field f; - \schemaVar \term deltaObject x; - \schemaVar \term Heap EQ; - - \assumes(store(h, o, f, x) = EQ ==>) - \find(wellFormed(EQ)) - \succedentPolarity - - \varcond(\fieldType(f, alpha)) - - \replacewith(wellFormed(h) & (x = null | select<[boolean]>(h, x, java.lang.Object::#$created) = TRUE & instance<[alpha]>(x) = TRUE)) - - \heuristics(simplify_enlarging) - }; - - wellFormedStoreLocSetEQ { - \schemaVar \term Heap h; - \schemaVar \term Object o; - \schemaVar \term Field f; - \schemaVar \term LocSet x; - \schemaVar \term Heap EQ; - - \assumes(store(h, o, f, x) = EQ ==>) - \find(wellFormed(EQ)) - \succedentPolarity - - \replacewith(wellFormed(h) & createdInHeap(x, h)) - - \heuristics(simplify_enlarging) - }; - - wellFormedStorePrimitiveEQ { - \schemaVar \term Heap h; - \schemaVar \term Object o; - \schemaVar \term Field f; - \schemaVar \term beta x; - \schemaVar \term Heap EQ; - - \assumes(store(h, o, f, x) = EQ ==>) - \find(wellFormed(EQ)) - \succedentPolarity - \varcond(\not \sub(beta, java.lang.Object), \not \sub(beta, LocSet)) - - \replacewith(wellFormed(h)) - - \heuristics(concrete) - }; - - wellFormedAnonEQ { - \schemaVar \term Heap h, h2; - \schemaVar \term LocSet s; - \schemaVar \term Heap EQ; - - \assumes(anon(h, s, h2) = EQ ==>) - \find(wellFormed(EQ)) - \succedentPolarity - - \replacewith(wellFormed(h) & wellFormed(h2)) - - \heuristics(concrete) - }; - /* In the general case , memset can no longer maintain wellformedness :( @@ -1377,22 +1041,7 @@ | select<[boolean]>(h, o, java.lang.Object::#$created) = TRUE ==>) \heuristics(inReachableStateImplication) - }; - - onlyCreatedObjectsAreObservedInLocSetsEQ { - \schemaVar \term Heap h; - \schemaVar \term LocSet obs, EQ; - \schemaVar \term Object o; - \schemaVar \term Field f; - - \assumes(obs = EQ ==>) - \find(elementOf(o, f, EQ) ==>) - \varcond(\isObserver(obs, h)) - - \add(o = null - | select<[boolean]>(h, o, java.lang.Object::#$created) = TRUE ==>) - - \heuristics(inReachableStateImplication) + \generateEQ(obs) }; // -------------------------------------------------------------------------- diff --git a/key.ncore/src/main/antlr/KeYLexer.g4 b/key.ncore/src/main/antlr/KeYLexer.g4 index 84e84c87269..1d503f5c1c6 100644 --- a/key.ncore/src/main/antlr/KeYLexer.g4 +++ b/key.ncore/src/main/antlr/KeYLexer.g4 @@ -319,6 +319,10 @@ SUCCEDENTPOLARITY : '\\succedentPolarity' ; +GENERATE_EQ + : '\\generateEQ' + ; + CLOSEGOAL : '\\closegoal' ; diff --git a/key.ncore/src/main/antlr/KeYTacletParser.g4 b/key.ncore/src/main/antlr/KeYTacletParser.g4 index 87519551187..cd19b02821c 100644 --- a/key.ncore/src/main/antlr/KeYTacletParser.g4 +++ b/key.ncore/src/main/antlr/KeYTacletParser.g4 @@ -110,10 +110,13 @@ triggers ; modifiers - : (rs = rulesets | NONINTERACTIVE | DISPLAYNAME dname = string_value | HELPTEXT htext = string_value | triggers)* + : (rs = rulesets | NONINTERACTIVE | DISPLAYNAME dname = string_value | HELPTEXT htext = string_value | triggers | generateEQ)* ; //TODO Split - + +generateEQ + : GENERATE_EQ LPAREN term (COLON (ruleset (COMMA ruleset)*))? RPAREN; + one_schema_var_decl : MODALOPERATOR one_schema_modal_op_decl | PROGRAM (schema_modifiers)? id = simple_ident (LBRACKET nameString = simple_ident EQUALS parameter = simple_ident_dots RBRACKET)? ids = simple_ident_comma_list From 4acab64b080d0bfdbb404b92e63230c27f9d6247 Mon Sep 17 00:00:00 2001 From: Drodt Date: Thu, 30 Jul 2026 16:52:49 +0200 Subject: [PATCH 02/13] Remove more EQ taclet declarations & replace in existing assumes sequent --- .../key/nparser/builder/TacletPBuilder.java | 12 +- .../key/proof/rules/locset/locSetsRules.key | 394 ++---------------- .../rules/permission/permissionRules.key | 57 +-- .../uka/ilkd/key/proof/rules/reachRules.key | 63 +-- .../ilkd/key/proof/rules/sequence/seqEq.key | 61 +-- .../ilkd/key/proof/rules/sequence/seqPerm.key | 14 +- .../key/proof/rules/sequence/seqRules.key | 260 +----------- .../uka/ilkd/key/proof/rules/set/setRules.key | 40 +- .../key/proof/rules/string/charListRules.key | 13 +- .../de/uka/ilkd/key/nparser/taclets.old.txt | 175 ++++---- 10 files changed, 169 insertions(+), 920 deletions(-) diff --git a/key.core/src/main/java/de/uka/ilkd/key/nparser/builder/TacletPBuilder.java b/key.core/src/main/java/de/uka/ilkd/key/nparser/builder/TacletPBuilder.java index f85f4010b42..d98037a337a 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/nparser/builder/TacletPBuilder.java +++ b/key.core/src/main/java/de/uka/ilkd/key/nparser/builder/TacletPBuilder.java @@ -285,7 +285,7 @@ private TacletBuilder generateEQTaclet(TacletBuilder generateEQTaclet(TacletBuilder goalSpecs = ImmutableList.nil(); for (var tgt : fb.goalTemplates()) { + ChoiceExpr soc = fb.getGoal2Choices().get(tgt); if (tgt.rules() != null && !tgt.rules().isEmpty()) { ImmutableList rules = ImmutableList.nil(); for (var r : tgt.rules()) { if (r instanceof FindTaclet ft) { - ft.setFind(replace(ft.find(), eqTerm, eqSVTerm)); + rules = rules.append(ft.setFind(replace(ft.find(), eqTerm, eqSVTerm))); } else { rules = rules.append((Taclet) r); } @@ -328,12 +329,13 @@ private TacletBuilder generateEQTaclet(TacletBuilder tgt; }; goalSpecs = goalSpecs.append(newGoalSpec); + if (soc != null) { + fb.getGoal2Choices().remove(tgt); + fb.getGoal2Choices().put((TacletGoalTemplate) newGoalSpec, soc); + } } else { goalSpecs = goalSpecs.append(tgt); } - ChoiceExpr soc = fb.getGoal2Choices().get(tgt); - if (soc != null) - fb.addGoal2ChoicesMapping((TacletGoalTemplate) tgt, soc); } fb.setTacletGoalTemplates(goalSpecs); setSchemaVariables(schemaVariables().parent()); diff --git a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/locset/locSetsRules.key b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/locset/locSetsRules.key index 1b06e148473..8d7b66ecafe 100644 --- a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/locset/locSetsRules.key +++ b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/locset/locSetsRules.key @@ -54,6 +54,7 @@ \replacewith(elementOf(o, f, s) | elementOf(o, f, s2)) \heuristics(simplify_enlarging) + \generateEQ(union(s, s2)) }; elementOfIntersect { @@ -66,6 +67,7 @@ \replacewith(elementOf(o, f, s) & elementOf(o, f, s2)) \heuristics(simplify_enlarging) + \generateEQ(intersect(s, s2)) }; elementOfSetMinus { @@ -78,6 +80,7 @@ \replacewith(elementOf(o, f, s) & !elementOf(o, f, s2)) \heuristics(simplify_enlarging) + \generateEQ(setMinus(s, s2)) }; elementOfInfiniteUnion { @@ -92,6 +95,7 @@ \replacewith(\exists av; elementOf(o, f, s)) \heuristics(simplify) + \generateEQ(infiniteUnion{av;}(s)) }; elementOfInfiniteUnion2Vars { @@ -107,6 +111,7 @@ \replacewith(\exists av; \exists bv; elementOf(o, f, s)) \heuristics(simplify) + \generateEQ(infiniteUnion{av, bv;}(s)) }; elementOfAllFields { @@ -151,6 +156,7 @@ \replacewith(o = o2 & \exists iv; (f = arr(iv) & lower <= iv & iv <= upper)) \heuristics(simplify_enlarging) + \generateEQ(arrayRange(o2, lower, upper) : simplify) }; // change upper to exclusive (in line with other definitions?) @@ -177,100 +183,6 @@ \heuristics(concrete) }; - // -------------------------------------------------------------------------- - // EQ versions of axioms (these are lemmata) - // -------------------------------------------------------------------------- - elementOfUnionEQ { - \schemaVar \term Object o; - \schemaVar \term Field f; - \schemaVar \term LocSet s, s2; - \schemaVar \term LocSet EQ; - - \assumes(union(s, s2) = EQ ==>) - \find(elementOf(o, f, EQ)) - - \replacewith(elementOf(o, f, s) | elementOf(o, f, s2)) - - \heuristics(simplify_enlarging) - }; - - elementOfIntersectEQ { - \schemaVar \term Object o; - \schemaVar \term Field f; - \schemaVar \term LocSet s, s2; - \schemaVar \term LocSet EQ; - - \assumes(intersect(s, s2) = EQ ==>) - \find(elementOf(o, f, EQ)) - - \replacewith(elementOf(o, f, s) & elementOf(o, f, s2)) - - \heuristics(simplify_enlarging) - }; - - elementOfSetMinusEQ { - \schemaVar \term Object o; - \schemaVar \term Field f; - \schemaVar \term LocSet s, s2; - \schemaVar \term LocSet EQ; - - \assumes(setMinus(s, s2) = EQ ==>) - \find(elementOf(o, f, EQ)) - - \replacewith(elementOf(o, f, s) & !elementOf(o, f, s2)) - - \heuristics(simplify_enlarging) - }; - - elementOfInfiniteUnionEQ { - \schemaVar \term Object o; - \schemaVar \term Field f; - \schemaVar \variables alpha av; - \schemaVar \term LocSet s; - \schemaVar \term LocSet EQ; - - \assumes(infiniteUnion{av;}(s) = EQ ==>) - \find(elementOf(o, f, EQ)) - \varcond(\notFreeIn(av, o, f)) - - \replacewith(\exists av; elementOf(o, f, s)) - - \heuristics(simplify) - }; - - elementOfInfiniteUnion2VarsEQ { - \schemaVar \term Object o; - \schemaVar \term Field f; - \schemaVar \variables alpha av; - \schemaVar \variables beta bv; - \schemaVar \term LocSet s; - \schemaVar \term LocSet EQ; - - \assumes(infiniteUnion{av, bv;}(s) = EQ ==>) - \find(elementOf(o, f, EQ)) - \varcond(\notFreeIn(av, o, f), \notFreeIn(bv, o, f)) - - \replacewith(\exists av; \exists bv; elementOf(o, f, s)) - - \heuristics(simplify) - }; - - elementOfArrayRangeEQ { - \schemaVar \term Object o, o2; - \schemaVar \term Field f; - \schemaVar \term int lower, upper; - \schemaVar \variables int iv; - \schemaVar \term LocSet EQ; - - \assumes(arrayRange(o2, lower, upper) = EQ ==>) - \find(elementOf(o, f, EQ)) - \varcond(\notFreeIn(iv, f, lower, upper)) - - \replacewith(o = o2 & \exists iv; (f = arr(iv) & lower <= iv & iv <= upper)) - - \heuristics(simplify) - }; - // -------------------------------------------------------------------------- // axioms for set predicates (reduce to elementOf) // -------------------------------------------------------------------------- @@ -413,21 +325,8 @@ \replacewith(elementOf(o, f, s)) \heuristics(simplify) - }; - - // proven with KeY (CS) - subsetSingletonLeftEQ { - \schemaVar \term LocSet s; - \schemaVar \term Object o; - \schemaVar \term Field f; - \schemaVar \term LocSet EQ; - - \assumes(singleton(o, f) = EQ ==>) - \find(subset(EQ, s)) - - \replacewith(elementOf(o, f, s)) - - \heuristics(simplify) + // proven with KeY (CS) + \generateEQ(singleton(o, f)) }; // proven with KeY (CS) @@ -441,21 +340,8 @@ \replacewith(s = empty | s = singleton(o, f)) \heuristics(simplify) - }; - - // proven with KeY (CS) - subsetSingletonRightEQ { - \schemaVar \term LocSet s; - \schemaVar \term Object o; - \schemaVar \term Field f; - \schemaVar \term LocSet EQ; - - \assumes(singleton(o, f) = EQ ==>) - \find(subset(s, EQ)) - - \replacewith(s = empty | s = singleton(o, f)) - - \heuristics(simplify) + // proven with KeY (CS) + \generateEQ(singleton(o, f)) }; // proven with KeY (CS) @@ -467,19 +353,8 @@ \replacewith(subset(s, s3) & subset(s2, s3)) \heuristics(simplify_enlarging) - }; - - // proven with KeY (CS) - subsetUnionLeftEQ { - \schemaVar \term LocSet s, s2, s3; - \schemaVar \term LocSet EQ; - - \assumes(union(s, s2) = EQ ==>) - \find(subset(EQ, s3)) - - \replacewith(subset(s, s3) & subset(s2, s3)) - - \heuristics(simplify_enlarging) + // proven with KeY (CS) + \generateEQ(union(s, s2)) }; // proven with KeY (CS) @@ -491,19 +366,8 @@ \replacewith(true) \heuristics(concrete) - }; - - // proven with KeY (CS) - subsetOfUnionWithItSelfEQ1 { - \schemaVar \term LocSet s, s2; - \schemaVar \term LocSet EQ; - - \assumes(union(s, s2) = EQ ==>) - \find(subset(s, EQ)) - - \replacewith(true) - - \heuristics(concrete) + // proven with KeY (CS) + \generateEQ(union(s, s2)) }; // proven with KeY (CS) @@ -515,20 +379,10 @@ \replacewith(true) \heuristics(concrete) + // proven with KeY (CS) + \generateEQ(union(s2, s)) }; - // proven with KeY (CS) - subsetOfUnionWithItSelfEQ2 { - \schemaVar \term LocSet s, s2; - \schemaVar \term LocSet EQ; - - \assumes(union(s2, s) = EQ ==>) - \find(subset(s, EQ)) - - \replacewith(true) - - \heuristics(concrete) - }; // proven with KeY (CS) subsetOfIntersectWithItSelf1 { @@ -539,19 +393,8 @@ \replacewith(subset(s, s2)) \heuristics(concrete) - }; - - // proven with KeY (CS) - subsetOfIntersectWithItSelfEQ1 { - \schemaVar \term LocSet s, s2; - \schemaVar \term LocSet EQ; - - \assumes(intersect(s, s2) = EQ ==>) - \find(subset(s, EQ)) - - \replacewith(subset(s, s2)) - - \heuristics(concrete) + // proven with KeY (CS) + \generateEQ(intersect(s, s2)) }; // proven with KeY (CS) @@ -563,19 +406,7 @@ \replacewith(subset(s, s2)) \heuristics(concrete) - }; - - // proven with KeY (CS) - subsetOfIntersectWithItSelfEQ2 { - \schemaVar \term LocSet s, s2; - \schemaVar \term LocSet EQ; - - \assumes(intersect(s2, s) = EQ ==>) - \find(subset(s, EQ)) - - \replacewith(subset(s, s2)) - - \heuristics(concrete) + \generateEQ(intersect(s2, s)) }; // proven with KeY (CS) @@ -1116,6 +947,7 @@ \replacewith(o = null | select<[boolean]>(h, o, java.lang.Object::#$created) = TRUE) \heuristics(simplify_enlarging) + \generateEQ(singleton(o, f)) }; createdInHeapWithUnion { @@ -1128,6 +960,7 @@ \replacewith( ==> createdInHeap(s2, h)) \heuristics(simplify_enlarging) + \generateEQ(union(s, s2)) }; createdInHeapWithSetMinusFreshLocs { @@ -1139,6 +972,7 @@ \replacewith(true) \heuristics(concrete) + \generateEQ(setMinus(s, freshLocs(h))) }; createdInHeapWithAllFields { @@ -1150,6 +984,7 @@ \replacewith(o = null | select<[boolean]>(h, o, java.lang.Object::#$created) = TRUE) \heuristics(simplify_enlarging) + \generateEQ(allFields(o)) }; createdInHeapWithArrayRange { @@ -1162,6 +997,7 @@ \replacewith(o = null | select<[boolean]>(h, o, java.lang.Object::#$created) = TRUE | upper < lower) \heuristics(simplify_enlarging) + \generateEQ(arrayRange(o, lower, upper)) }; createdInHeapWithSelect { @@ -1174,6 +1010,7 @@ \replacewith( ==> wellFormed(h)) \heuristics(concrete) + \generateEQ(select<[LocSet]>(h, o, f)) }; createdInHeapWithObserver { @@ -1186,107 +1023,7 @@ \replacewith( ==> wellFormed(h)) \heuristics(concrete) - }; - - // -------------------------------------------------------------------------- - // EQ versions of lemmata for createdInHeap - // -------------------------------------------------------------------------- - - - createdInHeapWithSingletonEQ { - \schemaVar \term Object o; - \schemaVar \term Field f; - \schemaVar \term Heap h; - \schemaVar \term LocSet EQ; - - \assumes(singleton(o, f) = EQ ==>) - \find(createdInHeap(EQ, h)) - - \replacewith(o = null | select<[boolean]>(h, o, java.lang.Object::#$created) = TRUE) - - \heuristics(simplify_enlarging) - }; - - createdInHeapWithUnionEQ { - \schemaVar \term LocSet s, s2; - \schemaVar \term Heap h; - \schemaVar \term LocSet EQ; - - \assumes(union(s, s2) = EQ ==>) - \find( ==> createdInHeap(EQ, h)) - - \replacewith( ==> createdInHeap(s, h)); - \replacewith( ==> createdInHeap(s2, h)) - - \heuristics(simplify_enlarging) - }; - - createdInHeapWithSetMinusFreshLocsEQ { - \schemaVar \term LocSet s; - \schemaVar \term Heap h; - \schemaVar \term LocSet EQ; - - \assumes(setMinus(s, freshLocs(h)) = EQ ==>) - \find(createdInHeap(EQ, h)) - - \replacewith(true) - - \heuristics(concrete) - }; - - createdInHeapWithAllFieldsEQ { - \schemaVar \term Object o; - \schemaVar \term Heap h; - \schemaVar \term LocSet EQ; - - \assumes(allFields(o) = EQ ==>) - \find(createdInHeap(EQ, h)) - - \replacewith(o = null | select<[boolean]>(h, o, java.lang.Object::#$created) = TRUE) - - \heuristics(simplify_enlarging) - }; - - createdInHeapWithArrayRangeEQ { - \schemaVar \term Object o; - \schemaVar \term int lower, upper; - \schemaVar \term Heap h; - \schemaVar \term LocSet EQ; - - \assumes(arrayRange(o, lower, upper) = EQ ==>) - \find(createdInHeap(EQ, h)) - - \replacewith(o = null | select<[boolean]>(h, o, java.lang.Object::#$created) = TRUE | upper < lower) - - \heuristics(simplify_enlarging) - }; - - createdInHeapWithSelectEQ { - \schemaVar \term Object o; - \schemaVar \term Field f; - \schemaVar \term Heap h; - \schemaVar \term LocSet EQ; - - \assumes(select<[LocSet]>(h, o, f) = EQ ==>) - \find( ==> createdInHeap(EQ, h)) - - \replacewith( ==> wellFormed(h)) - - \heuristics(concrete) - }; - - createdInHeapWithObserverEQ { - \schemaVar \term LocSet obs; - \schemaVar \term Heap h; - \schemaVar \term LocSet EQ; - - \assumes(obs = EQ ==>) - \find( ==> createdInHeap(EQ, h)) - \varcond(\isObserver(obs, h)) - - \replacewith( ==> wellFormed(h)) - - \heuristics(concrete) + \generateEQ(obs) }; // -------------------------------------------------------------------------- @@ -1306,22 +1043,7 @@ \replacewith( ==> wellFormed(h)) \heuristics(concrete) - }; - - referencedObjectIsCreatedRightEQ { - \schemaVar \term Heap h; - \schemaVar \term Object o; - \schemaVar \term Field f; - \schemaVar \term Object EQ; - - \assumes(select<[deltaObject]>(h, o, f) = EQ ==> EQ = null) - \find( ==> select<[boolean]>(h, - EQ, - java.lang.Object::#$created) = TRUE) - - \replacewith( ==> wellFormed(h)) - - \heuristics(concrete) + \generateEQ(select<[deltaObject]>(h, o, f)) }; referencedObjectIsCreatedRightFinal { @@ -1337,22 +1059,7 @@ \replacewith( ==> select<[boolean]>(h, o, java.lang.Object::#$created) = TRUE | o = null ) \heuristics(simplify_enlarging) - }; - - referencedObjectIsCreatedRighFinalEQ { - \schemaVar \term Heap h; - \schemaVar \term Object o; - \schemaVar \term Field f; - \schemaVar \term Object EQ; - - \assumes(final<[deltaObject]>(o, f) = EQ ==> EQ = null) - \find( ==> select<[boolean]>(h, - EQ, - java.lang.Object::#$created) = TRUE) - - \add( ==> select<[boolean]>(h, o, java.lang.Object::#$created) = TRUE | o = null ) - - \heuristics(concrete) + \generateEQ(final<[deltaObject]>(o, f) : concrete) }; // -------------------------------------------------------------------------- @@ -1368,19 +1075,8 @@ \replacewith(s = empty & s2 = empty) \heuristics(simplify_enlarging) - }; - - // proven with KeY (CS) - unionEqualsEmptyEQ { - \schemaVar \term LocSet s, s2, s3; - \schemaVar \term LocSet EQ; - - \assumes(union(s, s2) = EQ ==>) - \find(EQ = empty) - - \replacewith(s = empty & s2 = empty) - - \heuristics(simplify_enlarging) + // proven with KeY (CS) + \generateEQ(union(s, s2)) }; // proven with KeY (CS) @@ -1392,19 +1088,8 @@ \replacewith(union(setMinus(s, s3), setMinus(s2, s3))) \heuristics(simplify_enlarging) - }; - - // proven with KeY (CS) - setMinusOfUnionEQ { - \schemaVar \term LocSet s, s2, s3; - \schemaVar \term LocSet EQ; - - \assumes(union(s, s2) = EQ ==>) - \find(setMinus(EQ, s3)) - - \replacewith(union(setMinus(s, s3), setMinus(s2, s3))) - - \heuristics(simplify_enlarging) + // proven with KeY (CS) + \generateEQ(union(s, s2)) }; // proven with KeY (CS) @@ -1416,19 +1101,8 @@ \replacewith(subset(s, union(s2, s3))) \heuristics(simplify_enlarging) - }; - - // proven with KeY (CS) - subsetWithSetMinusLeftEQ { - \schemaVar \term LocSet s, s2, s3; - \schemaVar \term LocSet EQ; - - \assumes(setMinus(s, s2) = EQ ==>) - \find(subset(EQ, s3)) - - \replacewith(subset(s, union(s2, s3))) - - \heuristics(simplify_enlarging) + // proven with KeY (CS) + \generateEQ(setMinus(s, s2)) }; unionWithItself { diff --git a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/permission/permissionRules.key b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/permission/permissionRules.key index 6824e8e2133..f648d44a91c 100644 --- a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/permission/permissionRules.key +++ b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/permission/permissionRules.key @@ -387,17 +387,7 @@ \find(readPermissionObject(o2, transferPermission(split, o1, o2, 0, p))) \replacewith(true) \heuristics(simplify) - }; - - readPermissionAfterTransferReadEQ { - \schemaVar \term Object o1, o2; - \schemaVar \term Permission p, p1; - \schemaVar \term boolean split; - - \assumes(readPermissionObject(o1, p), transferPermission(split, o1, o2, 0, p) = p1 ==>) - \find(readPermissionObject(o2, p1)) - \replacewith(true) - \heuristics(simplify) + \generateEQ(transferPermission(split, o1, o2, 0, p)) }; readPermissionAfterTransferWrite { @@ -409,17 +399,7 @@ \find(readPermissionObject(o2, transferPermission(split, o1, o2, 0, p))) \replacewith(true) \heuristics(simplify) - }; - - readPermissionAfterTransferWriteEQ { - \schemaVar \term Object o1, o2; - \schemaVar \term Permission p, p1; - \schemaVar \term boolean split; - - \assumes(writePermissionObject(o1, p), transferPermission(split, o1, o2, 0, p) = p1 ==>) - \find(readPermissionObject(o2, p1)) - \replacewith(true) - \heuristics(simplify) + \generateEQ(transferPermission(split, o1, o2, 0, p)) }; writePermissionAfterFullTransfer { @@ -430,16 +410,7 @@ \find(writePermissionObject(o2, transferPermission(FALSE, o1, o2, 0, p))) \replacewith(true) \heuristics(simplify) - }; - - writePermissionAfterFullTransferEQ { - \schemaVar \term Object o1, o2; - \schemaVar \term Permission p1, p2; - - \assumes(writePermissionObject(o1, p2), transferPermission(FALSE, o1, o2, 0, p2) = p1 ==>) - \find(writePermissionObject(o2, p1)) - \replacewith(true) - \heuristics(simplify) + \generateEQ(transferPermission(FALSE, o1, o2, 0, p)) }; writePermissionAfterReturn { @@ -450,16 +421,7 @@ \find(writePermissionObject(o2, returnPermission(o1, o2, p))) \replacewith(true) \heuristics(simplify) - }; - - writePermissionAfterReturnEQ { - \schemaVar \term Object o1, o2; - \schemaVar \term Permission p1, p2; - - \assumes(writePermissionObject(o1, p2), returnPermission(o1, o2, p2) = p1 ==>) - \find(writePermissionObject(o2, p1)) - \replacewith(true) - \heuristics(simplify) + \generateEQ(returnPermission(o1, o2, p)) }; permissionTransferReturnIdentity { @@ -469,16 +431,7 @@ \find(returnPermission(o2, o1, transferPermission(FALSE, o1, o2, 0, p))) \replacewith(p) \heuristics(simplify) - }; - - permissionTransferReturnIdentityEQ { - \schemaVar \term Object o1, o2; - \schemaVar \term Permission p1, p2; - - \assumes(p2 = transferPermission(FALSE, o1, o2, 0, p1) ==>) - \find(returnPermission(o2, o1, p2)) - \replacewith(p1) - \heuristics(simplify) + \generateEQ(transferPermission(FALSE, o1, o2, 0, p)) }; writePermissionOtherNoPermissionCurrentRead { diff --git a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/reachRules.key b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/reachRules.key index 12b5cceb22a..9a4e3b4783e 100644 --- a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/reachRules.key +++ b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/reachRules.key @@ -216,22 +216,7 @@ \replacewith(reach(h, allObjects(f), o, o2, n)) \heuristics(simplify) - }; - - reachDependenciesStoreSimpleEQ { - \schemaVar \term Heap h, h2; - \schemaVar \term Field f, f2; - \schemaVar \term any x; - \schemaVar \term Object o, o2, o3; - \schemaVar \term int n; - - \assumes(store(h, o3, f2, x) = h2 ==>) - \find(reach(h2, allObjects(f), o, o2, n)) - \varcond(\metaDisjoint(f, f2)) - - \replacewith(reach(h, allObjects(f), o, o2, n)) - - \heuristics(simplify) + \generateEQ(store(h, o3, f2, x)) }; reachDoesNotDependOnCreatedness { @@ -272,35 +257,8 @@ "Dependencies unchanged": \replacewith(reach(h, s, o, o2, n)) \add(!(\exists nv; (nv < n & reach(h, s, o, o3, nv)) & elementOf(o3, f, s)) ==>) - }; - - reachDependenciesStoreEQ { - \schemaVar \term Heap h, h2; - \schemaVar \term Field f; - \schemaVar \term any x; - \schemaVar \term LocSet s; - \schemaVar \term Object o, o2, o3; - \schemaVar \term int n; - \schemaVar \variables int nv; - - \assumes(store(h, o3, f, x) = h2 ==>) - \find(reach(h2, s, o, o2, n)) - \varcond( - \notFreeIn(nv, h), - \notFreeIn(nv, o3), - \notFreeIn(nv, f), - \notFreeIn(nv, x), - \notFreeIn(nv, s), - \notFreeIn(nv, o), - \notFreeIn(nv, o2), - \notFreeIn(nv, n)) - "Dependencies changed": - \add( ==> !(\exists nv; (nv < n & reach(h, s, o, o3, nv)) & elementOf(o3, f, s))); - - "Dependencies unchanged": - \replacewith(reach(h, s, o, o2, n)) - \add(!(\exists nv; (nv < n & reach(h, s, o, o3, nv)) & elementOf(o3, f, s)) ==>) + \generateEQ(store(h, o3, f, x)) }; reachDependenciesAnon { @@ -411,21 +369,6 @@ \add( ==> wellFormed(h) & select<[boolean]>(h, o, java.lang.Object::#$created) = TRUE) \heuristics(simplify) - }; - - reach_does_not_depend_on_fresh_locs_EQ { - \schemaVar \term Heap h, h2; - \schemaVar \term LocSet s; - \schemaVar \term Object o, o2; - \schemaVar \term int n; - \schemaVar \term Heap EQ; - - \assumes(anon(h, empty, h2) = EQ ==> o = null) - \find(reach(EQ, s, o, o2, n)) - - \replacewith(reach(h, s, o, o2, n)); - \add( ==> wellFormed(h) & select<[boolean]>(h, o, java.lang.Object::#$created) = TRUE) - - \heuristics(simplify) + \generateEQ(anon(h, empty, h2)) }; } diff --git a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/sequence/seqEq.key b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/sequence/seqEq.key index d8db035ed07..787d1da7c27 100644 --- a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/sequence/seqEq.key +++ b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/sequence/seqEq.key @@ -46,20 +46,7 @@ & seqSub(s, seqLen(s1), seqLen(s)) = s2 ) \heuristics(simplify_ENLARGING) - }; - - eqSeqConcatEQ { - \schemaVar \term Seq s, s1, s2, EQ; - - \assumes(seqConcat(s1, s2) = EQ ==>) - \find(s = EQ) - - \replacewith( - seqLen(s) = seqLen(s1) + seqLen(s2) - & seqSub(s, 0, seqLen(s1)) = s1 - & seqSub(s, seqLen(s1), seqLen(s)) = s2 - ) - \heuristics(no_self_application, simplify_ENLARGING) + \generateEQ(seqConcat(s1, s2) : no_self_application, simplify_ENLARGING) }; eqSeqConcat2 { @@ -69,16 +56,7 @@ \replacewith(s1 = s2) \heuristics(simplify) - }; - - eqSeqConcat2EQ { - \schemaVar \term Seq s, s1, s2, EQ; - - \assumes(seqConcat(s, s2) = EQ ==>) - \find(seqConcat(s, s1) = EQ) - - \replacewith(s1 = s2) - \heuristics(no_self_application, simplify) + \generateEQ(seqConcat(s, s2) : no_self_application, simplify) }; eqSeqConcat3 { @@ -88,16 +66,7 @@ \replacewith(s1 = s2) \heuristics(simplify) - }; - - eqSeqConcat3EQ { - \schemaVar \term Seq s, s1, s2, EQ; - - \assumes(seqConcat(s2, s) = EQ ==>) - \find(seqConcat(s1, s) = EQ) - - \replacewith(s1 = s2) - \heuristics(no_self_application, simplify) + \generateEQ(seqConcat(s2, s) : no_self_application, simplify) }; eqSeqConcat4 { @@ -108,17 +77,7 @@ \replacewith(s1 = s2 & x = y) \heuristics(simplify) - }; - - eqSeqConcat4EQ { - \schemaVar \term Seq s1, s2, EQ; - \schemaVar \term any x, y; - - \assumes(seqConcat(s2, seqSingleton(x)) = EQ ==>) - \find(seqConcat(s1, seqSingleton(y)) = EQ) - - \replacewith(s1 = s2 & x = y) - \heuristics(no_self_application, simplify) + \generateEQ(seqConcat(s2, seqSingleton(x)) : no_self_application, simplify) }; eqSeqConcat5 { @@ -129,17 +88,7 @@ \replacewith(x = y & s1 = s2) \heuristics(simplify) - }; - - eqSeqConcat5EQ { - \schemaVar \term Seq s1, s2, EQ; - \schemaVar \term any x, y; - - \assumes(seqConcat(seqSingleton(x), s2) = EQ ==>) - \find(seqConcat(seqSingleton(y), s1) = EQ) - - \replacewith(x = y & s1 = s2) - \heuristics(no_self_application, simplify) + \generateEQ(seqConcat(seqSingleton(x), s2) : no_self_application, simplify) }; eqSeqReverse { diff --git a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/sequence/seqPerm.key b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/sequence/seqPerm.key index f061cfbe3da..7e452f57aa1 100644 --- a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/sequence/seqPerm.key +++ b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/sequence/seqPerm.key @@ -567,19 +567,7 @@ \find(==> seqPerm(s, seqSwap(s, x, y))) \add( ==> 0 <= x & x < seqLen(s) & 0 <= y & y < seqLen(s)) \heuristics(simplify_enlarging) - }; - - \lemma - seqSwapPreservesSeqPermEQ { - \schemaVar \term Seq s; - \schemaVar \term Seq EQ; - \schemaVar \term int x; - \schemaVar \term int y; - - \assumes (seqSwap(s, x, y) = EQ ==>) - \find(==> seqPerm(s, EQ)) - \add( ==> 0 <= x & x < seqLen(s) & 0 <= y & y < seqLen(s)) - \heuristics(simplify_enlarging) + \generateEQ(seqSwap(s, x, y)) }; /* seqPermOrder { diff --git a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/sequence/seqRules.key b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/sequence/seqRules.key index 5ad99a80ec0..442962242b8 100644 --- a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/sequence/seqRules.key +++ b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/sequence/seqRules.key @@ -203,6 +203,7 @@ \else((alpha)seqGetOutside)) \heuristics(simplify) + \generateEQ(seqSingleton(x) : no_self_application, simplify_enlarging) }; \lemma @@ -225,6 +226,7 @@ \else(seqGet<[alpha]>(seq2, idx - seqLen(seq)))) \heuristics(simplify_enlarging) + \generateEQ(seqConcat(seq, seq2) : no_self_application, simplify_enlarging) }; \lemma @@ -239,6 +241,7 @@ \else((alpha)seqGetOutside)) \heuristics(simplify_enlarging) + \generateEQ(seqSub(seq, from, to) : no_self_application, simplify_enlarging) }; \lemma @@ -251,6 +254,7 @@ \replacewith(seqGet<[alpha]>(seq, seqLen(seq) - 1 - idx)) \heuristics(simplify_enlarging) + \generateEQ(seqReverse(seq) : no_self_application, simplify_enlarging) }; \lemma @@ -275,6 +279,7 @@ \replacewith(0) \heuristics(concrete) + \generateEQ(seqEmpty) }; \lemma @@ -286,6 +291,7 @@ \replacewith(1) \heuristics(concrete) + \generateEQ(seqSingleton(x)) }; \lemma @@ -297,6 +303,7 @@ \replacewith(seqLen(seq) + seqLen(seq2)) \heuristics(simplify) + \generateEQ(seqConcat(seq, seq2)) }; \lemma @@ -309,6 +316,7 @@ \replacewith(\if(from < to) \then(to - from) \else(0)) \heuristics(simplify) + \generateEQ(seqSub(seq, from, to) : obsolete) }; \lemma @@ -320,6 +328,7 @@ \replacewith(seqLen(seq)) \heuristics(simplify) + \generateEQ(seqReverse(seq)) }; \lemma @@ -333,11 +342,6 @@ \heuristics(simplify) }; - - // -------------------------------------------------------------------------- - // derived EQ versions - // -------------------------------------------------------------------------- - \lemma equalityToSeqGetAndSeqLenLeft { \schemaVar \term Seq s, s2; @@ -369,140 +373,9 @@ \heuristics(simplify_enlarging) }; - \lemma - getOfSeqSingletonEQ { - \schemaVar \term any x; - \schemaVar \term int idx; - \schemaVar \term Seq EQ; - - \assumes(seqSingleton(x) = EQ ==>) - \find(seqGet<[alpha]>(EQ, idx)) - - \replacewith(\if(idx = 0) - \then((alpha)x) - \else((alpha)seqGetOutside)) - - \heuristics(no_self_application, simplify_enlarging) - \displayname "getOfSeqSingleton" - }; - - \lemma - getOfSeqConcatEQ { - \schemaVar \term Seq seq, seq2; - \schemaVar \term int idx; - \schemaVar \term Seq EQ; - - \assumes(seqConcat(seq, seq2) = EQ ==>) - \find(seqGet<[alpha]>(EQ, idx)) - - \replacewith(\if(idx < seqLen(seq)) - \then(seqGet<[alpha]>(seq, idx)) - \else(seqGet<[alpha]>(seq2, idx - seqLen(seq)))) - - \heuristics(no_self_application, simplify_enlarging) - \displayname "getOfSeqConcat" - }; - - \lemma - getOfSeqSubEQ { - \schemaVar \term Seq seq; - \schemaVar \term int idx, from, to; - \schemaVar \term Seq EQ; - - \assumes(seqSub(seq, from, to) = EQ ==>) - \find(seqGet<[alpha]>(EQ, idx)) - - \replacewith(\if(0 <= idx & idx < (to - from)) - \then(seqGet<[alpha]>(seq, idx + from)) - \else((alpha)seqGetOutside)) - - \heuristics(no_self_application, simplify_enlarging) - \displayname "getOfSeqSub" - }; - - \lemma - getOfSeqReverseEQ { - \schemaVar \term Seq seq; - \schemaVar \term int idx; - \schemaVar \term Seq EQ; - - \assumes(seqReverse(seq) = EQ ==>) - \find(seqGet<[alpha]>(EQ, idx)) - - \replacewith(seqGet<[alpha]>(seq, seqLen(seq) - 1 - idx)) - - \heuristics(no_self_application, simplify_enlarging) - \displayname "getOfSeqReverse" - }; - - \lemma - lenOfSeqEmptyEQ { - \schemaVar \term alpha x; - \schemaVar \term Seq EQ; - - \assumes(seqEmpty = EQ ==>) - \find(seqLen(EQ)) - \replacewith(0) - - \heuristics(concrete) - \displayname "lenOfSeqEmpty" - }; - - \lemma - lenOfSeqSingletonEQ { - \schemaVar \term alpha x; - \schemaVar \term Seq EQ; - - \assumes(seqSingleton(x) = EQ ==>) - \find(seqLen(EQ)) - \replacewith(1) - - \heuristics(concrete) - \displayname "lenOfSeqSingleton" - }; - - \lemma - lenOfSeqConcatEQ { - \schemaVar \term Seq seq, seq2; - \schemaVar \term Seq EQ; - - \assumes(seqConcat(seq, seq2) = EQ ==>) - \find(seqLen(EQ)) - - \replacewith(seqLen(seq) + seqLen(seq2)) - - \heuristics(simplify) - \displayname "lenOfSeqConcat" - }; - - \lemma - lenOfSeqSubEQ { - \schemaVar \term Seq seq; - \schemaVar \term int from, to; - \schemaVar \term Seq EQ; - - \assumes(seqSub(seq, from, to) = EQ ==>) - \find(seqLen(EQ)) - - \replacewith(\if(from < to) \then(to - from) \else(0)) - - // \heuristics(simplify, find_term_not_in_assumes) - \displayname "lenOfSeqSub" - }; - - \lemma - lenOfSeqReverseEQ { - \schemaVar \term Seq seq; - \schemaVar \term Seq EQ; - - \assumes(seqReverse(seq) = EQ ==>) - \find(seqLen(EQ)) - - \replacewith(seqLen(seq)) - - \heuristics(simplify) - \displayname "lenOfSeqReverse" - }; + // -------------------------------------------------------------------------- + // derived EQ versions + // -------------------------------------------------------------------------- \lemma getOfSeqDefEQ { @@ -589,6 +462,7 @@ \replacewith(seqDef{i;}(0, u, a)) \heuristics(concrete) + \generateEQ(seqDef{i;}(0, u, a) : no_self_application, concrete) }; \lemma @@ -600,18 +474,6 @@ \heuristics(concrete) }; - subSeqCompleteSeqDefEQ { - \schemaVar \term int u; - \schemaVar \term any a; - \schemaVar \variables int i; - \schemaVar \term Seq EQ; - - \assumes(seqDef{i;}(0, u, a) = EQ ==>) - \find(seqSub(EQ, 0, u)) - \replacewith(seqDef{i;}(0, u, a)) - \heuristics(no_self_application, concrete) - }; - subSeqEmpty { \schemaVar \term Seq seq; \schemaVar \term int i; @@ -631,6 +493,7 @@ \heuristics(concrete) \displayname "subSeqTail" + \generateEQ(seqLen(seq)) }; \lemma @@ -644,6 +507,7 @@ \heuristics(concrete) \displayname "subSeqTail" + \generateEQ(seqLen(seq)) }; subSeqSingleton { @@ -655,48 +519,7 @@ \replacewith(seqSingleton(x)) \heuristics(concrete) - }; - - subSeqSingletonEQ { - \schemaVar \term Seq seq; - \schemaVar \term any x; - \schemaVar \term Seq EQ; - - \assumes(seqSingleton(x) = EQ ==>) - \find(seqSub(EQ, 0, 1)) - \replacewith(seqSingleton(x)) - - \heuristics(concrete) - }; - - \lemma - subSeqTailEQR { - \schemaVar \term Seq seq; - \schemaVar \term any x; - \schemaVar \term int EQ; - - \assumes(seqLen(seq) = EQ ==>) - \find(seqSub(seqConcat(seqSingleton(x), seq), 1, EQ + 1)) - - \replacewith(seq) - - \heuristics(concrete) - \displayname "subSeqTail" - }; - - \lemma - subSeqTailEQL { - \schemaVar \term Seq seq; - \schemaVar \term any x; - \schemaVar \term int EQ; - - \assumes(seqLen(seq) = EQ ==>) - \find(seqSub(seqConcat(seqSingleton(x), seq), 1, 1 + EQ)) - - \replacewith(seq) - - \heuristics(concrete) - \displayname "subSeqTail" + \generateEQ(seqSingleton(x)) }; subSeqSingleton2 { @@ -717,27 +540,7 @@ \if(u > 0) \then(u) \else(1))))) \heuristics(simplify_enlarging) - }; - - subSeqSingleton2EQ { - \schemaVar \term Seq seq; - \schemaVar \term any x; - \schemaVar \term int l, u; - \schemaVar \term Seq EQ; - - \assumes(seqSingleton(x) = EQ ==>) - \find(seqSub(EQ, l, u)) - \replacewith(seqConcat(seqSub(seqEmpty, - \if(l < 0) \then(l) \else(0), - \if(u < 0) \then(u) \else(0)), - seqConcat(\if(l <= 0 & u >= 1) - \then(seqSingleton(x)) - \else(seqEmpty), - seqSub(seqEmpty, - \if(l > 0) \then(l) \else(1), - \if(u > 0) \then(u) \else(1))))) - - \heuristics(no_self_application, simplify_enlarging) + \generateEQ(seqSingleton(x) : no_self_application, simplify_enlarging) }; subSeqConcat { @@ -750,20 +553,7 @@ seqSub(s2, \if(l < seqLen(s1)) \then(0) \else(l - seqLen(s1)), u - seqLen(s1)))) \heuristics(simplify_enlarging) - }; - - // fix - subSeqConcatEQ { - \schemaVar \term Seq s1, s2; - \schemaVar \term int l, u; - \schemaVar \term Seq EQ; - - \assumes(seqConcat(s1, s2) = EQ ==>) - \find(seqSub(EQ, l, u)) - \replacewith(seqConcat(seqSub(s1, l, \if(seqLen(s1) < u) \then(seqLen(s1)) \else(u)), - seqSub(s2, \if(l < seqLen(s1)) \then(0) \else(l - seqLen(s1)), u - seqLen(s1)))) - - \heuristics(no_self_application, simplify_enlarging) + \generateEQ(seqConcat(s1, s2) : no_self_application, simplify_enlarging) }; subSeqHeadSeqDef { @@ -775,20 +565,8 @@ \find(seqSub(seqConcat(seqDef{i;}(0, u, a), seq), 0, u)) \replacewith(seqDef{i;}(0, u, a)) \heuristics(concrete) - }; - subSeqHeadSeqDefEQ { - \schemaVar \term Seq seq; - \schemaVar \term any a; - \schemaVar \term int u; - \schemaVar \variables int i; - \schemaVar \term Seq EQ; - - \assumes(seqDef{i;}(0, u, a) = EQ ==>) - \find(seqSub(seqConcat(EQ, seq), 0, u)) - \replacewith(seqDef{i;}(0, u, a)) - - \heuristics(concrete) + \generateEQ(seqDef{i;}(0, u, a)) }; // -------------------------------------------------------------------------- diff --git a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/set/setRules.key b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/set/setRules.key index a70dbcf60a7..24948f7a191 100644 --- a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/set/setRules.key +++ b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/set/setRules.key @@ -4,7 +4,7 @@ \schemaVariables { \term T a, b; - \term Set<[T]> s, t, EQ; + \term Set<[T]> s, t; } \rules { @@ -29,18 +29,21 @@ \find(sElementOf<[T]>(a, sUnion<[T]>(s, t))) \replacewith(sElementOf<[T]>(a, s) | sElementOf<[T]>(a, t)) \heuristics(simplify_enlarging) + \generateEQ(sUnion<[T]>(s, t)) }; sElementOfSIntersect { \find(sElementOf<[T]>(a, sIntersect<[T]>(s, t))) \replacewith(sElementOf<[T]>(a, s) & sElementOf<[T]>(a, t)) \heuristics(simplify_enlarging) + \generateEQ(sIntersect<[T]>(s, t)) }; sElementOfSSetMinus { \find(sElementOf<[T]>(a, sSetMinus<[T]>(s, t))) \replacewith(sElementOf<[T]>(a, s) & !sElementOf<[T]>(a, t)) \heuristics(simplify_enlarging) + \generateEQ(sSetMinus<[T]>(s, t)) }; sElementOfSInfiniteUnion { @@ -50,40 +53,7 @@ \varcond(\notFreeIn(av, a)) \replacewith(\exists av; sElementOf<[T]>(a, s)) \heuristics(simplify) - }; - - // -------------------------------------------------------------------------- - // EQ versions of axioms (these are lemmata) - // -------------------------------------------------------------------------- - sElementOfSUnionEQ { - \assumes(sUnion<[T]>(s, t) = EQ ==>) - \find(sElementOf<[T]>(a, EQ)) - \replacewith(sElementOf<[T]>(a, s) | sElementOf<[T]>(a, t)) - \heuristics(simplify_enlarging) - }; - - sElementOfSIntersectEQ { - \assumes(sIntersect<[T]>(s, t) = EQ ==>) - \find(sElementOf<[T]>(a, EQ)) - \replacewith(sElementOf<[T]>(a, s) & sElementOf<[T]>(a, t)) - \heuristics(simplify_enlarging) - }; - - sElementOfSetMinusEQ { - \assumes(sSetMinus<[T]>(s, t) = EQ ==>) - \find(sElementOf<[T]>(a, EQ)) - \replacewith(sElementOf<[T]>(a, s) & !sElementOf<[T]>(a, t)) - \heuristics(simplify_enlarging) - }; - - sElementOfSInfiniteUnionEQ { - // TODO: alpha or any (was like this already in locSetsRules)? - \schemaVar \variables alpha av; - \assumes(sInfiniteUnion<[T]>{av;}(s) = EQ ==>) - \find(sElementOf<[T]>(a, EQ)) - \varcond(\notFreeIn(av, a)) - \replacewith(\exists av; sElementOf<[T]>(a, s)) - \heuristics(simplify) + \generateEQ(sInfiniteUnion<[T]>{av;}(s)) }; // -------------------------------------------------------------------------- diff --git a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/string/charListRules.key b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/string/charListRules.key index 5c5e85f1062..40fb0192ea5 100644 --- a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/string/charListRules.key +++ b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/string/charListRules.key @@ -337,22 +337,13 @@ * the length of the string */ lengthReplace { - \schemaVar \term Seq str, newStr; + \schemaVar \term Seq str; \schemaVar \term int searchChar, replaceChar; \find(seqLen(clReplace(str, searchChar, replaceChar))) \replacewith(seqLen(str)) \heuristics(stringsSimplify) - }; - - lengthReplaceEQ { - \schemaVar \term Seq str, newStr; - \schemaVar \term int searchChar, replaceChar; - - \assumes(clReplace(str, searchChar, replaceChar) = newStr ==>) - \find(seqLen(newStr)) - \replacewith(seqLen(str)) - \heuristics(stringsSimplify) + \generateEQ(clReplace(str, searchChar, replaceChar)) }; /* diff --git a/key.core/src/test/resources/de/uka/ilkd/key/nparser/taclets.old.txt b/key.core/src/test/resources/de/uka/ilkd/key/nparser/taclets.old.txt index cc8e69dd6ee..35d3ff2ec6d 100644 --- a/key.core/src/test/resources/de/uka/ilkd/key/nparser/taclets.old.txt +++ b/key.core/src/test/resources/de/uka/ilkd/key/nparser/taclets.old.txt @@ -1,5 +1,5 @@ # This files contains representation of taclets, which are accepted and revised. -# Date: Sat Jul 25 10:22:38 CEST 2026 +# Date: Thu Jul 30 16:48:13 CEST 2026 == abortJavaCardTransactionAPI (abortJavaCardTransactionAPI) ========================================= abortJavaCardTransactionAPI { @@ -9678,12 +9678,12 @@ getOfSeqConcat { \heuristics(simplify_enlarging) Choices: sequences:on} ----------------------------------------------------- -== getOfSeqConcatEQ (getOfSeqConcat) ========================================= +== getOfSeqConcatEQ (getOfSeqConcatEQ) ========================================= getOfSeqConcatEQ { \assumes ([equals(seqConcat(seq,seq2),EQ)]==>[]) \find(seqGet<[alpha]>(EQ,idx)) \sameUpdateLevel\replacewith(if-then-else(lt(idx,seqLen(seq)),seqGet<[alpha]>(seq,idx),seqGet<[alpha]>(seq2,sub(idx,seqLen(seq))))) -\heuristics(simplify_enlarging, no_self_application) +\heuristics(no_self_application, simplify_enlarging) Choices: sequences:on} ----------------------------------------------------- == getOfSeqDef (getOfSeqDef) ========================================= @@ -9710,12 +9710,12 @@ getOfSeqReverse { \heuristics(simplify_enlarging) Choices: sequences:on} ----------------------------------------------------- -== getOfSeqReverseEQ (getOfSeqReverse) ========================================= +== getOfSeqReverseEQ (getOfSeqReverseEQ) ========================================= getOfSeqReverseEQ { \assumes ([equals(seqReverse(seq),EQ)]==>[]) \find(seqGet<[alpha]>(EQ,idx)) \sameUpdateLevel\replacewith(seqGet<[alpha]>(seq,sub(sub(seqLen(seq),Z(1(#))),idx))) -\heuristics(simplify_enlarging, no_self_application) +\heuristics(no_self_application, simplify_enlarging) Choices: sequences:on} ----------------------------------------------------- == getOfSeqSingleton (getOfSeqSingleton) ========================================= @@ -9732,12 +9732,12 @@ getOfSeqSingletonConcrete { \heuristics(concrete) Choices: sequences:on} ----------------------------------------------------- -== getOfSeqSingletonEQ (getOfSeqSingleton) ========================================= +== getOfSeqSingletonEQ (getOfSeqSingletonEQ) ========================================= getOfSeqSingletonEQ { \assumes ([equals(seqSingleton(x),EQ)]==>[]) \find(seqGet<[alpha]>(EQ,idx)) \sameUpdateLevel\replacewith(if-then-else(equals(idx,Z(0(#))),cast<[alpha]>(x),cast<[alpha]>(seqGetOutside))) -\heuristics(simplify_enlarging, no_self_application) +\heuristics(no_self_application, simplify_enlarging) Choices: sequences:on} ----------------------------------------------------- == getOfSeqSub (getOfSeqSub) ========================================= @@ -9747,12 +9747,12 @@ getOfSeqSub { \heuristics(simplify_enlarging) Choices: sequences:on} ----------------------------------------------------- -== getOfSeqSubEQ (getOfSeqSub) ========================================= +== getOfSeqSubEQ (getOfSeqSubEQ) ========================================= getOfSeqSubEQ { \assumes ([equals(seqSub(seq,from,to),EQ)]==>[]) \find(seqGet<[alpha]>(EQ,idx)) \sameUpdateLevel\replacewith(if-then-else(and(leq(Z(0(#)),idx),lt(idx,sub(to,from))),seqGet<[alpha]>(seq,add(idx,from)),cast<[alpha]>(seqGetOutside))) -\heuristics(simplify_enlarging, no_self_application) +\heuristics(no_self_application, simplify_enlarging) Choices: sequences:on} ----------------------------------------------------- == getOfSeqUpd (getOfSeqUpd) ========================================= @@ -12119,7 +12119,7 @@ lenOfSeqConcat { \heuristics(simplify) Choices: sequences:on} ----------------------------------------------------- -== lenOfSeqConcatEQ (lenOfSeqConcat) ========================================= +== lenOfSeqConcatEQ (lenOfSeqConcatEQ) ========================================= lenOfSeqConcatEQ { \assumes ([equals(seqConcat(seq,seq2),EQ)]==>[]) \find(seqLen(EQ)) @@ -12149,7 +12149,7 @@ lenOfSeqEmpty { \heuristics(concrete) Choices: sequences:on} ----------------------------------------------------- -== lenOfSeqEmptyEQ (lenOfSeqEmpty) ========================================= +== lenOfSeqEmptyEQ (lenOfSeqEmptyEQ) ========================================= lenOfSeqEmptyEQ { \assumes ([equals(seqEmpty,EQ)]==>[]) \find(seqLen(EQ)) @@ -12164,7 +12164,7 @@ lenOfSeqReverse { \heuristics(simplify) Choices: sequences:on} ----------------------------------------------------- -== lenOfSeqReverseEQ (lenOfSeqReverse) ========================================= +== lenOfSeqReverseEQ (lenOfSeqReverseEQ) ========================================= lenOfSeqReverseEQ { \assumes ([equals(seqReverse(seq),EQ)]==>[]) \find(seqLen(EQ)) @@ -12179,7 +12179,7 @@ lenOfSeqSingleton { \heuristics(concrete) Choices: sequences:on} ----------------------------------------------------- -== lenOfSeqSingletonEQ (lenOfSeqSingleton) ========================================= +== lenOfSeqSingletonEQ (lenOfSeqSingletonEQ) ========================================= lenOfSeqSingletonEQ { \assumes ([equals(seqSingleton(x),EQ)]==>[]) \find(seqLen(EQ)) @@ -12194,12 +12194,12 @@ lenOfSeqSub { \heuristics(simplify) Choices: sequences:on} ----------------------------------------------------- -== lenOfSeqSubEQ (lenOfSeqSub) ========================================= +== lenOfSeqSubEQ (lenOfSeqSubEQ) ========================================= lenOfSeqSubEQ { \assumes ([equals(seqSub(seq,from,to),EQ)]==>[]) \find(seqLen(EQ)) \sameUpdateLevel\replacewith(if-then-else(lt(from,to),sub(to,from),Z(0(#)))) - +\heuristics(obsolete) Choices: sequences:on} ----------------------------------------------------- == lenOfSeqUpd (lenOfSeqUpd) ========================================= @@ -12218,8 +12218,8 @@ Choices: Strings:on} ----------------------------------------------------- == lengthReplaceEQ (lengthReplaceEQ) ========================================= lengthReplaceEQ { -\assumes ([equals(clReplace(str,searchChar,replaceChar),newStr)]==>[]) -\find(seqLen(newStr)) +\assumes ([equals(clReplace(str,searchChar,replaceChar),EQ)]==>[]) +\find(seqLen(EQ)) \sameUpdateLevel\replacewith(seqLen(str)) \heuristics(stringsSimplify) Choices: Strings:on} @@ -14002,14 +14002,6 @@ onlyCreatedObjectsAreInLocSetsEQ { \heuristics(inReachableStateImplication) Choices: programRules:Java} ----------------------------------------------------- -== onlyCreatedObjectsAreInLocSetsEQFinal (onlyCreatedObjectsAreInLocSetsEQFinal) ========================================= -onlyCreatedObjectsAreInLocSetsEQFinal { -\assumes ([wellFormed(h),equals(final<[LocSet]>(o,f),EQ)]==>[]) -\find(elementOf(o2,f2,EQ)==>) -\add [or(equals(o2,null),equals(select<[boolean]>(h,o2,java.lang.Object::#$created),TRUE))]==>[] -\heuristics(inReachableStateImplication) -Choices: programRules:Java} ------------------------------------------------------ == onlyCreatedObjectsAreInLocSetsFinal (onlyCreatedObjectsAreInLocSetsFinal) ========================================= onlyCreatedObjectsAreInLocSetsFinal { \assumes ([wellFormed(h)]==>[]) @@ -14018,6 +14010,14 @@ onlyCreatedObjectsAreInLocSetsFinal { \heuristics(inReachableStateImplication) Choices: programRules:Java} ----------------------------------------------------- +== onlyCreatedObjectsAreInLocSetsFinalEQ (onlyCreatedObjectsAreInLocSetsFinalEQ) ========================================= +onlyCreatedObjectsAreInLocSetsFinalEQ { +\assumes ([wellFormed(h),equals(final<[LocSet]>(o,f),EQ)]==>[]) +\find(elementOf(o2,f2,EQ)==>) +\add [or(equals(o2,null),equals(select<[boolean]>(h,o2,java.lang.Object::#$created),TRUE))]==>[] +\heuristics(inReachableStateImplication) +Choices: programRules:Java} +----------------------------------------------------- == onlyCreatedObjectsAreObserved (onlyCreatedObjectsAreObserved) ========================================= onlyCreatedObjectsAreObserved { \find(obs) @@ -15066,8 +15066,8 @@ Choices: reach:on} ----------------------------------------------------- == reachDependenciesStoreEQ (reachDependenciesStoreEQ) ========================================= reachDependenciesStoreEQ { -\assumes ([equals(store(h,o3,f,x),h2)]==>[]) -\find(reach(h2,s,o,o2,n)) +\assumes ([equals(store(h,o3,f,x),EQ)]==>[]) +\find(reach(EQ,s,o,o2,n)) \sameUpdateLevel\varcond(\notFreeIn(nv (variable), n (int term)), \notFreeIn(nv (variable), o2 (java.lang.Object term)), \notFreeIn(nv (variable), o (java.lang.Object term)), \notFreeIn(nv (variable), s (LocSet term)), \notFreeIn(nv (variable), x (any term)), \notFreeIn(nv (variable), f (Field term)), \notFreeIn(nv (variable), o3 (java.lang.Object term)), \notFreeIn(nv (variable), h (Heap term))) \add [not(and(exists{nv (variable)}(and(lt(nv,n),reach(h,s,o,o3,nv))),elementOf(o3,f,s)))]==>[] \replacewith(reach(h,s,o,o2,n)) ; \add []==>[not(and(exists{nv (variable)}(and(lt(nv,n),reach(h,s,o,o3,nv))),elementOf(o3,f,s)))] @@ -15084,8 +15084,8 @@ Choices: reach:on} ----------------------------------------------------- == reachDependenciesStoreSimpleEQ (reachDependenciesStoreSimpleEQ) ========================================= reachDependenciesStoreSimpleEQ { -\assumes ([equals(store(h,o3,f2,x),h2)]==>[]) -\find(reach(h2,allObjects(f),o,o2,n)) +\assumes ([equals(store(h,o3,f2,x),EQ)]==>[]) +\find(reach(EQ,allObjects(f),o,o2,n)) \sameUpdateLevel\varcond(\metaDisjoint f (Field term), f2 (Field term)) \replacewith(reach(h,allObjects(f),o,o2,n)) \heuristics(simplify) @@ -15162,8 +15162,8 @@ reach_does_not_depend_on_fresh_locs { \heuristics(simplify) Choices: reach:on} ----------------------------------------------------- -== reach_does_not_depend_on_fresh_locs_EQ (reach_does_not_depend_on_fresh_locs_EQ) ========================================= -reach_does_not_depend_on_fresh_locs_EQ { +== reach_does_not_depend_on_fresh_locsEQ (reach_does_not_depend_on_fresh_locsEQ) ========================================= +reach_does_not_depend_on_fresh_locsEQ { \assumes ([equals(anon(h,empty,h2),EQ)]==>[equals(o,null)]) \find(reach(EQ,s,o,o2,n)) \sameUpdateLevel\add []==>[and(wellFormed(h),equals(select<[boolean]>(h,o,java.lang.Object::#$created),TRUE))] ; @@ -15196,14 +15196,6 @@ reference_type_cast { \heuristics(simplify_prog) Choices: (programRules:Java & runtimeExceptions:ban)} ----------------------------------------------------- -== referencedObjectIsCreatedRighFinalEQ (referencedObjectIsCreatedRighFinalEQ) ========================================= -referencedObjectIsCreatedRighFinalEQ { -\assumes ([equals(final<[deltaObject]>(o,f),EQ)]==>[equals(EQ,null)]) -\find(==>equals(select<[boolean]>(h,EQ,java.lang.Object::#$created),TRUE)) -\add []==>[or(equals(select<[boolean]>(h,o,java.lang.Object::#$created),TRUE),equals(o,null))] -\heuristics(concrete) -Choices: programRules:Java} ------------------------------------------------------ == referencedObjectIsCreatedRight (referencedObjectIsCreatedRight) ========================================= referencedObjectIsCreatedRight { \assumes ([]==>[equals(select<[deltaObject]>(h,o,f),null)]) @@ -15228,6 +15220,14 @@ referencedObjectIsCreatedRightFinal { \heuristics(simplify_enlarging) Choices: programRules:Java} ----------------------------------------------------- +== referencedObjectIsCreatedRightFinalEQ (referencedObjectIsCreatedRightFinalEQ) ========================================= +referencedObjectIsCreatedRightFinalEQ { +\assumes ([equals(final<[deltaObject]>(o,f),EQ)]==>[equals(EQ,null)]) +\find(==>equals(select<[boolean]>(h,EQ,java.lang.Object::#$created),TRUE)) +\replacewith([]==>[or(equals(select<[boolean]>(h,o,java.lang.Object::#$created),TRUE),equals(o,null))]) +\heuristics(concrete) +Choices: programRules:Java} +----------------------------------------------------- == regExAxiom (regExAxiom) ========================================= regExAxiom { \find(match(regEx(stringAsPattern),string)) @@ -15688,6 +15688,14 @@ sElementOfSSetMinus { \heuristics(simplify_enlarging) Choices: true} ----------------------------------------------------- +== sElementOfSSetMinusEQ (sElementOfSSetMinusEQ) ========================================= +sElementOfSSetMinusEQ { +\assumes ([equals(sSetMinus<[T]>(s,t),EQ)]==>[]) +\find(sElementOf<[T]>(a,EQ)) +\sameUpdateLevel\replacewith(and(sElementOf<[T]>(a,s),not(sElementOf<[T]>(a,t)))) +\heuristics(simplify_enlarging) +Choices: true} +----------------------------------------------------- == sElementOfSSingleton (sElementOfSSingleton) ========================================= sElementOfSSingleton { \find(sElementOf<[T]>(a,sSingleton<[T]>(b))) @@ -15710,14 +15718,6 @@ sElementOfSUnionEQ { \heuristics(simplify_enlarging) Choices: true} ----------------------------------------------------- -== sElementOfSetMinusEQ (sElementOfSetMinusEQ) ========================================= -sElementOfSetMinusEQ { -\assumes ([equals(sSetMinus<[T]>(s,t),EQ)]==>[]) -\find(sElementOf<[T]>(a,EQ)) -\sameUpdateLevel\replacewith(and(sElementOf<[T]>(a,s),not(sElementOf<[T]>(a,t)))) -\heuristics(simplify_enlarging) -Choices: true} ------------------------------------------------------ == sEmptyEqualsSSingleton (sEmptyEqualsSSingleton) ========================================= sEmptyEqualsSSingleton { \find(equals(sEmpty<[T]>,sSingleton<[T]>(a))) @@ -17070,7 +17070,7 @@ subSeqCompleteSeqDefEQ { \assumes ([equals(seqDef{i (variable)}(Z(0(#)),u,a),EQ)]==>[]) \find(seqSub(EQ,Z(0(#)),u)) \sameUpdateLevel\replacewith(seqDef{i (variable)}(Z(0(#)),u,a)) -\heuristics(concrete, no_self_application) +\heuristics(no_self_application, concrete) Choices: sequences:on} ----------------------------------------------------- == subSeqConcat (subSeqConcat) ========================================= @@ -17085,7 +17085,7 @@ subSeqConcatEQ { \assumes ([equals(seqConcat(s1,s2),EQ)]==>[]) \find(seqSub(EQ,l,u)) \sameUpdateLevel\replacewith(seqConcat(seqSub(s1,l,if-then-else(lt(seqLen(s1),u),seqLen(s1),u)),seqSub(s2,if-then-else(lt(l,seqLen(s1)),Z(0(#)),sub(l,seqLen(s1))),sub(u,seqLen(s1))))) -\heuristics(simplify_enlarging, no_self_application) +\heuristics(no_self_application, simplify_enlarging) Choices: sequences:on} ----------------------------------------------------- == subSeqEmpty (subSeqEmpty) ========================================= @@ -17129,7 +17129,7 @@ subSeqSingleton2EQ { \assumes ([equals(seqSingleton(x),EQ)]==>[]) \find(seqSub(EQ,l,u)) \sameUpdateLevel\replacewith(seqConcat(seqSub(seqEmpty,if-then-else(lt(l,Z(0(#))),l,Z(0(#))),if-then-else(lt(u,Z(0(#))),u,Z(0(#)))),seqConcat(if-then-else(and(leq(l,Z(0(#))),geq(u,Z(1(#)))),seqSingleton(x),seqEmpty),seqSub(seqEmpty,if-then-else(gt(l,Z(0(#))),l,Z(1(#))),if-then-else(gt(u,Z(0(#))),u,Z(1(#))))))) -\heuristics(simplify_enlarging, no_self_application) +\heuristics(no_self_application, simplify_enlarging) Choices: sequences:on} ----------------------------------------------------- == subSeqSingletonEQ (subSeqSingletonEQ) ========================================= @@ -17140,29 +17140,21 @@ subSeqSingletonEQ { \heuristics(concrete) Choices: sequences:on} ----------------------------------------------------- -== subSeqTailEQL (subSeqTail) ========================================= -subSeqTailEQL { -\assumes ([equals(seqLen(seq),EQ)]==>[]) -\find(seqSub(seqConcat(seqSingleton(x),seq),Z(1(#)),add(Z(1(#)),EQ))) -\sameUpdateLevel\replacewith(seq) +== subSeqTailL (subSeqTail) ========================================= +subSeqTailL { +\find(seqSub(seqConcat(seqSingleton(x),seq),Z(1(#)),add(Z(1(#)),seqLen(seq)))) +\replacewith(seq) \heuristics(concrete) Choices: sequences:on} ----------------------------------------------------- -== subSeqTailEQR (subSeqTail) ========================================= -subSeqTailEQR { +== subSeqTailLEQ (subSeqTailEQ) ========================================= +subSeqTailLEQ { \assumes ([equals(seqLen(seq),EQ)]==>[]) -\find(seqSub(seqConcat(seqSingleton(x),seq),Z(1(#)),add(EQ,Z(1(#))))) +\find(seqSub(seqConcat(seqSingleton(x),seq),Z(1(#)),add(Z(1(#)),EQ))) \sameUpdateLevel\replacewith(seq) \heuristics(concrete) Choices: sequences:on} ----------------------------------------------------- -== subSeqTailL (subSeqTail) ========================================= -subSeqTailL { -\find(seqSub(seqConcat(seqSingleton(x),seq),Z(1(#)),add(Z(1(#)),seqLen(seq)))) -\replacewith(seq) -\heuristics(concrete) -Choices: sequences:on} ------------------------------------------------------ == subSeqTailR (subSeqTail) ========================================= subSeqTailR { \find(seqSub(seqConcat(seqSingleton(x),seq),Z(1(#)),add(seqLen(seq),Z(1(#))))) @@ -17170,6 +17162,14 @@ subSeqTailR { \heuristics(concrete) Choices: sequences:on} ----------------------------------------------------- +== subSeqTailREQ (subSeqTailEQ) ========================================= +subSeqTailREQ { +\assumes ([equals(seqLen(seq),EQ)]==>[]) +\find(seqSub(seqConcat(seqSingleton(x),seq),Z(1(#)),add(EQ,Z(1(#))))) +\sameUpdateLevel\replacewith(seq) +\heuristics(concrete) +Choices: sequences:on} +----------------------------------------------------- == sub_equations_left (sub_equations_left) ========================================= sub_equations_left { \assumes ([equals(i,i0)]==>[]) @@ -17228,6 +17228,14 @@ subsetOfIntersectWithItSelf1 { \heuristics(concrete) Choices: programRules:Java} ----------------------------------------------------- +== subsetOfIntersectWithItSelf1EQ (subsetOfIntersectWithItSelf1EQ) ========================================= +subsetOfIntersectWithItSelf1EQ { +\assumes ([equals(intersect(s,s2),EQ)]==>[]) +\find(subset(s,EQ)) +\sameUpdateLevel\replacewith(subset(s,s2)) +\heuristics(concrete) +Choices: programRules:Java} +----------------------------------------------------- == subsetOfIntersectWithItSelf2 (subsetOfIntersectWithItSelf2) ========================================= subsetOfIntersectWithItSelf2 { \find(subset(s,intersect(s2,s))) @@ -17235,16 +17243,8 @@ subsetOfIntersectWithItSelf2 { \heuristics(concrete) Choices: programRules:Java} ----------------------------------------------------- -== subsetOfIntersectWithItSelfEQ1 (subsetOfIntersectWithItSelfEQ1) ========================================= -subsetOfIntersectWithItSelfEQ1 { -\assumes ([equals(intersect(s,s2),EQ)]==>[]) -\find(subset(s,EQ)) -\sameUpdateLevel\replacewith(subset(s,s2)) -\heuristics(concrete) -Choices: programRules:Java} ------------------------------------------------------ -== subsetOfIntersectWithItSelfEQ2 (subsetOfIntersectWithItSelfEQ2) ========================================= -subsetOfIntersectWithItSelfEQ2 { +== subsetOfIntersectWithItSelf2EQ (subsetOfIntersectWithItSelf2EQ) ========================================= +subsetOfIntersectWithItSelf2EQ { \assumes ([equals(intersect(s2,s),EQ)]==>[]) \find(subset(s,EQ)) \sameUpdateLevel\replacewith(subset(s,s2)) @@ -17265,6 +17265,14 @@ subsetOfUnionWithItSelf1 { \heuristics(concrete) Choices: programRules:Java} ----------------------------------------------------- +== subsetOfUnionWithItSelf1EQ (subsetOfUnionWithItSelf1EQ) ========================================= +subsetOfUnionWithItSelf1EQ { +\assumes ([equals(union(s,s2),EQ)]==>[]) +\find(subset(s,EQ)) +\sameUpdateLevel\replacewith(true) +\heuristics(concrete) +Choices: programRules:Java} +----------------------------------------------------- == subsetOfUnionWithItSelf2 (subsetOfUnionWithItSelf2) ========================================= subsetOfUnionWithItSelf2 { \find(subset(s,union(s2,s))) @@ -17272,16 +17280,8 @@ subsetOfUnionWithItSelf2 { \heuristics(concrete) Choices: programRules:Java} ----------------------------------------------------- -== subsetOfUnionWithItSelfEQ1 (subsetOfUnionWithItSelfEQ1) ========================================= -subsetOfUnionWithItSelfEQ1 { -\assumes ([equals(union(s,s2),EQ)]==>[]) -\find(subset(s,EQ)) -\sameUpdateLevel\replacewith(true) -\heuristics(concrete) -Choices: programRules:Java} ------------------------------------------------------ -== subsetOfUnionWithItSelfEQ2 (subsetOfUnionWithItSelfEQ2) ========================================= -subsetOfUnionWithItSelfEQ2 { +== subsetOfUnionWithItSelf2EQ (subsetOfUnionWithItSelf2EQ) ========================================= +subsetOfUnionWithItSelf2EQ { \assumes ([equals(union(s2,s),EQ)]==>[]) \find(subset(s,EQ)) \sameUpdateLevel\replacewith(true) @@ -18826,7 +18826,8 @@ Choices: programRules:Java} wellFormedStoreLocSetEQ { \assumes ([equals(store(h,o,f,x),EQ)]==>[]) \find(wellFormed(EQ)) -\sameUpdateLevel\succedentPolarity\replacewith(and(wellFormed(h),createdInHeap(x,h))) +\sameUpdateLevel\succedentPolarity\varcond(\fieldType(f (Field term), alpha), \sub(LocSet, alpha)) +\replacewith(and(wellFormed(h),createdInHeap(x,h))) \heuristics(simplify_enlarging) Choices: programRules:Java} ----------------------------------------------------- @@ -18867,7 +18868,7 @@ Choices: programRules:Java} wellFormedStorePrimitiveEQ { \assumes ([equals(store(h,o,f,x),EQ)]==>[]) \find(wellFormed(EQ)) -\sameUpdateLevel\succedentPolarity\varcond(\not\sub(beta, java.lang.Object), \not\sub(beta, LocSet)) +\sameUpdateLevel\succedentPolarity\varcond(\fieldType(f (Field term), alpha), \not\sub(beta, java.lang.Object), \not\sub(beta, LocSet), \sub(beta, alpha)) \replacewith(wellFormed(h)) \heuristics(concrete) Choices: programRules:Java} From 20cbfe582df357b4f40cb3d7b906b3cadfe45db2 Mon Sep 17 00:00:00 2001 From: Drodt Date: Thu, 30 Jul 2026 18:29:21 +0200 Subject: [PATCH 03/13] Fix taclet proofs (reoder seq rules) --- .../key/proof/rules/sequence/seqRules.key | 198 +++++++++--------- ...ilEQL.proof => Taclet_subSeqTailLEQ.proof} | 2 +- ...ilEQR.proof => Taclet_subSeqTailREQ.proof} | 2 +- 3 files changed, 101 insertions(+), 101 deletions(-) rename key.core/tacletProofs/seqRules/{Taclet_subSeqTailEQL.proof => Taclet_subSeqTailLEQ.proof} (99%) rename key.core/tacletProofs/seqRules/{Taclet_subSeqTailEQR.proof => Taclet_subSeqTailREQ.proof} (99%) diff --git a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/sequence/seqRules.key b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/sequence/seqRules.key index 442962242b8..a03d78832fd 100644 --- a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/sequence/seqRules.key +++ b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/sequence/seqRules.key @@ -142,6 +142,37 @@ // // ==================================================================== + \lemma + equalityToSeqGetAndSeqLenLeft { + \schemaVar \term Seq s, s2; + \schemaVar \variables int iv; + + \find(s = s2 ==>) + \varcond(\notFreeIn(iv, s, s2)) + + \add(seqLen(s) = seqLen(s2) + & \forall iv; (0 <= iv & iv < seqLen(s) + -> seqGet<[any]>(s, iv) = seqGet<[any]>(s2, iv)) ==>) + + \heuristics(inReachableStateImplication) + // uncertain about heuristics?? + }; + + \lemma + equalityToSeqGetAndSeqLenRight { + \schemaVar \term Seq s, s2; + \schemaVar \variables int iv; + + \find( ==> s = s2) + \varcond(\notFreeIn(iv, s, s2)) + + \replacewith( ==> seqLen(s) = seqLen(s2) + & \forall iv; (0 <= iv & iv < seqLen(s) + -> seqGet<[any]>(s, iv) = seqGet<[any]>(s2, iv))) + + \heuristics(simplify_enlarging) + }; + \lemma seqSelfDefinition { @@ -187,87 +218,6 @@ \heuristics(inReachableStateImplication) }; - // -------------------------------------------------------------------- - // derived rule for getOfseqX - // -------------------------------------------------------------------- - - \lemma - getOfSeqSingleton { - \schemaVar \term any x; - \schemaVar \term int idx; - - \find(seqGet<[alpha]>(seqSingleton(x), idx)) - - \replacewith(\if(idx = 0) - \then((alpha)x) - \else((alpha)seqGetOutside)) - - \heuristics(simplify) - \generateEQ(seqSingleton(x) : no_self_application, simplify_enlarging) - }; - - \lemma - getOfSeqSingletonConcrete { - \schemaVar \term any x; - \find(seqGet<[alpha]>(seqSingleton(x), 0)) - \replacewith((alpha)x) - \heuristics(concrete) - }; - - \lemma - getOfSeqConcat { - \schemaVar \term Seq seq, seq2; - \schemaVar \term int idx; - - \find(seqGet<[alpha]>(seqConcat(seq, seq2), idx)) - - \replacewith(\if(idx < seqLen(seq)) - \then(seqGet<[alpha]>(seq, idx)) - \else(seqGet<[alpha]>(seq2, idx - seqLen(seq)))) - - \heuristics(simplify_enlarging) - \generateEQ(seqConcat(seq, seq2) : no_self_application, simplify_enlarging) - }; - - \lemma - getOfSeqSub { - \schemaVar \term Seq seq; - \schemaVar \term int idx, from, to; - - \find(seqGet<[alpha]>(seqSub(seq, from, to), idx)) - - \replacewith(\if(0 <= idx & idx < (to - from)) - \then(seqGet<[alpha]>(seq, idx + from)) - \else((alpha)seqGetOutside)) - - \heuristics(simplify_enlarging) - \generateEQ(seqSub(seq, from, to) : no_self_application, simplify_enlarging) - }; - - \lemma - getOfSeqReverse { - \schemaVar \term Seq seq; - \schemaVar \term int idx; - - \find(seqGet<[alpha]>(seqReverse(seq), idx)) - - \replacewith(seqGet<[alpha]>(seq, seqLen(seq) - 1 - idx)) - - \heuristics(simplify_enlarging) - \generateEQ(seqReverse(seq) : no_self_application, simplify_enlarging) - }; - - \lemma - getOfSeqUpd { - \schemaVar \term Seq seq; - \schemaVar \term int idx, jdx; - \schemaVar \term any value; - - \find(seqGet<[alpha]>(seqUpd(seq, idx, value), jdx)) - \replacewith(\if(0<=jdx & jdx < seqLen(seq) & idx=jdx) \then((alpha)value) \else(seqGet<[alpha]>(seq, jdx))) - \heuristics(simplify_enlarging) - }; - // -------------------------------------------------------------------- // derived rule for lenOfX // -------------------------------------------------------------------- @@ -342,34 +292,84 @@ \heuristics(simplify) }; + // -------------------------------------------------------------------- + // derived rule for getOfseqX + // -------------------------------------------------------------------- + \lemma - equalityToSeqGetAndSeqLenLeft { - \schemaVar \term Seq s, s2; - \schemaVar \variables int iv; + getOfSeqSingleton { + \schemaVar \term any x; + \schemaVar \term int idx; - \find(s = s2 ==>) - \varcond(\notFreeIn(iv, s, s2)) + \find(seqGet<[alpha]>(seqSingleton(x), idx)) - \add(seqLen(s) = seqLen(s2) - & \forall iv; (0 <= iv & iv < seqLen(s) - -> seqGet<[any]>(s, iv) = seqGet<[any]>(s2, iv)) ==>) + \replacewith(\if(idx = 0) + \then((alpha)x) + \else((alpha)seqGetOutside)) - \heuristics(inReachableStateImplication) - // uncertain about heuristics?? + \heuristics(simplify) + \generateEQ(seqSingleton(x) : no_self_application, simplify_enlarging) }; \lemma - equalityToSeqGetAndSeqLenRight { - \schemaVar \term Seq s, s2; - \schemaVar \variables int iv; + getOfSeqSingletonConcrete { + \schemaVar \term any x; + \find(seqGet<[alpha]>(seqSingleton(x), 0)) + \replacewith((alpha)x) + \heuristics(concrete) + }; - \find( ==> s = s2) - \varcond(\notFreeIn(iv, s, s2)) + \lemma + getOfSeqConcat { + \schemaVar \term Seq seq, seq2; + \schemaVar \term int idx; - \replacewith( ==> seqLen(s) = seqLen(s2) - & \forall iv; (0 <= iv & iv < seqLen(s) - -> seqGet<[any]>(s, iv) = seqGet<[any]>(s2, iv))) + \find(seqGet<[alpha]>(seqConcat(seq, seq2), idx)) + + \replacewith(\if(idx < seqLen(seq)) + \then(seqGet<[alpha]>(seq, idx)) + \else(seqGet<[alpha]>(seq2, idx - seqLen(seq)))) + + \heuristics(simplify_enlarging) + \generateEQ(seqConcat(seq, seq2) : no_self_application, simplify_enlarging) + }; + \lemma + getOfSeqSub { + \schemaVar \term Seq seq; + \schemaVar \term int idx, from, to; + + \find(seqGet<[alpha]>(seqSub(seq, from, to), idx)) + + \replacewith(\if(0 <= idx & idx < (to - from)) + \then(seqGet<[alpha]>(seq, idx + from)) + \else((alpha)seqGetOutside)) + + \heuristics(simplify_enlarging) + \generateEQ(seqSub(seq, from, to) : no_self_application, simplify_enlarging) + }; + + \lemma + getOfSeqReverse { + \schemaVar \term Seq seq; + \schemaVar \term int idx; + + \find(seqGet<[alpha]>(seqReverse(seq), idx)) + + \replacewith(seqGet<[alpha]>(seq, seqLen(seq) - 1 - idx)) + + \heuristics(simplify_enlarging) + \generateEQ(seqReverse(seq) : no_self_application, simplify_enlarging) + }; + + \lemma + getOfSeqUpd { + \schemaVar \term Seq seq; + \schemaVar \term int idx, jdx; + \schemaVar \term any value; + + \find(seqGet<[alpha]>(seqUpd(seq, idx, value), jdx)) + \replacewith(\if(0<=jdx & jdx < seqLen(seq) & idx=jdx) \then((alpha)value) \else(seqGet<[alpha]>(seq, jdx))) \heuristics(simplify_enlarging) }; diff --git a/key.core/tacletProofs/seqRules/Taclet_subSeqTailEQL.proof b/key.core/tacletProofs/seqRules/Taclet_subSeqTailLEQ.proof similarity index 99% rename from key.core/tacletProofs/seqRules/Taclet_subSeqTailEQL.proof rename to key.core/tacletProofs/seqRules/Taclet_subSeqTailLEQ.proof index cab71d9fd18..a4c4a09c656 100644 --- a/key.core/tacletProofs/seqRules/Taclet_subSeqTailEQL.proof +++ b/key.core/tacletProofs/seqRules/Taclet_subSeqTailLEQ.proof @@ -43,7 +43,7 @@ } \proofObligation { - "name": "subSeqTailEQL", + "name": "subSeqTailLEQ", "class": "de.uka.ilkd.key.taclettranslation.lemma.TacletProofObligationInput", } diff --git a/key.core/tacletProofs/seqRules/Taclet_subSeqTailEQR.proof b/key.core/tacletProofs/seqRules/Taclet_subSeqTailREQ.proof similarity index 99% rename from key.core/tacletProofs/seqRules/Taclet_subSeqTailEQR.proof rename to key.core/tacletProofs/seqRules/Taclet_subSeqTailREQ.proof index b489ce82458..54ed456ba0f 100644 --- a/key.core/tacletProofs/seqRules/Taclet_subSeqTailEQR.proof +++ b/key.core/tacletProofs/seqRules/Taclet_subSeqTailREQ.proof @@ -43,7 +43,7 @@ } \proofObligation { - "name": "subSeqTailEQR", + "name": "subSeqTailREQ", "class": "de.uka.ilkd.key.taclettranslation.lemma.TacletProofObligationInput", } From 1935c8c44c1858c0c769c397b24ff54a042fa5bd Mon Sep 17 00:00:00 2001 From: Drodt Date: Thu, 30 Jul 2026 18:36:28 +0200 Subject: [PATCH 04/13] Regenerate taclets.old.txt --- .../de/uka/ilkd/key/nparser/taclets.old.txt | 38 +++++++++---------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/key.core/src/test/resources/de/uka/ilkd/key/nparser/taclets.old.txt b/key.core/src/test/resources/de/uka/ilkd/key/nparser/taclets.old.txt index 1850df2da23..cc02ed06d6b 100644 --- a/key.core/src/test/resources/de/uka/ilkd/key/nparser/taclets.old.txt +++ b/key.core/src/test/resources/de/uka/ilkd/key/nparser/taclets.old.txt @@ -1,5 +1,5 @@ # This files contains representation of taclets, which are accepted and revised. -# Date: Thu Jul 30 16:48:13 CEST 2026 +# Date: Thu Jul 30 18:35:03 CEST 2026 == abortJavaCardTransactionAPI (abortJavaCardTransactionAPI) ========================================= abortJavaCardTransactionAPI { @@ -12218,7 +12218,7 @@ Choices: Strings:on} ----------------------------------------------------- == lengthReplaceEQ (lengthReplaceEQ) ========================================= lengthReplaceEQ { -\assumes ([equals(clReplace(str,searchChar,replaceChar),EQ)]==>[]) +\assumes ([equals(clReplace(str,searchChar,replaceChar),EQ)]==>[]) \find(seqLen(EQ)) \sameUpdateLevel\replacewith(seqLen(str)) \heuristics(stringsSimplify) @@ -14004,7 +14004,7 @@ Choices: programRules:Java} ----------------------------------------------------- == onlyCreatedObjectsAreInLocSetsFinal (onlyCreatedObjectsAreInLocSetsFinal) ========================================= onlyCreatedObjectsAreInLocSetsFinal { -\assumes ([wellFormed(h)]==>[]) +\assumes ([wellFormed(h)]==>[]) \find(elementOf(o2,f2,final<[LocSet]>(o,f))==>) \add [or(equals(o2,null),equals(select<[boolean]>(h,o2,java.lang.Object::#$created),TRUE))]==>[] \heuristics(inReachableStateImplication) @@ -14012,7 +14012,7 @@ Choices: programRules:Java} ----------------------------------------------------- == onlyCreatedObjectsAreInLocSetsFinalEQ (onlyCreatedObjectsAreInLocSetsFinalEQ) ========================================= onlyCreatedObjectsAreInLocSetsFinalEQ { -\assumes ([wellFormed(h),equals(final<[LocSet]>(o,f),EQ)]==>[]) +\assumes ([wellFormed(h),equals(final<[LocSet]>(o,f),EQ)]==>[]) \find(elementOf(o2,f2,EQ)==>) \add [or(equals(o2,null),equals(select<[boolean]>(h,o2,java.lang.Object::#$created),TRUE))]==>[] \heuristics(inReachableStateImplication) @@ -14968,7 +14968,7 @@ Choices: integerSimplificationRules:full} pullOut { \find(t) \sameUpdateLevel\add [equals(t,sk)]==>[] \replacewith(sk) -\heuristics(semantics_blasting) +\heuristics(pull_out_heap) Choices: true} ----------------------------------------------------- == pullOutSelect (pullOutSelect) ========================================= @@ -15066,7 +15066,7 @@ Choices: reach:on} ----------------------------------------------------- == reachDependenciesStoreEQ (reachDependenciesStoreEQ) ========================================= reachDependenciesStoreEQ { -\assumes ([equals(store(h,o3,f,x),EQ)]==>[]) +\assumes ([equals(store(h,o3,f,x),EQ)]==>[]) \find(reach(EQ,s,o,o2,n)) \sameUpdateLevel\varcond(\notFreeIn(nv (variable), n (int term)), \notFreeIn(nv (variable), o2 (java.lang.Object term)), \notFreeIn(nv (variable), o (java.lang.Object term)), \notFreeIn(nv (variable), s (LocSet term)), \notFreeIn(nv (variable), x (any term)), \notFreeIn(nv (variable), f (Field term)), \notFreeIn(nv (variable), o3 (java.lang.Object term)), \notFreeIn(nv (variable), h (Heap term))) \add [not(and(exists{nv (variable)}(and(lt(nv,n),reach(h,s,o,o3,nv))),elementOf(o3,f,s)))]==>[] \replacewith(reach(h,s,o,o2,n)) ; @@ -15084,7 +15084,7 @@ Choices: reach:on} ----------------------------------------------------- == reachDependenciesStoreSimpleEQ (reachDependenciesStoreSimpleEQ) ========================================= reachDependenciesStoreSimpleEQ { -\assumes ([equals(store(h,o3,f2,x),EQ)]==>[]) +\assumes ([equals(store(h,o3,f2,x),EQ)]==>[]) \find(reach(EQ,allObjects(f),o,o2,n)) \sameUpdateLevel\varcond(\metaDisjoint f (Field term), f2 (Field term)) \replacewith(reach(h,allObjects(f),o,o2,n)) @@ -15222,9 +15222,9 @@ Choices: programRules:Java} ----------------------------------------------------- == referencedObjectIsCreatedRightFinalEQ (referencedObjectIsCreatedRightFinalEQ) ========================================= referencedObjectIsCreatedRightFinalEQ { -\assumes ([equals(final<[deltaObject]>(o,f),EQ)]==>[equals(EQ,null)]) +\assumes ([equals(final<[deltaObject]>(o,f),EQ)]==>[equals(EQ,null)]) \find(==>equals(select<[boolean]>(h,EQ,java.lang.Object::#$created),TRUE)) -\replacewith([]==>[or(equals(select<[boolean]>(h,o,java.lang.Object::#$created),TRUE),equals(o,null))]) +\replacewith([]==>[or(equals(select<[boolean]>(h,o,java.lang.Object::#$created),TRUE),equals(o,null))]) \heuristics(concrete) Choices: programRules:Java} ----------------------------------------------------- @@ -15690,9 +15690,9 @@ Choices: true} ----------------------------------------------------- == sElementOfSSetMinusEQ (sElementOfSSetMinusEQ) ========================================= sElementOfSSetMinusEQ { -\assumes ([equals(sSetMinus<[T]>(s,t),EQ)]==>[]) +\assumes ([equals(sSetMinus<[T]>(s,t),EQ)]==>[]) \find(sElementOf<[T]>(a,EQ)) -\sameUpdateLevel\replacewith(and(sElementOf<[T]>(a,s),not(sElementOf<[T]>(a,t)))) +\sameUpdateLevel\replacewith(and(sElementOf<[T]>(a,s),not(sElementOf<[T]>(a,t)))) \heuristics(simplify_enlarging) Choices: true} ----------------------------------------------------- @@ -17143,7 +17143,7 @@ Choices: sequences:on} == subSeqTailL (subSeqTail) ========================================= subSeqTailL { \find(seqSub(seqConcat(seqSingleton(x),seq),Z(1(#)),add(Z(1(#)),seqLen(seq)))) -\replacewith(seq) +\replacewith(seq) \heuristics(concrete) Choices: sequences:on} ----------------------------------------------------- @@ -17164,9 +17164,9 @@ Choices: sequences:on} ----------------------------------------------------- == subSeqTailREQ (subSeqTailEQ) ========================================= subSeqTailREQ { -\assumes ([equals(seqLen(seq),EQ)]==>[]) +\assumes ([equals(seqLen(seq),EQ)]==>[]) \find(seqSub(seqConcat(seqSingleton(x),seq),Z(1(#)),add(EQ,Z(1(#))))) -\sameUpdateLevel\replacewith(seq) +\sameUpdateLevel\replacewith(seq) \heuristics(concrete) Choices: sequences:on} ----------------------------------------------------- @@ -17230,9 +17230,9 @@ Choices: programRules:Java} ----------------------------------------------------- == subsetOfIntersectWithItSelf1EQ (subsetOfIntersectWithItSelf1EQ) ========================================= subsetOfIntersectWithItSelf1EQ { -\assumes ([equals(intersect(s,s2),EQ)]==>[]) +\assumes ([equals(intersect(s,s2),EQ)]==>[]) \find(subset(s,EQ)) -\sameUpdateLevel\replacewith(subset(s,s2)) +\sameUpdateLevel\replacewith(subset(s,s2)) \heuristics(concrete) Choices: programRules:Java} ----------------------------------------------------- @@ -17267,9 +17267,9 @@ Choices: programRules:Java} ----------------------------------------------------- == subsetOfUnionWithItSelf1EQ (subsetOfUnionWithItSelf1EQ) ========================================= subsetOfUnionWithItSelf1EQ { -\assumes ([equals(union(s,s2),EQ)]==>[]) +\assumes ([equals(union(s,s2),EQ)]==>[]) \find(subset(s,EQ)) -\sameUpdateLevel\replacewith(true) +\sameUpdateLevel\replacewith(true) \heuristics(concrete) Choices: programRules:Java} ----------------------------------------------------- @@ -18827,7 +18827,7 @@ wellFormedStoreLocSetEQ { \assumes ([equals(store(h,o,f,x),EQ)]==>[]) \find(wellFormed(EQ)) \sameUpdateLevel\succedentPolarity\varcond(\fieldType(f (Field term), alpha), \sub(LocSet, alpha)) -\replacewith(and(wellFormed(h),createdInHeap(x,h))) +\replacewith(and(wellFormed(h),createdInHeap(x,h))) \heuristics(simplify_enlarging) Choices: programRules:Java} ----------------------------------------------------- From 33454cb5582750d1c8357ea965dd80b161d957e9 Mon Sep 17 00:00:00 2001 From: Drodt Date: Thu, 30 Jul 2026 19:09:35 +0200 Subject: [PATCH 05/13] Fix prefixMap of added rules in generated taclets --- .../key/nparser/builder/TacletPBuilder.java | 19 ++++++++++++++++++- .../de/uka/ilkd/key/rule/AntecTaclet.java | 13 ------------- .../java/de/uka/ilkd/key/rule/FindTaclet.java | 2 -- .../de/uka/ilkd/key/rule/RewriteTaclet.java | 13 ------------- .../java/de/uka/ilkd/key/rule/SuccTaclet.java | 13 ------------- 5 files changed, 18 insertions(+), 42 deletions(-) diff --git a/key.core/src/main/java/de/uka/ilkd/key/nparser/builder/TacletPBuilder.java b/key.core/src/main/java/de/uka/ilkd/key/nparser/builder/TacletPBuilder.java index d98037a337a..4d5e6fdf0dd 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/nparser/builder/TacletPBuilder.java +++ b/key.core/src/main/java/de/uka/ilkd/key/nparser/builder/TacletPBuilder.java @@ -314,7 +314,24 @@ private TacletBuilder generateEQTaclet(TacletBuilder rules = ImmutableList.nil(); for (var r : tgt.rules()) { if (r instanceof FindTaclet ft) { - rules = rules.append(ft.setFind(replace(ft.find(), eqTerm, eqSVTerm))); + TacletBuilder builder = taclet2Builder.get(ft).copy(); + Taclet newTaclet = switch (builder) { + case AntecTacletBuilder atb -> { + atb.setFind((Sequent) replace(atb.getFind(), eqTerm, eqSVTerm)); + yield atb.getTaclet(); + } + case SuccTacletBuilder stb -> { + stb.setFind((Sequent) replace(stb.getFind(), eqTerm, eqSVTerm)); + yield stb.getTaclet(); + } + case RewriteTacletBuilder rtb -> { + rtb.setFind((JTerm) replace(rtb.getFind(), eqTerm, eqSVTerm)); + yield rtb.getTaclet(); + } + default -> throw new UnsupportedOperationException(); + }; + rules = rules.append(newTaclet); + taclet2Builder.put(newTaclet, builder); } else { rules = rules.append((Taclet) r); } diff --git a/key.core/src/main/java/de/uka/ilkd/key/rule/AntecTaclet.java b/key.core/src/main/java/de/uka/ilkd/key/rule/AntecTaclet.java index e9d30926f5d..3f61dfa4877 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/rule/AntecTaclet.java +++ b/key.core/src/main/java/de/uka/ilkd/key/rule/AntecTaclet.java @@ -8,7 +8,6 @@ import org.key_project.logic.ChoiceExpr; import org.key_project.logic.Name; -import org.key_project.logic.SyntaxElement; import org.key_project.logic.op.sv.SchemaVariable; import org.key_project.prover.rules.*; import org.key_project.prover.rules.TacletPrefix; @@ -77,16 +76,4 @@ protected void createAndInitializeExecutor() { return new AntecTaclet(new Name(s), applPart, goalTemplates(), getRuleSets(), attrs, (Sequent) find, prefixMap, choices, tacletAnnotations); } - - @Override - public FindTaclet setFind(SyntaxElement find) { - final TacletApplPart applPart = - new TacletApplPart(assumesSequent(), applicationRestriction(), varsNew(), - varsNotFreeIn(), - varsNewDependingOn(), getVariableConditions()); - final TacletAttributes attrs = new TacletAttributes(displayName(), trigger); - - return new AntecTaclet(name, applPart, goalTemplates(), getRuleSets(), attrs, - (Sequent) find, prefixMap, choices, tacletAnnotations); - } } diff --git a/key.core/src/main/java/de/uka/ilkd/key/rule/FindTaclet.java b/key.core/src/main/java/de/uka/ilkd/key/rule/FindTaclet.java index 1a7d802b270..ca71fd48507 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/rule/FindTaclet.java +++ b/key.core/src/main/java/de/uka/ilkd/key/rule/FindTaclet.java @@ -163,6 +163,4 @@ public String toString() { } return tacletAsString; } - - public abstract FindTaclet setFind(SyntaxElement find); } diff --git a/key.core/src/main/java/de/uka/ilkd/key/rule/RewriteTaclet.java b/key.core/src/main/java/de/uka/ilkd/key/rule/RewriteTaclet.java index 0836a22cfb9..7d1cd26f955 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/rule/RewriteTaclet.java +++ b/key.core/src/main/java/de/uka/ilkd/key/rule/RewriteTaclet.java @@ -17,7 +17,6 @@ import org.key_project.logic.ChoiceExpr; import org.key_project.logic.Name; -import org.key_project.logic.SyntaxElement; import org.key_project.logic.op.Operator; import org.key_project.logic.op.sv.SchemaVariable; import org.key_project.prover.rules.*; @@ -210,16 +209,4 @@ public SequentFormula getRewriteResult(Goal goal, TermLabelState termLabelState, (JTerm) find, prefixMap, choices, getSurviveSymbExec(), tacletAnnotations); } - - @Override - public RewriteTaclet setFind(SyntaxElement find) { - final TacletApplPart applPart = - new TacletApplPart(assumesSequent(), applicationRestriction(), varsNew(), - varsNotFreeIn(), - varsNewDependingOn(), getVariableConditions()); - final TacletAttributes attrs = new TacletAttributes(displayName(), trigger); - - return new RewriteTaclet(name, applPart, goalTemplates, getRuleSets(), attrs, (JTerm) find, - prefixMap, choices, getSurviveSymbExec(), tacletAnnotations); - } } diff --git a/key.core/src/main/java/de/uka/ilkd/key/rule/SuccTaclet.java b/key.core/src/main/java/de/uka/ilkd/key/rule/SuccTaclet.java index b7bdae1b5bc..be975ee381d 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/rule/SuccTaclet.java +++ b/key.core/src/main/java/de/uka/ilkd/key/rule/SuccTaclet.java @@ -8,7 +8,6 @@ import org.key_project.logic.ChoiceExpr; import org.key_project.logic.Name; -import org.key_project.logic.SyntaxElement; import org.key_project.logic.op.sv.SchemaVariable; import org.key_project.prover.rules.RuleSet; import org.key_project.prover.rules.TacletAnnotation; @@ -79,16 +78,4 @@ protected StringBuffer toStringFind(StringBuffer sb) { (Sequent) find, prefixMap, choices, tacletAnnotations); } - - @Override - public FindTaclet setFind(SyntaxElement find) { - final TacletApplPart applPart = - new TacletApplPart(assumesSequent(), applicationRestriction(), varsNew(), - varsNotFreeIn(), - varsNewDependingOn(), getVariableConditions()); - final TacletAttributes attrs = new TacletAttributes(displayName(), trigger); - return new SuccTaclet(name, applPart, goalTemplates(), getRuleSets(), attrs, - (Sequent) find, - prefixMap, choices, tacletAnnotations); - } } From b91b3fc2389a2d0308ebfcdd8443e9dd4a3ec222 Mon Sep 17 00:00:00 2001 From: Drodt Date: Fri, 31 Jul 2026 08:17:02 +0200 Subject: [PATCH 06/13] Generate missing rule --- .../src/main/resources/de/uka/ilkd/key/proof/rules/heapRules.key | 1 + 1 file changed, 1 insertion(+) diff --git a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/heapRules.key b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/heapRules.key index 87e62a13214..4ffb419c05e 100644 --- a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/heapRules.key +++ b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/heapRules.key @@ -840,6 +840,7 @@ \replacewith(wellFormed(h)) \heuristics(concrete) + \generateEQ(create(h, o)) }; wellFormedAnon { From 234dd8d066503c1cc658981837c61479fcaf450c Mon Sep 17 00:00:00 2001 From: Drodt Date: Fri, 31 Jul 2026 08:33:42 +0200 Subject: [PATCH 07/13] Fix one EQ taclet --- .../key/proof/rules/locset/locSetsRules.key | 17 ++++++++++++++++- .../de/uka/ilkd/key/nparser/taclets.old.txt | 12 ++++++++++-- 2 files changed, 26 insertions(+), 3 deletions(-) diff --git a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/locset/locSetsRules.key b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/locset/locSetsRules.key index 8d7b66ecafe..ceba3631b56 100644 --- a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/locset/locSetsRules.key +++ b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/locset/locSetsRules.key @@ -1059,7 +1059,22 @@ \replacewith( ==> select<[boolean]>(h, o, java.lang.Object::#$created) = TRUE | o = null ) \heuristics(simplify_enlarging) - \generateEQ(final<[deltaObject]>(o, f) : concrete) + }; + + referencedObjectIsCreatedRightFinalEQ { + \schemaVar \term Heap h; + \schemaVar \term Object o; + \schemaVar \term Field f; + \schemaVar \term Object EQ; + + \assumes(final<[deltaObject]>(o, f) = EQ ==> EQ = null) + \find( ==> select<[boolean]>(h, + EQ, + java.lang.Object::#$created) = TRUE) + + \add( ==> select<[boolean]>(h, o, java.lang.Object::#$created) = TRUE | o = null ) + + \heuristics(concrete) }; // -------------------------------------------------------------------------- diff --git a/key.core/src/test/resources/de/uka/ilkd/key/nparser/taclets.old.txt b/key.core/src/test/resources/de/uka/ilkd/key/nparser/taclets.old.txt index cc02ed06d6b..578a942b1f2 100644 --- a/key.core/src/test/resources/de/uka/ilkd/key/nparser/taclets.old.txt +++ b/key.core/src/test/resources/de/uka/ilkd/key/nparser/taclets.old.txt @@ -1,5 +1,5 @@ # This files contains representation of taclets, which are accepted and revised. -# Date: Thu Jul 30 18:35:03 CEST 2026 +# Date: Fri Jul 31 08:31:54 CEST 2026 == abortJavaCardTransactionAPI (abortJavaCardTransactionAPI) ========================================= abortJavaCardTransactionAPI { @@ -15224,7 +15224,7 @@ Choices: programRules:Java} referencedObjectIsCreatedRightFinalEQ { \assumes ([equals(final<[deltaObject]>(o,f),EQ)]==>[equals(EQ,null)]) \find(==>equals(select<[boolean]>(h,EQ,java.lang.Object::#$created),TRUE)) -\replacewith([]==>[or(equals(select<[boolean]>(h,o,java.lang.Object::#$created),TRUE),equals(o,null))]) +\add []==>[or(equals(select<[boolean]>(h,o,java.lang.Object::#$created),TRUE),equals(o,null))] \heuristics(concrete) Choices: programRules:Java} ----------------------------------------------------- @@ -18790,6 +18790,14 @@ wellFormedCreate { \heuristics(concrete) Choices: programRules:Java} ----------------------------------------------------- +== wellFormedCreateEQ (wellFormedCreateEQ) ========================================= +wellFormedCreateEQ { +\assumes ([equals(create(h,o),EQ)]==>[]) +\find(wellFormed(EQ)) +\sameUpdateLevel\succedentPolarity\replacewith(wellFormed(h)) +\heuristics(concrete) +Choices: programRules:Java} +----------------------------------------------------- == wellFormedMemsetArrayObject (wellFormedMemsetArrayObject) ========================================= wellFormedMemsetArrayObject { \find(wellFormed(memset(h,arrayRange(ar,lo,up),x))) From 795de278419e2fba1bb40b9d01613086afae4eaa Mon Sep 17 00:00:00 2001 From: Drodt Date: Fri, 31 Jul 2026 08:38:57 +0200 Subject: [PATCH 08/13] Generate missing rules --- .../de/uka/ilkd/key/proof/rules/heapRules.key | 2 ++ .../de/uka/ilkd/key/nparser/taclets.old.txt | 20 ++++++++++++++++++- 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/heapRules.key b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/heapRules.key index 4ffb419c05e..d5473afdd4b 100644 --- a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/heapRules.key +++ b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/heapRules.key @@ -771,6 +771,7 @@ \replacewith(wellFormed(h) & (x = null | select<[boolean]>(h, x, java.lang.Object::#$created) = TRUE & arrayStoreValid(o, x))) \heuristics(simplify_enlarging) + \generateEQ(store(h, o, arr(idx), x)) }; wellFormedStoreLocSet { @@ -828,6 +829,7 @@ \replacewith(wellFormed(h)) \heuristics(concrete) + \generateEQ(store(h, o, arr(idx), x)) }; wellFormedCreate { diff --git a/key.core/src/test/resources/de/uka/ilkd/key/nparser/taclets.old.txt b/key.core/src/test/resources/de/uka/ilkd/key/nparser/taclets.old.txt index 578a942b1f2..2d807e9351d 100644 --- a/key.core/src/test/resources/de/uka/ilkd/key/nparser/taclets.old.txt +++ b/key.core/src/test/resources/de/uka/ilkd/key/nparser/taclets.old.txt @@ -1,5 +1,5 @@ # This files contains representation of taclets, which are accepted and revised. -# Date: Fri Jul 31 08:31:54 CEST 2026 +# Date: Fri Jul 31 08:38:16 CEST 2026 == abortJavaCardTransactionAPI (abortJavaCardTransactionAPI) ========================================= abortJavaCardTransactionAPI { @@ -18822,6 +18822,15 @@ wellFormedStoreArray { \heuristics(simplify_enlarging) Choices: programRules:Java} ----------------------------------------------------- +== wellFormedStoreArrayEQ (wellFormedStoreArrayEQ) ========================================= +wellFormedStoreArrayEQ { +\assumes ([equals(store(h,o,arr(idx),x),EQ)]==>[]) +\find(wellFormed(EQ)) +\sameUpdateLevel\succedentPolarity\varcond(\hasSort(\elemSort(o (java.lang.Object term)), alpha)) +\replacewith(and(wellFormed(h),or(equals(x,null),and(equals(select<[boolean]>(h,x,java.lang.Object::#$created),TRUE),arrayStoreValid(o,x))))) +\heuristics(simplify_enlarging) +Choices: programRules:Java} +----------------------------------------------------- == wellFormedStoreLocSet (wellFormedStoreLocSet) ========================================= wellFormedStoreLocSet { \find(wellFormed(store(h,o,f,x))) @@ -18872,6 +18881,15 @@ wellFormedStorePrimitiveArray { \heuristics(concrete) Choices: programRules:Java} ----------------------------------------------------- +== wellFormedStorePrimitiveArrayEQ (wellFormedStorePrimitiveArrayEQ) ========================================= +wellFormedStorePrimitiveArrayEQ { +\assumes ([equals(store(h,o,arr(idx),x),EQ)]==>[]) +\find(wellFormed(EQ)) +\sameUpdateLevel\succedentPolarity\varcond(\hasSort(\elemSort(o (java.lang.Object term)), alpha), \not\sub(beta, java.lang.Object), \not\sub(beta, LocSet), \sub(beta, alpha)) +\replacewith(wellFormed(h)) +\heuristics(concrete) +Choices: programRules:Java} +----------------------------------------------------- == wellFormedStorePrimitiveEQ (wellFormedStorePrimitiveEQ) ========================================= wellFormedStorePrimitiveEQ { \assumes ([equals(store(h,o,f,x),EQ)]==>[]) From 41507bc234177c6eed79a953abef373ab801a9a7 Mon Sep 17 00:00:00 2001 From: Drodt Date: Fri, 31 Jul 2026 10:08:53 +0200 Subject: [PATCH 09/13] Document --- .../key/nparser/builder/TacletPBuilder.java | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/key.core/src/main/java/de/uka/ilkd/key/nparser/builder/TacletPBuilder.java b/key.core/src/main/java/de/uka/ilkd/key/nparser/builder/TacletPBuilder.java index 4d5e6fdf0dd..57ab8d13039 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/nparser/builder/TacletPBuilder.java +++ b/key.core/src/main/java/de/uka/ilkd/key/nparser/builder/TacletPBuilder.java @@ -246,6 +246,7 @@ public List visitTaclet(JavaKeYParser.TacletContext ctx) { List res = new LinkedList<>(); res.add(r); if (ctx.modifiers().generateEQ() != null && !ctx.modifiers().generateEQ().isEmpty()) { + // Generate EQ taclet if (ctx.modifiers().generateEQ().size() != 1) { semanticError(ctx.modifiers(), "A taclet may have at most one \\generateEQ declaration."); @@ -275,17 +276,26 @@ public List visitTaclet(JavaKeYParser.TacletContext ctx) { } } + /// Generate the EQ version of the taclet represented by `tb`. + /// @param tb builder of the original taclet + /// @param eqTerm the term to look for in the assumes sequent + /// @param ruleSets overriding rule sets + /// @return a [TacletBuilder] for the EQ taclet private TacletBuilder generateEQTaclet(TacletBuilder tb, - JTerm eqTerm, ImmutableList ruleSets) { + JTerm eqTerm, @Nullable ImmutableList ruleSets) { var fb = tb.copy(); var TB = services.getTermBuilder(); setSchemaVariables(new Namespace<>(schemaVariables())); + // Extend name and display name by "EQ" fb.setName(new Name(fb.getName() + "EQ")); fb.setDisplayName(fb.getTaclet().displayName() + "EQ"); + // We add the SV "EQ" TermSV eqSV = SchemaVariableFactory.createTermSV(new Name("EQ"), eqTerm.sort()); schemaVariables().add(eqSV); JTerm eqSVTerm = TB.var(eqSV); + // Replace `eqTerm` by `EQ` in existing `\assumes` var assumesSeq = replace(fb.assumesSequent(), eqTerm, eqSVTerm); + // Add `eqTerm = EQ ==>` to `\assumes` assumesSeq = assumesSeq .addFormula(new SequentFormula(TB.equals(eqTerm, eqSVTerm)), true, false).sequent(); fb.setAssumesSequent(assumesSeq); @@ -300,6 +310,7 @@ private TacletBuilder generateEQTaclet(TacletBuilder rb -> { rb.setFind((JTerm) replace(rb.getFind(), eqTerm, eqSVTerm)); + // Add the default `\sameUpdateLevel` rb.setApplicationRestriction(rb.getTaclet().applicationRestriction() .combine(ApplicationRestriction.SAME_UPDATE_LEVEL)); } @@ -308,6 +319,7 @@ private TacletBuilder generateEQTaclet(TacletBuilder goalSpecs = ImmutableList.nil(); + // We need to replace `eqTerm` by `EQ` in the `\find` parts of added rules as well for (var tgt : fb.goalTemplates()) { ChoiceExpr soc = fb.getGoal2Choices().get(tgt); if (tgt.rules() != null && !tgt.rules().isEmpty()) { @@ -333,9 +345,11 @@ private TacletBuilder generateEQTaclet(TacletBuilder keep original rules = rules.append((Taclet) r); } } + // Update added rules of goal template org.key_project.prover.rules.tacletbuilder.TacletGoalTemplate newGoalSpec = switch (tgt) { case AntecSuccTacletGoalTemplate astg -> @@ -351,6 +365,7 @@ private TacletBuilder generateEQTaclet(TacletBuilder Date: Fri, 31 Jul 2026 13:13:11 +0200 Subject: [PATCH 10/13] Fix copy method --- .../ilkd/key/rule/tacletbuilder/AntecTacletBuilder.java | 7 ++++--- .../ilkd/key/rule/tacletbuilder/NoFindTacletBuilder.java | 2 +- .../ilkd/key/rule/tacletbuilder/RewriteTacletBuilder.java | 7 ++++--- .../uka/ilkd/key/rule/tacletbuilder/SuccTacletBuilder.java | 7 ++++--- 4 files changed, 13 insertions(+), 10 deletions(-) diff --git a/key.core/src/main/java/de/uka/ilkd/key/rule/tacletbuilder/AntecTacletBuilder.java b/key.core/src/main/java/de/uka/ilkd/key/rule/tacletbuilder/AntecTacletBuilder.java index f89a5651b94..398aaab5afe 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/rule/tacletbuilder/AntecTacletBuilder.java +++ b/key.core/src/main/java/de/uka/ilkd/key/rule/tacletbuilder/AntecTacletBuilder.java @@ -117,9 +117,10 @@ public AntecTacletBuilder copy() { } rb.setFind((Sequent) find); rb.setChoices(choices); - rb.goal2Choices = - (java.util.HashMap) goal2Choices - .clone(); + if (goal2Choices != null) + rb.goal2Choices = + (java.util.HashMap) goal2Choices + .clone(); return rb; } } diff --git a/key.core/src/main/java/de/uka/ilkd/key/rule/tacletbuilder/NoFindTacletBuilder.java b/key.core/src/main/java/de/uka/ilkd/key/rule/tacletbuilder/NoFindTacletBuilder.java index a0987e2d2a9..c87eca81385 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/rule/tacletbuilder/NoFindTacletBuilder.java +++ b/key.core/src/main/java/de/uka/ilkd/key/rule/tacletbuilder/NoFindTacletBuilder.java @@ -92,6 +92,6 @@ public NoFindTacletBuilder copy() { rb.setTacletGoalTemplates(goals); rb.setTrigger(attrs.trigger()); rb.setRuleSets(ruleSets); - return null; + return rb; } } diff --git a/key.core/src/main/java/de/uka/ilkd/key/rule/tacletbuilder/RewriteTacletBuilder.java b/key.core/src/main/java/de/uka/ilkd/key/rule/tacletbuilder/RewriteTacletBuilder.java index 36edeaebabf..2696084f8df 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/rule/tacletbuilder/RewriteTacletBuilder.java +++ b/key.core/src/main/java/de/uka/ilkd/key/rule/tacletbuilder/RewriteTacletBuilder.java @@ -116,9 +116,10 @@ public RewriteTacletBuilder copy() { } rb.setFind((JTerm) find); rb.setChoices(choices); - rb.goal2Choices = - (java.util.HashMap) goal2Choices - .clone(); + if (goal2Choices != null) + rb.goal2Choices = + (java.util.HashMap) goal2Choices + .clone(); return rb; } } diff --git a/key.core/src/main/java/de/uka/ilkd/key/rule/tacletbuilder/SuccTacletBuilder.java b/key.core/src/main/java/de/uka/ilkd/key/rule/tacletbuilder/SuccTacletBuilder.java index 9509e8d8813..21605d2a8f8 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/rule/tacletbuilder/SuccTacletBuilder.java +++ b/key.core/src/main/java/de/uka/ilkd/key/rule/tacletbuilder/SuccTacletBuilder.java @@ -113,9 +113,10 @@ public SuccTacletBuilder copy() { } rb.setFind((Sequent) find); rb.setChoices(choices); - rb.goal2Choices = - (java.util.HashMap) goal2Choices - .clone(); + if (goal2Choices != null) + rb.goal2Choices = + (java.util.HashMap) goal2Choices + .clone(); return rb; } } From 42f2bcb6a249ea9e760853e4bf19e938de2e609d Mon Sep 17 00:00:00 2001 From: Drodt Date: Fri, 31 Jul 2026 13:25:59 +0200 Subject: [PATCH 11/13] Check that EQ term is actually in \find (and fix rules) --- .../key/nparser/builder/TacletPBuilder.java | 23 +++++++++++++---- .../ilkd/key/proof/rules/sequence/seqEq.key | 25 +++++++++++++++++-- 2 files changed, 41 insertions(+), 7 deletions(-) diff --git a/key.core/src/main/java/de/uka/ilkd/key/nparser/builder/TacletPBuilder.java b/key.core/src/main/java/de/uka/ilkd/key/nparser/builder/TacletPBuilder.java index 57ab8d13039..c4f33eac91b 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/nparser/builder/TacletPBuilder.java +++ b/key.core/src/main/java/de/uka/ilkd/key/nparser/builder/TacletPBuilder.java @@ -260,7 +260,8 @@ public List visitTaclet(JavaKeYParser.TacletContext ctx) { List rs = generateEQContext.ruleset().isEmpty() ? null : mapOf(generateEQContext.ruleset()); var eqTB = - generateEQTaclet(b, eqTerm, rs == null ? null : ImmutableList.fromList(rs)); + generateEQTaclet(generateEQContext, b, eqTerm, + rs == null ? null : ImmutableList.fromList(rs)); Taclet eqTaclet = eqTB.getTaclet(); res.add(eqTaclet); currentTBuilder.push(eqTB); @@ -281,7 +282,8 @@ public List visitTaclet(JavaKeYParser.TacletContext ctx) { /// @param eqTerm the term to look for in the assumes sequent /// @param ruleSets overriding rule sets /// @return a [TacletBuilder] for the EQ taclet - private TacletBuilder generateEQTaclet(TacletBuilder tb, + private TacletBuilder generateEQTaclet(JavaKeYParser.GenerateEQContext ctx, + TacletBuilder tb, JTerm eqTerm, @Nullable ImmutableList ruleSets) { var fb = tb.copy(); var TB = services.getTermBuilder(); @@ -301,15 +303,22 @@ private TacletBuilder generateEQTaclet(TacletBuilder { - atb.setFind((Sequent) replace(atb.getFind(), eqTerm, eqSVTerm)); + Sequent replaced = (Sequent) replace(atb.getFind(), eqTerm, eqSVTerm); + changed = !replaced.equals(atb.getFind()); + atb.setFind(replaced); } case SuccTacletBuilder stb -> { - stb.setFind((Sequent) replace(stb.getFind(), eqTerm, eqSVTerm)); + Sequent replaced = (Sequent) replace(stb.getFind(), eqTerm, eqSVTerm); + changed = !replaced.equals(stb.getFind()); + stb.setFind(replaced); } case RewriteTacletBuilder rb -> { - rb.setFind((JTerm) replace(rb.getFind(), eqTerm, eqSVTerm)); + JTerm replaced = (JTerm) replace(rb.getFind(), eqTerm, eqSVTerm); + changed = !replaced.equals(rb.getFind()); + rb.setFind(replaced); // Add the default `\sameUpdateLevel` rb.setApplicationRestriction(rb.getTaclet().applicationRestriction() .combine(ApplicationRestriction.SAME_UPDATE_LEVEL)); @@ -317,6 +326,10 @@ private TacletBuilder generateEQTaclet(TacletBuilder { } } + if (!changed) { + semanticError(ctx, + "The term in \\generateEQ was not found in the taclet's \\find part"); + } ImmutableList goalSpecs = ImmutableList.nil(); // We need to replace `eqTerm` by `EQ` in the `\find` parts of added rules as well diff --git a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/sequence/seqEq.key b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/sequence/seqEq.key index 787d1da7c27..b3708001c89 100644 --- a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/sequence/seqEq.key +++ b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/sequence/seqEq.key @@ -77,9 +77,20 @@ \replacewith(s1 = s2 & x = y) \heuristics(simplify) - \generateEQ(seqConcat(s2, seqSingleton(x)) : no_self_application, simplify) }; + eqSeqConcat4EQ { + \schemaVar \term Seq s1, s2, EQ; + \schemaVar \term any x, y; + + \assumes(seqConcat(s2, seqSingleton(x)) = EQ ==>) + \find(seqConcat(s1, seqSingleton(y)) = EQ) + + \replacewith(s1 = s2 & x = y) + \heuristics(no_self_application, simplify) + }; + + eqSeqConcat5 { \schemaVar \term Seq s1, s2; \schemaVar \term any x, y; @@ -88,7 +99,17 @@ \replacewith(x = y & s1 = s2) \heuristics(simplify) - \generateEQ(seqConcat(seqSingleton(x), s2) : no_self_application, simplify) + }; + + eqSeqConcat5EQ { + \schemaVar \term Seq s1, s2, EQ; + \schemaVar \term any x, y; + + \assumes(seqConcat(seqSingleton(x), s2) = EQ ==>) + \find(seqConcat(seqSingleton(y), s1) = EQ) + + \replacewith(x = y & s1 = s2) + \heuristics(no_self_application, simplify) }; eqSeqReverse { From 349497e0260d2c135af28f32e093ab95f7fffc5c Mon Sep 17 00:00:00 2001 From: Drodt Date: Fri, 31 Jul 2026 13:26:42 +0200 Subject: [PATCH 12/13] Add simplify rule set to lenOfSeqSub --- .../resources/de/uka/ilkd/key/proof/rules/sequence/seqRules.key | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/sequence/seqRules.key b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/sequence/seqRules.key index a03d78832fd..fa88c850d2c 100644 --- a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/sequence/seqRules.key +++ b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/sequence/seqRules.key @@ -266,7 +266,7 @@ \replacewith(\if(from < to) \then(to - from) \else(0)) \heuristics(simplify) - \generateEQ(seqSub(seq, from, to) : obsolete) + \generateEQ(seqSub(seq, from, to)) }; \lemma From 306168b46b013e4fa4974c0510654b950b6b053f Mon Sep 17 00:00:00 2001 From: Drodt Date: Fri, 31 Jul 2026 13:34:10 +0200 Subject: [PATCH 13/13] Update taclet names in strings and SMT settings --- .../java/de/uka/ilkd/key/macros/HeapSimplificationMacro.java | 2 +- .../key/taclettranslation/assumptions/SupportedTaclets.java | 2 +- .../testcase/merge/A.differentVarsWithSameName.MPS.key | 2 +- .../test/resources/testcase/merge/gcd.MPSAndBlockContract.key | 2 +- .../test/resources/testcase/merge/gcd.mergePointStatements.key | 2 +- key.ui/examples/completionscopes/testCcatchBreakLabel.key | 2 +- .../completionscopes/testCcatchBreakLabelNonmatchingNested.key | 2 +- .../examples/completionscopes/testCcatchBreakLabelWildcard.key | 2 +- key.ui/examples/completionscopes/testCcatchContinueLabel.key | 2 +- .../completionscopes/testCcatchContinueLabelWildcard.key | 2 +- key.ui/examples/completionscopes/testCcatchReturnVal.key | 2 +- key.ui/examples/completionscopes/testMultCcatchClauses.key | 2 +- key.ui/examples/completionscopes/testNestedExec.key | 2 +- 13 files changed, 13 insertions(+), 13 deletions(-) diff --git a/key.core/src/main/java/de/uka/ilkd/key/macros/HeapSimplificationMacro.java b/key.core/src/main/java/de/uka/ilkd/key/macros/HeapSimplificationMacro.java index 7e1c7798810..0139de6ff25 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/macros/HeapSimplificationMacro.java +++ b/key.core/src/main/java/de/uka/ilkd/key/macros/HeapSimplificationMacro.java @@ -74,7 +74,7 @@ public String getDescription() { "allFieldsEq", "subsetSingletonLeft", "subsetSingletonLeftEQ", "subsetSingletonRight", "subsetSingletonRightEQ", "subsetUnionLeft", "subsetUnionLeftEQ", - "subsetOfIntersectWithItSelfEQ1", "subsetOfIntersectWithItSelfEQ2", "allFieldsSubsetOf", + "subsetOfIntersectWithItSelf1EQ", "subsetOfIntersectWithItSelf2EQ", "allFieldsSubsetOf", "disjointAllFields", "disjointAllObjects", "disjointInfiniteUnion", "disjointInfiniteUnion_2", "intersectAllFieldsFreshLocs", "disjointWithSingleton1", "disjointWithSingleton2", "sortsDisjointModuloNull", diff --git a/key.core/src/main/java/de/uka/ilkd/key/taclettranslation/assumptions/SupportedTaclets.java b/key.core/src/main/java/de/uka/ilkd/key/taclettranslation/assumptions/SupportedTaclets.java index b97b7e27701..0d0580b4fe1 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/taclettranslation/assumptions/SupportedTaclets.java +++ b/key.core/src/main/java/de/uka/ilkd/key/taclettranslation/assumptions/SupportedTaclets.java @@ -459,7 +459,7 @@ public TreeModel getTreeModel() { "reachAddOne2", "reachUniquePathSameObject", "reachDependenciesStoreSimple", "reachDoesNotDependOnCreatedness", "reachDependenciesStore", "reachDependenciesAnon", "reachDependenciesAnonCoarse", "only_created_objects_are_reachable", - "reach_does_not_depend_on_fresh_locs", "reach_does_not_depend_on_fresh_locs_EQ" + "reach_does_not_depend_on_fresh_locs", "reach_does_not_depend_on_fresh_locsEQ" ); diff --git a/key.core/src/test/resources/testcase/merge/A.differentVarsWithSameName.MPS.key b/key.core/src/test/resources/testcase/merge/A.differentVarsWithSameName.MPS.key index e324b1c3e47..68aabb5c4ae 100644 --- a/key.core/src/test/resources/testcase/merge/A.differentVarsWithSameName.MPS.key +++ b/key.core/src/test/resources/testcase/merge/A.differentVarsWithSameName.MPS.key @@ -5,7 +5,7 @@ #Fri Apr 07 17:16:10 CEST 2017 [StrategyProperty]VBT_PHASE=VBT_SYM_EX [SMTSettings]useUninterpretedMultiplication=true -[SMTSettings]SelectedTaclets=\\#begboolean_equal_2\\#end,\\#begboolean_not_equal_1\\#end,\\#begboolean_not_equal_2\\#end,\\#begtrue_to_not_false\\#end,\\#begfalse_to_not_true\\#end,\\#begboolean_true_commute\\#end,\\#begboolean_false_commute\\#end,\\#begapply_eq_boolean\\#end,\\#begapply_eq_boolean_2\\#end,\\#begapply_eq_boolean_rigid\\#end,\\#begapply_eq_boolean_rigid_2\\#end,\\#begexpandInByte\\#end,\\#begexpandInChar\\#end,\\#begexpandInShort\\#end,\\#begexpandInInt\\#end,\\#begexpandInLong\\#end,\\#begreplace_byte_MAX\\#end,\\#begreplace_byte_MIN\\#end,\\#begreplace_char_MAX\\#end,\\#begreplace_char_MIN\\#end,\\#begreplace_short_MAX\\#end,\\#begreplace_short_MIN\\#end,\\#begreplace_int_MAX\\#end,\\#begreplace_int_MIN\\#end,\\#begreplace_long_MAX\\#end,\\#begreplace_long_MIN\\#end,\\#begreplace_byte_RANGE\\#end,\\#begreplace_byte_HALFRANGE\\#end,\\#begreplace_short_RANGE\\#end,\\#begreplace_short_HALFRANGE\\#end,\\#begreplace_char_RANGE\\#end,\\#begreplace_int_RANGE\\#end,\\#begreplace_int_HALFRANGE\\#end,\\#begreplace_long_RANGE\\#end,\\#begreplace_long_HALFRANGE\\#end,\\#begtranslateJavaUnaryMinusInt\\#end,\\#begtranslateJavaUnaryMinusLong\\#end,\\#begtranslateJavaBitwiseNegation\\#end,\\#begtranslateJavaAddInt\\#end,\\#begtranslateJavaAddLong\\#end,\\#begtranslateJavaSubInt\\#end,\\#begtranslateJavaSubLong\\#end,\\#begtranslateJavaMulInt\\#end,\\#begtranslateJavaMulLong\\#end,\\#begtranslateJavaMod\\#end,\\#begtranslateJavaDivInt\\#end,\\#begtranslateJavaDivLong\\#end,\\#begtranslateJavaCastByte\\#end,\\#begtranslateJavaCastShort\\#end,\\#begtranslateJavaCastInt\\#end,\\#begtranslateJavaCastLong\\#end,\\#begtranslateJavaCastChar\\#end,\\#begtranslateJavaShiftRightInt\\#end,\\#begtranslateJavaShiftRightLong\\#end,\\#begtranslateJavaShiftLeftInt\\#end,\\#begtranslateJavaShiftLeftLong\\#end,\\#begtranslateJavaUnsignedShiftRightInt\\#end,\\#begtranslateJavaUnsignedShiftRightLong\\#end,\\#begtranslateJavaBitwiseOrInt\\#end,\\#begtranslateJavaBitwiseOrLong\\#end,\\#begtranslateJavaBitwiseAndInt\\#end,\\#begtranslateJavaBitwiseAndLong\\#end,\\#begtranslateJavaBitwiseXOrInt\\#end,\\#begtranslateJavaBitwiseXOrLong\\#end,\\#begcastDel\\#end,\\#begtypeEq\\#end,\\#begtypeEqDerived\\#end,\\#begtypeEqDerived2\\#end,\\#begtypeStatic\\#end,\\#begcloseType\\#end,\\#begcloseTypeSwitched\\#end,\\#begexact_instance_definition_int\\#end,\\#begexact_instance_definition_boolean\\#end,\\#begexact_instance_definition_null\\#end,\\#begexact_instance_for_interfaces_or_abstract_classes\\#end,\\#begclass_being_initialized_is_prepared\\#end,\\#beginitialized_class_is_prepared\\#end,\\#beginitialized_class_is_not_erroneous\\#end,\\#begclass_initialized_excludes_class_init_in_progress\\#end,\\#begclass_erroneous_excludes_class_in_init\\#end,\\#begerroneous_class_has_no_initialized_sub_class\\#end,\\#begsuperclasses_of_initialized_classes_are_prepared\\#end,\\#begelementOfEmpty\\#end,\\#begelementOfAllLocs\\#end,\\#begelementOfSingleton\\#end,\\#begelementOfUnion\\#end,\\#begelementOfIntersect\\#end,\\#begelementOfSetMinus\\#end,\\#begelementOfAllFields\\#end,\\#begelementOfAllObjects\\#end,\\#begelementOfArrayRange\\#end,\\#begelementOfFreshLocs\\#end,\\#begequalityToElementOf\\#end,\\#begsubsetToElementOf\\#end,\\#begdisjointToElementOf\\#end,\\#begcreatedInHeapToElementOf\\#end,\\#begelementOfEmptyEQ\\#end,\\#begelementOfAllLocsEQ\\#end,\\#begelementOfSingletonEQ\\#end,\\#begelementOfUnionEQ\\#end,\\#begelementOfIntersectEQ\\#end,\\#begelementOfSetMinusEQ\\#end,\\#begelementOfAllFieldsEQ\\#end,\\#begelementOfAllObjectsEQ\\#end,\\#begelementOfArrayRangeEQ\\#end,\\#begelementOfFreshLocsEQ\\#end,\\#begunionWithEmpty1\\#end,\\#begunionWithEmpty2\\#end,\\#begunionWithAllLocs1\\#end,\\#begunionWithAllLocs2\\#end,\\#begintersectWithEmpty1\\#end,\\#begintersectWithEmpty2\\#end,\\#begintersectWithAllLocs1\\#end,\\#begintersectWithAllLocs2\\#end,\\#begsetMinusWithEmpty1\\#end,\\#begsetMinusWithEmpty2\\#end,\\#begsetMinusWithAllLocs\\#end,\\#begsubsetWithEmpty\\#end,\\#begsubsetWithAllLocs\\#end,\\#begdisjointWithEmpty1\\#end,\\#begdisjointWithEmpty2\\#end,\\#begcreatedInHeapWithEmpty\\#end,\\#begcreatedInHeapWithSingleton\\#end,\\#begcreatedInHeapWithUnion\\#end,\\#begcreatedInHeapWithSetMinusFreshLocs\\#end,\\#begcreatedInHeapWithAllFields\\#end,\\#begcreatedInHeapWithArrayRange\\#end,\\#begreferencedObjectIsCreatedRight\\#end,\\#begreferencedObjectIsCreatedRightEQ\\#end,\\#begunionWithItself\\#end,\\#begintersectWithItself\\#end,\\#begsetMinusItself\\#end,\\#begsubsetOfItself\\#end,\\#begselectOfStore\\#end,\\#begselectOfCreate\\#end,\\#begselectOfAnon\\#end,\\#begselectOfMemset\\#end,\\#begonlyCreatedObjectsAreReferenced\\#end,\\#begonlyCreatedObjectsAreInLocSets\\#end,\\#begonlyCreatedObjectsAreInLocSetsEQ\\#end,\\#begarrayLengthNotNegative\\#end,\\#begwellFormedStoreObject\\#end,\\#begwellFormedStoreLocSet\\#end,\\#begwellFormedStorePrimitive\\#end,\\#begwellFormedCreate\\#end,\\#begwellFormedAnon\\#end,\\#begwellFormedMemsetObject\\#end,\\#begwellFormedMemsetLocSet\\#end,\\#begwellFormedMemsetPrimitive\\#end,\\#begselectOfStoreEQ\\#end,\\#begselectOfCreateEQ\\#end,\\#begselectOfAnonEQ\\#end,\\#begselectOfMemsetEQ\\#end,\\#begmemsetEmpty\\#end,\\#begselectCreatedOfAnonEQ\\#end,\\#begwellFormedStoreObjectEQ\\#end,\\#begwellFormedStoreLocSetEQ\\#end,\\#begwellFormedStorePrimitiveEQ\\#end,\\#begwellFormedAnonEQ\\#end,\\#begwellFormedMemsetObjectEQ\\#end,\\#begwellFormedMemsetPrimitiveEQ\\#end,\\#begaccDefinition\\#end,\\#begreachDefinition\\#end,\\#begreachZero\\#end,\\#begreachOne\\#end,\\#begreachNull\\#end,\\#begreachNull2\\#end,\\#begreachAddOne\\#end,\\#begreachAddOne2\\#end,\\#begreachUniquePathSameObject\\#end,\\#begreachDependenciesStoreSimple\\#end,\\#begreachDoesNotDependOnCreatedness\\#end,\\#begreachDependenciesStore\\#end,\\#begreachDependenciesAnon\\#end,\\#begreachDependenciesAnonCoarse\\#end,\\#begonly_created_objects_are_reachable\\#end,\\#begreach_does_not_depend_on_fresh_locs\\#end,\\#begreach_does_not_depend_on_fresh_locs_EQ\\#end +[SMTSettings]SelectedTaclets=\\#begboolean_equal_2\\#end,\\#begboolean_not_equal_1\\#end,\\#begboolean_not_equal_2\\#end,\\#begtrue_to_not_false\\#end,\\#begfalse_to_not_true\\#end,\\#begboolean_true_commute\\#end,\\#begboolean_false_commute\\#end,\\#begapply_eq_boolean\\#end,\\#begapply_eq_boolean_2\\#end,\\#begapply_eq_boolean_rigid\\#end,\\#begapply_eq_boolean_rigid_2\\#end,\\#begexpandInByte\\#end,\\#begexpandInChar\\#end,\\#begexpandInShort\\#end,\\#begexpandInInt\\#end,\\#begexpandInLong\\#end,\\#begreplace_byte_MAX\\#end,\\#begreplace_byte_MIN\\#end,\\#begreplace_char_MAX\\#end,\\#begreplace_char_MIN\\#end,\\#begreplace_short_MAX\\#end,\\#begreplace_short_MIN\\#end,\\#begreplace_int_MAX\\#end,\\#begreplace_int_MIN\\#end,\\#begreplace_long_MAX\\#end,\\#begreplace_long_MIN\\#end,\\#begreplace_byte_RANGE\\#end,\\#begreplace_byte_HALFRANGE\\#end,\\#begreplace_short_RANGE\\#end,\\#begreplace_short_HALFRANGE\\#end,\\#begreplace_char_RANGE\\#end,\\#begreplace_int_RANGE\\#end,\\#begreplace_int_HALFRANGE\\#end,\\#begreplace_long_RANGE\\#end,\\#begreplace_long_HALFRANGE\\#end,\\#begtranslateJavaUnaryMinusInt\\#end,\\#begtranslateJavaUnaryMinusLong\\#end,\\#begtranslateJavaBitwiseNegation\\#end,\\#begtranslateJavaAddInt\\#end,\\#begtranslateJavaAddLong\\#end,\\#begtranslateJavaSubInt\\#end,\\#begtranslateJavaSubLong\\#end,\\#begtranslateJavaMulInt\\#end,\\#begtranslateJavaMulLong\\#end,\\#begtranslateJavaMod\\#end,\\#begtranslateJavaDivInt\\#end,\\#begtranslateJavaDivLong\\#end,\\#begtranslateJavaCastByte\\#end,\\#begtranslateJavaCastShort\\#end,\\#begtranslateJavaCastInt\\#end,\\#begtranslateJavaCastLong\\#end,\\#begtranslateJavaCastChar\\#end,\\#begtranslateJavaShiftRightInt\\#end,\\#begtranslateJavaShiftRightLong\\#end,\\#begtranslateJavaShiftLeftInt\\#end,\\#begtranslateJavaShiftLeftLong\\#end,\\#begtranslateJavaUnsignedShiftRightInt\\#end,\\#begtranslateJavaUnsignedShiftRightLong\\#end,\\#begtranslateJavaBitwiseOrInt\\#end,\\#begtranslateJavaBitwiseOrLong\\#end,\\#begtranslateJavaBitwiseAndInt\\#end,\\#begtranslateJavaBitwiseAndLong\\#end,\\#begtranslateJavaBitwiseXOrInt\\#end,\\#begtranslateJavaBitwiseXOrLong\\#end,\\#begcastDel\\#end,\\#begtypeEq\\#end,\\#begtypeEqDerived\\#end,\\#begtypeEqDerived2\\#end,\\#begtypeStatic\\#end,\\#begcloseType\\#end,\\#begcloseTypeSwitched\\#end,\\#begexact_instance_definition_int\\#end,\\#begexact_instance_definition_boolean\\#end,\\#begexact_instance_definition_null\\#end,\\#begexact_instance_for_interfaces_or_abstract_classes\\#end,\\#begclass_being_initialized_is_prepared\\#end,\\#beginitialized_class_is_prepared\\#end,\\#beginitialized_class_is_not_erroneous\\#end,\\#begclass_initialized_excludes_class_init_in_progress\\#end,\\#begclass_erroneous_excludes_class_in_init\\#end,\\#begerroneous_class_has_no_initialized_sub_class\\#end,\\#begsuperclasses_of_initialized_classes_are_prepared\\#end,\\#begelementOfEmpty\\#end,\\#begelementOfAllLocs\\#end,\\#begelementOfSingleton\\#end,\\#begelementOfUnion\\#end,\\#begelementOfIntersect\\#end,\\#begelementOfSetMinus\\#end,\\#begelementOfAllFields\\#end,\\#begelementOfAllObjects\\#end,\\#begelementOfArrayRange\\#end,\\#begelementOfFreshLocs\\#end,\\#begequalityToElementOf\\#end,\\#begsubsetToElementOf\\#end,\\#begdisjointToElementOf\\#end,\\#begcreatedInHeapToElementOf\\#end,\\#begelementOfEmptyEQ\\#end,\\#begelementOfAllLocsEQ\\#end,\\#begelementOfSingletonEQ\\#end,\\#begelementOfUnionEQ\\#end,\\#begelementOfIntersectEQ\\#end,\\#begelementOfSetMinusEQ\\#end,\\#begelementOfAllFieldsEQ\\#end,\\#begelementOfAllObjectsEQ\\#end,\\#begelementOfArrayRangeEQ\\#end,\\#begelementOfFreshLocsEQ\\#end,\\#begunionWithEmpty1\\#end,\\#begunionWithEmpty2\\#end,\\#begunionWithAllLocs1\\#end,\\#begunionWithAllLocs2\\#end,\\#begintersectWithEmpty1\\#end,\\#begintersectWithEmpty2\\#end,\\#begintersectWithAllLocs1\\#end,\\#begintersectWithAllLocs2\\#end,\\#begsetMinusWithEmpty1\\#end,\\#begsetMinusWithEmpty2\\#end,\\#begsetMinusWithAllLocs\\#end,\\#begsubsetWithEmpty\\#end,\\#begsubsetWithAllLocs\\#end,\\#begdisjointWithEmpty1\\#end,\\#begdisjointWithEmpty2\\#end,\\#begcreatedInHeapWithEmpty\\#end,\\#begcreatedInHeapWithSingleton\\#end,\\#begcreatedInHeapWithUnion\\#end,\\#begcreatedInHeapWithSetMinusFreshLocs\\#end,\\#begcreatedInHeapWithAllFields\\#end,\\#begcreatedInHeapWithArrayRange\\#end,\\#begreferencedObjectIsCreatedRight\\#end,\\#begreferencedObjectIsCreatedRightEQ\\#end,\\#begunionWithItself\\#end,\\#begintersectWithItself\\#end,\\#begsetMinusItself\\#end,\\#begsubsetOfItself\\#end,\\#begselectOfStore\\#end,\\#begselectOfCreate\\#end,\\#begselectOfAnon\\#end,\\#begselectOfMemset\\#end,\\#begonlyCreatedObjectsAreReferenced\\#end,\\#begonlyCreatedObjectsAreInLocSets\\#end,\\#begonlyCreatedObjectsAreInLocSetsEQ\\#end,\\#begarrayLengthNotNegative\\#end,\\#begwellFormedStoreObject\\#end,\\#begwellFormedStoreLocSet\\#end,\\#begwellFormedStorePrimitive\\#end,\\#begwellFormedCreate\\#end,\\#begwellFormedAnon\\#end,\\#begwellFormedMemsetObject\\#end,\\#begwellFormedMemsetLocSet\\#end,\\#begwellFormedMemsetPrimitive\\#end,\\#begselectOfStoreEQ\\#end,\\#begselectOfCreateEQ\\#end,\\#begselectOfAnonEQ\\#end,\\#begselectOfMemsetEQ\\#end,\\#begmemsetEmpty\\#end,\\#begselectCreatedOfAnonEQ\\#end,\\#begwellFormedStoreObjectEQ\\#end,\\#begwellFormedStoreLocSetEQ\\#end,\\#begwellFormedStorePrimitiveEQ\\#end,\\#begwellFormedAnonEQ\\#end,\\#begwellFormedMemsetObjectEQ\\#end,\\#begwellFormedMemsetPrimitiveEQ\\#end,\\#begaccDefinition\\#end,\\#begreachDefinition\\#end,\\#begreachZero\\#end,\\#begreachOne\\#end,\\#begreachNull\\#end,\\#begreachNull2\\#end,\\#begreachAddOne\\#end,\\#begreachAddOne2\\#end,\\#begreachUniquePathSameObject\\#end,\\#begreachDependenciesStoreSimple\\#end,\\#begreachDoesNotDependOnCreatedness\\#end,\\#begreachDependenciesStore\\#end,\\#begreachDependenciesAnon\\#end,\\#begreachDependenciesAnonCoarse\\#end,\\#begonly_created_objects_are_reachable\\#end,\\#begreach_does_not_depend_on_fresh_locs\\#end,\\#begreach_does_not_depend_on_fresh_locsEQ\\#end [StrategyProperty]METHOD_OPTIONS_KEY=METHOD_CONTRACT [StrategyProperty]USER_TACLETS_OPTIONS_KEY3=USER_TACLETS_OFF [StrategyProperty]SYMBOLIC_EXECUTION_ALIAS_CHECK_OPTIONS_KEY=SYMBOLIC_EXECUTION_ALIAS_CHECK_NEVER diff --git a/key.core/src/test/resources/testcase/merge/gcd.MPSAndBlockContract.key b/key.core/src/test/resources/testcase/merge/gcd.MPSAndBlockContract.key index ccc6289960b..536e1173571 100644 --- a/key.core/src/test/resources/testcase/merge/gcd.MPSAndBlockContract.key +++ b/key.core/src/test/resources/testcase/merge/gcd.MPSAndBlockContract.key @@ -5,7 +5,7 @@ #Fri Apr 07 16:59:43 CEST 2017 [StrategyProperty]VBT_PHASE=VBT_SYM_EX [SMTSettings]useUninterpretedMultiplication=true -[SMTSettings]SelectedTaclets=\\#begboolean_equal_2\\#end,\\#begboolean_not_equal_1\\#end,\\#begboolean_not_equal_2\\#end,\\#begtrue_to_not_false\\#end,\\#begfalse_to_not_true\\#end,\\#begboolean_true_commute\\#end,\\#begboolean_false_commute\\#end,\\#begapply_eq_boolean\\#end,\\#begapply_eq_boolean_2\\#end,\\#begapply_eq_boolean_rigid\\#end,\\#begapply_eq_boolean_rigid_2\\#end,\\#begexpandInByte\\#end,\\#begexpandInChar\\#end,\\#begexpandInShort\\#end,\\#begexpandInInt\\#end,\\#begexpandInLong\\#end,\\#begreplace_byte_MAX\\#end,\\#begreplace_byte_MIN\\#end,\\#begreplace_char_MAX\\#end,\\#begreplace_char_MIN\\#end,\\#begreplace_short_MAX\\#end,\\#begreplace_short_MIN\\#end,\\#begreplace_int_MAX\\#end,\\#begreplace_int_MIN\\#end,\\#begreplace_long_MAX\\#end,\\#begreplace_long_MIN\\#end,\\#begreplace_byte_RANGE\\#end,\\#begreplace_byte_HALFRANGE\\#end,\\#begreplace_short_RANGE\\#end,\\#begreplace_short_HALFRANGE\\#end,\\#begreplace_char_RANGE\\#end,\\#begreplace_int_RANGE\\#end,\\#begreplace_int_HALFRANGE\\#end,\\#begreplace_long_RANGE\\#end,\\#begreplace_long_HALFRANGE\\#end,\\#begtranslateJavaUnaryMinusInt\\#end,\\#begtranslateJavaUnaryMinusLong\\#end,\\#begtranslateJavaBitwiseNegation\\#end,\\#begtranslateJavaAddInt\\#end,\\#begtranslateJavaAddLong\\#end,\\#begtranslateJavaSubInt\\#end,\\#begtranslateJavaSubLong\\#end,\\#begtranslateJavaMulInt\\#end,\\#begtranslateJavaMulLong\\#end,\\#begtranslateJavaMod\\#end,\\#begtranslateJavaDivInt\\#end,\\#begtranslateJavaDivLong\\#end,\\#begtranslateJavaCastByte\\#end,\\#begtranslateJavaCastShort\\#end,\\#begtranslateJavaCastInt\\#end,\\#begtranslateJavaCastLong\\#end,\\#begtranslateJavaCastChar\\#end,\\#begtranslateJavaShiftRightInt\\#end,\\#begtranslateJavaShiftRightLong\\#end,\\#begtranslateJavaShiftLeftInt\\#end,\\#begtranslateJavaShiftLeftLong\\#end,\\#begtranslateJavaUnsignedShiftRightInt\\#end,\\#begtranslateJavaUnsignedShiftRightLong\\#end,\\#begtranslateJavaBitwiseOrInt\\#end,\\#begtranslateJavaBitwiseOrLong\\#end,\\#begtranslateJavaBitwiseAndInt\\#end,\\#begtranslateJavaBitwiseAndLong\\#end,\\#begtranslateJavaBitwiseXOrInt\\#end,\\#begtranslateJavaBitwiseXOrLong\\#end,\\#begcastDel\\#end,\\#begtypeEq\\#end,\\#begtypeEqDerived\\#end,\\#begtypeEqDerived2\\#end,\\#begtypeStatic\\#end,\\#begcloseType\\#end,\\#begcloseTypeSwitched\\#end,\\#begexact_instance_definition_int\\#end,\\#begexact_instance_definition_boolean\\#end,\\#begexact_instance_definition_null\\#end,\\#begexact_instance_for_interfaces_or_abstract_classes\\#end,\\#begclass_being_initialized_is_prepared\\#end,\\#beginitialized_class_is_prepared\\#end,\\#beginitialized_class_is_not_erroneous\\#end,\\#begclass_initialized_excludes_class_init_in_progress\\#end,\\#begclass_erroneous_excludes_class_in_init\\#end,\\#begerroneous_class_has_no_initialized_sub_class\\#end,\\#begsuperclasses_of_initialized_classes_are_prepared\\#end,\\#begelementOfEmpty\\#end,\\#begelementOfAllLocs\\#end,\\#begelementOfSingleton\\#end,\\#begelementOfUnion\\#end,\\#begelementOfIntersect\\#end,\\#begelementOfSetMinus\\#end,\\#begelementOfAllFields\\#end,\\#begelementOfAllObjects\\#end,\\#begelementOfArrayRange\\#end,\\#begelementOfFreshLocs\\#end,\\#begequalityToElementOf\\#end,\\#begsubsetToElementOf\\#end,\\#begdisjointToElementOf\\#end,\\#begcreatedInHeapToElementOf\\#end,\\#begelementOfEmptyEQ\\#end,\\#begelementOfAllLocsEQ\\#end,\\#begelementOfSingletonEQ\\#end,\\#begelementOfUnionEQ\\#end,\\#begelementOfIntersectEQ\\#end,\\#begelementOfSetMinusEQ\\#end,\\#begelementOfAllFieldsEQ\\#end,\\#begelementOfAllObjectsEQ\\#end,\\#begelementOfArrayRangeEQ\\#end,\\#begelementOfFreshLocsEQ\\#end,\\#begunionWithEmpty1\\#end,\\#begunionWithEmpty2\\#end,\\#begunionWithAllLocs1\\#end,\\#begunionWithAllLocs2\\#end,\\#begintersectWithEmpty1\\#end,\\#begintersectWithEmpty2\\#end,\\#begintersectWithAllLocs1\\#end,\\#begintersectWithAllLocs2\\#end,\\#begsetMinusWithEmpty1\\#end,\\#begsetMinusWithEmpty2\\#end,\\#begsetMinusWithAllLocs\\#end,\\#begsubsetWithEmpty\\#end,\\#begsubsetWithAllLocs\\#end,\\#begdisjointWithEmpty1\\#end,\\#begdisjointWithEmpty2\\#end,\\#begcreatedInHeapWithEmpty\\#end,\\#begcreatedInHeapWithSingleton\\#end,\\#begcreatedInHeapWithUnion\\#end,\\#begcreatedInHeapWithSetMinusFreshLocs\\#end,\\#begcreatedInHeapWithAllFields\\#end,\\#begcreatedInHeapWithArrayRange\\#end,\\#begreferencedObjectIsCreatedRight\\#end,\\#begreferencedObjectIsCreatedRightEQ\\#end,\\#begunionWithItself\\#end,\\#begintersectWithItself\\#end,\\#begsetMinusItself\\#end,\\#begsubsetOfItself\\#end,\\#begselectOfStore\\#end,\\#begselectOfCreate\\#end,\\#begselectOfAnon\\#end,\\#begselectOfMemset\\#end,\\#begonlyCreatedObjectsAreReferenced\\#end,\\#begonlyCreatedObjectsAreInLocSets\\#end,\\#begonlyCreatedObjectsAreInLocSetsEQ\\#end,\\#begarrayLengthNotNegative\\#end,\\#begwellFormedStoreObject\\#end,\\#begwellFormedStoreLocSet\\#end,\\#begwellFormedStorePrimitive\\#end,\\#begwellFormedCreate\\#end,\\#begwellFormedAnon\\#end,\\#begwellFormedMemsetObject\\#end,\\#begwellFormedMemsetLocSet\\#end,\\#begwellFormedMemsetPrimitive\\#end,\\#begselectOfStoreEQ\\#end,\\#begselectOfCreateEQ\\#end,\\#begselectOfAnonEQ\\#end,\\#begselectOfMemsetEQ\\#end,\\#begmemsetEmpty\\#end,\\#begselectCreatedOfAnonEQ\\#end,\\#begwellFormedStoreObjectEQ\\#end,\\#begwellFormedStoreLocSetEQ\\#end,\\#begwellFormedStorePrimitiveEQ\\#end,\\#begwellFormedAnonEQ\\#end,\\#begwellFormedMemsetObjectEQ\\#end,\\#begwellFormedMemsetPrimitiveEQ\\#end,\\#begaccDefinition\\#end,\\#begreachDefinition\\#end,\\#begreachZero\\#end,\\#begreachOne\\#end,\\#begreachNull\\#end,\\#begreachNull2\\#end,\\#begreachAddOne\\#end,\\#begreachAddOne2\\#end,\\#begreachUniquePathSameObject\\#end,\\#begreachDependenciesStoreSimple\\#end,\\#begreachDoesNotDependOnCreatedness\\#end,\\#begreachDependenciesStore\\#end,\\#begreachDependenciesAnon\\#end,\\#begreachDependenciesAnonCoarse\\#end,\\#begonly_created_objects_are_reachable\\#end,\\#begreach_does_not_depend_on_fresh_locs\\#end,\\#begreach_does_not_depend_on_fresh_locs_EQ\\#end +[SMTSettings]SelectedTaclets=\\#begboolean_equal_2\\#end,\\#begboolean_not_equal_1\\#end,\\#begboolean_not_equal_2\\#end,\\#begtrue_to_not_false\\#end,\\#begfalse_to_not_true\\#end,\\#begboolean_true_commute\\#end,\\#begboolean_false_commute\\#end,\\#begapply_eq_boolean\\#end,\\#begapply_eq_boolean_2\\#end,\\#begapply_eq_boolean_rigid\\#end,\\#begapply_eq_boolean_rigid_2\\#end,\\#begexpandInByte\\#end,\\#begexpandInChar\\#end,\\#begexpandInShort\\#end,\\#begexpandInInt\\#end,\\#begexpandInLong\\#end,\\#begreplace_byte_MAX\\#end,\\#begreplace_byte_MIN\\#end,\\#begreplace_char_MAX\\#end,\\#begreplace_char_MIN\\#end,\\#begreplace_short_MAX\\#end,\\#begreplace_short_MIN\\#end,\\#begreplace_int_MAX\\#end,\\#begreplace_int_MIN\\#end,\\#begreplace_long_MAX\\#end,\\#begreplace_long_MIN\\#end,\\#begreplace_byte_RANGE\\#end,\\#begreplace_byte_HALFRANGE\\#end,\\#begreplace_short_RANGE\\#end,\\#begreplace_short_HALFRANGE\\#end,\\#begreplace_char_RANGE\\#end,\\#begreplace_int_RANGE\\#end,\\#begreplace_int_HALFRANGE\\#end,\\#begreplace_long_RANGE\\#end,\\#begreplace_long_HALFRANGE\\#end,\\#begtranslateJavaUnaryMinusInt\\#end,\\#begtranslateJavaUnaryMinusLong\\#end,\\#begtranslateJavaBitwiseNegation\\#end,\\#begtranslateJavaAddInt\\#end,\\#begtranslateJavaAddLong\\#end,\\#begtranslateJavaSubInt\\#end,\\#begtranslateJavaSubLong\\#end,\\#begtranslateJavaMulInt\\#end,\\#begtranslateJavaMulLong\\#end,\\#begtranslateJavaMod\\#end,\\#begtranslateJavaDivInt\\#end,\\#begtranslateJavaDivLong\\#end,\\#begtranslateJavaCastByte\\#end,\\#begtranslateJavaCastShort\\#end,\\#begtranslateJavaCastInt\\#end,\\#begtranslateJavaCastLong\\#end,\\#begtranslateJavaCastChar\\#end,\\#begtranslateJavaShiftRightInt\\#end,\\#begtranslateJavaShiftRightLong\\#end,\\#begtranslateJavaShiftLeftInt\\#end,\\#begtranslateJavaShiftLeftLong\\#end,\\#begtranslateJavaUnsignedShiftRightInt\\#end,\\#begtranslateJavaUnsignedShiftRightLong\\#end,\\#begtranslateJavaBitwiseOrInt\\#end,\\#begtranslateJavaBitwiseOrLong\\#end,\\#begtranslateJavaBitwiseAndInt\\#end,\\#begtranslateJavaBitwiseAndLong\\#end,\\#begtranslateJavaBitwiseXOrInt\\#end,\\#begtranslateJavaBitwiseXOrLong\\#end,\\#begcastDel\\#end,\\#begtypeEq\\#end,\\#begtypeEqDerived\\#end,\\#begtypeEqDerived2\\#end,\\#begtypeStatic\\#end,\\#begcloseType\\#end,\\#begcloseTypeSwitched\\#end,\\#begexact_instance_definition_int\\#end,\\#begexact_instance_definition_boolean\\#end,\\#begexact_instance_definition_null\\#end,\\#begexact_instance_for_interfaces_or_abstract_classes\\#end,\\#begclass_being_initialized_is_prepared\\#end,\\#beginitialized_class_is_prepared\\#end,\\#beginitialized_class_is_not_erroneous\\#end,\\#begclass_initialized_excludes_class_init_in_progress\\#end,\\#begclass_erroneous_excludes_class_in_init\\#end,\\#begerroneous_class_has_no_initialized_sub_class\\#end,\\#begsuperclasses_of_initialized_classes_are_prepared\\#end,\\#begelementOfEmpty\\#end,\\#begelementOfAllLocs\\#end,\\#begelementOfSingleton\\#end,\\#begelementOfUnion\\#end,\\#begelementOfIntersect\\#end,\\#begelementOfSetMinus\\#end,\\#begelementOfAllFields\\#end,\\#begelementOfAllObjects\\#end,\\#begelementOfArrayRange\\#end,\\#begelementOfFreshLocs\\#end,\\#begequalityToElementOf\\#end,\\#begsubsetToElementOf\\#end,\\#begdisjointToElementOf\\#end,\\#begcreatedInHeapToElementOf\\#end,\\#begelementOfEmptyEQ\\#end,\\#begelementOfAllLocsEQ\\#end,\\#begelementOfSingletonEQ\\#end,\\#begelementOfUnionEQ\\#end,\\#begelementOfIntersectEQ\\#end,\\#begelementOfSetMinusEQ\\#end,\\#begelementOfAllFieldsEQ\\#end,\\#begelementOfAllObjectsEQ\\#end,\\#begelementOfArrayRangeEQ\\#end,\\#begelementOfFreshLocsEQ\\#end,\\#begunionWithEmpty1\\#end,\\#begunionWithEmpty2\\#end,\\#begunionWithAllLocs1\\#end,\\#begunionWithAllLocs2\\#end,\\#begintersectWithEmpty1\\#end,\\#begintersectWithEmpty2\\#end,\\#begintersectWithAllLocs1\\#end,\\#begintersectWithAllLocs2\\#end,\\#begsetMinusWithEmpty1\\#end,\\#begsetMinusWithEmpty2\\#end,\\#begsetMinusWithAllLocs\\#end,\\#begsubsetWithEmpty\\#end,\\#begsubsetWithAllLocs\\#end,\\#begdisjointWithEmpty1\\#end,\\#begdisjointWithEmpty2\\#end,\\#begcreatedInHeapWithEmpty\\#end,\\#begcreatedInHeapWithSingleton\\#end,\\#begcreatedInHeapWithUnion\\#end,\\#begcreatedInHeapWithSetMinusFreshLocs\\#end,\\#begcreatedInHeapWithAllFields\\#end,\\#begcreatedInHeapWithArrayRange\\#end,\\#begreferencedObjectIsCreatedRight\\#end,\\#begreferencedObjectIsCreatedRightEQ\\#end,\\#begunionWithItself\\#end,\\#begintersectWithItself\\#end,\\#begsetMinusItself\\#end,\\#begsubsetOfItself\\#end,\\#begselectOfStore\\#end,\\#begselectOfCreate\\#end,\\#begselectOfAnon\\#end,\\#begselectOfMemset\\#end,\\#begonlyCreatedObjectsAreReferenced\\#end,\\#begonlyCreatedObjectsAreInLocSets\\#end,\\#begonlyCreatedObjectsAreInLocSetsEQ\\#end,\\#begarrayLengthNotNegative\\#end,\\#begwellFormedStoreObject\\#end,\\#begwellFormedStoreLocSet\\#end,\\#begwellFormedStorePrimitive\\#end,\\#begwellFormedCreate\\#end,\\#begwellFormedAnon\\#end,\\#begwellFormedMemsetObject\\#end,\\#begwellFormedMemsetLocSet\\#end,\\#begwellFormedMemsetPrimitive\\#end,\\#begselectOfStoreEQ\\#end,\\#begselectOfCreateEQ\\#end,\\#begselectOfAnonEQ\\#end,\\#begselectOfMemsetEQ\\#end,\\#begmemsetEmpty\\#end,\\#begselectCreatedOfAnonEQ\\#end,\\#begwellFormedStoreObjectEQ\\#end,\\#begwellFormedStoreLocSetEQ\\#end,\\#begwellFormedStorePrimitiveEQ\\#end,\\#begwellFormedAnonEQ\\#end,\\#begwellFormedMemsetObjectEQ\\#end,\\#begwellFormedMemsetPrimitiveEQ\\#end,\\#begaccDefinition\\#end,\\#begreachDefinition\\#end,\\#begreachZero\\#end,\\#begreachOne\\#end,\\#begreachNull\\#end,\\#begreachNull2\\#end,\\#begreachAddOne\\#end,\\#begreachAddOne2\\#end,\\#begreachUniquePathSameObject\\#end,\\#begreachDependenciesStoreSimple\\#end,\\#begreachDoesNotDependOnCreatedness\\#end,\\#begreachDependenciesStore\\#end,\\#begreachDependenciesAnon\\#end,\\#begreachDependenciesAnonCoarse\\#end,\\#begonly_created_objects_are_reachable\\#end,\\#begreach_does_not_depend_on_fresh_locs\\#end,\\#begreach_does_not_depend_on_fresh_locsEQ\\#end [StrategyProperty]METHOD_OPTIONS_KEY=METHOD_CONTRACT [StrategyProperty]USER_TACLETS_OPTIONS_KEY3=USER_TACLETS_OFF [StrategyProperty]LOOP_OPTIONS_KEY=LOOP_NONE diff --git a/key.core/src/test/resources/testcase/merge/gcd.mergePointStatements.key b/key.core/src/test/resources/testcase/merge/gcd.mergePointStatements.key index f7dbfea12d4..4028f5a4b74 100644 --- a/key.core/src/test/resources/testcase/merge/gcd.mergePointStatements.key +++ b/key.core/src/test/resources/testcase/merge/gcd.mergePointStatements.key @@ -5,7 +5,7 @@ #Fri Apr 07 17:16:10 CEST 2017 [StrategyProperty]VBT_PHASE=VBT_SYM_EX [SMTSettings]useUninterpretedMultiplication=true -[SMTSettings]SelectedTaclets=\\#begboolean_equal_2\\#end,\\#begboolean_not_equal_1\\#end,\\#begboolean_not_equal_2\\#end,\\#begtrue_to_not_false\\#end,\\#begfalse_to_not_true\\#end,\\#begboolean_true_commute\\#end,\\#begboolean_false_commute\\#end,\\#begapply_eq_boolean\\#end,\\#begapply_eq_boolean_2\\#end,\\#begapply_eq_boolean_rigid\\#end,\\#begapply_eq_boolean_rigid_2\\#end,\\#begexpandInByte\\#end,\\#begexpandInChar\\#end,\\#begexpandInShort\\#end,\\#begexpandInInt\\#end,\\#begexpandInLong\\#end,\\#begreplace_byte_MAX\\#end,\\#begreplace_byte_MIN\\#end,\\#begreplace_char_MAX\\#end,\\#begreplace_char_MIN\\#end,\\#begreplace_short_MAX\\#end,\\#begreplace_short_MIN\\#end,\\#begreplace_int_MAX\\#end,\\#begreplace_int_MIN\\#end,\\#begreplace_long_MAX\\#end,\\#begreplace_long_MIN\\#end,\\#begreplace_byte_RANGE\\#end,\\#begreplace_byte_HALFRANGE\\#end,\\#begreplace_short_RANGE\\#end,\\#begreplace_short_HALFRANGE\\#end,\\#begreplace_char_RANGE\\#end,\\#begreplace_int_RANGE\\#end,\\#begreplace_int_HALFRANGE\\#end,\\#begreplace_long_RANGE\\#end,\\#begreplace_long_HALFRANGE\\#end,\\#begtranslateJavaUnaryMinusInt\\#end,\\#begtranslateJavaUnaryMinusLong\\#end,\\#begtranslateJavaBitwiseNegation\\#end,\\#begtranslateJavaAddInt\\#end,\\#begtranslateJavaAddLong\\#end,\\#begtranslateJavaSubInt\\#end,\\#begtranslateJavaSubLong\\#end,\\#begtranslateJavaMulInt\\#end,\\#begtranslateJavaMulLong\\#end,\\#begtranslateJavaMod\\#end,\\#begtranslateJavaDivInt\\#end,\\#begtranslateJavaDivLong\\#end,\\#begtranslateJavaCastByte\\#end,\\#begtranslateJavaCastShort\\#end,\\#begtranslateJavaCastInt\\#end,\\#begtranslateJavaCastLong\\#end,\\#begtranslateJavaCastChar\\#end,\\#begtranslateJavaShiftRightInt\\#end,\\#begtranslateJavaShiftRightLong\\#end,\\#begtranslateJavaShiftLeftInt\\#end,\\#begtranslateJavaShiftLeftLong\\#end,\\#begtranslateJavaUnsignedShiftRightInt\\#end,\\#begtranslateJavaUnsignedShiftRightLong\\#end,\\#begtranslateJavaBitwiseOrInt\\#end,\\#begtranslateJavaBitwiseOrLong\\#end,\\#begtranslateJavaBitwiseAndInt\\#end,\\#begtranslateJavaBitwiseAndLong\\#end,\\#begtranslateJavaBitwiseXOrInt\\#end,\\#begtranslateJavaBitwiseXOrLong\\#end,\\#begcastDel\\#end,\\#begtypeEq\\#end,\\#begtypeEqDerived\\#end,\\#begtypeEqDerived2\\#end,\\#begtypeStatic\\#end,\\#begcloseType\\#end,\\#begcloseTypeSwitched\\#end,\\#begexact_instance_definition_int\\#end,\\#begexact_instance_definition_boolean\\#end,\\#begexact_instance_definition_null\\#end,\\#begexact_instance_for_interfaces_or_abstract_classes\\#end,\\#begclass_being_initialized_is_prepared\\#end,\\#beginitialized_class_is_prepared\\#end,\\#beginitialized_class_is_not_erroneous\\#end,\\#begclass_initialized_excludes_class_init_in_progress\\#end,\\#begclass_erroneous_excludes_class_in_init\\#end,\\#begerroneous_class_has_no_initialized_sub_class\\#end,\\#begsuperclasses_of_initialized_classes_are_prepared\\#end,\\#begelementOfEmpty\\#end,\\#begelementOfAllLocs\\#end,\\#begelementOfSingleton\\#end,\\#begelementOfUnion\\#end,\\#begelementOfIntersect\\#end,\\#begelementOfSetMinus\\#end,\\#begelementOfAllFields\\#end,\\#begelementOfAllObjects\\#end,\\#begelementOfArrayRange\\#end,\\#begelementOfFreshLocs\\#end,\\#begequalityToElementOf\\#end,\\#begsubsetToElementOf\\#end,\\#begdisjointToElementOf\\#end,\\#begcreatedInHeapToElementOf\\#end,\\#begelementOfEmptyEQ\\#end,\\#begelementOfAllLocsEQ\\#end,\\#begelementOfSingletonEQ\\#end,\\#begelementOfUnionEQ\\#end,\\#begelementOfIntersectEQ\\#end,\\#begelementOfSetMinusEQ\\#end,\\#begelementOfAllFieldsEQ\\#end,\\#begelementOfAllObjectsEQ\\#end,\\#begelementOfArrayRangeEQ\\#end,\\#begelementOfFreshLocsEQ\\#end,\\#begunionWithEmpty1\\#end,\\#begunionWithEmpty2\\#end,\\#begunionWithAllLocs1\\#end,\\#begunionWithAllLocs2\\#end,\\#begintersectWithEmpty1\\#end,\\#begintersectWithEmpty2\\#end,\\#begintersectWithAllLocs1\\#end,\\#begintersectWithAllLocs2\\#end,\\#begsetMinusWithEmpty1\\#end,\\#begsetMinusWithEmpty2\\#end,\\#begsetMinusWithAllLocs\\#end,\\#begsubsetWithEmpty\\#end,\\#begsubsetWithAllLocs\\#end,\\#begdisjointWithEmpty1\\#end,\\#begdisjointWithEmpty2\\#end,\\#begcreatedInHeapWithEmpty\\#end,\\#begcreatedInHeapWithSingleton\\#end,\\#begcreatedInHeapWithUnion\\#end,\\#begcreatedInHeapWithSetMinusFreshLocs\\#end,\\#begcreatedInHeapWithAllFields\\#end,\\#begcreatedInHeapWithArrayRange\\#end,\\#begreferencedObjectIsCreatedRight\\#end,\\#begreferencedObjectIsCreatedRightEQ\\#end,\\#begunionWithItself\\#end,\\#begintersectWithItself\\#end,\\#begsetMinusItself\\#end,\\#begsubsetOfItself\\#end,\\#begselectOfStore\\#end,\\#begselectOfCreate\\#end,\\#begselectOfAnon\\#end,\\#begselectOfMemset\\#end,\\#begonlyCreatedObjectsAreReferenced\\#end,\\#begonlyCreatedObjectsAreInLocSets\\#end,\\#begonlyCreatedObjectsAreInLocSetsEQ\\#end,\\#begarrayLengthNotNegative\\#end,\\#begwellFormedStoreObject\\#end,\\#begwellFormedStoreLocSet\\#end,\\#begwellFormedStorePrimitive\\#end,\\#begwellFormedCreate\\#end,\\#begwellFormedAnon\\#end,\\#begwellFormedMemsetObject\\#end,\\#begwellFormedMemsetLocSet\\#end,\\#begwellFormedMemsetPrimitive\\#end,\\#begselectOfStoreEQ\\#end,\\#begselectOfCreateEQ\\#end,\\#begselectOfAnonEQ\\#end,\\#begselectOfMemsetEQ\\#end,\\#begmemsetEmpty\\#end,\\#begselectCreatedOfAnonEQ\\#end,\\#begwellFormedStoreObjectEQ\\#end,\\#begwellFormedStoreLocSetEQ\\#end,\\#begwellFormedStorePrimitiveEQ\\#end,\\#begwellFormedAnonEQ\\#end,\\#begwellFormedMemsetObjectEQ\\#end,\\#begwellFormedMemsetPrimitiveEQ\\#end,\\#begaccDefinition\\#end,\\#begreachDefinition\\#end,\\#begreachZero\\#end,\\#begreachOne\\#end,\\#begreachNull\\#end,\\#begreachNull2\\#end,\\#begreachAddOne\\#end,\\#begreachAddOne2\\#end,\\#begreachUniquePathSameObject\\#end,\\#begreachDependenciesStoreSimple\\#end,\\#begreachDoesNotDependOnCreatedness\\#end,\\#begreachDependenciesStore\\#end,\\#begreachDependenciesAnon\\#end,\\#begreachDependenciesAnonCoarse\\#end,\\#begonly_created_objects_are_reachable\\#end,\\#begreach_does_not_depend_on_fresh_locs\\#end,\\#begreach_does_not_depend_on_fresh_locs_EQ\\#end +[SMTSettings]SelectedTaclets=\\#begboolean_equal_2\\#end,\\#begboolean_not_equal_1\\#end,\\#begboolean_not_equal_2\\#end,\\#begtrue_to_not_false\\#end,\\#begfalse_to_not_true\\#end,\\#begboolean_true_commute\\#end,\\#begboolean_false_commute\\#end,\\#begapply_eq_boolean\\#end,\\#begapply_eq_boolean_2\\#end,\\#begapply_eq_boolean_rigid\\#end,\\#begapply_eq_boolean_rigid_2\\#end,\\#begexpandInByte\\#end,\\#begexpandInChar\\#end,\\#begexpandInShort\\#end,\\#begexpandInInt\\#end,\\#begexpandInLong\\#end,\\#begreplace_byte_MAX\\#end,\\#begreplace_byte_MIN\\#end,\\#begreplace_char_MAX\\#end,\\#begreplace_char_MIN\\#end,\\#begreplace_short_MAX\\#end,\\#begreplace_short_MIN\\#end,\\#begreplace_int_MAX\\#end,\\#begreplace_int_MIN\\#end,\\#begreplace_long_MAX\\#end,\\#begreplace_long_MIN\\#end,\\#begreplace_byte_RANGE\\#end,\\#begreplace_byte_HALFRANGE\\#end,\\#begreplace_short_RANGE\\#end,\\#begreplace_short_HALFRANGE\\#end,\\#begreplace_char_RANGE\\#end,\\#begreplace_int_RANGE\\#end,\\#begreplace_int_HALFRANGE\\#end,\\#begreplace_long_RANGE\\#end,\\#begreplace_long_HALFRANGE\\#end,\\#begtranslateJavaUnaryMinusInt\\#end,\\#begtranslateJavaUnaryMinusLong\\#end,\\#begtranslateJavaBitwiseNegation\\#end,\\#begtranslateJavaAddInt\\#end,\\#begtranslateJavaAddLong\\#end,\\#begtranslateJavaSubInt\\#end,\\#begtranslateJavaSubLong\\#end,\\#begtranslateJavaMulInt\\#end,\\#begtranslateJavaMulLong\\#end,\\#begtranslateJavaMod\\#end,\\#begtranslateJavaDivInt\\#end,\\#begtranslateJavaDivLong\\#end,\\#begtranslateJavaCastByte\\#end,\\#begtranslateJavaCastShort\\#end,\\#begtranslateJavaCastInt\\#end,\\#begtranslateJavaCastLong\\#end,\\#begtranslateJavaCastChar\\#end,\\#begtranslateJavaShiftRightInt\\#end,\\#begtranslateJavaShiftRightLong\\#end,\\#begtranslateJavaShiftLeftInt\\#end,\\#begtranslateJavaShiftLeftLong\\#end,\\#begtranslateJavaUnsignedShiftRightInt\\#end,\\#begtranslateJavaUnsignedShiftRightLong\\#end,\\#begtranslateJavaBitwiseOrInt\\#end,\\#begtranslateJavaBitwiseOrLong\\#end,\\#begtranslateJavaBitwiseAndInt\\#end,\\#begtranslateJavaBitwiseAndLong\\#end,\\#begtranslateJavaBitwiseXOrInt\\#end,\\#begtranslateJavaBitwiseXOrLong\\#end,\\#begcastDel\\#end,\\#begtypeEq\\#end,\\#begtypeEqDerived\\#end,\\#begtypeEqDerived2\\#end,\\#begtypeStatic\\#end,\\#begcloseType\\#end,\\#begcloseTypeSwitched\\#end,\\#begexact_instance_definition_int\\#end,\\#begexact_instance_definition_boolean\\#end,\\#begexact_instance_definition_null\\#end,\\#begexact_instance_for_interfaces_or_abstract_classes\\#end,\\#begclass_being_initialized_is_prepared\\#end,\\#beginitialized_class_is_prepared\\#end,\\#beginitialized_class_is_not_erroneous\\#end,\\#begclass_initialized_excludes_class_init_in_progress\\#end,\\#begclass_erroneous_excludes_class_in_init\\#end,\\#begerroneous_class_has_no_initialized_sub_class\\#end,\\#begsuperclasses_of_initialized_classes_are_prepared\\#end,\\#begelementOfEmpty\\#end,\\#begelementOfAllLocs\\#end,\\#begelementOfSingleton\\#end,\\#begelementOfUnion\\#end,\\#begelementOfIntersect\\#end,\\#begelementOfSetMinus\\#end,\\#begelementOfAllFields\\#end,\\#begelementOfAllObjects\\#end,\\#begelementOfArrayRange\\#end,\\#begelementOfFreshLocs\\#end,\\#begequalityToElementOf\\#end,\\#begsubsetToElementOf\\#end,\\#begdisjointToElementOf\\#end,\\#begcreatedInHeapToElementOf\\#end,\\#begelementOfEmptyEQ\\#end,\\#begelementOfAllLocsEQ\\#end,\\#begelementOfSingletonEQ\\#end,\\#begelementOfUnionEQ\\#end,\\#begelementOfIntersectEQ\\#end,\\#begelementOfSetMinusEQ\\#end,\\#begelementOfAllFieldsEQ\\#end,\\#begelementOfAllObjectsEQ\\#end,\\#begelementOfArrayRangeEQ\\#end,\\#begelementOfFreshLocsEQ\\#end,\\#begunionWithEmpty1\\#end,\\#begunionWithEmpty2\\#end,\\#begunionWithAllLocs1\\#end,\\#begunionWithAllLocs2\\#end,\\#begintersectWithEmpty1\\#end,\\#begintersectWithEmpty2\\#end,\\#begintersectWithAllLocs1\\#end,\\#begintersectWithAllLocs2\\#end,\\#begsetMinusWithEmpty1\\#end,\\#begsetMinusWithEmpty2\\#end,\\#begsetMinusWithAllLocs\\#end,\\#begsubsetWithEmpty\\#end,\\#begsubsetWithAllLocs\\#end,\\#begdisjointWithEmpty1\\#end,\\#begdisjointWithEmpty2\\#end,\\#begcreatedInHeapWithEmpty\\#end,\\#begcreatedInHeapWithSingleton\\#end,\\#begcreatedInHeapWithUnion\\#end,\\#begcreatedInHeapWithSetMinusFreshLocs\\#end,\\#begcreatedInHeapWithAllFields\\#end,\\#begcreatedInHeapWithArrayRange\\#end,\\#begreferencedObjectIsCreatedRight\\#end,\\#begreferencedObjectIsCreatedRightEQ\\#end,\\#begunionWithItself\\#end,\\#begintersectWithItself\\#end,\\#begsetMinusItself\\#end,\\#begsubsetOfItself\\#end,\\#begselectOfStore\\#end,\\#begselectOfCreate\\#end,\\#begselectOfAnon\\#end,\\#begselectOfMemset\\#end,\\#begonlyCreatedObjectsAreReferenced\\#end,\\#begonlyCreatedObjectsAreInLocSets\\#end,\\#begonlyCreatedObjectsAreInLocSetsEQ\\#end,\\#begarrayLengthNotNegative\\#end,\\#begwellFormedStoreObject\\#end,\\#begwellFormedStoreLocSet\\#end,\\#begwellFormedStorePrimitive\\#end,\\#begwellFormedCreate\\#end,\\#begwellFormedAnon\\#end,\\#begwellFormedMemsetObject\\#end,\\#begwellFormedMemsetLocSet\\#end,\\#begwellFormedMemsetPrimitive\\#end,\\#begselectOfStoreEQ\\#end,\\#begselectOfCreateEQ\\#end,\\#begselectOfAnonEQ\\#end,\\#begselectOfMemsetEQ\\#end,\\#begmemsetEmpty\\#end,\\#begselectCreatedOfAnonEQ\\#end,\\#begwellFormedStoreObjectEQ\\#end,\\#begwellFormedStoreLocSetEQ\\#end,\\#begwellFormedStorePrimitiveEQ\\#end,\\#begwellFormedAnonEQ\\#end,\\#begwellFormedMemsetObjectEQ\\#end,\\#begwellFormedMemsetPrimitiveEQ\\#end,\\#begaccDefinition\\#end,\\#begreachDefinition\\#end,\\#begreachZero\\#end,\\#begreachOne\\#end,\\#begreachNull\\#end,\\#begreachNull2\\#end,\\#begreachAddOne\\#end,\\#begreachAddOne2\\#end,\\#begreachUniquePathSameObject\\#end,\\#begreachDependenciesStoreSimple\\#end,\\#begreachDoesNotDependOnCreatedness\\#end,\\#begreachDependenciesStore\\#end,\\#begreachDependenciesAnon\\#end,\\#begreachDependenciesAnonCoarse\\#end,\\#begonly_created_objects_are_reachable\\#end,\\#begreach_does_not_depend_on_fresh_locs\\#end,\\#begreach_does_not_depend_on_fresh_locsEQ\\#end [StrategyProperty]METHOD_OPTIONS_KEY=METHOD_CONTRACT [StrategyProperty]USER_TACLETS_OPTIONS_KEY3=USER_TACLETS_OFF [StrategyProperty]SYMBOLIC_EXECUTION_ALIAS_CHECK_OPTIONS_KEY=SYMBOLIC_EXECUTION_ALIAS_CHECK_NEVER diff --git a/key.ui/examples/completionscopes/testCcatchBreakLabel.key b/key.ui/examples/completionscopes/testCcatchBreakLabel.key index da468cca731..95d07e3af0a 100644 --- a/key.ui/examples/completionscopes/testCcatchBreakLabel.key +++ b/key.ui/examples/completionscopes/testCcatchBreakLabel.key @@ -34,7 +34,7 @@ [Strategy]MaximumNumberOfAutomaticApplications=7000 [StrategyProperty]AUTO_INDUCTION_OPTIONS_KEY=AUTO_INDUCTION_OFF [StrategyProperty]STOPMODE_OPTIONS_KEY=STOPMODE_DEFAULT -[SMTSettings]SelectedTaclets=\\#begboolean_equal_2\\#end,\\#begboolean_not_equal_1\\#end,\\#begboolean_not_equal_2\\#end,\\#begtrue_to_not_false\\#end,\\#begfalse_to_not_true\\#end,\\#begboolean_true_commute\\#end,\\#begboolean_false_commute\\#end,\\#begapply_eq_boolean\\#end,\\#begapply_eq_boolean_2\\#end,\\#begapply_eq_boolean_rigid\\#end,\\#begapply_eq_boolean_rigid_2\\#end,\\#begexpandInByte\\#end,\\#begexpandInChar\\#end,\\#begexpandInShort\\#end,\\#begexpandInInt\\#end,\\#begexpandInLong\\#end,\\#begreplace_byte_MAX\\#end,\\#begreplace_byte_MIN\\#end,\\#begreplace_char_MAX\\#end,\\#begreplace_char_MIN\\#end,\\#begreplace_short_MAX\\#end,\\#begreplace_short_MIN\\#end,\\#begreplace_int_MAX\\#end,\\#begreplace_int_MIN\\#end,\\#begreplace_long_MAX\\#end,\\#begreplace_long_MIN\\#end,\\#begreplace_byte_RANGE\\#end,\\#begreplace_byte_HALFRANGE\\#end,\\#begreplace_short_RANGE\\#end,\\#begreplace_short_HALFRANGE\\#end,\\#begreplace_char_RANGE\\#end,\\#begreplace_int_RANGE\\#end,\\#begreplace_int_HALFRANGE\\#end,\\#begreplace_long_RANGE\\#end,\\#begreplace_long_HALFRANGE\\#end,\\#begtranslateJavaUnaryMinusInt\\#end,\\#begtranslateJavaUnaryMinusLong\\#end,\\#begtranslateJavaBitwiseNegation\\#end,\\#begtranslateJavaAddInt\\#end,\\#begtranslateJavaAddLong\\#end,\\#begtranslateJavaSubInt\\#end,\\#begtranslateJavaSubLong\\#end,\\#begtranslateJavaMulInt\\#end,\\#begtranslateJavaMulLong\\#end,\\#begtranslateJavaMod\\#end,\\#begtranslateJavaDivInt\\#end,\\#begtranslateJavaDivLong\\#end,\\#begtranslateJavaCastByte\\#end,\\#begtranslateJavaCastShort\\#end,\\#begtranslateJavaCastInt\\#end,\\#begtranslateJavaCastLong\\#end,\\#begtranslateJavaCastChar\\#end,\\#begtranslateJavaShiftRightInt\\#end,\\#begtranslateJavaShiftRightLong\\#end,\\#begtranslateJavaShiftLeftInt\\#end,\\#begtranslateJavaShiftLeftLong\\#end,\\#begtranslateJavaUnsignedShiftRightInt\\#end,\\#begtranslateJavaUnsignedShiftRightLong\\#end,\\#begtranslateJavaBitwiseOrInt\\#end,\\#begtranslateJavaBitwiseOrLong\\#end,\\#begtranslateJavaBitwiseAndInt\\#end,\\#begtranslateJavaBitwiseAndLong\\#end,\\#begtranslateJavaBitwiseXOrInt\\#end,\\#begtranslateJavaBitwiseXOrLong\\#end,\\#begcastDel\\#end,\\#begtypeEq\\#end,\\#begtypeEqDerived\\#end,\\#begtypeEqDerived2\\#end,\\#begtypeStatic\\#end,\\#begcloseType\\#end,\\#begcloseTypeSwitched\\#end,\\#begexact_instance_definition_int\\#end,\\#begexact_instance_definition_boolean\\#end,\\#begexact_instance_definition_null\\#end,\\#begexact_instance_for_interfaces_or_abstract_classes\\#end,\\#begclass_being_initialized_is_prepared\\#end,\\#beginitialized_class_is_prepared\\#end,\\#beginitialized_class_is_not_erroneous\\#end,\\#begclass_initialized_excludes_class_init_in_progress\\#end,\\#begclass_erroneous_excludes_class_in_init\\#end,\\#begerroneous_class_has_no_initialized_sub_class\\#end,\\#begsuperclasses_of_initialized_classes_are_prepared\\#end,\\#begelementOfEmpty\\#end,\\#begelementOfAllLocs\\#end,\\#begelementOfSingleton\\#end,\\#begelementOfUnion\\#end,\\#begelementOfIntersect\\#end,\\#begelementOfSetMinus\\#end,\\#begelementOfAllFields\\#end,\\#begelementOfAllObjects\\#end,\\#begelementOfArrayRange\\#end,\\#begelementOfFreshLocs\\#end,\\#begequalityToElementOf\\#end,\\#begsubsetToElementOf\\#end,\\#begdisjointToElementOf\\#end,\\#begcreatedInHeapToElementOf\\#end,\\#begelementOfEmptyEQ\\#end,\\#begelementOfAllLocsEQ\\#end,\\#begelementOfSingletonEQ\\#end,\\#begelementOfUnionEQ\\#end,\\#begelementOfIntersectEQ\\#end,\\#begelementOfSetMinusEQ\\#end,\\#begelementOfAllFieldsEQ\\#end,\\#begelementOfAllObjectsEQ\\#end,\\#begelementOfArrayRangeEQ\\#end,\\#begelementOfFreshLocsEQ\\#end,\\#begunionWithEmpty1\\#end,\\#begunionWithEmpty2\\#end,\\#begunionWithAllLocs1\\#end,\\#begunionWithAllLocs2\\#end,\\#begintersectWithEmpty1\\#end,\\#begintersectWithEmpty2\\#end,\\#begintersectWithAllLocs1\\#end,\\#begintersectWithAllLocs2\\#end,\\#begsetMinusWithEmpty1\\#end,\\#begsetMinusWithEmpty2\\#end,\\#begsetMinusWithAllLocs\\#end,\\#begsubsetWithEmpty\\#end,\\#begsubsetWithAllLocs\\#end,\\#begdisjointWithEmpty1\\#end,\\#begdisjointWithEmpty2\\#end,\\#begcreatedInHeapWithEmpty\\#end,\\#begcreatedInHeapWithSingleton\\#end,\\#begcreatedInHeapWithUnion\\#end,\\#begcreatedInHeapWithSetMinusFreshLocs\\#end,\\#begcreatedInHeapWithAllFields\\#end,\\#begcreatedInHeapWithArrayRange\\#end,\\#begreferencedObjectIsCreatedRight\\#end,\\#begreferencedObjectIsCreatedRightEQ\\#end,\\#begunionWithItself\\#end,\\#begintersectWithItself\\#end,\\#begsetMinusItself\\#end,\\#begsubsetOfItself\\#end,\\#begselectOfStore\\#end,\\#begselectOfCreate\\#end,\\#begselectOfAnon\\#end,\\#begselectOfMemset\\#end,\\#begonlyCreatedObjectsAreReferenced\\#end,\\#begonlyCreatedObjectsAreInLocSets\\#end,\\#begonlyCreatedObjectsAreInLocSetsEQ\\#end,\\#begarrayLengthNotNegative\\#end,\\#begwellFormedStoreObject\\#end,\\#begwellFormedStoreLocSet\\#end,\\#begwellFormedStorePrimitive\\#end,\\#begwellFormedCreate\\#end,\\#begwellFormedAnon\\#end,\\#begwellFormedMemsetObject\\#end,\\#begwellFormedMemsetLocSet\\#end,\\#begwellFormedMemsetPrimitive\\#end,\\#begselectOfStoreEQ\\#end,\\#begselectOfCreateEQ\\#end,\\#begselectOfAnonEQ\\#end,\\#begselectOfMemsetEQ\\#end,\\#begmemsetEmpty\\#end,\\#begselectCreatedOfAnonEQ\\#end,\\#begwellFormedStoreObjectEQ\\#end,\\#begwellFormedStoreLocSetEQ\\#end,\\#begwellFormedStorePrimitiveEQ\\#end,\\#begwellFormedAnonEQ\\#end,\\#begwellFormedMemsetObjectEQ\\#end,\\#begwellFormedMemsetPrimitiveEQ\\#end,\\#begaccDefinition\\#end,\\#begreachDefinition\\#end,\\#begreachZero\\#end,\\#begreachOne\\#end,\\#begreachNull\\#end,\\#begreachNull2\\#end,\\#begreachAddOne\\#end,\\#begreachAddOne2\\#end,\\#begreachUniquePathSameObject\\#end,\\#begreachDependenciesStoreSimple\\#end,\\#begreachDoesNotDependOnCreatedness\\#end,\\#begreachDependenciesStore\\#end,\\#begreachDependenciesAnon\\#end,\\#begreachDependenciesAnonCoarse\\#end,\\#begonly_created_objects_are_reachable\\#end,\\#begreach_does_not_depend_on_fresh_locs\\#end,\\#begreach_does_not_depend_on_fresh_locs_EQ\\#end +[SMTSettings]SelectedTaclets=\\#begboolean_equal_2\\#end,\\#begboolean_not_equal_1\\#end,\\#begboolean_not_equal_2\\#end,\\#begtrue_to_not_false\\#end,\\#begfalse_to_not_true\\#end,\\#begboolean_true_commute\\#end,\\#begboolean_false_commute\\#end,\\#begapply_eq_boolean\\#end,\\#begapply_eq_boolean_2\\#end,\\#begapply_eq_boolean_rigid\\#end,\\#begapply_eq_boolean_rigid_2\\#end,\\#begexpandInByte\\#end,\\#begexpandInChar\\#end,\\#begexpandInShort\\#end,\\#begexpandInInt\\#end,\\#begexpandInLong\\#end,\\#begreplace_byte_MAX\\#end,\\#begreplace_byte_MIN\\#end,\\#begreplace_char_MAX\\#end,\\#begreplace_char_MIN\\#end,\\#begreplace_short_MAX\\#end,\\#begreplace_short_MIN\\#end,\\#begreplace_int_MAX\\#end,\\#begreplace_int_MIN\\#end,\\#begreplace_long_MAX\\#end,\\#begreplace_long_MIN\\#end,\\#begreplace_byte_RANGE\\#end,\\#begreplace_byte_HALFRANGE\\#end,\\#begreplace_short_RANGE\\#end,\\#begreplace_short_HALFRANGE\\#end,\\#begreplace_char_RANGE\\#end,\\#begreplace_int_RANGE\\#end,\\#begreplace_int_HALFRANGE\\#end,\\#begreplace_long_RANGE\\#end,\\#begreplace_long_HALFRANGE\\#end,\\#begtranslateJavaUnaryMinusInt\\#end,\\#begtranslateJavaUnaryMinusLong\\#end,\\#begtranslateJavaBitwiseNegation\\#end,\\#begtranslateJavaAddInt\\#end,\\#begtranslateJavaAddLong\\#end,\\#begtranslateJavaSubInt\\#end,\\#begtranslateJavaSubLong\\#end,\\#begtranslateJavaMulInt\\#end,\\#begtranslateJavaMulLong\\#end,\\#begtranslateJavaMod\\#end,\\#begtranslateJavaDivInt\\#end,\\#begtranslateJavaDivLong\\#end,\\#begtranslateJavaCastByte\\#end,\\#begtranslateJavaCastShort\\#end,\\#begtranslateJavaCastInt\\#end,\\#begtranslateJavaCastLong\\#end,\\#begtranslateJavaCastChar\\#end,\\#begtranslateJavaShiftRightInt\\#end,\\#begtranslateJavaShiftRightLong\\#end,\\#begtranslateJavaShiftLeftInt\\#end,\\#begtranslateJavaShiftLeftLong\\#end,\\#begtranslateJavaUnsignedShiftRightInt\\#end,\\#begtranslateJavaUnsignedShiftRightLong\\#end,\\#begtranslateJavaBitwiseOrInt\\#end,\\#begtranslateJavaBitwiseOrLong\\#end,\\#begtranslateJavaBitwiseAndInt\\#end,\\#begtranslateJavaBitwiseAndLong\\#end,\\#begtranslateJavaBitwiseXOrInt\\#end,\\#begtranslateJavaBitwiseXOrLong\\#end,\\#begcastDel\\#end,\\#begtypeEq\\#end,\\#begtypeEqDerived\\#end,\\#begtypeEqDerived2\\#end,\\#begtypeStatic\\#end,\\#begcloseType\\#end,\\#begcloseTypeSwitched\\#end,\\#begexact_instance_definition_int\\#end,\\#begexact_instance_definition_boolean\\#end,\\#begexact_instance_definition_null\\#end,\\#begexact_instance_for_interfaces_or_abstract_classes\\#end,\\#begclass_being_initialized_is_prepared\\#end,\\#beginitialized_class_is_prepared\\#end,\\#beginitialized_class_is_not_erroneous\\#end,\\#begclass_initialized_excludes_class_init_in_progress\\#end,\\#begclass_erroneous_excludes_class_in_init\\#end,\\#begerroneous_class_has_no_initialized_sub_class\\#end,\\#begsuperclasses_of_initialized_classes_are_prepared\\#end,\\#begelementOfEmpty\\#end,\\#begelementOfAllLocs\\#end,\\#begelementOfSingleton\\#end,\\#begelementOfUnion\\#end,\\#begelementOfIntersect\\#end,\\#begelementOfSetMinus\\#end,\\#begelementOfAllFields\\#end,\\#begelementOfAllObjects\\#end,\\#begelementOfArrayRange\\#end,\\#begelementOfFreshLocs\\#end,\\#begequalityToElementOf\\#end,\\#begsubsetToElementOf\\#end,\\#begdisjointToElementOf\\#end,\\#begcreatedInHeapToElementOf\\#end,\\#begelementOfEmptyEQ\\#end,\\#begelementOfAllLocsEQ\\#end,\\#begelementOfSingletonEQ\\#end,\\#begelementOfUnionEQ\\#end,\\#begelementOfIntersectEQ\\#end,\\#begelementOfSetMinusEQ\\#end,\\#begelementOfAllFieldsEQ\\#end,\\#begelementOfAllObjectsEQ\\#end,\\#begelementOfArrayRangeEQ\\#end,\\#begelementOfFreshLocsEQ\\#end,\\#begunionWithEmpty1\\#end,\\#begunionWithEmpty2\\#end,\\#begunionWithAllLocs1\\#end,\\#begunionWithAllLocs2\\#end,\\#begintersectWithEmpty1\\#end,\\#begintersectWithEmpty2\\#end,\\#begintersectWithAllLocs1\\#end,\\#begintersectWithAllLocs2\\#end,\\#begsetMinusWithEmpty1\\#end,\\#begsetMinusWithEmpty2\\#end,\\#begsetMinusWithAllLocs\\#end,\\#begsubsetWithEmpty\\#end,\\#begsubsetWithAllLocs\\#end,\\#begdisjointWithEmpty1\\#end,\\#begdisjointWithEmpty2\\#end,\\#begcreatedInHeapWithEmpty\\#end,\\#begcreatedInHeapWithSingleton\\#end,\\#begcreatedInHeapWithUnion\\#end,\\#begcreatedInHeapWithSetMinusFreshLocs\\#end,\\#begcreatedInHeapWithAllFields\\#end,\\#begcreatedInHeapWithArrayRange\\#end,\\#begreferencedObjectIsCreatedRight\\#end,\\#begreferencedObjectIsCreatedRightEQ\\#end,\\#begunionWithItself\\#end,\\#begintersectWithItself\\#end,\\#begsetMinusItself\\#end,\\#begsubsetOfItself\\#end,\\#begselectOfStore\\#end,\\#begselectOfCreate\\#end,\\#begselectOfAnon\\#end,\\#begselectOfMemset\\#end,\\#begonlyCreatedObjectsAreReferenced\\#end,\\#begonlyCreatedObjectsAreInLocSets\\#end,\\#begonlyCreatedObjectsAreInLocSetsEQ\\#end,\\#begarrayLengthNotNegative\\#end,\\#begwellFormedStoreObject\\#end,\\#begwellFormedStoreLocSet\\#end,\\#begwellFormedStorePrimitive\\#end,\\#begwellFormedCreate\\#end,\\#begwellFormedAnon\\#end,\\#begwellFormedMemsetObject\\#end,\\#begwellFormedMemsetLocSet\\#end,\\#begwellFormedMemsetPrimitive\\#end,\\#begselectOfStoreEQ\\#end,\\#begselectOfCreateEQ\\#end,\\#begselectOfAnonEQ\\#end,\\#begselectOfMemsetEQ\\#end,\\#begmemsetEmpty\\#end,\\#begselectCreatedOfAnonEQ\\#end,\\#begwellFormedStoreObjectEQ\\#end,\\#begwellFormedStoreLocSetEQ\\#end,\\#begwellFormedStorePrimitiveEQ\\#end,\\#begwellFormedAnonEQ\\#end,\\#begwellFormedMemsetObjectEQ\\#end,\\#begwellFormedMemsetPrimitiveEQ\\#end,\\#begaccDefinition\\#end,\\#begreachDefinition\\#end,\\#begreachZero\\#end,\\#begreachOne\\#end,\\#begreachNull\\#end,\\#begreachNull2\\#end,\\#begreachAddOne\\#end,\\#begreachAddOne2\\#end,\\#begreachUniquePathSameObject\\#end,\\#begreachDependenciesStoreSimple\\#end,\\#begreachDoesNotDependOnCreatedness\\#end,\\#begreachDependenciesStore\\#end,\\#begreachDependenciesAnon\\#end,\\#begreachDependenciesAnonCoarse\\#end,\\#begonly_created_objects_are_reachable\\#end,\\#begreach_does_not_depend_on_fresh_locs\\#end,\\#begreach_does_not_depend_on_fresh_locsEQ\\#end [StrategyProperty]NON_LIN_ARITH_OPTIONS_KEY=NON_LIN_ARITH_DEF_OPS [StrategyProperty]LOOP_OPTIONS_KEY=LOOP_NONE [SMTSettings]explicitTypeHierarchy=false diff --git a/key.ui/examples/completionscopes/testCcatchBreakLabelNonmatchingNested.key b/key.ui/examples/completionscopes/testCcatchBreakLabelNonmatchingNested.key index 169f127735f..687d5a305f8 100644 --- a/key.ui/examples/completionscopes/testCcatchBreakLabelNonmatchingNested.key +++ b/key.ui/examples/completionscopes/testCcatchBreakLabelNonmatchingNested.key @@ -34,7 +34,7 @@ [Strategy]MaximumNumberOfAutomaticApplications=7000 [StrategyProperty]AUTO_INDUCTION_OPTIONS_KEY=AUTO_INDUCTION_OFF [StrategyProperty]STOPMODE_OPTIONS_KEY=STOPMODE_DEFAULT -[SMTSettings]SelectedTaclets=\\#begboolean_equal_2\\#end,\\#begboolean_not_equal_1\\#end,\\#begboolean_not_equal_2\\#end,\\#begtrue_to_not_false\\#end,\\#begfalse_to_not_true\\#end,\\#begboolean_true_commute\\#end,\\#begboolean_false_commute\\#end,\\#begapply_eq_boolean\\#end,\\#begapply_eq_boolean_2\\#end,\\#begapply_eq_boolean_rigid\\#end,\\#begapply_eq_boolean_rigid_2\\#end,\\#begexpandInByte\\#end,\\#begexpandInChar\\#end,\\#begexpandInShort\\#end,\\#begexpandInInt\\#end,\\#begexpandInLong\\#end,\\#begreplace_byte_MAX\\#end,\\#begreplace_byte_MIN\\#end,\\#begreplace_char_MAX\\#end,\\#begreplace_char_MIN\\#end,\\#begreplace_short_MAX\\#end,\\#begreplace_short_MIN\\#end,\\#begreplace_int_MAX\\#end,\\#begreplace_int_MIN\\#end,\\#begreplace_long_MAX\\#end,\\#begreplace_long_MIN\\#end,\\#begreplace_byte_RANGE\\#end,\\#begreplace_byte_HALFRANGE\\#end,\\#begreplace_short_RANGE\\#end,\\#begreplace_short_HALFRANGE\\#end,\\#begreplace_char_RANGE\\#end,\\#begreplace_int_RANGE\\#end,\\#begreplace_int_HALFRANGE\\#end,\\#begreplace_long_RANGE\\#end,\\#begreplace_long_HALFRANGE\\#end,\\#begtranslateJavaUnaryMinusInt\\#end,\\#begtranslateJavaUnaryMinusLong\\#end,\\#begtranslateJavaBitwiseNegation\\#end,\\#begtranslateJavaAddInt\\#end,\\#begtranslateJavaAddLong\\#end,\\#begtranslateJavaSubInt\\#end,\\#begtranslateJavaSubLong\\#end,\\#begtranslateJavaMulInt\\#end,\\#begtranslateJavaMulLong\\#end,\\#begtranslateJavaMod\\#end,\\#begtranslateJavaDivInt\\#end,\\#begtranslateJavaDivLong\\#end,\\#begtranslateJavaCastByte\\#end,\\#begtranslateJavaCastShort\\#end,\\#begtranslateJavaCastInt\\#end,\\#begtranslateJavaCastLong\\#end,\\#begtranslateJavaCastChar\\#end,\\#begtranslateJavaShiftRightInt\\#end,\\#begtranslateJavaShiftRightLong\\#end,\\#begtranslateJavaShiftLeftInt\\#end,\\#begtranslateJavaShiftLeftLong\\#end,\\#begtranslateJavaUnsignedShiftRightInt\\#end,\\#begtranslateJavaUnsignedShiftRightLong\\#end,\\#begtranslateJavaBitwiseOrInt\\#end,\\#begtranslateJavaBitwiseOrLong\\#end,\\#begtranslateJavaBitwiseAndInt\\#end,\\#begtranslateJavaBitwiseAndLong\\#end,\\#begtranslateJavaBitwiseXOrInt\\#end,\\#begtranslateJavaBitwiseXOrLong\\#end,\\#begcastDel\\#end,\\#begtypeEq\\#end,\\#begtypeEqDerived\\#end,\\#begtypeEqDerived2\\#end,\\#begtypeStatic\\#end,\\#begcloseType\\#end,\\#begcloseTypeSwitched\\#end,\\#begexact_instance_definition_int\\#end,\\#begexact_instance_definition_boolean\\#end,\\#begexact_instance_definition_null\\#end,\\#begexact_instance_for_interfaces_or_abstract_classes\\#end,\\#begclass_being_initialized_is_prepared\\#end,\\#beginitialized_class_is_prepared\\#end,\\#beginitialized_class_is_not_erroneous\\#end,\\#begclass_initialized_excludes_class_init_in_progress\\#end,\\#begclass_erroneous_excludes_class_in_init\\#end,\\#begerroneous_class_has_no_initialized_sub_class\\#end,\\#begsuperclasses_of_initialized_classes_are_prepared\\#end,\\#begelementOfEmpty\\#end,\\#begelementOfAllLocs\\#end,\\#begelementOfSingleton\\#end,\\#begelementOfUnion\\#end,\\#begelementOfIntersect\\#end,\\#begelementOfSetMinus\\#end,\\#begelementOfAllFields\\#end,\\#begelementOfAllObjects\\#end,\\#begelementOfArrayRange\\#end,\\#begelementOfFreshLocs\\#end,\\#begequalityToElementOf\\#end,\\#begsubsetToElementOf\\#end,\\#begdisjointToElementOf\\#end,\\#begcreatedInHeapToElementOf\\#end,\\#begelementOfEmptyEQ\\#end,\\#begelementOfAllLocsEQ\\#end,\\#begelementOfSingletonEQ\\#end,\\#begelementOfUnionEQ\\#end,\\#begelementOfIntersectEQ\\#end,\\#begelementOfSetMinusEQ\\#end,\\#begelementOfAllFieldsEQ\\#end,\\#begelementOfAllObjectsEQ\\#end,\\#begelementOfArrayRangeEQ\\#end,\\#begelementOfFreshLocsEQ\\#end,\\#begunionWithEmpty1\\#end,\\#begunionWithEmpty2\\#end,\\#begunionWithAllLocs1\\#end,\\#begunionWithAllLocs2\\#end,\\#begintersectWithEmpty1\\#end,\\#begintersectWithEmpty2\\#end,\\#begintersectWithAllLocs1\\#end,\\#begintersectWithAllLocs2\\#end,\\#begsetMinusWithEmpty1\\#end,\\#begsetMinusWithEmpty2\\#end,\\#begsetMinusWithAllLocs\\#end,\\#begsubsetWithEmpty\\#end,\\#begsubsetWithAllLocs\\#end,\\#begdisjointWithEmpty1\\#end,\\#begdisjointWithEmpty2\\#end,\\#begcreatedInHeapWithEmpty\\#end,\\#begcreatedInHeapWithSingleton\\#end,\\#begcreatedInHeapWithUnion\\#end,\\#begcreatedInHeapWithSetMinusFreshLocs\\#end,\\#begcreatedInHeapWithAllFields\\#end,\\#begcreatedInHeapWithArrayRange\\#end,\\#begreferencedObjectIsCreatedRight\\#end,\\#begreferencedObjectIsCreatedRightEQ\\#end,\\#begunionWithItself\\#end,\\#begintersectWithItself\\#end,\\#begsetMinusItself\\#end,\\#begsubsetOfItself\\#end,\\#begselectOfStore\\#end,\\#begselectOfCreate\\#end,\\#begselectOfAnon\\#end,\\#begselectOfMemset\\#end,\\#begonlyCreatedObjectsAreReferenced\\#end,\\#begonlyCreatedObjectsAreInLocSets\\#end,\\#begonlyCreatedObjectsAreInLocSetsEQ\\#end,\\#begarrayLengthNotNegative\\#end,\\#begwellFormedStoreObject\\#end,\\#begwellFormedStoreLocSet\\#end,\\#begwellFormedStorePrimitive\\#end,\\#begwellFormedCreate\\#end,\\#begwellFormedAnon\\#end,\\#begwellFormedMemsetObject\\#end,\\#begwellFormedMemsetLocSet\\#end,\\#begwellFormedMemsetPrimitive\\#end,\\#begselectOfStoreEQ\\#end,\\#begselectOfCreateEQ\\#end,\\#begselectOfAnonEQ\\#end,\\#begselectOfMemsetEQ\\#end,\\#begmemsetEmpty\\#end,\\#begselectCreatedOfAnonEQ\\#end,\\#begwellFormedStoreObjectEQ\\#end,\\#begwellFormedStoreLocSetEQ\\#end,\\#begwellFormedStorePrimitiveEQ\\#end,\\#begwellFormedAnonEQ\\#end,\\#begwellFormedMemsetObjectEQ\\#end,\\#begwellFormedMemsetPrimitiveEQ\\#end,\\#begaccDefinition\\#end,\\#begreachDefinition\\#end,\\#begreachZero\\#end,\\#begreachOne\\#end,\\#begreachNull\\#end,\\#begreachNull2\\#end,\\#begreachAddOne\\#end,\\#begreachAddOne2\\#end,\\#begreachUniquePathSameObject\\#end,\\#begreachDependenciesStoreSimple\\#end,\\#begreachDoesNotDependOnCreatedness\\#end,\\#begreachDependenciesStore\\#end,\\#begreachDependenciesAnon\\#end,\\#begreachDependenciesAnonCoarse\\#end,\\#begonly_created_objects_are_reachable\\#end,\\#begreach_does_not_depend_on_fresh_locs\\#end,\\#begreach_does_not_depend_on_fresh_locs_EQ\\#end +[SMTSettings]SelectedTaclets=\\#begboolean_equal_2\\#end,\\#begboolean_not_equal_1\\#end,\\#begboolean_not_equal_2\\#end,\\#begtrue_to_not_false\\#end,\\#begfalse_to_not_true\\#end,\\#begboolean_true_commute\\#end,\\#begboolean_false_commute\\#end,\\#begapply_eq_boolean\\#end,\\#begapply_eq_boolean_2\\#end,\\#begapply_eq_boolean_rigid\\#end,\\#begapply_eq_boolean_rigid_2\\#end,\\#begexpandInByte\\#end,\\#begexpandInChar\\#end,\\#begexpandInShort\\#end,\\#begexpandInInt\\#end,\\#begexpandInLong\\#end,\\#begreplace_byte_MAX\\#end,\\#begreplace_byte_MIN\\#end,\\#begreplace_char_MAX\\#end,\\#begreplace_char_MIN\\#end,\\#begreplace_short_MAX\\#end,\\#begreplace_short_MIN\\#end,\\#begreplace_int_MAX\\#end,\\#begreplace_int_MIN\\#end,\\#begreplace_long_MAX\\#end,\\#begreplace_long_MIN\\#end,\\#begreplace_byte_RANGE\\#end,\\#begreplace_byte_HALFRANGE\\#end,\\#begreplace_short_RANGE\\#end,\\#begreplace_short_HALFRANGE\\#end,\\#begreplace_char_RANGE\\#end,\\#begreplace_int_RANGE\\#end,\\#begreplace_int_HALFRANGE\\#end,\\#begreplace_long_RANGE\\#end,\\#begreplace_long_HALFRANGE\\#end,\\#begtranslateJavaUnaryMinusInt\\#end,\\#begtranslateJavaUnaryMinusLong\\#end,\\#begtranslateJavaBitwiseNegation\\#end,\\#begtranslateJavaAddInt\\#end,\\#begtranslateJavaAddLong\\#end,\\#begtranslateJavaSubInt\\#end,\\#begtranslateJavaSubLong\\#end,\\#begtranslateJavaMulInt\\#end,\\#begtranslateJavaMulLong\\#end,\\#begtranslateJavaMod\\#end,\\#begtranslateJavaDivInt\\#end,\\#begtranslateJavaDivLong\\#end,\\#begtranslateJavaCastByte\\#end,\\#begtranslateJavaCastShort\\#end,\\#begtranslateJavaCastInt\\#end,\\#begtranslateJavaCastLong\\#end,\\#begtranslateJavaCastChar\\#end,\\#begtranslateJavaShiftRightInt\\#end,\\#begtranslateJavaShiftRightLong\\#end,\\#begtranslateJavaShiftLeftInt\\#end,\\#begtranslateJavaShiftLeftLong\\#end,\\#begtranslateJavaUnsignedShiftRightInt\\#end,\\#begtranslateJavaUnsignedShiftRightLong\\#end,\\#begtranslateJavaBitwiseOrInt\\#end,\\#begtranslateJavaBitwiseOrLong\\#end,\\#begtranslateJavaBitwiseAndInt\\#end,\\#begtranslateJavaBitwiseAndLong\\#end,\\#begtranslateJavaBitwiseXOrInt\\#end,\\#begtranslateJavaBitwiseXOrLong\\#end,\\#begcastDel\\#end,\\#begtypeEq\\#end,\\#begtypeEqDerived\\#end,\\#begtypeEqDerived2\\#end,\\#begtypeStatic\\#end,\\#begcloseType\\#end,\\#begcloseTypeSwitched\\#end,\\#begexact_instance_definition_int\\#end,\\#begexact_instance_definition_boolean\\#end,\\#begexact_instance_definition_null\\#end,\\#begexact_instance_for_interfaces_or_abstract_classes\\#end,\\#begclass_being_initialized_is_prepared\\#end,\\#beginitialized_class_is_prepared\\#end,\\#beginitialized_class_is_not_erroneous\\#end,\\#begclass_initialized_excludes_class_init_in_progress\\#end,\\#begclass_erroneous_excludes_class_in_init\\#end,\\#begerroneous_class_has_no_initialized_sub_class\\#end,\\#begsuperclasses_of_initialized_classes_are_prepared\\#end,\\#begelementOfEmpty\\#end,\\#begelementOfAllLocs\\#end,\\#begelementOfSingleton\\#end,\\#begelementOfUnion\\#end,\\#begelementOfIntersect\\#end,\\#begelementOfSetMinus\\#end,\\#begelementOfAllFields\\#end,\\#begelementOfAllObjects\\#end,\\#begelementOfArrayRange\\#end,\\#begelementOfFreshLocs\\#end,\\#begequalityToElementOf\\#end,\\#begsubsetToElementOf\\#end,\\#begdisjointToElementOf\\#end,\\#begcreatedInHeapToElementOf\\#end,\\#begelementOfEmptyEQ\\#end,\\#begelementOfAllLocsEQ\\#end,\\#begelementOfSingletonEQ\\#end,\\#begelementOfUnionEQ\\#end,\\#begelementOfIntersectEQ\\#end,\\#begelementOfSetMinusEQ\\#end,\\#begelementOfAllFieldsEQ\\#end,\\#begelementOfAllObjectsEQ\\#end,\\#begelementOfArrayRangeEQ\\#end,\\#begelementOfFreshLocsEQ\\#end,\\#begunionWithEmpty1\\#end,\\#begunionWithEmpty2\\#end,\\#begunionWithAllLocs1\\#end,\\#begunionWithAllLocs2\\#end,\\#begintersectWithEmpty1\\#end,\\#begintersectWithEmpty2\\#end,\\#begintersectWithAllLocs1\\#end,\\#begintersectWithAllLocs2\\#end,\\#begsetMinusWithEmpty1\\#end,\\#begsetMinusWithEmpty2\\#end,\\#begsetMinusWithAllLocs\\#end,\\#begsubsetWithEmpty\\#end,\\#begsubsetWithAllLocs\\#end,\\#begdisjointWithEmpty1\\#end,\\#begdisjointWithEmpty2\\#end,\\#begcreatedInHeapWithEmpty\\#end,\\#begcreatedInHeapWithSingleton\\#end,\\#begcreatedInHeapWithUnion\\#end,\\#begcreatedInHeapWithSetMinusFreshLocs\\#end,\\#begcreatedInHeapWithAllFields\\#end,\\#begcreatedInHeapWithArrayRange\\#end,\\#begreferencedObjectIsCreatedRight\\#end,\\#begreferencedObjectIsCreatedRightEQ\\#end,\\#begunionWithItself\\#end,\\#begintersectWithItself\\#end,\\#begsetMinusItself\\#end,\\#begsubsetOfItself\\#end,\\#begselectOfStore\\#end,\\#begselectOfCreate\\#end,\\#begselectOfAnon\\#end,\\#begselectOfMemset\\#end,\\#begonlyCreatedObjectsAreReferenced\\#end,\\#begonlyCreatedObjectsAreInLocSets\\#end,\\#begonlyCreatedObjectsAreInLocSetsEQ\\#end,\\#begarrayLengthNotNegative\\#end,\\#begwellFormedStoreObject\\#end,\\#begwellFormedStoreLocSet\\#end,\\#begwellFormedStorePrimitive\\#end,\\#begwellFormedCreate\\#end,\\#begwellFormedAnon\\#end,\\#begwellFormedMemsetObject\\#end,\\#begwellFormedMemsetLocSet\\#end,\\#begwellFormedMemsetPrimitive\\#end,\\#begselectOfStoreEQ\\#end,\\#begselectOfCreateEQ\\#end,\\#begselectOfAnonEQ\\#end,\\#begselectOfMemsetEQ\\#end,\\#begmemsetEmpty\\#end,\\#begselectCreatedOfAnonEQ\\#end,\\#begwellFormedStoreObjectEQ\\#end,\\#begwellFormedStoreLocSetEQ\\#end,\\#begwellFormedStorePrimitiveEQ\\#end,\\#begwellFormedAnonEQ\\#end,\\#begwellFormedMemsetObjectEQ\\#end,\\#begwellFormedMemsetPrimitiveEQ\\#end,\\#begaccDefinition\\#end,\\#begreachDefinition\\#end,\\#begreachZero\\#end,\\#begreachOne\\#end,\\#begreachNull\\#end,\\#begreachNull2\\#end,\\#begreachAddOne\\#end,\\#begreachAddOne2\\#end,\\#begreachUniquePathSameObject\\#end,\\#begreachDependenciesStoreSimple\\#end,\\#begreachDoesNotDependOnCreatedness\\#end,\\#begreachDependenciesStore\\#end,\\#begreachDependenciesAnon\\#end,\\#begreachDependenciesAnonCoarse\\#end,\\#begonly_created_objects_are_reachable\\#end,\\#begreach_does_not_depend_on_fresh_locs\\#end,\\#begreach_does_not_depend_on_fresh_locsEQ\\#end [StrategyProperty]NON_LIN_ARITH_OPTIONS_KEY=NON_LIN_ARITH_DEF_OPS [StrategyProperty]LOOP_OPTIONS_KEY=LOOP_NONE [SMTSettings]explicitTypeHierarchy=false diff --git a/key.ui/examples/completionscopes/testCcatchBreakLabelWildcard.key b/key.ui/examples/completionscopes/testCcatchBreakLabelWildcard.key index cd207555a0a..525d4634e3c 100644 --- a/key.ui/examples/completionscopes/testCcatchBreakLabelWildcard.key +++ b/key.ui/examples/completionscopes/testCcatchBreakLabelWildcard.key @@ -34,7 +34,7 @@ [Strategy]MaximumNumberOfAutomaticApplications=7000 [StrategyProperty]AUTO_INDUCTION_OPTIONS_KEY=AUTO_INDUCTION_OFF [StrategyProperty]STOPMODE_OPTIONS_KEY=STOPMODE_DEFAULT -[SMTSettings]SelectedTaclets=\\#begboolean_equal_2\\#end,\\#begboolean_not_equal_1\\#end,\\#begboolean_not_equal_2\\#end,\\#begtrue_to_not_false\\#end,\\#begfalse_to_not_true\\#end,\\#begboolean_true_commute\\#end,\\#begboolean_false_commute\\#end,\\#begapply_eq_boolean\\#end,\\#begapply_eq_boolean_2\\#end,\\#begapply_eq_boolean_rigid\\#end,\\#begapply_eq_boolean_rigid_2\\#end,\\#begexpandInByte\\#end,\\#begexpandInChar\\#end,\\#begexpandInShort\\#end,\\#begexpandInInt\\#end,\\#begexpandInLong\\#end,\\#begreplace_byte_MAX\\#end,\\#begreplace_byte_MIN\\#end,\\#begreplace_char_MAX\\#end,\\#begreplace_char_MIN\\#end,\\#begreplace_short_MAX\\#end,\\#begreplace_short_MIN\\#end,\\#begreplace_int_MAX\\#end,\\#begreplace_int_MIN\\#end,\\#begreplace_long_MAX\\#end,\\#begreplace_long_MIN\\#end,\\#begreplace_byte_RANGE\\#end,\\#begreplace_byte_HALFRANGE\\#end,\\#begreplace_short_RANGE\\#end,\\#begreplace_short_HALFRANGE\\#end,\\#begreplace_char_RANGE\\#end,\\#begreplace_int_RANGE\\#end,\\#begreplace_int_HALFRANGE\\#end,\\#begreplace_long_RANGE\\#end,\\#begreplace_long_HALFRANGE\\#end,\\#begtranslateJavaUnaryMinusInt\\#end,\\#begtranslateJavaUnaryMinusLong\\#end,\\#begtranslateJavaBitwiseNegation\\#end,\\#begtranslateJavaAddInt\\#end,\\#begtranslateJavaAddLong\\#end,\\#begtranslateJavaSubInt\\#end,\\#begtranslateJavaSubLong\\#end,\\#begtranslateJavaMulInt\\#end,\\#begtranslateJavaMulLong\\#end,\\#begtranslateJavaMod\\#end,\\#begtranslateJavaDivInt\\#end,\\#begtranslateJavaDivLong\\#end,\\#begtranslateJavaCastByte\\#end,\\#begtranslateJavaCastShort\\#end,\\#begtranslateJavaCastInt\\#end,\\#begtranslateJavaCastLong\\#end,\\#begtranslateJavaCastChar\\#end,\\#begtranslateJavaShiftRightInt\\#end,\\#begtranslateJavaShiftRightLong\\#end,\\#begtranslateJavaShiftLeftInt\\#end,\\#begtranslateJavaShiftLeftLong\\#end,\\#begtranslateJavaUnsignedShiftRightInt\\#end,\\#begtranslateJavaUnsignedShiftRightLong\\#end,\\#begtranslateJavaBitwiseOrInt\\#end,\\#begtranslateJavaBitwiseOrLong\\#end,\\#begtranslateJavaBitwiseAndInt\\#end,\\#begtranslateJavaBitwiseAndLong\\#end,\\#begtranslateJavaBitwiseXOrInt\\#end,\\#begtranslateJavaBitwiseXOrLong\\#end,\\#begcastDel\\#end,\\#begtypeEq\\#end,\\#begtypeEqDerived\\#end,\\#begtypeEqDerived2\\#end,\\#begtypeStatic\\#end,\\#begcloseType\\#end,\\#begcloseTypeSwitched\\#end,\\#begexact_instance_definition_int\\#end,\\#begexact_instance_definition_boolean\\#end,\\#begexact_instance_definition_null\\#end,\\#begexact_instance_for_interfaces_or_abstract_classes\\#end,\\#begclass_being_initialized_is_prepared\\#end,\\#beginitialized_class_is_prepared\\#end,\\#beginitialized_class_is_not_erroneous\\#end,\\#begclass_initialized_excludes_class_init_in_progress\\#end,\\#begclass_erroneous_excludes_class_in_init\\#end,\\#begerroneous_class_has_no_initialized_sub_class\\#end,\\#begsuperclasses_of_initialized_classes_are_prepared\\#end,\\#begelementOfEmpty\\#end,\\#begelementOfAllLocs\\#end,\\#begelementOfSingleton\\#end,\\#begelementOfUnion\\#end,\\#begelementOfIntersect\\#end,\\#begelementOfSetMinus\\#end,\\#begelementOfAllFields\\#end,\\#begelementOfAllObjects\\#end,\\#begelementOfArrayRange\\#end,\\#begelementOfFreshLocs\\#end,\\#begequalityToElementOf\\#end,\\#begsubsetToElementOf\\#end,\\#begdisjointToElementOf\\#end,\\#begcreatedInHeapToElementOf\\#end,\\#begelementOfEmptyEQ\\#end,\\#begelementOfAllLocsEQ\\#end,\\#begelementOfSingletonEQ\\#end,\\#begelementOfUnionEQ\\#end,\\#begelementOfIntersectEQ\\#end,\\#begelementOfSetMinusEQ\\#end,\\#begelementOfAllFieldsEQ\\#end,\\#begelementOfAllObjectsEQ\\#end,\\#begelementOfArrayRangeEQ\\#end,\\#begelementOfFreshLocsEQ\\#end,\\#begunionWithEmpty1\\#end,\\#begunionWithEmpty2\\#end,\\#begunionWithAllLocs1\\#end,\\#begunionWithAllLocs2\\#end,\\#begintersectWithEmpty1\\#end,\\#begintersectWithEmpty2\\#end,\\#begintersectWithAllLocs1\\#end,\\#begintersectWithAllLocs2\\#end,\\#begsetMinusWithEmpty1\\#end,\\#begsetMinusWithEmpty2\\#end,\\#begsetMinusWithAllLocs\\#end,\\#begsubsetWithEmpty\\#end,\\#begsubsetWithAllLocs\\#end,\\#begdisjointWithEmpty1\\#end,\\#begdisjointWithEmpty2\\#end,\\#begcreatedInHeapWithEmpty\\#end,\\#begcreatedInHeapWithSingleton\\#end,\\#begcreatedInHeapWithUnion\\#end,\\#begcreatedInHeapWithSetMinusFreshLocs\\#end,\\#begcreatedInHeapWithAllFields\\#end,\\#begcreatedInHeapWithArrayRange\\#end,\\#begreferencedObjectIsCreatedRight\\#end,\\#begreferencedObjectIsCreatedRightEQ\\#end,\\#begunionWithItself\\#end,\\#begintersectWithItself\\#end,\\#begsetMinusItself\\#end,\\#begsubsetOfItself\\#end,\\#begselectOfStore\\#end,\\#begselectOfCreate\\#end,\\#begselectOfAnon\\#end,\\#begselectOfMemset\\#end,\\#begonlyCreatedObjectsAreReferenced\\#end,\\#begonlyCreatedObjectsAreInLocSets\\#end,\\#begonlyCreatedObjectsAreInLocSetsEQ\\#end,\\#begarrayLengthNotNegative\\#end,\\#begwellFormedStoreObject\\#end,\\#begwellFormedStoreLocSet\\#end,\\#begwellFormedStorePrimitive\\#end,\\#begwellFormedCreate\\#end,\\#begwellFormedAnon\\#end,\\#begwellFormedMemsetObject\\#end,\\#begwellFormedMemsetLocSet\\#end,\\#begwellFormedMemsetPrimitive\\#end,\\#begselectOfStoreEQ\\#end,\\#begselectOfCreateEQ\\#end,\\#begselectOfAnonEQ\\#end,\\#begselectOfMemsetEQ\\#end,\\#begmemsetEmpty\\#end,\\#begselectCreatedOfAnonEQ\\#end,\\#begwellFormedStoreObjectEQ\\#end,\\#begwellFormedStoreLocSetEQ\\#end,\\#begwellFormedStorePrimitiveEQ\\#end,\\#begwellFormedAnonEQ\\#end,\\#begwellFormedMemsetObjectEQ\\#end,\\#begwellFormedMemsetPrimitiveEQ\\#end,\\#begaccDefinition\\#end,\\#begreachDefinition\\#end,\\#begreachZero\\#end,\\#begreachOne\\#end,\\#begreachNull\\#end,\\#begreachNull2\\#end,\\#begreachAddOne\\#end,\\#begreachAddOne2\\#end,\\#begreachUniquePathSameObject\\#end,\\#begreachDependenciesStoreSimple\\#end,\\#begreachDoesNotDependOnCreatedness\\#end,\\#begreachDependenciesStore\\#end,\\#begreachDependenciesAnon\\#end,\\#begreachDependenciesAnonCoarse\\#end,\\#begonly_created_objects_are_reachable\\#end,\\#begreach_does_not_depend_on_fresh_locs\\#end,\\#begreach_does_not_depend_on_fresh_locs_EQ\\#end +[SMTSettings]SelectedTaclets=\\#begboolean_equal_2\\#end,\\#begboolean_not_equal_1\\#end,\\#begboolean_not_equal_2\\#end,\\#begtrue_to_not_false\\#end,\\#begfalse_to_not_true\\#end,\\#begboolean_true_commute\\#end,\\#begboolean_false_commute\\#end,\\#begapply_eq_boolean\\#end,\\#begapply_eq_boolean_2\\#end,\\#begapply_eq_boolean_rigid\\#end,\\#begapply_eq_boolean_rigid_2\\#end,\\#begexpandInByte\\#end,\\#begexpandInChar\\#end,\\#begexpandInShort\\#end,\\#begexpandInInt\\#end,\\#begexpandInLong\\#end,\\#begreplace_byte_MAX\\#end,\\#begreplace_byte_MIN\\#end,\\#begreplace_char_MAX\\#end,\\#begreplace_char_MIN\\#end,\\#begreplace_short_MAX\\#end,\\#begreplace_short_MIN\\#end,\\#begreplace_int_MAX\\#end,\\#begreplace_int_MIN\\#end,\\#begreplace_long_MAX\\#end,\\#begreplace_long_MIN\\#end,\\#begreplace_byte_RANGE\\#end,\\#begreplace_byte_HALFRANGE\\#end,\\#begreplace_short_RANGE\\#end,\\#begreplace_short_HALFRANGE\\#end,\\#begreplace_char_RANGE\\#end,\\#begreplace_int_RANGE\\#end,\\#begreplace_int_HALFRANGE\\#end,\\#begreplace_long_RANGE\\#end,\\#begreplace_long_HALFRANGE\\#end,\\#begtranslateJavaUnaryMinusInt\\#end,\\#begtranslateJavaUnaryMinusLong\\#end,\\#begtranslateJavaBitwiseNegation\\#end,\\#begtranslateJavaAddInt\\#end,\\#begtranslateJavaAddLong\\#end,\\#begtranslateJavaSubInt\\#end,\\#begtranslateJavaSubLong\\#end,\\#begtranslateJavaMulInt\\#end,\\#begtranslateJavaMulLong\\#end,\\#begtranslateJavaMod\\#end,\\#begtranslateJavaDivInt\\#end,\\#begtranslateJavaDivLong\\#end,\\#begtranslateJavaCastByte\\#end,\\#begtranslateJavaCastShort\\#end,\\#begtranslateJavaCastInt\\#end,\\#begtranslateJavaCastLong\\#end,\\#begtranslateJavaCastChar\\#end,\\#begtranslateJavaShiftRightInt\\#end,\\#begtranslateJavaShiftRightLong\\#end,\\#begtranslateJavaShiftLeftInt\\#end,\\#begtranslateJavaShiftLeftLong\\#end,\\#begtranslateJavaUnsignedShiftRightInt\\#end,\\#begtranslateJavaUnsignedShiftRightLong\\#end,\\#begtranslateJavaBitwiseOrInt\\#end,\\#begtranslateJavaBitwiseOrLong\\#end,\\#begtranslateJavaBitwiseAndInt\\#end,\\#begtranslateJavaBitwiseAndLong\\#end,\\#begtranslateJavaBitwiseXOrInt\\#end,\\#begtranslateJavaBitwiseXOrLong\\#end,\\#begcastDel\\#end,\\#begtypeEq\\#end,\\#begtypeEqDerived\\#end,\\#begtypeEqDerived2\\#end,\\#begtypeStatic\\#end,\\#begcloseType\\#end,\\#begcloseTypeSwitched\\#end,\\#begexact_instance_definition_int\\#end,\\#begexact_instance_definition_boolean\\#end,\\#begexact_instance_definition_null\\#end,\\#begexact_instance_for_interfaces_or_abstract_classes\\#end,\\#begclass_being_initialized_is_prepared\\#end,\\#beginitialized_class_is_prepared\\#end,\\#beginitialized_class_is_not_erroneous\\#end,\\#begclass_initialized_excludes_class_init_in_progress\\#end,\\#begclass_erroneous_excludes_class_in_init\\#end,\\#begerroneous_class_has_no_initialized_sub_class\\#end,\\#begsuperclasses_of_initialized_classes_are_prepared\\#end,\\#begelementOfEmpty\\#end,\\#begelementOfAllLocs\\#end,\\#begelementOfSingleton\\#end,\\#begelementOfUnion\\#end,\\#begelementOfIntersect\\#end,\\#begelementOfSetMinus\\#end,\\#begelementOfAllFields\\#end,\\#begelementOfAllObjects\\#end,\\#begelementOfArrayRange\\#end,\\#begelementOfFreshLocs\\#end,\\#begequalityToElementOf\\#end,\\#begsubsetToElementOf\\#end,\\#begdisjointToElementOf\\#end,\\#begcreatedInHeapToElementOf\\#end,\\#begelementOfEmptyEQ\\#end,\\#begelementOfAllLocsEQ\\#end,\\#begelementOfSingletonEQ\\#end,\\#begelementOfUnionEQ\\#end,\\#begelementOfIntersectEQ\\#end,\\#begelementOfSetMinusEQ\\#end,\\#begelementOfAllFieldsEQ\\#end,\\#begelementOfAllObjectsEQ\\#end,\\#begelementOfArrayRangeEQ\\#end,\\#begelementOfFreshLocsEQ\\#end,\\#begunionWithEmpty1\\#end,\\#begunionWithEmpty2\\#end,\\#begunionWithAllLocs1\\#end,\\#begunionWithAllLocs2\\#end,\\#begintersectWithEmpty1\\#end,\\#begintersectWithEmpty2\\#end,\\#begintersectWithAllLocs1\\#end,\\#begintersectWithAllLocs2\\#end,\\#begsetMinusWithEmpty1\\#end,\\#begsetMinusWithEmpty2\\#end,\\#begsetMinusWithAllLocs\\#end,\\#begsubsetWithEmpty\\#end,\\#begsubsetWithAllLocs\\#end,\\#begdisjointWithEmpty1\\#end,\\#begdisjointWithEmpty2\\#end,\\#begcreatedInHeapWithEmpty\\#end,\\#begcreatedInHeapWithSingleton\\#end,\\#begcreatedInHeapWithUnion\\#end,\\#begcreatedInHeapWithSetMinusFreshLocs\\#end,\\#begcreatedInHeapWithAllFields\\#end,\\#begcreatedInHeapWithArrayRange\\#end,\\#begreferencedObjectIsCreatedRight\\#end,\\#begreferencedObjectIsCreatedRightEQ\\#end,\\#begunionWithItself\\#end,\\#begintersectWithItself\\#end,\\#begsetMinusItself\\#end,\\#begsubsetOfItself\\#end,\\#begselectOfStore\\#end,\\#begselectOfCreate\\#end,\\#begselectOfAnon\\#end,\\#begselectOfMemset\\#end,\\#begonlyCreatedObjectsAreReferenced\\#end,\\#begonlyCreatedObjectsAreInLocSets\\#end,\\#begonlyCreatedObjectsAreInLocSetsEQ\\#end,\\#begarrayLengthNotNegative\\#end,\\#begwellFormedStoreObject\\#end,\\#begwellFormedStoreLocSet\\#end,\\#begwellFormedStorePrimitive\\#end,\\#begwellFormedCreate\\#end,\\#begwellFormedAnon\\#end,\\#begwellFormedMemsetObject\\#end,\\#begwellFormedMemsetLocSet\\#end,\\#begwellFormedMemsetPrimitive\\#end,\\#begselectOfStoreEQ\\#end,\\#begselectOfCreateEQ\\#end,\\#begselectOfAnonEQ\\#end,\\#begselectOfMemsetEQ\\#end,\\#begmemsetEmpty\\#end,\\#begselectCreatedOfAnonEQ\\#end,\\#begwellFormedStoreObjectEQ\\#end,\\#begwellFormedStoreLocSetEQ\\#end,\\#begwellFormedStorePrimitiveEQ\\#end,\\#begwellFormedAnonEQ\\#end,\\#begwellFormedMemsetObjectEQ\\#end,\\#begwellFormedMemsetPrimitiveEQ\\#end,\\#begaccDefinition\\#end,\\#begreachDefinition\\#end,\\#begreachZero\\#end,\\#begreachOne\\#end,\\#begreachNull\\#end,\\#begreachNull2\\#end,\\#begreachAddOne\\#end,\\#begreachAddOne2\\#end,\\#begreachUniquePathSameObject\\#end,\\#begreachDependenciesStoreSimple\\#end,\\#begreachDoesNotDependOnCreatedness\\#end,\\#begreachDependenciesStore\\#end,\\#begreachDependenciesAnon\\#end,\\#begreachDependenciesAnonCoarse\\#end,\\#begonly_created_objects_are_reachable\\#end,\\#begreach_does_not_depend_on_fresh_locs\\#end,\\#begreach_does_not_depend_on_fresh_locsEQ\\#end [StrategyProperty]NON_LIN_ARITH_OPTIONS_KEY=NON_LIN_ARITH_DEF_OPS [StrategyProperty]LOOP_OPTIONS_KEY=LOOP_NONE [SMTSettings]explicitTypeHierarchy=false diff --git a/key.ui/examples/completionscopes/testCcatchContinueLabel.key b/key.ui/examples/completionscopes/testCcatchContinueLabel.key index 269883a029a..24b581f92ae 100644 --- a/key.ui/examples/completionscopes/testCcatchContinueLabel.key +++ b/key.ui/examples/completionscopes/testCcatchContinueLabel.key @@ -34,7 +34,7 @@ [Strategy]MaximumNumberOfAutomaticApplications=7000 [StrategyProperty]AUTO_INDUCTION_OPTIONS_KEY=AUTO_INDUCTION_OFF [StrategyProperty]STOPMODE_OPTIONS_KEY=STOPMODE_DEFAULT -[SMTSettings]SelectedTaclets=\\#begboolean_equal_2\\#end,\\#begboolean_not_equal_1\\#end,\\#begboolean_not_equal_2\\#end,\\#begtrue_to_not_false\\#end,\\#begfalse_to_not_true\\#end,\\#begboolean_true_commute\\#end,\\#begboolean_false_commute\\#end,\\#begapply_eq_boolean\\#end,\\#begapply_eq_boolean_2\\#end,\\#begapply_eq_boolean_rigid\\#end,\\#begapply_eq_boolean_rigid_2\\#end,\\#begexpandInByte\\#end,\\#begexpandInChar\\#end,\\#begexpandInShort\\#end,\\#begexpandInInt\\#end,\\#begexpandInLong\\#end,\\#begreplace_byte_MAX\\#end,\\#begreplace_byte_MIN\\#end,\\#begreplace_char_MAX\\#end,\\#begreplace_char_MIN\\#end,\\#begreplace_short_MAX\\#end,\\#begreplace_short_MIN\\#end,\\#begreplace_int_MAX\\#end,\\#begreplace_int_MIN\\#end,\\#begreplace_long_MAX\\#end,\\#begreplace_long_MIN\\#end,\\#begreplace_byte_RANGE\\#end,\\#begreplace_byte_HALFRANGE\\#end,\\#begreplace_short_RANGE\\#end,\\#begreplace_short_HALFRANGE\\#end,\\#begreplace_char_RANGE\\#end,\\#begreplace_int_RANGE\\#end,\\#begreplace_int_HALFRANGE\\#end,\\#begreplace_long_RANGE\\#end,\\#begreplace_long_HALFRANGE\\#end,\\#begtranslateJavaUnaryMinusInt\\#end,\\#begtranslateJavaUnaryMinusLong\\#end,\\#begtranslateJavaBitwiseNegation\\#end,\\#begtranslateJavaAddInt\\#end,\\#begtranslateJavaAddLong\\#end,\\#begtranslateJavaSubInt\\#end,\\#begtranslateJavaSubLong\\#end,\\#begtranslateJavaMulInt\\#end,\\#begtranslateJavaMulLong\\#end,\\#begtranslateJavaMod\\#end,\\#begtranslateJavaDivInt\\#end,\\#begtranslateJavaDivLong\\#end,\\#begtranslateJavaCastByte\\#end,\\#begtranslateJavaCastShort\\#end,\\#begtranslateJavaCastInt\\#end,\\#begtranslateJavaCastLong\\#end,\\#begtranslateJavaCastChar\\#end,\\#begtranslateJavaShiftRightInt\\#end,\\#begtranslateJavaShiftRightLong\\#end,\\#begtranslateJavaShiftLeftInt\\#end,\\#begtranslateJavaShiftLeftLong\\#end,\\#begtranslateJavaUnsignedShiftRightInt\\#end,\\#begtranslateJavaUnsignedShiftRightLong\\#end,\\#begtranslateJavaBitwiseOrInt\\#end,\\#begtranslateJavaBitwiseOrLong\\#end,\\#begtranslateJavaBitwiseAndInt\\#end,\\#begtranslateJavaBitwiseAndLong\\#end,\\#begtranslateJavaBitwiseXOrInt\\#end,\\#begtranslateJavaBitwiseXOrLong\\#end,\\#begcastDel\\#end,\\#begtypeEq\\#end,\\#begtypeEqDerived\\#end,\\#begtypeEqDerived2\\#end,\\#begtypeStatic\\#end,\\#begcloseType\\#end,\\#begcloseTypeSwitched\\#end,\\#begexact_instance_definition_int\\#end,\\#begexact_instance_definition_boolean\\#end,\\#begexact_instance_definition_null\\#end,\\#begexact_instance_for_interfaces_or_abstract_classes\\#end,\\#begclass_being_initialized_is_prepared\\#end,\\#beginitialized_class_is_prepared\\#end,\\#beginitialized_class_is_not_erroneous\\#end,\\#begclass_initialized_excludes_class_init_in_progress\\#end,\\#begclass_erroneous_excludes_class_in_init\\#end,\\#begerroneous_class_has_no_initialized_sub_class\\#end,\\#begsuperclasses_of_initialized_classes_are_prepared\\#end,\\#begelementOfEmpty\\#end,\\#begelementOfAllLocs\\#end,\\#begelementOfSingleton\\#end,\\#begelementOfUnion\\#end,\\#begelementOfIntersect\\#end,\\#begelementOfSetMinus\\#end,\\#begelementOfAllFields\\#end,\\#begelementOfAllObjects\\#end,\\#begelementOfArrayRange\\#end,\\#begelementOfFreshLocs\\#end,\\#begequalityToElementOf\\#end,\\#begsubsetToElementOf\\#end,\\#begdisjointToElementOf\\#end,\\#begcreatedInHeapToElementOf\\#end,\\#begelementOfEmptyEQ\\#end,\\#begelementOfAllLocsEQ\\#end,\\#begelementOfSingletonEQ\\#end,\\#begelementOfUnionEQ\\#end,\\#begelementOfIntersectEQ\\#end,\\#begelementOfSetMinusEQ\\#end,\\#begelementOfAllFieldsEQ\\#end,\\#begelementOfAllObjectsEQ\\#end,\\#begelementOfArrayRangeEQ\\#end,\\#begelementOfFreshLocsEQ\\#end,\\#begunionWithEmpty1\\#end,\\#begunionWithEmpty2\\#end,\\#begunionWithAllLocs1\\#end,\\#begunionWithAllLocs2\\#end,\\#begintersectWithEmpty1\\#end,\\#begintersectWithEmpty2\\#end,\\#begintersectWithAllLocs1\\#end,\\#begintersectWithAllLocs2\\#end,\\#begsetMinusWithEmpty1\\#end,\\#begsetMinusWithEmpty2\\#end,\\#begsetMinusWithAllLocs\\#end,\\#begsubsetWithEmpty\\#end,\\#begsubsetWithAllLocs\\#end,\\#begdisjointWithEmpty1\\#end,\\#begdisjointWithEmpty2\\#end,\\#begcreatedInHeapWithEmpty\\#end,\\#begcreatedInHeapWithSingleton\\#end,\\#begcreatedInHeapWithUnion\\#end,\\#begcreatedInHeapWithSetMinusFreshLocs\\#end,\\#begcreatedInHeapWithAllFields\\#end,\\#begcreatedInHeapWithArrayRange\\#end,\\#begreferencedObjectIsCreatedRight\\#end,\\#begreferencedObjectIsCreatedRightEQ\\#end,\\#begunionWithItself\\#end,\\#begintersectWithItself\\#end,\\#begsetMinusItself\\#end,\\#begsubsetOfItself\\#end,\\#begselectOfStore\\#end,\\#begselectOfCreate\\#end,\\#begselectOfAnon\\#end,\\#begselectOfMemset\\#end,\\#begonlyCreatedObjectsAreReferenced\\#end,\\#begonlyCreatedObjectsAreInLocSets\\#end,\\#begonlyCreatedObjectsAreInLocSetsEQ\\#end,\\#begarrayLengthNotNegative\\#end,\\#begwellFormedStoreObject\\#end,\\#begwellFormedStoreLocSet\\#end,\\#begwellFormedStorePrimitive\\#end,\\#begwellFormedCreate\\#end,\\#begwellFormedAnon\\#end,\\#begwellFormedMemsetObject\\#end,\\#begwellFormedMemsetLocSet\\#end,\\#begwellFormedMemsetPrimitive\\#end,\\#begselectOfStoreEQ\\#end,\\#begselectOfCreateEQ\\#end,\\#begselectOfAnonEQ\\#end,\\#begselectOfMemsetEQ\\#end,\\#begmemsetEmpty\\#end,\\#begselectCreatedOfAnonEQ\\#end,\\#begwellFormedStoreObjectEQ\\#end,\\#begwellFormedStoreLocSetEQ\\#end,\\#begwellFormedStorePrimitiveEQ\\#end,\\#begwellFormedAnonEQ\\#end,\\#begwellFormedMemsetObjectEQ\\#end,\\#begwellFormedMemsetPrimitiveEQ\\#end,\\#begaccDefinition\\#end,\\#begreachDefinition\\#end,\\#begreachZero\\#end,\\#begreachOne\\#end,\\#begreachNull\\#end,\\#begreachNull2\\#end,\\#begreachAddOne\\#end,\\#begreachAddOne2\\#end,\\#begreachUniquePathSameObject\\#end,\\#begreachDependenciesStoreSimple\\#end,\\#begreachDoesNotDependOnCreatedness\\#end,\\#begreachDependenciesStore\\#end,\\#begreachDependenciesAnon\\#end,\\#begreachDependenciesAnonCoarse\\#end,\\#begonly_created_objects_are_reachable\\#end,\\#begreach_does_not_depend_on_fresh_locs\\#end,\\#begreach_does_not_depend_on_fresh_locs_EQ\\#end +[SMTSettings]SelectedTaclets=\\#begboolean_equal_2\\#end,\\#begboolean_not_equal_1\\#end,\\#begboolean_not_equal_2\\#end,\\#begtrue_to_not_false\\#end,\\#begfalse_to_not_true\\#end,\\#begboolean_true_commute\\#end,\\#begboolean_false_commute\\#end,\\#begapply_eq_boolean\\#end,\\#begapply_eq_boolean_2\\#end,\\#begapply_eq_boolean_rigid\\#end,\\#begapply_eq_boolean_rigid_2\\#end,\\#begexpandInByte\\#end,\\#begexpandInChar\\#end,\\#begexpandInShort\\#end,\\#begexpandInInt\\#end,\\#begexpandInLong\\#end,\\#begreplace_byte_MAX\\#end,\\#begreplace_byte_MIN\\#end,\\#begreplace_char_MAX\\#end,\\#begreplace_char_MIN\\#end,\\#begreplace_short_MAX\\#end,\\#begreplace_short_MIN\\#end,\\#begreplace_int_MAX\\#end,\\#begreplace_int_MIN\\#end,\\#begreplace_long_MAX\\#end,\\#begreplace_long_MIN\\#end,\\#begreplace_byte_RANGE\\#end,\\#begreplace_byte_HALFRANGE\\#end,\\#begreplace_short_RANGE\\#end,\\#begreplace_short_HALFRANGE\\#end,\\#begreplace_char_RANGE\\#end,\\#begreplace_int_RANGE\\#end,\\#begreplace_int_HALFRANGE\\#end,\\#begreplace_long_RANGE\\#end,\\#begreplace_long_HALFRANGE\\#end,\\#begtranslateJavaUnaryMinusInt\\#end,\\#begtranslateJavaUnaryMinusLong\\#end,\\#begtranslateJavaBitwiseNegation\\#end,\\#begtranslateJavaAddInt\\#end,\\#begtranslateJavaAddLong\\#end,\\#begtranslateJavaSubInt\\#end,\\#begtranslateJavaSubLong\\#end,\\#begtranslateJavaMulInt\\#end,\\#begtranslateJavaMulLong\\#end,\\#begtranslateJavaMod\\#end,\\#begtranslateJavaDivInt\\#end,\\#begtranslateJavaDivLong\\#end,\\#begtranslateJavaCastByte\\#end,\\#begtranslateJavaCastShort\\#end,\\#begtranslateJavaCastInt\\#end,\\#begtranslateJavaCastLong\\#end,\\#begtranslateJavaCastChar\\#end,\\#begtranslateJavaShiftRightInt\\#end,\\#begtranslateJavaShiftRightLong\\#end,\\#begtranslateJavaShiftLeftInt\\#end,\\#begtranslateJavaShiftLeftLong\\#end,\\#begtranslateJavaUnsignedShiftRightInt\\#end,\\#begtranslateJavaUnsignedShiftRightLong\\#end,\\#begtranslateJavaBitwiseOrInt\\#end,\\#begtranslateJavaBitwiseOrLong\\#end,\\#begtranslateJavaBitwiseAndInt\\#end,\\#begtranslateJavaBitwiseAndLong\\#end,\\#begtranslateJavaBitwiseXOrInt\\#end,\\#begtranslateJavaBitwiseXOrLong\\#end,\\#begcastDel\\#end,\\#begtypeEq\\#end,\\#begtypeEqDerived\\#end,\\#begtypeEqDerived2\\#end,\\#begtypeStatic\\#end,\\#begcloseType\\#end,\\#begcloseTypeSwitched\\#end,\\#begexact_instance_definition_int\\#end,\\#begexact_instance_definition_boolean\\#end,\\#begexact_instance_definition_null\\#end,\\#begexact_instance_for_interfaces_or_abstract_classes\\#end,\\#begclass_being_initialized_is_prepared\\#end,\\#beginitialized_class_is_prepared\\#end,\\#beginitialized_class_is_not_erroneous\\#end,\\#begclass_initialized_excludes_class_init_in_progress\\#end,\\#begclass_erroneous_excludes_class_in_init\\#end,\\#begerroneous_class_has_no_initialized_sub_class\\#end,\\#begsuperclasses_of_initialized_classes_are_prepared\\#end,\\#begelementOfEmpty\\#end,\\#begelementOfAllLocs\\#end,\\#begelementOfSingleton\\#end,\\#begelementOfUnion\\#end,\\#begelementOfIntersect\\#end,\\#begelementOfSetMinus\\#end,\\#begelementOfAllFields\\#end,\\#begelementOfAllObjects\\#end,\\#begelementOfArrayRange\\#end,\\#begelementOfFreshLocs\\#end,\\#begequalityToElementOf\\#end,\\#begsubsetToElementOf\\#end,\\#begdisjointToElementOf\\#end,\\#begcreatedInHeapToElementOf\\#end,\\#begelementOfEmptyEQ\\#end,\\#begelementOfAllLocsEQ\\#end,\\#begelementOfSingletonEQ\\#end,\\#begelementOfUnionEQ\\#end,\\#begelementOfIntersectEQ\\#end,\\#begelementOfSetMinusEQ\\#end,\\#begelementOfAllFieldsEQ\\#end,\\#begelementOfAllObjectsEQ\\#end,\\#begelementOfArrayRangeEQ\\#end,\\#begelementOfFreshLocsEQ\\#end,\\#begunionWithEmpty1\\#end,\\#begunionWithEmpty2\\#end,\\#begunionWithAllLocs1\\#end,\\#begunionWithAllLocs2\\#end,\\#begintersectWithEmpty1\\#end,\\#begintersectWithEmpty2\\#end,\\#begintersectWithAllLocs1\\#end,\\#begintersectWithAllLocs2\\#end,\\#begsetMinusWithEmpty1\\#end,\\#begsetMinusWithEmpty2\\#end,\\#begsetMinusWithAllLocs\\#end,\\#begsubsetWithEmpty\\#end,\\#begsubsetWithAllLocs\\#end,\\#begdisjointWithEmpty1\\#end,\\#begdisjointWithEmpty2\\#end,\\#begcreatedInHeapWithEmpty\\#end,\\#begcreatedInHeapWithSingleton\\#end,\\#begcreatedInHeapWithUnion\\#end,\\#begcreatedInHeapWithSetMinusFreshLocs\\#end,\\#begcreatedInHeapWithAllFields\\#end,\\#begcreatedInHeapWithArrayRange\\#end,\\#begreferencedObjectIsCreatedRight\\#end,\\#begreferencedObjectIsCreatedRightEQ\\#end,\\#begunionWithItself\\#end,\\#begintersectWithItself\\#end,\\#begsetMinusItself\\#end,\\#begsubsetOfItself\\#end,\\#begselectOfStore\\#end,\\#begselectOfCreate\\#end,\\#begselectOfAnon\\#end,\\#begselectOfMemset\\#end,\\#begonlyCreatedObjectsAreReferenced\\#end,\\#begonlyCreatedObjectsAreInLocSets\\#end,\\#begonlyCreatedObjectsAreInLocSetsEQ\\#end,\\#begarrayLengthNotNegative\\#end,\\#begwellFormedStoreObject\\#end,\\#begwellFormedStoreLocSet\\#end,\\#begwellFormedStorePrimitive\\#end,\\#begwellFormedCreate\\#end,\\#begwellFormedAnon\\#end,\\#begwellFormedMemsetObject\\#end,\\#begwellFormedMemsetLocSet\\#end,\\#begwellFormedMemsetPrimitive\\#end,\\#begselectOfStoreEQ\\#end,\\#begselectOfCreateEQ\\#end,\\#begselectOfAnonEQ\\#end,\\#begselectOfMemsetEQ\\#end,\\#begmemsetEmpty\\#end,\\#begselectCreatedOfAnonEQ\\#end,\\#begwellFormedStoreObjectEQ\\#end,\\#begwellFormedStoreLocSetEQ\\#end,\\#begwellFormedStorePrimitiveEQ\\#end,\\#begwellFormedAnonEQ\\#end,\\#begwellFormedMemsetObjectEQ\\#end,\\#begwellFormedMemsetPrimitiveEQ\\#end,\\#begaccDefinition\\#end,\\#begreachDefinition\\#end,\\#begreachZero\\#end,\\#begreachOne\\#end,\\#begreachNull\\#end,\\#begreachNull2\\#end,\\#begreachAddOne\\#end,\\#begreachAddOne2\\#end,\\#begreachUniquePathSameObject\\#end,\\#begreachDependenciesStoreSimple\\#end,\\#begreachDoesNotDependOnCreatedness\\#end,\\#begreachDependenciesStore\\#end,\\#begreachDependenciesAnon\\#end,\\#begreachDependenciesAnonCoarse\\#end,\\#begonly_created_objects_are_reachable\\#end,\\#begreach_does_not_depend_on_fresh_locs\\#end,\\#begreach_does_not_depend_on_fresh_locsEQ\\#end [StrategyProperty]NON_LIN_ARITH_OPTIONS_KEY=NON_LIN_ARITH_DEF_OPS [StrategyProperty]LOOP_OPTIONS_KEY=LOOP_NONE [SMTSettings]explicitTypeHierarchy=false diff --git a/key.ui/examples/completionscopes/testCcatchContinueLabelWildcard.key b/key.ui/examples/completionscopes/testCcatchContinueLabelWildcard.key index 2f1a6e589c6..8858399a5b8 100644 --- a/key.ui/examples/completionscopes/testCcatchContinueLabelWildcard.key +++ b/key.ui/examples/completionscopes/testCcatchContinueLabelWildcard.key @@ -34,7 +34,7 @@ [Strategy]MaximumNumberOfAutomaticApplications=7000 [StrategyProperty]AUTO_INDUCTION_OPTIONS_KEY=AUTO_INDUCTION_OFF [StrategyProperty]STOPMODE_OPTIONS_KEY=STOPMODE_DEFAULT -[SMTSettings]SelectedTaclets=\\#begboolean_equal_2\\#end,\\#begboolean_not_equal_1\\#end,\\#begboolean_not_equal_2\\#end,\\#begtrue_to_not_false\\#end,\\#begfalse_to_not_true\\#end,\\#begboolean_true_commute\\#end,\\#begboolean_false_commute\\#end,\\#begapply_eq_boolean\\#end,\\#begapply_eq_boolean_2\\#end,\\#begapply_eq_boolean_rigid\\#end,\\#begapply_eq_boolean_rigid_2\\#end,\\#begexpandInByte\\#end,\\#begexpandInChar\\#end,\\#begexpandInShort\\#end,\\#begexpandInInt\\#end,\\#begexpandInLong\\#end,\\#begreplace_byte_MAX\\#end,\\#begreplace_byte_MIN\\#end,\\#begreplace_char_MAX\\#end,\\#begreplace_char_MIN\\#end,\\#begreplace_short_MAX\\#end,\\#begreplace_short_MIN\\#end,\\#begreplace_int_MAX\\#end,\\#begreplace_int_MIN\\#end,\\#begreplace_long_MAX\\#end,\\#begreplace_long_MIN\\#end,\\#begreplace_byte_RANGE\\#end,\\#begreplace_byte_HALFRANGE\\#end,\\#begreplace_short_RANGE\\#end,\\#begreplace_short_HALFRANGE\\#end,\\#begreplace_char_RANGE\\#end,\\#begreplace_int_RANGE\\#end,\\#begreplace_int_HALFRANGE\\#end,\\#begreplace_long_RANGE\\#end,\\#begreplace_long_HALFRANGE\\#end,\\#begtranslateJavaUnaryMinusInt\\#end,\\#begtranslateJavaUnaryMinusLong\\#end,\\#begtranslateJavaBitwiseNegation\\#end,\\#begtranslateJavaAddInt\\#end,\\#begtranslateJavaAddLong\\#end,\\#begtranslateJavaSubInt\\#end,\\#begtranslateJavaSubLong\\#end,\\#begtranslateJavaMulInt\\#end,\\#begtranslateJavaMulLong\\#end,\\#begtranslateJavaMod\\#end,\\#begtranslateJavaDivInt\\#end,\\#begtranslateJavaDivLong\\#end,\\#begtranslateJavaCastByte\\#end,\\#begtranslateJavaCastShort\\#end,\\#begtranslateJavaCastInt\\#end,\\#begtranslateJavaCastLong\\#end,\\#begtranslateJavaCastChar\\#end,\\#begtranslateJavaShiftRightInt\\#end,\\#begtranslateJavaShiftRightLong\\#end,\\#begtranslateJavaShiftLeftInt\\#end,\\#begtranslateJavaShiftLeftLong\\#end,\\#begtranslateJavaUnsignedShiftRightInt\\#end,\\#begtranslateJavaUnsignedShiftRightLong\\#end,\\#begtranslateJavaBitwiseOrInt\\#end,\\#begtranslateJavaBitwiseOrLong\\#end,\\#begtranslateJavaBitwiseAndInt\\#end,\\#begtranslateJavaBitwiseAndLong\\#end,\\#begtranslateJavaBitwiseXOrInt\\#end,\\#begtranslateJavaBitwiseXOrLong\\#end,\\#begcastDel\\#end,\\#begtypeEq\\#end,\\#begtypeEqDerived\\#end,\\#begtypeEqDerived2\\#end,\\#begtypeStatic\\#end,\\#begcloseType\\#end,\\#begcloseTypeSwitched\\#end,\\#begexact_instance_definition_int\\#end,\\#begexact_instance_definition_boolean\\#end,\\#begexact_instance_definition_null\\#end,\\#begexact_instance_for_interfaces_or_abstract_classes\\#end,\\#begclass_being_initialized_is_prepared\\#end,\\#beginitialized_class_is_prepared\\#end,\\#beginitialized_class_is_not_erroneous\\#end,\\#begclass_initialized_excludes_class_init_in_progress\\#end,\\#begclass_erroneous_excludes_class_in_init\\#end,\\#begerroneous_class_has_no_initialized_sub_class\\#end,\\#begsuperclasses_of_initialized_classes_are_prepared\\#end,\\#begelementOfEmpty\\#end,\\#begelementOfAllLocs\\#end,\\#begelementOfSingleton\\#end,\\#begelementOfUnion\\#end,\\#begelementOfIntersect\\#end,\\#begelementOfSetMinus\\#end,\\#begelementOfAllFields\\#end,\\#begelementOfAllObjects\\#end,\\#begelementOfArrayRange\\#end,\\#begelementOfFreshLocs\\#end,\\#begequalityToElementOf\\#end,\\#begsubsetToElementOf\\#end,\\#begdisjointToElementOf\\#end,\\#begcreatedInHeapToElementOf\\#end,\\#begelementOfEmptyEQ\\#end,\\#begelementOfAllLocsEQ\\#end,\\#begelementOfSingletonEQ\\#end,\\#begelementOfUnionEQ\\#end,\\#begelementOfIntersectEQ\\#end,\\#begelementOfSetMinusEQ\\#end,\\#begelementOfAllFieldsEQ\\#end,\\#begelementOfAllObjectsEQ\\#end,\\#begelementOfArrayRangeEQ\\#end,\\#begelementOfFreshLocsEQ\\#end,\\#begunionWithEmpty1\\#end,\\#begunionWithEmpty2\\#end,\\#begunionWithAllLocs1\\#end,\\#begunionWithAllLocs2\\#end,\\#begintersectWithEmpty1\\#end,\\#begintersectWithEmpty2\\#end,\\#begintersectWithAllLocs1\\#end,\\#begintersectWithAllLocs2\\#end,\\#begsetMinusWithEmpty1\\#end,\\#begsetMinusWithEmpty2\\#end,\\#begsetMinusWithAllLocs\\#end,\\#begsubsetWithEmpty\\#end,\\#begsubsetWithAllLocs\\#end,\\#begdisjointWithEmpty1\\#end,\\#begdisjointWithEmpty2\\#end,\\#begcreatedInHeapWithEmpty\\#end,\\#begcreatedInHeapWithSingleton\\#end,\\#begcreatedInHeapWithUnion\\#end,\\#begcreatedInHeapWithSetMinusFreshLocs\\#end,\\#begcreatedInHeapWithAllFields\\#end,\\#begcreatedInHeapWithArrayRange\\#end,\\#begreferencedObjectIsCreatedRight\\#end,\\#begreferencedObjectIsCreatedRightEQ\\#end,\\#begunionWithItself\\#end,\\#begintersectWithItself\\#end,\\#begsetMinusItself\\#end,\\#begsubsetOfItself\\#end,\\#begselectOfStore\\#end,\\#begselectOfCreate\\#end,\\#begselectOfAnon\\#end,\\#begselectOfMemset\\#end,\\#begonlyCreatedObjectsAreReferenced\\#end,\\#begonlyCreatedObjectsAreInLocSets\\#end,\\#begonlyCreatedObjectsAreInLocSetsEQ\\#end,\\#begarrayLengthNotNegative\\#end,\\#begwellFormedStoreObject\\#end,\\#begwellFormedStoreLocSet\\#end,\\#begwellFormedStorePrimitive\\#end,\\#begwellFormedCreate\\#end,\\#begwellFormedAnon\\#end,\\#begwellFormedMemsetObject\\#end,\\#begwellFormedMemsetLocSet\\#end,\\#begwellFormedMemsetPrimitive\\#end,\\#begselectOfStoreEQ\\#end,\\#begselectOfCreateEQ\\#end,\\#begselectOfAnonEQ\\#end,\\#begselectOfMemsetEQ\\#end,\\#begmemsetEmpty\\#end,\\#begselectCreatedOfAnonEQ\\#end,\\#begwellFormedStoreObjectEQ\\#end,\\#begwellFormedStoreLocSetEQ\\#end,\\#begwellFormedStorePrimitiveEQ\\#end,\\#begwellFormedAnonEQ\\#end,\\#begwellFormedMemsetObjectEQ\\#end,\\#begwellFormedMemsetPrimitiveEQ\\#end,\\#begaccDefinition\\#end,\\#begreachDefinition\\#end,\\#begreachZero\\#end,\\#begreachOne\\#end,\\#begreachNull\\#end,\\#begreachNull2\\#end,\\#begreachAddOne\\#end,\\#begreachAddOne2\\#end,\\#begreachUniquePathSameObject\\#end,\\#begreachDependenciesStoreSimple\\#end,\\#begreachDoesNotDependOnCreatedness\\#end,\\#begreachDependenciesStore\\#end,\\#begreachDependenciesAnon\\#end,\\#begreachDependenciesAnonCoarse\\#end,\\#begonly_created_objects_are_reachable\\#end,\\#begreach_does_not_depend_on_fresh_locs\\#end,\\#begreach_does_not_depend_on_fresh_locs_EQ\\#end +[SMTSettings]SelectedTaclets=\\#begboolean_equal_2\\#end,\\#begboolean_not_equal_1\\#end,\\#begboolean_not_equal_2\\#end,\\#begtrue_to_not_false\\#end,\\#begfalse_to_not_true\\#end,\\#begboolean_true_commute\\#end,\\#begboolean_false_commute\\#end,\\#begapply_eq_boolean\\#end,\\#begapply_eq_boolean_2\\#end,\\#begapply_eq_boolean_rigid\\#end,\\#begapply_eq_boolean_rigid_2\\#end,\\#begexpandInByte\\#end,\\#begexpandInChar\\#end,\\#begexpandInShort\\#end,\\#begexpandInInt\\#end,\\#begexpandInLong\\#end,\\#begreplace_byte_MAX\\#end,\\#begreplace_byte_MIN\\#end,\\#begreplace_char_MAX\\#end,\\#begreplace_char_MIN\\#end,\\#begreplace_short_MAX\\#end,\\#begreplace_short_MIN\\#end,\\#begreplace_int_MAX\\#end,\\#begreplace_int_MIN\\#end,\\#begreplace_long_MAX\\#end,\\#begreplace_long_MIN\\#end,\\#begreplace_byte_RANGE\\#end,\\#begreplace_byte_HALFRANGE\\#end,\\#begreplace_short_RANGE\\#end,\\#begreplace_short_HALFRANGE\\#end,\\#begreplace_char_RANGE\\#end,\\#begreplace_int_RANGE\\#end,\\#begreplace_int_HALFRANGE\\#end,\\#begreplace_long_RANGE\\#end,\\#begreplace_long_HALFRANGE\\#end,\\#begtranslateJavaUnaryMinusInt\\#end,\\#begtranslateJavaUnaryMinusLong\\#end,\\#begtranslateJavaBitwiseNegation\\#end,\\#begtranslateJavaAddInt\\#end,\\#begtranslateJavaAddLong\\#end,\\#begtranslateJavaSubInt\\#end,\\#begtranslateJavaSubLong\\#end,\\#begtranslateJavaMulInt\\#end,\\#begtranslateJavaMulLong\\#end,\\#begtranslateJavaMod\\#end,\\#begtranslateJavaDivInt\\#end,\\#begtranslateJavaDivLong\\#end,\\#begtranslateJavaCastByte\\#end,\\#begtranslateJavaCastShort\\#end,\\#begtranslateJavaCastInt\\#end,\\#begtranslateJavaCastLong\\#end,\\#begtranslateJavaCastChar\\#end,\\#begtranslateJavaShiftRightInt\\#end,\\#begtranslateJavaShiftRightLong\\#end,\\#begtranslateJavaShiftLeftInt\\#end,\\#begtranslateJavaShiftLeftLong\\#end,\\#begtranslateJavaUnsignedShiftRightInt\\#end,\\#begtranslateJavaUnsignedShiftRightLong\\#end,\\#begtranslateJavaBitwiseOrInt\\#end,\\#begtranslateJavaBitwiseOrLong\\#end,\\#begtranslateJavaBitwiseAndInt\\#end,\\#begtranslateJavaBitwiseAndLong\\#end,\\#begtranslateJavaBitwiseXOrInt\\#end,\\#begtranslateJavaBitwiseXOrLong\\#end,\\#begcastDel\\#end,\\#begtypeEq\\#end,\\#begtypeEqDerived\\#end,\\#begtypeEqDerived2\\#end,\\#begtypeStatic\\#end,\\#begcloseType\\#end,\\#begcloseTypeSwitched\\#end,\\#begexact_instance_definition_int\\#end,\\#begexact_instance_definition_boolean\\#end,\\#begexact_instance_definition_null\\#end,\\#begexact_instance_for_interfaces_or_abstract_classes\\#end,\\#begclass_being_initialized_is_prepared\\#end,\\#beginitialized_class_is_prepared\\#end,\\#beginitialized_class_is_not_erroneous\\#end,\\#begclass_initialized_excludes_class_init_in_progress\\#end,\\#begclass_erroneous_excludes_class_in_init\\#end,\\#begerroneous_class_has_no_initialized_sub_class\\#end,\\#begsuperclasses_of_initialized_classes_are_prepared\\#end,\\#begelementOfEmpty\\#end,\\#begelementOfAllLocs\\#end,\\#begelementOfSingleton\\#end,\\#begelementOfUnion\\#end,\\#begelementOfIntersect\\#end,\\#begelementOfSetMinus\\#end,\\#begelementOfAllFields\\#end,\\#begelementOfAllObjects\\#end,\\#begelementOfArrayRange\\#end,\\#begelementOfFreshLocs\\#end,\\#begequalityToElementOf\\#end,\\#begsubsetToElementOf\\#end,\\#begdisjointToElementOf\\#end,\\#begcreatedInHeapToElementOf\\#end,\\#begelementOfEmptyEQ\\#end,\\#begelementOfAllLocsEQ\\#end,\\#begelementOfSingletonEQ\\#end,\\#begelementOfUnionEQ\\#end,\\#begelementOfIntersectEQ\\#end,\\#begelementOfSetMinusEQ\\#end,\\#begelementOfAllFieldsEQ\\#end,\\#begelementOfAllObjectsEQ\\#end,\\#begelementOfArrayRangeEQ\\#end,\\#begelementOfFreshLocsEQ\\#end,\\#begunionWithEmpty1\\#end,\\#begunionWithEmpty2\\#end,\\#begunionWithAllLocs1\\#end,\\#begunionWithAllLocs2\\#end,\\#begintersectWithEmpty1\\#end,\\#begintersectWithEmpty2\\#end,\\#begintersectWithAllLocs1\\#end,\\#begintersectWithAllLocs2\\#end,\\#begsetMinusWithEmpty1\\#end,\\#begsetMinusWithEmpty2\\#end,\\#begsetMinusWithAllLocs\\#end,\\#begsubsetWithEmpty\\#end,\\#begsubsetWithAllLocs\\#end,\\#begdisjointWithEmpty1\\#end,\\#begdisjointWithEmpty2\\#end,\\#begcreatedInHeapWithEmpty\\#end,\\#begcreatedInHeapWithSingleton\\#end,\\#begcreatedInHeapWithUnion\\#end,\\#begcreatedInHeapWithSetMinusFreshLocs\\#end,\\#begcreatedInHeapWithAllFields\\#end,\\#begcreatedInHeapWithArrayRange\\#end,\\#begreferencedObjectIsCreatedRight\\#end,\\#begreferencedObjectIsCreatedRightEQ\\#end,\\#begunionWithItself\\#end,\\#begintersectWithItself\\#end,\\#begsetMinusItself\\#end,\\#begsubsetOfItself\\#end,\\#begselectOfStore\\#end,\\#begselectOfCreate\\#end,\\#begselectOfAnon\\#end,\\#begselectOfMemset\\#end,\\#begonlyCreatedObjectsAreReferenced\\#end,\\#begonlyCreatedObjectsAreInLocSets\\#end,\\#begonlyCreatedObjectsAreInLocSetsEQ\\#end,\\#begarrayLengthNotNegative\\#end,\\#begwellFormedStoreObject\\#end,\\#begwellFormedStoreLocSet\\#end,\\#begwellFormedStorePrimitive\\#end,\\#begwellFormedCreate\\#end,\\#begwellFormedAnon\\#end,\\#begwellFormedMemsetObject\\#end,\\#begwellFormedMemsetLocSet\\#end,\\#begwellFormedMemsetPrimitive\\#end,\\#begselectOfStoreEQ\\#end,\\#begselectOfCreateEQ\\#end,\\#begselectOfAnonEQ\\#end,\\#begselectOfMemsetEQ\\#end,\\#begmemsetEmpty\\#end,\\#begselectCreatedOfAnonEQ\\#end,\\#begwellFormedStoreObjectEQ\\#end,\\#begwellFormedStoreLocSetEQ\\#end,\\#begwellFormedStorePrimitiveEQ\\#end,\\#begwellFormedAnonEQ\\#end,\\#begwellFormedMemsetObjectEQ\\#end,\\#begwellFormedMemsetPrimitiveEQ\\#end,\\#begaccDefinition\\#end,\\#begreachDefinition\\#end,\\#begreachZero\\#end,\\#begreachOne\\#end,\\#begreachNull\\#end,\\#begreachNull2\\#end,\\#begreachAddOne\\#end,\\#begreachAddOne2\\#end,\\#begreachUniquePathSameObject\\#end,\\#begreachDependenciesStoreSimple\\#end,\\#begreachDoesNotDependOnCreatedness\\#end,\\#begreachDependenciesStore\\#end,\\#begreachDependenciesAnon\\#end,\\#begreachDependenciesAnonCoarse\\#end,\\#begonly_created_objects_are_reachable\\#end,\\#begreach_does_not_depend_on_fresh_locs\\#end,\\#begreach_does_not_depend_on_fresh_locsEQ\\#end [StrategyProperty]NON_LIN_ARITH_OPTIONS_KEY=NON_LIN_ARITH_DEF_OPS [StrategyProperty]LOOP_OPTIONS_KEY=LOOP_NONE [SMTSettings]explicitTypeHierarchy=false diff --git a/key.ui/examples/completionscopes/testCcatchReturnVal.key b/key.ui/examples/completionscopes/testCcatchReturnVal.key index e6cce694d35..d1684114e71 100644 --- a/key.ui/examples/completionscopes/testCcatchReturnVal.key +++ b/key.ui/examples/completionscopes/testCcatchReturnVal.key @@ -34,7 +34,7 @@ [Strategy]MaximumNumberOfAutomaticApplications=7000 [StrategyProperty]AUTO_INDUCTION_OPTIONS_KEY=AUTO_INDUCTION_OFF [StrategyProperty]STOPMODE_OPTIONS_KEY=STOPMODE_DEFAULT -[SMTSettings]SelectedTaclets=\\#begboolean_equal_2\\#end,\\#begboolean_not_equal_1\\#end,\\#begboolean_not_equal_2\\#end,\\#begtrue_to_not_false\\#end,\\#begfalse_to_not_true\\#end,\\#begboolean_true_commute\\#end,\\#begboolean_false_commute\\#end,\\#begapply_eq_boolean\\#end,\\#begapply_eq_boolean_2\\#end,\\#begapply_eq_boolean_rigid\\#end,\\#begapply_eq_boolean_rigid_2\\#end,\\#begexpandInByte\\#end,\\#begexpandInChar\\#end,\\#begexpandInShort\\#end,\\#begexpandInInt\\#end,\\#begexpandInLong\\#end,\\#begreplace_byte_MAX\\#end,\\#begreplace_byte_MIN\\#end,\\#begreplace_char_MAX\\#end,\\#begreplace_char_MIN\\#end,\\#begreplace_short_MAX\\#end,\\#begreplace_short_MIN\\#end,\\#begreplace_int_MAX\\#end,\\#begreplace_int_MIN\\#end,\\#begreplace_long_MAX\\#end,\\#begreplace_long_MIN\\#end,\\#begreplace_byte_RANGE\\#end,\\#begreplace_byte_HALFRANGE\\#end,\\#begreplace_short_RANGE\\#end,\\#begreplace_short_HALFRANGE\\#end,\\#begreplace_char_RANGE\\#end,\\#begreplace_int_RANGE\\#end,\\#begreplace_int_HALFRANGE\\#end,\\#begreplace_long_RANGE\\#end,\\#begreplace_long_HALFRANGE\\#end,\\#begtranslateJavaUnaryMinusInt\\#end,\\#begtranslateJavaUnaryMinusLong\\#end,\\#begtranslateJavaBitwiseNegation\\#end,\\#begtranslateJavaAddInt\\#end,\\#begtranslateJavaAddLong\\#end,\\#begtranslateJavaSubInt\\#end,\\#begtranslateJavaSubLong\\#end,\\#begtranslateJavaMulInt\\#end,\\#begtranslateJavaMulLong\\#end,\\#begtranslateJavaMod\\#end,\\#begtranslateJavaDivInt\\#end,\\#begtranslateJavaDivLong\\#end,\\#begtranslateJavaCastByte\\#end,\\#begtranslateJavaCastShort\\#end,\\#begtranslateJavaCastInt\\#end,\\#begtranslateJavaCastLong\\#end,\\#begtranslateJavaCastChar\\#end,\\#begtranslateJavaShiftRightInt\\#end,\\#begtranslateJavaShiftRightLong\\#end,\\#begtranslateJavaShiftLeftInt\\#end,\\#begtranslateJavaShiftLeftLong\\#end,\\#begtranslateJavaUnsignedShiftRightInt\\#end,\\#begtranslateJavaUnsignedShiftRightLong\\#end,\\#begtranslateJavaBitwiseOrInt\\#end,\\#begtranslateJavaBitwiseOrLong\\#end,\\#begtranslateJavaBitwiseAndInt\\#end,\\#begtranslateJavaBitwiseAndLong\\#end,\\#begtranslateJavaBitwiseXOrInt\\#end,\\#begtranslateJavaBitwiseXOrLong\\#end,\\#begcastDel\\#end,\\#begtypeEq\\#end,\\#begtypeEqDerived\\#end,\\#begtypeEqDerived2\\#end,\\#begtypeStatic\\#end,\\#begcloseType\\#end,\\#begcloseTypeSwitched\\#end,\\#begexact_instance_definition_int\\#end,\\#begexact_instance_definition_boolean\\#end,\\#begexact_instance_definition_null\\#end,\\#begexact_instance_for_interfaces_or_abstract_classes\\#end,\\#begclass_being_initialized_is_prepared\\#end,\\#beginitialized_class_is_prepared\\#end,\\#beginitialized_class_is_not_erroneous\\#end,\\#begclass_initialized_excludes_class_init_in_progress\\#end,\\#begclass_erroneous_excludes_class_in_init\\#end,\\#begerroneous_class_has_no_initialized_sub_class\\#end,\\#begsuperclasses_of_initialized_classes_are_prepared\\#end,\\#begelementOfEmpty\\#end,\\#begelementOfAllLocs\\#end,\\#begelementOfSingleton\\#end,\\#begelementOfUnion\\#end,\\#begelementOfIntersect\\#end,\\#begelementOfSetMinus\\#end,\\#begelementOfAllFields\\#end,\\#begelementOfAllObjects\\#end,\\#begelementOfArrayRange\\#end,\\#begelementOfFreshLocs\\#end,\\#begequalityToElementOf\\#end,\\#begsubsetToElementOf\\#end,\\#begdisjointToElementOf\\#end,\\#begcreatedInHeapToElementOf\\#end,\\#begelementOfEmptyEQ\\#end,\\#begelementOfAllLocsEQ\\#end,\\#begelementOfSingletonEQ\\#end,\\#begelementOfUnionEQ\\#end,\\#begelementOfIntersectEQ\\#end,\\#begelementOfSetMinusEQ\\#end,\\#begelementOfAllFieldsEQ\\#end,\\#begelementOfAllObjectsEQ\\#end,\\#begelementOfArrayRangeEQ\\#end,\\#begelementOfFreshLocsEQ\\#end,\\#begunionWithEmpty1\\#end,\\#begunionWithEmpty2\\#end,\\#begunionWithAllLocs1\\#end,\\#begunionWithAllLocs2\\#end,\\#begintersectWithEmpty1\\#end,\\#begintersectWithEmpty2\\#end,\\#begintersectWithAllLocs1\\#end,\\#begintersectWithAllLocs2\\#end,\\#begsetMinusWithEmpty1\\#end,\\#begsetMinusWithEmpty2\\#end,\\#begsetMinusWithAllLocs\\#end,\\#begsubsetWithEmpty\\#end,\\#begsubsetWithAllLocs\\#end,\\#begdisjointWithEmpty1\\#end,\\#begdisjointWithEmpty2\\#end,\\#begcreatedInHeapWithEmpty\\#end,\\#begcreatedInHeapWithSingleton\\#end,\\#begcreatedInHeapWithUnion\\#end,\\#begcreatedInHeapWithSetMinusFreshLocs\\#end,\\#begcreatedInHeapWithAllFields\\#end,\\#begcreatedInHeapWithArrayRange\\#end,\\#begreferencedObjectIsCreatedRight\\#end,\\#begreferencedObjectIsCreatedRightEQ\\#end,\\#begunionWithItself\\#end,\\#begintersectWithItself\\#end,\\#begsetMinusItself\\#end,\\#begsubsetOfItself\\#end,\\#begselectOfStore\\#end,\\#begselectOfCreate\\#end,\\#begselectOfAnon\\#end,\\#begselectOfMemset\\#end,\\#begonlyCreatedObjectsAreReferenced\\#end,\\#begonlyCreatedObjectsAreInLocSets\\#end,\\#begonlyCreatedObjectsAreInLocSetsEQ\\#end,\\#begarrayLengthNotNegative\\#end,\\#begwellFormedStoreObject\\#end,\\#begwellFormedStoreLocSet\\#end,\\#begwellFormedStorePrimitive\\#end,\\#begwellFormedCreate\\#end,\\#begwellFormedAnon\\#end,\\#begwellFormedMemsetObject\\#end,\\#begwellFormedMemsetLocSet\\#end,\\#begwellFormedMemsetPrimitive\\#end,\\#begselectOfStoreEQ\\#end,\\#begselectOfCreateEQ\\#end,\\#begselectOfAnonEQ\\#end,\\#begselectOfMemsetEQ\\#end,\\#begmemsetEmpty\\#end,\\#begselectCreatedOfAnonEQ\\#end,\\#begwellFormedStoreObjectEQ\\#end,\\#begwellFormedStoreLocSetEQ\\#end,\\#begwellFormedStorePrimitiveEQ\\#end,\\#begwellFormedAnonEQ\\#end,\\#begwellFormedMemsetObjectEQ\\#end,\\#begwellFormedMemsetPrimitiveEQ\\#end,\\#begaccDefinition\\#end,\\#begreachDefinition\\#end,\\#begreachZero\\#end,\\#begreachOne\\#end,\\#begreachNull\\#end,\\#begreachNull2\\#end,\\#begreachAddOne\\#end,\\#begreachAddOne2\\#end,\\#begreachUniquePathSameObject\\#end,\\#begreachDependenciesStoreSimple\\#end,\\#begreachDoesNotDependOnCreatedness\\#end,\\#begreachDependenciesStore\\#end,\\#begreachDependenciesAnon\\#end,\\#begreachDependenciesAnonCoarse\\#end,\\#begonly_created_objects_are_reachable\\#end,\\#begreach_does_not_depend_on_fresh_locs\\#end,\\#begreach_does_not_depend_on_fresh_locs_EQ\\#end +[SMTSettings]SelectedTaclets=\\#begboolean_equal_2\\#end,\\#begboolean_not_equal_1\\#end,\\#begboolean_not_equal_2\\#end,\\#begtrue_to_not_false\\#end,\\#begfalse_to_not_true\\#end,\\#begboolean_true_commute\\#end,\\#begboolean_false_commute\\#end,\\#begapply_eq_boolean\\#end,\\#begapply_eq_boolean_2\\#end,\\#begapply_eq_boolean_rigid\\#end,\\#begapply_eq_boolean_rigid_2\\#end,\\#begexpandInByte\\#end,\\#begexpandInChar\\#end,\\#begexpandInShort\\#end,\\#begexpandInInt\\#end,\\#begexpandInLong\\#end,\\#begreplace_byte_MAX\\#end,\\#begreplace_byte_MIN\\#end,\\#begreplace_char_MAX\\#end,\\#begreplace_char_MIN\\#end,\\#begreplace_short_MAX\\#end,\\#begreplace_short_MIN\\#end,\\#begreplace_int_MAX\\#end,\\#begreplace_int_MIN\\#end,\\#begreplace_long_MAX\\#end,\\#begreplace_long_MIN\\#end,\\#begreplace_byte_RANGE\\#end,\\#begreplace_byte_HALFRANGE\\#end,\\#begreplace_short_RANGE\\#end,\\#begreplace_short_HALFRANGE\\#end,\\#begreplace_char_RANGE\\#end,\\#begreplace_int_RANGE\\#end,\\#begreplace_int_HALFRANGE\\#end,\\#begreplace_long_RANGE\\#end,\\#begreplace_long_HALFRANGE\\#end,\\#begtranslateJavaUnaryMinusInt\\#end,\\#begtranslateJavaUnaryMinusLong\\#end,\\#begtranslateJavaBitwiseNegation\\#end,\\#begtranslateJavaAddInt\\#end,\\#begtranslateJavaAddLong\\#end,\\#begtranslateJavaSubInt\\#end,\\#begtranslateJavaSubLong\\#end,\\#begtranslateJavaMulInt\\#end,\\#begtranslateJavaMulLong\\#end,\\#begtranslateJavaMod\\#end,\\#begtranslateJavaDivInt\\#end,\\#begtranslateJavaDivLong\\#end,\\#begtranslateJavaCastByte\\#end,\\#begtranslateJavaCastShort\\#end,\\#begtranslateJavaCastInt\\#end,\\#begtranslateJavaCastLong\\#end,\\#begtranslateJavaCastChar\\#end,\\#begtranslateJavaShiftRightInt\\#end,\\#begtranslateJavaShiftRightLong\\#end,\\#begtranslateJavaShiftLeftInt\\#end,\\#begtranslateJavaShiftLeftLong\\#end,\\#begtranslateJavaUnsignedShiftRightInt\\#end,\\#begtranslateJavaUnsignedShiftRightLong\\#end,\\#begtranslateJavaBitwiseOrInt\\#end,\\#begtranslateJavaBitwiseOrLong\\#end,\\#begtranslateJavaBitwiseAndInt\\#end,\\#begtranslateJavaBitwiseAndLong\\#end,\\#begtranslateJavaBitwiseXOrInt\\#end,\\#begtranslateJavaBitwiseXOrLong\\#end,\\#begcastDel\\#end,\\#begtypeEq\\#end,\\#begtypeEqDerived\\#end,\\#begtypeEqDerived2\\#end,\\#begtypeStatic\\#end,\\#begcloseType\\#end,\\#begcloseTypeSwitched\\#end,\\#begexact_instance_definition_int\\#end,\\#begexact_instance_definition_boolean\\#end,\\#begexact_instance_definition_null\\#end,\\#begexact_instance_for_interfaces_or_abstract_classes\\#end,\\#begclass_being_initialized_is_prepared\\#end,\\#beginitialized_class_is_prepared\\#end,\\#beginitialized_class_is_not_erroneous\\#end,\\#begclass_initialized_excludes_class_init_in_progress\\#end,\\#begclass_erroneous_excludes_class_in_init\\#end,\\#begerroneous_class_has_no_initialized_sub_class\\#end,\\#begsuperclasses_of_initialized_classes_are_prepared\\#end,\\#begelementOfEmpty\\#end,\\#begelementOfAllLocs\\#end,\\#begelementOfSingleton\\#end,\\#begelementOfUnion\\#end,\\#begelementOfIntersect\\#end,\\#begelementOfSetMinus\\#end,\\#begelementOfAllFields\\#end,\\#begelementOfAllObjects\\#end,\\#begelementOfArrayRange\\#end,\\#begelementOfFreshLocs\\#end,\\#begequalityToElementOf\\#end,\\#begsubsetToElementOf\\#end,\\#begdisjointToElementOf\\#end,\\#begcreatedInHeapToElementOf\\#end,\\#begelementOfEmptyEQ\\#end,\\#begelementOfAllLocsEQ\\#end,\\#begelementOfSingletonEQ\\#end,\\#begelementOfUnionEQ\\#end,\\#begelementOfIntersectEQ\\#end,\\#begelementOfSetMinusEQ\\#end,\\#begelementOfAllFieldsEQ\\#end,\\#begelementOfAllObjectsEQ\\#end,\\#begelementOfArrayRangeEQ\\#end,\\#begelementOfFreshLocsEQ\\#end,\\#begunionWithEmpty1\\#end,\\#begunionWithEmpty2\\#end,\\#begunionWithAllLocs1\\#end,\\#begunionWithAllLocs2\\#end,\\#begintersectWithEmpty1\\#end,\\#begintersectWithEmpty2\\#end,\\#begintersectWithAllLocs1\\#end,\\#begintersectWithAllLocs2\\#end,\\#begsetMinusWithEmpty1\\#end,\\#begsetMinusWithEmpty2\\#end,\\#begsetMinusWithAllLocs\\#end,\\#begsubsetWithEmpty\\#end,\\#begsubsetWithAllLocs\\#end,\\#begdisjointWithEmpty1\\#end,\\#begdisjointWithEmpty2\\#end,\\#begcreatedInHeapWithEmpty\\#end,\\#begcreatedInHeapWithSingleton\\#end,\\#begcreatedInHeapWithUnion\\#end,\\#begcreatedInHeapWithSetMinusFreshLocs\\#end,\\#begcreatedInHeapWithAllFields\\#end,\\#begcreatedInHeapWithArrayRange\\#end,\\#begreferencedObjectIsCreatedRight\\#end,\\#begreferencedObjectIsCreatedRightEQ\\#end,\\#begunionWithItself\\#end,\\#begintersectWithItself\\#end,\\#begsetMinusItself\\#end,\\#begsubsetOfItself\\#end,\\#begselectOfStore\\#end,\\#begselectOfCreate\\#end,\\#begselectOfAnon\\#end,\\#begselectOfMemset\\#end,\\#begonlyCreatedObjectsAreReferenced\\#end,\\#begonlyCreatedObjectsAreInLocSets\\#end,\\#begonlyCreatedObjectsAreInLocSetsEQ\\#end,\\#begarrayLengthNotNegative\\#end,\\#begwellFormedStoreObject\\#end,\\#begwellFormedStoreLocSet\\#end,\\#begwellFormedStorePrimitive\\#end,\\#begwellFormedCreate\\#end,\\#begwellFormedAnon\\#end,\\#begwellFormedMemsetObject\\#end,\\#begwellFormedMemsetLocSet\\#end,\\#begwellFormedMemsetPrimitive\\#end,\\#begselectOfStoreEQ\\#end,\\#begselectOfCreateEQ\\#end,\\#begselectOfAnonEQ\\#end,\\#begselectOfMemsetEQ\\#end,\\#begmemsetEmpty\\#end,\\#begselectCreatedOfAnonEQ\\#end,\\#begwellFormedStoreObjectEQ\\#end,\\#begwellFormedStoreLocSetEQ\\#end,\\#begwellFormedStorePrimitiveEQ\\#end,\\#begwellFormedAnonEQ\\#end,\\#begwellFormedMemsetObjectEQ\\#end,\\#begwellFormedMemsetPrimitiveEQ\\#end,\\#begaccDefinition\\#end,\\#begreachDefinition\\#end,\\#begreachZero\\#end,\\#begreachOne\\#end,\\#begreachNull\\#end,\\#begreachNull2\\#end,\\#begreachAddOne\\#end,\\#begreachAddOne2\\#end,\\#begreachUniquePathSameObject\\#end,\\#begreachDependenciesStoreSimple\\#end,\\#begreachDoesNotDependOnCreatedness\\#end,\\#begreachDependenciesStore\\#end,\\#begreachDependenciesAnon\\#end,\\#begreachDependenciesAnonCoarse\\#end,\\#begonly_created_objects_are_reachable\\#end,\\#begreach_does_not_depend_on_fresh_locs\\#end,\\#begreach_does_not_depend_on_fresh_locsEQ\\#end [StrategyProperty]NON_LIN_ARITH_OPTIONS_KEY=NON_LIN_ARITH_DEF_OPS [StrategyProperty]LOOP_OPTIONS_KEY=LOOP_NONE [SMTSettings]explicitTypeHierarchy=false diff --git a/key.ui/examples/completionscopes/testMultCcatchClauses.key b/key.ui/examples/completionscopes/testMultCcatchClauses.key index adb50159a33..bfe23028c20 100644 --- a/key.ui/examples/completionscopes/testMultCcatchClauses.key +++ b/key.ui/examples/completionscopes/testMultCcatchClauses.key @@ -34,7 +34,7 @@ [Strategy]MaximumNumberOfAutomaticApplications=7000 [StrategyProperty]AUTO_INDUCTION_OPTIONS_KEY=AUTO_INDUCTION_OFF [StrategyProperty]STOPMODE_OPTIONS_KEY=STOPMODE_DEFAULT -[SMTSettings]SelectedTaclets=\\#begboolean_equal_2\\#end,\\#begboolean_not_equal_1\\#end,\\#begboolean_not_equal_2\\#end,\\#begtrue_to_not_false\\#end,\\#begfalse_to_not_true\\#end,\\#begboolean_true_commute\\#end,\\#begboolean_false_commute\\#end,\\#begapply_eq_boolean\\#end,\\#begapply_eq_boolean_2\\#end,\\#begapply_eq_boolean_rigid\\#end,\\#begapply_eq_boolean_rigid_2\\#end,\\#begexpandInByte\\#end,\\#begexpandInChar\\#end,\\#begexpandInShort\\#end,\\#begexpandInInt\\#end,\\#begexpandInLong\\#end,\\#begreplace_byte_MAX\\#end,\\#begreplace_byte_MIN\\#end,\\#begreplace_char_MAX\\#end,\\#begreplace_char_MIN\\#end,\\#begreplace_short_MAX\\#end,\\#begreplace_short_MIN\\#end,\\#begreplace_int_MAX\\#end,\\#begreplace_int_MIN\\#end,\\#begreplace_long_MAX\\#end,\\#begreplace_long_MIN\\#end,\\#begreplace_byte_RANGE\\#end,\\#begreplace_byte_HALFRANGE\\#end,\\#begreplace_short_RANGE\\#end,\\#begreplace_short_HALFRANGE\\#end,\\#begreplace_char_RANGE\\#end,\\#begreplace_int_RANGE\\#end,\\#begreplace_int_HALFRANGE\\#end,\\#begreplace_long_RANGE\\#end,\\#begreplace_long_HALFRANGE\\#end,\\#begtranslateJavaUnaryMinusInt\\#end,\\#begtranslateJavaUnaryMinusLong\\#end,\\#begtranslateJavaBitwiseNegation\\#end,\\#begtranslateJavaAddInt\\#end,\\#begtranslateJavaAddLong\\#end,\\#begtranslateJavaSubInt\\#end,\\#begtranslateJavaSubLong\\#end,\\#begtranslateJavaMulInt\\#end,\\#begtranslateJavaMulLong\\#end,\\#begtranslateJavaMod\\#end,\\#begtranslateJavaDivInt\\#end,\\#begtranslateJavaDivLong\\#end,\\#begtranslateJavaCastByte\\#end,\\#begtranslateJavaCastShort\\#end,\\#begtranslateJavaCastInt\\#end,\\#begtranslateJavaCastLong\\#end,\\#begtranslateJavaCastChar\\#end,\\#begtranslateJavaShiftRightInt\\#end,\\#begtranslateJavaShiftRightLong\\#end,\\#begtranslateJavaShiftLeftInt\\#end,\\#begtranslateJavaShiftLeftLong\\#end,\\#begtranslateJavaUnsignedShiftRightInt\\#end,\\#begtranslateJavaUnsignedShiftRightLong\\#end,\\#begtranslateJavaBitwiseOrInt\\#end,\\#begtranslateJavaBitwiseOrLong\\#end,\\#begtranslateJavaBitwiseAndInt\\#end,\\#begtranslateJavaBitwiseAndLong\\#end,\\#begtranslateJavaBitwiseXOrInt\\#end,\\#begtranslateJavaBitwiseXOrLong\\#end,\\#begcastDel\\#end,\\#begtypeEq\\#end,\\#begtypeEqDerived\\#end,\\#begtypeEqDerived2\\#end,\\#begtypeStatic\\#end,\\#begcloseType\\#end,\\#begcloseTypeSwitched\\#end,\\#begexact_instance_definition_int\\#end,\\#begexact_instance_definition_boolean\\#end,\\#begexact_instance_definition_null\\#end,\\#begexact_instance_for_interfaces_or_abstract_classes\\#end,\\#begclass_being_initialized_is_prepared\\#end,\\#beginitialized_class_is_prepared\\#end,\\#beginitialized_class_is_not_erroneous\\#end,\\#begclass_initialized_excludes_class_init_in_progress\\#end,\\#begclass_erroneous_excludes_class_in_init\\#end,\\#begerroneous_class_has_no_initialized_sub_class\\#end,\\#begsuperclasses_of_initialized_classes_are_prepared\\#end,\\#begelementOfEmpty\\#end,\\#begelementOfAllLocs\\#end,\\#begelementOfSingleton\\#end,\\#begelementOfUnion\\#end,\\#begelementOfIntersect\\#end,\\#begelementOfSetMinus\\#end,\\#begelementOfAllFields\\#end,\\#begelementOfAllObjects\\#end,\\#begelementOfArrayRange\\#end,\\#begelementOfFreshLocs\\#end,\\#begequalityToElementOf\\#end,\\#begsubsetToElementOf\\#end,\\#begdisjointToElementOf\\#end,\\#begcreatedInHeapToElementOf\\#end,\\#begelementOfEmptyEQ\\#end,\\#begelementOfAllLocsEQ\\#end,\\#begelementOfSingletonEQ\\#end,\\#begelementOfUnionEQ\\#end,\\#begelementOfIntersectEQ\\#end,\\#begelementOfSetMinusEQ\\#end,\\#begelementOfAllFieldsEQ\\#end,\\#begelementOfAllObjectsEQ\\#end,\\#begelementOfArrayRangeEQ\\#end,\\#begelementOfFreshLocsEQ\\#end,\\#begunionWithEmpty1\\#end,\\#begunionWithEmpty2\\#end,\\#begunionWithAllLocs1\\#end,\\#begunionWithAllLocs2\\#end,\\#begintersectWithEmpty1\\#end,\\#begintersectWithEmpty2\\#end,\\#begintersectWithAllLocs1\\#end,\\#begintersectWithAllLocs2\\#end,\\#begsetMinusWithEmpty1\\#end,\\#begsetMinusWithEmpty2\\#end,\\#begsetMinusWithAllLocs\\#end,\\#begsubsetWithEmpty\\#end,\\#begsubsetWithAllLocs\\#end,\\#begdisjointWithEmpty1\\#end,\\#begdisjointWithEmpty2\\#end,\\#begcreatedInHeapWithEmpty\\#end,\\#begcreatedInHeapWithSingleton\\#end,\\#begcreatedInHeapWithUnion\\#end,\\#begcreatedInHeapWithSetMinusFreshLocs\\#end,\\#begcreatedInHeapWithAllFields\\#end,\\#begcreatedInHeapWithArrayRange\\#end,\\#begreferencedObjectIsCreatedRight\\#end,\\#begreferencedObjectIsCreatedRightEQ\\#end,\\#begunionWithItself\\#end,\\#begintersectWithItself\\#end,\\#begsetMinusItself\\#end,\\#begsubsetOfItself\\#end,\\#begselectOfStore\\#end,\\#begselectOfCreate\\#end,\\#begselectOfAnon\\#end,\\#begselectOfMemset\\#end,\\#begonlyCreatedObjectsAreReferenced\\#end,\\#begonlyCreatedObjectsAreInLocSets\\#end,\\#begonlyCreatedObjectsAreInLocSetsEQ\\#end,\\#begarrayLengthNotNegative\\#end,\\#begwellFormedStoreObject\\#end,\\#begwellFormedStoreLocSet\\#end,\\#begwellFormedStorePrimitive\\#end,\\#begwellFormedCreate\\#end,\\#begwellFormedAnon\\#end,\\#begwellFormedMemsetObject\\#end,\\#begwellFormedMemsetLocSet\\#end,\\#begwellFormedMemsetPrimitive\\#end,\\#begselectOfStoreEQ\\#end,\\#begselectOfCreateEQ\\#end,\\#begselectOfAnonEQ\\#end,\\#begselectOfMemsetEQ\\#end,\\#begmemsetEmpty\\#end,\\#begselectCreatedOfAnonEQ\\#end,\\#begwellFormedStoreObjectEQ\\#end,\\#begwellFormedStoreLocSetEQ\\#end,\\#begwellFormedStorePrimitiveEQ\\#end,\\#begwellFormedAnonEQ\\#end,\\#begwellFormedMemsetObjectEQ\\#end,\\#begwellFormedMemsetPrimitiveEQ\\#end,\\#begaccDefinition\\#end,\\#begreachDefinition\\#end,\\#begreachZero\\#end,\\#begreachOne\\#end,\\#begreachNull\\#end,\\#begreachNull2\\#end,\\#begreachAddOne\\#end,\\#begreachAddOne2\\#end,\\#begreachUniquePathSameObject\\#end,\\#begreachDependenciesStoreSimple\\#end,\\#begreachDoesNotDependOnCreatedness\\#end,\\#begreachDependenciesStore\\#end,\\#begreachDependenciesAnon\\#end,\\#begreachDependenciesAnonCoarse\\#end,\\#begonly_created_objects_are_reachable\\#end,\\#begreach_does_not_depend_on_fresh_locs\\#end,\\#begreach_does_not_depend_on_fresh_locs_EQ\\#end +[SMTSettings]SelectedTaclets=\\#begboolean_equal_2\\#end,\\#begboolean_not_equal_1\\#end,\\#begboolean_not_equal_2\\#end,\\#begtrue_to_not_false\\#end,\\#begfalse_to_not_true\\#end,\\#begboolean_true_commute\\#end,\\#begboolean_false_commute\\#end,\\#begapply_eq_boolean\\#end,\\#begapply_eq_boolean_2\\#end,\\#begapply_eq_boolean_rigid\\#end,\\#begapply_eq_boolean_rigid_2\\#end,\\#begexpandInByte\\#end,\\#begexpandInChar\\#end,\\#begexpandInShort\\#end,\\#begexpandInInt\\#end,\\#begexpandInLong\\#end,\\#begreplace_byte_MAX\\#end,\\#begreplace_byte_MIN\\#end,\\#begreplace_char_MAX\\#end,\\#begreplace_char_MIN\\#end,\\#begreplace_short_MAX\\#end,\\#begreplace_short_MIN\\#end,\\#begreplace_int_MAX\\#end,\\#begreplace_int_MIN\\#end,\\#begreplace_long_MAX\\#end,\\#begreplace_long_MIN\\#end,\\#begreplace_byte_RANGE\\#end,\\#begreplace_byte_HALFRANGE\\#end,\\#begreplace_short_RANGE\\#end,\\#begreplace_short_HALFRANGE\\#end,\\#begreplace_char_RANGE\\#end,\\#begreplace_int_RANGE\\#end,\\#begreplace_int_HALFRANGE\\#end,\\#begreplace_long_RANGE\\#end,\\#begreplace_long_HALFRANGE\\#end,\\#begtranslateJavaUnaryMinusInt\\#end,\\#begtranslateJavaUnaryMinusLong\\#end,\\#begtranslateJavaBitwiseNegation\\#end,\\#begtranslateJavaAddInt\\#end,\\#begtranslateJavaAddLong\\#end,\\#begtranslateJavaSubInt\\#end,\\#begtranslateJavaSubLong\\#end,\\#begtranslateJavaMulInt\\#end,\\#begtranslateJavaMulLong\\#end,\\#begtranslateJavaMod\\#end,\\#begtranslateJavaDivInt\\#end,\\#begtranslateJavaDivLong\\#end,\\#begtranslateJavaCastByte\\#end,\\#begtranslateJavaCastShort\\#end,\\#begtranslateJavaCastInt\\#end,\\#begtranslateJavaCastLong\\#end,\\#begtranslateJavaCastChar\\#end,\\#begtranslateJavaShiftRightInt\\#end,\\#begtranslateJavaShiftRightLong\\#end,\\#begtranslateJavaShiftLeftInt\\#end,\\#begtranslateJavaShiftLeftLong\\#end,\\#begtranslateJavaUnsignedShiftRightInt\\#end,\\#begtranslateJavaUnsignedShiftRightLong\\#end,\\#begtranslateJavaBitwiseOrInt\\#end,\\#begtranslateJavaBitwiseOrLong\\#end,\\#begtranslateJavaBitwiseAndInt\\#end,\\#begtranslateJavaBitwiseAndLong\\#end,\\#begtranslateJavaBitwiseXOrInt\\#end,\\#begtranslateJavaBitwiseXOrLong\\#end,\\#begcastDel\\#end,\\#begtypeEq\\#end,\\#begtypeEqDerived\\#end,\\#begtypeEqDerived2\\#end,\\#begtypeStatic\\#end,\\#begcloseType\\#end,\\#begcloseTypeSwitched\\#end,\\#begexact_instance_definition_int\\#end,\\#begexact_instance_definition_boolean\\#end,\\#begexact_instance_definition_null\\#end,\\#begexact_instance_for_interfaces_or_abstract_classes\\#end,\\#begclass_being_initialized_is_prepared\\#end,\\#beginitialized_class_is_prepared\\#end,\\#beginitialized_class_is_not_erroneous\\#end,\\#begclass_initialized_excludes_class_init_in_progress\\#end,\\#begclass_erroneous_excludes_class_in_init\\#end,\\#begerroneous_class_has_no_initialized_sub_class\\#end,\\#begsuperclasses_of_initialized_classes_are_prepared\\#end,\\#begelementOfEmpty\\#end,\\#begelementOfAllLocs\\#end,\\#begelementOfSingleton\\#end,\\#begelementOfUnion\\#end,\\#begelementOfIntersect\\#end,\\#begelementOfSetMinus\\#end,\\#begelementOfAllFields\\#end,\\#begelementOfAllObjects\\#end,\\#begelementOfArrayRange\\#end,\\#begelementOfFreshLocs\\#end,\\#begequalityToElementOf\\#end,\\#begsubsetToElementOf\\#end,\\#begdisjointToElementOf\\#end,\\#begcreatedInHeapToElementOf\\#end,\\#begelementOfEmptyEQ\\#end,\\#begelementOfAllLocsEQ\\#end,\\#begelementOfSingletonEQ\\#end,\\#begelementOfUnionEQ\\#end,\\#begelementOfIntersectEQ\\#end,\\#begelementOfSetMinusEQ\\#end,\\#begelementOfAllFieldsEQ\\#end,\\#begelementOfAllObjectsEQ\\#end,\\#begelementOfArrayRangeEQ\\#end,\\#begelementOfFreshLocsEQ\\#end,\\#begunionWithEmpty1\\#end,\\#begunionWithEmpty2\\#end,\\#begunionWithAllLocs1\\#end,\\#begunionWithAllLocs2\\#end,\\#begintersectWithEmpty1\\#end,\\#begintersectWithEmpty2\\#end,\\#begintersectWithAllLocs1\\#end,\\#begintersectWithAllLocs2\\#end,\\#begsetMinusWithEmpty1\\#end,\\#begsetMinusWithEmpty2\\#end,\\#begsetMinusWithAllLocs\\#end,\\#begsubsetWithEmpty\\#end,\\#begsubsetWithAllLocs\\#end,\\#begdisjointWithEmpty1\\#end,\\#begdisjointWithEmpty2\\#end,\\#begcreatedInHeapWithEmpty\\#end,\\#begcreatedInHeapWithSingleton\\#end,\\#begcreatedInHeapWithUnion\\#end,\\#begcreatedInHeapWithSetMinusFreshLocs\\#end,\\#begcreatedInHeapWithAllFields\\#end,\\#begcreatedInHeapWithArrayRange\\#end,\\#begreferencedObjectIsCreatedRight\\#end,\\#begreferencedObjectIsCreatedRightEQ\\#end,\\#begunionWithItself\\#end,\\#begintersectWithItself\\#end,\\#begsetMinusItself\\#end,\\#begsubsetOfItself\\#end,\\#begselectOfStore\\#end,\\#begselectOfCreate\\#end,\\#begselectOfAnon\\#end,\\#begselectOfMemset\\#end,\\#begonlyCreatedObjectsAreReferenced\\#end,\\#begonlyCreatedObjectsAreInLocSets\\#end,\\#begonlyCreatedObjectsAreInLocSetsEQ\\#end,\\#begarrayLengthNotNegative\\#end,\\#begwellFormedStoreObject\\#end,\\#begwellFormedStoreLocSet\\#end,\\#begwellFormedStorePrimitive\\#end,\\#begwellFormedCreate\\#end,\\#begwellFormedAnon\\#end,\\#begwellFormedMemsetObject\\#end,\\#begwellFormedMemsetLocSet\\#end,\\#begwellFormedMemsetPrimitive\\#end,\\#begselectOfStoreEQ\\#end,\\#begselectOfCreateEQ\\#end,\\#begselectOfAnonEQ\\#end,\\#begselectOfMemsetEQ\\#end,\\#begmemsetEmpty\\#end,\\#begselectCreatedOfAnonEQ\\#end,\\#begwellFormedStoreObjectEQ\\#end,\\#begwellFormedStoreLocSetEQ\\#end,\\#begwellFormedStorePrimitiveEQ\\#end,\\#begwellFormedAnonEQ\\#end,\\#begwellFormedMemsetObjectEQ\\#end,\\#begwellFormedMemsetPrimitiveEQ\\#end,\\#begaccDefinition\\#end,\\#begreachDefinition\\#end,\\#begreachZero\\#end,\\#begreachOne\\#end,\\#begreachNull\\#end,\\#begreachNull2\\#end,\\#begreachAddOne\\#end,\\#begreachAddOne2\\#end,\\#begreachUniquePathSameObject\\#end,\\#begreachDependenciesStoreSimple\\#end,\\#begreachDoesNotDependOnCreatedness\\#end,\\#begreachDependenciesStore\\#end,\\#begreachDependenciesAnon\\#end,\\#begreachDependenciesAnonCoarse\\#end,\\#begonly_created_objects_are_reachable\\#end,\\#begreach_does_not_depend_on_fresh_locs\\#end,\\#begreach_does_not_depend_on_fresh_locsEQ\\#end [StrategyProperty]NON_LIN_ARITH_OPTIONS_KEY=NON_LIN_ARITH_DEF_OPS [StrategyProperty]LOOP_OPTIONS_KEY=LOOP_NONE [SMTSettings]explicitTypeHierarchy=false diff --git a/key.ui/examples/completionscopes/testNestedExec.key b/key.ui/examples/completionscopes/testNestedExec.key index ac28cc50d36..d5fec3f1c38 100644 --- a/key.ui/examples/completionscopes/testNestedExec.key +++ b/key.ui/examples/completionscopes/testNestedExec.key @@ -34,7 +34,7 @@ [Strategy]MaximumNumberOfAutomaticApplications=7000 [StrategyProperty]AUTO_INDUCTION_OPTIONS_KEY=AUTO_INDUCTION_OFF [StrategyProperty]STOPMODE_OPTIONS_KEY=STOPMODE_DEFAULT -[SMTSettings]SelectedTaclets=\\#begboolean_equal_2\\#end,\\#begboolean_not_equal_1\\#end,\\#begboolean_not_equal_2\\#end,\\#begtrue_to_not_false\\#end,\\#begfalse_to_not_true\\#end,\\#begboolean_true_commute\\#end,\\#begboolean_false_commute\\#end,\\#begapply_eq_boolean\\#end,\\#begapply_eq_boolean_2\\#end,\\#begapply_eq_boolean_rigid\\#end,\\#begapply_eq_boolean_rigid_2\\#end,\\#begexpandInByte\\#end,\\#begexpandInChar\\#end,\\#begexpandInShort\\#end,\\#begexpandInInt\\#end,\\#begexpandInLong\\#end,\\#begreplace_byte_MAX\\#end,\\#begreplace_byte_MIN\\#end,\\#begreplace_char_MAX\\#end,\\#begreplace_char_MIN\\#end,\\#begreplace_short_MAX\\#end,\\#begreplace_short_MIN\\#end,\\#begreplace_int_MAX\\#end,\\#begreplace_int_MIN\\#end,\\#begreplace_long_MAX\\#end,\\#begreplace_long_MIN\\#end,\\#begreplace_byte_RANGE\\#end,\\#begreplace_byte_HALFRANGE\\#end,\\#begreplace_short_RANGE\\#end,\\#begreplace_short_HALFRANGE\\#end,\\#begreplace_char_RANGE\\#end,\\#begreplace_int_RANGE\\#end,\\#begreplace_int_HALFRANGE\\#end,\\#begreplace_long_RANGE\\#end,\\#begreplace_long_HALFRANGE\\#end,\\#begtranslateJavaUnaryMinusInt\\#end,\\#begtranslateJavaUnaryMinusLong\\#end,\\#begtranslateJavaBitwiseNegation\\#end,\\#begtranslateJavaAddInt\\#end,\\#begtranslateJavaAddLong\\#end,\\#begtranslateJavaSubInt\\#end,\\#begtranslateJavaSubLong\\#end,\\#begtranslateJavaMulInt\\#end,\\#begtranslateJavaMulLong\\#end,\\#begtranslateJavaMod\\#end,\\#begtranslateJavaDivInt\\#end,\\#begtranslateJavaDivLong\\#end,\\#begtranslateJavaCastByte\\#end,\\#begtranslateJavaCastShort\\#end,\\#begtranslateJavaCastInt\\#end,\\#begtranslateJavaCastLong\\#end,\\#begtranslateJavaCastChar\\#end,\\#begtranslateJavaShiftRightInt\\#end,\\#begtranslateJavaShiftRightLong\\#end,\\#begtranslateJavaShiftLeftInt\\#end,\\#begtranslateJavaShiftLeftLong\\#end,\\#begtranslateJavaUnsignedShiftRightInt\\#end,\\#begtranslateJavaUnsignedShiftRightLong\\#end,\\#begtranslateJavaBitwiseOrInt\\#end,\\#begtranslateJavaBitwiseOrLong\\#end,\\#begtranslateJavaBitwiseAndInt\\#end,\\#begtranslateJavaBitwiseAndLong\\#end,\\#begtranslateJavaBitwiseXOrInt\\#end,\\#begtranslateJavaBitwiseXOrLong\\#end,\\#begcastDel\\#end,\\#begtypeEq\\#end,\\#begtypeEqDerived\\#end,\\#begtypeEqDerived2\\#end,\\#begtypeStatic\\#end,\\#begcloseType\\#end,\\#begcloseTypeSwitched\\#end,\\#begexact_instance_definition_int\\#end,\\#begexact_instance_definition_boolean\\#end,\\#begexact_instance_definition_null\\#end,\\#begexact_instance_for_interfaces_or_abstract_classes\\#end,\\#begclass_being_initialized_is_prepared\\#end,\\#beginitialized_class_is_prepared\\#end,\\#beginitialized_class_is_not_erroneous\\#end,\\#begclass_initialized_excludes_class_init_in_progress\\#end,\\#begclass_erroneous_excludes_class_in_init\\#end,\\#begerroneous_class_has_no_initialized_sub_class\\#end,\\#begsuperclasses_of_initialized_classes_are_prepared\\#end,\\#begelementOfEmpty\\#end,\\#begelementOfAllLocs\\#end,\\#begelementOfSingleton\\#end,\\#begelementOfUnion\\#end,\\#begelementOfIntersect\\#end,\\#begelementOfSetMinus\\#end,\\#begelementOfAllFields\\#end,\\#begelementOfAllObjects\\#end,\\#begelementOfArrayRange\\#end,\\#begelementOfFreshLocs\\#end,\\#begequalityToElementOf\\#end,\\#begsubsetToElementOf\\#end,\\#begdisjointToElementOf\\#end,\\#begcreatedInHeapToElementOf\\#end,\\#begelementOfEmptyEQ\\#end,\\#begelementOfAllLocsEQ\\#end,\\#begelementOfSingletonEQ\\#end,\\#begelementOfUnionEQ\\#end,\\#begelementOfIntersectEQ\\#end,\\#begelementOfSetMinusEQ\\#end,\\#begelementOfAllFieldsEQ\\#end,\\#begelementOfAllObjectsEQ\\#end,\\#begelementOfArrayRangeEQ\\#end,\\#begelementOfFreshLocsEQ\\#end,\\#begunionWithEmpty1\\#end,\\#begunionWithEmpty2\\#end,\\#begunionWithAllLocs1\\#end,\\#begunionWithAllLocs2\\#end,\\#begintersectWithEmpty1\\#end,\\#begintersectWithEmpty2\\#end,\\#begintersectWithAllLocs1\\#end,\\#begintersectWithAllLocs2\\#end,\\#begsetMinusWithEmpty1\\#end,\\#begsetMinusWithEmpty2\\#end,\\#begsetMinusWithAllLocs\\#end,\\#begsubsetWithEmpty\\#end,\\#begsubsetWithAllLocs\\#end,\\#begdisjointWithEmpty1\\#end,\\#begdisjointWithEmpty2\\#end,\\#begcreatedInHeapWithEmpty\\#end,\\#begcreatedInHeapWithSingleton\\#end,\\#begcreatedInHeapWithUnion\\#end,\\#begcreatedInHeapWithSetMinusFreshLocs\\#end,\\#begcreatedInHeapWithAllFields\\#end,\\#begcreatedInHeapWithArrayRange\\#end,\\#begreferencedObjectIsCreatedRight\\#end,\\#begreferencedObjectIsCreatedRightEQ\\#end,\\#begunionWithItself\\#end,\\#begintersectWithItself\\#end,\\#begsetMinusItself\\#end,\\#begsubsetOfItself\\#end,\\#begselectOfStore\\#end,\\#begselectOfCreate\\#end,\\#begselectOfAnon\\#end,\\#begselectOfMemset\\#end,\\#begonlyCreatedObjectsAreReferenced\\#end,\\#begonlyCreatedObjectsAreInLocSets\\#end,\\#begonlyCreatedObjectsAreInLocSetsEQ\\#end,\\#begarrayLengthNotNegative\\#end,\\#begwellFormedStoreObject\\#end,\\#begwellFormedStoreLocSet\\#end,\\#begwellFormedStorePrimitive\\#end,\\#begwellFormedCreate\\#end,\\#begwellFormedAnon\\#end,\\#begwellFormedMemsetObject\\#end,\\#begwellFormedMemsetLocSet\\#end,\\#begwellFormedMemsetPrimitive\\#end,\\#begselectOfStoreEQ\\#end,\\#begselectOfCreateEQ\\#end,\\#begselectOfAnonEQ\\#end,\\#begselectOfMemsetEQ\\#end,\\#begmemsetEmpty\\#end,\\#begselectCreatedOfAnonEQ\\#end,\\#begwellFormedStoreObjectEQ\\#end,\\#begwellFormedStoreLocSetEQ\\#end,\\#begwellFormedStorePrimitiveEQ\\#end,\\#begwellFormedAnonEQ\\#end,\\#begwellFormedMemsetObjectEQ\\#end,\\#begwellFormedMemsetPrimitiveEQ\\#end,\\#begaccDefinition\\#end,\\#begreachDefinition\\#end,\\#begreachZero\\#end,\\#begreachOne\\#end,\\#begreachNull\\#end,\\#begreachNull2\\#end,\\#begreachAddOne\\#end,\\#begreachAddOne2\\#end,\\#begreachUniquePathSameObject\\#end,\\#begreachDependenciesStoreSimple\\#end,\\#begreachDoesNotDependOnCreatedness\\#end,\\#begreachDependenciesStore\\#end,\\#begreachDependenciesAnon\\#end,\\#begreachDependenciesAnonCoarse\\#end,\\#begonly_created_objects_are_reachable\\#end,\\#begreach_does_not_depend_on_fresh_locs\\#end,\\#begreach_does_not_depend_on_fresh_locs_EQ\\#end +[SMTSettings]SelectedTaclets=\\#begboolean_equal_2\\#end,\\#begboolean_not_equal_1\\#end,\\#begboolean_not_equal_2\\#end,\\#begtrue_to_not_false\\#end,\\#begfalse_to_not_true\\#end,\\#begboolean_true_commute\\#end,\\#begboolean_false_commute\\#end,\\#begapply_eq_boolean\\#end,\\#begapply_eq_boolean_2\\#end,\\#begapply_eq_boolean_rigid\\#end,\\#begapply_eq_boolean_rigid_2\\#end,\\#begexpandInByte\\#end,\\#begexpandInChar\\#end,\\#begexpandInShort\\#end,\\#begexpandInInt\\#end,\\#begexpandInLong\\#end,\\#begreplace_byte_MAX\\#end,\\#begreplace_byte_MIN\\#end,\\#begreplace_char_MAX\\#end,\\#begreplace_char_MIN\\#end,\\#begreplace_short_MAX\\#end,\\#begreplace_short_MIN\\#end,\\#begreplace_int_MAX\\#end,\\#begreplace_int_MIN\\#end,\\#begreplace_long_MAX\\#end,\\#begreplace_long_MIN\\#end,\\#begreplace_byte_RANGE\\#end,\\#begreplace_byte_HALFRANGE\\#end,\\#begreplace_short_RANGE\\#end,\\#begreplace_short_HALFRANGE\\#end,\\#begreplace_char_RANGE\\#end,\\#begreplace_int_RANGE\\#end,\\#begreplace_int_HALFRANGE\\#end,\\#begreplace_long_RANGE\\#end,\\#begreplace_long_HALFRANGE\\#end,\\#begtranslateJavaUnaryMinusInt\\#end,\\#begtranslateJavaUnaryMinusLong\\#end,\\#begtranslateJavaBitwiseNegation\\#end,\\#begtranslateJavaAddInt\\#end,\\#begtranslateJavaAddLong\\#end,\\#begtranslateJavaSubInt\\#end,\\#begtranslateJavaSubLong\\#end,\\#begtranslateJavaMulInt\\#end,\\#begtranslateJavaMulLong\\#end,\\#begtranslateJavaMod\\#end,\\#begtranslateJavaDivInt\\#end,\\#begtranslateJavaDivLong\\#end,\\#begtranslateJavaCastByte\\#end,\\#begtranslateJavaCastShort\\#end,\\#begtranslateJavaCastInt\\#end,\\#begtranslateJavaCastLong\\#end,\\#begtranslateJavaCastChar\\#end,\\#begtranslateJavaShiftRightInt\\#end,\\#begtranslateJavaShiftRightLong\\#end,\\#begtranslateJavaShiftLeftInt\\#end,\\#begtranslateJavaShiftLeftLong\\#end,\\#begtranslateJavaUnsignedShiftRightInt\\#end,\\#begtranslateJavaUnsignedShiftRightLong\\#end,\\#begtranslateJavaBitwiseOrInt\\#end,\\#begtranslateJavaBitwiseOrLong\\#end,\\#begtranslateJavaBitwiseAndInt\\#end,\\#begtranslateJavaBitwiseAndLong\\#end,\\#begtranslateJavaBitwiseXOrInt\\#end,\\#begtranslateJavaBitwiseXOrLong\\#end,\\#begcastDel\\#end,\\#begtypeEq\\#end,\\#begtypeEqDerived\\#end,\\#begtypeEqDerived2\\#end,\\#begtypeStatic\\#end,\\#begcloseType\\#end,\\#begcloseTypeSwitched\\#end,\\#begexact_instance_definition_int\\#end,\\#begexact_instance_definition_boolean\\#end,\\#begexact_instance_definition_null\\#end,\\#begexact_instance_for_interfaces_or_abstract_classes\\#end,\\#begclass_being_initialized_is_prepared\\#end,\\#beginitialized_class_is_prepared\\#end,\\#beginitialized_class_is_not_erroneous\\#end,\\#begclass_initialized_excludes_class_init_in_progress\\#end,\\#begclass_erroneous_excludes_class_in_init\\#end,\\#begerroneous_class_has_no_initialized_sub_class\\#end,\\#begsuperclasses_of_initialized_classes_are_prepared\\#end,\\#begelementOfEmpty\\#end,\\#begelementOfAllLocs\\#end,\\#begelementOfSingleton\\#end,\\#begelementOfUnion\\#end,\\#begelementOfIntersect\\#end,\\#begelementOfSetMinus\\#end,\\#begelementOfAllFields\\#end,\\#begelementOfAllObjects\\#end,\\#begelementOfArrayRange\\#end,\\#begelementOfFreshLocs\\#end,\\#begequalityToElementOf\\#end,\\#begsubsetToElementOf\\#end,\\#begdisjointToElementOf\\#end,\\#begcreatedInHeapToElementOf\\#end,\\#begelementOfEmptyEQ\\#end,\\#begelementOfAllLocsEQ\\#end,\\#begelementOfSingletonEQ\\#end,\\#begelementOfUnionEQ\\#end,\\#begelementOfIntersectEQ\\#end,\\#begelementOfSetMinusEQ\\#end,\\#begelementOfAllFieldsEQ\\#end,\\#begelementOfAllObjectsEQ\\#end,\\#begelementOfArrayRangeEQ\\#end,\\#begelementOfFreshLocsEQ\\#end,\\#begunionWithEmpty1\\#end,\\#begunionWithEmpty2\\#end,\\#begunionWithAllLocs1\\#end,\\#begunionWithAllLocs2\\#end,\\#begintersectWithEmpty1\\#end,\\#begintersectWithEmpty2\\#end,\\#begintersectWithAllLocs1\\#end,\\#begintersectWithAllLocs2\\#end,\\#begsetMinusWithEmpty1\\#end,\\#begsetMinusWithEmpty2\\#end,\\#begsetMinusWithAllLocs\\#end,\\#begsubsetWithEmpty\\#end,\\#begsubsetWithAllLocs\\#end,\\#begdisjointWithEmpty1\\#end,\\#begdisjointWithEmpty2\\#end,\\#begcreatedInHeapWithEmpty\\#end,\\#begcreatedInHeapWithSingleton\\#end,\\#begcreatedInHeapWithUnion\\#end,\\#begcreatedInHeapWithSetMinusFreshLocs\\#end,\\#begcreatedInHeapWithAllFields\\#end,\\#begcreatedInHeapWithArrayRange\\#end,\\#begreferencedObjectIsCreatedRight\\#end,\\#begreferencedObjectIsCreatedRightEQ\\#end,\\#begunionWithItself\\#end,\\#begintersectWithItself\\#end,\\#begsetMinusItself\\#end,\\#begsubsetOfItself\\#end,\\#begselectOfStore\\#end,\\#begselectOfCreate\\#end,\\#begselectOfAnon\\#end,\\#begselectOfMemset\\#end,\\#begonlyCreatedObjectsAreReferenced\\#end,\\#begonlyCreatedObjectsAreInLocSets\\#end,\\#begonlyCreatedObjectsAreInLocSetsEQ\\#end,\\#begarrayLengthNotNegative\\#end,\\#begwellFormedStoreObject\\#end,\\#begwellFormedStoreLocSet\\#end,\\#begwellFormedStorePrimitive\\#end,\\#begwellFormedCreate\\#end,\\#begwellFormedAnon\\#end,\\#begwellFormedMemsetObject\\#end,\\#begwellFormedMemsetLocSet\\#end,\\#begwellFormedMemsetPrimitive\\#end,\\#begselectOfStoreEQ\\#end,\\#begselectOfCreateEQ\\#end,\\#begselectOfAnonEQ\\#end,\\#begselectOfMemsetEQ\\#end,\\#begmemsetEmpty\\#end,\\#begselectCreatedOfAnonEQ\\#end,\\#begwellFormedStoreObjectEQ\\#end,\\#begwellFormedStoreLocSetEQ\\#end,\\#begwellFormedStorePrimitiveEQ\\#end,\\#begwellFormedAnonEQ\\#end,\\#begwellFormedMemsetObjectEQ\\#end,\\#begwellFormedMemsetPrimitiveEQ\\#end,\\#begaccDefinition\\#end,\\#begreachDefinition\\#end,\\#begreachZero\\#end,\\#begreachOne\\#end,\\#begreachNull\\#end,\\#begreachNull2\\#end,\\#begreachAddOne\\#end,\\#begreachAddOne2\\#end,\\#begreachUniquePathSameObject\\#end,\\#begreachDependenciesStoreSimple\\#end,\\#begreachDoesNotDependOnCreatedness\\#end,\\#begreachDependenciesStore\\#end,\\#begreachDependenciesAnon\\#end,\\#begreachDependenciesAnonCoarse\\#end,\\#begonly_created_objects_are_reachable\\#end,\\#begreach_does_not_depend_on_fresh_locs\\#end,\\#begreach_does_not_depend_on_fresh_locsEQ\\#end [StrategyProperty]NON_LIN_ARITH_OPTIONS_KEY=NON_LIN_ARITH_DEF_OPS [StrategyProperty]LOOP_OPTIONS_KEY=LOOP_NONE [SMTSettings]explicitTypeHierarchy=false