[GOAL]
k : Type u
inst✝⁹ : CommRing k
G : Type u
inst✝⁸ : Group G
V : Type v
inst✝⁷ : AddCommGroup V
inst✝⁶ : Module k V
inst✝⁵ : Module (MonoidAlgebra k G) V
inst✝⁴ : IsScalarTower k (MonoidAlgebra k G) V
W : Type w
inst✝³ : AddCommGroup W
inst✝² : Module k W
inst✝¹ : Module (MonoidAlgebra k G) W
inst✝ : IsScalarTower k (MonoidAlgebra k G) W
π : W →ₗ[k] V
i : V →ₗ[MonoidAlgebra k G] W
h : ∀ (v : V), ↑π (↑i v) = v
g : G
v : V
⊢ ↑(conjugate π g) (↑i v) = v
[PROOFSTEP]
rw [conjugate_apply, ← i.map_smul, h, ← mul_smul, single_mul_single, mul_one, mul_left_inv, ← one_def, one_smul]
[GOAL]
k : Type u
inst✝¹⁰ : CommRing k
G : Type u
inst✝⁹ : Group G
V : Type v
inst✝⁸ : AddCommGroup V
inst✝⁷ : Module k V
inst✝⁶ : Module (MonoidAlgebra k G) V
inst✝⁵ : IsScalarTower k (MonoidAlgebra k G) V
W : Type w
inst✝⁴ : AddCommGroup W
inst✝³ : Module k W
inst✝² : Module (MonoidAlgebra k G) W
inst✝¹ : IsScalarTower k (MonoidAlgebra k G) W
π : W →ₗ[k] V
i : V →ₗ[MonoidAlgebra k G] W
h : ∀ (v : V), ↑π (↑i v) = v
inst✝ : Fintype G
g : G
v : W
⊢ ↑(sumOfConjugates G π) (MonoidAlgebra.single g 1 • v) = MonoidAlgebra.single g 1 • ↑(sumOfConjugates G π) v
[PROOFSTEP]
simp only [sumOfConjugates_apply, Finset.smul_sum, conjugate_apply]
[GOAL]
k : Type u
inst✝¹⁰ : CommRing k
G : Type u
inst✝⁹ : Group G
V : Type v
inst✝⁸ : AddCommGroup V
inst✝⁷ : Module k V
inst✝⁶ : Module (MonoidAlgebra k G) V
inst✝⁵ : IsScalarTower k (MonoidAlgebra k G) V
W : Type w
inst✝⁴ : AddCommGroup W
inst✝³ : Module k W
inst✝² : Module (MonoidAlgebra k G) W
inst✝¹ : IsScalarTower k (MonoidAlgebra k G) W
π : W →ₗ[k] V
i : V →ₗ[MonoidAlgebra k G] W
h : ∀ (v : V), ↑π (↑i v) = v
inst✝ : Fintype G
g : G
v : W
⊢ ∑ x : G, MonoidAlgebra.single x⁻¹ 1 • ↑π (MonoidAlgebra.single x 1 • MonoidAlgebra.single g 1 • v) =
    ∑ x : G, MonoidAlgebra.single g 1 • MonoidAlgebra.single x⁻¹ 1 • ↑π (MonoidAlgebra.single x 1 • v)
[PROOFSTEP]
refine Fintype.sum_bijective (· * g) (Group.mulRight_bijective g) _ _ fun i ↦ ?_
[GOAL]
k : Type u
inst✝¹⁰ : CommRing k
G : Type u
inst✝⁹ : Group G
V : Type v
inst✝⁸ : AddCommGroup V
inst✝⁷ : Module k V
inst✝⁶ : Module (MonoidAlgebra k G) V
inst✝⁵ : IsScalarTower k (MonoidAlgebra k G) V
W : Type w
inst✝⁴ : AddCommGroup W
inst✝³ : Module k W
inst✝² : Module (MonoidAlgebra k G) W
inst✝¹ : IsScalarTower k (MonoidAlgebra k G) W
π : W →ₗ[k] V
i✝ : V →ₗ[MonoidAlgebra k G] W
h : ∀ (v : V), ↑π (↑i✝ v) = v
inst✝ : Fintype G
g : G
v : W
i : G
⊢ MonoidAlgebra.single i⁻¹ 1 • ↑π (MonoidAlgebra.single i 1 • MonoidAlgebra.single g 1 • v) =
    MonoidAlgebra.single g 1 •
      MonoidAlgebra.single ((fun x => x * g) i)⁻¹ 1 • ↑π (MonoidAlgebra.single ((fun x => x * g) i) 1 • v)
[PROOFSTEP]
simp only [smul_smul, single_mul_single, mul_inv_rev, mul_inv_cancel_left, one_mul]
[GOAL]
k : Type u
inst✝¹¹ : CommRing k
G : Type u
inst✝¹⁰ : Group G
V : Type v
inst✝⁹ : AddCommGroup V
inst✝⁸ : Module k V
inst✝⁷ : Module (MonoidAlgebra k G) V
inst✝⁶ : IsScalarTower k (MonoidAlgebra k G) V
W : Type w
inst✝⁵ : AddCommGroup W
inst✝⁴ : Module k W
inst✝³ : Module (MonoidAlgebra k G) W
inst✝² : IsScalarTower k (MonoidAlgebra k G) W
π : W →ₗ[k] V
i : V →ₗ[MonoidAlgebra k G] W
h : ∀ (v : V), ↑π (↑i v) = v
inst✝¹ : Fintype G
inst✝ : Invertible ↑(Fintype.card G)
v : W
⊢ ↑(equivariantProjection G π) v = ⅟↑(Fintype.card G) • ∑ g : G, ↑(conjugate π g) v
[PROOFSTEP]
simp only [equivariantProjection, smul_apply, sumOfConjugatesEquivariant_apply]
[GOAL]
k : Type u
inst✝¹¹ : CommRing k
G : Type u
inst✝¹⁰ : Group G
V : Type v
inst✝⁹ : AddCommGroup V
inst✝⁸ : Module k V
inst✝⁷ : Module (MonoidAlgebra k G) V
inst✝⁶ : IsScalarTower k (MonoidAlgebra k G) V
W : Type w
inst✝⁵ : AddCommGroup W
inst✝⁴ : Module k W
inst✝³ : Module (MonoidAlgebra k G) W
inst✝² : IsScalarTower k (MonoidAlgebra k G) W
π : W →ₗ[k] V
i : V →ₗ[MonoidAlgebra k G] W
h : ∀ (v : V), ↑π (↑i v) = v
inst✝¹ : Fintype G
inst✝ : Invertible ↑(Fintype.card G)
v : V
⊢ ↑(equivariantProjection G π) (↑i v) = v
[PROOFSTEP]
rw [equivariantProjection_apply]
[GOAL]
k : Type u
inst✝¹¹ : CommRing k
G : Type u
inst✝¹⁰ : Group G
V : Type v
inst✝⁹ : AddCommGroup V
inst✝⁸ : Module k V
inst✝⁷ : Module (MonoidAlgebra k G) V
inst✝⁶ : IsScalarTower k (MonoidAlgebra k G) V
W : Type w
inst✝⁵ : AddCommGroup W
inst✝⁴ : Module k W
inst✝³ : Module (MonoidAlgebra k G) W
inst✝² : IsScalarTower k (MonoidAlgebra k G) W
π : W →ₗ[k] V
i : V →ₗ[MonoidAlgebra k G] W
h : ∀ (v : V), ↑π (↑i v) = v
inst✝¹ : Fintype G
inst✝ : Invertible ↑(Fintype.card G)
v : V
⊢ ⅟↑(Fintype.card G) • ∑ g : G, ↑(conjugate π g) (↑i v) = v
[PROOFSTEP]
simp only [conjugate_i π i h]
[GOAL]
k : Type u
inst✝¹¹ : CommRing k
G : Type u
inst✝¹⁰ : Group G
V : Type v
inst✝⁹ : AddCommGroup V
inst✝⁸ : Module k V
inst✝⁷ : Module (MonoidAlgebra k G) V
inst✝⁶ : IsScalarTower k (MonoidAlgebra k G) V
W : Type w
inst✝⁵ : AddCommGroup W
inst✝⁴ : Module k W
inst✝³ : Module (MonoidAlgebra k G) W
inst✝² : IsScalarTower k (MonoidAlgebra k G) W
π : W →ₗ[k] V
i : V →ₗ[MonoidAlgebra k G] W
h : ∀ (v : V), ↑π (↑i v) = v
inst✝¹ : Fintype G
inst✝ : Invertible ↑(Fintype.card G)
v : V
⊢ ⅟↑(Fintype.card G) • ∑ x : G, v = v
[PROOFSTEP]
rw [Finset.sum_const, Finset.card_univ, nsmul_eq_smul_cast k, smul_smul, Invertible.invOf_mul_self, one_smul]
[GOAL]
k : Type u
inst✝¹¹ : Field k
G : Type u
inst✝¹⁰ : Fintype G
inst✝⁹ : Invertible ↑(Fintype.card G)
inst✝⁸ : Group G
V : Type u
inst✝⁷ : AddCommGroup V
inst✝⁶ : Module k V
inst✝⁵ : Module (MonoidAlgebra k G) V
inst✝⁴ : IsScalarTower k (MonoidAlgebra k G) V
W : Type u
inst✝³ : AddCommGroup W
inst✝² : Module k W
inst✝¹ : Module (MonoidAlgebra k G) W
inst✝ : IsScalarTower k (MonoidAlgebra k G) W
f : V →ₗ[MonoidAlgebra k G] W
hf : LinearMap.ker f = ⊥
⊢ ∃ g, LinearMap.comp g f = LinearMap.id
[PROOFSTEP]
obtain ⟨φ, hφ⟩ :=
  (f.restrictScalars k).exists_leftInverse_of_injective <| by
    simp only [hf, Submodule.restrictScalars_bot, LinearMap.ker_restrictScalars]
[GOAL]
k : Type u
inst✝¹¹ : Field k
G : Type u
inst✝¹⁰ : Fintype G
inst✝⁹ : Invertible ↑(Fintype.card G)
inst✝⁸ : Group G
V : Type u
inst✝⁷ : AddCommGroup V
inst✝⁶ : Module k V
inst✝⁵ : Module (MonoidAlgebra k G) V
inst✝⁴ : IsScalarTower k (MonoidAlgebra k G) V
W : Type u
inst✝³ : AddCommGroup W
inst✝² : Module k W
inst✝¹ : Module (MonoidAlgebra k G) W
inst✝ : IsScalarTower k (MonoidAlgebra k G) W
f : V →ₗ[MonoidAlgebra k G] W
hf : LinearMap.ker f = ⊥
⊢ LinearMap.ker (↑k f) = ⊥
[PROOFSTEP]
simp only [hf, Submodule.restrictScalars_bot, LinearMap.ker_restrictScalars]
[GOAL]
case intro
k : Type u
inst✝¹¹ : Field k
G : Type u
inst✝¹⁰ : Fintype G
inst✝⁹ : Invertible ↑(Fintype.card G)
inst✝⁸ : Group G
V : Type u
inst✝⁷ : AddCommGroup V
inst✝⁶ : Module k V
inst✝⁵ : Module (MonoidAlgebra k G) V
inst✝⁴ : IsScalarTower k (MonoidAlgebra k G) V
W : Type u
inst✝³ : AddCommGroup W
inst✝² : Module k W
inst✝¹ : Module (MonoidAlgebra k G) W
inst✝ : IsScalarTower k (MonoidAlgebra k G) W
f : V →ₗ[MonoidAlgebra k G] W
hf : LinearMap.ker f = ⊥
φ : W →ₗ[k] V
hφ : LinearMap.comp φ (↑k f) = LinearMap.id
⊢ ∃ g, LinearMap.comp g f = LinearMap.id
[PROOFSTEP]
refine ⟨φ.equivariantProjection G, FunLike.ext _ _ ?_⟩
[GOAL]
case intro
k : Type u
inst✝¹¹ : Field k
G : Type u
inst✝¹⁰ : Fintype G
inst✝⁹ : Invertible ↑(Fintype.card G)
inst✝⁸ : Group G
V : Type u
inst✝⁷ : AddCommGroup V
inst✝⁶ : Module k V
inst✝⁵ : Module (MonoidAlgebra k G) V
inst✝⁴ : IsScalarTower k (MonoidAlgebra k G) V
W : Type u
inst✝³ : AddCommGroup W
inst✝² : Module k W
inst✝¹ : Module (MonoidAlgebra k G) W
inst✝ : IsScalarTower k (MonoidAlgebra k G) W
f : V →ₗ[MonoidAlgebra k G] W
hf : LinearMap.ker f = ⊥
φ : W →ₗ[k] V
hφ : LinearMap.comp φ (↑k f) = LinearMap.id
⊢ ∀ (x : V), ↑(LinearMap.comp (LinearMap.equivariantProjection G φ) f) x = ↑LinearMap.id x
[PROOFSTEP]
exact φ.equivariantProjection_condition G _ <| FunLike.congr_fun hφ
[GOAL]
k : Type u
inst✝¹¹ : Field k
G : Type u
inst✝¹⁰ : Fintype G
inst✝⁹ : Invertible ↑(Fintype.card G)
inst✝⁸ : Group G
V : Type u
inst✝⁷ : AddCommGroup V
inst✝⁶ : Module k V
inst✝⁵ : Module (MonoidAlgebra k G) V
inst✝⁴ : IsScalarTower k (MonoidAlgebra k G) V
W : Type u
inst✝³ : AddCommGroup W
inst✝² : Module k W
inst✝¹ : Module (MonoidAlgebra k G) W
inst✝ : IsScalarTower k (MonoidAlgebra k G) W
p : Submodule (MonoidAlgebra k G) V
⊢ ∃ q, IsCompl p q
[PROOFSTEP]
have : IsScalarTower k (MonoidAlgebra k G) p := p.isScalarTower'
[GOAL]
k : Type u
inst✝¹¹ : Field k
G : Type u
inst✝¹⁰ : Fintype G
inst✝⁹ : Invertible ↑(Fintype.card G)
inst✝⁸ : Group G
V : Type u
inst✝⁷ : AddCommGroup V
inst✝⁶ : Module k V
inst✝⁵ : Module (MonoidAlgebra k G) V
inst✝⁴ : IsScalarTower k (MonoidAlgebra k G) V
W : Type u
inst✝³ : AddCommGroup W
inst✝² : Module k W
inst✝¹ : Module (MonoidAlgebra k G) W
inst✝ : IsScalarTower k (MonoidAlgebra k G) W
p : Submodule (MonoidAlgebra k G) V
this : IsScalarTower k (MonoidAlgebra k G) { x // x ∈ p }
⊢ ∃ q, IsCompl p q
[PROOFSTEP]
rcases MonoidAlgebra.exists_leftInverse_of_injective p.subtype p.ker_subtype with ⟨f, hf⟩
[GOAL]
case intro
k : Type u
inst✝¹¹ : Field k
G : Type u
inst✝¹⁰ : Fintype G
inst✝⁹ : Invertible ↑(Fintype.card G)
inst✝⁸ : Group G
V : Type u
inst✝⁷ : AddCommGroup V
inst✝⁶ : Module k V
inst✝⁵ : Module (MonoidAlgebra k G) V
inst✝⁴ : IsScalarTower k (MonoidAlgebra k G) V
W : Type u
inst✝³ : AddCommGroup W
inst✝² : Module k W
inst✝¹ : Module (MonoidAlgebra k G) W
inst✝ : IsScalarTower k (MonoidAlgebra k G) W
p : Submodule (MonoidAlgebra k G) V
this : IsScalarTower k (MonoidAlgebra k G) { x // x ∈ p }
f : V →ₗ[MonoidAlgebra k G] { x // x ∈ p }
hf : LinearMap.comp f (Submodule.subtype p) = LinearMap.id
⊢ ∃ q, IsCompl p q
[PROOFSTEP]
refine ⟨LinearMap.ker f, LinearMap.isCompl_of_proj ?_⟩
[GOAL]
case intro
k : Type u
inst✝¹¹ : Field k
G : Type u
inst✝¹⁰ : Fintype G
inst✝⁹ : Invertible ↑(Fintype.card G)
inst✝⁸ : Group G
V : Type u
inst✝⁷ : AddCommGroup V
inst✝⁶ : Module k V
inst✝⁵ : Module (MonoidAlgebra k G) V
inst✝⁴ : IsScalarTower k (MonoidAlgebra k G) V
W : Type u
inst✝³ : AddCommGroup W
inst✝² : Module k W
inst✝¹ : Module (MonoidAlgebra k G) W
inst✝ : IsScalarTower k (MonoidAlgebra k G) W
p : Submodule (MonoidAlgebra k G) V
this : IsScalarTower k (MonoidAlgebra k G) { x // x ∈ p }
f : V →ₗ[MonoidAlgebra k G] { x // x ∈ p }
hf : LinearMap.comp f (Submodule.subtype p) = LinearMap.id
⊢ ∀ (x : { x // x ∈ p }), ↑f ↑x = x
[PROOFSTEP]
exact FunLike.congr_fun hf


[GOAL]
α : Type u
inst✝ : AddZeroClass α
⊢ unop 0 = 0
[PROOFSTEP]
exact rfl
[GOAL]
α : Type u
inst✝ : AddMonoid α
⊢ unop 0 = 0
[PROOFSTEP]
exact rfl
[GOAL]
α : Type u
inst✝ : AddMonoidWithOne α
src✝² : AddMonoid αᵐᵒᵖ := addMonoid α
src✝¹ : One αᵐᵒᵖ := one α
src✝ : NatCast αᵐᵒᵖ := natCast α
⊢ op ↑0 = 0
[PROOFSTEP]
rw [Nat.cast_zero, op_zero]
[GOAL]
α : Type u
inst✝ : AddMonoidWithOne α
src✝² : AddMonoid αᵐᵒᵖ := addMonoid α
src✝¹ : One αᵐᵒᵖ := one α
src✝ : NatCast αᵐᵒᵖ := natCast α
⊢ ∀ (n : ℕ), op ↑(n + 1) = op ↑n + 1
[PROOFSTEP]
simp
[GOAL]
α : Type u
inst✝ : SubNegMonoid α
⊢ unop 0 = 0
[PROOFSTEP]
exact rfl
[GOAL]
α : Type u
inst✝ : AddGroup α
⊢ unop 0 = 0
[PROOFSTEP]
exact rfl
[GOAL]
α : Type u
inst✝ : AddGroupWithOne α
src✝¹ : AddMonoidWithOne αᵐᵒᵖ := addMonoidWithOne α
src✝ : AddGroup αᵐᵒᵖ := addGroup α
n : ℕ
⊢ op ↑↑n = op ↑n
[PROOFSTEP]
rw [Int.cast_ofNat]
[GOAL]
α : Type u
inst✝ : AddGroupWithOne α
src✝¹ : AddMonoidWithOne αᵐᵒᵖ := addMonoidWithOne α
src✝ : AddGroup αᵐᵒᵖ := addGroup α
n : ℕ
⊢ op ↑(Int.negSucc n) = op (-unop (op ↑(n + 1)))
[PROOFSTEP]
simp
[GOAL]
α : Type u
inst✝ : DivInvMonoid α
src✝¹ : Monoid αᵐᵒᵖ := monoid α
src✝ : Inv αᵐᵒᵖ := inv α
n : ℕ
x : αᵐᵒᵖ
⊢ unop ((fun n x => op (unop x ^ n)) (Int.ofNat (Nat.succ n)) x) =
    unop (x * (fun n x => op (unop x ^ n)) (Int.ofNat n) x)
[PROOFSTEP]
simp only [Int.ofNat_eq_coe]
[GOAL]
α : Type u
inst✝ : DivInvMonoid α
src✝¹ : Monoid αᵐᵒᵖ := monoid α
src✝ : Inv αᵐᵒᵖ := inv α
n : ℕ
x : αᵐᵒᵖ
⊢ unop (op (unop x ^ ↑(Nat.succ n))) = unop (x * op (unop x ^ ↑n))
[PROOFSTEP]
rw [unop_op, zpow_ofNat, pow_succ', unop_mul, unop_op, zpow_ofNat]
[GOAL]
α : Type u
inst✝ : DivInvMonoid α
x y : α
⊢ op (x / y) = (op y)⁻¹ * op x
[PROOFSTEP]
simp [div_eq_mul_inv]
[GOAL]
α : Type u
inst✝ : Mul α
a x y : α
⊢ SemiconjBy (op a) (op y) (op x) ↔ SemiconjBy a x y
[PROOFSTEP]
simp only [SemiconjBy, ← op_mul, op_inj, eq_comm]
[GOAL]
α : Type u
inst✝ : Mul α
a x y : αᵐᵒᵖ
⊢ SemiconjBy (unop a) (unop y) (unop x) ↔ SemiconjBy a x y
[PROOFSTEP]
conv_rhs => rw [← op_unop a, ← op_unop x, ← op_unop y, semiconjBy_op]
[GOAL]
α : Type u
inst✝ : Mul α
a x y : αᵐᵒᵖ
| SemiconjBy a x y
[PROOFSTEP]
rw [← op_unop a, ← op_unop x, ← op_unop y, semiconjBy_op]
[GOAL]
α : Type u
inst✝ : Mul α
a x y : αᵐᵒᵖ
| SemiconjBy a x y
[PROOFSTEP]
rw [← op_unop a, ← op_unop x, ← op_unop y, semiconjBy_op]
[GOAL]
α : Type u
inst✝ : Mul α
a x y : αᵐᵒᵖ
| SemiconjBy a x y
[PROOFSTEP]
rw [← op_unop a, ← op_unop x, ← op_unop y, semiconjBy_op]
[GOAL]
α : Type u
inst✝ : MulOneClass α
⊢ unop 1 = 1
[PROOFSTEP]
exact rfl
[GOAL]
α : Type u
inst✝ : Monoid α
⊢ unop 1 = 1
[PROOFSTEP]
exact rfl
[GOAL]
α : Type u
inst✝ : CommMonoid α
⊢ unop 1 = 1
[PROOFSTEP]
exact rfl
[GOAL]
α : Type u
inst✝ : DivInvMonoid α
⊢ unop 1 = 1
[PROOFSTEP]
exact rfl
[GOAL]
α : Type u
inst✝ : Group α
⊢ unop 1 = 1
[PROOFSTEP]
exact rfl
[GOAL]
α : Type u
inst✝ : CommGroup α
⊢ unop 1 = 1
[PROOFSTEP]
exact rfl
[GOAL]
α : Type u
inst✝ : AddCommMonoidWithOne α
src✝² : AddCommMonoid αᵃᵒᵖ := addCommMonoid α
src✝¹ : One αᵃᵒᵖ := one
src✝ : NatCast αᵃᵒᵖ := natCast α
⊢ op ↑0 = 0
[PROOFSTEP]
rw [Nat.cast_zero, op_zero]
[GOAL]
α : Type u
inst✝ : AddCommMonoidWithOne α
src✝² : AddCommMonoid αᵃᵒᵖ := addCommMonoid α
src✝¹ : One αᵃᵒᵖ := one
src✝ : NatCast αᵃᵒᵖ := natCast α
⊢ ∀ (n : ℕ), op ↑(n + 1) = op ↑n + 1
[PROOFSTEP]
simp [add_comm]
[GOAL]
α : Type u
M : Type u_1
N : Type u_2
inst✝¹ : Mul M
inst✝ : Mul N
f : M →ₙ* N
hf : ∀ (x y : M), Commute (↑f x) (↑f y)
x y : M
⊢ (op ∘ ↑f) (x * y) = (op ∘ ↑f) x * (op ∘ ↑f) y
[PROOFSTEP]
simp [(hf x y).eq]
[GOAL]
α : Type u
M : Type u_1
N : Type u_2
inst✝¹ : MulOneClass M
inst✝ : MulOneClass N
f : M →* N
hf : ∀ (x y : M), Commute (↑f x) (↑f y)
x y : M
⊢ OneHom.toFun { toFun := op ∘ ↑f, map_one' := (_ : op (↑f 1) = op 1) } (x * y) =
    OneHom.toFun { toFun := op ∘ ↑f, map_one' := (_ : op (↑f 1) = op 1) } x *
      OneHom.toFun { toFun := op ∘ ↑f, map_one' := (_ : op (↑f 1) = op 1) } y
[PROOFSTEP]
simp [(hf x y).eq]
[GOAL]
α : Type u
M : Type ?u.46725
inst✝ : Monoid M
x : Mᵐᵒᵖˣ
⊢ ↑((fun X =>
          MulOpposite.rec'
            (fun u =>
              { val := op ↑u, inv := op ↑u⁻¹, val_inv := (_ : op ↑u * op ↑u⁻¹ = 1),
                inv_val := (_ : op ↑u⁻¹ * op ↑u = 1) })
            X)
        ((fun u =>
            op
              { val := unop ↑u, inv := unop ↑u⁻¹, val_inv := (_ : unop ↑u * unop ↑u⁻¹ = 1),
                inv_val := (_ : unop ↑u⁻¹ * unop ↑u = 1) })
          x)) =
    ↑x
[PROOFSTEP]
simp
[GOAL]
α : Type u
M : Type ?u.46725
inst✝ : Monoid M
x : Mˣᵐᵒᵖ
⊢ ↑(unop
        ((fun u =>
            op
              { val := unop ↑u, inv := unop ↑u⁻¹, val_inv := (_ : unop ↑u * unop ↑u⁻¹ = 1),
                inv_val := (_ : unop ↑u⁻¹ * unop ↑u = 1) })
          ((fun X =>
              MulOpposite.rec'
                (fun u =>
                  { val := op ↑u, inv := op ↑u⁻¹, val_inv := (_ : op ↑u * op ↑u⁻¹ = 1),
                    inv_val := (_ : op ↑u⁻¹ * op ↑u = 1) })
                X)
            x))) =
    ↑(unop x)
[PROOFSTEP]
rfl
[GOAL]
α✝ : Type u
α : Type ?u.65550
β : Type ?u.65553
inst✝¹ : Mul α
inst✝ : Mul β
f : αᵐᵒᵖ ≃* βᵐᵒᵖ
x : α
⊢ (unop ∘ ↑(symm f) ∘ MulOpposite.op) ((unop ∘ ↑f ∘ MulOpposite.op) x) = x
[PROOFSTEP]
simp
[GOAL]
α✝ : Type u
α : Type ?u.65550
β : Type ?u.65553
inst✝¹ : Mul α
inst✝ : Mul β
f : αᵐᵒᵖ ≃* βᵐᵒᵖ
x : β
⊢ (unop ∘ ↑f ∘ MulOpposite.op) ((unop ∘ ↑(symm f) ∘ MulOpposite.op) x) = x
[PROOFSTEP]
simp