Zulip Chat Archive

Stream: new members

Topic: Most Lean-onic way to do `byCases` in tactic mode


Lars Ericson (Feb 04 2024 at 03:41):

I am doing Exercise 1 at the end of the Tactic Mode chapter in the TPIL book. I am working on an example that requires Classical. I want to do a byCases proof. I learned about byCases in the earlier term-style chapters of the book. I see cases in the tactic mode chapter but it doesn't seem to be byCases. Here is my approximation of byCases in tactic mode. I apply Or.elim on em p where p and ¬p is what I want to do cases on:

example : (p  q  r)  ((p  q)  (p  r)) := by
  intro h
  apply Or.elim (em p)
  . admit
  . admit

Is there a more Lean-onic way to express this? I.e. something like a byCases tactic for tactic mode, not term mode?

Matt Diamond (Feb 04 2024 at 03:51):

I think the tactic you're looking for is by_cases (docs#Classical.«tacticBy_cases_:_»)

Lars Ericson (Feb 04 2024 at 13:24):

It would be helpful to show docs#by_cases and docs#by_contradiction for tactic mode proofs in the More Tactics section of the Tactics chapter, to mirror the presentation of docs#Classical.byCases and docs#Classical.byContradiction for term mode proofs in the Classical section of the Propositions and Proofs chapter.

Martin Dvořák (Feb 04 2024 at 18:39):

I've also seen if then else in tactic mode lately.


Last updated: May 02 2025 at 03:31 UTC