diff --git a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/locSetsRules.key b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/locSetsRules.key index 3777a649823..10a0838873b 100644 --- a/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/locSetsRules.key +++ b/key.core/src/main/resources/de/uka/ilkd/key/proof/rules/locSetsRules.key @@ -1329,6 +1329,37 @@ \heuristics(concrete) }; + referencedObjectIsCreatedRightFinal { + \schemaVar \term Heap h; + \schemaVar \term Object o; + \schemaVar \term Field f; + + \assumes( ==> deltaObject::final(o, f) = null) + \find( ==> boolean::select(h, + deltaObject::final(o, f), + java.lang.Object::) = TRUE ) + + \replacewith( ==> boolean::select(h, o, java.lang.Object::) = TRUE ) + + \heuristics(concrete) + }; + + referencedObjectIsCreatedRighFinalEQ { + \schemaVar \term Heap h; + \schemaVar \term Object o; + \schemaVar \term Field f; + \schemaVar \term Object EQ; + + \assumes(deltaObject::final(o, f) = EQ ==> EQ = null) + \find( ==> boolean::select(h, + EQ, + java.lang.Object::) = TRUE) + + \replacewith( ==> boolean::select(h, o, java.lang.Object::) = TRUE ) + + \heuristics(concrete) + }; + // -------------------------------------------------------------------------- // some other lemmata // -------------------------------------------------------------------------- diff --git a/key.core/src/test/resources/de/uka/ilkd/key/proof/runallproofs/automaticJAVADL.properties b/key.core/src/test/resources/de/uka/ilkd/key/proof/runallproofs/automaticJAVADL.properties index cbd79edbfbb..1498bb10ff4 100644 --- a/key.core/src/test/resources/de/uka/ilkd/key/proof/runallproofs/automaticJAVADL.properties +++ b/key.core/src/test/resources/de/uka/ilkd/key/proof/runallproofs/automaticJAVADL.properties @@ -33,5 +33,5 @@ [SMTSettings]instantiateHierarchyAssumptions=true [SMTSettings]useUninterpretedMultiplication=true [SMTSettings]SelectedTaclets= -[Choice]DefaultChoices=assertions-assertions:on , intRules-intRules:arithmeticSemanticsIgnoringOF , initialisation-initialisation:disableStaticInitialisation , programRules-programRules:Java , runtimeExceptions-runtimeExceptions:ban , JavaCard-JavaCard:on , Strings-Strings:on , modelFields-modelFields:showSatisfiability , bigint-bigint:on , sequences-sequences:on , reach-reach:on , integerSimplificationRules-integerSimplificationRules:full , wdOperator-wdOperator:L , wdChecks-wdChecks:off , permissions-permissions:off , moreSeqRules-moreSeqRules:off , mergeGenerateIsWeakeningGoal-mergeGenerateIsWeakeningGoal:off , javaLoopTreatment-javaLoopTreatment:efficient +[Choice]DefaultChoices=assertions-assertions:on , intRules-intRules:arithmeticSemanticsIgnoringOF , initialisation-initialisation:disableStaticInitialisation , programRules-programRules:Java , runtimeExceptions-runtimeExceptions:ban , JavaCard-JavaCard:on , Strings-Strings:on , modelFields-modelFields:showSatisfiability , bigint-bigint:on , sequences-sequences:on , reach-reach:on , integerSimplificationRules-integerSimplificationRules:full , wdOperator-wdOperator:L , wdChecks-wdChecks:off , permissions-permissions:off , moreSeqRules-moreSeqRules:off , mergeGenerateIsWeakeningGoal-mergeGenerateIsWeakeningGoal:off , javaLoopTreatment-javaLoopTreatment:efficient , finalFields-finalFields:immutable [Strategy]ActiveStrategy=JavaCardDLStrategy \ No newline at end of file