\( \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

Generalize Program Logics via Types


Expressive and Automatic

Liquid Types

Generalize Program Logics via Types


Expressive and Automatic


Take Home 1: Inference

  • Typecheck "templates"

  • Abstract Interpretation

Liquid Types

Generalize Program Logics via Types


Expressive and Automatic


Take Home 2: Uninterpreted Functions

  • Measures for Datatype properties

  • Abstract Refinements

Liquid Types

Generalize Program Logics via Types


Expressive and Automatic


Take Home 3: Laziness breaks partial correctness

  • Use refinements prove termination

  • Use termination to prove refinements

Thank You!


http://goto.ucsd.edu/liquid