Presentation for "MEMO-F403 Preparatory work for the master thesis" (ULB).
https://bitbucket.org/OPiMedia/efficient-parallel-abstract-interpreter-in-scala-preparatory
The Mariana Trench remarkable geological features on Earth.pptx
An Efficient and Parallel Abstract Interpreter in Scala — Preparatory Work — Presentation
1. Universit´e Libre de Bruxelles
Computer Science Department
MEMO-F403 Preparatory work for the master thesis
An Efficient and Parallel
Abstract Interpreter in Scala
— Preparatory Work —
Presentation
Olivier Pirson — opi@opimedia.be
orcid.org/0000-0001-6296-9659
August 25, 2017
Vrije Universiteit Brussel
Promotors Coen De Roover
Wolfgang De Meuter
Advisor Quentin Stievenart
2. An Efficient and
Parallel Abstract
Interpreter
in Scala
—
Preparatory
Work
—
Presentation
Abstract
interpretation for
static analysis
Concrete vs
abstract
interpretation
Parallelism
References
1 Abstract interpretation for static analysis
2 Concrete vs abstract interpretation
3 Parallelism
4 References
An Efficient and Parallel Abstract Interpreter in Scala — Preparatory Work — Presentation 2 / 12
3. An Efficient and
Parallel Abstract
Interpreter
in Scala
—
Preparatory
Work
—
Presentation
Abstract
interpretation for
static analysis
Concrete vs
abstract
interpretation
Parallelism
References
Abstract interpretation for static analysis
Abstract interpretation is a technique to perform static analysis
A static analysis of a program is made without executing the program
The goal is to prove the correctness (or other property) of the program
An Efficient and Parallel Abstract Interpreter in Scala — Preparatory Work — Presentation 3 / 12
4. An Efficient and
Parallel Abstract
Interpreter
in Scala
—
Preparatory
Work
—
Presentation
Abstract
interpretation for
static analysis
Concrete vs
abstract
interpretation
Parallelism
References
1 Abstract interpretation for static analysis
2 Concrete vs abstract interpretation
3 Parallelism
4 References
An Efficient and Parallel Abstract Interpreter in Scala — Preparatory Work — Presentation 4 / 12
5. An Efficient and
Parallel Abstract
Interpreter
in Scala
—
Preparatory
Work
—
Presentation
Abstract
interpretation for
static analysis
Concrete vs
abstract
interpretation
Parallelism
References
Concrete interpretation
trace: concrete interpretation with small-step semantics, for one instance
e
s0 s1 s2 s3 s4 · · ·
injection
function
concrete transition function
A program is executed by interpreter = Abstract Machine (AM)
e is for expression, i.e. a program
one execution is for one instance on this program
si are states during this execution
An Efficient and Parallel Abstract Interpreter in Scala — Preparatory Work — Presentation 5 / 12
6. An Efficient and
Parallel Abstract
Interpreter
in Scala
—
Preparatory
Work
—
Presentation
Abstract
interpretation for
static analysis
Concrete vs
abstract
interpretation
Parallelism
References
Abstract interpretation
trace: concrete interpretation with small-step semantics, for one instance
e
s0 s1 s2 s3 s4 · · ·
s0 s1 s2 s3 s4
s3′
injection
function
injection
function
abstraction
function α
abstract transition function
2 approximations:
finite state space
abstract transition function returns all directly reachable states
state graph: abstract interpretation, for all instances
Abstracting Abstract Machine (AAM)
“The abstract simulates the concrete” (Matthew Might)
An Efficient and Parallel Abstract Interpreter in Scala — Preparatory Work — Presentation 6 / 12
7. An Efficient and
Parallel Abstract
Interpreter
in Scala
—
Preparatory
Work
—
Presentation
Abstract
interpretation for
static analysis
Concrete vs
abstract
interpretation
Parallelism
References
Concrete interpretation
Correct program Incorrect program
We want to prove the correctness of the program
Testing:
is not enough to prove
exhaustivity is impossible
An Efficient and Parallel Abstract Interpreter in Scala — Preparatory Work — Presentation 7 / 12
8. An Efficient and
Parallel Abstract
Interpreter
in Scala
—
Preparatory
Work
—
Presentation
Abstract
interpretation for
static analysis
Concrete vs
abstract
interpretation
Parallelism
References
Abstract interpretation
Correct program Incorrect program
Correct abstract interpretation Incorrect abstract interpretation
An Efficient and Parallel Abstract Interpreter in Scala — Preparatory Work — Presentation 7 / 12
9. An Efficient and
Parallel Abstract
Interpreter
in Scala
—
Preparatory
Work
—
Presentation
Abstract
interpretation for
static analysis
Concrete vs
abstract
interpretation
Parallelism
References
Abstract interpretation
Correct abstract interpretation Incorrect abstract interpretation
Decidability?
Soundness vs completeness?
Good complexity vs precision? =⇒ parallelism to improve speed
An Efficient and Parallel Abstract Interpreter in Scala — Preparatory Work — Presentation 8 / 12
10. An Efficient and
Parallel Abstract
Interpreter
in Scala
—
Preparatory
Work
—
Presentation
Abstract
interpretation for
static analysis
Concrete vs
abstract
interpretation
Parallelism
References
1 Abstract interpretation for static analysis
2 Concrete vs abstract interpretation
3 Parallelism
4 References
An Efficient and Parallel Abstract Interpreter in Scala — Preparatory Work — Presentation 9 / 12
11. An Efficient and
Parallel Abstract
Interpreter
in Scala
—
Preparatory
Work
—
Presentation
Abstract
interpretation for
static analysis
Concrete vs
abstract
interpretation
Parallelism
References
Goal of the future master thesis: parallelism
Parallelism to have good precision and speed
Choices for the future master thesis:
Actor model: model of concurrency with
no shared resources
exchanges of messages
Akka: framework Scala
Time is up!
An Efficient and Parallel Abstract Interpreter in Scala — Preparatory Work — Presentation 10 / 12
12. An Efficient and
Parallel Abstract
Interpreter
in Scala
—
Preparatory
Work
—
Presentation
Abstract
interpretation for
static analysis
Concrete vs
abstract
interpretation
Parallelism
References
1 Abstract interpretation for static analysis
2 Concrete vs abstract interpretation
3 Parallelism
4 References
An Efficient and Parallel Abstract Interpreter in Scala — Preparatory Work — Presentation 11 / 12
13. An Efficient and
Parallel Abstract
Interpreter
in Scala
—
Preparatory
Work
—
Presentation
Abstract
interpretation for
static analysis
Concrete vs
abstract
interpretation
Parallelism
References
References
Thank you!
References:
All documents and LATEX sources:
https://bitbucket.org/OPiMedia/efficient-parallel-abstract-interpreter-in-scala-preparatory
Ren´e Magritte, Le Calcul Mental, 1940
http://www.artnet.com/artists/ren%C3%A9-magritte/le-calcul-mental-oU6yWQzE-ERgxZSTgANE-g2
An Efficient and Parallel Abstract Interpreter in Scala — Preparatory Work — Presentation 12 / 12