Nλ is a simple functional programming language aimed at manipulating infinite, but first-order definable structures, such as the countably infinite clique graph or the set of all intervals with rational endpoints.
Clone or download
Latest commit b9acb98 Aug 31, 2018
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
src Issue #2 - Clean-up. Aug 31, 2018
.gitignore Version 1.0 Jan 17, 2016
INSTALL Version 1.1 Jul 6, 2016
LICENSE Version 1.0 Jan 17, 2016
NLambda.cabal Issue #9 - SMT queries logging Nov 3, 2017
README.md README Oct 8, 2016
Setup.hs pakiet NLambda Dec 11, 2015
install-equality.sh New flag: TOTAL_ORDER. Dec 31, 2015
install-total-order.sh New flag: TOTAL_ORDER. Dec 31, 2015

README.md

Nλ is a simple functional programming language aimed at manipulating infinite, but first-order definable structures, such as the countably infinite clique graph or the set of all intervals with rational endpoints. Internally, such sets are represented by logical formulas that define them, and an external satisfiability modulo theories (SMT) solver is regularly run by the interpreter to check their basic properties.

For more information, visit NLambda website.

Installation guide

  1. There are two ways to get a source code:
  1. The language is implemented in a Haskell and installation of GHC (at least 7.10) is required.

  2. Move into nlambda directory and perform the following commands:

    runhaskell Setup configure --user -fTOTAL_ORDER
    runhaskell Setup build
    runhaskell Setup install
    

The flag TOTAL_ORDER is required to install the package with ordered atoms (otherwise equality atoms will be used).

To install the package globally (not only for the user account) skip user parameter (see: how to install a Cabal package).

  1. You can also use dedicated scripts:
  • for ordered atoms

    $ ./intall-total-order.sh

  • for equality atoms

    $ ./install-equality.sh

  1. Additionally, you should install the Z3 Theorem Prover and add it to the PATH environment variable.