David Thrane Christiansen
74e7886ce7
feat: custom error recovery in parser ( #3413 )
...
Adds a simple error-recovery mechanism to Lean's parser, similar to
those used in other combinator parsing libraries.
Lean itself isn't very amenable to error recovery with this mechanism,
as it requires global knowledge of the grammar in question to write
recovery rules that don't break backtracking or `<|>`. I only found a
few opportunities.
But for DSLs, this is really important. In particular, Verso parse
errors interacted very badly with Lean parse errors in a way that
required frequent "restart file" commands, but this mechanism allows me
to both recover from Verso parse errors and to have Lean skip the rest
of the file rather than repeatedly trying to parse it as Lean commands.
2024-02-21 14:29:54 +00:00
Leonardo de Moura
0fb936158b
chore: explicit DecidableEq instance for BitVec ( #3438 )
2024-02-21 13:37:00 +00:00
Scott Morrison
cc8adfb2a5
feat: support for Fin in omega ( #3427 )
2024-02-21 13:09:38 +00:00
Leonardo de Moura
a0089d4667
fix: match pattern missing test
2024-02-21 05:14:26 -08:00
Scott Morrison
29b589a867
chore: add @[simp] to BitVec.toNat_mul ( #3434 )
2024-02-21 11:57:12 +00:00
Scott Morrison
f76bb2495b
feat: omega handles shift operators, and normalises ground term exponentials ( #3433 )
...
This is a preliminary to a BitVec frontend for `omega`.
2024-02-21 11:55:58 +00:00
Joe Hendrix
89490f648a
fix: address symm and label bugs from #3408 ( #3429 )
...
#3408 was somewhat large and didn't properly test the symm and label
attribute code after edits to the builtin versions.
This migrates the code for generating labeled attributes from Init back
to Lean so that the required definitions are in scope.
This also addresses a mistake in the symm elaborator that prevented symm
without location information from elaborating.
Both fixes have been tested on the Std test suite and successfully
passed.
2024-02-21 07:21:07 +00:00
Scott Morrison
6719af350f
chore: remove mkAppN macro in omega ( #3428 )
2024-02-21 05:11:37 +00:00
Scott Morrison
3d8f73380e
chore: simplify decide (b = true) and variants ( #3426 )
...
```
@[simp] theorem decide_eq_true {b : Bool} : decide (b = true) = b := by cases b <;> simp
@[simp] theorem decide_eq_false {b : Bool} : decide (b = false) = !b := by cases b <;> simp
@[simp] theorem decide_true_eq {b : Bool} : decide (true = b) = b := by cases b <;> simp
@[simp] theorem decide_false_eq {b : Bool} : decide (false = b) = !b := by cases b <;> simp
```
2024-02-21 04:30:25 +00:00
Scott Morrison
959ad98861
fix: bug in omega's elimination selection ( #3425 )
...
Silly bug that was resulting in unnecessary inexact eliminations. I'm
surprised this hasn't already been biting users.
2024-02-21 01:46:08 +00:00
Joe Hendrix
29244f32f6
chore: upstream solve_by_elim ( #3408 )
...
This upstreams the solve_by_elim tactic from Std.
It is a key tactic needed by library_search.
2024-02-21 01:16:04 +00:00
Scott Morrison
09cfcefb25
chore: upstream List.get?_append ( #3424 )
...
This suffices to get `lean-auto` off Std. (At least, `lake build` works.
Their test suite is [not
automated](https://github.com/leanprover-community/lean-auto/issues/21 )?)
2024-02-20 23:53:41 +00:00
Eric Wieser
07f490513c
doc: fix confusing language in Expr.isProp ( #3420 )
...
`True` "is *a* `Prop`", but this function actually returns whether
something *is* `Prop`.
2024-02-20 16:08:28 +00:00
Leonardo de Moura
928f3e434e
chore: add norm_cast_add_elim ne_eq
...
Recall that `add_elim` was a local command in Std
2024-02-20 07:00:47 -08:00
Leonardo de Moura
e1c176543a
feat: add command norm_cast_add_elim
2024-02-20 07:00:47 -08:00
Leonardo de Moura
15be8fc2a6
fix: builtin_initialize at pushCastExt
2024-02-20 07:00:47 -08:00
Scott Morrison
28a02a8688
chore: upstream norm_cast attributes and tests
2024-02-20 07:00:47 -08:00
Adrien Champion
a898aa18f3
chore: add documentation for the String.iterator API ( #3300 )
...
Adds documentation to the `String.Iterator` API, mentored by
@eric-wieser and @david-christiansen
---------
Co-authored-by: David Thrane Christiansen <david@davidchristiansen.dk>
2024-02-20 13:31:27 +00:00
Sebastian Ullrich
d0fb48b4e4
fix: use builtin code action for "try this"
2024-02-20 12:48:19 +01:00
Sebastian Ullrich
f1a3169424
fix: [builtin_code_action_provider]
2024-02-20 12:48:19 +01:00
Scott Morrison
4a7c1ea439
chore: upstream simp?
2024-02-20 12:48:19 +01:00
Scott Morrison
8b8e001794
chore: add missing copyright headers ( #3411 )
2024-02-20 01:49:55 +00:00
Scott Morrison
35e374350c
chore: upstream norm_cast tactic ( #3322 )
...
This is a quite substantial tactic.
It also includes the infamour `NatCast` typeclass (which I've equipped
with a module-doc). I wasn't at all sure where that should live, so it
is currently randomly in `Lean/Elan/Tactic/NatCast.lean`: presumably if
we're doing this it will go somewhere in `Init`.
---------
Co-authored-by: Leonardo de Moura <leomoura@amazon.com>
2024-02-19 17:49:17 -08:00
Leonardo de Moura
9e27e92eea
chore: set literal notation ( #3348 )
...
Co-authored-by: Sebastian Ullrich <sebasti@nullri.ch>
2024-02-19 23:22:36 +00:00
Leonardo de Moura
489f2da711
feat: add simproc for BitVec.signExtend ( #3409 )
2024-02-19 15:15:37 -08:00
Leonardo de Moura
5d9552d66c
feat: simprocs for BitVec ( #3407 )
2024-02-19 14:01:00 -08:00
Leonardo de Moura
067913bc36
chore: remove sorry
2024-02-19 13:01:44 -08:00
Leonardo de Moura
c23a35c472
chore: quick temporary fix
2024-02-19 12:53:25 -08:00
Leonardo de Moura
90b5a0011d
feat: assume function application arguments occurring in local simp theorems have been annotated with no_index ( #3406 )
...
closes #2670
2024-02-19 12:43:34 -08:00
Scott Morrison
ca941249b9
chore: upstream Std.BitVec.* ( #3400 )
...
Co-authored-by: Leonardo de Moura <leomoura@amazon.com>
2024-02-19 12:43:34 -08:00
Joe Hendrix
e2b3b34d14
feat: introduce native functions for Int.ediv / Int.emod ( #3376 )
...
These still need tests, but I thought I'd upstream so I can use
benchmarking and check for build errors.
2024-02-19 15:04:51 +00:00
Sebastian Ullrich
1d66c32d5f
fix: weaken builtin widget collision check
2024-02-19 15:45:01 +00:00
Scott Morrison
7f08975176
chore: upstream simpa ( #3396 )
2024-02-19 13:37:34 +00:00
Sebastian Ullrich
0e0ed9ccaf
fix: broken trace tree on elab runtime exception ( #3371 )
2024-02-19 11:15:23 +00:00
Sebastian Ullrich
032a2ecaa1
chore: update builtin_widget_module registration code
2024-02-19 12:33:23 +01:00
Joachim Breitner
da24708ba5
refactor: use isAppOfArity ( #3394 )
2024-02-19 09:24:11 +00:00
Scott Morrison
16757bb256
chore: upstream Std.Data.Fin.Iterate ( #3392 )
2024-02-19 04:29:45 +00:00
Scott Morrison
3f548edcd7
chore: upstream (most of) Std.Data.Nat.Lemmas ( #3391 )
...
When updating Std, be careful that not every lemma has been upstreamed,
so we need to be careful to only delete things that have already been
declared.
2024-02-19 03:47:49 +00:00
Scott Morrison
8758c0adf5
chore: upstream Std.Data.Bool ( #3389 )
2024-02-19 02:44:07 +00:00
Scott Morrison
b41499cec1
chore: upstream Std.Data.Fin.Basic ( #3390 )
2024-02-19 02:16:17 +00:00
Scott Morrison
88deb34ddb
chore: upstream omega ( #3367 )
...
Co-authored-by: Joe Hendrix <joe@lean-fro.org>
2024-02-19 00:19:55 +00:00
Sebastian Ullrich
5e5bdfba1a
fix: savePanelWidgetInfo on @[builtin_widget_module] ( #3329 )
2024-02-18 22:47:30 +00:00
Henrik Böving
23e49eb519
perf: add prelude to all Lean modules
2024-02-18 14:55:17 -08:00
Leonardo de Moura
52f1fcc498
chore: remove workaround
2024-02-18 14:14:55 -08:00
Leonardo de Moura
cd9648a61e
fix: dsimp zeta bug
...
Before the `zeta` / `zetaDelta` split, `dsimp` was performing `zeta`
by going inside of a `let`-expression, performing `zetaDelta`, and
then removing the unused `let`-expression.
2024-02-18 14:14:55 -08:00
Leonardo de Moura
55ce5d570c
chore: add temporary workaround
2024-02-18 14:14:55 -08:00
Leonardo de Moura
ead14987bc
chore: set zetaDelta := true at simp_wf
2024-02-18 14:14:55 -08:00
Leonardo de Moura
9fe72c5f95
chore: set zetaDelta := false by default in the simplifier
2024-02-18 14:14:55 -08:00
Leonardo de Moura
457d33d660
feat: configuration options zeta and zetaDelta
...
TODO: bootstrapping issues, set `zetaDelta := false` in the simplifier.
2024-02-18 14:14:55 -08:00
Leonardo de Moura
602b1a0d15
feat: add zetaDelta configuration option
2024-02-18 14:14:55 -08:00