genericRules.key

Sorts

G

\generic G, S1, S2, H;defined in: genericRules.key Line: 10 Offset :4

S1

\generic G, S1, S2, H;defined in: genericRules.key Line: 10 Offset :4

S2

\generic G, S1, S2, H;defined in: genericRules.key Line: 10 Offset :4

H

\generic G, S1, S2, H;defined in: genericRules.key Line: 10 Offset :4

GSub

\generic GSub \extends G ;defined in: genericRules.key Line: 11 Offset :4

C

\generic C;defined in: genericRules.key Line: 13 Offset :4

CSub

\generic CSub \extends C ;defined in: genericRules.key Line: 14 Offset :4

Taclets

No choice condition specified

firstOfPair

firstOfPair { \find ( first ( pair ( t , t1 ))) \replacewith ( t ) \heuristics (concrete ) };defined in: genericRules.key Line: 47 Offset :4

secondOfPair

secondOfPair { \find ( second ( pair ( t , t1 ))) \replacewith ( t1 ) \heuristics (concrete ) };defined in: genericRules.key Line: 53 Offset :4

instanceof_static_type

instanceof_static_type { \schemaVar \term any a ; \find ( G :: instance ( a )) \varcond \replacewith ( TRUE ) \heuristics (concrete , evaluate_instanceof ) \displayname "instanceof static supertype" };defined in: genericRules.key Line: 61 Offset :4

instanceof_static_type_2

instanceof_static_type_2 { \schemaVar \term any a , a2 ; \assumes ( a2 = a ==> ) \find ( G :: instance ( a )) \sameUpdateLevel \varcond \replacewith ( TRUE ) \heuristics (concrete , evaluate_instanceof ) \displayname "instanceof static supertype" };defined in: genericRules.key Line: 70 Offset :4

instanceof_not_compatible

instanceof_not_compatible { \schemaVar \term any a ; \find ( G :: instance ( a )= TRUE ) \varcond \replacewith ( a = null ) \heuristics (concrete , evaluate_instanceof ) \displayname "instanceof disjoint type" };defined in: genericRules.key Line: 81 Offset :4

instanceof_not_compatible_2

instanceof_not_compatible_2 { \schemaVar \term any a ; \find ( G :: instance ( a )= FALSE ) \varcond \replacewith ( ! ( a = null )) \heuristics (concrete , evaluate_instanceof ) \displayname "instanceof disjoint type" };defined in: genericRules.key Line: 90 Offset :4

instanceof_not_compatible_3

instanceof_not_compatible_3 { \schemaVar \term any a ; \find ( G :: instance ( a )= TRUE ) \varcond \replacewith ( false ) \heuristics (concrete , evaluate_instanceof ) \displayname "instanceof disjoint type" };defined in: genericRules.key Line: 99 Offset :4

instanceof_not_compatible_4

instanceof_not_compatible_4 { \schemaVar \term any a ; \find ( G :: instance ( a )= FALSE ) \varcond \replacewith ( true ) \heuristics (concrete , evaluate_instanceof ) \displayname "instanceof disjoint type" };defined in: genericRules.key Line: 108 Offset :4

instanceof_not_compatible_5

instanceof_not_compatible_5 { \schemaVar \term any a ; \assumes ( H :: instance ( a )= TRUE ==> ) \find ( G :: instance ( a )= TRUE ) \varcond \replacewith ( a = null ) \heuristics (concrete , evaluate_instanceof ) \displayname "instanceof disjoint type" };defined in: genericRules.key Line: 120 Offset :4

instanceof_known_dynamic_type

instanceof_known_dynamic_type { \schemaVar \term any a ; \assumes ( G :: exactInstance ( a )= TRUE ==> ) \find ( H :: instance ( a )) \sameUpdateLevel \varcond \replacewith ( TRUE ) \heuristics (simplify , evaluate_instanceof ) };defined in: genericRules.key Line: 130 Offset :4

instanceof_known_dynamic_type_2

instanceof_known_dynamic_type_2 { \schemaVar \term any a ; \assumes ( G :: exactInstance ( a )= TRUE ==> ) \find ( H :: instance ( a )) \sameUpdateLevel \varcond \replacewith ( FALSE ) \heuristics (simplify , evaluate_instanceof ) };defined in: genericRules.key Line: 140 Offset :4

exact_instance_known_dynamic_type

exact_instance_known_dynamic_type { \schemaVar \term any a ; \assumes ( G :: exactInstance ( a )= TRUE ==> ) \find ( H :: exactInstance ( a )) \sameUpdateLevel \varcond \replacewith ( FALSE ) \heuristics (simplify , evaluate_instanceof ) };defined in: genericRules.key Line: 150 Offset :4

typeEq

typeEq { \find ( s = t1 ==> ) \add ( H :: instance ( s )= TRUE , G :: instance ( t1 )= TRUE ==> ) \displayname "typeEq" };defined in: genericRules.key Line: 162 Offset :4

typeEqDerived

typeEqDerived { \assumes ( s = t1 ==> ) \find ( H :: instance ( s )) \sameUpdateLevel \replacewith ( TRUE ) \heuristics (simplify , concrete ) \displayname "typeEq" };defined in: genericRules.key Line: 168 Offset :4

typeEqDerived2

typeEqDerived2 { \assumes ( s = t1 ==> ) \find ( G :: instance ( t1 )) \sameUpdateLevel \replacewith ( TRUE ) \heuristics (simplify , concrete ) \displayname "typeEq" };defined in: genericRules.key Line: 177 Offset :4

typeStatic

typeStatic { \find ( s ) \sameUpdateLevel \add ( G :: instance ( s )= TRUE ==> ) };defined in: genericRules.key Line: 186 Offset :4

castAdd

castAdd { \schemaVar \term [ strict ]C strictCTerm2 ; \assumes ( CSub :: instance ( strictCTerm2 )= TRUE ==> ) \find ( strictCTerm2 ) \sameUpdateLevel \replacewith ( (CSub ) strictCTerm2 ) \displayname "narrow type" };defined in: genericRules.key Line: 193 Offset :4

castAdd2

castAdd2 { \schemaVar \term C cs ; \schemaVar \term G gt ; \assumes ( cs = gt ==> ) \find ( gt ) \sameUpdateLevel \varcond \replacewith ( (C ) gt ) \displayname "castAdd" };defined in: genericRules.key Line: 205 Offset :4

castDel

castDel { \schemaVar \term C castedTerm ; \find ( (C ) castedTerm ) \replacewith ( castedTerm ) \heuristics (simplify , cast_deletion ) \displayname "castDel" };defined in: genericRules.key Line: 217 Offset :4

castDel2

castDel2 { \schemaVar \term CSub cs ; \schemaVar \term G gt ; \assumes ( cs = gt ==> ) \find ( (C ) gt ) \sameUpdateLevel \replacewith ( cs ) \displayname "castDel" };defined in: genericRules.key Line: 225 Offset :4

castType

castType { \assumes ( H :: instance ( (C ) s )= TRUE ==> ) \find ( CSub :: instance ( s )= TRUE ==> ) \replacewith ( H :: instance ( s )= TRUE ==> ) \heuristics (simplify ) \displayname "castType" };defined in: genericRules.key Line: 236 Offset :4

castType2

castType2 { \assumes ( ==> H :: instance ( (C ) s )= TRUE ) \find ( CSub :: instance ( s )= TRUE ==> ) \replacewith ( ==> H :: instance ( s )= TRUE ) \heuristics (simplify ) \displayname "castType" };defined in: genericRules.key Line: 244 Offset :4

closeType

closeType { \assumes ( ==> G :: instance ( t1 )= TRUE ) \find ( GSub :: instance ( t1 )= TRUE ==> ) \closegoal \heuristics (closure ) \displayname "closeType" };defined in: genericRules.key Line: 252 Offset :4

closeTypeSwitched

closeTypeSwitched { \assumes ( GSub :: instance ( t1 )= TRUE ==> ) \find ( ==> G :: instance ( t1 )= TRUE ) \closegoal \heuristics (closure ) \displayname "closeType" };defined in: genericRules.key Line: 260 Offset :4

ineffectiveCast

ineffectiveCast { \assumes ( H :: instance ( t )= TRUE ==> ) \find ( (H ) t ) \sameUpdateLevel \add ( (H ) t = t ==> ) \heuristics (inReachableStateImplication ) };defined in: genericRules.key Line: 267 Offset :4

ineffectiveCast3

ineffectiveCast3 { \assumes ( H :: exactInstance ( t )= TRUE ==> ) \find ( (H ) t ) \sameUpdateLevel \add ( (H ) t = t ==> ) \heuristics (inReachableStateImplication ) };defined in: genericRules.key Line: 292 Offset :4

ineffectiveCast2

ineffectiveCast2 { \schemaVar \term CSub cs ; \schemaVar \term G gt ; \assumes ( cs = gt ==> ) \find ( (C ) gt ) \sameUpdateLevel \add ( (C ) gt = gt ==> ) \heuristics (inReachableStateImplication ) };defined in: genericRules.key Line: 300 Offset :4

sortsDisjointModuloNull

sortsDisjointModuloNull { \schemaVar \term G x ; \schemaVar \term H y ; \find ( x = y ) \varcond \replacewith ( x = null & y = null ) \heuristics (simplify ) };defined in: genericRules.key Line: 316 Offset :4

sortsDisjoint1

sortsDisjoint1 { \schemaVar \term G x ; \schemaVar \term H y ; \find ( x = y ) \varcond \replacewith ( false ) \heuristics (concrete ) };defined in: genericRules.key Line: 327 Offset :4

sortsDisjoint2

sortsDisjoint2 { \schemaVar \term G x ; \schemaVar \term H y ; \find ( x = y ) \varcond \replacewith ( false ) \heuristics (concrete ) };defined in: genericRules.key Line: 338 Offset :4