heapRules.key

Taclets

Enabled under choices: programRules:Java

assignableDefinition

assignableDefinition { \schemaVar \term Heap heapOld ; \schemaVar \term Heap heapNew ; \schemaVar \term LocSet locs ; \schemaVar \variables Field f ; \schemaVar \variables java.lang.Object o ; \find ( assignable ( heapNew , heapOld , locs )) \varcond \replacewith ( \forall f ; ( \forall o ; ( elementOf ( o , f , locs )| ! o = null & ! boolean :: select ( heapOld , o , java.lang.Object :: )= TRUE | any :: select ( heapNew , o , f )= any :: select ( heapOld , o , f )))) \heuristics (delayedExpansion ) };defined in: heapRules.key Line: 11 Offset :4

selectOfStore

selectOfStore { \schemaVar \term Heap h ; \schemaVar \term Object o , o2 ; \schemaVar \term Field f , f2 ; \schemaVar \term alpha x ; \find ( beta :: select ( store ( h , o , f , x ), o2 , f2 )) \replacewith ( \if ( o = o2 & f = f2 & f != java.lang.Object :: )\then ( (beta ) x )\else ( beta :: select ( h , o2 , f2 ))) \heuristics (semantics_blasting ) };defined in: heapRules.key Line: 37 Offset :4

selectOfCreate

selectOfCreate { \schemaVar \term Heap h ; \schemaVar \term Object o , o2 ; \schemaVar \term Field f ; \find ( beta :: select ( create ( h , o ), o2 , f )) ( permissions : off ) { \replacewith ( \if ( o = o2 & o != null & f = java.lang.Object :: )\then ( (beta ) TRUE )\else ( beta :: select ( h , o2 , f )))} ; ( permissions : on ) { \replacewith ( \if ( o = o2 & o != null )\then ( \if ( f = java.lang.Object :: )\then ( (beta ) TRUE )\else ( beta :: defaultValue ))\else ( beta :: select ( h , o2 , f )))} \heuristics (semantics_blasting ) };defined in: heapRules.key Line: 51 Offset :4

selectOfAnon

selectOfAnon { \schemaVar \term Heap h , h2 ; \schemaVar \term LocSet s ; \schemaVar \term Object o ; \schemaVar \term Field f ; \find ( beta :: select ( anon ( h , s , h2 ), o , f )) \replacewith ( \if ( elementOf ( o , f , s )& f != java.lang.Object :: | elementOf ( o , f , freshLocs ( h )))\then ( beta :: select ( h2 , o , f ))\else ( beta :: select ( h , o , f ))) \heuristics (semantics_blasting ) };defined in: heapRules.key Line: 74 Offset :4

selectOfMemset

selectOfMemset { \schemaVar \term Heap h ; \schemaVar \term LocSet s ; \schemaVar \term any x ; \schemaVar \term Object o ; \schemaVar \term Field f ; \find ( beta :: select ( memset ( h , s , x ), o , f )) \replacewith ( \if ( elementOf ( o , f , s )& f != java.lang.Object :: )\then ( (beta ) x )\else ( beta :: select ( h , o , f ))) \heuristics (semantics_blasting ) };defined in: heapRules.key Line: 89 Offset :4

nullCreated

nullCreated { \schemaVar \variables Heap h ; \add ( ( \forall h ; boolean :: select ( h , null , java.lang.Object :: )= TRUE )| ( \forall h ; boolean :: select ( h , null , java.lang.Object :: )= FALSE )==> ) };defined in: heapRules.key Line: 112 Offset :4

selectOfStoreEQ

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 ( beta :: select ( EQ , o2 , f2 )) \sameUpdateLevel \replacewith ( \if ( o = o2 & f = f2 & f != java.lang.Object :: )\then ( (beta ) x )\else ( beta :: select ( h , o2 , f2 ))) \heuristics (simplify_heap_high_costs ) };defined in: heapRules.key Line: 124 Offset :4

selectOfCreateEQ

selectOfCreateEQ { \schemaVar \term Heap h ; \schemaVar \term Object o , o2 ; \schemaVar \term Field f ; \schemaVar \term Heap EQ ; \assumes ( create ( h , o )= EQ ==> ) \find ( beta :: select ( EQ , o2 , f )) \sameUpdateLevel ( permissions : off ) { \replacewith ( \if ( o = o2 & o != null & f = java.lang.Object :: )\then ( (beta ) TRUE )\else ( beta :: select ( h , o2 , f )))} ; ( permissions : on ) { \replacewith ( \if ( o = o2 & o != null )\then ( \if ( f = java.lang.Object :: )\then ( (beta ) TRUE )\else ( beta :: defaultValue ))\else ( beta :: select ( h , o2 , f )))} \heuristics (simplify_heap_high_costs ) };defined in: heapRules.key Line: 142 Offset :4

selectOfAnonEQ

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 ( beta :: select ( EQ , o , f )) \sameUpdateLevel \replacewith ( \if ( elementOf ( o , f , s )& f != java.lang.Object :: | elementOf ( o , f , freshLocs ( h )))\then ( beta :: select ( h2 , o , f ))\else ( beta :: select ( h , o , f ))) \heuristics (simplify_heap_high_costs ) };defined in: heapRules.key Line: 166 Offset :4

selectOfMemsetEQ

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 ( beta :: select ( EQ , o , f )) \sameUpdateLevel \replacewith ( \if ( elementOf ( o , f , s )& f != java.lang.Object :: )\then ( (beta ) x )\else ( beta :: select ( h , o , f ))) \heuristics (simplify_heap_high_costs ) };defined in: heapRules.key Line: 185 Offset :4

pullOutSelect

pullOutSelect { \schemaVar \term Heap h ; \schemaVar \term Object o ; \schemaVar \term Field f ; \schemaVar \skolemTerm beta selectSK ; \find ( beta :: select ( h , o , f )) \sameUpdateLevel \replacewith ( selectSK << selectSK >> ) \add ( beta :: select ( h , o , f )= selectSK << selectSK >> ==> ) \heuristics (pull_out_select ) };defined in: heapRules.key Line: 334 Offset :4

simplifySelectOfStore

simplifySelectOfStore { \schemaVar \term Heap h ; \schemaVar \term Object o , o2 ; \schemaVar \term Field f , f2 ; \schemaVar \term alpha x ; \schemaVar \term beta sk ; \find ( beta :: select ( store ( h , o , f , x ), o2 , f2 )= sk ==> ) \inSequentState \inSequentState \replacewith ( \if ( o = o2 & f = f2 & f != java.lang.Object :: )\then ( (beta ) x )\else ( beta :: select ( h , o2 , f2 ))= sk ==> ) \addrules ( replaceKnownSelect { \find ( beta :: select ( store ( h , o , f , x ), o2 , f2 )) \inSequentState \inSequentState \replacewith ( sk ) \heuristics (concrete ) };) \heuristics (simplify_select ) };defined in: heapRules.key Line: 348 Offset :4

simplifySelectOfStoreEQ

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 ( beta :: select ( EQ , o2 , f2 )= sk ==> ) \inSequentState \inSequentState \replacewith ( \if ( o = o2 & f = f2 & f != java.lang.Object :: )\then ( (beta ) x )\else ( beta :: select ( h , o2 , f2 ))= sk ==> ) \addrules ( replaceKnownSelect { \find ( beta :: select ( EQ , o2 , f2 )) \inSequentState \inSequentState \replacewith ( sk ) \heuristics (concrete ) };) \heuristics (simplify_select ) };defined in: heapRules.key Line: 375 Offset :4

simplifySelectOfCreate

simplifySelectOfCreate { \schemaVar \term Heap h ; \schemaVar \term Object o , o2 ; \schemaVar \term Field f ; \schemaVar \term beta sk ; \find ( beta :: select ( create ( h , o ), o2 , f )= sk ==> ) \inSequentState \inSequentState ( permissions : off ) { \replacewith ( \if ( o = o2 & o != null & f = java.lang.Object :: )\then ( (beta ) TRUE )\else ( beta :: select ( h , o2 , f ))= sk ==> ) \addrules ( replaceKnownSelect { \find ( beta :: select ( create ( h , o ), o2 , f )) \inSequentState \inSequentState \replacewith ( sk ) \heuristics (concrete ) };)} ; ( permissions : on ) { \replacewith ( \if ( o = o2 & o != null )\then ( \if ( f = java.lang.Object :: )\then ( (beta ) TRUE )\else ( beta :: defaultValue ))\else ( beta :: select ( h , o2 , f ))= sk ==> ) \addrules ( replaceKnownSelect { \find ( beta :: select ( create ( h , o ), o2 , f )) \inSequentState \inSequentState \replacewith ( sk ) \heuristics (concrete ) };)} \heuristics (simplify_select ) };defined in: heapRules.key Line: 403 Offset :4

simplifySelectOfCreateEQ

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 ( beta :: select ( EQ , o2 , f )= sk ==> ) \inSequentState \inSequentState ( permissions : off ) { \replacewith ( \if ( o = o2 & o != null & f = java.lang.Object :: )\then ( (beta ) TRUE )\else ( beta :: select ( h , o2 , f ))= sk ==> ) \addrules ( replaceKnownSelect { \find ( beta :: select ( EQ , o2 , f )) \inSequentState \inSequentState \replacewith ( sk ) \heuristics (concrete ) };)} ; ( permissions : on ) { \replacewith ( \if ( o = o2 & o != null )\then ( \if ( f = java.lang.Object :: )\then ( (beta ) TRUE )\else ( beta :: defaultValue ))\else ( beta :: select ( h , o2 , f ))= sk ==> ) \addrules ( replaceKnownSelect { \find ( beta :: select ( EQ , o2 , f )) \inSequentState \inSequentState \replacewith ( sk ) \heuristics (concrete ) };)} \heuristics (simplify_select ) };defined in: heapRules.key Line: 444 Offset :4

simplifySelectOfAnon

simplifySelectOfAnon { \schemaVar \term Heap h , h2 ; \schemaVar \term LocSet s ; \schemaVar \term Object o ; \schemaVar \term Field f ; \schemaVar \term beta sk ; \find ( beta :: select ( anon ( h , s , h2 ), o , f )= sk ==> ) \inSequentState \inSequentState \replacewith ( \if ( elementOf ( o , f , s )& f != java.lang.Object :: | elementOf ( o , f , freshLocs ( h )))\then ( beta :: select ( h2 , o , f ))\else ( beta :: select ( h , o , f ))= sk ==> ) \addrules ( replaceKnownSelect { \find ( beta :: select ( anon ( h , s , h2 ), o , f )) \inSequentState \inSequentState \replacewith ( sk ) \heuristics (concrete ) };) \heuristics (simplify_select ) };defined in: heapRules.key Line: 486 Offset :4

simplifySelectOfAnonEQ

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 ( beta :: select ( EQ , o , f )= sk ==> ) \inSequentState \inSequentState \replacewith ( \if ( elementOf ( o , f , s )& f != java.lang.Object :: | elementOf ( o , f , freshLocs ( h )))\then ( beta :: select ( h2 , o , f ))\else ( beta :: select ( h , o , f ))= sk ==> ) \addrules ( replaceKnownSelect { \find ( beta :: select ( EQ , o , f )) \inSequentState \inSequentState \replacewith ( sk ) \heuristics (concrete ) };) \heuristics (simplify_select ) };defined in: heapRules.key Line: 514 Offset :4

simplifySelectOfMemset

simplifySelectOfMemset { \schemaVar \term Heap h ; \schemaVar \term LocSet s ; \schemaVar \term any x ; \schemaVar \term Object o ; \schemaVar \term Field f ; \schemaVar \term beta sk ; \find ( beta :: select ( memset ( h , s , x ), o , f )= sk ==> ) \inSequentState \inSequentState \replacewith ( \if ( elementOf ( o , f , s )& f != java.lang.Object :: )\then ( x )\else ( beta :: select ( h , o , f ))= sk ==> ) \addrules ( replaceKnownSelect { \find ( beta :: select ( memset ( h , s , x ), o , f )) \inSequentState \inSequentState \replacewith ( sk ) \heuristics (concrete ) };) \heuristics (simplify_select ) };defined in: heapRules.key Line: 543 Offset :4

simplifySelectOfMemsetEQ

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 ( beta :: select ( EQ , o , f )= sk ==> ) \inSequentState \inSequentState \replacewith ( \if ( elementOf ( o , f , s )& f != java.lang.Object :: )\then ( x )\else ( beta :: select ( h , o , f ))= sk ==> ) \addrules ( replaceKnownSelect { \find ( beta :: select ( EQ , o , f )) \inSequentState \inSequentState \replacewith ( sk ) \heuristics (concrete ) };) \heuristics (simplify_select ) };defined in: heapRules.key Line: 571 Offset :4

hideAuxiliaryEq

hideAuxiliaryEq { \schemaVar \term any result , auxiliarySK ; \find ( result = auxiliarySK ==> ) \inSequentState \inSequentState \replacewith ( ==> ) \addrules ( replaceKnownAuxiliaryConstant { \find ( auxiliarySK ) \inSequentState \inSequentState \replacewith ( result ) \heuristics (concrete ) };) \heuristics (hide_auxiliary_eq ) };defined in: heapRules.key Line: 604 Offset :4

hideAuxiliaryEqConcrete

hideAuxiliaryEqConcrete { \schemaVar \term any auxiliarySK ; \find ( auxiliarySK = TRUE ==> ) \inSequentState \inSequentState \replacewith ( ==> ) \addrules ( replaceKnownAuxiliaryConstant { \find ( auxiliarySK ) \inSequentState \inSequentState \replacewith ( TRUE ) \heuristics (concrete ) };) \heuristics (hide_auxiliary_eq_const ) };defined in: heapRules.key Line: 619 Offset :4

hideAuxiliaryEqConcrete2

hideAuxiliaryEqConcrete2 { \schemaVar \term any auxiliarySK ; \find ( ==> auxiliarySK = TRUE ) \inSequentState \inSequentState \replacewith ( ==> ) \addrules ( replaceKnownAuxiliaryConstant { \find ( auxiliarySK ) \inSequentState \inSequentState \replacewith ( FALSE ) \heuristics (concrete ) };) \heuristics (hide_auxiliary_eq_const ) };defined in: heapRules.key Line: 634 Offset :4

Taclets

Enabled under choices: programRules:Java

dismissNonSelectedField

dismissNonSelectedField { \schemaVar \term Heap h ; \schemaVar \term Object o , u ; \schemaVar \term Field f1 , f2 ; \schemaVar \term any x ; \find ( alpha :: select ( store ( h , o , f1 , x ), u , f2 )) \varcond \replacewith ( alpha :: select ( h , u , f2 )) \heuristics (simplify ) };defined in: heapRules.key Line: 657 Offset :4

dismissNonSelectedFieldEQ

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 ( alpha :: select ( EQ , u , f2 )) \sameUpdateLevel \varcond \replacewith ( alpha :: select ( h , u , f2 )) \heuristics (simplify ) };defined in: heapRules.key Line: 672 Offset :4

dropEffectlessStores

dropEffectlessStores { \schemaVar \term Heap h , result ; \schemaVar \term Object o ; \schemaVar \term Field f ; \schemaVar \term any x ; \find ( store ( h , o , f , x )) \varcond \replacewith ( result ) \heuristics (concrete ) };defined in: heapRules.key Line: 688 Offset :4

memsetEmpty

memsetEmpty { \schemaVar \term Heap h ; \schemaVar \term any x ; \find ( memset ( h , empty , x )) \replacewith ( h ) \heuristics (concrete ) };defined in: heapRules.key Line: 702 Offset :4

selectCreatedOfAnon

selectCreatedOfAnon { \schemaVar \term Heap h , h2 ; \schemaVar \term LocSet s ; \schemaVar \term Object o ; \find ( boolean :: select ( anon ( h , s , h2 ), o , java.lang.Object :: )) \replacewith ( \if ( boolean :: select ( h , o , java.lang.Object :: )= TRUE )\then ( TRUE )\else ( boolean :: select ( h2 , o , java.lang.Object :: ))) \heuristics (simplify_heap_high_costs ) };defined in: heapRules.key Line: 735 Offset :4

selectCreatedOfAnonAsFormula

selectCreatedOfAnonAsFormula { \schemaVar \term Heap h , h2 ; \schemaVar \term LocSet s ; \schemaVar \term Object o ; \find ( boolean :: select ( anon ( h , s , h2 ), o , java.lang.Object :: )= TRUE ) \replacewith ( boolean :: select ( h , o , java.lang.Object :: )= TRUE | boolean :: select ( h2 , o , java.lang.Object :: )= TRUE ) \heuristics (simplify_ENLARGING ) };defined in: heapRules.key Line: 750 Offset :4

selectCreatedOfAnonEQ

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 ( boolean :: select ( EQ , o , java.lang.Object :: )) \sameUpdateLevel \replacewith ( \if ( boolean :: select ( h , o , java.lang.Object :: )= TRUE )\then ( TRUE )\else ( boolean :: select ( h2 , o , java.lang.Object :: ))) \heuristics (simplify_heap_high_costs ) };defined in: heapRules.key Line: 764 Offset :4

selectCreatedOfAnonAsFormulaEQ

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 ( boolean :: select ( EQ , o , java.lang.Object :: )= TRUE ) \sameUpdateLevel \replacewith ( boolean :: select ( h , o , java.lang.Object :: )= TRUE | boolean :: select ( h2 , o , java.lang.Object :: )= TRUE ) \heuristics (simplify_ENLARGING ) };defined in: heapRules.key Line: 782 Offset :4

equalityToSelect

equalityToSelect { \schemaVar \term Heap h , h2 ; \schemaVar \variables Object ov ; \schemaVar \variables Field fv ; \find ( h = h2 ) \varcond \replacewith ( \forall ov ; \forall fv ; ( any :: select ( h , ov , fv )= any :: select ( h2 , ov , fv ))) \heuristics (semantics_blasting ) };defined in: heapRules.key Line: 798 Offset :4

onlyCreatedObjectsAreReferenced

onlyCreatedObjectsAreReferenced { \schemaVar \term Heap h ; \schemaVar \term Object o ; \schemaVar \term Field f ; \assumes ( wellFormed ( h )==> ) \find ( deltaObject :: select ( h , o , f )) \sameUpdateLevel \add ( deltaObject :: select ( h , o , f )= null | boolean :: select ( h , deltaObject :: select ( h , o , f ), java.lang.Object :: )= TRUE ==> ) \heuristics (inReachableStateImplication ) };defined in: heapRules.key Line: 816 Offset :4

onlyCreatedObjectsAreInLocSets

onlyCreatedObjectsAreInLocSets { \schemaVar \term Heap h ; \schemaVar \term Object o , o2 ; \schemaVar \term Field f , f2 ; \assumes ( wellFormed ( h )==> ) \find ( elementOf ( o2 , f2 , LocSet :: select ( h , o , f ))==> ) \add ( o2 = null | boolean :: select ( h , o2 , java.lang.Object :: )= TRUE ==> ) \heuristics (inReachableStateImplication ) };defined in: heapRules.key Line: 833 Offset :4

onlyCreatedObjectsAreInLocSetsEQ

onlyCreatedObjectsAreInLocSetsEQ { \schemaVar \term Heap h ; \schemaVar \term Object o , o2 ; \schemaVar \term Field f , f2 ; \schemaVar \term LocSet EQ ; \assumes ( wellFormed ( h ), LocSet :: select ( h , o , f )= EQ ==> ) \find ( elementOf ( o2 , f2 , EQ )==> ) \add ( o2 = null | boolean :: select ( h , o2 , java.lang.Object :: )= TRUE ==> ) \heuristics (inReachableStateImplication ) };defined in: heapRules.key Line: 849 Offset :4

arrayLengthNotNegative

arrayLengthNotNegative { \schemaVar \term Object o ; \find ( length ( o )) \sameUpdateLevel \add ( length ( o )>= 0 ==> ) \heuristics (inReachableStateImplication ) };defined in: heapRules.key Line: 866 Offset :4

wellFormedStoreObject

wellFormedStoreObject { \schemaVar \term Heap h ; \schemaVar \term Object o ; \schemaVar \term Field f ; \schemaVar \term deltaObject x ; \find ( wellFormed ( store ( h , o , f , x ))) \varcond \replacewith ( wellFormed ( h )& ( x = null | boolean :: select ( h , x , java.lang.Object :: )= TRUE & alpha :: instance ( x )= TRUE )) \heuristics (simplify_enlarging ) };defined in: heapRules.key Line: 893 Offset :4

wellFormedStoreArray

wellFormedStoreArray { \schemaVar \term Heap h ; \schemaVar \term Object o ; \schemaVar \term int idx ; \schemaVar \term deltaObject x ; \find ( wellFormed ( store ( h , o , arr ( idx ), x ))) \varcond \replacewith ( wellFormed ( h )& ( x = null | boolean :: select ( h , x , java.lang.Object :: )= TRUE & arrayStoreValid ( o , x ))) \heuristics (simplify_enlarging ) };defined in: heapRules.key Line: 909 Offset :4

wellFormedStoreLocSet

wellFormedStoreLocSet { \schemaVar \term Heap h ; \schemaVar \term Object o ; \schemaVar \term Field f ; \schemaVar \term LocSet x ; \find ( wellFormed ( store ( h , o , f , x ))) \varcond \replacewith ( wellFormed ( h )& createdInHeap ( x , h )) \heuristics (simplify_enlarging ) };defined in: heapRules.key Line: 925 Offset :4

wellFormedStorePrimitive

wellFormedStorePrimitive { \schemaVar \term Heap h ; \schemaVar \term Object o ; \schemaVar \term Field f ; \schemaVar \term beta x ; \find ( wellFormed ( store ( h , o , f , x ))) \varcond \replacewith ( wellFormed ( h )) \heuristics (concrete ) };defined in: heapRules.key Line: 941 Offset :4

wellFormedStorePrimitiveArray

wellFormedStorePrimitiveArray { \schemaVar \term Heap h ; \schemaVar \term Object o ; \schemaVar \term int idx ; \schemaVar \term beta x ; \find ( wellFormed ( store ( h , o , arr ( idx ), x ))) \varcond \replacewith ( wellFormed ( h )) \heuristics (concrete ) };defined in: heapRules.key Line: 960 Offset :4

wellFormedCreate

wellFormedCreate { \schemaVar \term Heap h ; \schemaVar \term Object o ; \find ( wellFormed ( create ( h , o ))) \replacewith ( wellFormed ( h )) \heuristics (concrete ) };defined in: heapRules.key Line: 980 Offset :4

wellFormedAnon

wellFormedAnon { \schemaVar \term Heap h , h2 ; \schemaVar \term LocSet s ; \find ( wellFormed ( anon ( h , s , h2 ))) \replacewith ( wellFormed ( h )& wellFormed ( h2 )) \heuristics (concrete ) };defined in: heapRules.key Line: 992 Offset :4

wellFormedMemsetArrayObject

wellFormedMemsetArrayObject { \schemaVar \term Heap h ; \schemaVar \term Object ar ; \schemaVar \term int lo , up ; \schemaVar \term deltaObject x ; \find ( wellFormed ( memset ( h , arrayRange ( ar , lo , up ), x ))) \varcond \replacewith ( wellFormed ( h )& ( x = null | boolean :: select ( h , x , java.lang.Object :: )= TRUE & arrayStoreValid ( ar , x ))) \heuristics (simplify_enlarging ) };defined in: heapRules.key Line: 1004 Offset :4

wellFormedMemsetArrayPrimitive

wellFormedMemsetArrayPrimitive { \schemaVar \term Heap h ; \schemaVar \term Object ar ; \schemaVar \term int lo , up ; \schemaVar \term beta x ; \find ( wellFormed ( memset ( h , arrayRange ( ar , lo , up ), x ))) \varcond \replacewith ( wellFormed ( h )) \heuristics (simplify_enlarging ) };defined in: heapRules.key Line: 1021 Offset :4

wellFormedStoreObjectEQ

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 )) \sameUpdateLevel \varcond \replacewith ( wellFormed ( h )& ( x = null | boolean :: select ( h , x , java.lang.Object :: )= TRUE & alpha :: instance ( x )= TRUE )) \heuristics (simplify_enlarging ) };defined in: heapRules.key Line: 1105 Offset :4

wellFormedStoreLocSetEQ

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 )) \sameUpdateLevel \replacewith ( wellFormed ( h )& createdInHeap ( x , h )) \heuristics (simplify_enlarging ) };defined in: heapRules.key Line: 1124 Offset :4

wellFormedStorePrimitiveEQ

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 )) \sameUpdateLevel \varcond \replacewith ( wellFormed ( h )) \heuristics (concrete ) };defined in: heapRules.key Line: 1141 Offset :4

wellFormedAnonEQ

wellFormedAnonEQ { \schemaVar \term Heap h , h2 ; \schemaVar \term LocSet s ; \schemaVar \term Heap EQ ; \assumes ( anon ( h , s , h2 )= EQ ==> ) \find ( wellFormed ( EQ )) \sameUpdateLevel \replacewith ( wellFormed ( h )& wellFormed ( h2 )) \heuristics (concrete ) };defined in: heapRules.key Line: 1159 Offset :4

onlyCreatedObjectsAreObserved

onlyCreatedObjectsAreObserved { \schemaVar \term Heap h ; \schemaVar \term deltaObject obs ; \schemaVar \term Object o ; \schemaVar \term Field f ; \find ( obs ) \sameUpdateLevel \varcond \add ( obs = null | boolean :: select ( h , obs , java.lang.Object :: )= TRUE ==> ) \heuristics (inReachableStateImplication ) };defined in: heapRules.key Line: 1234 Offset :4

onlyCreatedObjectsAreObservedInLocSets

onlyCreatedObjectsAreObservedInLocSets { \schemaVar \term Heap h ; \schemaVar \term LocSet obs ; \schemaVar \term Object o ; \schemaVar \term Field f ; \find ( elementOf ( o , f , obs )==> ) \varcond \add ( o = null | boolean :: select ( h , o , java.lang.Object :: )= TRUE ==> ) \heuristics (inReachableStateImplication ) };defined in: heapRules.key Line: 1250 Offset :4

onlyCreatedObjectsAreObservedInLocSetsEQ

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 \add ( o = null | boolean :: select ( h , o , java.lang.Object :: )= TRUE ==> ) \heuristics (inReachableStateImplication ) };defined in: heapRules.key Line: 1265 Offset :4

narrowSelectType

narrowSelectType { \schemaVar \term Heap h ; \schemaVar \term Object o ; \schemaVar \term Field f ; \assumes ( wellFormed ( h )==> ) \find ( beta :: select ( h , o , f )) \varcond \replacewith ( alpha :: select ( h , o , f )) \heuristics (simplify ) };defined in: heapRules.key Line: 1285 Offset :4

narrowSelectArrayType

narrowSelectArrayType { \schemaVar \term Heap h ; \schemaVar \term Object o ; \schemaVar \term int idx ; \assumes ( wellFormed ( h )==> o = null ) \find ( beta :: select ( h , o , arr ( idx ))) \sameUpdateLevel \varcond \replacewith ( alpha :: select ( h , o , arr ( idx ))) \heuristics (simplify ) };defined in: heapRules.key Line: 1302 Offset :4

castTrueImpliesOriginalTrue

castTrueImpliesOriginalTrue { \schemaVar \term Heap h ; \schemaVar \term Object o ; \schemaVar \term Field f ; \assumes ( boolean :: select ( h , o , f )= TRUE ==> ) \find ( ==> any :: select ( h , o , f )= TRUE ) \replacewith ( ==> true ) \heuristics (concrete ) };defined in: heapRules.key Line: 1320 Offset :4

Taclets

Enabled under choices: programRules:JavaJavaCard:on

arrayLengthIsAShort

arrayLengthIsAShort { \schemaVar \term Object o ; \find ( length ( o )) \sameUpdateLevel \add ( inShort ( length ( o ))==> ) \heuristics (inReachableStateImplication ) };defined in: heapRules.key Line: 1336 Offset :4

Taclets

Enabled under choices: programRules:JavaJavaCard:off

arrayLengthIsAnInt

arrayLengthIsAnInt { \schemaVar \term Object o ; \find ( length ( o )) \sameUpdateLevel \add ( inInt ( length ( o ))==> ) \heuristics (inReachableStateImplication ) };defined in: heapRules.key Line: 1350 Offset :4

Taclets

Enabled under choices: programRules:Java

observerDependencyEQ

observerDependencyEQ { \schemaVar \term any t1 ; \schemaVar \term any t2 ; \find ( t1 = t2 ) \inSequentState \inSequentState \varcond \replacewith ( true ); \add ( ==> #ObserverEquality ( t1 , t2 )) };defined in: heapRules.key Line: 1364 Offset :4

observerDependencyEquiv

observerDependencyEquiv { \schemaVar \formula t1 ; \schemaVar \formula t2 ; \find ( t1 <-> t2 ) \inSequentState \inSequentState \varcond \replacewith ( true ); \add ( ==> #ObserverEquality ( t1 , t2 )) \displayname "observerDependencyEQ" };defined in: heapRules.key Line: 1376 Offset :4

observerDependency

observerDependency { \schemaVar \term any termWithLargeHeap ; \schemaVar \term any termWithSmallHeap ; \find ( termWithLargeHeap ) \inSequentState \inSequentState \varcond \replacewith ( termWithSmallHeap ); \add ( ==> #ObserverEquality ( termWithLargeHeap , termWithSmallHeap )) };defined in: heapRules.key Line: 1389 Offset :4

observerDependencyFormula

observerDependencyFormula { \schemaVar \formula termWithLargeHeap ; \schemaVar \formula termWithSmallHeap ; \find ( termWithLargeHeap ) \inSequentState \inSequentState \varcond \replacewith ( termWithSmallHeap ); \add ( ==> #ObserverEquality ( termWithLargeHeap , termWithSmallHeap )) \displayname "observerDependency" };defined in: heapRules.key Line: 1401 Offset :4

nonNull

nonNull { \schemaVar \term Object o ; \schemaVar \term Heap heapSV ; \schemaVar \term int depth ; \schemaVar \variables int i ; \find ( nonNull ( heapSV , o , depth )) \varcond \replacewith ( ( o != null & ( depth > 0 -> \forall i ; ( 0 <= i & i < length ( o )-> nonNull ( heapSV , Object :: select ( heapSV , o , arr ( i )), depth - 1 ))))) \heuristics (simplify_enlarging ) };defined in: heapRules.key Line: 1414 Offset :4

nullIsNotNonNull

nullIsNotNonNull { \schemaVar \term Object o ; \schemaVar \term Heap heapSV ; \schemaVar \term int depth ; \find ( nonNull ( heapSV , null , depth )) \replacewith ( false ) \heuristics (concrete ) };defined in: heapRules.key Line: 1431 Offset :4

nonNullZero

nonNullZero { \schemaVar \term Object o ; \schemaVar \term Heap heapSV ; \find ( nonNull ( heapSV , o , 0 )) \replacewith ( o != null ) \heuristics (concrete ) };defined in: heapRules.key Line: 1440 Offset :4