Theorem: Ordinal.nmul_comm
File: Mathlib/SetTheory/Ordinal/NaturalOps.lean

tactic: rw [nmul, nmul]
state_before: a✝ b✝ c d : Ordinal.{u}
a b : Ordinal.{u_1}
⊢ a ⨳ b = b ⨳ a
state_after: a✝ b✝ c d : Ordinal.{u}
a b : Ordinal.{u_1}
⊢ sInf {c | ∀ a' < a, ∀ b' < b, a' ⨳ b ♯ a ⨳ b' < c ♯ a' ⨳ b'} =
    sInf {c | ∀ a' < b, ∀ b' < a, a' ⨳ a ♯ b ⨳ b' < c ♯ a' ⨳ b'}

tactic: congr
state_before: a✝ b✝ c d : Ordinal.{u}
a b : Ordinal.{u_1}
⊢ sInf {c | ∀ a' < a, ∀ b' < b, a' ⨳ b ♯ a ⨳ b' < c ♯ a' ⨳ b'} =
    sInf {c | ∀ a' < b, ∀ b' < a, a' ⨳ a ♯ b ⨳ b' < c ♯ a' ⨳ b'}
state_after: case e_a
a✝ b✝ c d : Ordinal.{u}
a b : Ordinal.{u_1}
⊢ {c | ∀ a' < a, ∀ b' < b, a' ⨳ b ♯ a ⨳ b' < c ♯ a' ⨳ b'} = {c | ∀ a' < b, ∀ b' < a, a' ⨳ a ♯ b ⨳ b' < c ♯ a' ⨳ b'}

tactic: ext x
state_before: case e_a
a✝ b✝ c d : Ordinal.{u}
a b : Ordinal.{u_1}
⊢ {c | ∀ a' < a, ∀ b' < b, a' ⨳ b ♯ a ⨳ b' < c ♯ a' ⨳ b'} = {c | ∀ a' < b, ∀ b' < a, a' ⨳ a ♯ b ⨳ b' < c ♯ a' ⨳ b'}
state_after: case e_a.h
a✝ b✝ c d : Ordinal.{u}
a b x : Ordinal.{u_1}
⊢ x ∈ {c | ∀ a' < a, ∀ b' < b, a' ⨳ b ♯ a ⨳ b' < c ♯ a' ⨳ b'} ↔
    x ∈ {c | ∀ a' < b, ∀ b' < a, a' ⨳ a ♯ b ⨳ b' < c ♯ a' ⨳ b'}

tactic: constructor <;> intro H c hc d hd
state_before: case e_a.h
a✝ b✝ c d : Ordinal.{u}
a b x : Ordinal.{u_1}
⊢ x ∈ {c | ∀ a' < a, ∀ b' < b, a' ⨳ b ♯ a ⨳ b' < c ♯ a' ⨳ b'} ↔
    x ∈ {c | ∀ a' < b, ∀ b' < a, a' ⨳ a ♯ b ⨳ b' < c ♯ a' ⨳ b'}
state_after: case e_a.h.mp
a✝ b✝ c✝ d✝ : Ordinal.{u}
a b x : Ordinal.{u_1}
H : x ∈ {c | ∀ a' < a, ∀ b' < b, a' ⨳ b ♯ a ⨳ b' < c ♯ a' ⨳ b'}
c : Ordinal.{u_1}
hc : c < b
d : Ordinal.{u_1}
hd : d < a
⊢ c ⨳ a ♯ b ⨳ d < x ♯ c ⨳ d

case e_a.h.mpr
a✝ b✝ c✝ d✝ : Ordinal.{u}
a b x : Ordinal.{u_1}
H : x ∈ {c | ∀ a' < b, ∀ b' < a, a' ⨳ a ♯ b ⨳ b' < c ♯ a' ⨳ b'}
c : Ordinal.{u_1}
hc : c < a
d : Ordinal.{u_1}
hd : d < b
⊢ c ⨳ b ♯ a ⨳ d < x ♯ c ⨳ d

tactic: rw [nadd_comm, ← nmul_comm d b, ← nmul_comm a c, ← nmul_comm d]
state_before: case e_a.h.mp
a✝ b✝ c✝ d✝ : Ordinal.{u}
a b x : Ordinal.{u_1}
H : x ∈ {c | ∀ a' < a, ∀ b' < b, a' ⨳ b ♯ a ⨳ b' < c ♯ a' ⨳ b'}
c : Ordinal.{u_1}
hc : c < b
d : Ordinal.{u_1}
hd : d < a
⊢ c ⨳ a ♯ b ⨳ d < x ♯ c ⨳ d
state_after: case e_a.h.mp
a✝ b✝ c✝ d✝ : Ordinal.{u}
a b x : Ordinal.{u_1}
H : x ∈ {c | ∀ a' < a, ∀ b' < b, a' ⨳ b ♯ a ⨳ b' < c ♯ a' ⨳ b'}
c : Ordinal.{u_1}
hc : c < b
d : Ordinal.{u_1}
hd : d < a
⊢ d ⨳ b ♯ a ⨳ c < x ♯ d ⨳ c

tactic: exact H _ hd _ hc
state_before: case e_a.h.mp
a✝ b✝ c✝ d✝ : Ordinal.{u}
a b x : Ordinal.{u_1}
H : x ∈ {c | ∀ a' < a, ∀ b' < b, a' ⨳ b ♯ a ⨳ b' < c ♯ a' ⨳ b'}
c : Ordinal.{u_1}
hc : c < b
d : Ordinal.{u_1}
hd : d < a
⊢ d ⨳ b ♯ a ⨳ c < x ♯ d ⨳ c
state_after: no goals

tactic: rw [nadd_comm, nmul_comm a d, nmul_comm c, nmul_comm c]
state_before: case e_a.h.mpr
a✝ b✝ c✝ d✝ : Ordinal.{u}
a b x : Ordinal.{u_1}
H : x ∈ {c | ∀ a' < b, ∀ b' < a, a' ⨳ a ♯ b ⨳ b' < c ♯ a' ⨳ b'}
c : Ordinal.{u_1}
hc : c < a
d : Ordinal.{u_1}
hd : d < b
⊢ c ⨳ b ♯ a ⨳ d < x ♯ c ⨳ d
state_after: case e_a.h.mpr
a✝ b✝ c✝ d✝ : Ordinal.{u}
a b x : Ordinal.{u_1}
H : x ∈ {c | ∀ a' < b, ∀ b' < a, a' ⨳ a ♯ b ⨳ b' < c ♯ a' ⨳ b'}
c : Ordinal.{u_1}
hc : c < a
d : Ordinal.{u_1}
hd : d < b
⊢ d ⨳ a ♯ b ⨳ c < x ♯ d ⨳ c

tactic: exact H _ hd _ hc
state_before: case e_a.h.mpr
a✝ b✝ c✝ d✝ : Ordinal.{u}
a b x : Ordinal.{u_1}
H : x ∈ {c | ∀ a' < b, ∀ b' < a, a' ⨳ a ♯ b ⨳ b' < c ♯ a' ⨳ b'}
c : Ordinal.{u_1}
hc : c < a
d : Ordinal.{u_1}
hd : d < b
⊢ d ⨳ a ♯ b ⨳ c < x ♯ d ⨳ c
state_after: no goals