Powerful meta-programming for powerful types.
Go to file
William J. Bowman c4f0f723f5 Dynamic semantics for elim
elim now runs. Parts of the stdlib have been converted to use elim, but
it's complicated to program with. Need to implement case and fix in
terms of elim, I think.
2015-03-27 21:16:20 -04:00
stdlib Dynamic semantics for elim 2015-03-27 21:16:20 -04:00
example.rkt Renamed more curnels 2015-01-29 22:46:53 -05:00
oll.rkt Redex 1.6 enables caching of judgment forms! 2015-02-20 18:22:04 -05:00
proofs-for-free.rkt Dynamic semantics for elim 2015-03-27 21:16:20 -04:00
README.md Redex 1.6 enables caching of judgment forms! 2015-02-20 18:22:04 -05:00
redex-curnel.rkt Dynamic semantics for elim 2015-03-27 21:16:20 -04:00
stlc.rkt Redex 1.6 enables caching of judgment forms! 2015-02-20 18:22:04 -05:00

cur

CIC under Racket. A language with static dependent-types and dynamic types, type annotations and parentheses, theorem proving and meta-programming.

Noun
cur (plural curs)

1. (archaic) A mongrel.
2. (archaic) A detestable person.

Getting started

Requires redex-lib version 1.6 if you want answer in a reasonable amount of time. Otherwise, the type-checker may require exponential time or worse.

Open up stlc.rkt to see an example of what advanced meta-programming can let you do.

Open up oll.rkt to see the implementation of the meta-programs used to enable stlc.rkt, including the parsers for BNF syntax and inference rule syntax, and Coq and LaTeX generators.

Open up proofs-for-free.rkt to see an implementation of the translation defined in Proofs for Free as a meta-program.

Open up anything in stdlib/ to see some standard dependent-type formalisms.

Open up redex-curnel.rkt to see the entire "trusted" core.