Cameron Zwarich
27080dca35
chore: use FVarIdHashSet in LCNF collectUsed ( #8778 )
2025-06-13 22:55:15 +00:00
Cameron Zwarich
9ea4946560
feat: add support for USize literals in LCNF ( #8456 )
...
This PR adds support for primitive USize literals in LCNF.
2025-05-23 17:22:31 +00:00
Cameron Zwarich
fc8f290347
feat: support native literals of size unsigned integer types ( #8409 )
...
This PR adds support to LCNF for native UInt8/UInt16/UInt32/UInt64
literals.
2025-05-20 00:38:38 +00:00
Cameron Zwarich
fbac0d2ddb
chore: use LitValue.toExpr instead of duplicating its definition ( #8398 )
2025-05-19 01:33:47 +00:00
Cameron Zwarich
ca037ded0d
chore: rename LitValue.natVal/strVal to .nat/str ( #8394 )
2025-05-18 22:10:58 +00:00
Cameron Zwarich
006d2925ba
chore: rename LetValue.value to .lit ( #8393 )
2025-05-18 21:12:35 +00:00
Rob23oba
b8c941d39a
chore: use mutual inductives for data structures in the new compiler ( #8332 )
...
This PR changes the types `AltCore`, `FunDeclCore` and `CasesCore` used
in the IRs of the new compiler into the mutual inductives `Alt`,
`FunDecl` and `Cases`.
2025-05-14 18:04:49 +00:00
Cameron Zwarich
d1ed57e92a
fix: support borrowed params in the new compiler ( #8127 )
...
This PR adds support for borrowed params in the new compiler, which
requires adding support for .mdata expressions to LCNF type handling.
2025-04-28 17:02:47 +00:00
Cameron Zwarich
bf1d253764
feat: add support for extern LCNF decls ( #6429 )
...
This PR adds support for extern LCNF decls, which is required for parity
with the existing code generator.
2024-12-20 21:20:56 +00:00
Kim Morrison
f85c66789d
feat: Array.insertIdx/eraseIdx take a tactic-provided proof ( #6133 )
...
This PR replaces `Array.feraseIdx` and `Array.insertAt` with
`Array.eraseIdx` and `Array.insertIdx`, both of which take a `Nat`
argument and a tactic-provided proof that it is in bounds. We also have
`eraseIdxIfInBounds` and `insertIdxIfInBounds` which are noops if the
index is out of bounds. We also provide a `Fin` valued version of
`Array.findIdx?`. Together, these quite ergonomically improve the array
indexing safety at a number of places in the compiler/elaborator.
2024-11-20 09:52:38 +00:00
Henrik Böving
23e49eb519
perf: add prelude to all Lean modules
2024-02-18 14:55:17 -08:00
int-y1
8d7520b36f
chore: fix typos in comments
2023-10-08 10:46:05 +02:00
Leonardo de Moura
b4d13a8946
refactor: LetExpr => LetValue
...
We use "let value" in many other places in the code base.
2022-11-07 18:51:07 -08:00
Leonardo de Moura
ea8e7d5c99
chore: port ReduceArity.lean
2022-11-07 16:18:36 -08:00
Leonardo de Moura
0c58913cf1
chore: port SimpValue.lean
2022-11-07 16:18:36 -08:00
Leonardo de Moura
4bf2df563d
fix: typo
2022-11-07 16:18:36 -08:00
Leonardo de Moura
7e2c476a77
chore: port more files to new LCNF
2022-11-07 16:18:36 -08:00
Leonardo de Moura
5c53656d46
chore: port LCNF/InferType.lean
2022-11-07 16:18:35 -08:00
Leonardo de Moura
6d46829599
chore: new LCNF representation
...
This is the first of a series of commits to change the LCNF representation.
2022-11-07 16:18:35 -08:00
Gabriel Ebner
fa9538ffa6
perf: use old instantiateLevelParams in compiler
2022-10-24 12:23:13 -07:00
Mario Carneiro
583e023314
chore: snake-case attributes (part 2)
2022-10-19 09:28:08 -07:00
Mario Carneiro
dd5948d641
chore: snake-case attributes (part 1)
2022-10-19 09:28:08 -07:00
Leonardo de Moura
359dc77664
refactor: move isTemplateLike to LCNF/Basic.lean
2022-10-15 08:51:20 -07:00
Leonardo de Moura
af99715a58
feat: store inline attribute at LCNF declarations
...
This commit also adds support for inheriting the inline attribute when
the compiler lambda lifts local functions from instances.
2022-10-13 02:06:35 -07:00
Henrik Böving
eaab29712d
feat: extend join point context pass
2022-10-03 17:03:22 -07:00
Leonardo de Moura
4c2c6931f4
feat: add flag at LCNF Decl indicating whether the original Lean declaration was declared using partial or unsafe
2022-09-30 19:28:05 -07:00
Leonardo de Moura
fd5f3a5bad
feat: track recursively inlining
...
closes #1657
see #1646
https://leanprover.zulipchat.com/#narrow/stream/270676-lean4/topic/inline.20codegen.20crash/near/301099703
2022-09-27 16:26:49 -07:00
Leonardo de Moura
35ca2b203c
refactor: split Simp.lean
2022-09-26 07:04:20 -07:00
Leonardo de Moura
fd1ae3118c
feat: replace isCasesOnCases? with simpJpCases?
...
It addresses the code explosion issue with the old optimization.
For example, the resulting size for `Lean.Json.Parser.escapedChar`
went from 31593 to 361.
2022-09-25 20:57:24 -07:00
Leonardo de Moura
abe1f7f6f9
feat: dependency collector for the code specializer
2022-09-15 19:55:37 -07:00
Leonardo de Moura
82bba1c63b
feat: add Code.forM
2022-09-14 13:58:57 -07:00
Leonardo de Moura
1350a57a03
refactor: remove pure field from LCNF.LetDecl
...
We decide that in phase 3 we will assume everything is impure, and
this kind of fine-grain tracking is not worth it.
2022-09-12 19:13:43 -07:00
Leonardo de Moura
613523e1f6
feat: store borrow flag at Param
...
It is more robust that using `Expr.mdata`, and we save the information at `toLCNF`.
2022-09-11 20:19:44 -07:00
Henrik Böving
d2f7e724ac
feat: findJoinPoints pass
2022-09-08 14:09:14 -07:00
Leonardo de Moura
3e210d9f26
chore: helper functions, missing instance
2022-09-05 19:20:31 -07:00
Leonardo de Moura
1c41a750ed
feat: add ReduceJpArity compiler pass
2022-09-05 06:58:32 -07:00
Leonardo de Moura
df16c5a0e7
feat: add Code.collectUsed and FunDecl.collectUsed
2022-09-04 13:05:48 -07:00
Henrik Böving
32157f0e42
feat: Basic compiler testing framework
2022-09-03 19:55:53 -07:00
Leonardo de Moura
d5dcd5e856
feat: eta-expand local function declarations that are not being inlined
2022-09-02 05:22:41 -07:00
Leonardo de Moura
0ed46003c6
feat: add CodeDecl helper type
2022-09-01 20:52:08 -07:00
Leonardo de Moura
30c75b4b88
feat: add simpCasesOnCtor
2022-09-01 20:52:08 -07:00
Leonardo de Moura
9874ef3c66
feat: check whether LetDecl and FunDecl match their values in the LCNF local context
2022-09-01 07:05:07 -07:00
Leonardo de Moura
25447af13c
feat: new code inliner
2022-08-31 18:10:32 -07:00
Leonardo de Moura
2fc38fb118
feat: instantiateTypeLevelParams and instantiateValueLevelParams for LCNF.Decl
2022-08-30 20:20:39 -07:00
Leonardo de Moura
c451bf0c91
feat: add simpFunDecl
2022-08-30 11:45:05 -07:00
Leonardo de Moura
062d4728a1
feat: more LCNF update functions
...
and bug fixes at CSE
2022-08-28 19:00:49 -07:00
Leonardo de Moura
e80028b7d1
feat: add pure field to LetDecl, add helper functions for updating LCNF code
...
The update functions try to minimize the amount of memory allocation
2022-08-28 08:55:35 -07:00
Leonardo de Moura
6a9f8ad919
fix: Compiler/LCNF/ElimDead.lean
2022-08-28 08:55:35 -07:00
Leonardo de Moura
30d8ae70f7
chore: remove workarounds
2022-08-27 10:56:15 -07:00
Leonardo de Moura
11c8253f6c
feat: more update functions for LCNF
2022-08-27 10:41:54 -07:00