awhecmu/canonical-drafter-extract-mathlib huggingface dataset:
-- Lean 4 proof step from Mathlib.LinearAlgebra.CliffordAlgebra.SpinGroup (goal)
Goal:
R : Type u_1
inst : CommRing R
M : Type u_2
inst_1 : AddCommGroup M
inst_2 : Module R M
Q : QuadraticForm R M
inst_3 : Invertible (α := R) 2
x_1 x : (CliffordAlgebra Q)ˣ
b a : M
ha : (ι Q : (a : M) → CliffordAlgebra Q) a = (↑x : CliffordAlgebra Q)
this_1 : Invertible (↑x : CliffordAlgebra Q) := x.invertible
this_2 : Invertible (α := CliffordAlgebra Q) ((ι Q : (a : M) → CliffordAlgebra Q) a : CliffordAlgebra Q) :=
  Eq.mpr ⋯ this_1
this_3 : Invertible (α := R) ((Q : (a : M) → R) a : R) := invertibleOfInvertibleι Q a
this_4 : Invertible (α := CliffordAlgebra Q) (-(ι Q : (a : M) → CliffordAlgebra Q) a : CliffordAlgebra Q) :=
  invertibleNeg ((ι Q : (a : M) → CliffordAlgebra Q) a)
this : Invertible (α := CliffordAlgebra Q)
  ((involute : (a : CliffordAlgebra Q) → CliffordAlgebra Q) ((ι Q : (a : M) → CliffordAlgebra Q) a) :
    CliffordAlgebra Q) :=
  Invertible.map involute ((ι Q : (a : M) → CliffordAlgebra Q) a)
inv_mem :
  HMul.hMul (α := CliffordAlgebra Q) (β := CliffordAlgebra Q)
        ((involute : (a : CliffordAlgebra Q) → CliffordAlgebra Q)
            (@Invertible.invOf _ MulOne.toMul MulOne.toOne (↑x : CliffordAlgebra Q) _) :
          CliffordAlgebra Q)
        ((ι Q : (a : M) → CliffordAlgebra Q) b : CliffordAlgebra Q) *
      (↑x⁻¹⁻¹ : CliffordAlgebra Q) ∈
    (ι Q).range
inv_mem₁ :
  HMul.hMul (α := CliffordAlgebra Q) (β := CliffordAlgebra Q)
        ((involute : (a : CliffordAlgebra Q) → CliffordAlgebra Q)
            (@Invertible.invOf _ MulOne.toMul MulOne.toOne (↑x : CliffordAlgebra Q) _) :
          CliffordAlgebra Q)
        ((ι Q : (a : M) → CliffordAlgebra Q) b : CliffordAlgebra Q) *
      (↑x : CliffordAlgebra Q) ∈
    (ι Q).range
⊢ HMul.hMul (α := CliffordAlgebra Q) (β := CliffordAlgebra Q)
        ((involute : (a : CliffordAlgebra Q) → CliffordAlgebra Q) (↑x⁻¹ : CliffordAlgebra Q) : CliffordAlgebra Q)
        ((ι Q : (a : M) → CliffordAlgebra Q) b : CliffordAlgebra Q) *
      (↑x⁻¹⁻¹ : CliffordAlgebra Q) ∈
    (ι Q).range
have inv_mem₂ : HMul.hMul (β := CliffordAlgebra Q)
    (HMul.hMul (α := CliffordAlgebra Q) (β := CliffordAlgebra Q)
      ((involute : (a : CliffordAlgebra Q) → CliffordAlgebra Q)
          (@Invertible.invOf _ MulOne.toMul MulOne.toOne ((ι Q : (a : M) → CliffordAlgebra Q) a) _) :
        CliffordAlgebra Q)
      ((ι Q : (a : M) → CliffordAlgebra Q) b : CliffordAlgebra Q))
    ((ι Q : (a : M) → CliffordAlgebra Q) a : CliffordAlgebra Q) ∈
  (ι Q).range
Tactic: simp_rw [← invOf_units x, inv_inv, ← ha, map_invOf, involute_ι, invOf_neg, neg_mul,
      invOf_ι_mul_ι_mul_ι, ← map_neg, LinearMap.mem_range_self]
-- Lean 4 proof step from Mathlib.LinearAlgebra.CliffordAlgebra.SpinGroup (goal)
Goal:
R : Type u_1
inst : CommRing R
M : Type u_2
inst_1 : AddCommGroup M
inst_2 : Module R M
Q : QuadraticForm R M
inst_3 : Invertible (α := R) 2
x_1 x : (CliffordAlgebra Q)ˣ
b a : M
ha : (ι Q : (a : M) → CliffordAlgebra Q) a = (↑x : CliffordAlgebra Q)
this_1 : Invertible (↑x : CliffordAlgebra Q) := x.invertible
this_2 : Invertible (α := CliffordAlgebra Q) ((ι Q : (a : M) → CliffordAlgebra Q) a : CliffordAlgebra Q) :=
  Eq.mpr ⋯ this_1
this_3 : Invertible (α := R) ((Q : (a : M) → R) a : R) := invertibleOfInvertibleι Q a
this_4 : Invertible (α := CliffordAlgebra Q) (-(ι Q : (a : M) → CliffordAlgebra Q) a : CliffordAlgebra Q) :=
  invertibleNeg ((ι Q : (a : M) → CliffordAlgebra Q) a)
this : Invertible (α := CliffordAlgebra Q)
  ((involute : (a : CliffordAlgebra Q) → CliffordAlgebra Q) ((ι Q : (a : M) → CliffordAlgebra Q) a) :
    CliffordAlgebra Q) :=
  Invertible.map involute ((ι Q : (a : M) → CliffordAlgebra Q) a)
inv_mem :
  HMul.hMul (α := CliffordAlgebra Q) (β := CliffordAlgebra Q)
        ((involute : (a : CliffordAlgebra Q) → CliffordAlgebra Q)
            (@Invertible.invOf _ MulOne.toMul MulOne.toOne (↑x : CliffordAlgebra Q) _) :
          CliffordAlgebra Q)
        ((ι Q : (a : M) → CliffordAlgebra Q) b : CliffordAlgebra Q) *
      (↑x⁻¹⁻¹ : CliffordAlgebra Q) ∈
    (ι Q).range
inv_mem₁ :
  HMul.hMul (α := CliffordAlgebra Q) (β := CliffordAlgebra Q)
        ((involute : (a : CliffordAlgebra Q) → CliffordAlgebra Q)
            (@Invertible.invOf _ MulOne.toMul MulOne.toOne (↑x : CliffordAlgebra Q) _) :
          CliffordAlgebra Q)
        ((ι Q : (a : M) → CliffordAlgebra Q) b : CliffordAlgebra Q) *
      (↑x : CliffordAlgebra Q) ∈
    (ι Q).range
inv_mem₂ :
  HMul.hMul (β := CliffordAlgebra Q)
      (HMul.hMul (α := CliffordAlgebra Q) (β := CliffordAlgebra Q)
        ((involute : (a : CliffordAlgebra Q) → CliffordAlgebra Q)
            (@Invertible.invOf _ MulOne.toMul MulOne.toOne ((ι Q : (a : M) → CliffordAlgebra Q) a) _) :
          CliffordAlgebra Q)
        ((ι Q : (a : M) → CliffordAlgebra Q) b : CliffordAlgebra Q))
      ((ι Q : (a : M) → CliffordAlgebra Q) a : CliffordAlgebra Q) ∈
    (ι Q).range
⊢ HMul.hMul (α := CliffordAlgebra Q) (β := CliffordAlgebra Q)
        ((involute : (a : CliffordAlgebra Q) → CliffordAlgebra Q) (↑x⁻¹ : CliffordAlgebra Q) : CliffordAlgebra Q)
        ((ι Q : (a : M) → CliffordAlgebra Q) b : CliffordAlgebra Q) *
      (↑x⁻¹⁻¹ : CliffordAlgebra Q) ∈
    (ι Q).range
have inv_mem₃ : HMul.hMul (β := CliffordAlgebra Q)
    (HMul.hMul (α := CliffordAlgebra Q) (β := CliffordAlgebra Q)
      (@Invertible.invOf _ MulOne.toMul MulOne.toOne
          ((involute : (a : CliffordAlgebra Q) → CliffordAlgebra Q) ((ι Q : (a : M) → CliffordAlgebra Q) a)) _ :
        CliffordAlgebra Q)
      ((ι Q : (a : M) → CliffordAlgebra Q) b : CliffordAlgebra Q))
    ((ι Q : (a : M) → CliffordAlgebra Q) a : CliffordAlgebra Q) ∈
  (ι Q).range
Tactic: simp_rw [← invOf_units x, inv_inv, ← ha, map_invOf, involute_ι, invOf_neg, neg_mul,
      invOf_ι_mul_ι_mul_ι, ← map_neg, LinearMap.mem_range_self]
-- Lean 4 proof step from Mathlib.LinearAlgebra.CliffordAlgebra.SpinGroup (goal)
Goal:
R : Type u_1
inst : CommRing R
M : Type u_2
inst_1 : AddCommGroup M
inst_2 : Module R M
Q : QuadraticForm R M
inst_3 : Invertible (α := R) 2
x : (CliffordAlgebra Q)ˣ
b : M
⊢ HMul.hMul (α := CliffordAlgebra Q) (β := CliffordAlgebra Q)
        ((involute : (a : CliffordAlgebra Q) → CliffordAlgebra Q) (↑1 : CliffordAlgebra Q) : CliffordAlgebra Q)
        ((ι Q : (a : M) → CliffordAlgebra Q) b : CliffordAlgebra Q) *
      (↑1⁻¹ : CliffordAlgebra Q) ∈
    (ι Q).range
have one : HMul.hMul (α := CliffordAlgebra Q) (β := CliffordAlgebra Q)
      ((involute : (a : CliffordAlgebra Q) → CliffordAlgebra Q) (↑1 : CliffordAlgebra Q) : CliffordAlgebra Q)
      ((ι Q : (a : M) → CliffordAlgebra Q) b : CliffordAlgebra Q) *
    (↑1 : CliffordAlgebra Q) ∈
  (ι Q).range
Tactic: simp_rw [inv_one, Units.val_one, map_one, one_mul, mul_one, LinearMap.mem_range_self]
-- Lean 4 proof step from Mathlib.LinearAlgebra.CliffordAlgebra.SpinGroup (goal)
Goal:
R : Type u_1
inst : CommRing R
M : Type u_2
inst_1 : AddCommGroup M
inst_2 : Module R M
Q : QuadraticForm R M
inst_3 : Invertible (α := R) 2
x : (CliffordAlgebra Q)ˣ
b : M
one :
  HMul.hMul (α := CliffordAlgebra Q) (β := CliffordAlgebra Q)
        ((involute : (a : CliffordAlgebra Q) → CliffordAlgebra Q) (↑1 : CliffordAlgebra Q) : CliffordAlgebra Q)
        ((ι Q : (a : M) → CliffordAlgebra Q) b : CliffordAlgebra Q) *
      (↑1 : CliffordAlgebra Q) ∈
    (ι Q).range
⊢ HMul.hMul (α := CliffordAlgebra Q) (β := CliffordAlgebra Q)
        ((involute : (a : CliffordAlgebra Q) → CliffordAlgebra Q) (↑1 : CliffordAlgebra Q) : CliffordAlgebra Q)
        ((ι Q : (a : M) → CliffordAlgebra Q) b : CliffordAlgebra Q) *
      (↑1⁻¹ : CliffordAlgebra Q) ∈
    (ι Q).range
have one₁ : HMul.hMul (α := CliffordAlgebra Q) (β := CliffordAlgebra Q)
      ((involute : (a : CliffordAlgebra Q) → CliffordAlgebra Q) 1 : CliffordAlgebra Q)
      ((ι Q : (a : M) → CliffordAlgebra Q) b : CliffordAlgebra Q) *
    1 ∈
  (ι Q).range
Tactic: simp_rw [inv_one, Units.val_one, map_one, one_mul, mul_one, LinearMap.mem_range_self]
-- Lean 4 proof step from Mathlib.LinearAlgebra.CliffordAlgebra.SpinGroup (goal)
Goal:
R : Type u_1
inst : CommRing R
M : Type u_2
inst_1 : AddCommGroup M
inst_2 : Module R M
Q : QuadraticForm R M
inst_3 : Invertible (α := R) 2
x : (CliffordAlgebra Q)ˣ
b : M
one :
  HMul.hMul (α := CliffordAlgebra Q) (β := CliffordAlgebra Q)
        ((involute : (a : CliffordAlgebra Q) → CliffordAlgebra Q) (↑1 : CliffordAlgebra Q) : CliffordAlgebra Q)
        ((ι Q : (a : M) → CliffordAlgebra Q) b : CliffordAlgebra Q) *
      (↑1 : CliffordAlgebra Q) ∈
    (ι Q).range
one₁ :
  HMul.hMul (α := CliffordAlgebra Q) (β := CliffordAlgebra Q)
        ((involute : (a : CliffordAlgebra Q) → CliffordAlgebra Q) 1 : CliffordAlgebra Q)
        ((ι Q : (a : M) → CliffordAlgebra Q) b : CliffordAlgebra Q) *
      1 ∈
    (ι Q).range
⊢ HMul.hMul (α := CliffordAlgebra Q) (β := CliffordAlgebra Q)
        ((involute : (a : CliffordAlgebra Q) → CliffordAlgebra Q) (↑1 : CliffordAlgebra Q) : CliffordAlgebra Q)
        ((ι Q : (a : M) → CliffordAlgebra Q) b : CliffordAlgebra Q) *
      (↑1⁻¹ : CliffordAlgebra Q) ∈
    (ι Q).range
have one₂ : HMul.hMul (α := CliffordAlgebra Q) (β := CliffordAlgebra Q) (1 : CliffordAlgebra Q)
      ((ι Q : (a : M) → CliffordAlgebra Q) b : CliffordAlgebra Q) *
    1 ∈
  (ι Q).range
Tactic: simp_rw [inv_one, Units.val_one, map_one, one_mul, mul_one, LinearMap.mem_range_self]
-- Lean 4 proof step from Mathlib.LinearAlgebra.CliffordAlgebra.SpinGroup (goal)
Goal:
R : Type u_1
inst : CommRing R
M : Type u_2
inst_1 : AddCommGroup M
inst_2 : Module R M
Q : QuadraticForm R M
inst_3 : Invertible (α := R) 2
x : (CliffordAlgebra Q)ˣ
b : M
one :
  HMul.hMul (α := CliffordAlgebra Q) (β := CliffordAlgebra Q)
        ((involute : (a : CliffordAlgebra Q) → CliffordAlgebra Q) (↑1 : CliffordAlgebra Q) : CliffordAlgebra Q)
        ((ι Q : (a : M) → CliffordAlgebra Q) b : CliffordAlgebra Q) *
      (↑1 : CliffordAlgebra Q) ∈
    (ι Q).range
one₁ :
  HMul.hMul (α := CliffordAlgebra Q) (β := CliffordAlgebra Q)
        ((involute : (a : CliffordAlgebra Q) → CliffordAlgebra Q) 1 : CliffordAlgebra Q)
        ((ι Q : (a : M) → CliffordAlgebra Q) b : CliffordAlgebra Q) *
      1 ∈
    (ι Q).range
one₂ :
  HMul.hMul (α := CliffordAlgebra Q) (β := CliffordAlgebra Q) (1 : CliffordAlgebra Q)
        ((ι Q : (a : M) → CliffordAlgebra Q) b : CliffordAlgebra Q) *
      1 ∈
    (ι Q).range
⊢ HMul.hMul (α := CliffordAlgebra Q) (β := CliffordAlgebra Q)
        ((involute : (a : CliffordAlgebra Q) → CliffordAlgebra Q) (↑1 : CliffordAlgebra Q) : CliffordAlgebra Q)
        ((ι Q : (a : M) → CliffordAlgebra Q) b : CliffordAlgebra Q) *
      (↑1⁻¹ : CliffordAlgebra Q) ∈
    (ι Q).range
have one₃ : HMul.hMul (α := CliffordAlgebra Q) (β := CliffordAlgebra Q) ((ι Q : (a : M) → CliffordAlgebra Q) b : CliffordAlgebra Q)
    (1 : CliffordAlgebra Q) ∈
  (ι Q).range
Tactic: simp_rw [inv_one, Units.val_one, map_one, one_mul, mul_one, LinearMap.mem_range_self]
-- Lean 4 proof step from Mathlib.LinearAlgebra.CliffordAlgebra.SpinGroup (goal)
Goal:
R : Type u_1
inst : CommRing R
M : Type u_2
inst_1 : AddCommGroup M
inst_2 : Module R M
Q : QuadraticForm R M
inst_3 : Invertible (α := R) 2
x : (CliffordAlgebra Q)ˣ
b : M
one :
  HMul.hMul (α := CliffordAlgebra Q) (β := CliffordAlgebra Q)
        ((involute : (a : CliffordAlgebra Q) → CliffordAlgebra Q) (↑1 : CliffordAlgebra Q) : CliffordAlgebra Q)
        ((ι Q : (a : M) → CliffordAlgebra Q) b : CliffordAlgebra Q) *
      (↑1 : CliffordAlgebra Q) ∈
    (ι Q).range
one₁ :
  HMul.hMul (α := CliffordAlgebra Q) (β := CliffordAlgebra Q)
        ((involute : (a : CliffordAlgebra Q) → CliffordAlgebra Q) 1 : CliffordAlgebra Q)
        ((ι Q : (a : M) → CliffordAlgebra Q) b : CliffordAlgebra Q) *
      1 ∈
    (ι Q).range
one₂ :
  HMul.hMul (α := CliffordAlgebra Q) (β := CliffordAlgebra Q) (1 : CliffordAlgebra Q)
        ((ι Q : (a : M) → CliffordAlgebra Q) b : CliffordAlgebra Q) *
      1 ∈
    (ι Q).range
one₃ :
  HMul.hMul (α := CliffordAlgebra Q) (β := CliffordAlgebra Q)
      ((ι Q : (a : M) → CliffordAlgebra Q) b : CliffordAlgebra Q) (1 : CliffordAlgebra Q) ∈
    (ι Q).range
⊢ HMul.hMul (α := CliffordAlgebra Q) (β := CliffordAlgebra Q)
        ((involute : (a : CliffordAlgebra Q) → CliffordAlgebra Q) (↑1 : CliffordAlgebra Q) : CliffordAlgebra Q)
        ((ι Q : (a : M) → CliffordAlgebra Q) b : CliffordAlgebra Q) *
      (↑1⁻¹ : CliffordAlgebra Q) ∈
    (ι Q).range
have one₄ : Membership.mem (α := CliffordAlgebra Q) (ι Q).range ((ι Q : (a : M) → CliffordAlgebra Q) b : CliffordAlgebra Q)
Tactic: simp_rw [inv_one, Units.val_one, map_one, one_mul, mul_one, LinearMap.mem_range_self]
-- Lean 4 proof step from Mathlib.LinearAlgebra.CliffordAlgebra.SpinGroup (goal)
Goal:
R : Type u_1
inst : CommRing R
M : Type u_2
inst_1 : AddCommGroup M
inst_2 : Module R M
Q : QuadraticForm R M
inst_3 : Invertible (α := R) 2
x y z : (CliffordAlgebra Q)ˣ
hx :
  Membership.mem (γ := Subgroup (CliffordAlgebra Q)ˣ)
    (Subgroup.closure (Units.val ⁻¹' Set.range (ι := M) (⇑(ι Q) : (a : M) → CliffordAlgebra Q))) y
hy_1 :
  Membership.mem (γ := Subgroup (CliffordAlgebra Q)ˣ)
    (Subgroup.closure (Units.val ⁻¹' Set.range (ι := M) (⇑(ι Q) : (a : M) → CliffordAlgebra Q))) z
hy :
  ∀ (b : M),
    HMul.hMul (α := CliffordAlgebra Q) (β := CliffordAlgebra Q)
          ((involute : (a : CliffordAlgebra Q) → CliffordAlgebra Q) (↑y : CliffordAlgebra Q) : CliffordAlgebra Q)
          ((ι Q : (a : M) → CliffordAlgebra Q) b : CliffordAlgebra Q) *
        (↑y⁻¹ : CliffordAlgebra Q) ∈
      (ι Q).range
hz :
  ∀ (b : M),
    HMul.hMul (α := CliffordAlgebra Q) (β := CliffordAlgebra Q)
          ((involute : (a : CliffordAlgebra Q) → CliffordAlgebra Q) (↑z : CliffordAlgebra Q) : CliffordAlgebra Q)
          ((ι Q : (a : M) → CliffordAlgebra Q) b : CliffordAlgebra Q) *
        (↑z⁻¹ : CliffordAlgebra Q) ∈
      (ι Q).range
b : M
⊢ HMul.hMul (α := CliffordAlgebra Q) (β := CliffordAlgebra Q)
        ((involute : (a : CliffordAlgebra Q) → CliffordAlgebra Q) (↑(y * z) : CliffordAlgebra Q) : CliffordAlgebra Q)
        ((ι Q : (a : M) → CliffordAlgebra Q) b : CliffordAlgebra Q) *
      (↑(y * z)⁻¹ : CliffordAlgebra Q) ∈
    (ι Q).range
have mul : HMul.hMul (β := CliffordAlgebra Q)
      (HMul.hMul (α := CliffordAlgebra Q) (β := CliffordAlgebra Q)
        ((involute : (a : CliffordAlgebra Q) → CliffordAlgebra Q) (↑y : CliffordAlgebra Q) : CliffordAlgebra Q)
        ((involute : (a : CliffordAlgebra Q) → CliffordAlgebra Q) (↑z : CliffordAlgebra Q) : CliffordAlgebra Q))
      ((ι Q : (a : M) → CliffordAlgebra Q) b : CliffordAlgebra Q) *
    ((↑z⁻¹ : CliffordAlgebra Q) * (↑y⁻¹ : CliffordAlgebra Q)) ∈
  (ι Q).range
Tactic: simp_rw [mul_inv_rev, Units.val_mul, map_mul]
-- Lean 4 proof step from Mathlib.LinearAlgebra.CliffordAlgebra.SpinGroup (goal)
Goal:
R : Type u_1
inst : CommRing R
M : Type u_2
inst_1 : AddCommGroup M
inst_2 : Module R M
Q : QuadraticForm R M
inst_3 : Invertible (α := R) 2
x y z : (CliffordAlgebra Q)ˣ
hx :
  Membership.mem (γ := Subgroup (CliffordAlgebra Q)ˣ)
    (Subgroup.closure (Units.val ⁻¹' Set.range (ι := M) (⇑(ι Q) : (a : M) → CliffordAlgebra Q))) y
hy_1 :
  Membership.mem (γ := Subgroup (CliffordAlgebra Q)ˣ)
    (Subgroup.closure (Units.val ⁻¹' Set.range (ι := M) (⇑(ι Q) : (a : M) → CliffordAlgebra Q))) z
hy :
  ∀ (b : M),
    HMul.hMul (α := CliffordAlgebra Q) (β := CliffordAlgebra Q)
          ((involute : (a : CliffordAlgebra Q) → CliffordAlgebra Q) (↑y : CliffordAlgebra Q) : CliffordAlgebra Q)
          ((ι Q : (a : M) → CliffordAlgebra Q) b : CliffordAlgebra Q) *
        (↑y⁻¹ : CliffordAlgebra Q) ∈
      (ι Q).range
hz :
  ∀ (b : M),
    HMul.hMul (α := CliffordAlgebra Q) (β := CliffordAlgebra Q)
          ((involute : (a : CliffordAlgebra Q) → CliffordAlgebra Q) (↑z : CliffordAlgebra Q) : CliffordAlgebra Q)
          ((ι Q : (a : M) → CliffordAlgebra Q) b : CliffordAlgebra Q) *
        (↑z⁻¹ : CliffordAlgebra Q) ∈
      (ι Q).range
b : M
⊢ HMul.hMul (β := CliffordAlgebra Q)
        (HMul.hMul (α := CliffordAlgebra Q) (β := CliffordAlgebra Q)
          ((involute : (a : CliffordAlgebra Q) → CliffordAlgebra Q) (↑y : CliffordAlgebra Q) : CliffordAlgebra Q)
          ((involute : (a : CliffordAlgebra Q) → CliffordAlgebra Q) (↑z : CliffordAlgebra Q) : CliffordAlgebra Q))
        ((ι Q : (a : M) → CliffordAlgebra Q) b : CliffordAlgebra Q) *
      ((↑z⁻¹ : CliffordAlgebra Q) * (↑y⁻¹ : CliffordAlgebra Q)) ∈
    (ι Q).range
have mul : HMul.hMul (α := CliffordAlgebra Q)
      ((involute : (a : CliffordAlgebra Q) → CliffordAlgebra Q) (↑y : CliffordAlgebra Q) : CliffordAlgebra Q)
      (HMul.hMul (α := CliffordAlgebra Q) (β := CliffordAlgebra Q)
          ((involute : (a : CliffordAlgebra Q) → CliffordAlgebra Q) (↑z : CliffordAlgebra Q) : CliffordAlgebra Q)
          ((ι Q : (a : M) → CliffordAlgebra Q) b : CliffordAlgebra Q) *
        (↑z⁻¹ : CliffordAlgebra Q)) *
    (↑y⁻¹ : CliffordAlgebra Q) ∈
  (ι Q).range
Tactic: suffices involute (Q := Q) ↑y * (involute (Q := Q) ↑z * ι Q b * ↑z⁻¹) * ↑y⁻¹ ∈ _ by
      simpa only [mul_assoc] using this
-- Lean 4 proof step from Mathlib.LinearAlgebra.CliffordAlgebra.SpinGroup (goal)
Goal:
R : Type u_1
inst : CommRing R
M : Type u_2
inst_1 : AddCommGroup M
inst_2 : Module R M
Q : QuadraticForm R M
inst_3 : Invertible (α := R) 2
x y z : (CliffordAlgebra Q)ˣ
hx :
  Membership.mem (γ := Subgroup (CliffordAlgebra Q)ˣ)
    (Subgroup.closure (Units.val ⁻¹' Set.range (ι := M) (⇑(ι Q) : (a : M) → CliffordAlgebra Q))) y
hy_1 :
  Membership.mem (γ := Subgroup (CliffordAlgebra Q)ˣ)
    (Subgroup.closure (Units.val ⁻¹' Set.range (ι := M) (⇑(ι Q) : (a : M) → CliffordAlgebra Q))) z
hy :
  ∀ (b : M),
    HMul.hMul (α := CliffordAlgebra Q) (β := CliffordAlgebra Q)
          ((involute : (a : CliffordAlgebra Q) → CliffordAlgebra Q) (↑y : CliffordAlgebra Q) : CliffordAlgebra Q)
          ((ι Q : (a : M) → CliffordAlgebra Q) b : CliffordAlgebra Q) *
        (↑y⁻¹ : CliffordAlgebra Q) ∈
      (ι Q).range
hz :
  ∀ (b : M),
    HMul.hMul (α := CliffordAlgebra Q) (β := CliffordAlgebra Q)
          ((involute : (a : CliffordAlgebra Q) → CliffordAlgebra Q) (↑z : CliffordAlgebra Q) : CliffordAlgebra Q)
          ((ι Q : (a : M) → CliffordAlgebra Q) b : CliffordAlgebra Q) *
        (↑z⁻¹ : CliffordAlgebra Q) ∈
      (ι Q).range
b : M
⊢ HMul.hMul (α := CliffordAlgebra Q)
        ((involute : (a : CliffordAlgebra Q) → CliffordAlgebra Q) (↑y : CliffordAlgebra Q) : CliffordAlgebra Q)
        (HMul.hMul (α := CliffordAlgebra Q) (β := CliffordAlgebra Q)
            ((involute : (a : CliffordAlgebra Q) → CliffordAlgebra Q) (↑z : CliffordAlgebra Q) : CliffordAlgebra Q)
            ((ι Q : (a : M) → CliffordAlgebra Q) b : CliffordAlgebra Q) *
          (↑z⁻¹ : CliffordAlgebra Q)) *
      (↑y⁻¹ : CliffordAlgebra Q) ∈
    (ι Q).range
have mul : ∀ (z' : M)
  (hz' :
    (ι Q : (a : M) → CliffordAlgebra Q) z' =
      HMul.hMul (α := CliffordAlgebra Q) (β := CliffordAlgebra Q)
          ((involute : (a : CliffordAlgebra Q) → CliffordAlgebra Q) (↑z : CliffordAlgebra Q) : CliffordAlgebra Q)
          ((ι Q : (a : M) → CliffordAlgebra Q) b : CliffordAlgebra Q) *
        (↑z⁻¹ : CliffordAlgebra Q)),
  HMul.hMul (α := CliffordAlgebra Q)
        ((involute : (a : CliffordAlgebra Q) → CliffordAlgebra Q) (↑y : CliffordAlgebra Q) : CliffordAlgebra Q)
        (HMul.hMul (α := CliffordAlgebra Q) (β := CliffordAlgebra Q)
            ((involute : (a : CliffordAlgebra Q) → CliffordAlgebra Q) (↑z : CliffordAlgebra Q) : CliffordAlgebra Q)
            ((ι Q : (a : M) → CliffordAlgebra Q) b : CliffordAlgebra Q) *
          (↑z⁻¹ : CliffordAlgebra Q)) *
      (↑y⁻¹ : CliffordAlgebra Q) ∈
    (ι Q).range
Tactic: obtain ⟨z', hz'⟩ := hz b
-- Lean 4 proof step from Mathlib.LinearAlgebra.CliffordAlgebra.SpinGroup (goal)
Goal:
R : Type u_1
inst : CommRing R
M : Type u_2
inst_1 : AddCommGroup M
inst_2 : Module R M
Q : QuadraticForm R M
inst_3 : Invertible (α := R) 2
x y z : (CliffordAlgebra Q)ˣ
hx :
  Membership.mem (γ := Subgroup (CliffordAlgebra Q)ˣ)
    (Subgroup.closure (Units.val ⁻¹' Set.range (ι := M) (⇑(ι Q) : (a : M) → CliffordAlgebra Q))) y
hy_1 :
  Membership.mem (γ := Subgroup (CliffordAlgebra Q)ˣ)
    (Subgroup.closure (Units.val ⁻¹' Set.range (ι := M) (⇑(ι Q) : (a : M) → CliffordAlgebra Q))) z
hy :
  ∀ (b : M),
    HMul.hMul (α := CliffordAlgebra Q) (β := CliffordAlgebra Q)
          ((involute : (a : CliffordAlgebra Q) → CliffordAlgebra Q) (↑y : CliffordAlgebra Q) : CliffordAlgebra Q)
          ((ι Q : (a : M) → CliffordAlgebra Q) b : CliffordAlgebra Q) *
        (↑y⁻¹ : CliffordAlgebra Q) ∈
      (ι Q).range
hz :
  ∀ (b : M),
    HMul.hMul (α := CliffordAlgebra Q) (β := CliffordAlgebra Q)
          ((involute : (a : CliffordAlgebra Q) → CliffordAlgebra Q) (↑z : CliffordAlgebra Q) : CliffordAlgebra Q)
          ((ι Q : (a : M) → CliffordAlgebra Q) b : CliffordAlgebra Q) *
        (↑z⁻¹ : CliffordAlgebra Q) ∈
      (ι Q).range
b z' : M
hz' :
  (ι Q : (a : M) → CliffordAlgebra Q) z' =
    HMul.hMul (α := CliffordAlgebra Q) (β := CliffordAlgebra Q)
        ((involute : (a : CliffordAlgebra Q) → CliffordAlgebra Q) (↑z : CliffordAlgebra Q) : CliffordAlgebra Q)
        ((ι Q : (a : M) → CliffordAlgebra Q) b : CliffordAlgebra Q) *
      (↑z⁻¹ : CliffordAlgebra Q)
⊢ HMul.hMul (α := CliffordAlgebra Q)
        ((involute : (a : CliffordAlgebra Q) → CliffordAlgebra Q) (↑y : CliffordAlgebra Q) : CliffordAlgebra Q)
        (HMul.hMul (α := CliffordAlgebra Q) (β := CliffordAlgebra Q)
            ((involute : (a : CliffordAlgebra Q) → CliffordAlgebra Q) (↑z : CliffordAlgebra Q) : CliffordAlgebra Q)
            ((ι Q : (a : M) → CliffordAlgebra Q) b : CliffordAlgebra Q) *
          (↑z⁻¹ : CliffordAlgebra Q)) *
      (↑y⁻¹ : CliffordAlgebra Q) ∈
    (ι Q).range
have mul : ∀ (y' : M)
  (hy' :
    (ι Q : (a : M) → CliffordAlgebra Q) y' =
      HMul.hMul (α := CliffordAlgebra Q) (β := CliffordAlgebra Q)
          ((involute : (a : CliffordAlgebra Q) → CliffordAlgebra Q) (↑y : CliffordAlgebra Q) : CliffordAlgebra Q)
          ((ι Q : (a : M) → CliffordAlgebra Q) z' : CliffordAlgebra Q) *
        (↑y⁻¹ : CliffordAlgebra Q)),
  HMul.hMul (α := CliffordAlgebra Q)
        ((involute : (a : CliffordAlgebra Q) → CliffordAlgebra Q) (↑y : CliffordAlgebra Q) : CliffordAlgebra Q)
        (HMul.hMul (α := CliffordAlgebra Q) (β := CliffordAlgebra Q)
            ((involute : (a : CliffordAlgebra Q) → CliffordAlgebra Q) (↑z : CliffordAlgebra Q) : CliffordAlgebra Q)
            ((ι Q : (a : M) → CliffordAlgebra Q) b : CliffordAlgebra Q) *
          (↑z⁻¹ : CliffordAlgebra Q)) *
      (↑y⁻¹ : CliffordAlgebra Q) ∈
    (ι Q).range
Tactic: obtain ⟨y', hy'⟩ := hy z'