@@ -141,12 +141,15 @@ only in this scenario*.
141
141
``` k
142
142
syntax Variable ::= VariableName "{" Sort "}" [klabel(sortedVariable)]
143
143
syntax SetVariable ::= SharpName [klabel(setVariable)]
144
+ syntax Context ::= VariableName "[" Pattern "]" [klabel(context)]
144
145
syntax Pattern ::= Int
145
146
| Variable
146
147
| SetVariable
147
148
| Symbol
148
149
| Symbol "(" Patterns ")" [klabel(apply)]
149
150
151
+ | Context
152
+
150
153
| "\\top" "(" ")" [klabel(top)]
151
154
| "\\bottom" "(" ")" [klabel(bottom)]
152
155
| "\\equals" "(" Pattern "," Pattern ")" [klabel(equals)]
@@ -359,8 +362,8 @@ module KORE-HELPERS
359
362
360
363
rule getReturnSort(\exists{Vs} P) => getReturnSort(P)
361
364
362
- syntax Sort ::= "TopSort" [token]
363
- | "BottomSort" [token]
365
+ syntax UpperName ::= "TopSort" [token]
366
+ | "BottomSort" [token]
364
367
365
368
syntax Sort ::= unionSort(Sort, Sort) [function]
366
369
rule unionSort(TopSort, S) => TopSort
@@ -833,10 +836,10 @@ Simplifications
833
836
834
837
// TODO: This should use an axiom, similar to `functional` instead: `axiom predicate(P)`
835
838
rule isPredicatePattern(S:Symbol(ARGS)) => true
836
- requires getReturnSort(S(ARGS)) =/ =K Heap
839
+ requires getReturnSort(S(ARGS)) ==K Bool
837
840
838
841
rule isPredicatePattern(S:Symbol(ARGS)) => false
839
- requires getReturnSort(S(ARGS)) ==K Heap
842
+ requires getReturnSort(S(ARGS)) =/ =K Bool
840
843
rule isPredicatePattern(emp(.Patterns)) => false
841
844
rule isPredicatePattern(\exists{Vs} P) => isPredicatePattern(P)
842
845
rule isPredicatePattern(\forall{Vs} P) => isPredicatePattern(P)
@@ -857,6 +860,8 @@ Simplifications
857
860
rule isSpatialPattern(\or(_)) => false
858
861
rule isSpatialPattern(S:Symbol(ARGS)) => true
859
862
requires S =/=K sep andBool getReturnSort(S(ARGS)) ==K Heap
863
+ rule isSpatialPattern(S:Symbol(ARGS)) => false
864
+ requires getReturnSort(S(ARGS)) =/=K Heap
860
865
rule isSpatialPattern(#hole { Bool }) => false
861
866
rule isSpatialPattern(#hole { Heap }) => true
862
867
rule isSpatialPattern(V:VariableName { Heap }) => true
@@ -918,6 +923,7 @@ Simplifications
918
923
rule hasImplicationContext(\functionalPattern(P)) => hasImplicationContext(P)
919
924
rule hasImplicationContext(\exists{ _ } P ) => hasImplicationContext(P)
920
925
rule hasImplicationContext(\forall{ _ } P ) => hasImplicationContext(P)
926
+ rule hasImplicationContext(\mu X . P) => hasImplicationContext(P)
921
927
rule hasImplicationContext(implicationContext(_, _)) => true
922
928
rule hasImplicationContextPs(.Patterns) => false
923
929
rule hasImplicationContextPs(P, Ps)
0 commit comments