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 ps 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 ps 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