# Zulip Chat Archive

## Stream: new members

### Topic: p p : P,

#### Philip B. (Sep 14 2020 at 15:33):

Hi. I am playing the natural numbers game, Advanced proposition world, level 10. So far my proof is

```
intros h p,
by_cases p:P; by_cases q:Q,
```

in the goals pane, I see among other lines a line `p p : P,`

. What does it mean?

#### Yakov Pechersky (Sep 14 2020 at 15:35):

You introduced two new terms into your tactic state with your first line `intros h p`

, where `p : P`

is a term `p`

of type `P`

.

#### Philip B. (Sep 14 2020 at 15:36):

@Yakov Pechersky I mean in that line why are there two small letters p instead of one?

#### Yakov Pechersky (Sep 14 2020 at 15:36):

Then, you added another term to your tactic state with the line `by_cases p : P`

, which creates two subgoals. In each of the subgoals, there is a new term `p : P`

. In the first subgoal, you will have a hypothesis that `p`

is true, and in the other subgoal, that `p`

is false.

#### Yakov Pechersky (Sep 14 2020 at 15:37):

The two `p`

s you have, one from `intros`

and one from `by_cases`

are entirely distinct.

#### Yakov Pechersky (Sep 14 2020 at 15:37):

Is `P : Prop`

?

#### Philip B. (Sep 14 2020 at 15:37):

@Yakov Pechersky yes

#### Philip B. (Sep 14 2020 at 15:38):

Yakov Pechersky said:

The two

`p`

s you have, one from`intros`

and one from`by_cases`

are entirely distinct.

I see

#### Yakov Pechersky (Sep 14 2020 at 15:40):

In Lean, if `P : Prop`

, then if `p1 : P`

and `p2 : P`

, then `p1 = p2`

, that is, `P`

is a proposition, and `p1`

and `p2`

are proofs of that proposition. In Lean, proofs of the same proposition are equal -- called "proof irrelevance".

#### Yakov Pechersky (Sep 14 2020 at 15:41):

So you might want to do something like

```
intros h p_from_statement,
by_cases p : P,
by_cases q : Q,
[...]
```

#### Kevin Buzzard (Sep 14 2020 at 15:45):

Are you splitting on the case P is true/false, whilst simultaneously knowing that P is true? This doesn't seem sensible

#### Philip B. (Sep 14 2020 at 15:46):

@Kevin Buzzard after thinking some more, I understand that this was a bad idea

#### Yakov Pechersky (Sep 14 2020 at 15:49):

Crucially, in the second subgoal of `by_cases p : P`

, you'll have a tactic state with `p : ¬P`

. So that variable `p`

will change from being of type `P`

to type `¬P`

.

#### Johan Commelin (Sep 14 2020 at 16:10):

Philip B. said:

Yakov Pechersky I mean in that line why are there two small letters p instead of one?

Try changing `intros h p`

to `intros h blabla`

. Try the same thing with the `p`

in `by_cases p : P`

.

Last updated: Dec 20 2023 at 11:08 UTC