case nil
α : Type u_1
β : Type ?u.40515
R S T : α → α → Prop
a : α
l✝ : List α
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
hr : ∀ (a : α), 1 < count a [] → r a a
h : ∀ (a : α), a ∈ [] → ∀ (b : α), b ∈ [] → a ≠ b → r a b
⊢ Pairwise r []

case cons
α : Type u_1
β : Type ?u.40515
R S T : α → α → Prop
a : α
l✝ : List α
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
hd : α
tl : List α
IH : (∀ (a : α), 1 < count a tl → r a a) → (∀ (a : α), a ∈ tl → ∀ (b : α), b ∈ tl → a ≠ b → r a b) → Pairwise r tl
hr : ∀ (a : α), 1 < count a (hd :: tl) → r a a
h : ∀ (a : α), a ∈ hd :: tl → ∀ (b : α), b ∈ hd :: tl → a ≠ b → r a b
⊢ Pairwise r (hd :: tl)
α : Type u_1
β : Type ?u.40515
R S T : α → α → Prop
a : α
l✝ : List α
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
induction' l with hd tl IH
no goals
case nil
α : Type u_1
β : Type ?u.40515
R S T : α → α → Prop
a : α
l✝ : List α
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
hr : ∀ (a : α), 1 < count a [] → r a a
h : ∀ (a : α), a ∈ [] → ∀ (b : α), b ∈ [] → a ≠ b → r a b
⊢ Pairwise r []
simp
case cons
α : Type u_1
β : Type ?u.40515
R S T : α → α → Prop
a : α
l✝ : List α
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
hd : α
tl : List α
IH : (∀ (a : α), 1 < count a tl → r a a) → (∀ (a : α), a ∈ tl → ∀ (b : α), b ∈ tl → a ≠ b → r a b) → Pairwise r tl
hr : ∀ (a : α), 1 < count a (hd :: tl) → r a a
h : ∀ (a : α), a ∈ hd :: tl → ∀ (b : α), b ∈ hd :: tl → a ≠ b → r a b
⊢ (∀ (a' : α), a' ∈ tl → r hd a') ∧ Pairwise r tl
case cons
α : Type u_1
β : Type ?u.40515
R S T : α → α → Prop
a : α
l✝ : List α
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
hd : α
tl : List α
IH : (∀ (a : α), 1 < count a tl → r a a) → (∀ (a : α), a ∈ tl → ∀ (b : α), b ∈ tl → a ≠ b → r a b) → Pairwise r tl
hr : ∀ (a : α), 1 < count a (hd :: tl) → r a a
h : ∀ (a : α), a ∈ hd :: tl → ∀ (b : α), b ∈ hd :: tl → a ≠ b → r a b
⊢ Pairwise r (hd :: tl)
rw [List.pairwise_cons]
case cons.left
α : Type u_1
β : Type ?u.40515
R S T : α → α → Prop
a : α
l✝ : List α
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
hd : α
tl : List α
IH : (∀ (a : α), 1 < count a tl → r a a) → (∀ (a : α), a ∈ tl → ∀ (b : α), b ∈ tl → a ≠ b → r a b) → Pairwise r tl
hr : ∀ (a : α), 1 < count a (hd :: tl) → r a a
h : ∀ (a : α), a ∈ hd :: tl → ∀ (b : α), b ∈ hd :: tl → a ≠ b → r a b
⊢ ∀ (a' : α), a' ∈ tl → r hd a'

case cons.right
α : Type u_1
β : Type ?u.40515
R S T : α → α → Prop
a : α
l✝ : List α
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
hd : α
tl : List α
IH : (∀ (a : α), 1 < count a tl → r a a) → (∀ (a : α), a ∈ tl → ∀ (b : α), b ∈ tl → a ≠ b → r a b) → Pairwise r tl
hr : ∀ (a : α), 1 < count a (hd :: tl) → r a a
h : ∀ (a : α), a ∈ hd :: tl → ∀ (b : α), b ∈ hd :: tl → a ≠ b → r a b
⊢ Pairwise r tl
case cons
α : Type u_1
β : Type ?u.40515
R S T : α → α → Prop
a : α
l✝ : List α
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
hd : α
tl : List α
IH : (∀ (a : α), 1 < count a tl → r a a) → (∀ (a : α), a ∈ tl → ∀ (b : α), b ∈ tl → a ≠ b → r a b) → Pairwise r tl
hr : ∀ (a : α), 1 < count a (hd :: tl) → r a a
h : ∀ (a : α), a ∈ hd :: tl → ∀ (b : α), b ∈ hd :: tl → a ≠ b → r a b
⊢ (∀ (a' : α), a' ∈ tl → r hd a') ∧ Pairwise r tl
constructor
case cons.left
α : Type u_1
β : Type ?u.40515
R S T : α → α → Prop
a : α
l✝ : List α
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
hd : α
tl : List α
IH : (∀ (a : α), 1 < count a tl → r a a) → (∀ (a : α), a ∈ tl → ∀ (b : α), b ∈ tl → a ≠ b → r a b) → Pairwise r tl
hr : ∀ (a : α), 1 < count a (hd :: tl) → r a a
h : ∀ (a : α), a ∈ hd :: tl → ∀ (b : α), b ∈ hd :: tl → a ≠ b → r a b
x : α
hx : x ∈ tl
⊢ r hd x
case cons.left
α : Type u_1
β : Type ?u.40515
R S T : α → α → Prop
a : α
l✝ : List α
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
hd : α
tl : List α
IH : (∀ (a : α), 1 < count a tl → r a a) → (∀ (a : α), a ∈ tl → ∀ (b : α), b ∈ tl → a ≠ b → r a b) → Pairwise r tl
hr : ∀ (a : α), 1 < count a (hd :: tl) → r a a
h : ∀ (a : α), a ∈ hd :: tl → ∀ (b : α), b ∈ hd :: tl → a ≠ b → r a b
⊢ ∀ (a' : α), a' ∈ tl → r hd a'
intro x hx
case pos
α : Type u_1
β : Type ?u.40515
R S T : α → α → Prop
a : α
l✝ : List α
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
hd : α
tl : List α
IH : (∀ (a : α), 1 < count a tl → r a a) → (∀ (a : α), a ∈ tl → ∀ (b : α), b ∈ tl → a ≠ b → r a b) → Pairwise r tl
hr : ∀ (a : α), 1 < count a (hd :: tl) → r a a
h : ∀ (a : α), a ∈ hd :: tl → ∀ (b : α), b ∈ hd :: tl → a ≠ b → r a b
x : α
hx : x ∈ tl
H : hd = x
⊢ r hd x

case neg
α : Type u_1
β : Type ?u.40515
R S T : α → α → Prop
a : α
l✝ : List α
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
hd : α
tl : List α
IH : (∀ (a : α), 1 < count a tl → r a a) → (∀ (a : α), a ∈ tl → ∀ (b : α), b ∈ tl → a ≠ b → r a b) → Pairwise r tl
hr : ∀ (a : α), 1 < count a (hd :: tl) → r a a
h : ∀ (a : α), a ∈ hd :: tl → ∀ (b : α), b ∈ hd :: tl → a ≠ b → r a b
x : α
hx : x ∈ tl
H : ¬hd = x
⊢ r hd x
case cons.left
α : Type u_1
β : Type ?u.40515
R S T : α → α → Prop
a : α
l✝ : List α
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
hd : α
tl : List α
IH : (∀ (a : α), 1 < count a tl → r a a) → (∀ (a : α), a ∈ tl → ∀ (b : α), b ∈ tl → a ≠ b → r a b) → Pairwise r tl
hr : ∀ (a : α), 1 < count a (hd :: tl) → r a a
h : ∀ (a : α), a ∈ hd :: tl → ∀ (b : α), b ∈ hd :: tl → a ≠ b → r a b
x : α
hx : x ∈ tl
⊢ r hd x
by_cases H : hd = x
case pos
α : Type u_1
β : Type ?u.40515
R S T : α → α → Prop
a : α
l✝ : List α
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
hd : α
tl : List α
IH : (∀ (a : α), 1 < count a tl → r a a) → (∀ (a : α), a ∈ tl → ∀ (b : α), b ∈ tl → a ≠ b → r a b) → Pairwise r tl
hr : ∀ (a : α), 1 < count a (hd :: tl) → r a a
h : ∀ (a : α), a ∈ hd :: tl → ∀ (b : α), b ∈ hd :: tl → a ≠ b → r a b
x : α
hx : x ∈ tl
H : hd = x
⊢ r x x
case pos
α : Type u_1
β : Type ?u.40515
R S T : α → α → Prop
a : α
l✝ : List α
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
hd : α
tl : List α
IH : (∀ (a : α), 1 < count a tl → r a a) → (∀ (a : α), a ∈ tl → ∀ (b : α), b ∈ tl → a ≠ b → r a b) → Pairwise r tl
hr : ∀ (a : α), 1 < count a (hd :: tl) → r a a
h : ∀ (a : α), a ∈ hd :: tl → ∀ (b : α), b ∈ hd :: tl → a ≠ b → r a b
x : α
hx : x ∈ tl
H : hd = x
⊢ r hd x
rw [H]
case pos
α : Type u_1
β : Type ?u.40515
R S T : α → α → Prop
a : α
l✝ : List α
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
hd : α
tl : List α
IH : (∀ (a : α), 1 < count a tl → r a a) → (∀ (a : α), a ∈ tl → ∀ (b : α), b ∈ tl → a ≠ b → r a b) → Pairwise r tl
hr : ∀ (a : α), 1 < count a (hd :: tl) → r a a
h : ∀ (a : α), a ∈ hd :: tl → ∀ (b : α), b ∈ hd :: tl → a ≠ b → r a b
x : α
hx : x ∈ tl
H : hd = x
⊢ 1 < count x (hd :: tl)
case pos
α : Type u_1
β : Type ?u.40515
R S T : α → α → Prop
a : α
l✝ : List α
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
hd : α
tl : List α
IH : (∀ (a : α), 1 < count a tl → r a a) → (∀ (a : α), a ∈ tl → ∀ (b : α), b ∈ tl → a ≠ b → r a b) → Pairwise r tl
hr : ∀ (a : α), 1 < count a (hd :: tl) → r a a
h : ∀ (a : α), a ∈ hd :: tl → ∀ (b : α), b ∈ hd :: tl → a ≠ b → r a b
x : α
hx : x ∈ tl
H : hd = x
⊢ r x x
refine' hr _ _
no goals
case pos
α : Type u_1
β : Type ?u.40515
R S T : α → α → Prop
a : α
l✝ : List α
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
hd : α
tl : List α
IH : (∀ (a : α), 1 < count a tl → r a a) → (∀ (a : α), a ∈ tl → ∀ (b : α), b ∈ tl → a ≠ b → r a b) → Pairwise r tl
hr : ∀ (a : α), 1 < count a (hd :: tl) → r a a
h : ∀ (a : α), a ∈ hd :: tl → ∀ (b : α), b ∈ hd :: tl → a ≠ b → r a b
x : α
hx : x ∈ tl
H : hd = x
⊢ 1 < count x (hd :: tl)
simpa [count_cons, H, Nat.succ_lt_succ_iff, count_pos] using hx
no goals
case neg
α : Type u_1
β : Type ?u.40515
R S T : α → α → Prop
a : α
l✝ : List α
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
hd : α
tl : List α
IH : (∀ (a : α), 1 < count a tl → r a a) → (∀ (a : α), a ∈ tl → ∀ (b : α), b ∈ tl → a ≠ b → r a b) → Pairwise r tl
hr : ∀ (a : α), 1 < count a (hd :: tl) → r a a
h : ∀ (a : α), a ∈ hd :: tl → ∀ (b : α), b ∈ hd :: tl → a ≠ b → r a b
x : α
hx : x ∈ tl
H : ¬hd = x
⊢ r hd x
exact h hd (mem_cons_self _ _) x (mem_cons_of_mem _ hx) H
case cons.right.refine'_1
α : Type u_1
β : Type ?u.40515
R S T : α → α → Prop
a : α
l✝ : List α
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
hd : α
tl : List α
IH : (∀ (a : α), 1 < count a tl → r a a) → (∀ (a : α), a ∈ tl → ∀ (b : α), b ∈ tl → a ≠ b → r a b) → Pairwise r tl
hr : ∀ (a : α), 1 < count a (hd :: tl) → r a a
h : ∀ (a : α), a ∈ hd :: tl → ∀ (b : α), b ∈ hd :: tl → a ≠ b → r a b
⊢ ∀ (a : α), 1 < count a tl → r a a

case cons.right.refine'_2
α : Type u_1
β : Type ?u.40515
R S T : α → α → Prop
a : α
l✝ : List α
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
hd : α
tl : List α
IH : (∀ (a : α), 1 < count a tl → r a a) → (∀ (a : α), a ∈ tl → ∀ (b : α), b ∈ tl → a ≠ b → r a b) → Pairwise r tl
hr : ∀ (a : α), 1 < count a (hd :: tl) → r a a
h : ∀ (a : α), a ∈ hd :: tl → ∀ (b : α), b ∈ hd :: tl → a ≠ b → r a b
⊢ ∀ (a : α), a ∈ tl → ∀ (b : α), b ∈ tl → a ≠ b → r a b
case cons.right
α : Type u_1
β : Type ?u.40515
R S T : α → α → Prop
a : α
l✝ : List α
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
hd : α
tl : List α
IH : (∀ (a : α), 1 < count a tl → r a a) → (∀ (a : α), a ∈ tl → ∀ (b : α), b ∈ tl → a ≠ b → r a b) → Pairwise r tl
hr : ∀ (a : α), 1 < count a (hd :: tl) → r a a
h : ∀ (a : α), a ∈ hd :: tl → ∀ (b : α), b ∈ hd :: tl → a ≠ b → r a b
⊢ Pairwise r tl
refine' IH _ _
case cons.right.refine'_1
α : Type u_1
β : Type ?u.40515
R S T : α → α → Prop
a : α
l✝ : List α
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
hd : α
tl : List α
IH : (∀ (a : α), 1 < count a tl → r a a) → (∀ (a : α), a ∈ tl → ∀ (b : α), b ∈ tl → a ≠ b → r a b) → Pairwise r tl
hr : ∀ (a : α), 1 < count a (hd :: tl) → r a a
h : ∀ (a : α), a ∈ hd :: tl → ∀ (b : α), b ∈ hd :: tl → a ≠ b → r a b
x : α
hx : 1 < count x tl
⊢ r x x
case cons.right.refine'_1
α : Type u_1
β : Type ?u.40515
R S T : α → α → Prop
a : α
l✝ : List α
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
hd : α
tl : List α
IH : (∀ (a : α), 1 < count a tl → r a a) → (∀ (a : α), a ∈ tl → ∀ (b : α), b ∈ tl → a ≠ b → r a b) → Pairwise r tl
hr : ∀ (a : α), 1 < count a (hd :: tl) → r a a
h : ∀ (a : α), a ∈ hd :: tl → ∀ (b : α), b ∈ hd :: tl → a ≠ b → r a b
⊢ ∀ (a : α), 1 < count a tl → r a a
intro x hx
case cons.right.refine'_1
α : Type u_1
β : Type ?u.40515
R S T : α → α → Prop
a : α
l✝ : List α
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
hd : α
tl : List α
IH : (∀ (a : α), 1 < count a tl → r a a) → (∀ (a : α), a ∈ tl → ∀ (b : α), b ∈ tl → a ≠ b → r a b) → Pairwise r tl
hr : ∀ (a : α), 1 < count a (hd :: tl) → r a a
h : ∀ (a : α), a ∈ hd :: tl → ∀ (b : α), b ∈ hd :: tl → a ≠ b → r a b
x : α
hx : 1 < count x tl
⊢ 1 < count x (hd :: tl)
case cons.right.refine'_1
α : Type u_1
β : Type ?u.40515
R S T : α → α → Prop
a : α
l✝ : List α
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
hd : α
tl : List α
IH : (∀ (a : α), 1 < count a tl → r a a) → (∀ (a : α), a ∈ tl → ∀ (b : α), b ∈ tl → a ≠ b → r a b) → Pairwise r tl
hr : ∀ (a : α), 1 < count a (hd :: tl) → r a a
h : ∀ (a : α), a ∈ hd :: tl → ∀ (b : α), b ∈ hd :: tl → a ≠ b → r a b
x : α
hx : 1 < count x tl
⊢ r x x
refine' hr _ _
case cons.right.refine'_1
α : Type u_1
β : Type ?u.40515
R S T : α → α → Prop
a : α
l✝ : List α
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
hd : α
tl : List α
IH : (∀ (a : α), 1 < count a tl → r a a) → (∀ (a : α), a ∈ tl → ∀ (b : α), b ∈ tl → a ≠ b → r a b) → Pairwise r tl
hr : ∀ (a : α), 1 < count a (hd :: tl) → r a a
h : ∀ (a : α), a ∈ hd :: tl → ∀ (b : α), b ∈ hd :: tl → a ≠ b → r a b
x : α
hx : 1 < count x tl
⊢ 1 < if x = hd then succ (count x tl) else count x tl
case cons.right.refine'_1
α : Type u_1
β : Type ?u.40515
R S T : α → α → Prop
a : α
l✝ : List α
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
hd : α
tl : List α
IH : (∀ (a : α), 1 < count a tl → r a a) → (∀ (a : α), a ∈ tl → ∀ (b : α), b ∈ tl → a ≠ b → r a b) → Pairwise r tl
hr : ∀ (a : α), 1 < count a (hd :: tl) → r a a
h : ∀ (a : α), a ∈ hd :: tl → ∀ (b : α), b ∈ hd :: tl → a ≠ b → r a b
x : α
hx : 1 < count x tl
⊢ 1 < count x (hd :: tl)
rw [count_cons]
case cons.right.refine'_1.inl
α : Type u_1
β : Type ?u.40515
R S T : α → α → Prop
a : α
l✝ : List α
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
hd : α
tl : List α
IH : (∀ (a : α), 1 < count a tl → r a a) → (∀ (a : α), a ∈ tl → ∀ (b : α), b ∈ tl → a ≠ b → r a b) → Pairwise r tl
hr : ∀ (a : α), 1 < count a (hd :: tl) → r a a
h : ∀ (a : α), a ∈ hd :: tl → ∀ (b : α), b ∈ hd :: tl → a ≠ b → r a b
x : α
hx : 1 < count x tl
h✝ : x = hd
⊢ 1 < succ (count x tl)

case cons.right.refine'_1.inr
α : Type u_1
β : Type ?u.40515
R S T : α → α → Prop
a : α
l✝ : List α
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
hd : α
tl : List α
IH : (∀ (a : α), 1 < count a tl → r a a) → (∀ (a : α), a ∈ tl → ∀ (b : α), b ∈ tl → a ≠ b → r a b) → Pairwise r tl
hr : ∀ (a : α), 1 < count a (hd :: tl) → r a a
h : ∀ (a : α), a ∈ hd :: tl → ∀ (b : α), b ∈ hd :: tl → a ≠ b → r a b
x : α
hx : 1 < count x tl
h✝ : ¬x = hd
⊢ 1 < count x tl
case cons.right.refine'_1
α : Type u_1
β : Type ?u.40515
R S T : α → α → Prop
a : α
l✝ : List α
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
hd : α
tl : List α
IH : (∀ (a : α), 1 < count a tl → r a a) → (∀ (a : α), a ∈ tl → ∀ (b : α), b ∈ tl → a ≠ b → r a b) → Pairwise r tl
hr : ∀ (a : α), 1 < count a (hd :: tl) → r a a
h : ∀ (a : α), a ∈ hd :: tl → ∀ (b : α), b ∈ hd :: tl → a ≠ b → r a b
x : α
hx : 1 < count x tl
⊢ 1 < if x = hd then succ (count x tl) else count x tl
split_ifs
no goals
case cons.right.refine'_1.inl
α : Type u_1
β : Type ?u.40515
R S T : α → α → Prop
a : α
l✝ : List α
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
hd : α
tl : List α
IH : (∀ (a : α), 1 < count a tl → r a a) → (∀ (a : α), a ∈ tl → ∀ (b : α), b ∈ tl → a ≠ b → r a b) → Pairwise r tl
hr : ∀ (a : α), 1 < count a (hd :: tl) → r a a
h : ∀ (a : α), a ∈ hd :: tl → ∀ (b : α), b ∈ hd :: tl → a ≠ b → r a b
x : α
hx : 1 < count x tl
h✝ : x = hd
⊢ 1 < succ (count x tl)
exact hx.trans (Nat.lt_succ_self _)
no goals
case cons.right.refine'_1.inr
α : Type u_1
β : Type ?u.40515
R S T : α → α → Prop
a : α
l✝ : List α
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
hd : α
tl : List α
IH : (∀ (a : α), 1 < count a tl → r a a) → (∀ (a : α), a ∈ tl → ∀ (b : α), b ∈ tl → a ≠ b → r a b) → Pairwise r tl
hr : ∀ (a : α), 1 < count a (hd :: tl) → r a a
h : ∀ (a : α), a ∈ hd :: tl → ∀ (b : α), b ∈ hd :: tl → a ≠ b → r a b
x : α
hx : 1 < count x tl
h✝ : ¬x = hd
⊢ 1 < count x tl
exact hx
case cons.right.refine'_2
α : Type u_1
β : Type ?u.40515
R S T : α → α → Prop
a : α
l✝ : List α
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
hd : α
tl : List α
IH : (∀ (a : α), 1 < count a tl → r a a) → (∀ (a : α), a ∈ tl → ∀ (b : α), b ∈ tl → a ≠ b → r a b) → Pairwise r tl
hr : ∀ (a : α), 1 < count a (hd :: tl) → r a a
h : ∀ (a : α), a ∈ hd :: tl → ∀ (b : α), b ∈ hd :: tl → a ≠ b → r a b
x : α
hx : x ∈ tl
y : α
hy : y ∈ tl
⊢ x ≠ y → r x y
case cons.right.refine'_2
α : Type u_1
β : Type ?u.40515
R S T : α → α → Prop
a : α
l✝ : List α
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
hd : α
tl : List α
IH : (∀ (a : α), 1 < count a tl → r a a) → (∀ (a : α), a ∈ tl → ∀ (b : α), b ∈ tl → a ≠ b → r a b) → Pairwise r tl
hr : ∀ (a : α), 1 < count a (hd :: tl) → r a a
h : ∀ (a : α), a ∈ hd :: tl → ∀ (b : α), b ∈ hd :: tl → a ≠ b → r a b
⊢ ∀ (a : α), a ∈ tl → ∀ (b : α), b ∈ tl → a ≠ b → r a b
intro x hx y hy
no goals
case cons.right.refine'_2
α : Type u_1
β : Type ?u.40515
R S T : α → α → Prop
a : α
l✝ : List α
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
hd : α
tl : List α
IH : (∀ (a : α), 1 < count a tl → r a a) → (∀ (a : α), a ∈ tl → ∀ (b : α), b ∈ tl → a ≠ b → r a b) → Pairwise r tl
hr : ∀ (a : α), 1 < count a (hd :: tl) → r a a
h : ∀ (a : α), a ∈ hd :: tl → ∀ (b : α), b ∈ hd :: tl → a ≠ b → r a b
x : α
hx : x ∈ tl
y : α
hy : y ∈ tl
⊢ x ≠ y → r x y
exact h x (mem_cons_of_mem _ hx) y (mem_cons_of_mem _ hy)