Skip to content

Commit b6df97d

Browse files
Update lean-toolchain for leanprover/lean4#14316
2 parents 6289a78 + af9ebc6 commit b6df97d

17 files changed

Lines changed: 865 additions & 38 deletions

Manual/BasicProps.lean

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -340,7 +340,7 @@ Propositional equality is typically denoted by the infix `=` operator.
340340
$_ ▸ $_
341341
```
342342
When a term's type includes one side of an equality as a sub-term, it can be rewritten using the `▸` operator.
343-
If the both sides of the equality occur in the term's type, then the left side is rewritten to the right.
343+
If both sides of the equality occur in the term's type, then the left side is rewritten to the right.
344344
:::
345345

346346
## Uniqueness of Equality Proofs
@@ -372,8 +372,7 @@ def K {α : Sort u}
372372

373373
example {α : Sort u} {a : α}
374374
{motive : {x : α} → x = x → Sort u}
375-
{d : {x : α} → motive (Eq.refl x)}
376-
{v : motive (Eq.refl a)} :
375+
{d : {x : α} → motive (Eq.refl x)} :
377376
K (motive := motive) d a rfl = d := by
378377
rfl
379378
```

Manual/BuildTools/Lake.lean

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -474,6 +474,8 @@ module.c
474474
module.c.o
475475
module.c.o.export
476476
module.c.o.noexport
477+
module.depHash
478+
module.depTrace
477479
module.deps
478480
module.dynlib
479481
module.exportInfo
@@ -498,6 +500,7 @@ module.olean
498500
module.olean.private
499501
module.olean.server
500502
module.precompileImports
503+
module.presetup
501504
module.setup
502505
module.transImports
503506
-/
@@ -520,6 +523,14 @@ The facets available for modules are:
520523

521524
The module's dependencies (e.g., imports or shared libraries).
522525

526+
: `depHash`
527+
528+
A hash of a module's build dependencies (e.g., imports, source, plugins).
529+
530+
: `depTrace`
531+
532+
A Lake build trace data structure (i.e., composite hash and modification time) of a module's build dependencies (e.g., imports, source, plugins).
533+
523534
: `olean`
524535

525536
The module's {tech}[`.olean` file]. {TODO}[Once module system lands fully, add docs for `olean.private` and `olean.server`]

Manual/Grind/ConstraintPropagation.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,7 @@ builtin_grind_propagator propagateAndDown ↓And :=
135135
-- (a ∧ b) = True ⇒ a = True
136136
pushEqTrue a <| mkApp3
137137
(mkConst ``Grind.eq_true_of_and_eq_true_left) a b h
138-
-- (a ∧ b) = True ⇒ B = True
138+
-- (a ∧ b) = True ⇒ b = True
139139
pushEqTrue b <| mkApp3
140140
(mkConst ``Grind.eq_true_of_and_eq_true_right) a b h
141141
```

Manual/Grind/EMatching.lean

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -305,6 +305,8 @@ grindExt
305305
grindFunCC
306306
grindFwd
307307
grindGen
308+
grindHom
309+
grindHomPred
308310
grindInj
309311
grindIntro
310312
grindLR
@@ -643,6 +645,26 @@ norm
643645
{includeDocstring Lean.Parser.Attr.grindNorm}
644646
:::
645647

648+
The {tactic}`grind` tactic can work with a source algebra that doesn't have a great deal of solving infrastructure (e.g. bitvectors) by “̲injecting”̲ it into another algebra that has more solving infrastructure (like natural numbers or integers).
649+
Homomorphism rules describe the injection from source to target, and how the injection commutes with other operations (like addition or multiplication in the case of bitvectors).
650+
Homomorphism predicates present additional facts that {tactic}`grind` can use about the injection (like that a bitvector of length $`n` corresponds to a natural number less than $`2^n`).
651+
652+
:::syntax Lean.Parser.Attr.grindMod (title := "Homomorphism Rules")
653+
```grammar
654+
hom
655+
```
656+
{includeDocstring Lean.Parser.Attr.grindHom}
657+
:::
658+
659+
:::syntax Lean.Parser.Attr.grindMod (title := "Homomorphism Predicates")
660+
```grammar
661+
hom_pred
662+
```
663+
{includeDocstring Lean.Parser.Attr.grindHomPred}
664+
:::
665+
666+
{TODO}[Grind's hom infrastructure could use an example]
667+
646668
{TODO}[Document `gen` modifier for `grind` patterns]
647669

648670
# Inspecting Patterns

Manual/Language/InductiveTypes.lean

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -562,7 +562,7 @@ Their indices may differ.
562562

563563
::::keepEnv
564564
::: example "Differing numbers of parameters"
565-
Even though `Both` and `OneOf` are not mutually recursive, they are declared in the same `mutual` block and must therefore have identical parameters:
565+
Even though `Both` and `Optional` are not mutually recursive, they are declared in the same `mutual` block and must therefore have identical parameters:
566566
```lean (name := bothOptional) +error
567567
mutual
568568
inductive Both (α : Type u) (β : Type v) where
@@ -582,7 +582,7 @@ Note: All inductive types declared in the same `mutual` block must have the same
582582

583583
::::keepEnv
584584
::: example "Differing parameter types"
585-
Even though `Many` and `OneOf` are not mutually recursive, they are declared in the same `mutual` block and must therefore have identical parameters.
585+
Even though `Many` and `Optional` are not mutually recursive, they are declared in the same `mutual` block and must therefore have identical parameters.
586586
They both have exactly one parameter, but `Many`'s parameter is not necessarily in the same universe as `Optional`'s:
587587
```lean (name := manyOptional) +error
588588
mutual

Manual/Language/InductiveTypes/Nested.lean

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -119,19 +119,6 @@ inductive RTree'' (α : Type u) : Type u where
119119
BRTree branches α
120120
```
121121
In this case, the function applies equally well to the translated version as it does to the original.
122-
:::
123-
124-
:::paragraph
125-
A _palindrome_ is a list that is the same when reversed:
126-
```lean
127-
inductive Palindrome (α : Type) : List α → Prop where
128-
| nil : Palindrome α []
129-
| single : Palindrome α [x]
130-
| cons (x : α) (p : Palindrome α xs) : Palindrome α (x :: xs ++ [x])
131-
```
132-
In this predicate, the list is an index whose type depends on the parameter, which is explicit for clarity.
133-
This means it cannot be used
134-
135122
:::
136123
:::::
137124

Manual/Quotients.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -426,7 +426,7 @@ tag := "quotient-proofs"
426426

427427
The fundamental tools for proving properties of elements of quotient types are the soundness axiom and the induction principle.
428428
The soundness axiom states that if two elements of the underlying type are related by the quotient's equivalence relation, then they are equal in the quotient type.
429-
The induction principle follows the structure of recursors for inductive types: in order to prove that a predicate holds all elements of a quotient type, it suffices to prove that it holds for an application of {name}`Quotient.mk` to each element of the underlying type.
429+
The induction principle follows the structure of recursors for inductive types: in order to prove that a predicate holds for all elements of a quotient type, it suffices to prove that it holds for an application of {name}`Quotient.mk` to each element of the underlying type.
430430
Because {name}`Quotient` is not an {tech}[inductive type], tactics such as {tactic}`cases` and {tactic}`induction` require that {name}`Quotient.ind` be specified explicitly with the {keyword}`using` modifier.
431431

432432
{docstring Quotient.sound}

Manual/RecursiveDefs/PartialFixpoint.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -363,7 +363,7 @@ tag := "mutual-partial-fixpoint"
363363

364364
Lean supports the definition of {tech}[mutually recursive] functions using {tech}[partial fixpoint].
365365
Mutual recursion may be introduced using a {tech}[mutual block], but it also results from {keywordOf Lean.Parser.Term.letrec}`let rec` expressions and {keywordOf Lean.Parser.Command.declaration}`where` blocks.
366-
The rules for mutual well-founded recursion are applied to a group of actually mutually recursive, lifted definitions, that results from the {ref "mutual-syntax"}[elaboration steps] for mutual groups.
366+
The rules for mutual recursion with partial fixpoints are applied to a group of actually mutually recursive, lifted definitions, that results from the {ref "mutual-syntax"}[elaboration steps] for mutual groups.
367367

368368
If all functions in the mutual group have the {keywordOf Lean.Parser.Command.declaration}`partial_fixpoint` clause, then this strategy is used.
369369

Manual/Releases.lean

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,9 @@ Author: Joachim Breitner
66

77
import VersoManual
88

9+
import Manual.Releases.«v4_33_0»
10+
import Manual.Releases.«v4_32_2»
11+
import Manual.Releases.«v4_32_1»
912
import Manual.Releases.«v4_32_0»
1013
import Manual.Releases.«v4_31_0»
1114
import Manual.Releases.«v4_30_0»
@@ -63,6 +66,12 @@ This section provides release notes about recent versions of Lean. When updating
6366
read the corresponding release notes. They may contain advice that will help you understand
6467
the differences with the previous version and upgrade your projects.
6568

69+
{include 0 Manual.Releases.«v4_33_0»}
70+
71+
{include 0 Manual.Releases.«v4_32_2»}
72+
73+
{include 0 Manual.Releases.«v4_32_1»}
74+
6675
{include 0 Manual.Releases.«v4_32_0»}
6776

6877
{include 0 Manual.Releases.«v4_31_0»}

0 commit comments

Comments
 (0)