Theorem: CategoryTheory.ActionCategory.curry_apply_left
File: Mathlib/CategoryTheory/Action.lean

Proof steps:
state_before: M : Type u_1
inst✝⁴ : Monoid M
X : Type u
inst✝³ : MulAction M X
x : X
G : Type u_2
inst✝² : Group G
inst✝¹ : MulAction G X
H : Type u_3
inst✝ : Group H
F : ActionCategory G X ⥤ SingleObj H
⊢ ∀ {a b : ActionCategory G X} {f : a ⟶ b}, F.map f = F.map (homOfPair b.back ↑f)
state_after: case hyp
M : Type u_1
inst✝⁴ : Monoid M
X : Type u
inst✝³ : MulAction M X
x : X
G : Type u_2
inst✝² : Group G
inst✝¹ : MulAction G X
H : Type u_3
inst✝ : Group H
F : ActionCategory G X ⥤ SingleObj H
⊢ ∀ (t : X) (g : G), F.map (homOfPair t g) = F.map (homOfPair (ActionCategory.back ⟨(), t⟩) ↑(homOfPair t g))
tactic: apply ActionCategory.cases
state_before: case hyp
M : Type u_1
inst✝⁴ : Monoid M
X : Type u
inst✝³ : MulAction M X
x : X
G : Type u_2
inst✝² : Group G
inst✝¹ : MulAction G X
H : Type u_3
inst✝ : Group H
F : ActionCategory G X ⥤ SingleObj H
⊢ ∀ (t : X) (g : G), F.map (homOfPair t g) = F.map (homOfPair (ActionCategory.back ⟨(), t⟩) ↑(homOfPair t g))
state_after: case hyp
M : Type u_1
inst✝⁴ : Monoid M
X : Type u
inst✝³ : MulAction M X
x : X
G : Type u_2
inst✝² : Group G
inst✝¹ : MulAction G X
H : Type u_3
inst✝ : Group H
F : ActionCategory G X ⥤ SingleObj H
t✝ : X
g✝ : G
⊢ F.map (homOfPair t✝ g✝) = F.map (homOfPair (ActionCategory.back ⟨(), t✝⟩) ↑(homOfPair t✝ g✝))
tactic: intros
state_before: case hyp
M : Type u_1
inst✝⁴ : Monoid M
X : Type u
inst✝³ : MulAction M X
x : X
G : Type u_2
inst✝² : Group G
inst✝¹ : MulAction G X
H : Type u_3
inst✝ : Group H
F : ActionCategory G X ⥤ SingleObj H
t✝ : X
g✝ : G
⊢ F.map (homOfPair t✝ g✝) = F.map (homOfPair (ActionCategory.back ⟨(), t✝⟩) ↑(homOfPair t✝ g✝))
state_after: no goals
tactic: rfl
state_before: M : Type u_1
inst✝⁴ : Monoid M
X : Type u
inst✝³ : MulAction M X
x : X
G : Type u_2
inst✝² : Group G
inst✝¹ : MulAction G X
H : Type u_3
inst✝ : Group H
F : ActionCategory G X ⥤ SingleObj H
F_map_eq : ∀ {a b : ActionCategory G X} {f : a ⟶ b}, F.map f = F.map (homOfPair b.back ↑f)
⊢ (fun g => { left := fun b => F.map (homOfPair b g), right := g }) 1 = 1
state_after: M : Type u_1
inst✝⁴ : Monoid M
X : Type u
inst✝³ : MulAction M X
x : X
G : Type u_2
inst✝² : Group G
inst✝¹ : MulAction G X
H : Type u_3
inst✝ : Group H
F : ActionCategory G X ⥤ SingleObj H
F_map_eq : ∀ {a b : ActionCategory G X} {f : a ⟶ b}, F.map f = F.map (homOfPair b.back ↑f)
⊢ { left := fun b => F.map (homOfPair b 1), right := 1 } = 1
tactic: dsimp
state_before: M : Type u_1
inst✝⁴ : Monoid M
X : Type u
inst✝³ : MulAction M X
x : X
G : Type u_2
inst✝² : Group G
inst✝¹ : MulAction G X
H : Type u_3
inst✝ : Group H
F : ActionCategory G X ⥤ SingleObj H
F_map_eq : ∀ {a b : ActionCategory G X} {f : a ⟶ b}, F.map f = F.map (homOfPair b.back ↑f)
⊢ { left := fun b => F.map (homOfPair b 1), right := 1 } = 1
state_after: case left
M : Type u_1
inst✝⁴ : Monoid M
X : Type u
inst✝³ : MulAction M X
x : X
G : Type u_2
inst✝² : Group G
inst✝¹ : MulAction G X
H : Type u_3
inst✝ : Group H
F : ActionCategory G X ⥤ SingleObj H
F_map_eq : ∀ {a b : ActionCategory G X} {f : a ⟶ b}, F.map f = F.map (homOfPair b.back ↑f)
⊢ { left := fun b => F.map (homOfPair b 1), right := 1 }.left = left 1

case right
M : Type u_1
inst✝⁴ : Monoid M
X : Type u
inst✝³ : MulAction M X
x : X
G : Type u_2
inst✝² : Group G
inst✝¹ : MulAction G X
H : Type u_3
inst✝ : Group H
F : ActionCategory G X ⥤ SingleObj H
F_map_eq : ∀ {a b : ActionCategory G X} {f : a ⟶ b}, F.map f = F.map (homOfPair b.back ↑f)
⊢ { left := fun b => F.map (homOfPair b 1), right := 1 }.right = right 1
tactic: ext1
state_before: case right
M : Type u_1
inst✝⁴ : Monoid M
X : Type u
inst✝³ : MulAction M X
x : X
G : Type u_2
inst✝² : Group G
inst✝¹ : MulAction G X
H : Type u_3
inst✝ : Group H
F : ActionCategory G X ⥤ SingleObj H
F_map_eq : ∀ {a b : ActionCategory G X} {f : a ⟶ b}, F.map f = F.map (homOfPair b.back ↑f)
⊢ { left := fun b => F.map (homOfPair b 1), right := 1 }.right = right 1
state_after: no goals
tactic: rfl
state_before: M : Type u_1
inst✝⁴ : Monoid M
X : Type u
inst✝³ : MulAction M X
x : X
G : Type u_2
inst✝² : Group G
inst✝¹ : MulAction G X
H : Type u_3
inst✝ : Group H
F : ActionCategory G X ⥤ SingleObj H
F_map_eq : ∀ {a b : ActionCategory G X} {f : a ⟶ b}, F.map f = F.map (homOfPair b.back ↑f)
⊢ ∀ (x y : G),
    { toFun := fun g => { left := fun b => F.map (homOfPair b g), right := g }, map_one' := ⋯ }.toFun (x * y) =
      { toFun := fun g => { left := fun b => F.map (homOfPair b g), right := g }, map_one' := ⋯ }.toFun x *
        { toFun := fun g => { left := fun b => F.map (homOfPair b g), right := g }, map_one' := ⋯ }.toFun y
state_after: M : Type u_1
inst✝⁴ : Monoid M
X : Type u
inst✝³ : MulAction M X
x : X
G : Type u_2
inst✝² : Group G
inst✝¹ : MulAction G X
H : Type u_3
inst✝ : Group H
F : ActionCategory G X ⥤ SingleObj H
F_map_eq : ∀ {a b : ActionCategory G X} {f : a ⟶ b}, F.map f = F.map (homOfPair b.back ↑f)
g h : G
⊢ { toFun := fun g => { left := fun b => F.map (homOfPair b g), right := g }, map_one' := ⋯ }.toFun (g * h) =
    { toFun := fun g => { left := fun b => F.map (homOfPair b g), right := g }, map_one' := ⋯ }.toFun g *
      { toFun := fun g => { left := fun b => F.map (homOfPair b g), right := g }, map_one' := ⋯ }.toFun h
tactic: intro g h
state_before: M : Type u_1
inst✝⁴ : Monoid M
X : Type u
inst✝³ : MulAction M X
x : X
G : Type u_2
inst✝² : Group G
inst✝¹ : MulAction G X
H : Type u_3
inst✝ : Group H
F : ActionCategory G X ⥤ SingleObj H
F_map_eq : ∀ {a b : ActionCategory G X} {f : a ⟶ b}, F.map f = F.map (homOfPair b.back ↑f)
g h : G
⊢ { toFun := fun g => { left := fun b => F.map (homOfPair b g), right := g }, map_one' := ⋯ }.toFun (g * h) =
    { toFun := fun g => { left := fun b => F.map (homOfPair b g), right := g }, map_one' := ⋯ }.toFun g *
      { toFun := fun g => { left := fun b => F.map (homOfPair b g), right := g }, map_one' := ⋯ }.toFun h
state_after: case left.h
M : Type u_1
inst✝⁴ : Monoid M
X : Type u
inst✝³ : MulAction M X
x : X
G : Type u_2
inst✝² : Group G
inst✝¹ : MulAction G X
H : Type u_3
inst✝ : Group H
F : ActionCategory G X ⥤ SingleObj H
F_map_eq : ∀ {a b : ActionCategory G X} {f : a ⟶ b}, F.map f = F.map (homOfPair b.back ↑f)
g h : G
b : X
⊢ ({ toFun := fun g => { left := fun b => F.map (homOfPair b g), right := g }, map_one' := ⋯ }.toFun (g * h)).left b =
    ({ toFun := fun g => { left := fun b => F.map (homOfPair b g), right := g }, map_one' := ⋯ }.toFun g *
          { toFun := fun g => { left := fun b => F.map (homOfPair b g), right := g }, map_one' := ⋯ }.toFun h).left
      b

case right
M : Type u_1
inst✝⁴ : Monoid M
X : Type u
inst✝³ : MulAction M X
x : X
G : Type u_2
inst✝² : Group G
inst✝¹ : MulAction G X
H : Type u_3
inst✝ : Group H
F : ActionCategory G X ⥤ SingleObj H
F_map_eq : ∀ {a b : ActionCategory G X} {f : a ⟶ b}, F.map f = F.map (homOfPair b.back ↑f)
g h : G
⊢ ({ toFun := fun g => { left := fun b => F.map (homOfPair b g), right := g }, map_one' := ⋯ }.toFun (g * h)).right =
    ({ toFun := fun g => { left := fun b => F.map (homOfPair b g), right := g }, map_one' := ⋯ }.toFun g *
        { toFun := fun g => { left := fun b => F.map (homOfPair b g), right := g }, map_one' := ⋯ }.toFun h).right
tactic: ext b
state_before: case right
M : Type u_1
inst✝⁴ : Monoid M
X : Type u
inst✝³ : MulAction M X
x : X
G : Type u_2
inst✝² : Group G
inst✝¹ : MulAction G X
H : Type u_3
inst✝ : Group H
F : ActionCategory G X ⥤ SingleObj H
F_map_eq : ∀ {a b : ActionCategory G X} {f : a ⟶ b}, F.map f = F.map (homOfPair b.back ↑f)
g h : G
⊢ ({ toFun := fun g => { left := fun b => F.map (homOfPair b g), right := g }, map_one' := ⋯ }.toFun (g * h)).right =
    ({ toFun := fun g => { left := fun b => F.map (homOfPair b g), right := g }, map_one' := ⋯ }.toFun g *
        { toFun := fun g => { left := fun b => F.map (homOfPair b g), right := g }, map_one' := ⋯ }.toFun h).right
state_after: no goals
tactic: rfl