Theorem: Colex.sdiff_lt_sdiff_iff_lt
File: Mathlib/Combinatorics/Colex.lean

tactic: rw [Colex.lt_def, Colex.lt_def]
state_before: α : Type u_1
inst✝¹ : LT α
inst✝ : DecidableEq α
A B : Finset α
⊢ toColex (A \ B) < toColex (B \ A) ↔ toColex A < toColex B

tactic: apply exists_congr
state_before: α : Type u_1
inst✝¹ : LT α
inst✝ : DecidableEq α
A B : Finset α
⊢ (∃ k, (∀ {x : α}, k < x → (x ∈ A \ B ↔ x ∈ B \ A)) ∧ ¬k ∈ A \ B ∧ k ∈ B \ A) ↔
    ∃ k, (∀ {x : α}, k < x → (x ∈ A ↔ x ∈ B)) ∧ ¬k ∈ A ∧ k ∈ B

tactic: intro k
state_before: case h
α : Type u_1
inst✝¹ : LT α
inst✝ : DecidableEq α
A B : Finset α
⊢ ∀ (a : α),
    (∀ {x : α}, a < x → (x ∈ A \ B ↔ x ∈ B \ A)) ∧ ¬a ∈ A \ B ∧ a ∈ B \ A ↔
      (∀ {x : α}, a < x → (x ∈ A ↔ x ∈ B)) ∧ ¬a ∈ A ∧ a ∈ B

tactic: simp only [mem_sdiff, not_and, not_not]
state_before: case h
α : Type u_1
inst✝¹ : LT α
inst✝ : DecidableEq α
A B : Finset α
k : α
⊢ (∀ {x : α}, k < x → (x ∈ A \ B ↔ x ∈ B \ A)) ∧ ¬k ∈ A \ B ∧ k ∈ B \ A ↔
    (∀ {x : α}, k < x → (x ∈ A ↔ x ∈ B)) ∧ ¬k ∈ A ∧ k ∈ B

tactic: constructor
state_before: case h
α : Type u_1
inst✝¹ : LT α
inst✝ : DecidableEq α
A B : Finset α
k : α
⊢ (∀ {x : α}, k < x → (x ∈ A ∧ ¬x ∈ B ↔ x ∈ B ∧ ¬x ∈ A)) ∧ (k ∈ A → k ∈ B) ∧ k ∈ B ∧ ¬k ∈ A ↔
    (∀ {x : α}, k < x → (x ∈ A ↔ x ∈ B)) ∧ ¬k ∈ A ∧ k ∈ B

tactic: rintro ⟨z, kAB, kB, kA⟩
state_before: case h.mp
α : Type u_1
inst✝¹ : LT α
inst✝ : DecidableEq α
A B : Finset α
k : α
⊢ (∀ {x : α}, k < x → (x ∈ A ∧ ¬x ∈ B ↔ x ∈ B ∧ ¬x ∈ A)) ∧ (k ∈ A → k ∈ B) ∧ k ∈ B ∧ ¬k ∈ A →
    (∀ {x : α}, k < x → (x ∈ A ↔ x ∈ B)) ∧ ¬k ∈ A ∧ k ∈ B

tactic: refine' ⟨_, kA, kB⟩
state_before: case h.mp.intro.intro.intro
α : Type u_1
inst✝¹ : LT α
inst✝ : DecidableEq α
A B : Finset α
k : α
z : ∀ {x : α}, k < x → (x ∈ A ∧ ¬x ∈ B ↔ x ∈ B ∧ ¬x ∈ A)
kAB : k ∈ A → k ∈ B
kB : k ∈ B
kA : ¬k ∈ A
⊢ (∀ {x : α}, k < x → (x ∈ A ↔ x ∈ B)) ∧ ¬k ∈ A ∧ k ∈ B

tactic: intro x hx
state_before: case h.mp.intro.intro.intro
α : Type u_1
inst✝¹ : LT α
inst✝ : DecidableEq α
A B : Finset α
k : α
z : ∀ {x : α}, k < x → (x ∈ A ∧ ¬x ∈ B ↔ x ∈ B ∧ ¬x ∈ A)
kAB : k ∈ A → k ∈ B
kB : k ∈ B
kA : ¬k ∈ A
⊢ ∀ {x : α}, k < x → (x ∈ A ↔ x ∈ B)

tactic: specialize z hx
state_before: case h.mp.intro.intro.intro
α : Type u_1
inst✝¹ : LT α
inst✝ : DecidableEq α
A B : Finset α
k : α
z : ∀ {x : α}, k < x → (x ∈ A ∧ ¬x ∈ B ↔ x ∈ B ∧ ¬x ∈ A)
kAB : k ∈ A → k ∈ B
kB : k ∈ B
kA : ¬k ∈ A
x : α
hx : k < x
⊢ x ∈ A ↔ x ∈ B

tactic: tauto
state_before: case h.mp.intro.intro.intro
α : Type u_1
inst✝¹ : LT α
inst✝ : DecidableEq α
A B : Finset α
k : α
kAB : k ∈ A → k ∈ B
kB : k ∈ B
kA : ¬k ∈ A
x : α
hx : k < x
z : x ∈ A ∧ ¬x ∈ B ↔ x ∈ B ∧ ¬x ∈ A
⊢ x ∈ A ↔ x ∈ B

tactic: rintro ⟨z, kA, kB⟩
state_before: case h.mpr
α : Type u_1
inst✝¹ : LT α
inst✝ : DecidableEq α
A B : Finset α
k : α
⊢ (∀ {x : α}, k < x → (x ∈ A ↔ x ∈ B)) ∧ ¬k ∈ A ∧ k ∈ B →
    (∀ {x : α}, k < x → (x ∈ A ∧ ¬x ∈ B ↔ x ∈ B ∧ ¬x ∈ A)) ∧ (k ∈ A → k ∈ B) ∧ k ∈ B ∧ ¬k ∈ A

tactic: refine' ⟨_, fun _ => kB, kB, kA⟩
state_before: case h.mpr.intro.intro
α : Type u_1
inst✝¹ : LT α
inst✝ : DecidableEq α
A B : Finset α
k : α
z : ∀ {x : α}, k < x → (x ∈ A ↔ x ∈ B)
kA : ¬k ∈ A
kB : k ∈ B
⊢ (∀ {x : α}, k < x → (x ∈ A ∧ ¬x ∈ B ↔ x ∈ B ∧ ¬x ∈ A)) ∧ (k ∈ A → k ∈ B) ∧ k ∈ B ∧ ¬k ∈ A

tactic: intro x hx
state_before: case h.mpr.intro.intro
α : Type u_1
inst✝¹ : LT α
inst✝ : DecidableEq α
A B : Finset α
k : α
z : ∀ {x : α}, k < x → (x ∈ A ↔ x ∈ B)
kA : ¬k ∈ A
kB : k ∈ B
⊢ ∀ {x : α}, k < x → (x ∈ A ∧ ¬x ∈ B ↔ x ∈ B ∧ ¬x ∈ A)

tactic: rw [z hx]
state_before: case h.mpr.intro.intro
α : Type u_1
inst✝¹ : LT α
inst✝ : DecidableEq α
A B : Finset α
k : α
z : ∀ {x : α}, k < x → (x ∈ A ↔ x ∈ B)
kA : ¬k ∈ A
kB : k ∈ B
x : α
hx : k < x
⊢ x ∈ A ∧ ¬x ∈ B ↔ x ∈ B ∧ ¬x ∈ A