Theorem: Finset.sup'_induction
File: Mathlib/Data/Finset/Lattice.lean

tactic: show @WithBot.recBotCoe α (fun _ => Prop) True p ↑(s.sup' H f)
state_before: F : Type ?u.260693
α : Type u_1
β : Type u_2
γ : Type ?u.260702
ι : Type ?u.260705
κ : Type ?u.260708
inst✝ : SemilatticeSup α
s : Finset β
H : Finset.Nonempty s
f : β → α
p : α → Prop
hp : ∀ (a₁ : α), p a₁ → ∀ (a₂ : α), p a₂ → p (a₁ ⊔ a₂)
hs : ∀ (b : β), b ∈ s → p (f b)
⊢ p (sup' s H f)

tactic: rw [coe_sup']
state_before: F : Type ?u.260693
α : Type u_1
β : Type u_2
γ : Type ?u.260702
ι : Type ?u.260705
κ : Type ?u.260708
inst✝ : SemilatticeSup α
s : Finset β
H : Finset.Nonempty s
f : β → α
p : α → Prop
hp : ∀ (a₁ : α), p a₁ → ∀ (a₂ : α), p a₂ → p (a₁ ⊔ a₂)
hs : ∀ (b : β), b ∈ s → p (f b)
⊢ WithBot.recBotCoe True p ↑(sup' s H f)

tactic: refine' sup_induction trivial _ hs
state_before: F : Type ?u.260693
α : Type u_1
β : Type u_2
γ : Type ?u.260702
ι : Type ?u.260705
κ : Type ?u.260708
inst✝ : SemilatticeSup α
s : Finset β
H : Finset.Nonempty s
f : β → α
p : α → Prop
hp : ∀ (a₁ : α), p a₁ → ∀ (a₂ : α), p a₂ → p (a₁ ⊔ a₂)
hs : ∀ (b : β), b ∈ s → p (f b)
⊢ WithBot.recBotCoe True p (sup s (WithBot.some ∘ f))

tactic: rintro (_ | a₁) h₁ a₂ h₂
state_before: F : Type ?u.260693
α : Type u_1
β : Type u_2
γ : Type ?u.260702
ι : Type ?u.260705
κ : Type ?u.260708
inst✝ : SemilatticeSup α
s : Finset β
H : Finset.Nonempty s
f : β → α
p : α → Prop
hp : ∀ (a₁ : α), p a₁ → ∀ (a₂ : α), p a₂ → p (a₁ ⊔ a₂)
hs : ∀ (b : β), b ∈ s → p (f b)
⊢ ∀ (a₁ : WithBot α),
    WithBot.recBotCoe True p a₁ → ∀ (a₂ : WithBot α), WithBot.recBotCoe True p a₂ → WithBot.recBotCoe True p (a₁ ⊔ a₂)

tactic: rw [WithBot.none_eq_bot, bot_sup_eq]
state_before: case none
F : Type ?u.260693
α : Type u_1
β : Type u_2
γ : Type ?u.260702
ι : Type ?u.260705
κ : Type ?u.260708
inst✝ : SemilatticeSup α
s : Finset β
H : Finset.Nonempty s
f : β → α
p : α → Prop
hp : ∀ (a₁ : α), p a₁ → ∀ (a₂ : α), p a₂ → p (a₁ ⊔ a₂)
hs : ∀ (b : β), b ∈ s → p (f b)
h₁ : WithBot.recBotCoe True p none
a₂ : WithBot α
h₂ : WithBot.recBotCoe True p a₂
⊢ WithBot.recBotCoe True p (none ⊔ a₂)

tactic: exact h₂
state_before: case none
F : Type ?u.260693
α : Type u_1
β : Type u_2
γ : Type ?u.260702
ι : Type ?u.260705
κ : Type ?u.260708
inst✝ : SemilatticeSup α
s : Finset β
H : Finset.Nonempty s
f : β → α
p : α → Prop
hp : ∀ (a₁ : α), p a₁ → ∀ (a₂ : α), p a₂ → p (a₁ ⊔ a₂)
hs : ∀ (b : β), b ∈ s → p (f b)
h₁ : WithBot.recBotCoe True p none
a₂ : WithBot α
h₂ : WithBot.recBotCoe True p a₂
⊢ WithBot.recBotCoe True p a₂

tactic: cases a₂ using WithBot.recBotCoe with
| bot => exact h₁
| coe a₂ => exact hp a₁ h₁ a₂ h₂
state_before: case some
F : Type ?u.260693
α : Type u_1
β : Type u_2
γ : Type ?u.260702
ι : Type ?u.260705
κ : Type ?u.260708
inst✝ : SemilatticeSup α
s : Finset β
H : Finset.Nonempty s
f : β → α
p : α → Prop
hp : ∀ (a₁ : α), p a₁ → ∀ (a₂ : α), p a₂ → p (a₁ ⊔ a₂)
hs : ∀ (b : β), b ∈ s → p (f b)
a₁ : α
h₁ : WithBot.recBotCoe True p (some a₁)
a₂ : WithBot α
h₂ : WithBot.recBotCoe True p a₂
⊢ WithBot.recBotCoe True p (some a₁ ⊔ a₂)

tactic: exact h₁
state_before: case some.bot
F : Type ?u.260693
α : Type u_1
β : Type u_2
γ : Type ?u.260702
ι : Type ?u.260705
κ : Type ?u.260708
inst✝ : SemilatticeSup α
s : Finset β
H : Finset.Nonempty s
f : β → α
p : α → Prop
hp : ∀ (a₁ : α), p a₁ → ∀ (a₂ : α), p a₂ → p (a₁ ⊔ a₂)
hs : ∀ (b : β), b ∈ s → p (f b)
a₁ : α
h₁ : WithBot.recBotCoe True p (some a₁)
h₂ : WithBot.recBotCoe True p ⊥
⊢ WithBot.recBotCoe True p (some a₁ ⊔ ⊥)

tactic: exact hp a₁ h₁ a₂ h₂
state_before: case some.coe
F : Type ?u.260693
α : Type u_1
β : Type u_2
γ : Type ?u.260702
ι : Type ?u.260705
κ : Type ?u.260708
inst✝ : SemilatticeSup α
s : Finset β
H : Finset.Nonempty s
f : β → α
p : α → Prop
hp : ∀ (a₁ : α), p a₁ → ∀ (a₂ : α), p a₂ → p (a₁ ⊔ a₂)
hs : ∀ (b : β), b ∈ s → p (f b)
a₁ : α
h₁ : WithBot.recBotCoe True p (some a₁)
a₂ : α
h₂ : WithBot.recBotCoe True p ↑a₂
⊢ WithBot.recBotCoe True p (some a₁ ⊔ ↑a₂)