Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
PCF with Contracts and Symbolic Values
Racket
Branch: master

Merge pull request #24 from philnguyen/fix-translation

encode (x = y => fx = fy), fixing previous false counterexample
latest commit 22da2b74c7
@dvanhorn authored
Failed to load latest commit information.
cpcf First-class contracts.
pcf encode (x = y => fx = fy), fixing previous false counterexample
scpcf encode (x = y => fx = fy), fixing previous false counterexample
scribblings Example of lack of type checking.
spcf fix pattern in scpcf's havoc rule + fix implementation of `/`
tests
.gitignore Add .gitignore.
README.md Some doc improvements.
info.rkt Dependencies.

README.md

PCF with Contracts and Symbolic Values

This collection implements four core programming languages, useful for studying PCF, contracts, and symbolic execution:

  • PCF: a core typed language (with natural numbers, errors and recursion).

  • Symbolic PCF ('PCF): an extension of PCF endowed with a notion of "symbolic values", written (• T), which represents an abstraction of all values of type T.

  • Contract PCF (CPCF): an extension of PCF endowed with behavioral software contracts. Contracts include arbitrary predicates written in PCF and higher-order contracts, written (C ... -> C). The monitor of a contract against a computation is written (C ⚖ M). When a contract fails, blame is signalled and indicates who is to blame.

  • Symbolic CPCF ('CPCF): an extension of Contract PCF endowed with symbolic values written (• T C ...), which represents an abstraction of all values of type T satisfying contracts C ....

These languages are available as #lang languages that include static type checking:

#lang pcf <option>
#lang spcf <option>
#lang cpcf <option>
#lang scpcf <option>

where

option ::= | traces | stepper

These languages are also available as Redex models.

Documentation

http://dvanhorn.github.com/pcf/

Organization

  • LANG/examples.rkt: examples written in each language.
  • LANG/redex.rkt: Redex models of each language.
  • LANG/lang/: implements #lang LANG.
  • tests/LANG/: tests for each language.

Installation and testing

You will need Racket 5.3.1.9 or later.

% raco pkg install pcf
Something went wrong with that request. Please try again.