@@ -340,19 +340,42 @@ module ProductFlow {
340
340
fwdIsSuccessor ( _, _, node1 , node2 )
341
341
}
342
342
343
+ pragma [ nomagic]
344
+ private predicate fwdIsSuccessorExit (
345
+ Flow1:: PathNode mid1 , Flow2:: PathNode mid2 , Flow1:: PathNode succ1 , Flow2:: PathNode succ2
346
+ ) {
347
+ isSinkPair ( mid1 , mid2 ) and
348
+ succ1 = mid1 and
349
+ succ2 = mid2
350
+ or
351
+ interprocEdgePair ( mid1 , mid2 , succ1 , succ2 )
352
+ }
353
+
354
+ private predicate fwdIsSuccessor1 (
355
+ Flow1:: PathNode pred1 , Flow2:: PathNode pred2 , Flow1:: PathNode mid1 , Flow2:: PathNode mid2 ,
356
+ Flow1:: PathNode succ1 , Flow2:: PathNode succ2
357
+ ) {
358
+ fwdReachableInterprocEntry ( pred1 , pred2 ) and
359
+ localPathStep1 * ( pred1 , mid1 ) and
360
+ fwdIsSuccessorExit ( pragma [ only_bind_into ] ( mid1 ) , pragma [ only_bind_into ] ( mid2 ) , succ1 , succ2 )
361
+ }
362
+
363
+ private predicate fwdIsSuccessor2 (
364
+ Flow1:: PathNode pred1 , Flow2:: PathNode pred2 , Flow1:: PathNode mid1 , Flow2:: PathNode mid2 ,
365
+ Flow1:: PathNode succ1 , Flow2:: PathNode succ2
366
+ ) {
367
+ fwdReachableInterprocEntry ( pred1 , pred2 ) and
368
+ localPathStep2 * ( pred2 , mid2 ) and
369
+ fwdIsSuccessorExit ( pragma [ only_bind_into ] ( mid1 ) , pragma [ only_bind_into ] ( mid2 ) , succ1 , succ2 )
370
+ }
371
+
372
+ pragma [ assume_small_delta]
343
373
private predicate fwdIsSuccessor (
344
374
Flow1:: PathNode pred1 , Flow2:: PathNode pred2 , Flow1:: PathNode succ1 , Flow2:: PathNode succ2
345
375
) {
346
- fwdReachableInterprocEntry ( pred1 , pred2 ) and
347
376
exists ( Flow1:: PathNode mid1 , Flow2:: PathNode mid2 |
348
- localPathStep1 * ( pred1 , mid1 ) and
349
- localPathStep2 * ( pred2 , mid2 )
350
- |
351
- isSinkPair ( mid1 , mid2 ) and
352
- succ1 = mid1 and
353
- succ2 = mid2
354
- or
355
- interprocEdgePair ( mid1 , mid2 , succ1 , succ2 )
377
+ fwdIsSuccessor1 ( pred1 , pred2 , mid1 , mid2 , succ1 , succ2 ) and
378
+ fwdIsSuccessor2 ( pred1 , pred2 , mid1 , mid2 , succ1 , succ2 )
356
379
)
357
380
}
358
381
0 commit comments