tests for terminating expressions
inline loopbreakers
minor
edit pairMeasure
Merge pull request #269 from ucsd-progsys/inline_loop_breaker

Inline loop breaker
extract Literals code
extract Literals code
extract WiredIns
Refine CoreToLogic for Prop measures
Refine CoreToLogic for Prop measures
simplify prop measures
prop measure works\!
strength types for Haskell Prop measures
inline booleas in measure definitions
more Pred cases
Merge pull request #270 from ucsd-progsys/prop_measures

Prop measures
Change branches whitelisted in .travis.yml
Serialize refined types with the cereal library

This change brings in the `cereal` and `cereal-text` libraries from
Hackage as dependencies. `cereal` provides a typeclass, Serialize, for
serializing arbitrary data structors to ByteStrings. Instances can be
automatically derived through GHC.Generics. `cereal-text` provides
ready-to-use instances of Serialize for Data.Text.Text and its variants.

Instances of Serialize for data structures that represent refined types
are derived in the new module Language.Haskell.Liquid.Serialize. The
code in there currently could use some organizing and pruning: I'm sure
that there are instances in there that won't actually be used.

These instances are intended for use in the in-progress .lqhi work, in
order to save and load computed type information for verified modules.
Package verified module info into lqhi file

The new Intr structure contains information about a verified module. It
is encoded and saved into a .lqhi file next to the source .hs or .lhs
file.

Currently this saving is done via a hacked-in testIntrGen function in
GhcInterface, which does the processing and prints the results as
debugging information. Eventually this will be tidied up and separated
out properly.
Set up test for POC of loading .lqhi data

LiquidHaskell now attempts to load and display test data for the .lqhi
file of the target module, if one exists.

Right now it fails to look up type constructors that were resolved to
ones defined in non-exported modules (eg. Data.Set.Set is
Data.Set.Base.Set; see tests/pos/ListConcat.hs). To fix this requires
modifying how type lookup happens when converting from the .lqhi
BareTypes to SpecTypes. Because it'd be awful to add in a *third* method
of converting from BareType -> SpecType in Bare, and because this code
is messy as it is, I'm going to attempt to overhaul this code and unify
it into a single, consistent interface. Wish me luck!

One change that's been made here is to the Symbolic instance for TyCon.
The previous implementation simply returned a qualifiedNameSymbol over
the TyCon's Name. Unfortunately, GHC's nameModule_maybe erroneously
returns "GHC.Types" for built-in type constructors like [], which causes
the .lqhi code to fail to resolve the symbol when it tries to look it
up. The Symbolic instance for TyCon has been modified to detect these
cases and return a non-prefixed Symbol, instead of returning an
incorrect result, for these built-in types.

Note that, if you want to test the .lqhi file loading code, you'll need
to run liquid twice on the test file: once to generate the .lqhi file,
and once to load it back in.