Wed Feb 10 18:09:43 CET 2010

Nesting number types

It's going a bit fast..  After re-reading [1] a bit I see they do
stack different abstract domains.  I.e. in 4.1: 

      type maybeValue = Val of float code
                      | Exp of float code

      type abstract_code = Lit of float
                         | Any of float * maybeValue      

The first one determines whether it's cheap or expensive to duplicate
a value, and the second allows operations on compile-time literals to
be evaluated away.

Compared to my approach, constant addition is not tracked, only
constant multiplication.

The concretization functions mentioned in [1] are what is the "show"
code in mine.

Maybe I should experiment a bit with number systems and see how they
compose; see what kind of patterns emerge.

[1] http://www.cs.rice.edu/~taha/publications/conference/emsoft04.pdf