# Welcome to the course #

We start with a quick tour, where we:

- Use Lean as a calculator
- Define some functions and call them.
- Look at some types.
- Look at some proofs.

We will then see

- A glimpse of AI.
- A detailed example with programs and proofs.

## Lean as a calculator. #

We begin by using Lean as a calculator. We can use `#eval`

to evaluate expressions.

```
#eval 1 + 2 -- 3
#eval "Hello " ++ "world!" -- "Hello world!"
```

We next evaluate an expression involving a definition.

```
#eval some_number + 23 -- 65
```

## Defining functions #

We next define some functions. These are defined in terms of previously defined functions.

```
#eval cube (add_two 3) -- 125
```

## Types #

Terms in Lean, including functions, have types, which can be seen using `#check`

```
#check 1 + 2 -- ℕ
#check "Hello " ++ "world!" -- String
#check add_two -- ℕ → ℕ
#check cube -- ℕ → ℕ
#check ℕ -- Type
#check Type -- Type 1
#check ℕ → ℕ -- Type
```

We next define a function of two arguments, and look at its type. We see that this is defined as a function from `ℕ`

to a function from `ℕ`

to `ℕ`

.

```
#check sum_of_squares -- ℕ → ℕ → ℕ
#check sum_of_squares 3 -- ℕ → ℕ
```

We can also define this in a way that makes the type clearer.