Commit Graph

23 Commits

Author SHA1 Message Date
William J. Bowman
43e82910cb
Typed macros through syntax parse?
Working on some advanced trickery with syntax-parse to essentially get
typed-macros. Needs more work.
2015-11-05 18:33:04 -05:00
William J. Bowman
b050c4f192
Better error messages for let, in certain cases 2015-10-03 04:09:16 -04:00
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
6b4bbf9618
Fixed issue with #%app and elim macros 2015-10-02 21:34:04 -04:00
William J. Bowman
a80c4a162f
Added a fancy let form 2015-10-02 21:14:23 -04:00
William J. Bowman
cf6f81fbd4
Added single step evaluation abilities. Closes #27
* Added single step meta-function to core
* Expose step/syn in redex-lang
* Added macro to sugar for convenience use
* Updated relevant docs (also fixed bug in reflection docs)
2015-09-29 15:41:21 -04:00
William J. Bowman
e54c7e5bb5
Added query-type command to sugar 2015-09-25 20:08:07 -04:00
William J. Bowman
ff2f052a21
More unicode in stdlib/sugar
closes #21
2015-09-25 19:44:37 -04:00
William J. Bowman
f4d38dec51
Recovered better elim syntax in sugar.rkt 2015-09-25 17:55:25 -04:00
William J. Bowman
9681fbd9e0
Restricted elim curnel syntax
The curnel was documented as having a restricted syntax, but this was
not actually enforced. Now it is.
2015-09-25 17:50:27 -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
2666080278
Removed dead code 2015-09-25 15:16:44 -04:00
William J. Bowman
1261ef2b73
Fixed some bugs introduced by changes to sugar
Yesterday's changes to sugar broke some things:

* case isn't smart enough to infer the right things in all cases yet, so
  added previously existing case* for when it is necessary.
* reexport define-theorem and qed from sugar, since still used in prop.
2015-09-25 13:37:51 -04:00
William J. Bowman
bf867bca7f
Moved some features out of curnel
* run is user-definable through the existing reflection features; moved
  to sugar.
* define need not have special function support in curnel; moved to
  sugar.
* fixed relevant documentation
2015-09-25 13:36:44 -04:00
William J. Bowman
2477fe9f4b
Made case macro do more work
Now the case macro is closer to a pattern-matcher.
2015-09-24 18:01:42 -04:00
William J. Bowman
d82727a3fb
Starting fixing uses of elim, but there is a bug 2015-09-24 13:51:29 -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
2ddf7ce352 Fixed several bugs, found several more
Trying to fix proofs for free examples; found several bugs but more
still exist. Added TODOs
2015-02-20 19:12:06 -05:00
William J. Bowman
b2afc8f9d9 Bug fixes 2015-02-15 21:25:39 -05: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