{#abstractrefinements} ========================
Prop>. Int
-> Int
-> Int
@-}
maxInt x y = if x <= y then y else x
\end{code}
Prop>. Int
-> Int
-> Int
@-}
maxInt x y = if x <= y then y else x
\end{code}
[Key idea: ](http://goto.ucsd.edu/~rjhala/papers/abstract_refinement_types.html) `Int
` is `{v:Int | (p v)}`
Prop>. Int
-> Int
-> Int
@-}
maxInt x y = if x <= y then y else x
\end{code}
**Check** and **Instantiate** type using *SMT & predicate abstraction*
Using Abstract Refinements
--------------------------
-