Commit Graph

14 Commits

Author SHA1 Message Date
William J. Bowman
822c114f62
Fixed prop; removed define-theorem and qed macros
These macros were not really serving a good purpose. They were defined
early on to demonstrate that metaprogramming can give us Coq-like
notation, but really, we have much more interesting demos.
2015-10-03 03:33:12 -04:00
William J. Bowman
e84b7d7f2e
Merge branch 'master' of github.com:wilbowma/cur 2015-10-02 18:35:46 -04:00
Max New
44b4f5ca81 Add type-inferring constructors
Convention: /i denotes a type-inferring version of something.
2015-10-02 18:06:33 -04:00
William J. Bowman
fb7d351f12
More evaluation during type-checking
Replaces all identifiers with their definitions before type-checking.
Enables more type-checking, but *realllly* slows down type-checking.

Also a test case.
2015-09-29 22:44:39 -04:00
William J. Bowman
b2d042e4a6
Fixed reduction of eliminators like (elim ==)
Fixed eliminator reduction for eliminators of inductive types whose
constructors do not have the same parameters as their type. The
canonical example is ==, which has 3 parameters, but whose constructor
refl only has two.
2015-09-29 16:58:40 -04:00
William J. Bowman
8aabbc219b
disabled test that cause setup errors 2015-09-25 20:10:32 -04:00
William J. Bowman
f05be17fdf
Added Or, but can't seem to use it 2015-09-25 19:32:18 -04:00
William J. Bowman
de3a4d9cf3
Merge branch 'typing-elim'
Closes #6
2015-09-25 17:25:12 -04:00
William J. Bowman
8ba4ed17d9
Fixed bug in reduction of elim
elim was not checking that the arguments to be used for the parameters
of the inductive matched the actual parameters expected, resulting in
incorrect and non-deterministic unification, and thus incorrect
reduction when the parameters were unified incorrectly.
2015-09-25 16:52:49 -04:00
William J. Bowman
fae24ab496
Styles tweaks
* Types now start with a Capital letter, because.
* Boolean expression no longer start with the letter b.
2015-09-22 23:32:02 -04:00
William J. Bowman
3ce14c3871
Refactored core
Moved all curnel code into curnel/, and split the two kernel modules
into separate files. Now the trusted core and the module/#lang stuff are
in separate files. The #lang is now reprovided by "cur.rkt", which
should also provide core agnostic sugar.
2015-09-15 18:02:36 -04:00
William J. Bowman
61bdf8f5d4 Proper names and inductive families
These fixes are merged because properly testing the latter requires
having the former, while properly implementing the former is made
simpler by having the latter.

Fixed handling of names/substitution
===
* Added capture-avoiding substitution. Closes #7
* Added equivalence during typing checking, including α-equivalence and
  limited β-equivalence. Closes #8
* Exposed better typing-check reflection features to allow typing
  checking modulo equivalence.
* Tweaked QED macro to use new type-checking reflection feature.

Fixed inductive families
===
The implementation of inductive families is now based on the theoretical
models of inductive families, rather than an ad-hoc non-dependent
pattern matcher.

* Removed case and fix from Cur and Curnel. They are replaced by elim,
  the generic eliminator for inductive families. Closes #5. Since fix is
  no more, also closes #2.
* Elimination of false works! Closes #4.
* Changed uses of case to elim in Curnel
* Changed uses of case* in Cur to use eliminators. Breaks case* API.
* Fixed Coq generator to use eliminators
* Fixed Latex generator
2015-04-14 19:16:47 -04:00
William J. Bowman
b13bf6471d Fixed various typos/bug, added latex generation 2015-02-05 01:40:58 -05:00
William J. Bowman
be2fd4a6af Reorganized stdlib; fixed some tests 2015-02-04 18:47:15 -05:00