Abstract interpretation for static analysis Concrete vs abstract interpretation Parallelism Next steps References Example of abstraction {. . . , −3, −2, −1, 0, 1, 2, 3, . . .} abstracted by sign = {⊥, +, 0, −, ⊤} ⊤ − 0 + ⊥ Figure: Hasse diagram of the complete lattice of signs. top ⊤ = {. . . , −3, −2, −1, 0, 1, 2, 3, . . .} + = {1, 2, 3, . . .} 0 = {0} − = {−1, −2, −3, . . .} bottom ⊥ = ∅ May be good abstraction for multiplication operations. With additions, directly loss of precision. An Efficient and Parallel Abstract Interpreter in Scala — Presentation 6 / 24