Commit graph

19 commits

Author SHA1 Message Date
Leonardo de Moura
75c63ec921 refactor(*): list<name> ==> obj_list<name> 2018-05-23 15:48:43 -07:00
Leonardo de Moura
0556412f8d refactor(*): add runtime folder
@kha The runtime folder includes what is needed to link a
standalone Lean program. It is still contains some unnecessary files.
We will be able to remove them after we release Lean4.
2018-05-14 14:23:56 -07:00
Leonardo de Moura
bdea7d420d chore(*): type_context ==> type_context_old 2018-03-05 12:38:24 -08:00
Leonardo de Moura
e0bdb10ab4 fix(library/type_context): clenaup whnf_head_pred
The code had a few leftovers from the old `whnf_pred` method.
We don't use `whnf_pred` anymore.
2018-01-08 11:31:03 -08:00
Leonardo de Moura
a056e87350 fix(library/init/meta/injection_tactic): add support for ginductive datatypes 2017-12-06 09:39:20 -08:00
Leonardo de Moura
641a4548b6 fix(library/tactic/cases_tactic): use inj_arrow instead no_confusion when index is a nested and/or mutually recursive datatype
The `no_confusion` construction is only generated for inductive
datatypes supported in the kernel.
Before this commit, given `h : T`, `cases h` could leak the internal encoding
used by the inductive compiler WHEN a nested and/or mutual inductive
datatype is used to index the inductive datatype `T`.
The new test exposes the problem.

The solution implemented in this commit uses inj_arrow lemmas
generated by the inductive compiler. We only use the lemmas
if the target is a proposition. If it is not, we sign an error.
The reason for this limitation is documented in the source code.

cc @jroesch @dselsam

Jared: the information leakage has been fixed. So, students will not be
confused by the internal encoding used in the inductive compiler.
I added the example I posted on slack as a new test.
Note that, the workaround I used has been removed.
2017-11-27 21:56:35 -08:00
Daniel Selsam
4330e733c5 feat(inductive_compiler): API for is_ginductive_inner_* 2017-03-06 14:01:59 -08:00
Daniel Selsam
d461cb001e feat(inductive_compiler): get_ginductive_num_indices 2017-03-06 10:53:58 -08:00
Leonardo de Moura
d50da0feb7 feat(library/tactic/induction_tactic): add support for ginductive in the induction tactic 2017-03-04 14:55:35 -08:00
Leonardo de Moura
060d6b66b2 fix(library/inductive_compiler/ginductive): incorrect assertion 2017-03-04 13:31:34 -08:00
Daniel Selsam
4e1967c242 feat(inductive_compiler): is_pack and is_unpack API 2017-03-03 20:39:47 -08:00
Daniel Selsam
dc5b57bff6 fix(inductive_compiler/ginductive.cpp): populate new fields of entry 2017-03-03 20:39:39 -08:00
Daniel Selsam
616a4ce5c5 fix(inductive_compiler/ginductive.cpp): debug code did not compile 2017-03-03 20:39:27 -08:00
Daniel Selsam
e9c05f727c feat(inductive_compiler): APIs for simulated constructor offsets 2017-03-03 12:43:48 -08:00
Leonardo de Moura
6f95f4668f fix(library/inductive_compiler/ginductive): constructors of mutually inductive datatypes were not being registered
Actually, the constructors of the first inductive datatype in a mutually
recursive definitions were being registered.
2017-02-04 18:51:17 -08:00
Gabriel Ebner
a26e2c9108 feat(library/module): intermediary data structure for environment modifications 2016-12-20 10:15:19 -08:00
Gabriel Ebner
a8df381d20 feat(*): parallel compilation 2016-11-29 11:12:40 -08:00
Daniel Selsam
52f87760d8 feat(src/library/inductive_compiler): support for nested inductive types 2016-09-16 12:50:59 -07:00
Daniel Selsam
b0c5744eea feat(inductive_compiler): support for mutually inductive types 2016-09-10 14:22:27 -07:00