## Stream: general

### Topic: Goal state in goal chaining

#### Yaël Dillies (Jan 21 2022 at 20:33):

I suspect one of the reasons people use ; so little is that you basically go blind with respect to the goals. Would it be possible to show all focused goals with their respective states simultaneously?

example (p q r : Prop) (h : r) : (p → r) ∧ (q → r) :=
begin
split;
{ intro, -- currently shows one goal with the cursor here
-- 1 goal
-- p q r : Prop
-- h : r
-- ᾰ : p
-- ⊢ r
-- I want it to show
-- 2 goals
-- p q r : Prop
-- h : r
-- ᾰ : p
-- ⊢ r
-- p q r : Prop
-- h : r
-- ᾰ : q
-- ⊢ r
exact h }
end


#### Sebastian Ullrich (Jan 21 2022 at 20:37):

You might be happy to hear that Lean 4 does this image.png

#### Patrick Massot (Jan 21 2022 at 20:38):

Another reason is that ; very often lead to obfuscated proofs if there is more than one tactic after it.

#### Yaël Dillies (Jan 21 2022 at 20:40):

Oooh, very nice Sebastian! Consider my point moot.

#### Yaël Dillies (Jan 21 2022 at 20:42):

Patrick Massot said:

Another reason is that ; very often lead to obfuscated proofs if there is more than one tactic after it.

But why is it obfuscating? I claim this is precisely because you can hardly inspect the goal. If you have split, { tac1, tac2, tac3 }, { tac1, tac2, tac3 }, then replacing it with split; { tac1, tac2, tac3 } doesn't obfuscate anything. I would even claim it makes the proof more readable.

#### Yaël Dillies (Jan 21 2022 at 20:43):

Of course, a side effect would be that people will start trying to parallel-golf, which indeed could obfuscate stuff. But that's a question of what people will do with the tools we hand them, rather than the tools themselves.

#### Kevin Buzzard (Jan 21 2022 at 20:48):

I almost always avoid the semicolon when teaching in Lean 3 for the sole reason that I think the students will find it confusing. The only times I've used it in my class so far are split; assumption and split;linarith, i.e. split; close both goals; for such arguments you don't need to see the tactic state.

#### Henrik Böving (Jan 21 2022 at 20:50):

It's made a little more explicit that its different from , in Lean 4 by both not having a comma and having <;> instead of just the regular ; so maybe that helps?

#### Eric Wieser (Jan 21 2022 at 21:19):

I've sometimes seen proofs like split; simp; nonsense and lean happily ignores the nonsense - which is another mark against using ;

#### Bryan Gin-ge Chen (Jan 22 2022 at 02:03):

I'm a bit late to the conversation, but lean#201 tracks this in (community) Lean 3. (As Yaël said, this is probably moot as we'll probably move to Lean 4 before this issue is tackled).

Last updated: Dec 20 2023 at 11:08 UTC