l3lab/ntp-mathlib huggingface dataset:
instance : Zero (LeftInvariantDerivation I G) :=
  ⟨⟨0, fun g => by 

Proof state:
𝕜 : Type u_1
inst✝⁹ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace 𝕜 E
H : Type u_3
inst✝⁶ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
G : Type u_4
inst✝⁵ : TopologicalSpace G
inst✝⁴ : ChartedSpace H G
inst✝³ : Monoid G
inst✝² : SmoothMul I G
g✝ h : G
M : Type u_5
inst✝¹ : TopologicalSpace M
inst✝ : ChartedSpace H M
x : M
r : 𝕜
X Y : LeftInvariantDerivation I G
f f' : C^⊤⟮I, G; 𝓘(𝕜, 𝕜), 𝕜⟯
g : G
⊢ (𝒅ₕ (_ : (𝑳 I g) 1 = g)) ((Derivation.evalAt 1) 0) = (Derivation.evalAt g) 0

Next tactic:
simp only [_root_.map_zero]
instance : Add (LeftInvariantDerivation I G) where
  add X Y :=
    ⟨X + Y, fun g => by
      

Proof state:
𝕜 : Type u_1
inst✝⁹ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace 𝕜 E
H : Type u_3
inst✝⁶ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
G : Type u_4
inst✝⁵ : TopologicalSpace G
inst✝⁴ : ChartedSpace H G
inst✝³ : Monoid G
inst✝² : SmoothMul I G
g✝ h : G
M : Type u_5
inst✝¹ : TopologicalSpace M
inst✝ : ChartedSpace H M
x : M
r : 𝕜
X✝ Y✝ : LeftInvariantDerivation I G
f f' : C^⊤⟮I, G; 𝓘(𝕜, 𝕜), 𝕜⟯
X Y : LeftInvariantDerivation I G
g : G
⊢ (𝒅ₕ (_ : (𝑳 I g) 1 = g)) ((Derivation.evalAt 1) (↑X + ↑Y)) = (Derivation.evalAt g) (↑X + ↑Y)

Next tactic:
simp only [map_add, Derivation.coe_add, left_invariant', Pi.add_apply]
instance : Neg (LeftInvariantDerivation I G) where
  neg X := ⟨-X, fun g => by
    -- porting note: was simp [left_invariant']
    -- `rw` fails without detailed type annotations too; also it needs a lot of time
    

Proof state:
𝕜 : Type u_1
inst✝⁹ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace 𝕜 E
H : Type u_3
inst✝⁶ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
G : Type u_4
inst✝⁵ : TopologicalSpace G
inst✝⁴ : ChartedSpace H G
inst✝³ : Monoid G
inst✝² : SmoothMul I G
g✝ h : G
M : Type u_5
inst✝¹ : TopologicalSpace M
inst✝ : ChartedSpace H M
x : M
r : 𝕜
X✝ Y : LeftInvariantDerivation I G
f f' : C^⊤⟮I, G; 𝓘(𝕜, 𝕜), 𝕜⟯
X : LeftInvariantDerivation I G
g : G
⊢ (𝒅ₕ (_ : (𝑳 I g) 1 = g)) ((Derivation.evalAt 1) (-↑X)) = (Derivation.evalAt g) (-↑X)

Next tactic:
rw [map_neg (Derivation.evalAt (𝕜 := 𝕜) (1 : G)), map_neg (𝒅ₕ (smoothLeftMul_one I g)),
      left_invariant', map_neg (Derivation.evalAt (𝕜 := 𝕜) g)]
instance : Sub (LeftInvariantDerivation I G) where
  sub X Y := ⟨X - Y, fun g => by
    -- porting note: was simp [left_invariant']
    -- `rw` fails without detailed type annotations too; also it needs a lot of time
    

Proof state:
𝕜 : Type u_1
inst✝⁹ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace 𝕜 E
H : Type u_3
inst✝⁶ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
G : Type u_4
inst✝⁵ : TopologicalSpace G
inst✝⁴ : ChartedSpace H G
inst✝³ : Monoid G
inst✝² : SmoothMul I G
g✝ h : G
M : Type u_5
inst✝¹ : TopologicalSpace M
inst✝ : ChartedSpace H M
x : M
r : 𝕜
X✝ Y✝ : LeftInvariantDerivation I G
f f' : C^⊤⟮I, G; 𝓘(𝕜, 𝕜), 𝕜⟯
X Y : LeftInvariantDerivation I G
g : G
⊢ (𝒅ₕ (_ : (𝑳 I g) 1 = g)) ((Derivation.evalAt 1) (↑X - ↑Y)) = (Derivation.evalAt g) (↑X - ↑Y)

Next tactic:
rw [map_sub (Derivation.evalAt (𝕜 := 𝕜) (1 : G)), map_sub (𝒅ₕ (smoothLeftMul_one I g)),
      map_sub (Derivation.evalAt (𝕜 := 𝕜) g), left_invariant', left_invariant']
instance hasNatScalar : SMul ℕ (LeftInvariantDerivation I G) where
  smul r X := ⟨r • X.1, fun g => by 

Proof state:
𝕜 : Type u_1
inst✝⁹ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace 𝕜 E
H : Type u_3
inst✝⁶ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
G : Type u_4
inst✝⁵ : TopologicalSpace G
inst✝⁴ : ChartedSpace H G
inst✝³ : Monoid G
inst✝² : SmoothMul I G
g✝ h : G
M : Type u_5
inst✝¹ : TopologicalSpace M
inst✝ : ChartedSpace H M
x : M
r✝ : 𝕜
X✝ Y : LeftInvariantDerivation I G
f f' : C^⊤⟮I, G; 𝓘(𝕜, 𝕜), 𝕜⟯
r : ℕ
X : LeftInvariantDerivation I G
g : G
⊢ (𝒅ₕ (_ : (𝑳 I g) 1 = g)) ((Derivation.evalAt 1) (r • ↑X)) = (Derivation.evalAt g) (r • ↑X)

Next tactic:
simp_rw [LinearMap.map_smul_of_tower _ r, left_invariant']
instance hasIntScalar : SMul ℤ (LeftInvariantDerivation I G) where
  smul r X := ⟨r • X.1, fun g => by 

Proof state:
𝕜 : Type u_1
inst✝⁹ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace 𝕜 E
H : Type u_3
inst✝⁶ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
G : Type u_4
inst✝⁵ : TopologicalSpace G
inst✝⁴ : ChartedSpace H G
inst✝³ : Monoid G
inst✝² : SmoothMul I G
g✝ h : G
M : Type u_5
inst✝¹ : TopologicalSpace M
inst✝ : ChartedSpace H M
x : M
r✝ : 𝕜
X✝ Y : LeftInvariantDerivation I G
f f' : C^⊤⟮I, G; 𝓘(𝕜, 𝕜), 𝕜⟯
r : ℤ
X : LeftInvariantDerivation I G
g : G
⊢ (𝒅ₕ (_ : (𝑳 I g) 1 = g)) ((Derivation.evalAt 1) (r • ↑X)) = (Derivation.evalAt g) (r • ↑X)

Next tactic:
simp_rw [LinearMap.map_smul_of_tower _ r, left_invariant']
instance : SMul 𝕜 (LeftInvariantDerivation I G) where
  smul r X := ⟨r • X.1, fun g => by 

Proof state:
𝕜 : Type u_1
inst✝⁹ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace 𝕜 E
H : Type u_3
inst✝⁶ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
G : Type u_4
inst✝⁵ : TopologicalSpace G
inst✝⁴ : ChartedSpace H G
inst✝³ : Monoid G
inst✝² : SmoothMul I G
g✝ h : G
M : Type u_5
inst✝¹ : TopologicalSpace M
inst✝ : ChartedSpace H M
x : M
r✝ : 𝕜
X✝ Y : LeftInvariantDerivation I G
f f' : C^⊤⟮I, G; 𝓘(𝕜, 𝕜), 𝕜⟯
r : 𝕜
X : LeftInvariantDerivation I G
g : G
⊢ (𝒅ₕ (_ : (𝑳 I g) 1 = g)) ((Derivation.evalAt 1) (r • ↑X)) = (Derivation.evalAt g) (r • ↑X)

Next tactic:
simp_rw [LinearMap.map_smul, left_invariant']
theorem evalAt_mul : evalAt (g * h) X = 𝒅ₕ (L_apply I g h) (evalAt h X) := by
  

Proof state:
𝕜 : Type u_1
inst✝⁹ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace 𝕜 E
H : Type u_3
inst✝⁶ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
G : Type u_4
inst✝⁵ : TopologicalSpace G
inst✝⁴ : ChartedSpace H G
inst✝³ : Monoid G
inst✝² : SmoothMul I G
g h : G
M : Type u_5
inst✝¹ : TopologicalSpace M
inst✝ : ChartedSpace H M
x : M
r : 𝕜
X Y : LeftInvariantDerivation I G
f f' : C^⊤⟮I, G; 𝓘(𝕜, 𝕜), 𝕜⟯
⊢ (evalAt (g * h)) X = (𝒅ₕ (_ : (𝑳 I g) h = g * h)) ((evalAt h) X)

Next tactic:
ext f
theorem evalAt_mul : evalAt (g * h) X = 𝒅ₕ (L_apply I g h) (evalAt h X) := by
  ext f
  

Proof state:
case H
𝕜 : Type u_1
inst✝⁹ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace 𝕜 E
H : Type u_3
inst✝⁶ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
G : Type u_4
inst✝⁵ : TopologicalSpace G
inst✝⁴ : ChartedSpace H G
inst✝³ : Monoid G
inst✝² : SmoothMul I G
g h : G
M : Type u_5
inst✝¹ : TopologicalSpace M
inst✝ : ChartedSpace H M
x : M
r : 𝕜
X Y : LeftInvariantDerivation I G
f✝ f' : C^⊤⟮I, G; 𝓘(𝕜, 𝕜), 𝕜⟯
f : C^⊤⟮I, G; 𝕜⟯⟨g * h⟩
⊢ ((evalAt (g * h)) X) f = ((𝒅ₕ (_ : (𝑳 I g) h = g * h)) ((evalAt h) X)) f

Next tactic:
rw [← left_invariant, apply_hfdifferential, apply_hfdifferential, L_mul, fdifferential_comp,
    apply_fdifferential]
theorem evalAt_mul : evalAt (g * h) X = 𝒅ₕ (L_apply I g h) (evalAt h X) := by
  ext f
  rw [← left_invariant, apply_hfdifferential, apply_hfdifferential, L_mul, fdifferential_comp,
    apply_fdifferential]
  -- Porting note: more agressive here
  

Proof state:
case H
𝕜 : Type u_1
inst✝⁹ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace 𝕜 E
H : Type u_3
inst✝⁶ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
G : Type u_4
inst✝⁵ : TopologicalSpace G
inst✝⁴ : ChartedSpace H G
inst✝³ : Monoid G
inst✝² : SmoothMul I G
g h : G
M : Type u_5
inst✝¹ : TopologicalSpace M
inst✝ : ChartedSpace H M
x : M
r : 𝕜
X Y : LeftInvariantDerivation I G
f✝ f' : C^⊤⟮I, G; 𝓘(𝕜, 𝕜), 𝕜⟯
f : C^⊤⟮I, G; 𝕜⟯⟨g * h⟩
⊢ ((𝒅 (𝑳 I g) ((𝑳 I h) 1) ∘ₗ 𝒅 (𝑳 I h) 1) ((evalAt 1) X)) f = ((evalAt h) X) (ContMDiffMap.comp f (𝑳 I g))

Next tactic:
erw [LinearMap.comp_apply]
theorem evalAt_mul : evalAt (g * h) X = 𝒅ₕ (L_apply I g h) (evalAt h X) := by
  ext f
  rw [← left_invariant, apply_hfdifferential, apply_hfdifferential, L_mul, fdifferential_comp,
    apply_fdifferential]
  -- Porting note: more agressive here
  erw [LinearMap.comp_apply]
  -- This used to be `rw`, but we need `erw` after leanprover/lean4#2644
  

Proof state:
case H
𝕜 : Type u_1
inst✝⁹ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace 𝕜 E
H : Type u_3
inst✝⁶ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
G : Type u_4
inst✝⁵ : TopologicalSpace G
inst✝⁴ : ChartedSpace H G
inst✝³ : Monoid G
inst✝² : SmoothMul I G
g h : G
M : Type u_5
inst✝¹ : TopologicalSpace M
inst✝ : ChartedSpace H M
x : M
r : 𝕜
X Y : LeftInvariantDerivation I G
f✝ f' : C^⊤⟮I, G; 𝓘(𝕜, 𝕜), 𝕜⟯
f : C^⊤⟮I, G; 𝕜⟯⟨g * h⟩
⊢ ((𝒅 (𝑳 I g) ((𝑳 I h) 1)) ((𝒅 (𝑳 I h) 1) ((evalAt 1) X))) f = ((evalAt h) X) (ContMDiffMap.comp f (𝑳 I g))

Next tactic:
erw [apply_fdifferential, ← apply_hfdifferential, left_invariant]
theorem comp_L : (X f).comp (𝑳 I g) = X (f.comp (𝑳 I g)) := by
  

Proof state:
𝕜 : Type u_1
inst✝⁹ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace 𝕜 E
H : Type u_3
inst✝⁶ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
G : Type u_4
inst✝⁵ : TopologicalSpace G
inst✝⁴ : ChartedSpace H G
inst✝³ : Monoid G
inst✝² : SmoothMul I G
g h : G
M : Type u_5
inst✝¹ : TopologicalSpace M
inst✝ : ChartedSpace H M
x : M
r : 𝕜
X Y : LeftInvariantDerivation I G
f f' : C^⊤⟮I, G; 𝓘(𝕜, 𝕜), 𝕜⟯
⊢ ContMDiffMap.comp (X f) (𝑳 I g) = X (ContMDiffMap.comp f (𝑳 I g))

Next tactic:
ext h
theorem comp_L : (X f).comp (𝑳 I g) = X (f.comp (𝑳 I g)) := by
  ext h
  

Proof state:
case h
𝕜 : Type u_1
inst✝⁹ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace 𝕜 E
H : Type u_3
inst✝⁶ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
G : Type u_4
inst✝⁵ : TopologicalSpace G
inst✝⁴ : ChartedSpace H G
inst✝³ : Monoid G
inst✝² : SmoothMul I G
g h✝ : G
M : Type u_5
inst✝¹ : TopologicalSpace M
inst✝ : ChartedSpace H M
x : M
r : 𝕜
X Y : LeftInvariantDerivation I G
f f' : C^⊤⟮I, G; 𝓘(𝕜, 𝕜), 𝕜⟯
h : G
⊢ (ContMDiffMap.comp (X f) (𝑳 I g)) h = (X (ContMDiffMap.comp f (𝑳 I g))) h

Next tactic:
rw [ContMDiffMap.comp_apply, L_apply, ← evalAt_apply, evalAt_mul, apply_hfdifferential,
    apply_fdifferential, evalAt_apply]
instance : Bracket (LeftInvariantDerivation I G) (LeftInvariantDerivation I G) where
  bracket X Y :=
    ⟨⁅(X : Derivation 𝕜 C^∞⟮I, G; 𝕜⟯ C^∞⟮I, G; 𝕜⟯), Y⁆, fun g => by
      

Proof state:
𝕜 : Type u_1
inst✝⁹ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace 𝕜 E
H : Type u_3
inst✝⁶ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
G : Type u_4
inst✝⁵ : TopologicalSpace G
inst✝⁴ : ChartedSpace H G
inst✝³ : Monoid G
inst✝² : SmoothMul I G
g✝ h : G
M : Type u_5
inst✝¹ : TopologicalSpace M
inst✝ : ChartedSpace H M
x : M
r : 𝕜
X✝ Y✝ : LeftInvariantDerivation I G
f f' : C^⊤⟮I, G; 𝓘(𝕜, 𝕜), 𝕜⟯
X Y : LeftInvariantDerivation I G
g : G
⊢ (𝒅ₕ (_ : (𝑳 I g) 1 = g)) ((Derivation.evalAt 1) ⁅↑X, ↑Y⁆) = (Derivation.evalAt g) ⁅↑X, ↑Y⁆

Next tactic:
ext f
instance : Bracket (LeftInvariantDerivation I G) (LeftInvariantDerivation I G) where
  bracket X Y :=
    ⟨⁅(X : Derivation 𝕜 C^∞⟮I, G; 𝕜⟯ C^∞⟮I, G; 𝕜⟯), Y⁆, fun g => by
      ext f
      

Proof state:
case H
𝕜 : Type u_1
inst✝⁹ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace 𝕜 E
H : Type u_3
inst✝⁶ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
G : Type u_4
inst✝⁵ : TopologicalSpace G
inst✝⁴ : ChartedSpace H G
inst✝³ : Monoid G
inst✝² : SmoothMul I G
g✝ h : G
M : Type u_5
inst✝¹ : TopologicalSpace M
inst✝ : ChartedSpace H M
x : M
r : 𝕜
X✝ Y✝ : LeftInvariantDerivation I G
f✝ f' : C^⊤⟮I, G; 𝓘(𝕜, 𝕜), 𝕜⟯
X Y : LeftInvariantDerivation I G
g : G
f : C^⊤⟮I, G; 𝕜⟯⟨g⟩
⊢ ((𝒅ₕ (_ : (𝑳 I g) 1 = g)) ((Derivation.evalAt 1) ⁅↑X, ↑Y⁆)) f = ((Derivation.evalAt g) ⁅↑X, ↑Y⁆) f

Next tactic:
have hX := Derivation.congr_fun (left_invariant' g X) (Y f)
instance : Bracket (LeftInvariantDerivation I G) (LeftInvariantDerivation I G) where
  bracket X Y :=
    ⟨⁅(X : Derivation 𝕜 C^∞⟮I, G; 𝕜⟯ C^∞⟮I, G; 𝕜⟯), Y⁆, fun g => by
      ext f
      have hX := Derivation.congr_fun (left_invariant' g X) (Y f)
      

Proof state:
case H
𝕜 : Type u_1
inst✝⁹ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace 𝕜 E
H : Type u_3
inst✝⁶ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
G : Type u_4
inst✝⁵ : TopologicalSpace G
inst✝⁴ : ChartedSpace H G
inst✝³ : Monoid G
inst✝² : SmoothMul I G
g✝ h : G
M : Type u_5
inst✝¹ : TopologicalSpace M
inst✝ : ChartedSpace H M
x : M
r : 𝕜
X✝ Y✝ : LeftInvariantDerivation I G
f✝ f' : C^⊤⟮I, G; 𝓘(𝕜, 𝕜), 𝕜⟯
X Y : LeftInvariantDerivation I G
g : G
f : C^⊤⟮I, G; 𝕜⟯⟨g⟩
hX : ((𝒅ₕ (_ : (𝑳 I g) 1 = g)) ((Derivation.evalAt 1) ↑X)) (Y f) = ((Derivation.evalAt g) ↑X) (Y f)
⊢ ((𝒅ₕ (_ : (𝑳 I g) 1 = g)) ((Derivation.evalAt 1) ⁅↑X, ↑Y⁆)) f = ((Derivation.evalAt g) ⁅↑X, ↑Y⁆) f

Next tactic:
have hY := Derivation.congr_fun (left_invariant' g Y) (X f)
instance : Bracket (LeftInvariantDerivation I G) (LeftInvariantDerivation I G) where
  bracket X Y :=
    ⟨⁅(X : Derivation 𝕜 C^∞⟮I, G; 𝕜⟯ C^∞⟮I, G; 𝕜⟯), Y⁆, fun g => by
      ext f
      have hX := Derivation.congr_fun (left_invariant' g X) (Y f)
      have hY := Derivation.congr_fun (left_invariant' g Y) (X f)
      

Proof state:
case H
𝕜 : Type u_1
inst✝⁹ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace 𝕜 E
H : Type u_3
inst✝⁶ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
G : Type u_4
inst✝⁵ : TopologicalSpace G
inst✝⁴ : ChartedSpace H G
inst✝³ : Monoid G
inst✝² : SmoothMul I G
g✝ h : G
M : Type u_5
inst✝¹ : TopologicalSpace M
inst✝ : ChartedSpace H M
x : M
r : 𝕜
X✝ Y✝ : LeftInvariantDerivation I G
f✝ f' : C^⊤⟮I, G; 𝓘(𝕜, 𝕜), 𝕜⟯
X Y : LeftInvariantDerivation I G
g : G
f : C^⊤⟮I, G; 𝕜⟯⟨g⟩
hX : ((𝒅ₕ (_ : (𝑳 I g) 1 = g)) ((Derivation.evalAt 1) ↑X)) (Y f) = ((Derivation.evalAt g) ↑X) (Y f)
hY : ((𝒅ₕ (_ : (𝑳 I g) 1 = g)) ((Derivation.evalAt 1) ↑Y)) (X f) = ((Derivation.evalAt g) ↑Y) (X f)
⊢ ((𝒅ₕ (_ : (𝑳 I g) 1 = g)) ((Derivation.evalAt 1) ⁅↑X, ↑Y⁆)) f = ((Derivation.evalAt g) ⁅↑X, ↑Y⁆) f

Next tactic:
rw [apply_hfdifferential, apply_fdifferential, Derivation.evalAt_apply] at hX hY ⊢
instance : Bracket (LeftInvariantDerivation I G) (LeftInvariantDerivation I G) where
  bracket X Y :=
    ⟨⁅(X : Derivation 𝕜 C^∞⟮I, G; 𝕜⟯ C^∞⟮I, G; 𝕜⟯), Y⁆, fun g => by
      ext f
      have hX := Derivation.congr_fun (left_invariant' g X) (Y f)
      have hY := Derivation.congr_fun (left_invariant' g Y) (X f)
      rw [apply_hfdifferential, apply_fdifferential, Derivation.evalAt_apply] at hX hY ⊢
      

Proof state:
case H
𝕜 : Type u_1
inst✝⁹ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace 𝕜 E
H : Type u_3
inst✝⁶ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
G : Type u_4
inst✝⁵ : TopologicalSpace G
inst✝⁴ : ChartedSpace H G
inst✝³ : Monoid G
inst✝² : SmoothMul I G
g✝ h : G
M : Type u_5
inst✝¹ : TopologicalSpace M
inst✝ : ChartedSpace H M
x : M
r : 𝕜
X✝ Y✝ : LeftInvariantDerivation I G
f✝ f' : C^⊤⟮I, G; 𝓘(𝕜, 𝕜), 𝕜⟯
X Y : LeftInvariantDerivation I G
g : G
f : C^⊤⟮I, G; 𝕜⟯⟨g⟩
hX : (↑X (ContMDiffMap.comp (Y f) (𝑳 I g))) 1 = ((Derivation.evalAt g) ↑X) (Y f)
hY : (↑Y (ContMDiffMap.comp (X f) (𝑳 I g))) 1 = ((Derivation.evalAt g) ↑Y) (X f)
⊢ (⁅↑X, ↑Y⁆ (ContMDiffMap.comp f (𝑳 I g))) 1 = ((Derivation.evalAt g) ⁅↑X, ↑Y⁆) f

Next tactic:
rw [comp_L] at hX hY
instance : Bracket (LeftInvariantDerivation I G) (LeftInvariantDerivation I G) where
  bracket X Y :=
    ⟨⁅(X : Derivation 𝕜 C^∞⟮I, G; 𝕜⟯ C^∞⟮I, G; 𝕜⟯), Y⁆, fun g => by
      ext f
      have hX := Derivation.congr_fun (left_invariant' g X) (Y f)
      have hY := Derivation.congr_fun (left_invariant' g Y) (X f)
      rw [apply_hfdifferential, apply_fdifferential, Derivation.evalAt_apply] at hX hY ⊢
      rw [comp_L] at hX hY
      

Proof state:
case H
𝕜 : Type u_1
inst✝⁹ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace 𝕜 E
H : Type u_3
inst✝⁶ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
G : Type u_4
inst✝⁵ : TopologicalSpace G
inst✝⁴ : ChartedSpace H G
inst✝³ : Monoid G
inst✝² : SmoothMul I G
g✝ h : G
M : Type u_5
inst✝¹ : TopologicalSpace M
inst✝ : ChartedSpace H M
x : M
r : 𝕜
X✝ Y✝ : LeftInvariantDerivation I G
f✝ f' : C^⊤⟮I, G; 𝓘(𝕜, 𝕜), 𝕜⟯
X Y : LeftInvariantDerivation I G
g : G
f : C^⊤⟮I, G; 𝕜⟯⟨g⟩
hX : (↑X (Y (ContMDiffMap.comp f (𝑳 I g)))) 1 = ((Derivation.evalAt g) ↑X) (Y f)
hY : (↑Y (X (ContMDiffMap.comp f (𝑳 I g)))) 1 = ((Derivation.evalAt g) ↑Y) (X f)
⊢ (⁅↑X, ↑Y⁆ (ContMDiffMap.comp f (𝑳 I g))) 1 = ((Derivation.evalAt g) ⁅↑X, ↑Y⁆) f

Next tactic:
rw [Derivation.commutator_apply, SmoothMap.coe_sub, Pi.sub_apply, coe_derivation]
instance : Bracket (LeftInvariantDerivation I G) (LeftInvariantDerivation I G) where
  bracket X Y :=
    ⟨⁅(X : Derivation 𝕜 C^∞⟮I, G; 𝕜⟯ C^∞⟮I, G; 𝕜⟯), Y⁆, fun g => by
      ext f
      have hX := Derivation.congr_fun (left_invariant' g X) (Y f)
      have hY := Derivation.congr_fun (left_invariant' g Y) (X f)
      rw [apply_hfdifferential, apply_fdifferential, Derivation.evalAt_apply] at hX hY ⊢
      rw [comp_L] at hX hY
      rw [Derivation.commutator_apply, SmoothMap.coe_sub, Pi.sub_apply, coe_derivation]
      

Proof state:
case H
𝕜 : Type u_1
inst✝⁹ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace 𝕜 E
H : Type u_3
inst✝⁶ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
G : Type u_4
inst✝⁵ : TopologicalSpace G
inst✝⁴ : ChartedSpace H G
inst✝³ : Monoid G
inst✝² : SmoothMul I G
g✝ h : G
M : Type u_5
inst✝¹ : TopologicalSpace M
inst✝ : ChartedSpace H M
x : M
r : 𝕜
X✝ Y✝ : LeftInvariantDerivation I G
f✝ f' : C^⊤⟮I, G; 𝓘(𝕜, 𝕜), 𝕜⟯
X Y : LeftInvariantDerivation I G
g : G
f : C^⊤⟮I, G; 𝕜⟯⟨g⟩
hX : (↑X (Y (ContMDiffMap.comp f (𝑳 I g)))) 1 = ((Derivation.evalAt g) ↑X) (Y f)
hY : (↑Y (X (ContMDiffMap.comp f (𝑳 I g)))) 1 = ((Derivation.evalAt g) ↑Y) (X f)
⊢ (X (↑Y (ContMDiffMap.comp f (𝑳 I g)))) 1 - (↑Y (X (ContMDiffMap.comp f (𝑳 I g)))) 1 =
    ((Derivation.evalAt g) ⁅↑X, ↑Y⁆) f

Next tactic:
rw [coe_derivation] at hX hY ⊢
instance : Bracket (LeftInvariantDerivation I G) (LeftInvariantDerivation I G) where
  bracket X Y :=
    ⟨⁅(X : Derivation 𝕜 C^∞⟮I, G; 𝕜⟯ C^∞⟮I, G; 𝕜⟯), Y⁆, fun g => by
      ext f
      have hX := Derivation.congr_fun (left_invariant' g X) (Y f)
      have hY := Derivation.congr_fun (left_invariant' g Y) (X f)
      rw [apply_hfdifferential, apply_fdifferential, Derivation.evalAt_apply] at hX hY ⊢
      rw [comp_L] at hX hY
      rw [Derivation.commutator_apply, SmoothMap.coe_sub, Pi.sub_apply, coe_derivation]
      rw [coe_derivation] at hX hY ⊢
      

Proof state:
case H
𝕜 : Type u_1
inst✝⁹ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace 𝕜 E
H : Type u_3
inst✝⁶ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
G : Type u_4
inst✝⁵ : TopologicalSpace G
inst✝⁴ : ChartedSpace H G
inst✝³ : Monoid G
inst✝² : SmoothMul I G
g✝ h : G
M : Type u_5
inst✝¹ : TopologicalSpace M
inst✝ : ChartedSpace H M
x : M
r : 𝕜
X✝ Y✝ : LeftInvariantDerivation I G
f✝ f' : C^⊤⟮I, G; 𝓘(𝕜, 𝕜), 𝕜⟯
X Y : LeftInvariantDerivation I G
g : G
f : C^⊤⟮I, G; 𝕜⟯⟨g⟩
hX : (X (Y (ContMDiffMap.comp f (𝑳 I g)))) 1 = ((Derivation.evalAt g) ↑X) (Y f)
hY : (Y (X (ContMDiffMap.comp f (𝑳 I g)))) 1 = ((Derivation.evalAt g) ↑Y) (X f)
⊢ (X (Y (ContMDiffMap.comp f (𝑳 I g)))) 1 - (Y (X (ContMDiffMap.comp f (𝑳 I g)))) 1 = ((Derivation.evalAt g) ⁅↑X, ↑Y⁆) f

Next tactic:
rw [hX, hY]
instance : Bracket (LeftInvariantDerivation I G) (LeftInvariantDerivation I G) where
  bracket X Y :=
    ⟨⁅(X : Derivation 𝕜 C^∞⟮I, G; 𝕜⟯ C^∞⟮I, G; 𝕜⟯), Y⁆, fun g => by
      ext f
      have hX := Derivation.congr_fun (left_invariant' g X) (Y f)
      have hY := Derivation.congr_fun (left_invariant' g Y) (X f)
      rw [apply_hfdifferential, apply_fdifferential, Derivation.evalAt_apply] at hX hY ⊢
      rw [comp_L] at hX hY
      rw [Derivation.commutator_apply, SmoothMap.coe_sub, Pi.sub_apply, coe_derivation]
      rw [coe_derivation] at hX hY ⊢
      rw [hX, hY]
      

Proof state:
case H
𝕜 : Type u_1
inst✝⁹ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace 𝕜 E
H : Type u_3
inst✝⁶ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
G : Type u_4
inst✝⁵ : TopologicalSpace G
inst✝⁴ : ChartedSpace H G
inst✝³ : Monoid G
inst✝² : SmoothMul I G
g✝ h : G
M : Type u_5
inst✝¹ : TopologicalSpace M
inst✝ : ChartedSpace H M
x : M
r : 𝕜
X✝ Y✝ : LeftInvariantDerivation I G
f✝ f' : C^⊤⟮I, G; 𝓘(𝕜, 𝕜), 𝕜⟯
X Y : LeftInvariantDerivation I G
g : G
f : C^⊤⟮I, G; 𝕜⟯⟨g⟩
hX : (X (Y (ContMDiffMap.comp f (𝑳 I g)))) 1 = ((Derivation.evalAt g) ↑X) (Y f)
hY : (Y (X (ContMDiffMap.comp f (𝑳 I g)))) 1 = ((Derivation.evalAt g) ↑Y) (X f)
⊢ ((Derivation.evalAt g) ↑X) (Y f) - ((Derivation.evalAt g) ↑Y) (X f) = ((Derivation.evalAt g) ⁅↑X, ↑Y⁆) f

Next tactic:
rfl
instance : LieRing (LeftInvariantDerivation I G) where
  add_lie X Y Z := by
    

Proof state:
𝕜 : Type u_1
inst✝⁹ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace 𝕜 E
H : Type u_3
inst✝⁶ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
G : Type u_4
inst✝⁵ : TopologicalSpace G
inst✝⁴ : ChartedSpace H G
inst✝³ : Monoid G
inst✝² : SmoothMul I G
g h : G
M : Type u_5
inst✝¹ : TopologicalSpace M
inst✝ : ChartedSpace H M
x : M
r : 𝕜
X✝ Y✝ : LeftInvariantDerivation I G
f f' : C^⊤⟮I, G; 𝓘(𝕜, 𝕜), 𝕜⟯
X Y Z : LeftInvariantDerivation I G
⊢ ⁅X + Y, Z⁆ = ⁅X, Z⁆ + ⁅Y, Z⁆

Next tactic:
ext1
instance : LieRing (LeftInvariantDerivation I G) where
  add_lie X Y Z := by
    ext1
    

Proof state:
case h
𝕜 : Type u_1
inst✝⁹ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace 𝕜 E
H : Type u_3
inst✝⁶ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
G : Type u_4
inst✝⁵ : TopologicalSpace G
inst✝⁴ : ChartedSpace H G
inst✝³ : Monoid G
inst✝² : SmoothMul I G
g h : G
M : Type u_5
inst✝¹ : TopologicalSpace M
inst✝ : ChartedSpace H M
x : M
r : 𝕜
X✝ Y✝ : LeftInvariantDerivation I G
f f' : C^⊤⟮I, G; 𝓘(𝕜, 𝕜), 𝕜⟯
X Y Z : LeftInvariantDerivation I G
f✝ : C^⊤⟮I, G; 𝓘(𝕜, 𝕜), 𝕜⟯
⊢ ⁅X + Y, Z⁆ f✝ = (⁅X, Z⁆ + ⁅Y, Z⁆) f✝

Next tactic:
simp only [commutator_apply, coe_add, Pi.add_apply, map_add]
instance : LieRing (LeftInvariantDerivation I G) where
  add_lie X Y Z := by
    ext1
    simp only [commutator_apply, coe_add, Pi.add_apply, map_add]
    

Proof state:
case h
𝕜 : Type u_1
inst✝⁹ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace 𝕜 E
H : Type u_3
inst✝⁶ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
G : Type u_4
inst✝⁵ : TopologicalSpace G
inst✝⁴ : ChartedSpace H G
inst✝³ : Monoid G
inst✝² : SmoothMul I G
g h : G
M : Type u_5
inst✝¹ : TopologicalSpace M
inst✝ : ChartedSpace H M
x : M
r : 𝕜
X✝ Y✝ : LeftInvariantDerivation I G
f f' : C^⊤⟮I, G; 𝓘(𝕜, 𝕜), 𝕜⟯
X Y Z : LeftInvariantDerivation I G
f✝ : C^⊤⟮I, G; 𝓘(𝕜, 𝕜), 𝕜⟯
⊢ X (Z f✝) + Y (Z f✝) - (Z (X f✝) + Z (Y f✝)) = X (Z f✝) - Z (X f✝) + (Y (Z f✝) - Z (Y f✝))

Next tactic:
ring
instance : LieRing (LeftInvariantDerivation I G) where
  add_lie X Y Z := by
    ext1
    simp only [commutator_apply, coe_add, Pi.add_apply, map_add]
    ring
  lie_add X Y Z := by
    

Proof state:
𝕜 : Type u_1
inst✝⁹ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace 𝕜 E
H : Type u_3
inst✝⁶ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
G : Type u_4
inst✝⁵ : TopologicalSpace G
inst✝⁴ : ChartedSpace H G
inst✝³ : Monoid G
inst✝² : SmoothMul I G
g h : G
M : Type u_5
inst✝¹ : TopologicalSpace M
inst✝ : ChartedSpace H M
x : M
r : 𝕜
X✝ Y✝ : LeftInvariantDerivation I G
f f' : C^⊤⟮I, G; 𝓘(𝕜, 𝕜), 𝕜⟯
X Y Z : LeftInvariantDerivation I G
⊢ ⁅X, Y + Z⁆ = ⁅X, Y⁆ + ⁅X, Z⁆

Next tactic:
ext1