Owicki-Gries, thread-modular model checking and Cartesian abstraction