Commit graph

98 commits

Author SHA1 Message Date
Mario Carneiro
62cdb51ed5
feat: UTF-8 string validation (#3958)
Previously, there was a function `opaque fromUTF8Unchecked : ByteArray
-> String` which would convert a list of bytes into a string, but as the
name implies it does not validate that the string is UTF-8 before doing
so and as a result it produces unsound results in the compiler (because
the lean model of `String` indirectly asserts UTF-8 validity). This PR
replaces that function by
```lean
opaque validateUTF8 (a : @& ByteArray) : Bool

opaque fromUTF8 (a : @& ByteArray) (h : validateUTF8 a) : String
```
so that while the function is still "unchecked", we have a proof witness
that the string is valid. To recover the original, actually unchecked
version, use `lcProof` or other unsafe methods to produce the proof
witness.

Because this was the only `ByteArray -> String` conversion function, it
was used in several places in an unsound way (e.g. reading untrusted
input from IO and treating it as UTF-8). These have been replaced by
`fromUTF8?` or `fromUTF8!` as appropriate.
2024-04-20 18:36:37 +00:00
Scott Morrison
94d6286e5a
chore: reorganising to reduce imports (#3790)
[Before](https://github.com/leanprover/lean4/files/14772220/oi.pdf) and
[after](https://github.com/leanprover/lean4/files/14772226/oi2.pdf).

This gets `ByteArray`, `String.Extra`, `ToString.Macro` and `RCases` out
of the imports of `omega`. I'd hoped to get `Array.Subarray` too, but
it's tangled up in the list literal syntax. Further progress could come
from make `split` use available `Decidable` instances, so we could pull
out `Classical` (and possibly some of `PropLemmas`).
2024-03-27 11:15:01 +00:00
Scott Morrison
1d245bcb82
chore: revert ToJson/FromJson Sum (#3759) (#3760)
Sorry, this was ill-considered, it doesn't round trip faithfully.
2024-03-25 09:09:44 +00:00
Scott Morrison
a943a79bd3
chore: ToJson/FromJson Sum (#3759) 2024-03-25 07:43:40 +00:00
Marc Huisinga
eb48e6908b
feat: sorted call hierarchy items & no private prefix (#3482)
Sorts call hierarchy items and strips the private prefix to make the
call hierarchy more readable.
2024-02-26 09:43:47 +00:00
Scott Morrison
8b8e001794
chore: add missing copyright headers (#3411) 2024-02-20 01:49:55 +00:00
Henrik Böving
23e49eb519 perf: add prelude to all Lean modules 2024-02-18 14:55:17 -08:00
Joe Hendrix
06e21faecd
chore: upstream Std.Data.Int.Init modules (#3364)
This is pretty big PR that upstreams all of Std.Data.Int.Init in one go.

So far lemmas have seen minimal changes needed to adapt to Lean core
environment.

---------

Co-authored-by: Scott Morrison <scott.morrison@gmail.com>
2024-02-16 03:58:23 +00:00
Scott Morrison
92ca504903
feat: upstreaming the json% term elaborator (#3265)
This is used in the "Try this:" widget machinery powering `simp?`.

There is a test file in Std, which I am not upstreaming at the same
time, as that relies on more code actions / #guard_msgs material. That
test file will still of course test things from Std, and later it can be
reunited with the code it is testing.

---------

Co-authored-by: Leonardo de Moura <leomoura@amazon.com>
2024-02-08 03:30:41 +00:00
int-y1
8d7520b36f chore: fix typos in comments 2023-10-08 10:46:05 +02:00
Eric Wieser
1f3ef28a1d fix: correct universe polymorphism in Lean.instFromJsonProd
The previous type was
```
Lean.instFromJsonProd.{u, v} {α β : Type (max u v)} [FromJson α] [FromJson β] :
  FromJson (α × β)
```
where universe metavariable assignment assigned the wrong universe to both types!
2023-08-06 07:32:30 -07:00
Mario Carneiro
01ba75661e fix: implement String.toName using decodeNameLit
fixes #2231
2023-05-28 17:38:57 -07:00
Gabriel Ebner
d19033e443 fix: correctly parse json unicode escapes 2022-12-23 17:04:10 -08:00
E.W.Ayers
691835037e feat: code action resolvers 2022-10-20 11:20:42 -07:00
Ed Ayers
22bb798995
feat: datatypes for LSP code actions (#1654) 2022-09-28 09:07:39 +00:00
Mario Carneiro
85119ba9d1 chore: move Std.* data structures to Lean.* 2022-09-26 05:46:04 -07:00
Mario Carneiro
ebb5b97d73 chore: move Bootstrap.Data -> Lean.Data 2022-08-31 11:48:57 -07:00
Mario Carneiro
bf89c5a0f5 chore: move Std -> Bootstrap 2022-08-29 01:26:12 -07:00
E.W.Ayers
f52a1bd37c doc: JSON-RPC 2022-08-26 20:49:57 -07:00
E.W.Ayers
2e99e8c22d feat: Float ↔ Json 2022-08-16 08:01:23 -07:00
Wojciech Nawrocki
42fec60b01 fix: printing of integral JsonNumbers 2022-08-11 13:27:37 -07:00
Mario Carneiro
f6211b1a74
chore: convert doc/mod comments from /- to /--//-! (#1354) 2022-07-22 12:05:31 -07:00
Leonardo de Moura
77ae79be46 chore: use let/if in do blocks 2022-06-13 17:10:14 -07:00
Sebastian Ullrich
8eefbf5227 chore: further clean up refactored code 2022-06-07 16:37:45 -07:00
Sebastian Ullrich
ae7b895f7a refactor: unname some unused variables 2022-06-07 16:37:45 -07:00
Sebastian Ullrich
9b4feb3d13 perf: work around missed TCO 2022-04-29 16:16:09 +02:00
Leonardo de Moura
de2e2447d2 chore: style 2022-04-07 17:35:05 -07:00
Leonardo de Moura
3862e7867b refactor: make String.Pos opaque
TODO: this refactoring exposed bugs in `FuzzyMatching` and `Lake`

closes #410
2022-03-20 10:47:13 -07:00
Leonardo de Moura
12e2a79170 chore: fix codebase after removing auto pure 2022-02-03 18:08:14 -08:00
Leonardo de Moura
2192e6148b chore: remove coe, coeSort, and coeFun abbreviations
The notation `↑ e` is now expanded eagerly.

See #403
2022-01-20 15:19:06 -08:00
Leonardo de Moura
f9fa24435d chore: remove problematic instance hasOfNatOfCoe
See #403
See https://github.com/leanprover-community/mathport/issues/94
2022-01-20 14:47:25 -08:00
Leonardo de Moura
9d05023325 chore: remove some [specialize] annotations 2022-01-18 09:24:06 -08:00
Leonardo de Moura
68bd55af32 chore: fix codebase 2021-12-10 13:12:09 -08:00
Sebastian Ullrich
0a43a9c466 refactor: use JSON to communicate between server & package manager 2021-10-08 11:28:04 +02:00
Leonardo de Moura
fe7b750bce fix: fixes #679 2021-09-18 15:34:29 -07:00
Wojciech Nawrocki
198be2c8a7 chore: no backticks in Name JSON 2021-08-24 08:57:41 -07:00
Wojciech Nawrocki
fd016c6065 chore: address some comments 2021-08-24 08:57:41 -07:00
Wojciech Nawrocki
d7c3866e14 perf: tail-recursive Json.compress 2021-08-24 08:57:41 -07:00
Wojciech Nawrocki
2a20d41cd9 feat: BEq Json 2021-08-24 08:57:41 -07:00
Wojciech Nawrocki
dae1a94d53 feat: misc server additions 2021-08-24 08:57:41 -07:00
Leonardo de Moura
4b58c4cc02 refactor: instances that "hide" coercions
Example:
```
instance [CoeHTCT α β] [Add β] : HAdd α β β where
  hAdd a b := Add.add a b
```
2021-08-13 17:18:55 -07:00
Wojciech Nawrocki
ffc6efd5d0 fix: use properly random RPC session id 2021-07-24 10:45:28 +02:00
Wojciech Nawrocki
079c290ce0 feat: JSON serde for Name and USize 2021-07-24 10:45:28 +02:00
Daniel Fabian
0d41fd03f7 feat: add xml parser.
in order to generate the LLVM extern declarations we want to use a generator that spits out XML. Hence adding a small XML parser.
2021-07-13 09:58:27 -07:00
Wojciech Nawrocki
521ed11330 chore: move parseTagged
It should live in Lean.Data.Json.FromToJson because many modules import that but not Lean.Elab.Deriving.FromToJson.
2021-07-12 09:10:29 +02:00
Leonardo de Moura
f4a7ffd8c8 chore: fix codebase and tests 2021-06-29 17:14:52 -07:00
Daniel Fabian
63d58c2f64 refactor: use Except instead of Option in the JSON code. 2021-06-07 12:10:10 +02:00
Daniel Fabian
0238bf8c33 refactor: use Ordering inside of rbmap instead of lt. 2021-04-27 07:58:58 -07:00
Leonardo de Moura
3a80e87793 chore: #405 step 1 2021-04-22 20:03:48 -07:00
Sebastian Ullrich
8f67921221 feat: Json.setObjVal! 2021-04-03 00:23:46 +02:00