Commit graph

18622 commits

Author SHA1 Message Date
Leonardo de Moura
ef38c82c77 fix: missing hypotheses at List.sizeOf_lt_of_mem 2022-03-03 19:52:05 -08:00
Leonardo de Moura
99677823c3 fix: ForIn' instance binder annotations 2022-03-03 19:51:45 -08:00
Leonardo de Moura
5d2420b1c9 chore: add auxiliary notation for ForIn' 2022-03-03 19:10:24 -08:00
Leonardo de Moura
d8ee03c1bb feat: add ForIn' instance that is similar to ForIn but provides a proof that the iterated elements are in the collection 2022-03-03 19:05:27 -08:00
Leonardo de Moura
92937b3aba feat: add for h : x in xs do ... notation
The idea is to have `h : x \in xs`.
This commit just adds the parser.
2022-03-03 18:27:40 -08:00
Leonardo de Moura
e1424653b9 chore: remove workaround 2022-03-03 18:16:54 -08:00
Leonardo de Moura
b745c4f51a fix: recursive overapplication at WF/Fix.lean 2022-03-03 18:13:34 -08:00
Leonardo de Moura
f306c9b69b fix: split tactic
`unreachable!` assertions at `simpIfLocalDecl` and
`simpTargetLocalDecl` were reachable.
2022-03-03 18:13:34 -08:00
Leonardo de Moura
f4e98be163 fix: use whnfD at mkNoConfusion
The `split` tactic failed at `Array.sizeOf_lt_of_mem` because the type
in the equality is `Id Bool` when we write `true` instead of `id true`.
2022-03-03 18:13:34 -08:00
Leonardo de Moura
337c55f322 fix: missing import 2022-03-03 18:13:34 -08:00
Leonardo de Moura
aeb9b2fb8c chore: add Membership instance for Array 2022-03-03 18:13:34 -08:00
Leonardo de Moura
fd519401ff feat: add Membership instance for List
and the theorem `a ∈ as -> sizeOf a < sizeOf as`.
We will use theorems like this one to improve the `decreasing_tactic`.
2022-03-03 18:13:21 -08:00
Leonardo de Moura
022a4d5ac1 feat: add notation 2022-03-03 17:18:51 -08:00
Leonardo de Moura
f629be745b chore: add Nat.le_refl as simp theorem 2022-03-03 17:18:11 -08:00
Leonardo de Moura
89c3820781 chore: naming convention 2022-03-03 17:17:51 -08:00
Leonardo de Moura
5845002e8c feat: use WF at anyM 2022-03-03 16:43:05 -08:00
Leonardo de Moura
3fa001911b feat: add ite_self simp theorem 2022-03-03 11:55:05 -08:00
Leonardo de Moura
02d7cedba8 chore: remove unnecessary termination_by annotations 2022-03-03 11:24:06 -08:00
Leonardo de Moura
137c70f055 chore: add LinearArith/Nat/Solver.lean 2022-03-03 11:13:40 -08:00
Leonardo de Moura
043d338271 feat: add getForbiddenByTrivialSizeOf 2022-03-03 11:12:32 -08:00
Leonardo de Moura
1f2618adba feat: delaborate cond using bif-then-else 2022-03-03 07:41:39 -08:00
Leonardo de Moura
1155d52702 chore: update TODO comment 2022-03-02 12:51:46 -08:00
Leonardo de Moura
093ab49b7f feat: improve generateElements a bit 2022-03-02 11:58:47 -08:00
Leonardo de Moura
52403fca83 feat: add support for guessing (very) simple WF relations
There are a lot of TODOs, but it is already useful for simple cases.

closes #847
2022-03-02 11:52:00 -08:00
Leonardo de Moura
99204d2226 refactor: modify elabWFRel to CPS 2022-03-02 11:52:00 -08:00
Leonardo de Moura
88a2645a5f refactor: add Lean/Meta/Tactic/LinearArith/Basic.lean 2022-03-02 11:52:00 -08:00
Leonardo de Moura
f171286e74 refactor: add src/Lean/Meta/Tactic/LinearArith/Nat 2022-03-02 11:52:00 -08:00
Sebastian Ullrich
c9713b1b69 fix: setExpectedFn 2022-03-02 16:28:53 +01:00
Leonardo de Moura
1e205d635e fix: bug at wfRecursion
"After compilation" attributes were being applied to soon when we did
not need to generate auxiliary functions.
2022-03-01 17:48:06 -08:00
Leonardo de Moura
eac5bab429 chore: helper theorem 2022-03-01 16:54:25 -08:00
Leonardo de Moura
140559c447 feat: sizeOf for Thunks and Unit -> a 2022-03-01 16:40:11 -08:00
Leonardo de Moura
de51160929 fix: core library 2022-03-01 13:36:24 -08:00
François G. Dorais
e84699f130 fix: remove unnecessary hypotheses 2022-03-01 13:31:01 -08:00
Leonardo de Moura
89e0de9fbb chore: use WF compiler to define Nat.mod and Nat.div 2022-03-01 13:08:59 -08:00
Leonardo de Moura
f16d8acb29 feat: eager normalization for proofs by reflection 2022-03-01 12:43:55 -08:00
Leonardo de Moura
0f796ac804 chore: avoid heterogeneous polymorphic operations and add add hugeFuel at Linear.lean 2022-03-01 11:25:15 -08:00
Leonardo de Moura
9bd82b798a chore: use bif instead of if at Linear.lean 2022-03-01 10:55:03 -08:00
Leonardo de Moura
da55789c26 feat: add a proper BEq instance for Nat 2022-03-01 09:01:08 -08:00
Leonardo de Moura
85a1a5233b chore: workaround for compiler closed term extraction issue 2022-03-01 09:01:08 -08:00
Leonardo de Moura
5948003601 feat: add support for constant folding Nat.beq, Nat.blt, and Nat.ble 2022-03-01 09:01:08 -08:00
Gabriel Ebner
a7c9d2735f fix: do not apply eta for structures in Prop
The eta-expansion contains invalid projections, and the eta-rule is
subsumed by proof irrelevance anyhow.
2022-03-01 09:00:46 -08:00
Gabriel Ebner
3746005f5f fix: reject projection (_ : ∃ x, p).2
The inferred type of this projection does not even type check, in general.
2022-03-01 09:00:46 -08:00
Leonardo de Moura
0f06fbf648 feat: LawfulBEq must be reflexive 2022-02-28 19:27:51 -08:00
Leonardo de Moura
7a49f71328 feat: add bif notation for cond function 2022-02-28 18:34:59 -08:00
Leonardo de Moura
4e310ac63d feat: improve SimpTheorem preprocessor 2022-02-28 18:27:36 -08:00
Leonardo de Moura
e8fb0c96ac feat: add helper theorems 2022-02-28 18:06:02 -08:00
Leonardo de Moura
5ddb3c3435 feat: faster PolyCnstr.combine 2022-02-28 17:24:26 -08:00
Leonardo de Moura
adf3510e08 chore: increase maxHeartbeats default values
We now increase the number of heartbeats at `expr_eq_fn`. Thus, the
old default values are too small.
2022-02-28 15:44:08 -08:00
Leonardo de Moura
b5f28239af feat: add List helper theorems 2022-02-28 15:16:13 -08:00
Leonardo de Moura
3005bab970 feat: helper theorem and tactic for WF 2022-02-28 15:11:00 -08:00