Software Foundations Separation Logic