let inter a b = match a,b with
| Init, Init -> Init
| ToReturn v, Init | Init, ToReturn v -> ToReturn v
| ToInfinity v, Init | Init, ToInfinity v -> ToInfinity v
| ToReturn v, ToReturn v' -> ToReturn ( S.inter v v')
| ToInfinity v, ToInfinity v' -> ToInfinity ( S.inter v v')
| ToReturn v, ToInfinity _ | ToInfinity _, ToReturn v -> ToReturn v