1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: CategoryTheory.Idempotents.Karoubi.ext
File: Mathlib/CategoryTheory/Idempotents/Karoubi.lean

tactic: cases P
state_before: C : Type u_1
inst✝ : Category.{u_2, u_1} C
P Q : Karoubi C
h_X : P.X = Q.X
h_p : P.p ≫ eqToHom h_X = eqToHom h_X ≫ Q.p
⊢ P = Q
state_after: case mk
C : Type u_1
inst✝ : Category.{u_2, u_1} C
Q : Karoubi C
X✝ : C
p✝ : X✝ ⟶ X✝
idem✝ : p✝ ≫ p✝ = p✝
h_X : { X := X✝, p := p✝, idem := idem✝ }.X = Q.X
h_p : { X := X✝, p := p✝, idem := idem✝ }.p ≫ eqToHom h_X = eqToHom h_X ≫ Q.p
⊢ { X := X✝, p := p✝, idem := idem✝ } = Q

tactic: cases Q
state_before: case mk
C : Type u_1
inst✝ : Category.{u_2, u_1} C
Q : Karoubi C
X✝ : C
p✝ : X✝ ⟶ X✝
idem✝ : p✝ ≫ p✝ = p✝
h_X : { X := X✝, p := p✝, idem := idem✝ }.X = Q.X
h_p : { X := X✝, p := p✝, idem := idem✝ }.p ≫ eqToHom h_X = eqToHom h_X ≫ Q.p
⊢ { X := X✝, p := p✝, idem := idem✝ } = Q
state_after: case mk.mk
C : Type u_1
inst✝ : Category.{u_2, u_1} C
X✝¹ : C
p✝¹ : X✝¹ ⟶ X✝¹
idem✝¹ : p✝¹ ≫ p✝¹ = p✝¹
X✝ : C
p✝ : X✝ ⟶ X✝
idem✝ : p✝ ≫ p✝ = p✝
h_X : { X := X✝¹, p := p✝¹, idem := idem✝¹ }.X = { X := X✝, p := p✝, idem := idem✝ }.X
h_p : { X := X✝¹, p := p✝¹, idem := idem✝¹ }.p ≫ eqToHom h_X = eqToHom h_X ≫ { X := X✝, p := p✝, idem := idem✝ }.p
⊢ { X := X✝¹, p := p✝¹, idem := idem✝¹ } = { X := X✝, p := p✝, idem := idem✝ }

tactic: dsimp at h_X h_p
state_before: case mk.mk
C : Type u_1
inst✝ : Category.{u_2, u_1} C
X✝¹ : C
p✝¹ : X✝¹ ⟶ X✝¹
idem✝¹ : p✝¹ ≫ p✝¹ = p✝¹
X✝ : C
p✝ : X✝ ⟶ X✝
idem✝ : p✝ ≫ p✝ = p✝
h_X : { X := X✝¹, p := p✝¹, idem := idem✝¹ }.X = { X := X✝, p := p✝, idem := idem✝ }.X
h_p : { X := X✝¹, p := p✝¹, idem := idem✝¹ }.p ≫ eqToHom h_X = eqToHom h_X ≫ { X := X✝, p := p✝, idem := idem✝ }.p
⊢ { X := X✝¹, p := p✝¹, idem := idem✝¹ } = { X := X✝, p := p✝, idem := idem✝ }
state_after: case mk.mk
C : Type u_1
inst✝ : Category.{u_2, u_1} C
X✝¹ : C
p✝¹ : X✝¹ ⟶ X✝¹
idem✝¹ : p✝¹ ≫ p✝¹ = p✝¹
X✝ : C
p✝ : X✝ ⟶ X✝
idem✝ : p✝ ≫ p✝ = p✝
h_X : X✝¹ = X✝
h_p : p✝¹ ≫ eqToHom h_X = eqToHom h_X ≫ p✝
⊢ { X := X✝¹, p := p✝¹, idem := idem✝¹ } = { X := X✝, p := p✝, idem := idem✝ }

tactic: subst h_X
state_before: case mk.mk
C : Type u_1
inst✝ : Category.{u_2, u_1} C
X✝¹ : C
p✝¹ : X✝¹ ⟶ X✝¹
idem✝¹ : p✝¹ ≫ p✝¹ = p✝¹
X✝ : C
p✝ : X✝ ⟶ X✝
idem✝ : p✝ ≫ p✝ = p✝
h_X : X✝¹ = X✝
h_p : p✝¹ ≫ eqToHom h_X = eqToHom h_X ≫ p✝
⊢ { X := X✝¹, p := p✝¹, idem := idem✝¹ } = { X := X✝, p := p✝, idem := idem✝ }
state_after: case mk.mk
C : Type u_1
inst✝ : Category.{u_2, u_1} C
X✝ : C
p✝¹ : X✝ ⟶ X✝
idem✝¹ : p✝¹ ≫ p✝¹ = p✝¹
p✝ : X✝ ⟶ X✝
idem✝ : p✝ ≫ p✝ = p✝
h_p : p✝¹ ≫ eqToHom ⋯ = eqToHom ⋯ ≫ p✝
⊢ { X := X✝, p := p✝¹, idem := idem✝¹ } = { X := X✝, p := p✝, idem := idem✝ }

tactic: simpa only [mk.injEq, heq_eq_eq, true_and, eqToHom_refl, comp_id, id_comp] using h_p
state_before: case mk.mk
C : Type u_1
inst✝ : Category.{u_2, u_1} C
X✝ : C
p✝¹ : X✝ ⟶ X✝
idem✝¹ : p✝¹ ≫ p✝¹ = p✝¹
p✝ : X✝ ⟶ X✝
idem✝ : p✝ ≫ p✝ = p✝
h_p : p✝¹ ≫ eqToHom ⋯ = eqToHom ⋯ ≫ p✝
⊢ { X := X✝, p := p✝¹, idem := idem✝¹ } = { X := X✝, p := p✝, idem := idem✝ }
state_after: no goals
Theorem: HasDerivAt.div_const
File: Mathlib/Analysis/Calculus/Deriv/Mul.lean

tactic: simpa only [div_eq_mul_inv] using hc.mul_const d⁻¹
state_before: 𝕜 : Type u
inst✝⁸ : NontriviallyNormedField 𝕜
F : Type v
inst✝⁷ : NormedAddCommGroup F
inst✝⁶ : NormedSpace 𝕜 F
E : Type w
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
G : Type u_1
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
f f₀ f₁ g : 𝕜 → F
f' f₀' f₁' g' : F
x : 𝕜
s t : Set 𝕜
L L₁ L₂ : Filter 𝕜
𝕜' : Type u_2
inst✝¹ : NontriviallyNormedField 𝕜'
inst✝ : NormedAlgebra 𝕜 𝕜'
c d✝ : 𝕜 → 𝕜'
c' d' : 𝕜'
hc : HasDerivAt c c' x
d : 𝕜'
⊢ HasDerivAt (fun x => c x / d) (c' / d) x
state_after: no goals
Theorem: Complex.cos_eq
File: Mathlib/Data/Complex/Exponential.lean

tactic: convert cos_add_mul_I z.re z.im
state_before: x y z : ℂ
⊢ cos z = cos ↑z.re * cosh ↑z.im - sin ↑z.re * sinh ↑z.im * I
state_after: case h.e'_2.h.e'_1
x y z : ℂ
⊢ z = ↑z.re + ↑z.im * I

tactic: exact (re_add_im z).symm
state_before: case h.e'_2.h.e'_1
x y z : ℂ
⊢ z = ↑z.re + ↑z.im * I
state_after: no goals
Theorem: IsometryEquiv.preimage_sphere
File: Mathlib/Topology/MetricSpace/Isometry.lean

tactic: rw [← h.isometry.preimage_sphere (h.symm x) r, h.apply_symm_apply]
state_before: ι : Type u_1
α : Type u
β : Type v
γ : Type w
inst✝¹ : PseudoMetricSpace α
inst✝ : PseudoMetricSpace β
h✝ h : α ≃ᵢ β
x : β
r : ℝ
⊢ ⇑h ⁻¹' Metric.sphere x r = Metric.sphere (h.symm x) r
state_after: no goals
Theorem: smul_pi_subset
File: Mathlib/Algebra/Module/PointwisePi.lean

tactic: rintro x ⟨y, h, rfl⟩ i hi
state_before: K : Type u_1
ι : Type u_2
R : ι → Type u_3
inst✝ : (i : ι) → SMul K (R i)
r : K
s : Set ι
t : (i : ι) → Set (R i)
⊢ r • s.pi t ⊆ s.pi (r • t)
state_after: case intro.intro
K : Type u_1
ι : Type u_2
R : ι → Type u_3
inst✝ : (i : ι) → SMul K (R i)
r : K
s : Set ι
t : (i : ι) → Set (R i)
y : (i : ι) → R i
h : y ∈ s.pi t
i : ι
hi : i ∈ s
⊢ (fun x => r • x) y i ∈ (r • t) i

tactic: exact smul_mem_smul_set (h i hi)
state_before: case intro.intro
K : Type u_1
ι : Type u_2
R : ι → Type u_3
inst✝ : (i : ι) → SMul K (R i)
r : K
s : Set ι
t : (i : ι) → Set (R i)
y : (i : ι) → R i
h : y ∈ s.pi t
i : ι
hi : i ∈ s
⊢ (fun x => r • x) y i ∈ (r • t) i
state_after: no goals
Theorem: LinearEquiv.toSpanNonzeroSingleton_one
File: Mathlib/LinearAlgebra/Span.lean

tactic: simp
state_before: R : Type u_1
R₂ : Type u_2
K : Type u_3
M : Type u_4
M₂ : Type u_5
V : Type u_6
S : Type u_7
inst✝³ : Ring R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
inst✝ : NoZeroSMulDivisors R M
x : M
h : x ≠ 0
⊢ (toSpanNonzeroSingleton R M x h) 1 = ⟨x, ⋯⟩
state_after: no goals
Theorem: Polynomial.natDegree_pow_le
File: Mathlib/Algebra/Polynomial/Degree/Definitions.lean

tactic: induction' n with i hi
state_before: R : Type u
S : Type v
a b c d : R
n✝ m : ℕ
inst✝ : Semiring R
p✝¹ p✝ q : R[X]
ι : Type u_1
p : R[X]
n : ℕ
⊢ (p ^ n).natDegree ≤ n * p.natDegree
state_after: case zero
R : Type u
S : Type v
a b c d : R
n m : ℕ
inst✝ : Semiring R
p✝¹ p✝ q : R[X]
ι : Type u_1
p : R[X]
⊢ (p ^ 0).natDegree ≤ 0 * p.natDegree

case succ
R : Type u
S : Type v
a b c d : R
n m : ℕ
inst✝ : Semiring R
p✝¹ p✝ q : R[X]
ι : Type u_1
p : R[X]
i : ℕ
hi : (p ^ i).natDegree ≤ i * p.natDegree
⊢ (p ^ (i + 1)).natDegree ≤ (i + 1) * p.natDegree

tactic: simp
state_before: case zero
R : Type u
S : Type v
a b c d : R
n m : ℕ
inst✝ : Semiring R
p✝¹ p✝ q : R[X]
ι : Type u_1
p : R[X]
⊢ (p ^ 0).natDegree ≤ 0 * p.natDegree
state_after: no goals

tactic: rw [pow_succ, Nat.succ_mul]
state_before: case succ
R : Type u
S : Type v
a b c d : R
n m : ℕ
inst✝ : Semiring R
p✝¹ p✝ q : R[X]
ι : Type u_1
p : R[X]
i : ℕ
hi : (p ^ i).natDegree ≤ i * p.natDegree
⊢ (p ^ (i + 1)).natDegree ≤ (i + 1) * p.natDegree
state_after: case succ
R : Type u
S : Type v
a b c d : R
n m : ℕ
inst✝ : Semiring R
p✝¹ p✝ q : R[X]
ι : Type u_1
p : R[X]
i : ℕ
hi : (p ^ i).natDegree ≤ i * p.natDegree
⊢ (p ^ i * p).natDegree ≤ i * p.natDegree + p.natDegree

tactic: apply le_trans natDegree_mul_le
state_before: case succ
R : Type u
S : Type v
a b c d : R
n m : ℕ
inst✝ : Semiring R
p✝¹ p✝ q : R[X]
ι : Type u_1
p : R[X]
i : ℕ
hi : (p ^ i).natDegree ≤ i * p.natDegree
⊢ (p ^ i * p).natDegree ≤ i * p.natDegree + p.natDegree
state_after: case succ
R : Type u
S : Type v
a b c d : R
n m : ℕ
inst✝ : Semiring R
p✝¹ p✝ q : R[X]
ι : Type u_1
p : R[X]
i : ℕ
hi : (p ^ i).natDegree ≤ i * p.natDegree
⊢ (p ^ i).natDegree + p.natDegree ≤ i * p.natDegree + p.natDegree

tactic: exact add_le_add_right hi _
state_before: case succ
R : Type u
S : Type v
a b c d : R
n m : ℕ
inst✝ : Semiring R
p✝¹ p✝ q : R[X]
ι : Type u_1
p : R[X]
i : ℕ
hi : (p ^ i).natDegree ≤ i * p.natDegree
⊢ (p ^ i).natDegree + p.natDegree ≤ i * p.natDegree + p.natDegree
state_after: no goals
Theorem: infDist_smul₀
File: Mathlib/Analysis/NormedSpace/Pointwise.lean

tactic: simp_rw [Metric.infDist, infEdist_smul₀ hc s, ENNReal.toReal_smul, NNReal.smul_def, coe_nnnorm,
  smul_eq_mul]
state_before: 𝕜 : Type u_1
E : Type u_2
inst✝³ : NormedDivisionRing 𝕜
inst✝² : SeminormedAddCommGroup E
inst✝¹ : Module 𝕜 E
inst✝ : BoundedSMul 𝕜 E
c : 𝕜
hc : c ≠ 0
s : Set E
x : E
⊢ infDist (c • x) (c • s) = ‖c‖ * infDist x s
state_after: no goals
Theorem: SimpleGraph.Walk.IsHamiltonianCycle.count_support_self
File: Mathlib/Combinatorics/SimpleGraph/Hamiltonian.lean

tactic: rw [support_eq_cons, List.count_cons_self, ← support_tail, hp.isHamiltonian_tail]
state_before: α : Type u_1
β : Type u_2
inst✝³ : Fintype α
inst✝² : Fintype β
inst✝¹ : DecidableEq α
inst✝ : DecidableEq β
G : SimpleGraph α
a b : α
p✝ : G.Walk a b
p : G.Walk a a
hp : p.IsHamiltonianCycle
⊢ List.count a p.support = 2
state_after: no goals
Theorem: ContinuousMap.hasSum_apply
File: Mathlib/Topology/ContinuousFunction/Algebra.lean

tactic: let ev : C(α, β) →+ β := (Pi.evalAddMonoidHom _ x).comp coeFnAddMonoidHom
state_before: α : Type u_1
β : Type u_2
inst✝³ : TopologicalSpace α
inst✝² : TopologicalSpace β
γ : Type u_3
inst✝¹ : AddCommMonoid β
inst✝ : ContinuousAdd β
f : γ → C(α, β)
g : C(α, β)
hf : HasSum f g
x : α
⊢ HasSum (fun i => (f i) x) (g x)
state_after: α : Type u_1
β : Type u_2
inst✝³ : TopologicalSpace α
inst✝² : TopologicalSpace β
γ : Type u_3
inst✝¹ : AddCommMonoid β
inst✝ : ContinuousAdd β
f : γ → C(α, β)
g : C(α, β)
hf : HasSum f g
x : α
ev : C(α, β) →+ β := (Pi.evalAddMonoidHom (fun a => β) x).comp coeFnAddMonoidHom
⊢ HasSum (fun i => (f i) x) (g x)

tactic: exact hf.map ev (ContinuousMap.continuous_eval_const x)
state_before: α : Type u_1
β : Type u_2
inst✝³ : TopologicalSpace α
inst✝² : TopologicalSpace β
γ : Type u_3
inst✝¹ : AddCommMonoid β
inst✝ : ContinuousAdd β
f : γ → C(α, β)
g : C(α, β)
hf : HasSum f g
x : α
ev : C(α, β) →+ β := (Pi.evalAddMonoidHom (fun a => β) x).comp coeFnAddMonoidHom
⊢ HasSum (fun i => (f i) x) (g x)
state_after: no goals
Theorem: AddCommGroup.ModEq.trans
File: Mathlib/Algebra/ModEq.lean

tactic: simp [add_smul, ← hm, ← hn]
state_before: α : Type u_1
inst✝ : AddCommGroup α
p a a₁ a₂ b b₁ b₂ c : α
n✝ : ℕ
z : ℤ
x✝¹ : a ≡ b [PMOD p]
x✝ : b ≡ c [PMOD p]
m : ℤ
hm : b - a = m • p
n : ℤ
hn : c - b = n • p
⊢ c - a = (m + n) • p
state_after: no goals
Theorem: CategoryTheory.Limits.colimitHomIsoLimitYoneda'_hom_comp_π
File: Mathlib/CategoryTheory/Limits/IndYoneda.lean

tactic: simp only [yoneda_obj_obj, colimitHomIsoLimitYoneda', Iso.trans_hom,
  Iso.app_hom, Category.assoc]
state_before: C : Type u₁
inst✝³ : Category.{u₂, u₁} C
I : Type v₁
inst✝² : Category.{v₂, v₁} I
F : Iᵒᵖ ⥤ C
inst✝¹ : HasColimit F
inst✝ : HasLimitsOfShape I (Type u₂)
A : C
i : I
⊢ (colimitHomIsoLimitYoneda' F A).hom ≫ limit.π (F.rightOp ⋙ yoneda.obj A) i =
    (coyoneda.map (colimit.ι F { unop := i }).op).app A
state_after: C : Type u₁
inst✝³ : Category.{u₂, u₁} C
I : Type v₁
inst✝² : Category.{v₂, v₁} I
F : Iᵒᵖ ⥤ C
inst✝¹ : HasColimit F
inst✝ : HasLimitsOfShape I (Type u₂)
A : C
i : I
⊢ (coyonedaOpColimitIsoLimitCoyoneda' F).hom.app A ≫
      (limitObjIsoLimitCompEvaluation (F.rightOp ⋙ coyoneda) A).hom ≫ limit.π (F.rightOp ⋙ yoneda.obj A) i =
    (coyoneda.map (colimit.ι F { unop := i }).op).app A

tactic: erw [limitObjIsoLimitCompEvaluation_hom_π]
state_before: C : Type u₁
inst✝³ : Category.{u₂, u₁} C
I : Type v₁
inst✝² : Category.{v₂, v₁} I
F : Iᵒᵖ ⥤ C
inst✝¹ : HasColimit F
inst✝ : HasLimitsOfShape I (Type u₂)
A : C
i : I
⊢ (coyonedaOpColimitIsoLimitCoyoneda' F).hom.app A ≫
      (limitObjIsoLimitCompEvaluation (F.rightOp ⋙ coyoneda) A).hom ≫ limit.π (F.rightOp ⋙ yoneda.obj A) i =
    (coyoneda.map (colimit.ι F { unop := i }).op).app A
state_after: C : Type u₁
inst✝³ : Category.{u₂, u₁} C
I : Type v₁
inst✝² : Category.{v₂, v₁} I
F : Iᵒᵖ ⥤ C
inst✝¹ : HasColimit F
inst✝ : HasLimitsOfShape I (Type u₂)
A : C
i : I
⊢ (coyonedaOpColimitIsoLimitCoyoneda' F).hom.app A ≫ (limit.π (F.rightOp ⋙ coyoneda) i).app A =
    (coyoneda.map (colimit.ι F { unop := i }).op).app A

tactic: change ((coyonedaOpColimitIsoLimitCoyoneda' F).hom ≫ _).app A = _
state_before: C : Type u₁
inst✝³ : Category.{u₂, u₁} C
I : Type v₁
inst✝² : Category.{v₂, v₁} I
F : Iᵒᵖ ⥤ C
inst✝¹ : HasColimit F
inst✝ : HasLimitsOfShape I (Type u₂)
A : C
i : I
⊢ (coyonedaOpColimitIsoLimitCoyoneda' F).hom.app A ≫ (limit.π (F.rightOp ⋙ coyoneda) i).app A =
    (coyoneda.map (colimit.ι F { unop := i }).op).app A
state_after: C : Type u₁
inst✝³ : Category.{u₂, u₁} C
I : Type v₁
inst✝² : Category.{v₂, v₁} I
F : Iᵒᵖ ⥤ C
inst✝¹ : HasColimit F
inst✝ : HasLimitsOfShape I (Type u₂)
A : C
i : I
⊢ ((coyonedaOpColimitIsoLimitCoyoneda' F).hom ≫ limit.π (F.rightOp ⋙ coyoneda) i).app A =
    (coyoneda.map (colimit.ι F { unop := i }).op).app A

tactic: rw [coyonedaOpColimitIsoLimitCoyoneda'_hom_comp_π]
state_before: C : Type u₁
inst✝³ : Category.{u₂, u₁} C
I : Type v₁
inst✝² : Category.{v₂, v₁} I
F : Iᵒᵖ ⥤ C
inst✝¹ : HasColimit F
inst✝ : HasLimitsOfShape I (Type u₂)
A : C
i : I
⊢ ((coyonedaOpColimitIsoLimitCoyoneda' F).hom ≫ limit.π (F.rightOp ⋙ coyoneda) i).app A =
    (coyoneda.map (colimit.ι F { unop := i }).op).app A
state_after: no goals
Theorem: Ordinal.cof_lsub_le_lift
File: Mathlib/SetTheory/Cardinal/Cofinality.lean

tactic: rw [← mk_uLift.{u, v}]
state_before: α : Type u_1
r : α → α → Prop
ι : Type u
f : ι → Ordinal.{max u v}
⊢ (lsub f).cof ≤ Cardinal.lift.{v, u} #ι
state_after: α : Type u_1
r : α → α → Prop
ι : Type u
f : ι → Ordinal.{max u v}
⊢ (lsub f).cof ≤ #(ULift.{v, u} ι)

tactic: convert cof_lsub_le.{max u v} fun i : ULift.{v, u} ι => f i.down
state_before: α : Type u_1
r : α → α → Prop
ι : Type u
f : ι → Ordinal.{max u v}
⊢ (lsub f).cof ≤ #(ULift.{v, u} ι)
state_after: case h.e'_3.h.e'_1
α : Type u_1
r : α → α → Prop
ι : Type u
f : ι → Ordinal.{max u v}
⊢ lsub f = lsub fun i => f i.down

tactic: exact
  lsub_eq_of_range_eq.{u, max u v, max u v}
    (Set.ext fun x => ⟨fun ⟨i, hi⟩ => ⟨ULift.up.{v, u} i, hi⟩, fun ⟨i, hi⟩ => ⟨_, hi⟩⟩)
state_before: case h.e'_3.h.e'_1
α : Type u_1
r : α → α → Prop
ι : Type u
f : ι → Ordinal.{max u v}
⊢ lsub f = lsub fun i => f i.down
state_after: no goals
Theorem: fderiv_continuousLinearEquiv_comp
File: Mathlib/Analysis/Calculus/FDeriv/Equiv.lean

tactic: change fderiv 𝕜 (((ContinuousLinearEquiv.refl 𝕜 F).arrowCongr L) ∘ f) x = _
state_before: 𝕜 : Type u_1
inst✝⁸ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace 𝕜 E
F : Type u_3
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
G : Type u_4
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
G' : Type u_5
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f✝ f₀ f₁ g : E → F
f' f₀' f₁' g' e : E →L[𝕜] F
x✝ : E
s t : Set E
L✝ L₁ L₂ : Filter E
iso : E ≃L[𝕜] F
L : G ≃L[𝕜] G'
f : E → F →L[𝕜] G
x : E
⊢ fderiv 𝕜 (fun x => (↑L).comp (f x)) x = (↑((ContinuousLinearEquiv.refl 𝕜 F).arrowCongr L)).comp (fderiv 𝕜 f x)
state_after: 𝕜 : Type u_1
inst✝⁸ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace 𝕜 E
F : Type u_3
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
G : Type u_4
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
G' : Type u_5
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f✝ f₀ f₁ g : E → F
f' f₀' f₁' g' e : E →L[𝕜] F
x✝ : E
s t : Set E
L✝ L₁ L₂ : Filter E
iso : E ≃L[𝕜] F
L : G ≃L[𝕜] G'
f : E → F →L[𝕜] G
x : E
⊢ fderiv 𝕜 (⇑((ContinuousLinearEquiv.refl 𝕜 F).arrowCongr L) ∘ f) x =
    (↑((ContinuousLinearEquiv.refl 𝕜 F).arrowCongr L)).comp (fderiv 𝕜 f x)

tactic: rw [ContinuousLinearEquiv.comp_fderiv]
state_before: 𝕜 : Type u_1
inst✝⁸ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace 𝕜 E
F : Type u_3
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
G : Type u_4
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
G' : Type u_5
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f✝ f₀ f₁ g : E → F
f' f₀' f₁' g' e : E →L[𝕜] F
x✝ : E
s t : Set E
L✝ L₁ L₂ : Filter E
iso : E ≃L[𝕜] F
L : G ≃L[𝕜] G'
f : E → F →L[𝕜] G
x : E
⊢ fderiv 𝕜 (⇑((ContinuousLinearEquiv.refl 𝕜 F).arrowCongr L) ∘ f) x =
    (↑((ContinuousLinearEquiv.refl 𝕜 F).arrowCongr L)).comp (fderiv 𝕜 f x)
state_after: no goals
Theorem: frontier_inter_subset
File: Mathlib/Topology/Basic.lean

tactic: simp only [frontier_eq_closure_inter_closure, compl_inter, closure_union]
state_before: X : Type u
Y : Type v
ι : Sort w
α : Type u_1
β : Type u_2
x : X
s✝ s₁ s₂ t✝ : Set X
p p₁ p₂ : X → Prop
inst✝ : TopologicalSpace X
s t : Set X
⊢ frontier (s ∩ t) ⊆ frontier s ∩ closure t ∪ closure s ∩ frontier t
state_after: X : Type u
Y : Type v
ι : Sort w
α : Type u_1
β : Type u_2
x : X
s✝ s₁ s₂ t✝ : Set X
p p₁ p₂ : X → Prop
inst✝ : TopologicalSpace X
s t : Set X
⊢ closure (s ∩ t) ∩ (closure sᶜ ∪ closure tᶜ) ⊆
    closure s ∩ closure sᶜ ∩ closure t ∪ closure s ∩ (closure t ∩ closure tᶜ)

tactic: refine (inter_subset_inter_left _ (closure_inter_subset_inter_closure s t)).trans_eq ?_
state_before: X : Type u
Y : Type v
ι : Sort w
α : Type u_1
β : Type u_2
x : X
s✝ s₁ s₂ t✝ : Set X
p p₁ p₂ : X → Prop
inst✝ : TopologicalSpace X
s t : Set X
⊢ closure (s ∩ t) ∩ (closure sᶜ ∪ closure tᶜ) ⊆
    closure s ∩ closure sᶜ ∩ closure t ∪ closure s ∩ (closure t ∩ closure tᶜ)
state_after: X : Type u
Y : Type v
ι : Sort w
α : Type u_1
β : Type u_2
x : X
s✝ s₁ s₂ t✝ : Set X
p p₁ p₂ : X → Prop
inst✝ : TopologicalSpace X
s t : Set X
⊢ closure s ∩ closure t ∩ (closure sᶜ ∪ closure tᶜ) =
    closure s ∩ closure sᶜ ∩ closure t ∪ closure s ∩ (closure t ∩ closure tᶜ)

tactic: simp only [inter_union_distrib_left, union_inter_distrib_right, inter_assoc,
  inter_comm (closure t)]
state_before: X : Type u
Y : Type v
ι : Sort w
α : Type u_1
β : Type u_2
x : X
s✝ s₁ s₂ t✝ : Set X
p p₁ p₂ : X → Prop
inst✝ : TopologicalSpace X
s t : Set X
⊢ closure s ∩ closure t ∩ (closure sᶜ ∪ closure tᶜ) =
    closure s ∩ closure sᶜ ∩ closure t ∪ closure s ∩ (closure t ∩ closure tᶜ)
state_after: no goals
Theorem: real_inner_add_add_self
File: Mathlib/Analysis/InnerProductSpace/Basic.lean

tactic: have : ⟪y, x⟫_ℝ = ⟪x, y⟫_ℝ := by rw [← inner_conj_symm]; rfl
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁴ : _root_.RCLike 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : NormedAddCommGroup F
inst✝ : InnerProductSpace ℝ F
x y : F
⊢ ⟪x + y, x + y⟫_ℝ = ⟪x, x⟫_ℝ + 2 * ⟪x, y⟫_ℝ + ⟪y, y⟫_ℝ
state_after: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁴ : _root_.RCLike 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : NormedAddCommGroup F
inst✝ : InnerProductSpace ℝ F
x y : F
this : ⟪y, x⟫_ℝ = ⟪x, y⟫_ℝ
⊢ ⟪x + y, x + y⟫_ℝ = ⟪x, x⟫_ℝ + 2 * ⟪x, y⟫_ℝ + ⟪y, y⟫_ℝ

tactic: simp only [inner_add_add_self, this, add_left_inj]
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁴ : _root_.RCLike 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : NormedAddCommGroup F
inst✝ : InnerProductSpace ℝ F
x y : F
this : ⟪y, x⟫_ℝ = ⟪x, y⟫_ℝ
⊢ ⟪x + y, x + y⟫_ℝ = ⟪x, x⟫_ℝ + 2 * ⟪x, y⟫_ℝ + ⟪y, y⟫_ℝ
state_after: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁴ : _root_.RCLike 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : NormedAddCommGroup F
inst✝ : InnerProductSpace ℝ F
x y : F
this : ⟪y, x⟫_ℝ = ⟪x, y⟫_ℝ
⊢ ⟪x, x⟫_ℝ + ⟪x, y⟫_ℝ + ⟪x, y⟫_ℝ = ⟪x, x⟫_ℝ + 2 * ⟪x, y⟫_ℝ

tactic: ring
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁴ : _root_.RCLike 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : NormedAddCommGroup F
inst✝ : InnerProductSpace ℝ F
x y : F
this : ⟪y, x⟫_ℝ = ⟪x, y⟫_ℝ
⊢ ⟪x, x⟫_ℝ + ⟪x, y⟫_ℝ + ⟪x, y⟫_ℝ = ⟪x, x⟫_ℝ + 2 * ⟪x, y⟫_ℝ
state_after: no goals

tactic: rw [← inner_conj_symm]
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁴ : _root_.RCLike 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : NormedAddCommGroup F
inst✝ : InnerProductSpace ℝ F
x y : F
⊢ ⟪y, x⟫_ℝ = ⟪x, y⟫_ℝ
state_after: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁴ : _root_.RCLike 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : NormedAddCommGroup F
inst✝ : InnerProductSpace ℝ F
x y : F
⊢ (starRingEnd ℝ) ⟪x, y⟫_ℝ = ⟪x, y⟫_ℝ

tactic: rfl
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁴ : _root_.RCLike 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : NormedAddCommGroup F
inst✝ : InnerProductSpace ℝ F
x y : F
⊢ (starRingEnd ℝ) ⟪x, y⟫_ℝ = ⟪x, y⟫_ℝ
state_after: no goals
Theorem: LieModule.traceForm_eq_zero_of_isTrivial
File: Mathlib/Algebra/Lie/TraceForm.lean

tactic: ext x y
state_before: R : Type u_1
K : Type u_2
L : Type u_3
M : Type u_4
inst✝⁹ : CommRing R
inst✝⁸ : LieRing L
inst✝⁷ : LieAlgebra R L
inst✝⁶ : AddCommGroup M
inst✝⁵ : Module R M
inst✝⁴ : LieRingModule L M
inst✝³ : LieModule R L M
inst✝² : Module.Free R M
inst✝¹ : Module.Finite R M
inst✝ : IsTrivial L M
⊢ traceForm R L M = 0
state_after: case H
R : Type u_1
K : Type u_2
L : Type u_3
M : Type u_4
inst✝⁹ : CommRing R
inst✝⁸ : LieRing L
inst✝⁷ : LieAlgebra R L
inst✝⁶ : AddCommGroup M
inst✝⁵ : Module R M
inst✝⁴ : LieRingModule L M
inst✝³ : LieModule R L M
inst✝² : Module.Free R M
inst✝¹ : Module.Finite R M
inst✝ : IsTrivial L M
x y : L
⊢ ((traceForm R L M) x) y = (0 x) y

tactic: suffices φ x ∘ₗ φ y = 0 by simp [traceForm_apply_apply, this]
state_before: case H
R : Type u_1
K : Type u_2
L : Type u_3
M : Type u_4
inst✝⁹ : CommRing R
inst✝⁸ : LieRing L
inst✝⁷ : LieAlgebra R L
inst✝⁶ : AddCommGroup M
inst✝⁵ : Module R M
inst✝⁴ : LieRingModule L M
inst✝³ : LieModule R L M
inst✝² : Module.Free R M
inst✝¹ : Module.Finite R M
inst✝ : IsTrivial L M
x y : L
⊢ ((traceForm R L M) x) y = (0 x) y
state_after: case H
R : Type u_1
K : Type u_2
L : Type u_3
M : Type u_4
inst✝⁹ : CommRing R
inst✝⁸ : LieRing L
inst✝⁷ : LieAlgebra R L
inst✝⁶ : AddCommGroup M
inst✝⁵ : Module R M
inst✝⁴ : LieRingModule L M
inst✝³ : LieModule R L M
inst✝² : Module.Free R M
inst✝¹ : Module.Finite R M
inst✝ : IsTrivial L M
x y : L
⊢ φ x ∘ₗ φ y = 0

tactic: ext m
state_before: case H
R : Type u_1
K : Type u_2
L : Type u_3
M : Type u_4
inst✝⁹ : CommRing R
inst✝⁸ : LieRing L
inst✝⁷ : LieAlgebra R L
inst✝⁶ : AddCommGroup M
inst✝⁵ : Module R M
inst✝⁴ : LieRingModule L M
inst✝³ : LieModule R L M
inst✝² : Module.Free R M
inst✝¹ : Module.Finite R M
inst✝ : IsTrivial L M
x y : L
⊢ φ x ∘ₗ φ y = 0
state_after: case H.h
R : Type u_1
K : Type u_2
L : Type u_3
M : Type u_4
inst✝⁹ : CommRing R
inst✝⁸ : LieRing L
inst✝⁷ : LieAlgebra R L
inst✝⁶ : AddCommGroup M
inst✝⁵ : Module R M
inst✝⁴ : LieRingModule L M
inst✝³ : LieModule R L M
inst✝² : Module.Free R M
inst✝¹ : Module.Finite R M
inst✝ : IsTrivial L M
x y : L
m : M
⊢ (φ x ∘ₗ φ y) m = 0 m

tactic: simp
state_before: case H.h
R : Type u_1
K : Type u_2
L : Type u_3
M : Type u_4
inst✝⁹ : CommRing R
inst✝⁸ : LieRing L
inst✝⁷ : LieAlgebra R L
inst✝⁶ : AddCommGroup M
inst✝⁵ : Module R M
inst✝⁴ : LieRingModule L M
inst✝³ : LieModule R L M
inst✝² : Module.Free R M
inst✝¹ : Module.Finite R M
inst✝ : IsTrivial L M
x y : L
m : M
⊢ (φ x ∘ₗ φ y) m = 0 m
state_after: no goals

tactic: simp [traceForm_apply_apply, this]
state_before: R : Type u_1
K : Type u_2
L : Type u_3
M : Type u_4
inst✝⁹ : CommRing R
inst✝⁸ : LieRing L
inst✝⁷ : LieAlgebra R L
inst✝⁶ : AddCommGroup M
inst✝⁵ : Module R M
inst✝⁴ : LieRingModule L M
inst✝³ : LieModule R L M
inst✝² : Module.Free R M
inst✝¹ : Module.Finite R M
inst✝ : IsTrivial L M
x y : L
this : φ x ∘ₗ φ y = 0
⊢ ((traceForm R L M) x) y = (0 x) y
state_after: no goals