Theory Interval_Lattice
theory Interval_Lattice
imports "Voblint_Domain.State_Concretization" "Voblint_VIMP.VIMP_Proc"
begin
section ‹Interval lattice›
text ‹
An interval @{text "[l, u]"} abstracts the integers @{text "{n. l ≤ n ∧ n ≤ u}"}.
Bounds are extended integers (@{text MinInf} / @{text "Fin n"} / @{text PlusInf}).
Empty (e.g. @{text "[+inf, -inf]"}) is @{text bot}; @{text "[-inf, +inf]"} is @{text top}.
›
subsection ‹Extended integer bounds›
text ‹
An interval needs endpoints that can say "no lower limit" and "no upper
limit", so ‹eint› adds ‹MinInf› and ‹PlusInf› to the integers. Ordering
puts ‹MinInf› below and ‹PlusInf› above everything, which makes ‹eint› a
linear order; addition and subtraction extend the integer operations, with
the mixed-infinity cases (‹PlusInf + MinInf› and its mirror) pinned to a
fixed choice rather than left undefined, since a total function is what
›