# What are free names?

Suppose we have the following expression:

`(x => { return 4 * square(x) })(3)`

`square`

is free. This is because **it is not declared by the immediate surrounding function**

## Concrete representation

We can map expressions to their free variables through means of a relation: `><`

## Examples

`symbols`

`x >< {x}`

`numbers`

`n >< {}`

## More complex examples

Predicates

```
E1 >< X1 E2 >< X2 E3 >< X3
----------------------------
E1 ? E2 : E3 >< X1 ∪ X2 ∪ X3
```

function

```
S >< X
----------------------
(x1, ..., xn) a=> { S } >< X - {x1,...,xn}
```