permissionRules.key

Taclets

No choice condition specified

writePermission

writePermission { \schemaVar \term Permission p ; \find ( writePermission ( p )) \replacewith ( writePermissionObject ( currentThread , p )) \heuristics (simplify_enlarging ) };defined in: permissionRules.key Line: 7 Offset :4

readPermission

readPermission { \schemaVar \term Permission p ; \find ( readPermission ( p )) \replacewith ( readPermissionObject ( currentThread , p )) \heuristics (simplify_enlarging ) };defined in: permissionRules.key Line: 14 Offset :4

permissionDefaultValue

permissionDefaultValue { \find ( Permission :: defaultValue ) \replacewith ( initFullPermission ) \heuristics (simplify ) };defined in: permissionRules.key Line: 21 Offset :4

Taclets

Enabled under choices: permissions:off

writePermissionObject

writePermissionObject { \schemaVar \term Permission p ; \schemaVar \term Object o ; \find ( writePermissionObject ( o , p )) \replacewith ( true ) \heuristics (concrete ) };defined in: permissionRules.key Line: 31 Offset :4

readPermissionObject

readPermissionObject { \schemaVar \term Permission p ; \schemaVar \term Object o ; \find ( readPermissionObject ( o , p )) \replacewith ( true ) \heuristics (concrete ) };defined in: permissionRules.key Line: 39 Offset :4

Taclets

Enabled under choices: permissions:on

checkPermissionOwner_empty

checkPermissionOwner_empty { \schemaVar \term Object ow ; \schemaVar \term int depth ; \find ( checkPermissionOwner ( ow , depth , emptyPermissionOwnerList )) "checkPermissionOwner definition" : \replacewith ( false ); "checkPermissionOwner precondition" : \add ( ==> depth >= 0 ) \heuristics (concrete ) };defined in: permissionRules.key Line: 88 Offset :4

checkPermissionOwner_nonempty

checkPermissionOwner_nonempty { \schemaVar \term Object ow , o ; \schemaVar \term int depth ; \schemaVar \term PermissionOwnerList ol ; \find ( checkPermissionOwner ( ow , depth , consPermissionOwnerList ( o , ol ))) "checkPermissionOwner definition" : \replacewith ( \if ( depth = 0 )\then ( ow = o )\else ( checkPermissionOwner ( ow , depth - 1 , ol ))); "checkPermissionOwner precondition" : \add ( ==> depth >= 0 ) \heuristics (simplify_expression ) };defined in: permissionRules.key Line: 100 Offset :4

insertPermissionOwner

insertPermissionOwner { \schemaVar \term Object o , no , owner ; \schemaVar \term int depth ; \schemaVar \term PermissionOwnerList ol ; \find ( insertPermissionOwner ( o , no , depth , consPermissionOwnerList ( owner , ol ))) "insertPermissionOwner definition" : \replacewith ( \if ( depth = 0 )\then ( consPermissionOwnerList ( no , consPermissionOwnerList ( owner , ol )))\else ( consPermissionOwnerList ( owner , insertPermissionOwner ( o , no , depth - 1 , ol )))); "insertPermissionOwner precondition" : \add ( ==> depth >= 0 & checkPermissionOwner ( o , depth , consPermissionOwnerList ( owner , ol ))) \heuristics (simplify_enlarging ) };defined in: permissionRules.key Line: 115 Offset :4

returnPermissionOwner

returnPermissionOwner { \schemaVar \term Object o , owner ; \schemaVar \term PermissionOwnerList ol ; \find ( returnPermissionOwner ( o , consPermissionOwnerList ( owner , ol ))) "returnPermissionOwner definition" : \replacewith ( ol ); "returnPermissionOwner precondition" : \add ( ==> checkPermissionOwner ( o , 0 , consPermissionOwnerList ( owner , ol ))) \heuristics (simplify_expression ) };defined in: permissionRules.key Line: 136 Offset :4

transferPermission_empty

transferPermission_empty { \schemaVar \term boolean split ; \schemaVar \term Object from , to ; \schemaVar \term int depth ; \find ( transferPermission ( split , from , to , depth , emptyPermission )) \replacewith ( emptyPermission ) \heuristics (concrete ) };defined in: permissionRules.key Line: 150 Offset :4

transferPermission_slice

transferPermission_slice { \schemaVar \term boolean split ; \schemaVar \term Object from , to ; \schemaVar \term int depth ; \schemaVar \term Permission p ; \schemaVar \term PermissionOwnerList owners ; \find ( transferPermission ( split , from , to , depth , slice ( owners , p ))) \replacewith ( \if ( from = to )\then ( slice ( owners , p ))\else ( \if ( checkPermissionOwner ( from , depth , owners ))\then ( slice ( insertPermissionOwner ( from , to , depth , owners ), \if ( split = TRUE )\then ( slice ( owners , p ))\else ( transferPermission ( split , from , to , depth , p ))))\else ( slice ( owners , transferPermission ( split , from , to , depth , p ))))) \heuristics (simplify_enlarging ) };defined in: permissionRules.key Line: 160 Offset :4

returnPermission_empty

returnPermission_empty { \schemaVar \term Object from , to ; \find ( returnPermission ( from , to , emptyPermission )) \replacewith ( emptyPermission ) \heuristics (concrete ) };defined in: permissionRules.key Line: 183 Offset :4

returnPermission_slice_split

returnPermission_slice_split { \schemaVar \term Object from , to ; \schemaVar \term Permission p ; \schemaVar \term PermissionOwnerList owners ; \find ( returnPermission ( from , to , slice ( consPermissionOwnerList ( from , owners ), slice ( owners , p )))) "returnPermission definition" : \replacewith ( slice ( owners , returnPermission ( from , to , p ))); "returnPermission precondition" : \add ( ==> from != to & checkPermissionOwner ( to , 0 , owners )) \heuristics (simplify ) };defined in: permissionRules.key Line: 191 Offset :4

returnPermission_slice

returnPermission_slice { \schemaVar \term Object from , to ; \schemaVar \term Permission p ; \schemaVar \term PermissionOwnerList owners ; \find ( returnPermission ( from , to , slice ( owners , p ))) \replacewith ( \if ( from = to )\then ( slice ( owners , p ))\else ( \if ( checkPermissionOwner ( from , 0 , owners )& checkPermissionOwner ( to , 1 , owners ))\then ( slice ( returnPermissionOwner ( from , owners ), returnPermission ( from , to , p )))\else ( slice ( owners , returnPermission ( from , to , p ))))) \heuristics (simplify_expression ) };defined in: permissionRules.key Line: 204 Offset :4

readPermissionSlice

readPermissionSlice { \schemaVar \term Object o ; \schemaVar \term PermissionOwnerList ol ; \schemaVar \term Permission p ; \find ( readPermissionObject ( o , slice ( ol , p ))) \replacewith ( checkPermissionOwner ( o , 0 , ol )| readPermissionObject ( o , p )) \heuristics (simplify_enlarging ) };defined in: permissionRules.key Line: 224 Offset :4

readPermissionEmpty

readPermissionEmpty { \schemaVar \term Object o ; \find ( readPermissionObject ( o , emptyPermission )) \replacewith ( false ) \heuristics (concrete ) };defined in: permissionRules.key Line: 234 Offset :4

writePermissionSlice

writePermissionSlice { \schemaVar \term Object o ; \schemaVar \term PermissionOwnerList ol ; \schemaVar \term Permission p ; \find ( writePermissionObject ( o , slice ( ol , p ))) \replacewith ( checkPermissionOwner ( o , 0 , ol )& writePermissionObject ( o , p )) \heuristics (simplify_enlarging ) };defined in: permissionRules.key Line: 241 Offset :4

writePermissionEmpty

writePermissionEmpty { \schemaVar \term Object o ; \find ( writePermissionObject ( o , emptyPermission )) \replacewith ( true ) \heuristics (concrete ) };defined in: permissionRules.key Line: 251 Offset :4

initFullPermission

initFullPermission { \find ( initFullPermission ) \replacewith ( slice ( consPermissionOwnerList ( currentThread , emptyPermissionOwnerList ), emptyPermission )) \heuristics (simplify_enlarging ) };defined in: permissionRules.key Line: 260 Offset :4

permOwner1

permOwner1 { \schemaVar \term Object o1 ; \find ( owner1 ( o1 )) \replacewith ( consPermissionOwnerList ( o1 , emptyPermissionOwnerList )) \heuristics (simplify_enlarging ) };defined in: permissionRules.key Line: 266 Offset :4

permOwner2

permOwner2 { \schemaVar \term Object o1 , o2 ; \find ( owner2 ( o1 , o2 )) \replacewith ( consPermissionOwnerList ( o1 , consPermissionOwnerList ( o2 , emptyPermissionOwnerList ))) \heuristics (simplify_enlarging ) };defined in: permissionRules.key Line: 273 Offset :4

permOwner3

permOwner3 { \schemaVar \term Object o1 , o2 , o3 ; \find ( owner3 ( o1 , o2 , o3 )) \replacewith ( consPermissionOwnerList ( o1 , consPermissionOwnerList ( o2 , consPermissionOwnerList ( o3 , emptyPermissionOwnerList )))) \heuristics (simplify_enlarging ) };defined in: permissionRules.key Line: 280 Offset :4

permOwner4

permOwner4 { \schemaVar \term Object o1 , o2 , o3 , o4 ; \find ( owner4 ( o1 , o2 , o3 , o4 )) \replacewith ( consPermissionOwnerList ( o1 , consPermissionOwnerList ( o2 , consPermissionOwnerList ( o3 , consPermissionOwnerList ( o4 , emptyPermissionOwnerList ))))) \heuristics (simplify_enlarging ) };defined in: permissionRules.key Line: 287 Offset :4

permSlice1

permSlice1 { \schemaVar \term PermissionOwnerList pol1 ; \find ( slice1 ( pol1 )) \replacewith ( slice ( pol1 , emptyPermission )) \heuristics (simplify_enlarging ) };defined in: permissionRules.key Line: 294 Offset :4

permSlice2

permSlice2 { \schemaVar \term PermissionOwnerList pol1 , pol2 ; \find ( slice2 ( pol1 , pol2 )) \replacewith ( slice ( pol1 , slice ( pol2 , emptyPermission ))) \heuristics (simplify_enlarging ) };defined in: permissionRules.key Line: 301 Offset :4

twoPermissions

twoPermissions { \schemaVar \term Object o1 , o2 ; \schemaVar \term Permission p ; \schemaVar \variables PermissionOwnerList ol1 , ol2 ; \find ( twoPermissions ( o1 , o2 , p )) \varcond \replacewith ( \exists ol1 , ol2 ; p = slice ( consPermissionOwnerList ( o1 , ol1 ), slice ( consPermissionOwnerList ( o2 , ol2 ), emptyPermission ))) \heuristics (simplify_enlarging ) };defined in: permissionRules.key Line: 308 Offset :4

nonEmptyPermission

nonEmptyPermission { \schemaVar \term Permission p ; \schemaVar \variables Permission pp ; \schemaVar \variables PermissionOwnerList ol ; \find ( nonEmptyPermission ( p )) \varcond \replacewith ( \exists ol ; \exists pp ; p = slice ( ol , pp )) \heuristics (simplify_enlarging ) };defined in: permissionRules.key Line: 324 Offset :4

readPermissionOwe

readPermissionOwe { \schemaVar \term Permission p ; \schemaVar \term Object o1 , o2 ; \schemaVar \variables Permission pp ; \schemaVar \variables PermissionOwnerList ol ; \find ( readPermissionOwe ( o1 , o2 , p )) \varcond \replacewith ( \exists ol ; \exists pp ; p = slice ( consPermissionOwnerList ( o1 , consPermissionOwnerList ( o2 , ol )), pp )) \heuristics (simplify_enlarging ) };defined in: permissionRules.key Line: 334 Offset :4

readPermissionOwe2

readPermissionOwe2 { \schemaVar \term Permission p ; \schemaVar \term Object o1 , o2 ; \schemaVar \variables Permission pp ; \schemaVar \variables PermissionOwnerList ol , ol0 ; \find ( readPermissionOwe2 ( o1 , o2 , p )) \varcond \replacewith ( \exists ol0 ; \exists ol ; \exists pp ; p = slice ( ol0 , slice ( consPermissionOwnerList ( o1 , consPermissionOwnerList ( o2 , ol )), pp ))) \heuristics (simplify_enlarging ) };defined in: permissionRules.key Line: 351 Offset :4

writePermissionImpliesReadPermission

writePermissionImpliesReadPermission { \schemaVar \term Object o ; \schemaVar \term Permission p ; \assumes ( writePermissionObject ( o , p )==> ) \find ( readPermissionObject ( o , p )) \replacewith ( true ) \heuristics (simplify ) };defined in: permissionRules.key Line: 371 Offset :4

readPermissionAfterTransferRead

readPermissionAfterTransferRead { \schemaVar \term Object o1 , o2 ; \schemaVar \term Permission p ; \schemaVar \term boolean split ; \assumes ( readPermissionObject ( o1 , p )==> ) \find ( readPermissionObject ( o2 , transferPermission ( split , o1 , o2 , 0 , p ))) \replacewith ( true ) \heuristics (simplify ) };defined in: permissionRules.key Line: 381 Offset :4

readPermissionAfterTransferReadEQ

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 ) };defined in: permissionRules.key Line: 392 Offset :4

readPermissionAfterTransferWrite

readPermissionAfterTransferWrite { \schemaVar \term Object o1 , o2 ; \schemaVar \term Permission p ; \schemaVar \term boolean split ; \assumes ( writePermissionObject ( o1 , p )==> ) \find ( readPermissionObject ( o2 , transferPermission ( split , o1 , o2 , 0 , p ))) \replacewith ( true ) \heuristics (simplify ) };defined in: permissionRules.key Line: 403 Offset :4

readPermissionAfterTransferWriteEQ

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 ) };defined in: permissionRules.key Line: 414 Offset :4

writePermissionAfterFullTransfer

writePermissionAfterFullTransfer { \schemaVar \term Object o1 , o2 ; \schemaVar \term Permission p ; \assumes ( writePermissionObject ( o1 , p )==> ) \find ( writePermissionObject ( o2 , transferPermission ( FALSE , o1 , o2 , 0 , p ))) \replacewith ( true ) \heuristics (simplify ) };defined in: permissionRules.key Line: 425 Offset :4

writePermissionAfterFullTransferEQ

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 ) };defined in: permissionRules.key Line: 435 Offset :4

writePermissionAfterReturn

writePermissionAfterReturn { \schemaVar \term Object o1 , o2 ; \schemaVar \term Permission p ; \assumes ( writePermissionObject ( o1 , p )==> ) \find ( writePermissionObject ( o2 , returnPermission ( o1 , o2 , p ))) \replacewith ( true ) \heuristics (simplify ) };defined in: permissionRules.key Line: 445 Offset :4

writePermissionAfterReturnEQ

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 ) };defined in: permissionRules.key Line: 455 Offset :4

permissionTransferReturnIdentity

permissionTransferReturnIdentity { \schemaVar \term Object o1 , o2 ; \schemaVar \term Permission p ; \find ( returnPermission ( o2 , o1 , transferPermission ( FALSE , o1 , o2 , 0 , p ))) \replacewith ( p ) \heuristics (simplify ) };defined in: permissionRules.key Line: 465 Offset :4

permissionTransferReturnIdentityEQ

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 ) };defined in: permissionRules.key Line: 474 Offset :4

writePermissionOtherNoPermissionCurrentRead

writePermissionOtherNoPermissionCurrentRead { \schemaVar \term Object o1 , o2 ; \schemaVar \term Permission p ; \assumes ( writePermissionObject ( o1 , p )==> o2 = o1 ) \find ( readPermissionObject ( o2 , p )) \replacewith ( false ) \heuristics (simplify ) };defined in: permissionRules.key Line: 484 Offset :4

writePermissionOtherNoPermissionCurrentWrite

writePermissionOtherNoPermissionCurrentWrite { \schemaVar \term Object o1 , o2 ; \schemaVar \term Permission p ; \assumes ( writePermissionObject ( o1 , p )==> o2 = o1 ) \find ( writePermissionObject ( o2 , p )) \replacewith ( false ) \heuristics (simplify ) };defined in: permissionRules.key Line: 494 Offset :4

createdOnHeapImpliesCreatedOnPermissions

createdOnHeapImpliesCreatedOnPermissions { \schemaVar \term Object o ; \schemaVar \term Heap h , p ; \assumes ( wellFormed ( h ), wellFormed ( p ), permissionsFor ( p , h ), boolean :: select ( h , o , java.lang.Object :: )= TRUE ==> ) \find ( boolean :: select ( p , o , java.lang.Object :: )) \sameUpdateLevel \replacewith ( TRUE ) \heuristics (simplify ) };defined in: permissionRules.key Line: 506 Offset :4