WARNING: THIS SITE IS A MIRROR OF GITHUB.COM / IT CANNOT LOGIN OR REGISTER ACCOUNTS / THE CONTENTS ARE PROVIDED AS-IS / THIS SITE ASSUMES NO RESPONSIBILITY FOR ANY DISPLAYED CONTENT OR LINKS / IF YOU FOUND SOMETHING MAY NOT GOOD FOR EVERYONE, CONTACT ADMIN AT ilovescratch@foxmail.com
Skip to content

Extensibility of MAF #28

@bramvdbogaerde

Description

@bramvdbogaerde

We might want to split this issue into multiple different issues, but I hope to give an overview of the ways in which one might want to extend MAF.

  • Annotated values: both in the incremental and scv analyses the values returned from "eval" in the big step semantics are annotated with additional information. In the case of the incremental analysis with information about the flows, in case of scv with symbolic information of the value. Currently, a workaround is required to add this additional information to the values: (a) creating a special lattice that annotates the value elements with additional information or (b) extending the monad such that it can implicitly return the annotations
  • Extending the target language: in MAF we have multiple "languages": CScheme, ContractScheme, ... currently they need to be in the same hierarchy as the base Scheme language, and even in the same file (as we like to keep SchemeExp sealed). This comes down somewhat to the well-known expression problem.
  • Extending the abstract domain with additional values: it seems rather difficult at the moment to introduce additional abstract values into the scheme lattice. Additionally, these values need to be introduced in the SchemeLattice and therefore need to be implemented for particular abstract domains and analyses for which they might not even make much sense.
  • Changing the exploration semantics of the intra-analysis: One analysis might want to join after an if expression, another might want to keep them as separate states that need to be explored further. Currently, the big step semantics somewhat accommodate for this by defining the semantics in a monadic style. Changing the behaviour of the intra-analysis therefore often comes down to changing the monad. However, a more generic set of monads might be introduced so that the burden of implementing a compatible monad with only slightly different semantics is lessened.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions