  We present ConSORT, a type system for safety verification in the presence of
mutability and aliasing. Mutability requires strong updates to model changing
invariants during program execution, but aliasing between pointers makes it
difficult to determine which invariants must be updated in response to
mutation. Our type system addresses this difficulty with a novel combination of
refinement types and fractional ownership types. Fractional ownership types
provide flow-sensitive and precise aliasing information for reference
variables. ConSORT interprets this ownership information to soundly handle
strong updates of potentially aliased references. We have proved ConSORT sound
and implemented a prototype, fully automated inference tool. We evaluated our
tool and found it verifies non-trivial programs including data structure
implementations.
