Commit graph

7042 commits

Author SHA1 Message Date
Leonardo de Moura
c795a75045 feat: modify approach for generating equational theorems 2021-09-18 15:58:31 -07:00
Leonardo de Moura
fe7b750bce fix: fixes #679 2021-09-18 15:34:29 -07:00
Leonardo de Moura
fc1ec438b8 fix: Repr Name instance 2021-09-18 15:29:32 -07:00
Leonardo de Moura
2a9ba9f795 fix: add support for hierachical names containing numerical parts
closes #677
2021-09-17 19:21:49 -07:00
Leonardo de Moura
d413aa1dc5 feat: generate proofs for structural (conditional) equality theorems 2021-09-17 18:57:39 -07:00
Leonardo de Moura
1a0badac06 feat: generate conditional structural equation theorem types
TODO: proofs
2021-09-17 16:49:30 -07:00
Leonardo de Moura
d378df47d7 fix: fixes #633 2021-09-16 14:11:34 -07:00
Sebastian Ullrich
d65871241d chore: replace sed with perl in test driver
Consistent across all three platforms
2021-09-16 21:33:56 +02:00
Leonardo de Moura
04b7924154 chore: fix tests 2021-09-16 10:29:38 -07:00
Leonardo de Moura
1c00f29043 test: add let_fun pretty printing test 2021-09-16 10:14:42 -07:00
Leonardo de Moura
4c0ae51a81 chore: fix test 2021-09-16 10:13:34 -07:00
Leonardo de Moura
c2a5e37c60 feat: simp discharger 2021-09-16 10:11:27 -07:00
Leonardo de Moura
a29e81b0b6 test: add registerTraceClass test 2021-09-16 06:52:58 -07:00
Leonardo de Moura
6fb2a2b47b chore: remove notation for HEq
We don't really needed it here.
2021-09-15 08:06:32 -07:00
Leonardo de Moura
ae8989a8c6 feat: add mkAppOptM' and mkAppM' 2021-09-15 06:35:40 -07:00
Daniel Selsam
5eed3b73bf chore: adjust pp.analyze funext test 2021-09-15 09:41:16 +02:00
Daniel Selsam
664737def8 feat: trust subtype.mk by default 2021-09-15 09:41:16 +02:00
Daniel Selsam
4b011affca chore: better msgs in pp.analyze test 2021-09-15 09:41:16 +02:00
Daniel Selsam
4646b36459 feat: pp.analyze no explicit holes by default 2021-09-15 09:41:16 +02:00
Leonardo de Moura
db583550fd feat: add Lean.Rat for implementing decision procedures 2021-09-14 19:18:12 -07:00
Leonardo de Moura
3fa54e604d fix: inductive type name is not a necessarily a prefix of the constructor name in Lean 4 anymore 2021-09-14 18:52:43 -07:00
Leonardo de Moura
b92a2cd918 feat: heterogeneous congruence theorems
These theorems are needed to implement the congruence closure module.
2021-09-14 17:23:12 -07:00
Leonardo de Moura
deea3996be fix: allow renameI to rename shadowed names 2021-09-13 06:43:34 -07:00
Leonardo de Moura
96d00ff2d7 fix: fixes #664 2021-09-12 19:54:45 -07:00
Leonardo de Moura
6a9ac6c484 test: rw without offset constraints modulo 2021-09-12 19:37:18 -07:00
Leonardo de Moura
bbe6d37109 fix: specialize 2021-09-11 19:52:51 -07:00
Leonardo de Moura
1fd3cfb19f feat: pretty print let_fun 2021-09-11 05:15:11 -07:00
Leonardo de Moura
127681666a test: more equality theorems using split 2021-09-10 19:36:27 -07:00
Leonardo de Moura
e667385cf5 feat: simpLet when zeta reduction is disabled 2021-09-10 19:34:38 -07:00
Leonardo de Moura
1e1a085ab3 test: eq theorem derivation 2021-09-09 17:51:49 -07:00
Leonardo de Moura
7607a24469 test: deriving DecidableEq for enum types
Forgot to add test.
2021-09-09 17:47:23 -07:00
Leonardo de Moura
09eecc5c08 fix: simp was not applying rewrites to the function application prefixes 2021-09-09 17:07:14 -07:00
Leonardo de Moura
5a7badd69a feat: add support for erasing keyed attributes
This commit addresses any issue described at https://leanprover.zulipchat.com/#narrow/stream/270676-lean4/topic/Eq.2Endrec.20vs.20Eq.2Erec
2021-09-09 14:28:41 -07:00
Leonardo de Moura
4087525cba feat: add delta tactic 2021-09-09 13:07:33 -07:00
Leonardo de Moura
193d4dc9f5 feat: optimized deriving DecidableEq for enumeration types
The proof term is liner on the number of constructors, but type
checking is not linear because the reduction engine in the kernel is
not efficient.
2021-09-08 16:21:32 -07:00
Leonardo de Moura
9b0dfc4b90 feat: convert "orphan" kernel nat literals n into ofNat n 2021-09-08 14:58:13 -07:00
Christian Pehle
bd02f16b43 feat: optimized ``deriving BEq`` for enumeration types 2021-09-08 14:57:21 -07:00
Leonardo de Moura
716ffecf89 chore: add sorry tactic 2021-09-08 08:10:37 -07:00
Leonardo de Moura
c1573d15c1 test: missing tests 2021-09-08 08:00:36 -07:00
Leonardo de Moura
12af1480d6 feat: add specialize tactic 2021-09-08 08:00:02 -07:00
Leonardo de Moura
3fc226dc6d chore: fix tests 2021-09-07 19:14:30 -07:00
Leonardo de Moura
750c2507da test: add *> laziness test
This commit also fixes a broken test

Closes #617

The following operators are now lazy: `<|>`, `>>`, `*>`, `<*`, `<*>`
2021-09-07 18:03:15 -07:00
Leonardo de Moura
51b7c4cf21 chore: remove Nondet.lean
It was too "unsafe", and it is dead code.
2021-09-07 17:36:20 -07:00
Leonardo de Moura
6ea7869c6a chore: "fix" <|> notation declaration
The `infix` declaration was generating a delaborator, but it is
producing the invalid term
```
ConstantFunction.f myFun 3 <|> fun _ => ConstantFunction.f myFun 4
```
It is invalid because the `macro_rules` for `<|>` is based on
`binop_lazy%` which introduces the `fun _ =>` for us.

I tried to use
```
notation:20 a:21 " <|> " b:20 => HOrElse.hOrElse a fun _ : Unit => b
```
but the delaborator generator does not work for this case.
2021-09-07 17:29:27 -07:00
Leonardo de Moura
eb94e87195 chore: fix some tests 2021-09-07 17:20:21 -07:00
Leonardo de Moura
c5f9113dcf test: use <|> at binop_lazy test 2021-09-07 17:10:36 -07:00
Leonardo de Moura
55f01fb6e1 feat: elaborate binop_lazy% 2021-09-07 13:30:09 -07:00
Leonardo de Moura
f46eedac84 fix: fixes #655 2021-09-07 12:17:28 -07:00
Leonardo de Moura
c93982d10c chore: disable pp.analyze for now
see #651
2021-09-07 07:51:43 -07:00
Leonardo de Moura
ebd8f1efa7 chore: avoid object.h dependencies 2021-09-07 07:31:48 -07:00