Theorem: commute_ofSubtype_disjoint (Jordan/ConjClassCount.lean)

State before:
α : Type u_1
inst✝³ : DecidableEq α
inst✝² : Fintype α
p q : α → Prop
inst✝¹ : DecidablePred p
inst✝ : DecidablePred q
hpq : ∀ (a : α), ¬(p a ∧ q a)
x : Equiv.Perm (Subtype p)
y : Equiv.Perm (Subtype q)
⊢ Commute (Equiv.Perm.ofSubtype x) (Equiv.Perm.ofSubtype y)
Tactic:
apply Equiv.Perm.Disjoint.commute
State after:
case h
α : Type u_1
inst✝³ : DecidableEq α
inst✝² : Fintype α
p q : α → Prop
inst✝¹ : DecidablePred p
inst✝ : DecidablePred q
hpq : ∀ (a : α), ¬(p a ∧ q a)
x : Equiv.Perm (Subtype p)
y : Equiv.Perm (Subtype q)
⊢ Equiv.Perm.Disjoint (Equiv.Perm.ofSubtype x) (Equiv.Perm.ofSubtype y)

State before:
case h
α : Type u_1
inst✝³ : DecidableEq α
inst✝² : Fintype α
p q : α → Prop
inst✝¹ : DecidablePred p
inst✝ : DecidablePred q
hpq : ∀ (a : α), ¬(p a ∧ q a)
x : Equiv.Perm (Subtype p)
y : Equiv.Perm (Subtype q)
⊢ Equiv.Perm.Disjoint (Equiv.Perm.ofSubtype x) (Equiv.Perm.ofSubtype y)
Tactic:
intro a
State after:
case h
α : Type u_1
inst✝³ : DecidableEq α
inst✝² : Fintype α
p q : α → Prop
inst✝¹ : DecidablePred p
inst✝ : DecidablePred q
hpq : ∀ (a : α), ¬(p a ∧ q a)
x : Equiv.Perm (Subtype p)
y : Equiv.Perm (Subtype q)
a : α
⊢ (Equiv.Perm.ofSubtype x) a = a ∨ (Equiv.Perm.ofSubtype y) a = a

State before:
case h
α : Type u_1
inst✝³ : DecidableEq α
inst✝² : Fintype α
p q : α → Prop
inst✝¹ : DecidablePred p
inst✝ : DecidablePred q
hpq : ∀ (a : α), ¬(p a ∧ q a)
x : Equiv.Perm (Subtype p)
y : Equiv.Perm (Subtype q)
a : α
⊢ (Equiv.Perm.ofSubtype x) a = a ∨ (Equiv.Perm.ofSubtype y) a = a
Tactic:
by_cases hx : p a
State after:
case pos
α : Type u_1
inst✝³ : DecidableEq α
inst✝² : Fintype α
p q : α → Prop
inst✝¹ : DecidablePred p
inst✝ : DecidablePred q
hpq : ∀ (a : α), ¬(p a ∧ q a)
x : Equiv.Perm (Subtype p)
y : Equiv.Perm (Subtype q)
a : α
hx : p a
⊢ (Equiv.Perm.ofSubtype x) a = a ∨ (Equiv.Perm.ofSubtype y) a = a

case neg
α : Type u_1
inst✝³ : DecidableEq α
inst✝² : Fintype α
p q : α → Prop
inst✝¹ : DecidablePred p
inst✝ : DecidablePred q
hpq : ∀ (a : α), ¬(p a ∧ q a)
x : Equiv.Perm (Subtype p)
y : Equiv.Perm (Subtype q)
a : α
hx : ¬p a
⊢ (Equiv.Perm.ofSubtype x) a = a ∨ (Equiv.Perm.ofSubtype y) a = a

State before:
case pos
α : Type u_1
inst✝³ : DecidableEq α
inst✝² : Fintype α
p q : α → Prop
inst✝¹ : DecidablePred p
inst✝ : DecidablePred q
hpq : ∀ (a : α), ¬(p a ∧ q a)
x : Equiv.Perm (Subtype p)
y : Equiv.Perm (Subtype q)
a : α
hx : p a
⊢ (Equiv.Perm.ofSubtype x) a = a ∨ (Equiv.Perm.ofSubtype y) a = a
Tactic:
rw [Equiv.Perm.ofSubtype_apply_of_not_mem y]
State after:
case pos
α : Type u_1
inst✝³ : DecidableEq α
inst✝² : Fintype α
p q : α → Prop
inst✝¹ : DecidablePred p
inst✝ : DecidablePred q
hpq : ∀ (a : α), ¬(p a ∧ q a)
x : Equiv.Perm (Subtype p)
y : Equiv.Perm (Subtype q)
a : α
hx : p a
⊢ (Equiv.Perm.ofSubtype x) a = a ∨ a = a

case pos
α : Type u_1
inst✝³ : DecidableEq α
inst✝² : Fintype α
p q : α → Prop
inst✝¹ : DecidablePred p
inst✝ : DecidablePred q
hpq : ∀ (a : α), ¬(p a ∧ q a)
x : Equiv.Perm (Subtype p)
y : Equiv.Perm (Subtype q)
a : α
hx : p a
⊢ ¬q a

State before:
case pos
α : Type u_1
inst✝³ : DecidableEq α
inst✝² : Fintype α
p q : α → Prop
inst✝¹ : DecidablePred p
inst✝ : DecidablePred q
hpq : ∀ (a : α), ¬(p a ∧ q a)
x : Equiv.Perm (Subtype p)
y : Equiv.Perm (Subtype q)
a : α
hx : p a
⊢ (Equiv.Perm.ofSubtype x) a = a ∨ a = a

case pos
α : Type u_1
inst✝³ : DecidableEq α
inst✝² : Fintype α
p q : α → Prop
inst✝¹ : DecidablePred p
inst✝ : DecidablePred q
hpq : ∀ (a : α), ¬(p a ∧ q a)
x : Equiv.Perm (Subtype p)
y : Equiv.Perm (Subtype q)
a : α
hx : p a
⊢ ¬q a
Tactic:
apply Or.intro_right
State after:
case pos.h
α : Type u_1
inst✝³ : DecidableEq α
inst✝² : Fintype α
p q : α → Prop
inst✝¹ : DecidablePred p
inst✝ : DecidablePred q
hpq : ∀ (a : α), ¬(p a ∧ q a)
x : Equiv.Perm (Subtype p)
y : Equiv.Perm (Subtype q)
a : α
hx : p a
⊢ a = a

case pos
α : Type u_1
inst✝³ : DecidableEq α
inst✝² : Fintype α
p q : α → Prop
inst✝¹ : DecidablePred p
inst✝ : DecidablePred q
hpq : ∀ (a : α), ¬(p a ∧ q a)
x : Equiv.Perm (Subtype p)
y : Equiv.Perm (Subtype q)
a : α
hx : p a
⊢ ¬q a

State before:
case pos.h
α : Type u_1
inst✝³ : DecidableEq α
inst✝² : Fintype α
p q : α → Prop
inst✝¹ : DecidablePred p
inst✝ : DecidablePred q
hpq : ∀ (a : α), ¬(p a ∧ q a)
x : Equiv.Perm (Subtype p)
y : Equiv.Perm (Subtype q)
a : α
hx : p a
⊢ a = a

case pos
α : Type u_1
inst✝³ : DecidableEq α
inst✝² : Fintype α
p q : α → Prop
inst✝¹ : DecidablePred p
inst✝ : DecidablePred q
hpq : ∀ (a : α), ¬(p a ∧ q a)
x : Equiv.Perm (Subtype p)
y : Equiv.Perm (Subtype q)
a : α
hx : p a
⊢ ¬q a
Tactic:
rfl
State after:
case pos
α : Type u_1
inst✝³ : DecidableEq α
inst✝² : Fintype α
p q : α → Prop
inst✝¹ : DecidablePred p
inst✝ : DecidablePred q
hpq : ∀ (a : α), ¬(p a ∧ q a)
x : Equiv.Perm (Subtype p)
y : Equiv.Perm (Subtype q)
a : α
hx : p a
⊢ ¬q a

State before:
case pos
α : Type u_1
inst✝³ : DecidableEq α
inst✝² : Fintype α
p q : α → Prop
inst✝¹ : DecidablePred p
inst✝ : DecidablePred q
hpq : ∀ (a : α), ¬(p a ∧ q a)
x : Equiv.Perm (Subtype p)
y : Equiv.Perm (Subtype q)
a : α
hx : p a
⊢ ¬q a
Tactic:
exact not_and.mp (hpq a) hx
State after:
no goals

State before:
case neg
α : Type u_1
inst✝³ : DecidableEq α
inst✝² : Fintype α
p q : α → Prop
inst✝¹ : DecidablePred p
inst✝ : DecidablePred q
hpq : ∀ (a : α), ¬(p a ∧ q a)
x : Equiv.Perm (Subtype p)
y : Equiv.Perm (Subtype q)
a : α
hx : ¬p a
⊢ (Equiv.Perm.ofSubtype x) a = a ∨ (Equiv.Perm.ofSubtype y) a = a
Tactic:
rw [Equiv.Perm.ofSubtype_apply_of_not_mem x hx]
State after:
case neg
α : Type u_1
inst✝³ : DecidableEq α
inst✝² : Fintype α
p q : α → Prop
inst✝¹ : DecidablePred p
inst✝ : DecidablePred q
hpq : ∀ (a : α), ¬(p a ∧ q a)
x : Equiv.Perm (Subtype p)
y : Equiv.Perm (Subtype q)
a : α
hx : ¬p a
⊢ a = a ∨ (Equiv.Perm.ofSubtype y) a = a

State before:
case neg
α : Type u_1
inst✝³ : DecidableEq α
inst✝² : Fintype α
p q : α → Prop
inst✝¹ : DecidablePred p
inst✝ : DecidablePred q
hpq : ∀ (a : α), ¬(p a ∧ q a)
x : Equiv.Perm (Subtype p)
y : Equiv.Perm (Subtype q)
a : α
hx : ¬p a
⊢ a = a ∨ (Equiv.Perm.ofSubtype y) a = a
Tactic:
apply Or.intro_left
State after:
case neg.h
α : Type u_1
inst✝³ : DecidableEq α
inst✝² : Fintype α
p q : α → Prop
inst✝¹ : DecidablePred p
inst✝ : DecidablePred q
hpq : ∀ (a : α), ¬(p a ∧ q a)
x : Equiv.Perm (Subtype p)
y : Equiv.Perm (Subtype q)
a : α
hx : ¬p a
⊢ a = a

State before:
case neg.h
α : Type u_1
inst✝³ : DecidableEq α
inst✝² : Fintype α
p q : α → Prop
inst✝¹ : DecidablePred p
inst✝ : DecidablePred q
hpq : ∀ (a : α), ¬(p a ∧ q a)
x : Equiv.Perm (Subtype p)
y : Equiv.Perm (Subtype q)
a : α
hx : ¬p a
⊢ a = a
Tactic:
rfl
State after:
no goals