Theorem: List.pairwise_of_reflexive_on_dupl_of_forall_ne
File: .lake/packages/batteries/Batteries/Data/List/Pairwise.lean

tactic: apply pairwise_iff_forall_sublist.mpr
state_before: α : Type u_1
inst✝ : DecidableEq α
l : List α
r : α → α → Prop
hr : ∀ (a : α), 1 < count a l → r a a
h : ∀ (a : α), a ∈ l → ∀ (b : α), b ∈ l → a ≠ b → r a b
⊢ Pairwise r l
state_after: α : Type u_1
inst✝ : DecidableEq α
l : List α
r : α → α → Prop
hr : ∀ (a : α), 1 < count a l → r a a
h : ∀ (a : α), a ∈ l → ∀ (b : α), b ∈ l → a ≠ b → r a b
⊢ ∀ {a b : α}, [a, b] <+ l → r a b

tactic: intro a b hab
state_before: α : Type u_1
inst✝ : DecidableEq α
l : List α
r : α → α → Prop
hr : ∀ (a : α), 1 < count a l → r a a
h : ∀ (a : α), a ∈ l → ∀ (b : α), b ∈ l → a ≠ b → r a b
⊢ ∀ {a b : α}, [a, b] <+ l → r a b
state_after: α : Type u_1
inst✝ : DecidableEq α
l : List α
r : α → α → Prop
hr : ∀ (a : α), 1 < count a l → r a a
h : ∀ (a : α), a ∈ l → ∀ (b : α), b ∈ l → a ≠ b → r a b
a b : α
hab : [a, b] <+ l
⊢ r a b

tactic: if heq : a = b then
  cases heq; apply hr
  rwa [show [a,a] = replicate 2 a from rfl, ← le_count_iff_replicate_sublist] at hab
else
  apply h <;> try (apply hab.subset; simp)
  exact heq
state_before: α : Type u_1
inst✝ : DecidableEq α
l : List α
r : α → α → Prop
hr : ∀ (a : α), 1 < count a l → r a a
h : ∀ (a : α), a ∈ l → ∀ (b : α), b ∈ l → a ≠ b → r a b
a b : α
hab : [a, b] <+ l
⊢ r a b
state_after: no goals

tactic: cases heq
state_before: α : Type u_1
inst✝ : DecidableEq α
l : List α
r : α → α → Prop
hr : ∀ (a : α), 1 < count a l → r a a
h : ∀ (a : α), a ∈ l → ∀ (b : α), b ∈ l → a ≠ b → r a b
a b : α
hab : [a, b] <+ l
heq : a = b
⊢ r a b
state_after: case refl
α : Type u_1
inst✝ : DecidableEq α
l : List α
r : α → α → Prop
hr : ∀ (a : α), 1 < count a l → r a a
h : ∀ (a : α), a ∈ l → ∀ (b : α), b ∈ l → a ≠ b → r a b
a : α
hab : [a, a] <+ l
⊢ r a a

tactic: apply hr
state_before: case refl
α : Type u_1
inst✝ : DecidableEq α
l : List α
r : α → α → Prop
hr : ∀ (a : α), 1 < count a l → r a a
h : ∀ (a : α), a ∈ l → ∀ (b : α), b ∈ l → a ≠ b → r a b
a : α
hab : [a, a] <+ l
⊢ r a a
state_after: case refl.a
α : Type u_1
inst✝ : DecidableEq α
l : List α
r : α → α → Prop
hr : ∀ (a : α), 1 < count a l → r a a
h : ∀ (a : α), a ∈ l → ∀ (b : α), b ∈ l → a ≠ b → r a b
a : α
hab : [a, a] <+ l
⊢ 1 < count a l

tactic: rwa [show [a,a] = replicate 2 a from rfl, ← le_count_iff_replicate_sublist] at hab
state_before: case refl.a
α : Type u_1
inst✝ : DecidableEq α
l : List α
r : α → α → Prop
hr : ∀ (a : α), 1 < count a l → r a a
h : ∀ (a : α), a ∈ l → ∀ (b : α), b ∈ l → a ≠ b → r a b
a : α
hab : [a, a] <+ l
⊢ 1 < count a l
state_after: no goals

tactic: apply h <;> try (apply hab.subset; simp)
state_before: α : Type u_1
inst✝ : DecidableEq α
l : List α
r : α → α → Prop
hr : ∀ (a : α), 1 < count a l → r a a
h : ∀ (a : α), a ∈ l → ∀ (b : α), b ∈ l → a ≠ b → r a b
a b : α
hab : [a, b] <+ l
heq : ¬a = b
⊢ r a b
state_after: case a
α : Type u_1
inst✝ : DecidableEq α
l : List α
r : α → α → Prop
hr : ∀ (a : α), 1 < count a l → r a a
h : ∀ (a : α), a ∈ l → ∀ (b : α), b ∈ l → a ≠ b → r a b
a b : α
hab : [a, b] <+ l
heq : ¬a = b
⊢ a ≠ b

tactic: exact heq
state_before: case a
α : Type u_1
inst✝ : DecidableEq α
l : List α
r : α → α → Prop
hr : ∀ (a : α), 1 < count a l → r a a
h : ∀ (a : α), a ∈ l → ∀ (b : α), b ∈ l → a ≠ b → r a b
a b : α
hab : [a, b] <+ l
heq : ¬a = b
⊢ a ≠ b
state_after: no goals

tactic: (apply hab.subset; simp)
state_before: case a
α : Type u_1
inst✝ : DecidableEq α
l : List α
r : α → α → Prop
hr : ∀ (a : α), 1 < count a l → r a a
h : ∀ (a : α), a ∈ l → ∀ (b : α), b ∈ l → a ≠ b → r a b
a b : α
hab : [a, b] <+ l
heq : ¬a = b
⊢ b ∈ l
state_after: no goals

tactic: apply hab.subset
state_before: case a
α : Type u_1
inst✝ : DecidableEq α
l : List α
r : α → α → Prop
hr : ∀ (a : α), 1 < count a l → r a a
h : ∀ (a : α), a ∈ l → ∀ (b : α), b ∈ l → a ≠ b → r a b
a b : α
hab : [a, b] <+ l
heq : ¬a = b
⊢ b ∈ l
state_after: case a.a
α : Type u_1
inst✝ : DecidableEq α
l : List α
r : α → α → Prop
hr : ∀ (a : α), 1 < count a l → r a a
h : ∀ (a : α), a ∈ l → ∀ (b : α), b ∈ l → a ≠ b → r a b
a b : α
hab : [a, b] <+ l
heq : ¬a = b
⊢ b ∈ [a, b]

tactic: simp
state_before: case a.a
α : Type u_1
inst✝ : DecidableEq α
l : List α
r : α → α → Prop
hr : ∀ (a : α), 1 < count a l → r a a
h : ∀ (a : α), a ∈ l → ∀ (b : α), b ∈ l → a ≠ b → r a b
a b : α
hab : [a, b] <+ l
heq : ¬a = b
⊢ b ∈ [a, b]
state_after: no goals