$30 off During Our Annual Pro Sale. View Details »

An Efficient and Parallel Abstract Interpreter in Scala — Preparatory Work — Presentation

An Efficient and Parallel Abstract Interpreter in Scala — Preparatory Work — Presentation

Presentation for "MEMO-F403 Preparatory work for the master thesis" (ULB).

https://bitbucket.org/OPiMedia/efficient-parallel-abstract-interpreter-in-scala-preparatory

More Decks by 🌳 Olivier Pirson — OPi 🇧🇪🇫🇷🇬🇧 🐧 👨‍💻 👨‍🔬

Other Decks in Science

Transcript

  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 — [email protected]
    orcid.org/0000-0001-6296-9659
    August 25, 2017
    Vrije Universiteit Brussel
    Promotors Coen De Roover
    Wolfgang De Meuter
    Advisor Quentin Stievenart

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  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 L
    A
    TEX 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

    View Slide