hjwylde / language-qux

WIP: Utilities for working with the Qux language
BSD 3-Clause "New" or "Revised" License
7 stars 0 forks source link

language-qux

Project Status: WIP - Initial development is in progress, but there has not yet been a stable, usable release suitable for the public. Build Status Release

Qux is an experimental language developed from the ground up with the aim of supporting extended static checks at compile time. This package provides tools for working with it (parsing, compiling, pretty printing and type checking) within Haskell code.

If you're interested in actually compiling Qux files, see here for the binary.

Aims

Qux is designed as an imperative, functional programming language with extended static checks for program verification. The goal is to be able to write pre- and post-conditions as part of type and method contracts that will be verifiable by mathematical means (e.g., a SMT solver or theorem prover).

Inspiration for a language with extended static checks has come from David J. Pearce's language, Whiley. During my honours year I contributed a solution for verifying Whiley's method contracts using an external SMT solver (Z3). For those interested in reading this rather long report, see here.

Tasks for v1

The language is in it's very initial stages of development and thus has very little features! There are a few core tasks in mind that need to be achieved before v1 can come about:

Of course, there will be minor tasks to accompany this release, such as documentation on the language features. The above merely mark the core functionality required.

Tasks for v2