|
31 | 31 | \then(msetEmpty) |
32 | 32 | \else(msetRange{uSub;}(left, right, t))) |
33 | 33 |
|
34 | | - \heuristics(out_of_bounds) |
| 34 | + \heuristics(simplify) |
35 | 35 | }; |
36 | 36 |
|
37 | 37 | mset_Single { |
|
230 | 230 | \schemaVar \term Heap h; |
231 | 231 | \schemaVar \term Object array; |
232 | 232 |
|
233 | | - \find(msetRange{uSub;}(left, right, beta::select(h, array, arr(uSub)))) |
| 233 | + \find(msetRange{uSub;}(left, right, select<[beta]>(h, array, arr(uSub)))) |
234 | 234 | \varcond(\notFreeIn(uSub, left), \notFreeIn(uSub, middle), \notFreeIn(uSub, right), \notFreeIn(uSub, h), \notFreeIn(uSub, array)) |
235 | 235 | \replacewith(\if(left <= middle & middle <= right) |
236 | | - \then(msetSum(msetSum(msetRange{uSub;}(left, middle-1, beta::select(h, array, arr(uSub))), |
237 | | - msetSingle(beta::select(h, array, arr(middle)))), |
238 | | - msetRange{uSub;}(middle+1, right, beta::select(h, array, arr(uSub))))) |
239 | | - \else(msetRange{uSub;}(left, right, beta::select(h, array, arr(uSub))))) |
| 236 | + \then(msetSum(msetSum(msetRange{uSub;}(left, middle-1, select<[beta]>(h, array, arr(uSub))), |
| 237 | + msetSingle(select<[beta]>(h, array, arr(middle)))), |
| 238 | + msetRange{uSub;}(middle+1, right, select<[beta]>(h, array, arr(uSub))))) |
| 239 | + \else(msetRange{uSub;}(left, right, select<[beta]>(h, array, arr(uSub))))) |
240 | 240 | \heuristics(comprehension_split, triggered) |
241 | | - \trigger {middle} msetSingle(beta::select(h, array, arr(middle))) |
| 241 | + \trigger {middle} msetSingle(select<[beta]>(h, array, arr(middle))) |
242 | 242 | \avoid middle <= -1 + left, right <= -1 + middle; |
243 | 243 | }; |
244 | 244 |
|
|
250 | 250 | \schemaVar \variables int uSub; |
251 | 251 | \schemaVar \term alpha x; |
252 | 252 |
|
253 | | - \find(msetRange{uSub;}(left, right, beta::select(store(h, array, arr(middle), x), array, arr(uSub)))) |
| 253 | + \find(msetRange{uSub;}(left, right, select<[beta]>(store(h, array, arr(middle), x), array, arr(uSub)))) |
254 | 254 | \varcond(\notFreeIn(uSub, left), \notFreeIn(uSub, middle), \notFreeIn(uSub, right)) |
255 | 255 | \replacewith(\if(left <= middle & middle <= right) |
256 | | - \then(msetSum(msetSum(msetRange{uSub;}(left, middle-1, beta::select(h, array, arr(uSub))), |
| 256 | + \then(msetSum(msetSum(msetRange{uSub;}(left, middle-1, select<[beta]>(h, array, arr(uSub))), |
257 | 257 | msetSingle({\subst uSub; middle} x)), |
258 | | - msetRange{uSub;}(middle+1, right, beta::select(h, array, arr(uSub))))) |
259 | | - \else(msetRange{uSub;}(left, right, beta::select(h, array, arr(uSub))))) |
| 258 | + msetRange{uSub;}(middle+1, right, select<[beta]>(h, array, arr(uSub))))) |
| 259 | + \else(msetRange{uSub;}(left, right, select<[beta]>(h, array, arr(uSub))))) |
260 | 260 | \heuristics(simplify_ENLARGING) |
261 | 261 | }; |
262 | 262 |
|
|
267 | 267 | \schemaVar \term Object array; |
268 | 268 | \schemaVar \term alpha x; |
269 | 269 |
|
270 | | - \find(msetRange{uSub;}(left, right, beta::select(store(h, array, arr(left), x), array, arr(uSub)))) |
| 270 | + \find(msetRange{uSub;}(left, right, select<[beta]>(store(h, array, arr(left), x), array, arr(uSub)))) |
271 | 271 | \varcond(\notFreeIn(uSub, left), \notFreeIn(uSub, right)) |
272 | 272 | \replacewith(msetSum(msetSingle({\subst uSub; left} x), |
273 | | - msetRange{uSub;}(left+1, right, beta::select(h, array, arr(uSub))))) |
| 273 | + msetRange{uSub;}(left+1, right, select<[beta]>(h, array, arr(uSub))))) |
274 | 274 | \heuristics(simplify_enlarging) |
275 | 275 | }; |
276 | 276 |
|
|
281 | 281 | \schemaVar \term Object array; |
282 | 282 | \schemaVar \term alpha x; |
283 | 283 |
|
284 | | - \find(msetRange{uSub;}(left, right, beta::select(store(h, array, arr(right), x), array, arr(uSub)))) |
| 284 | + \find(msetRange{uSub;}(left, right, select<[beta]>(store(h, array, arr(right), x), array, arr(uSub)))) |
285 | 285 | \varcond(\notFreeIn(uSub, left), \notFreeIn(uSub, right)) |
286 | | - \replacewith(msetSum(msetRange{uSub;}(left, right-1, beta::select(h, array, arr(uSub))), |
| 286 | + \replacewith(msetSum(msetRange{uSub;}(left, right-1, select<[beta]>(h, array, arr(uSub))), |
287 | 287 | msetSingle({\subst uSub; right} x))) |
288 | 288 | \heuristics(simplify_enlarging) |
289 | 289 | }; |
|
294 | 294 | \schemaVar \term Heap h; |
295 | 295 | \schemaVar \term Object array; |
296 | 296 |
|
297 | | - \find(msetRange{uSub;}(low, high, beta::select(h, array, arr(uSub)))) |
| 297 | + \find(msetRange{uSub;}(low, high, select<[beta]>(h, array, arr(uSub)))) |
298 | 298 | \varcond(\notFreeIn(uSub, low), \notFreeIn(uSub, high), \notFreeIn(uSub, h), \notFreeIn(uSub, array)) |
299 | | - \replacewith(msetSum(msetSingle(beta::select(h, array, arr(low))), |
300 | | - msetRange{uSub;}(low+1, high, beta::select(h, array, arr(uSub))))) |
| 299 | + \replacewith(msetSum(msetSingle(select<[beta]>(h, array, arr(low))), |
| 300 | + msetRange{uSub;}(low+1, high, select<[beta]>(h, array, arr(uSub))))) |
301 | 301 | \heuristics(comprehension_split, triggered) |
302 | | - \trigger {low} msetSingle(beta::select(h, array, arr(low))) |
| 302 | + \trigger {low} msetSingle(select<[beta]>(h, array, arr(low))) |
303 | 303 | \avoid low >= high, false; |
304 | 304 | }; |
305 | 305 |
|
|
309 | 309 | \schemaVar \term Heap h; |
310 | 310 | \schemaVar \term Object array; |
311 | 311 |
|
312 | | - \find(msetRange{uSub;}(low, high, beta::select(h, array, arr(uSub)))) |
| 312 | + \find(msetRange{uSub;}(low, high, select<[beta]>(h, array, arr(uSub)))) |
313 | 313 | \varcond(\notFreeIn(uSub, low), \notFreeIn(uSub, high), \notFreeIn(uSub, h), \notFreeIn(uSub, array)) |
314 | | - \replacewith(msetSum(msetSingle(beta::select(h, array, arr(high))), |
315 | | - msetRange{uSub;}(low, high-1, beta::select(h, array, arr(uSub))))) |
| 314 | + \replacewith(msetSum(msetSingle(select<[beta]>(h, array, arr(high))), |
| 315 | + msetRange{uSub;}(low, high-1, select<[beta]>(h, array, arr(uSub))))) |
316 | 316 | \heuristics(comprehension_split, triggered) |
317 | | - \trigger {high} msetSingle(beta::select(h, array, arr(high))) |
| 317 | + \trigger {high} msetSingle(select<[beta]>(h, array, arr(high))) |
318 | 318 | \avoid high <= low, false; |
319 | 319 | }; |
320 | 320 | } |
0 commit comments