Commit 126a35d7 authored by Sarah Grebing's avatar Sarah Grebing

Changes to jars and commented exceptions

parent 0597ba77
Pipeline #13603 failed with stage
in 2 minutes and 19 seconds
# Execute this in this folder.
# Set to key/key/deployment/components/
COMPONENTS=~/work/key/key/deployment/components/
COMPONENTS=${COMPONENTS:-~/work/key/key/deployment/components/}
mvn install:install-file -Dfile=$COMPONENTS/key.core.jar \
......
# Execute this in this folder.
# Set to key/key/deployment/components/
COMPONENTS=~/work/key/key/deployment/components/
COMPONENTS=${COMPONENTS:-~/work/key/key/deployment/components/}
mvn install:install-file -Dfile=$COMPONENTS/key.core.jar \
......
......@@ -7,17 +7,17 @@
<snapshot>
<localCopy>true</localCopy>
</snapshot>
<lastUpdated>20170911152346</lastUpdated>
<lastUpdated>20170912105152</lastUpdated>
<snapshotVersions>
<snapshotVersion>
<extension>jar</extension>
<value>2.7-SNAPSHOT</value>
<updated>20170911152346</updated>
<updated>20170912105152</updated>
</snapshotVersion>
<snapshotVersion>
<extension>pom</extension>
<value>2.7-SNAPSHOT</value>
<updated>20170911152346</updated>
<updated>20170912103022</updated>
</snapshotVersion>
</snapshotVersions>
</versioning>
......
......@@ -6,6 +6,6 @@
<versions>
<version>2.7-SNAPSHOT</version>
</versions>
<lastUpdated>20170911152346</lastUpdated>
<lastUpdated>20170912105152</lastUpdated>
</versioning>
</metadata>
......@@ -7,17 +7,17 @@
<snapshot>
<localCopy>true</localCopy>
</snapshot>
<lastUpdated>20170911152349</lastUpdated>
<lastUpdated>20170912105155</lastUpdated>
<snapshotVersions>
<snapshotVersion>
<extension>jar</extension>
<value>2.7-SNAPSHOT</value>
<updated>20170911152349</updated>
<updated>20170912105155</updated>
</snapshotVersion>
<snapshotVersion>
<extension>pom</extension>
<value>2.7-SNAPSHOT</value>
<updated>20170911152349</updated>
<updated>20170912103024</updated>
</snapshotVersion>
</snapshotVersions>
</versioning>
......
......@@ -6,6 +6,6 @@
<versions>
<version>2.7-SNAPSHOT</version>
</versions>
<lastUpdated>20170911152349</lastUpdated>
<lastUpdated>20170912105155</lastUpdated>
</versioning>
</metadata>
......@@ -7,17 +7,17 @@
<snapshot>
<localCopy>true</localCopy>
</snapshot>
<lastUpdated>20170911152351</lastUpdated>
<lastUpdated>20170912105158</lastUpdated>
<snapshotVersions>
<snapshotVersion>
<extension>jar</extension>
<value>2.7-SNAPSHOT</value>
<updated>20170911152351</updated>
<updated>20170912105158</updated>
</snapshotVersion>
<snapshotVersion>
<extension>pom</extension>
<value>2.7-SNAPSHOT</value>
<updated>20170911152351</updated>
<updated>20170912103027</updated>
</snapshotVersion>
</snapshotVersions>
</versioning>
......
......@@ -6,6 +6,6 @@
<versions>
<version>2.7-SNAPSHOT</version>
</versions>
<lastUpdated>20170911152351</lastUpdated>
<lastUpdated>20170912105158</lastUpdated>
</versioning>
</metadata>
......@@ -7,6 +7,6 @@
<versions>
<version>2.7</version>
</versions>
<lastUpdated>20170911152354</lastUpdated>
<lastUpdated>20170912105201</lastUpdated>
</versioning>
</metadata>
......@@ -19,6 +19,23 @@ import java.util.stream.Collectors;
* @version 1 (11.09.17)
*/
public class GenDoc {
private static final Set<String> FORBBIDEN = new TreeSet<>();
static {
FORBBIDEN.add("exit");
FORBBIDEN.add("focus");
FORBBIDEN.add("javascript");
FORBBIDEN.add("leave");
FORBBIDEN.add("let \n");
/*TODO
script
schemaVar
select
set
skip
*/
}
private static File basedir = new File("..");
private static File propertiesFile = new File(basedir, "rt-key/src/main/resources/edu/kit/iti/formal/psdbg/taclets.properties.xml");
private static File dummyFile = new File(basedir, "rt-key/src/test/resources/edu/kit/iti/formal/psdbg/interpreter/contraposition/contraposition.key");
......@@ -58,7 +75,7 @@ public class GenDoc {
"\n\nCovering the *default* taclets of [KeY](http://key-project.org).");
for (Taclet t : taclets) {
stream.write("\n\n## ${t.displayName()}\n\n");
stream.write("\n\n## " + t.displayName() + "\n\n");
stream.write("```\n" + t.toString() + "\n```");
}
......@@ -143,7 +160,8 @@ public class GenDoc {
commands.sort(Comparator.comparing(ProofScriptCommand::getName));
for (ProofScriptCommand t : commands) {
stream.write(helpForCommand(t) + "\n\n");
if (!FORBBIDEN.contains(t.getName()))
stream.write(helpForCommand(t) + "\n\n");
}
stream.close();
} catch (IOException e) {
......
......@@ -69,8 +69,8 @@ expression
substExpressionList
:
(scriptVar '/' expression
(',' scriptVar '/' expression)*
(scriptVar '\\' expression
(',' scriptVar '\\' expression)*
)?
;
......
......@@ -5,6 +5,7 @@ import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
/**
......@@ -17,6 +18,10 @@ import java.util.List;
public class TermType implements Type {
private List<Type> argTypes = new ArrayList<>();
public TermType(Type... sortType) {
this(Arrays.asList(sortType));
}
@Override
public String symbol() {
return "Term<" +
......
......@@ -26,11 +26,12 @@ termPattern :
| <assoc=right> termPattern op=(DIV|MOD) termPattern #divMod
| termPattern op=(PLUS|MINUS) termPattern #plusMinus
| termPattern op=(LE|GE|LEQ|GEQ) termPattern #comparison
| termPattern op=(NEQ|EQ) termPattern #equality
| termPattern op=(NEQ|EQ) termPattern #equality
| termPattern AND termPattern #and
| termPattern OR termPattern #or
| termPattern IMP termPattern #impl
| termPattern XOR termPattern #xor
// | termPattern EQUIV termPattern #equivalence
//| termPattern EQUIV termPattern already covered by EQ/NEQ
| MINUS termPattern #exprNegate
| NOT termPattern #exprNot
......@@ -61,6 +62,7 @@ EQ : '=' ;
NEQ : '!=' ;
GEQ : '>=' ;
LEQ : '<=' ;
EQUIV : '<->';
GE : '>' ;
LE : '<' ;
AND : '&' ;
......
......@@ -12,10 +12,12 @@ public class Utils {
* @param formula
* @return parsable Stringversion of Term
*/
@Deprecated
public static String toPrettyTerm(Term formula) {
StringBuilder sb = new StringBuilder();
Operator op = formula.op();
//ugly if/else
if (op.equals(Junctor.IMP)) {
sb.append("(" + toPrettyTerm(formula.sub(0)) + ") -> (" + toPrettyTerm(formula.sub(1)) + ")");
......
......@@ -3,9 +3,9 @@ package edu.kit.iti.formal.psdbg.interpreter;
import de.uka.ilkd.key.api.ScriptApi;
import de.uka.ilkd.key.api.VariableAssignments;
import de.uka.ilkd.key.logic.Name;
import de.uka.ilkd.key.logic.SequentFormula;
import de.uka.ilkd.key.logic.Term;
import de.uka.ilkd.key.logic.op.SchemaVariable;
import de.uka.ilkd.key.pp.LogicPrinter;
import de.uka.ilkd.key.proof.ApplyStrategy;
import de.uka.ilkd.key.proof.Goal;
import de.uka.ilkd.key.proof.Proof;
......@@ -15,9 +15,9 @@ import de.uka.ilkd.key.rule.Taclet;
import de.uka.ilkd.key.rule.TacletApp;
import edu.kit.iti.formal.psdbg.interpreter.data.GoalNode;
import edu.kit.iti.formal.psdbg.interpreter.data.KeyData;
import edu.kit.iti.formal.psdbg.interpreter.data.SortType;
import edu.kit.iti.formal.psdbg.interpreter.data.VariableAssignment;
import edu.kit.iti.formal.psdbg.parser.ast.Signature;
import edu.kit.iti.formal.psdbg.parser.ast.TermLiteral;
import edu.kit.iti.formal.psdbg.parser.ast.Variable;
import edu.kit.iti.formal.psdbg.parser.data.Value;
import edu.kit.iti.formal.psdbg.parser.types.SimpleType;
......@@ -25,7 +25,6 @@ import edu.kit.iti.formal.psdbg.parser.types.TermType;
import edu.kit.iti.formal.psdbg.parser.types.Type;
import edu.kit.iti.formal.psdbg.termmatcher.MatcherFacade;
import edu.kit.iti.formal.psdbg.termmatcher.Matchings;
import edu.kit.iti.formal.psdbg.termmatcher.Utils;
import edu.kit.iti.formal.psdbg.termmatcher.mp.MatchPath;
import org.key_project.util.collection.ImmutableList;
......@@ -197,13 +196,46 @@ public class KeYMatcher implements MatcherApi<KeyData> {
// System.out.println("Matched " + keyMatchResult.size() + " goals from " + currentState.toString() + " with pattern " + term);
List<VariableAssignment> transformedMatchResults = new ArrayList<>();
for (VariableAssignments mResult : keyMatchResult) {
transformedMatchResults.add(from(mResult));
transformedMatchResults.add(from(mResult, currentState.getData()));
}
//keyMatchResult.forEach(r -> transformedMatchResults.add(from(r)));
return transformedMatchResults;
}
/**
* Transforms a KeY Variable Assignment into an assignment for the interpreter
*
* @param keyAssignments
* @param currentState
* @return
*/
public VariableAssignment from(VariableAssignments keyAssignments, KeyData currentState) {
VariableAssignment interpreterAssignments = new VariableAssignment(null);
Map<String, VariableAssignments.VarType> keyTypeMap = keyAssignments.getTypeMap();
keyTypeMap.entrySet().forEach(e -> interpreterAssignments.declare(e.getKey(), interpreter.getTypeConversionBiMap().inverse().get(e.getValue())));
keyTypeMap.keySet().forEach(k -> {
try {
interpreterAssignments.assign(k, toValueTerm(currentState, (Term) keyAssignments.getVarValue(k)));
//System.out.println(keyAssignments.getVarValue(k));
} catch (Exception e) {
e.printStackTrace();
}
});
return interpreterAssignments;
}
private Value<String> toValueTerm(KeyData currentState, Term matched) {
String reprTerm = LogicPrinter.quickPrintTerm(matched, currentState.getEnv().getServices());
return new Value<>(
new TermType(new SortType(matched.sort())),
reprTerm
);
}
@Override
public List<VariableAssignment> matchSeq(GoalNode<KeyData> currentState, String data, Signature sig) {
System.out.println("State that will be matched " + currentState.getData().getNode().sequent() + " with pattern " + data);
......@@ -225,9 +257,10 @@ public class KeYMatcher implements MatcherApi<KeyData> {
s = s.replaceFirst("\\?", "");
}
va.declare(s, new TermType());
va.assign(s, Value.from(from(matched)));
System.out.println("Variable " + s + " : " + Value.from(from(matched)));
Value<String> value = toValueTerm(currentState.getData(), matched);
va.declare(s, value.getType());
va.assign(s, value);
System.out.println("Variable " + s + " : " + value);
}
}
List<VariableAssignment> retList = new LinkedList();
......@@ -237,35 +270,8 @@ public class KeYMatcher implements MatcherApi<KeyData> {
}
}
/**
* Transforms a KeY Variable Assignment into an assignment for the interpreter
*
* @param keyAssignments
* @return
*/
public VariableAssignment from(VariableAssignments keyAssignments) {
VariableAssignment interpreterAssignments = new VariableAssignment(null);
Map<String, VariableAssignments.VarType> keyTypeMap = keyAssignments.getTypeMap();
keyTypeMap.entrySet().forEach(e -> interpreterAssignments.declare(e.getKey(), interpreter.getTypeConversionBiMap().inverse().get(e.getValue())));
keyTypeMap.keySet().forEach(k -> {
try {
interpreterAssignments.assign(k, Value.from(from((Term) keyAssignments.getVarValue(k))));
//System.out.println(keyAssignments.getVarValue(k));
} catch (Exception e) {
e.printStackTrace();
}
});
return interpreterAssignments;
}
private TermLiteral from(Term t) {
//TODO rewrite operator
return new TermLiteral(Utils.toPrettyTerm(t));
}
private TermLiteral from(SequentFormula sf) {
return new TermLiteral(sf.toString());
}
//private TermLiteral from(SequentFormula sf) {
// return new TermLiteral(sf.toString());
//}
}
package edu.kit.iti.formal.psdbg.interpreter.data;
import de.uka.ilkd.key.logic.sort.Sort;
import edu.kit.iti.formal.psdbg.parser.types.Type;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
@RequiredArgsConstructor
public class SortType implements Type {
@Getter
private final Sort sort;
@Override
public String symbol() {
return sort.toString();
}
}
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
<comment>Generated on: Mon Sep 11 17:22:08 CEST 2017. Use gen</comment>
<comment>Generated on: Tue Sep 12 15:08:54 CEST 2017. Use gen</comment>
<entry key="wd_Logical_Op_Or">wd_Logical_Op_Or {
\find(WD(or(a,b)))
\replacewith(or(or(and(WD(a),a),and(WD(b),b)),and(WD(a),WD(b))))
......@@ -160,7 +160,7 @@ Choices: {}}</entry>
<entry key="add_sub_elim_right">add_sub_elim_right {
\find(add(i,neg(i)))
\replacewith(Z(0(#)))
\heuristics(simplify_int)
Choices: {}}</entry>
<entry key="leq_to_geq">leq_to_geq {
\find(leq(i,i0))
......@@ -529,11 +529,6 @@ Choices: {reach:on}}</entry>
\replacewith(or(exists{i (variable)}(and(WD(a),not(a))),all{i (variable)}(WD(a))))
\heuristics(simplify)
Choices: {wdOperator:D,wdChecks:on}}</entry>
<entry key="emptyIndexedLoopScope">emptyIndexedLoopScope {
\find(#allmodal ( (modal operator))\[{ .. loop-scope(#lhs) {} ... }\] (post))
\replacewith(if-then-else(equals(#lhs,TRUE),#allmodal(post),#allmodal(post)))
\heuristics(simplify_prog)
Choices: {programRules:Java}}</entry>
<entry key="eqClose">eqClose {
\find(equals(s,s))
\replacewith(true)
......@@ -925,14 +920,6 @@ Choices: {}}</entry>
\replacewith(if-then-else(exists{intVar (variable)}(phi),b,c))
\heuristics(simplify)
Choices: {}}</entry>
<entry key="unlabeledContinueIndexedLoopScope">unlabeledContinueIndexedLoopScope {
\find(#allmodal ( (modal operator))\[{ .. loop-scope(#lhs) {continue ;
#slist
}
... }\] (post))
\replacewith(#allmodal ( (modal operator))\[{#lhs=false;}\] (post))
\heuristics(simplify_prog)
Choices: {programRules:Java}}</entry>
<entry key="compound_assignment_op_shiftright">compound_assignment_op_shiftright {
\find(#allmodal ( (modal operator))\[{ .. #v&gt;&gt;=#e; ... }\] (post))
\replacewith(#allmodal ( (modal operator))\[{ .. #v=(#typeof(#v))(#v&gt;&gt;(#e)); ... }\] (post))
......@@ -1099,7 +1086,7 @@ Choices: {programRules:Java}}</entry>
<entry key="less_base">less_base {
\find(lt(i,i))
\replacewith(false)
\heuristics(simplify_int)
Choices: {}}</entry>
<entry key="wd_Heap_Memset">wd_Heap_Memset {
\find(wd(memset(h,l,a)))
......@@ -1381,6 +1368,11 @@ Choices: {programRules:Java}}</entry>
\replacewith(or(and(wellFormed(h),equals(x,null)),and(equals(boolean::select(h,x,java.lang.Object::&lt;created&gt;),TRUE),arrayStoreValid(o,x))))
\heuristics(simplify_enlarging)
Choices: {programRules:Java}}</entry>
<entry key="UNSOUND_ASSUME">UNSOUND_ASSUME {
\add [b]==&gt;[]
\heuristics(obsolete)
Choices: {debug:on}}
</entry>
<entry key="createdInHeapWithAllFieldsEQ">createdInHeapWithAllFieldsEQ {
\assumes ([equals(allFields(o),EQ)]==&gt;[])
\find(createdInHeap(EQ,h))
......@@ -1736,8 +1728,8 @@ Choices: {}}</entry>
<entry key="methodCallSuper">methodCallWithAssignmentSuper {
\find(#allmodal ( (modal operator))\[{ .. #lhs=super.#mn(#elist); ... }\] (post))
\varcond(\new(#v0 (program Variable), \typeof(#lhs (program LeftHandSide))))
\replacewith(#allmodal ( (modal operator))\[{ .. #typeof(#lhs) #v0;method-call(super.#mn(#elist);)#lhs=#v0; ... }\] (post))
\heuristics(method_expand, simplify_autoname)
\replacewith(#allmodal ( (modal operator))\[{ .. #typeof(#lhs) #v0;method-call(super.#mn(#elist);)#lhs=#v0; ... }\] (post))
\heuristics(simplify_autoname)
Choices: {programRules:Java}}</entry>
<entry key="wd_Numerical_Quant_Min">wd_Numerical_Quant_Min {
\find(wd(min{j (variable)}(f,c)))
......@@ -1844,15 +1836,6 @@ Choices: {integerSimplificationRules:full}}</entry>
\replacewith(update-application(elem-update(#loc (program Variable))(javaBitwiseNegation(#se)),#normalassign(post)))
\heuristics(executeIntegerAssignment)
Choices: {programRules:Java}}</entry>
<entry key="blockBreakLabeled">blockBreakLabeled {
\find(#allmodal ( (modal operator))\[{ .. {break ;
#slist
}
... }\] (post))
\replacewith(#allmodal ( (modal operator))\[{ .. break ;
... }\] (post))
\heuristics(simplify_prog)
Choices: {programRules:Java}}</entry>
<entry key="defOfSeqSwap">defOfSeqSwap {
\find(seqSwap(s,iv,jv))
\varcond(\notFreeIn(uSub (variable), jv (int term)), \notFreeIn(uSub (variable), iv (int term)), \notFreeIn(uSub (variable), s (Seq term)))
......@@ -1899,7 +1882,7 @@ Choices: {}}</entry>
Choices: {}}</entry>
<entry key="simplifyIfThenElse">simplifyIfThenElseUpdate4 {
\find(if-then-else(phi,t,t))
\varcond(de.uka.ilkd.key.rule.conditions.SimplifyIfThenElseUpdateCondition@28bcfcad, )
\varcond(de.uka.ilkd.key.rule.conditions.SimplifyIfThenElseUpdateCondition@59f4f0de, )
\replacewith(result)
Choices: {}}</entry>
......@@ -1933,7 +1916,7 @@ Choices: {programRules:Java}}</entry>
<entry key="square_nonneg">square_nonneg {
\find(leq(Z(0(#)),mul(i0,i0)))
\replacewith(true)
\heuristics(simplify_int)
Choices: {}}</entry>
<entry key="distributeIntersection">distributeIntersection {
\find(intersect(s1,union(s2,s3)))
......@@ -2345,11 +2328,6 @@ Choices: {integerSimplificationRules:full}}</entry>
\replacewith([]==&gt;[b])
\heuristics(beta)
Choices: {}}</entry>
<entry key="emptyReturnIndexedLoopScope">emptyReturnIndexedLoopScope {
\find(#allmodal ( (modal operator))\[{ .. loop-scope(#lhs) {return ;#slist} ... }\] (post))
\replacewith(#allmodal ( (modal operator))\[{ .. #lhs=true;return ; ... }\] (post))
\heuristics(simplify_prog)
Choices: {programRules:Java}}</entry>
<entry key="bsum_invert_index">bsum_invert_index {
\find(bsum{uSub (variable)}(i0,i1,t))
\varcond(\notFreeIn(uSub1 (variable), t (int term)), \notFreeIn(uSub1 (variable), i1 (int term)), \notFreeIn(uSub1 (variable), i0 (int term)), \notFreeIn(uSub (variable), i1 (int term)), \notFreeIn(uSub (variable), i0 (int term)))
......@@ -2411,13 +2389,13 @@ Choices: {integerSimplificationRules:full}}</entry>
\assumes ([]==&gt;[lt(i,j)])
\find(==&gt;equals(i,j))
\replacewith([]==&gt;[leq(i,j)])
\heuristics(simplify_int)
Choices: {}}</entry>
<entry key="lt_to_leq_1">lt_to_leq_1 {
\find(or(lt(i,j),equals(i,j)))
\replacewith(leq(i,j))
\heuristics(simplify_int)
Choices: {}}</entry>
\replacewith(leq(i,j))
Choices: {}}</entry>
<entry key="translateJavaBitwiseOr">translateJavaBitwiseOrLong {
\find(javaBitwiseOrLong(left,right))
\replacewith(orJlong(left,right))
......@@ -3161,15 +3139,6 @@ Choices: {programRules:Java}}</entry>
\replacewith(false)
\heuristics(concrete)
Choices: {programRules:Java}}</entry>
<entry key="blockContinue">blockContinue {
\find(#allmodal ( (modal operator))\[{ .. {continue ;
#slist
}
... }\] (post))
\replacewith(#allmodal ( (modal operator))\[{ .. continue ;
... }\] (post))
\heuristics(simplify_prog)
Choices: {programRules:Java}}</entry>
<entry key="wellFormedStoreLocSetEQ">wellFormedStoreLocSetEQ {
\assumes ([equals(store(h,o,f,x),EQ)]==&gt;[])
\find(wellFormed(EQ))
......@@ -3326,11 +3295,6 @@ Choices: {}}</entry>
\replacewith(#allmodal ( (modal operator))\[{ .. #unwind-loop(do#swhile ( #e ); ) ... }\] (post))
\heuristics(simplify_prog)
Choices: {programRules:Java}}</entry>
<entry key="blockLoopScopes">blockLoopScopes {
\find(#allmodal ( (modal operator))\[{ .. {loop-scope(#lhs) {#slist}} ... }\] (post))
\replacewith(#allmodal ( (modal operator))\[{ .. loop-scope(#lhs) {#slist} ... }\] (post))
\heuristics(simplify_prog)
Choices: {programRules:Java}}</entry>
<entry key="wd_Logical_Op_Eqv">wd_Logical_Op_Eqv {
\find(WD(equiv(a,b)))
\replacewith(and(WD(a),WD(b)))
......@@ -3664,11 +3628,6 @@ Choices: {wdChecks:on}}</entry>
\replacewith(leq(i0,i))
Choices: {}}</entry>
<entry key="deleteMergePoint">deleteMergePoint {
\find(#allmodal ( (modal operator))\[{ .. //@ merge_point (#lhs (program LeftHandSide)); ... }\] (post))
\replacewith(#allmodal(post))
\heuristics(merge_point, simplify_prog)
Choices: {programRules:Java}}</entry>
<entry key="selectOfStoreEQ">selectOfStoreEQ {
\assumes ([equals(store(h,o,f,x),EQ)]==&gt;[])
\find(beta::select(EQ,o2,f2))
......@@ -3980,9 +3939,9 @@ Choices: {programRules:Java}}</entry>
Choices: {sequences:on}}</entry>
<entry key="leq_diff1_eq">leq_diff1_eq {
\find(leq(i0,sub(i1,Z(1(#)))))
\replacewith(lt(i0,i1))
\heuristics(simplify_int)
Choices: {}}</entry>
\replacewith(lt(i0,i1))
Choices: {}}</entry>
<entry key="diamond_and_left">diamond_and_left {
\find(#diamond ( (modal operator))\[{ .. #s ... }\] (and(post,post1))==&gt;)
\replacewith([and(#diamond ( (modal operator))\[{ .. #s ... }\] (post),#diamond ( (modal operator))\[{ .. #s ... }\] (post1))]==&gt;[])
......@@ -4030,15 +3989,6 @@ Choices: {}}</entry>
\replacewith(b)
\heuristics(elimQuantifier)
Choices: {}}</entry>
<entry key="labeledContinueIndexedLoopScope">labeledContinueIndexedLoopScope {
\find(#allmodal ( (modal operator))\[{ .. loop-scope(#lhs) {continue ;
#slist
}
... }\] (post))
\replacewith(#allmodal ( (modal operator))\[{ .. #lhs=true;continue ;
... }\] (post))
\heuristics(simplify_prog)
Choices: {programRules:Java}}</entry>
<entry key="wd_F_Subst_Formula">wd_F_Subst_Formula {
\find(F(subst{v (variable)}(u,f)))
\replacewith(and(wd(u),subst{v (variable)}(u,F(f))))
......@@ -4172,16 +4122,6 @@ Choices: {}}</entry>
\add [all{iv (variable)}(imp(and(leq(Z(0(#)),iv),lt(iv,seqLen(s))),and(and(leq(Z(0(#)),int::seqGet(s,iv)),lt(int::seqGet(s,iv),seqLen(s))),equals(int::instance(any::seqGet(s,iv)),TRUE))))]==&gt;[]
Choices: {moreSeqRules:on,sequences:on}}</entry>
<entry key="blockContinueNoMatch">blockContinueNoMatch {
\find(#allmodal ( (modal operator))\[{ .. #lb1: {continue ;
#slist
}
... }\] (post))
\varcond(\different (#lb1 (program Label), #lb (program Label)), )
\replacewith(#allmodal ( (modal operator))\[{ .. continue ;
... }\] (post))
\heuristics(simplify_prog)
Choices: {programRules:Java}}</entry>
<entry key="returnPermission_empty">returnPermission_empty {
\find(returnPermission(from,to,emptyPermission))
\replacewith(emptyPermission)
......@@ -4687,6 +4627,10 @@ Choices: {programRules:Java}}</entry>
\replacewith(#allmodal ( (modal operator))\[{ .. #typeof(#e0) #v = #e0;#v.#attribute=(#typeof(#attribute))(#v.#attribute&amp;#e); ... }\] (post))
\heuristics(simplify_prog)
Choices: {programRules:Java}}</entry>
<entry key="FAKE_CLOSE">FAKE_CLOSE {
\closegoal\heuristics(obsolete)
Choices: {debug:on}}
</entry>
<entry key="writePermissionAfterReturn">writePermissionAfterReturn {
\assumes ([writePermissionObject(o1,p)]==&gt;[])
\find(writePermissionObject(o2,returnPermission(o1,o2,p)))
......@@ -4789,9 +4733,9 @@ Choices: {Strings:on}}</entry>
Choices: {programRules:Java}}</entry>
<entry key="i_minus_i_is_zero">i_minus_i_is_zero {
\find(sub(i,i))