A Computational Approach to Law



CCLAW's flagship programme researches and develops open source technologies for ‘smart’ contracts and ‘smart’ statutes, starting with the design and implementation of a domain-specific programming language (DSL) that allows for laws, rules and agreements to be expressed in code. This paves the way for ‘smart’ contracts and statutes that can be reliably executed by computers to enable precise and accurate performance and compliance. Industry-adoption of the DSL will facilitate the delivery of more efficient legal and regulatory services through digital systems, and will broaden access to justice.

This Programme is supported by the National Research Foundation of Singapore.


Most professions today use purpose-built software to amplify the work they do. Designers have Photoshop, accountants have Spreadsheets, architects and AutoCAD, and doctors use an entire suite of sensors, scanners, and software to protect life. Meanwhile, the legal industry's runs on the Word processor, a software that only helps with the typing, not thinking, creation, or analysis. This leads us to a central question: how might today's technologies be meaningfully used to better the legal system? 

The Dream of a Common Language

Our flagship Research Project in Computational Law is building a domain-specific language (DSL) for law. Technically-defined, a DSL is a programming language designed for expressing concepts from a specific domain. In our case, this means legal rules, obligations, and processes. 

The DSL is meant as a common denominator supporting an entire toolchain for contracts, statutes, regulations, business rules, and other quasi-legal/rule-type instruments.

Why Computational Law?

As expressed in Love and Genesereth (2008)'s seminal work, expressing the logical component of law in machine-readable, formal logic allows for an entire suite of software tools to be built on top of the core rules engine. This means bringing to bear years of experience and experimentation in software development on legal development, enabling features such as formal verification, unit testing, automated execution, type checking, simulations, and more.

Practical Use Cases

Legal expert systems

Picture a simple form with questions designed to guide laypersons towards some legal answer derived from the application of legal rules, say, how much they are to pay for a traffic accident they caused. Traditional legal expert systems of this sort (e.g. McCarthy, 1977; Sergot et al, 1986; Susskind, 1987) were built with general-purpose programming languages. The legal expressiveness built into L4 aims to allow for more nuanced and useful expert systems to be built. 

Legal change surveillance

A formal representation of law would allow changes to be represented, identified, and highlighted. Flagged changes could be assigned to the right people for follow up, or propagate into updates on corporate policies, etc.

Pre-emptive Rule Checking and Testing

Software has bugs, and so do laws. Software is amenable to an entire suite (and discipline) of formal verification and checking at compile-time (when the software is being written) and run-time (when it is being used). When laws are expressed in software language, the same techniques can used to weed out bugs before they need to be litigated.