The CIVL-IR. Also known as "CIVL model". == Static Types == * `Boolean` * Integer types * `Integer` : the mathematical integers * `Int` * finite interval of integers [lo,hi]. If `wrap` is true then all operations "wrap", otherwise, any operation resulting in a value outside of the interval results in an exception being thrown. * Real types * `Real` : the mathematical real numbers * `Float` : IEEE754 floating point numbers * `Struct` * list of name-type pairs * bit-widths? * `Array` * `Array` * `Function` * `Pointer` When are two types equal? What are two types compatible? == Values == == Expressions == == Statements == * Assign * Call * Spawn * Wait == Program Graph == == Model == == Libraries ==