Log In Sign Up

ConSORT: Context- and Flow-Sensitive Ownership Refinement Types for Imperative Programs

by   John Toman, et al.

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.


page 1

page 2

page 3

page 4


Data Flow Refinement Type Inference

Refinement types enable lightweight verification of functional programs....

ANOSY: Approximated Knowledge Synthesis with Refinement Types for Declassification

Non-interference is a popular way to enforce confidentiality of sensitiv...

Flux: Liquid Types for Rust

We introduce Flux, which shows how logical refinements can work hand in ...

Diffy: Inductive Reasoning of Array Programs using Difference Invariants

We present a novel verification technique to prove interesting propertie...

Type-directed Bounding of Collections in Reactive Programs

Our aim is to statically verify that in a given reactive program, the le...

Flexible recovery of uniqueness and immutability (Extended Version)

We present an imperative object calculus where types are annotated with ...

Intensional Datatype Refinement

The pattern-match safety problem is to verify that a given functional pr...