Commit graph

56 commits

Author SHA1 Message Date
Leonardo de Moura
7724fbed93 fix(library/equations_compiler/elim_match): do not use constructor transition for below arguments 2016-09-02 12:51:39 -07:00
Leonardo de Moura
b3d78208be fix(library/equations_compiler/elim_match): typo 2016-09-02 12:39:21 -07:00
Leonardo de Moura
3e4d8d0f75 fix(library/equations_compiler/elim_match): dead variable 2016-09-02 12:39:05 -07:00
Leonardo de Moura
bf096eb292 chore(library/equations_compiler/structural_rec): "lemmas" ==> "equations" 2016-09-02 11:17:38 -07:00
Leonardo de Moura
691b200244 feat(library/equations_compiler/util): add [eqn_sanitizer] attribute for defeq lemmas that should be automatically applied 2016-09-02 11:06:31 -07:00
Leonardo de Moura
3384139d38 chore(library/tactic/defeq_simplifier): improve error messages 2016-08-31 17:52:36 -07:00
Leonardo de Moura
54fd9adb47 feat(library/equations_compiler): use defeq simplifier to cleanup types of automatically synthesized lemmas 2016-08-31 15:54:03 -07:00
Leonardo de Moura
51a338d9a1 fix(library/equations_compiler/structural_rec): support for reflexive inductive datatypes 2016-08-31 10:46:32 -07:00
Leonardo de Moura
924c98832b feat(library/equations_compiler/structural_rec): generate eqn lemmas at structural_rec 2016-08-31 09:07:17 -07:00
Leonardo de Moura
33514dd6ea feat(library/equations_compiler/structural_rec): process aux lemmas 2016-08-30 20:09:57 -07:00
Leonardo de Moura
2fc0e5fa05 feat(library/equations_compiler/structural_rec): add aux definition 2016-08-30 18:33:24 -07:00
Leonardo de Moura
253fcdcc51 fix(library/equations_compiler/elim_match): equation lemma generation 2016-08-30 15:00:43 -07:00
Leonardo de Moura
001991dbeb feat(frontends/lean): use equations_header 2016-08-30 13:45:59 -07:00
Leonardo de Moura
230db1bc92 feat(library/equations_compiler/structural_rec): generate brec_on-based function
We still need to generate lemmas and induction principle.
2016-08-29 15:58:13 -07:00
Leonardo de Moura
f1f45cc2b7 feat(library/equations_compiler/structural_rec): better support for structural recursion (based on brec_on)
For example, before this commit, structural_rec would not support the
function to_nat defined below.

```
set_option new_elaborator true

inductive foo : bool → Type
| Z  : foo ff
| O  : foo ff → foo tt
| E  : foo tt → foo ff

definition to_nat : ∀ {b}, foo b → nat
| .ff Z     := 0
| .tt (O n) := to_nat n + 1
| .ff (E n) := to_nat n + 1
```
2016-08-29 10:51:09 -07:00
Leonardo de Moura
b08af16d5f refactor(library/equations_compiler): remove unnecessary abstraction
We changed how we are going to process derived inductive datatypes.
2016-08-29 09:25:01 -07:00
Leonardo de Moura
b317d4bc58 refactor(library/tactic): add hsubstitution module 2016-08-29 08:19:05 -07:00
Leonardo de Moura
1a675d69fc refactor(library/tactic/induction_tactic,library/tactic/cases_tactic): replace name_map<name> with substitutions at induction_tactic
This commit also removes dead code from cases_tactic
2016-08-28 14:09:22 -07:00
Leonardo de Moura
f0f9880ece refactor(library/equations_compiler/elim_match,library/tactic/cases_tactic):
new design for elim_match

I still need to fix lemma generation, and refactor induction/subst tactics
2016-08-28 13:15:10 -07:00
Leonardo de Moura
95e8228e8a refactor(library/tactic/cases_tactic): improve low-level API 2016-08-25 16:34:40 -07:00
Leonardo de Moura
cf15218eea chore(library/equations_compiler/compiler): add new trace option 2016-08-25 10:45:08 -07:00
Leonardo de Moura
41b6358de6 chore(library/equations_compiler/elim_match): add helper methods 2016-08-25 10:44:50 -07:00
Leonardo de Moura
7851b9c097 fix(frontends/lean/definition_cmds): parameter handling 2016-08-23 21:13:54 -07:00
Leonardo de Moura
a93eada058 feat(library/type_context): improved (and simplified) cache management for type_context 2016-08-23 17:56:58 -07:00
Leonardo de Moura
27e06c80ba feat(library/equations_compiler/elim_match): generate auxiliary definition and lemmas for match 2016-08-22 17:59:54 -07:00
Leonardo de Moura
d8447b4c53 feat(library/equations_compiler/elim_match): add noequation transition 2016-08-22 13:53:35 -07:00
Leonardo de Moura
714817edd5 fix(library/equations_compiler/util): missing get_constructors_of 2016-08-22 13:42:34 -07:00
Leonardo de Moura
963503838c fix(library/equations_compiler/util): support for noequation 2016-08-22 13:42:03 -07:00
Leonardo de Moura
9ad64e9176 feat(library/equations_compiler/elim_match): complete transition 2016-08-22 13:23:51 -07:00
Leonardo de Moura
e81d92006b feat(library/equations_compiler/elim_match): try to use user-provided names in the variable transition 2016-08-21 22:20:31 -07:00
Leonardo de Moura
038a250798 feat(library/equations_compiler/elim_match): add skip transition for inaccessible terms 2016-08-21 22:11:28 -07:00
Leonardo de Moura
9c55ede671 fix(library/equations_compiler/elim_match): constructor transition 2016-08-21 21:49:45 -07:00
Leonardo de Moura
67dc68b24d feat(library/equations_compiler/elim_match): add variable/constructor transitions 2016-08-21 15:56:32 -07:00
Leonardo de Moura
2d90c73546 chore(library/equations_compiler/util): add helper method 2016-08-21 15:55:56 -07:00
Leonardo de Moura
ab6ea747ad feat(library/equations_compiler/elim_match): elim_match main recursion skeleton 2016-08-19 09:25:13 -07:00
Leonardo de Moura
ccf0021cff fix(library/equations_compiler/elim_match): cover more cases in value transition 2016-08-19 07:59:17 -07:00
Leonardo de Moura
9f77ca1ab1 feat(library/equations_compiler/elim_match): add is_value_transition 2016-08-18 22:03:01 -07:00
Leonardo de Moura
06b02e4912 chore(library/equations_compiler): test elim_match on nonrec equations 2016-08-18 21:00:57 -07:00
Leonardo de Moura
e68fbbc12c chore(library/equations_compiler/elim_match): fix style and test output 2016-08-18 18:09:36 -07:00
Leonardo de Moura
7cbc178a32 feat(library/equations_compiler): add transition classifiers 2016-08-18 17:55:30 -07:00
Leonardo de Moura
ec433a193c feat(library/equations_compiler/elim_match): add primitive for tracing intermediate states when eliminating dependent pattern matching 2016-08-18 15:36:13 -07:00
Leonardo de Moura
475b75f661 feat(library/equations_compiler/elim_match): refactor 'program' structure 2016-08-18 14:17:49 -07:00
Leonardo de Moura
05013fb61d feat(library/equations_compiler): add elim_match skeleton 2016-08-17 21:38:23 -07:00
Leonardo de Moura
bfeb119c0c feat(library/equations_compiler/pack_domain): avoid unnecessary 'unit' type when packing 2016-08-16 13:59:47 -07:00
Leonardo de Moura
7669e18c77 feat(library/equations_compiler): add unbounded_rec 2016-08-16 12:54:54 -07:00
Leonardo de Moura
532a38befa feat(library/equations_compiler/structural_rec): finish structural recursion step 2016-08-16 08:08:51 -07:00
Leonardo de Moura
8b67480cee feat(library/equations_compiler): add step for handling structural recursion 2016-08-15 18:00:25 -07:00
Leonardo de Moura
9a63936339 refactor(library/equations_compiler): move pack_domain to new module 2016-08-15 08:22:23 -07:00
Leonardo de Moura
12cd8bf33c feat(library/equations_compiler/util): pack_equations_domain does nothing if function is already unary 2016-08-14 17:12:25 -07:00
Leonardo de Moura
7059609f57 feat(library/equations_compiler): equations_compiler stub, add helper equations_editor, add preprocessing
The first preprocessing step packs nary functions into unary using sigma types
2016-08-14 17:02:36 -07:00