\( \require{color} \definecolor{kvcol}{RGB}{203,23,206} \definecolor{tycol}{RGB}{5,177,93} \definecolor{refcol}{RGB}{18,110,213} \newcommand{\quals}{\mathbb{Q}} \newcommand{\defeq}{\ \doteq\ } \newcommand{\subty}{\preceq} \newcommand{\True}{\mathit{True}} \newcommand{\Int}{\mathtt{Int}} \newcommand{\Nat}{\mathtt{Nat}} \newcommand{\Zero}{\mathtt{Zero}} \newcommand{\foo}[4]{{#1}^{#4} + {#2}^{#4} = {#3}^{#4}} \newcommand{\reft}[3]{\{\bindx{#1}{#2} \mid {#3}\}} \newcommand{\ereft}[3]{\bindx{#1}{\{#2 \mid #3\}}} \newcommand{\bindx}[2]{{#1}\!:\!{#2}} \newcommand{\reftx}[2]{\{{#1}\mid{#2}\}} \newcommand{\inferrule}[3][]{\frac{#2}{#3}\;{#1}} \newcommand{\kvar}[1]{\color{kvcol}{\mathbf{\kappa_{#1}}}} \newcommand{\llen}[1]{\mathtt{llen}(#1)} \)

Conclusion

Conclusion

Liquid Types

Use Types to lift Logic + Analysis to Modern Programs


Properties: Predicates + Types
Proofs: Verification Conditions + Subtyping
Inference: Abstract Interpretation + Hindley-Milner

Liquid Types

Use Types to lift Logic + Analysis to Modern Programs


Take Home: Types are a simple and uniform way to analyze

  • Unbounded Data (eg. Arrays, Lists, HashMaps)
  • Polymorphism (eg. Generics,...)
  • Callbacks/HOFs (eg. map, reduce, filter,...)

Current & Future Work

Technology

  • Speed
  • Imperative Features (Pointers, Mutation, ...)
  • Diagnostics & Error Messages

Current & Future Work

Applications

  • Concurrency & Distribution
  • Probabilistic Behavior
  • Completion, Repair & Synthesis

Thank You!


http://goto.ucsd.edu/liquid