lean4-htt/library/init/data
Leonardo de Moura 0b7d987699 feat(frontends/lean, library/init/lean): opaque constants
@kha I have added support for opaque constants to the old C++ frontend,
and made sure the new frontend can still parse `library/init/core.lean`.
The kernel should enforce that opaque constants are really opaque, and
the following example should fail
```
constant x : nat := 0
theorem foo : x = 0 := rfl
```
If it doesn't, it is a bug.

Here are some remaining issues:
1- `environment.mk_empty` is currently an axiom because we cannot create
an inhabitant of an opaque type. A possible solution is to use
`option environment` instead of `environment`.

2- There is no support for opaque constants in the new
frontend. However, I modified it to handle axioms, and fixed the literal
values with decl_cmd_kind. I tried to mark some of my changes with
comments, but it is probably much easier for you to just check the
commit change list.

3- I did not add any support for automatically constructing `e`
at `constant x : t := e`. I think we can do this later
after we replace the old frontend with the new one. BTW, it took only a
few minutes to provide the inhabitants manually.
2019-03-15 17:41:44 -07:00
..
array chore(library/init/data): move usize to uint 2019-03-09 10:32:23 -08:00
char feat(frontends/lean, library/init/lean): opaque constants 2019-03-15 17:41:44 -07:00
fin feat(library/init/data): bitwise operations 2019-03-09 10:19:35 -08:00
hashmap fix(frontends/lean/elaborator): ensure_no_unassigned_metavars: only check mvars in parameter 2018-10-07 21:11:02 -07:00
int fix(library/init/data/int/basic): nasty bug at int.repr 2019-02-12 15:58:59 -08:00
list feat(library/init/data/list/basic): tail recursive length 2019-02-08 16:51:44 -08:00
nat feat(runtime): add efficient fixpoint implementation 2019-03-10 10:09:57 -07:00
option perf(library/init/data/option/basic): missing [inline] 2019-03-06 10:58:12 -08:00
ordering chore(library/init/data/ordering/basic): mark cmp_using as [inline] 2018-09-17 14:56:31 -07:00
rbmap refactor(library/init/data/rbmap/basic): pass ins node-cell to balance1 and balance2. 2019-02-20 18:27:58 -08:00
rbtree feat(frontends/lean/vm_elaborator,library/init/lean/elaborator): pass parser_state between languages, create parser object on C++ side to existing functions (that don't actually parse anything) 2018-12-18 15:30:38 +01:00
string feat(library/init, frontends/lean): add abbreviation for abbreviation 2019-03-15 16:01:25 -07:00
basic.lean chore(*): remove more files 2018-05-21 06:42:58 -07:00
default.lean chore(*): remove several tactics 2018-05-21 06:53:01 -07:00
dlist.lean feat(library/init/data): tail recursive append 2019-02-08 16:35:20 -08:00
hashable.lean chore(library/init/data): move usize to uint 2019-03-09 10:32:23 -08:00
repr.lean chore(library/init/data): move usize to uint 2019-03-09 10:32:23 -08:00
to_string.lean test(tests/compiler): uint constant folding tests 2019-02-15 14:53:29 -08:00
uint.lean chore(library/init/data): move usize to uint 2019-03-09 10:32:23 -08:00