Glossary
Every word this site uses, in one place: what this project defines, the words its explanations and readings use, and Lean's own words. Type in the box to filter.
Defined in this project
Every definition in this project, under its own name: the first paragraph of its description, or how it is declared when it has none. Theorems are not listed here: they are results, not words. There are too many for one page, so there is one page per first letter.
A (341) · B (70) · C (198) · D (65) · E (112) · F (139) · G (83) · H (162) · I (488) · J (8) · K (21) · L (74) · M (136) · N (73) · O (36) · P (121) · Q (12) · R (86) · S (154) · T (84) · U (50) · V (26) · W (29) · X (7) · Y (2) · Z (8) · Other (23)
Types
What kind of object something is. The Reading says these in words wherever they appear.
- Bool
- true or false
- Equiv.Perm
Equiv.Perm α— a permutation (reordering) ofα- EReal
- a real number or ±∞
- EuclideanSpace
EuclideanSpace ℝ (Fin n)— a point inn-dimensional space- Fin
Fin n— a number from 0 up ton− 1- Finset
Finset α— a finite set of elements ofα- Ideal
Ideal R— a ideal (Ideal R)- IntermediateField
IntermediateField K L— a intermediate field (IntermediateField K L)- List
List α— a list of elements ofα- Matrix
Matrix m n R— a matrix with rowsm, columnsnand entries inR- Measure
Measure α— a measure onα(a way to give sets a size)- Multiset
Multiset α— a finite collection of elements ofα, repeats allowed- Option
Option α— either nothing or an element ofα- Polynomial, R[X]
Polynomial R— a polynomial with coefficients inR- Prop
- a statement (something true or false)
- Set
Set α— a set of elements ofα- SimpleGraph
SimpleGraph V— a graph whose vertices are the elements ofV- String
- a piece of text
- Subfield
Subfield K— a subfield (Subfield K)- Subgroup
Subgroup G— a subgroup (Subgroup G)- Submodule
Submodule R M— a submodule (Submodule R M)- Subring
Subring R— a subring (Subring R)- Type, Type*, Type _, Type u, Type v, Sort*
- a type (a collection of objects)
- ZMod
ZMod n— an integer modulon- × (pair type)
α × β— a pair (α,β)- ℂ, Complex
- a complex number
- ℕ+
- a positive whole number
- ℕ, Nat
- a natural number (0, 1, 2, …)
- ℚ, Rat
- a rational number (a fraction)
- ℝ, Real
- a real number
- ℝ≥0, NNReal
- a real number that is at least 0
- ℝ≥0∞, ENNReal
- a number from 0 to ∞, ∞ included
- ℤ, Int
- an integer
- → (function type)
α → β— a function that takesαand givesβ
Structures a type can have
Written in square brackets, such as [Field K]. Lean finds them by itself (they are type classes).
- AddCommGroup
[AddCommGroup G]—Gis a commutative group under addition- AddGroup
[AddGroup G]—Gis a group under addition- CharZero
[CharZero α]— inα, 1 + 1 + … + 1 is never 0- CommGroup
[CommGroup G]—Gis a commutative group- CommRing
[CommRing R]—Ris a commutative ring: you can add, subtract and multiply, and order of multiplication does not matter- CommSemiring
[CommSemiring R]—Rhas addition and commutative multiplication- Countable
[Countable α]—αis countable- DecidableEq
[DecidableEq α]— equality between elements ofαcan be checked- DecidablePred
[DecidablePred p]— whetherpholds can be checked- Fact
[Fact (Nat.Prime p)]— it is known thatNat.Prime p- Field
[Field K]—Kis a field: you can add, subtract, multiply and divide (except by 0)- Finite
[Finite α]—αhas finitely many elements- Fintype
[Fintype α]—αhas finitely many elements- Group
[Group G]—Gis a group: you can multiply and undo multiplication- Inhabited
[Inhabited α]—αhas a chosen default element- InnerProductSpace
[InnerProductSpace ℝ E]—Ehas angles and lengths (an inner product)- LinearOrder
[LinearOrder α]— any two elements ofαcan be compared- MeasurableSpace
[MeasurableSpace X]—Xhas measurable sets- MetricSpace
[MetricSpace X]—Xhas a distance between any two points- Module
[Module R M]—Mis a module (a vector space when the scalars form a field)- Monoid
[Monoid M]—Mhas a multiplication with a 1- NeZero
[NeZero n]—nis not 0- Nonempty
[Nonempty α]—αhas at least one element- Nontrivial
[Nontrivial α]—αhas at least two different elements- NormedAddCommGroup
[NormedAddCommGroup E]—Ehas a length (norm) for its elements- NormedSpace
[NormedSpace ℝ E]—Eis a vector space with lengths- PartialOrder
[PartialOrder α]—αhas an order (some pairs may be incomparable)- Ring
[Ring R]—Ris a ring: you can add, subtract and multiply- Semiring
[Semiring R]—Rhas addition and multiplication- TopologicalSpace
[TopologicalSpace X]—Xhas a notion of nearness (open sets)
Properties
Statements about functions, numbers and sets that the Reading puts in words, each shown on a sample use.
- AEMeasurable
AEMeasurable f—fis measurable, apart from a set of measure zero- AEStronglyMeasurable
AEStronglyMeasurable f—fis (strongly) measurable, apart from a set of measure zero- Antitone
Antitone f—fnever increases- BddAbove
BddAbove S—Sis bounded above- BddBelow
BddBelow S—Sis bounded below- Bijective
Bijective f—fis a bijection: a perfect one-to-one pairing- BijOn
BijOn f s t—fpairssone-to-one witht- Collinear
Collinear ℝ S— the pointsSlie on one line- Colorable
Colorable G n— the graph can be colored withncolors so that neighbors get different colors- Commute
Commute a b—aandbcommute: their product is the same in either order- Computable
Computable f—fis computable- ConcaveOn
ConcaveOn ℝ s f—fis concave ons: its graph bends downward- ContDiff
ContDiff ℝ n f—fis smooth: it can be differentiatedntimes, continuously- ContDiffAt
ContDiffAt ℝ n f x—fis smooth atx- Continuous
Continuous f—fis continuous: no jumps or breaks- ContinuousAt
ContinuousAt f x—fis continuous atx- ContinuousOn
ContinuousOn f s—fis continuous ons- ContinuousWithinAt
ContinuousWithinAt f s x—fis continuous atxwithins- Convex
Convex ℝ s—sis convex: it contains the segment between any two of its points- ConvexOn
ConvexOn ℝ s f—fis convex ons: its graph bends upward- Coprime
Coprime a b—aandbare coprime: no common factor bigger than 1- Countable
Countable S—Sis countable- Dense
Dense S—Sis dense: it comes arbitrarily close to every point- Differentiable
Differentiable ℝ f—fis differentiable: it has a derivative everywhere- DifferentiableAt
DifferentiableAt ℝ f x—fhas a derivative atx- DifferentiableOn
DifferentiableOn ℝ f s—fhas a derivative at every point ofs- Disjoint
Disjoint s t—sandthave nothing in common- Even
Even n—nis even- Finite
Finite S—Sis finite- HasDerivAt
HasDerivAt f f' x—fhas derivativef'atx- HasSum
HasSum a s— the termsaadd up tos- IdentDistrib
IdentDistrib X Y—XandYhave the same distribution- iIndepFun
iIndepFun m X μ— the random variablesXare independent- IndepFun
IndepFun X Y— the random variablesXandYare independent- Infinite
Infinite S—Sis infinite- Injective
Injective f—fis injective: different inputs always give different outputs- InjOn
InjOn f s—fis injective ons: different inputs there give different outputs- Integrable
Integrable f—fis integrable (its integral is finite)- IntegrableOn
IntegrableOn f s—fis integrable ons- IntervalIntegrable
IntervalIntegrable f volume a b—fcan be integrated fromatob- Involutive
Involutive f— applyingftwice gives back the input- Irrational
Irrational x—xis irrational: not a fraction of two integers- Irreducible
Irreducible p—pis irreducible: it cannot be factored into smaller non-units- IsAlgebraic
IsAlgebraic ℤ x—xis algebraic: a root of a nonzero polynomial- IsBigO
IsBigO l f g—fis at most a constant timesg(big O)- IsClosed
IsClosed F—Fis a closed set- IsCompact
IsCompact K—Kis compact (closed and bounded, in ℝⁿ)- IsConnected
IsConnected S—Sis connected: it is all in one piece- IsCoprime
IsCoprime a b—aandbare coprime- IsGLB
IsGLB S m—mis the greatest lower bound ofS- IsGreatest
IsGreatest S m—mis the greatest element ofS- IsLeast
IsLeast S m—mis the least element ofS- IsLittleO
IsLittleO l f g—fis negligible compared withg(little o)- IsLUB
IsLUB S m—mis the least upper bound ofS- IsOpen
IsOpen U—Uis an open set- IsProbabilityMeasure
IsProbabilityMeasure μ—μis a probability measure: the whole space has size 1- IsSquare
IsSquare n—nis a perfect square- IsUnit
IsUnit a—ahas a multiplicative inverse- LeftInverse
LeftInverse g f—gundoesf: applyingfthenggives back the input- LinearIndependent
LinearIndependent K v— the vectorsvare linearly independent- LipschitzWith
LipschitzWith K f—fnever stretches distances by more than a factorK- MapsTo
MapsTo f s t—fsends every element ofsintot- Measurable
Measurable f—fis measurable- MeasurableSet
MeasurableSet S—Sis a measurable set (one that has a size)- MeasurePreserving
MeasurePreserving f—fpreserves the measure: sets keep their size- MemLp
MemLp f p—fis in Lᵖ for p =p(the p-th power of |f| has a finite integral)- Monotone
Monotone f—fnever decreases: a bigger input gives an output at least as big- MonotoneOn
MonotoneOn f s—fnever decreases ons- Nonempty
Nonempty S—Sis not empty- Odd
Odd n—nis odd- Pairwise
Pairwise r— every two different elements are related byr- Periodic
Periodic f c—frepeats everyc- Perm
Perm l₁ l₂—l₁is a rearrangement ofl₂- Prime
Prime p—pis a prime number- Primrec
Primrec f—fis primitive recursive (computable by a simple kind of program)- Reachable
Reachable u v— there is a path fromutov- RightInverse
RightInverse g f—gis a right inverse off- Sbtw
Sbtw ℝ x y z—ylies strictly betweenxandz- Squarefree
Squarefree n—nis squarefree: no square bigger than 1 divides it- StrictAnti
StrictAnti f—fis strictly decreasing- StrictMono
StrictMono f—fis strictly increasing: a bigger input gives a bigger output- StronglyMeasurable
StronglyMeasurable f—fis strongly measurable- Summable
Summable a— the series of the termsaadds up to a finite value- Surjective
Surjective f—fis surjective: every possible output is reached- SurjOn
SurjOn f s t—fmapssonto all oft- Tendsto
Tendsto f atTop (𝓝 0)—ftends to0as the input grows without bound- Transcendental
Transcendental ℤ x—xis transcendental: not a root of any nonzero polynomial with integer coefficients- UniformContinuous
UniformContinuous f—fis uniformly continuous- Wbtw
Wbtw ℝ x y z—ylies betweenxandz
Symbols
Notation a newcomer may not know. A Reading lists the ones its statement uses.
- #s, card
- the number of elements
- %
- remainder after division
- .Finite
- the set has finitely many elements
- .Infinite
- the set has infinitely many elements
- /
- division; on ℕ and ℤ it rounds down
- ^
- a power
- A × B
- pairs (a, b) with a from A and b from B
- answer(…)
- marks the answer the problem asks for; answer(sorry) means the answer is not filled in
- atTop
- “as the input goes to infinity”
- choose
- binomial coefficient: the number of ways to pick k things from n
- deriv
- the derivative
- exp
- the exponential function eˣ
- f '' s
- the image: all outputs f gives on s
- f =O[l] g
- big O: f is at most a constant times g, along l
- f =o[l] g
- little o: f is negligible compared with g, along l
- f ⁻¹' s
- the preimage: all inputs that f sends into s
- f ∘ g
- composition: first g, then f
- f ≪ g
- f is at most a constant times g (for large inputs)
- Finset.range n
- the numbers 0, 1, …, n − 1
- fun x ↦ …
- a function: send x to …
- gcd
- greatest common divisor
- lcm
- least common multiple
- log
- the natural logarithm
- n !
- factorial: 1 · 2 · … · n
- Set.Icc a b
- the closed interval [a, b]
- Set.Ioo a b
- the open interval (a, b)
- sᶜ
- the complement: everything not in s
- x⁻¹
- the inverse, 1 / x for numbers
- {x | p x}
- the set of all x with property p
- |x|
- absolute value
- ¬
- “not”
- π
- pi
- ‖x‖
- the norm (length) of x
- ℂ
- the complex numbers
- ℕ
- the natural numbers 0, 1, 2, … (in Lean ℕ starts at 0)
- ℚ
- the rational numbers (fractions)
- ℝ
- the real numbers
- ℤ
- the integers …, −2, −1, 0, 1, 2, …
- ↑x
- x viewed in a bigger number system, such as a natural number as a real number
- →
- “implies”, or for functions “to”
- ↔
- “if and only if”: both directions hold
- ∀
- “for every”
- ∃
- “there exists”
- ∃!
- “there is exactly one”
- ∏
- a product over a range or a finite set
- ∑
- a sum over a range or a finite set
- √
- square root
- ∣
- “divides”: a ∣ b means b is a multiple of a
- ∧
- “and”
- ∨
- “or”
- ∩
- intersection: what both sets have in common
- ∪
- union: everything in either set
- ∫
- an integral
- ≡ [MOD n]
- same remainder when divided by n
- ⌈x⌉
- ceiling: the smallest integer at least x
- ⌊x⌋
- floor: the largest integer at most x
- 𝓝 x
- “near x”: used for limits
Tactics
Steps inside a proof that starts with by. Each says what the tactic does in general; the goal it leaves depends on the proof.
- abel
- Both sides are equal by rearranging sums (abel: algebra in commutative groups).
- absurd
absurd h h'— Two facts contradict each other:h h'.- admit
- Not proved yet: admit is a placeholder, so this proof is unfinished.
- aesop
- Search automatically for a proof using many small rules (aesop).
- all_goals
all_goals simp— On every remaining goal: Simplify with Lean's standard simplification rules.- and_intros
- Split the “and” goal into its parts.
- any_goals
any_goals simp— On every goal where it works: Simplify with Lean's standard simplification rules.- apply
apply h— Work backwards withh: it gives the goal once its own conditions hold, so those conditions become the new goals.- apply_fun
apply_fun f at h— Applyfto both sides inh.- assumption
- The goal is exactly one of the assumptions.
- bound
- Prove the bound by combining standard inequalities.
- by_cases
by_cases h : x = 0— Split into two cases:x = 0is true, or it is false.- by_contra
- Proof by contradiction: assume the opposite and reach something false.
- by_contra!
- Proof by contradiction, with the assumed opposite already simplified.
- calc
- A chain of steps, each one justified on its own line.
- case
case zero => simp— The casezero.- cases
cases h— Split into cases on howhcan be built.- cases'
cases' h with x hx— Split into cases on howhcan be built.- change
change a + 0 = a— Restate the goal asa + 0 = a(the same thing, written differently).- choose
choose f hf using h— From “for every x there is a y”, pick a function giving such a y:f hf using h.- classical
- Allow classical reasoning from here on (every statement is true or false, even if we cannot compute which).
- clear
clear h— Forget the assumptionsh; they are not needed any more.- congr
- Reduce to showing the matching parts of both sides are equal.
- constructor
constructor function Object() { [native code] }— Split the goal into its parts: for “A and B” prove A and B, for “A iff B” prove both directions.- constructorm
- Split every “and”-like assumption or goal into its parts.
- continuity
- Built automatically from the rules for continuous functions.
- contradiction
- Two assumptions contradict each other, so this case is done.
- contrapose
- Prove the contrapositive: if the conclusion fails, then so does the assumption.
- contrapose!
- Prove the contrapositive, with the negations pushed inward.
- conv
- Rewrite inside one chosen part of the goal.
- conv_lhs
- Rewrite inside the left-hand side only.
- conv_rhs
- Rewrite inside the right-hand side only.
- convert
convert h using 1— Close the goal withh, which almost matches; any differences become new goals.- decide
- Lean checks it by direct computation (decide).
- delta
delta f— Expand the definition off.- dsimp
- Simplify by unfolding definitions.
- erw
erw [h]— Rewrite usingh, matching up to unfolding definitions.- exact
exact h— Finish:his exactly what is needed.- exact_mod_cast
exact_mod_cast h— Finish withh, ignoring conversions between number systems.- exacts
exacts [h₁, h₂]— Finish each remaining goal with[h₁, h₂].- exfalso
- Switch to proving False: this case is impossible.
- exists
exists 2— Give2as the example that exists.- existsi
existsi 2— Give2as the example that exists.- ext
- Two functions (or sets) are equal when they agree at every input.
- ext1
- Two functions (or sets) are equal when they agree at every input.
- field
- Both sides are equal by algebra with division (field).
- field_simp
- Clear the denominators.
- filter_upwards
- Reduce a statement about “eventually” or “almost everywhere” to one about each point.
- fin_cases
fin_cases i— Try each of the finitely many values ofi, one case each.- finiteness
- The quantity is finite (not ∞), checked automatically (finiteness).
- first
first | simp | ring— Try these in order until one works:simp,ring- focus
- Work on the first goal only.
- fun_prop
- Built automatically from the rules for continuity, differentiability or measurability (fun_prop).
- funext
- Two functions are equal when they agree at every input.
- gcongr
- Compare the two sides piece by piece: if each part on the left is at most the matching part on the right, so is the whole (gcongr).
- generalize
generalize e : f x = y— Replace a specific expression by a general variable:e : f x = y.- grind
- Automated reasoning that combines equalities, cases and arithmetic (grind).
- group
- Both sides are equal by the rules of a group (group).
- grw
grw [h]— Rewrite with an inequality (or another relation) instead of an equation:h.- have
have h : 0 < 2 := by norm_num— Establish an intermediate facth:0is less than2. Proved by: Do the arithmetic: norm_num proves number facts such as 2 + 2 = 4, 7 ≠ 0 or that 13 is prime.- have'
have' h : 0 < 2 := by norm_num— Establish an intermediate facth:0is less than2. Proved by: Do the arithmetic: norm_num proves number facts such as 2 + 2 = 4, 7 ≠ 0 or that 13 is prime.- haveI
haveI h : 0 < 2 := by norm_num— Establish an intermediate facth:0is less than2. Proved by: Do the arithmetic: norm_num proves number facts such as 2 + 2 = 4, 7 ≠ 0 or that 13 is prime.- if
- Split on a condition, if-then-else.
- induction
induction n with— Prove it by induction onn: first a starting case, then a step from each case to the next.- induction'
induction' n with n ih— Prove it by induction onn: a starting case, then the step to the next case.- infer_instance
- Lean finds this automatically from known structures.
- interval_cases
interval_cases n— Try every possible value ofnin its known range, one case each.- intro
- Move the next variable or assumption of the goal into view.
- intros
- Introduce everything the goal starts with.
- left
- Prove the left side of the “or”.
- let
let y := x + 1— Give a name to a value:y := x + 1.- letI
letI inst := Classical.decEq α— Give a name to a structure for Lean to use:inst := Classical.decEq α.- lia
- Whole-number arithmetic, decided automatically (lia: linear integer arithmetic).
- lift
lift n to ℕ using hn— Treatn to ℕ using hnas a value of a smaller number system, since it is known to fit.- linarith
- It follows by adding up the linear inequalities in the assumptions (linarith).
- linear_combination
linear_combination h₁ - h₂— The goal is exactly this combination of the assumptions:h₁ - h₂.- match
match n with— Split on the shape ofn, one case per pattern.- measurability
- Built automatically from the rules for measurable functions.
- module
- Both sides are equal by algebra with vectors and scalars (module).
- native_decide
- Checked by running compiled code (native_decide). This also trusts the compiler, an extra axiom.
- next
- The next case.
- nlinarith
- Like linarith, but also multiplies assumptions together, which handles squares and products.
- nofun
- No case can occur, so there is nothing to prove.
- nomatch
nomatch h— No case ofhcan occur.- noncomm_ring
- Both sides are equal by algebra where multiplication need not commute (noncomm_ring).
- norm_cast
- Move the statement between number systems (ℕ, ℤ, ℚ, ℝ) to where it is simplest.
- norm_num
- Do the arithmetic: norm_num proves number facts such as 2 + 2 = 4, 7 ≠ 0 or that 13 is prime.
- norm_num1
- Do the arithmetic.
- nth_rewrite
nth_rewrite 2 [h]— Rewrite one chosen occurrence usingh.- nth_rw
nth_rw 2 [h]— Rewrite one chosen occurrence usingh.- obtain
obtain ⟨x, hx⟩ := h— Unpackhinto its pieces⟨x, hx⟩.- omega
- Whole-number arithmetic with +, −, constants and comparisons, decided automatically (omega).
- on_goal
on_goal 2 => simp— On one chosen goal:2 => simp.- order
- It follows from the order facts in the assumptions (order).
- peel
peel h with x hx— Strip matching quantifiers from both sides:h with x hx.- polyrith
- The goal is a combination of the equations in the assumptions (polyrith).
- positivity
- The expression is positive (or at least 0), checked term by term (positivity).
- push
- Push the operation inward.
- push_cast
- Push the number-system conversions (↑) inward.
- push_neg
- Push the “not” inward: not-for-every becomes there-is-a-counterexample, and so on.
- qify
- Move the statement to ℚ, where division behaves normally.
- rcases
rcases h with ⟨x, hx⟩— Unpackhinto its pieces⟨x, hx⟩, one case per alternative.- refine
refine ⟨?_, ?_⟩— Fill in the goal with⟨?_, ?_⟩; every ?_ hole becomes a new goal.- refine'
refine' ⟨_, _⟩— Fill in the goal with⟨_, _⟩; every _ hole becomes a new goal.- rename_i
rename_i x y— Name the unnamed variablesx,y.- repeat
repeat rw [h]— Repeat as long as it works: Rewrite usingh.- replace
replace h : 0 < x := by linarith— Replace an assumption with a stronger form: the facth:0is less thanx. Proved by: It follows by adding up the linear inequalities in the assumptions (linarith).- revert
revert x— Putxback into the goal, so the goal is about every possible value of it.- rewrite
rewrite [h]— Rewrite usingh.- rfl
- Both sides are the same by definition (rfl).
- right
- Prove the right side of the “or”.
- ring
- Both sides are equal by algebra: expand and collect like terms (ring).
- ring_nf
- Put the expressions into a standard algebraic form.
- rintro
rintro ⟨x, hx⟩— Introduce and unpack in one go:⟨x, hx⟩.- rotate_left
- Change the order of the goals.
- rw
rw [h]— Rewrite usingh.- rwa
rwa [h] at h₁— Rewrite usinghinh₁, and then the goal is one of the assumptions.- set
set y := x + 1 with hy— Give a name to an expression and use the name from now on:y := x + 1.- show
show a + 0 = a— Restate the goal asa + 0 = a.- simp
- Simplify with Lean's standard simplification rules.
- simp_all
- Simplify the goal and all the assumptions together.
- simp_arith
- Simplify, including arithmetic on natural numbers.
- simp_rw
simp_rw [h]— Rewrite usingh, also inside “for every” and “there is”.- simpa
- Simplify, and the goal closes.
- sorry
- Not proved yet: sorry is a placeholder, so this proof is unfinished.
- specialize
specialize h 2— Use the assumptionhfor the specific2.- split
- Split into one case for each branch of the if-then-else or match.
- split_ifs
- Split into a case for each branch of every if-then-else.
- subst
subst h— Replacehby what it equals, everywhere.- suffices
suffices h : 0 < x by linarith— It is enough to prove0 < x; that is shown next, then used to finish.- swap
- Work on the second goal first.
- symm
- Swap the two sides.
- tauto
- Pure logic: it follows from the assumptions by the rules of and, or, not and implies (tauto).
- trans
trans b— Go through a middle pointb.- trivial
- This goal is immediate.
- try
try linarith— Try this, and carry on if it fails: It follows by adding up the linear inequalities in the assumptions (linarith).- unfold
unfold f— Expand the definition off.- use
use 2— Give2as the example that exists; what remains is to check it works.- wlog
wlog h : a ≤ b with H— Without loss of generality,h : a ≤ b; the other case follows the same way.- zify
- Move the statement from ℕ to ℤ, where subtraction behaves normally.
Lean words
Words of the Lean language itself, and of how its projects are organized.
- #check, #eval
#eval 2 + 2— Commands that ask Lean a question while you write: the type of a term, or its value.- :=
def two : ℕ := 2— “is defined as” or “is proved by”: what comes after it is the value or the proof.- @[simp] (attribute)
@[simp] theorem add_zero' (n : ℕ) : n + 0 = n := rfl— Attributes add information to a declaration: @[simp] tells the simp tactic to use it.- _ and ?_
refine ⟨?_, ?_⟩— A hole: Lean fills in _ by itself, and ?_ becomes a new goal to prove.- abbrev
abbrev Point := ℝ × ℝ— A definition that Lean unfolds freely, like a shorthand.- anonymous constructor ⟨ ⟩
⟨2, by norm_num⟩— Builds an object from its parts: a pair, a structure, or a proof of “and” or “there exists”.- axiom
axiom my_assumption : 1 = 1— Something assumed without proof. Lean's three standard axioms (propext, Classical.choice, Quot.sound) are normal; anything beyond them is worth a closer look.- by
theorem t : 1 + 1 = 2 := by norm_num— Starts a proof made of tactics.- class
class Zero (α : Type) where zero : α— A structure that Lean finds by itself when it is needed (a type class), such as “this type has an addition”.- class inductive
class inductive Decidable (p : Prop)— A class given by the ways to build it, like inductive.- declaration
- Any named thing in Lean: a theorem, a definition, and so on. Each one has a line on its file page.
- def (definition)
def double (n : ℕ) : ℕ := 2 * n— A name for a precise idea or a computation, such as “continuous” or “double a number”.- dot notation
n.succ— x.foo means Foo.foo x, where Foo is the type of x: n.succ is Nat.succ n.- example
example : 2 + 2 = 4 := rfl— A statement proved without a name, to show that something works.- explicit argument ( )
(n : ℕ)— An argument you write when you use the result.- goal
- What is left to prove at a point in a proof. Each tactic changes the goal.
- h.1, h.2
h.1— The first and second part of h, for example of an “and”.- hypothesis (assumption)
(h : 0 < n)— A named fact you may use in a proof, such as h : 0 < n.- implicit argument { }
{α : Type}— An argument Lean works out by itself from the others.- import
import Mathlib.Data.Real.Basic— Brings in the declarations of another file or library.- inductive
inductive Color | red | green— A new type given by the ways to build its elements. The natural numbers are 0, or one more than a natural number.- instance
instance : Zero ℕ := ⟨0⟩— A proof or construction that a type belongs to a class. Lean then finds it by itself.- instance argument [ ]
[Field K]— An argument Lean finds by itself among the class instances it knows.- kernel
- The small core of Lean that finally accepts or rejects a proof.
- Lake
lake build— Lean's build tool. A project's lakefile says which libraries it has and which it needs.- lemma
lemma helper (n : ℕ) : n ≤ n + 1 := by omega— A theorem, usually a smaller helper for a bigger one.- Mathlib
import Mathlib— The big shared library of formalized mathematics that many Lean projects build on.- namespace
namespace Nat … end Nat— A family name for declarations: inside namespace Nat, succ_le means Nat.succ_le.- noncomputable
noncomputable def half : ℝ := 1 / 2— Marks a definition Lean cannot run as a program, usually because it uses choice or real numbers.- opaque
opaque secret : ℕ— A definition whose value Lean keeps hidden: only its type is known.- open
open Real— Lets you use short names: after open Real, pi means Real.pi.- private, protected
private theorem helper : True := trivial— private: usable only in this file. protected: must always be written with its full name.- proof
- The argument. In Lean, a proof is code, and Lean checks every step of it.
- Prop
(p : Prop)— The type of statements. A statement is true or false; its proofs are its elements.- section
section … end— A part of a file whose variables and open commands end with it.- sorry
theorem later : 1 = 1 := sorry— Lean's “I have not proved this yet”. A result that uses it is not finished, and the site flags it.- structure
structure Point where x : ℝ y : ℝ— A new kind of object made of named parts (its fields).- tactic
by rw [h] ring— One command inside a proof that starts with by, such as “rewrite using this equation”. The Reading explains each one.- termination_by
termination_by n— Says why a recursive definition stops: something gets smaller each time.- theorem
theorem two_pos : 0 < 2 := by norm_num— A statement that has been proved. The proof follows :=.- universe
universe u— The size level of types (Type u). You can usually ignore it.- variable
variable (n : ℕ) (hn : 0 < n)— Names (and assumptions) used by every result below it, until its section ends.- · (focusing dot)
constructor · norm_num · simp— Starts the proof of one goal when there are several.