Scalable implementation of the eFLINT language The eFLINT language is a normative specification language that combines imperative and declarative concepts such as variable assignment, relations, queries and logical implication. The language is applied within the context of data exchange applications to interconnect and automatically enforce social policies (laws, regulations, agreements, sharing conditions) and system policies (e.g. access control policies). The language is supported by various tools such as a REPL, a Jupyter notebook and TCP/HTTP server projects. The main tool is a reference interpreter, simultaneously defining and executing the language's operational semantics. However, these tools are developed for the evaluation of research questions rather than to operate within a production environment. The goal of this project is to develop an alternative implementation of the language, which is fast and meets modern software development criteria. The language is described in research papers, notebook-based documentation and a JSON specification for an eFLINT API. The reference interpreter is to be used to establish the correctness of the new implementation [2]. The implementation should be in the form of a server with a clearly specified API. The eFLINT language has a purely relational semantics that therefore naturally gives rise to a database-oriented implementation. The goal of this project is to implement the language and to compare the resulting implementation with that of the existing reference interpreter. Required skills: API implementation, back-end development, database systems, report writing Recommended skills: Haskell; experience with logical or other forms of declarative programming; basic understanding of relational algebra Ideally: compiler construction #### References [1] Van Binsbergen, L. Thomas, et al. "eFLINT: a domain-specific language for executable norm specifications." Proceedings of the 19th ACM SIGPLAN International Conference on Generative Programming: Concepts and Experiences. 2020. DOI: https://doi.org/10.1145/3425898.3426958 [2] Van Binsbergen, L. Thomas. "Reference implementation of eFLINT in Haskell." https://gitlab.com/eflint/haskell-implementation