Skip to content
Snippets Groups Projects
gillian.md 2.21 KiB
Newer Older
  • Learn to ignore specific revisions
  • pmaksimo's avatar
    pmaksimo committed
    ---
    title: Gillian
    project_id: gillian
    menu: true
    parent_menu: Research
    menu_order: 4
    sub_menu_order: 2
    ---
    
    Gillian is a multi-language platform for the development
    of compositional symbolic analysis tools. Gillian currently
    
    pmaksimo's avatar
    pmaksimo committed
    supports three flavours of analysis: symbolic
    
    pmaksimo's avatar
    pmaksimo committed
    testing, full verification based on separation logic, and
    automatic compositional testing based on bi-abduction.
    These analysis are, for the first time, unified in a
    common symbolic execution engine.
    
    #### GIL
    
    
    pmaksimo's avatar
    pmaksimo committed
    At the core of Gillian is GIL, a simple goto intermediate language
    that is parametric on the memory model of the target language (TL):
    that is, on the set of basic actions capturing the ways in which
    TL programs fundamentally interact with their memories.
    
    pmaksimo's avatar
    pmaksimo committed
    
    #### Correctness
    
    The symbolic execution of Gillian is fully formalised, with
    the implementation closely following the formalisation.
    The correctness results are, for the first time, stated
    and proven parametrically, independently of the TL.
    This has been made possible by a novel concept of restriction,
    
    pmaksimo's avatar
    pmaksimo committed
    which generalises path conditions of classic symbolic execution.
    
    pmaksimo's avatar
    pmaksimo committed
    
    #### Instantiations
    
    
    pmaksimo's avatar
    pmaksimo committed
    In order to instantiate Gillian to a new TL,
    
    pmaksimo's avatar
    pmaksimo committed
    the tool developer has to provide:
    
    pmaksimo's avatar
    pmaksimo committed
    - a trusted compiler from the TL to GIL instantiated with the TL basic actions, preserving the TL memory model and semantics;
    
    pmaksimo's avatar
    pmaksimo committed
    - an OCaml implementation of the concrete and symbolic memory models of the TL; and
    
    pmaksimo's avatar
    pmaksimo committed
    - for the meta-theory, proofs of simple lemmas for the TL basic actions.
    
    pmaksimo's avatar
    pmaksimo committed
    
    So far, we have instantiated Gillian to JavaScript and C.
    
    #### Publications
    
    We have recently published the first paper on Gillian at PLDI'20 (see below), which
    
    pmaksimo's avatar
    pmaksimo committed
    introduces the principles of Gillian, its core symbolic execution, and its symbolic testing.
    
    #### Research Support
    
    Gillian is supported by Gardner's UKRI Established Career Fellowship
    ["VeTSpec: Verified Trustworthy Software Specification"][VeTSpec], Facebook,
    and GCHQ. It was previously supported by the EPSRC programme grant
    [EP/K008528/1]: [REMS: Rigorous Engineering of Mainstream Systems][REMS].
    
    [VeTSpec]: https://gow.epsrc.ukri.org/NGBOViewGrant.aspx?GrantRef=EP/R034567/1
    [EP/K008528/1]: http://gow.epsrc.ac.uk/NGBOViewGrant.aspx?GrantRef=EP/K008528/1
    [REMS]: http://www.cl.cam.ac.uk/~pes20/rems/