Code Monkey home page Code Monkey logo

pbt's Introduction

Prerequisites

The development contained in the source folder is written in the λProlog programming language. It occasionally relies on advanced features available only in ELPI, though most of the development runs without modification on Teyjus as well.

Repository structure

The root contains a proof checking kernel and proof certificate definitions for property-based testing in the FPC framework. The certificates enable exhaustive and random counterexample search and are applied to a range of examples, each located in its own sub-folder with core definitions, correct and buggy variants of some of these, and top-level files packaging all those together into full programs and their associated test cases (these top-level files generally have the word bug in their names).

Running the tests

For example, consider the first bug in the test suite of the simply-typed lambda calculus example. Load the .mod file in ELPI including the requisite folders, namely the root where the common modules are located and the concrete sub-folder for the example:

$ elpi -I src/ -I src/Stlc stlc-bug1.mod

At the prompt, enter a goal to try to find a counterexample to a given property. For the STLC example, a dedicated module defines predicates for the various properties of interest and for the term generation strategies under consideration. For example, to try to obtain a counterexample to the progress property using exhaustive generation of terms of gradually increasing height:

goal> cexprog_h E T.

Upon success, the system will output a term E of type T that fails to satisfy this property.

pbt's People

Contributors

robblanco avatar momigliano avatar daleamiller avatar

Stargazers

 avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.