let inter a b = match a,b with
    | InitInit -> Init
    | ToReturn v, Init | InitToReturn v -> ToReturn v
    | ToInfinity v, Init | InitToInfinity 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