2.2 KiB
Lexical conventions
Reserved keywords
This is the list of reserved keywords in Lean:
Axiom,
Check,
Coercion,
Definition,
Echo,
EndScope,
Environment,
Eval,
Exit,
Help,
Import,
Infix,
Infixr,
Notation,
Options,
Pi,
Pop,
Push,
Scope,
Show,
Theorem,
Type,
Universe,
Variable,
Variables,
by,
exists,
forall,
fun,
in,
let,
show
Remark: Lean commands always start with a upper case letter.
The following symbols are also reserved: ->, ==, Π, λ, →, ∀, ∃, _, ,, ., :, (, ), {, }
Identifiers
Lean identifiers are divided in 3 categories.
In the first category, identifiers are of the form [a-zA-Z_'@][a-zA-Z0-9_'@]*. Here are examples of valid identifiers in this category: fact, sin, move_front, f1, @cast, and A'.
In Lean, we support hierarchical identifiers. A hierarchical is essentially a sequence of category 1 identifiers separated by ::. We use hierarchical names to simulate modules in Lean. Here are some examples: mod::x, foo::bla::1.
In the second category, we have any non empty sequence of the following characters: =, <, >, ^, |, &, ~, +, -, *, /, \\, $, %, ?, ;, [, ], #. Here are examples of indentifiers in this category: ==, ++, <<==.
In the third category, we have any non empty sequence of non-ascii characters. Here are some examples: ⊆, ∨, and ¬.
This separation may seem adhoc, the main motivation is to minimize the number of white spaces in Lean files.
For example, we can write x+y*z instead of x + y * z.
We usually use category 1 identifiers to name variable declarations,
definitions, axioms and theorems. Category 2 and 3 are usually used to
define notation, i.e., symbolic abbreviations denoting terms. For
example, the integer addition is named Int::add, and real addition
Real::add. The symbol + is notation for both of them.
Numerals
Natural numbers are of the form [0-9]+, and decimal numbers are of the form [0-9]+.[0-9]*.
Natural numbers have type Nat, and decimal numbers have type Real. Lean automatically introduce coercions when needed.
Strings
Strings are defined as usual as "[any sequence of characters excluded "]".