1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: CategoryTheory.ShortComplex.RightHomologyMapData.rightHomologyMap_eq
File: Mathlib/Algebra/Homology/ShortComplex/RightHomology.lean

tactic: dsimp [RightHomologyData.rightHomologyIso, rightHomologyMapIso']
state_before: C : Type u_1
inst✝³ : Category.{u_2, u_1} C
inst✝² : HasZeroMorphisms C
S S₁ S₂ S₃ : ShortComplex C
φ : S₁ ⟶ S₂
h₁ : S₁.RightHomologyData
h₂ : S₂.RightHomologyData
γ : RightHomologyMapData φ h₁ h₂
inst✝¹ : S₁.HasRightHomology
inst✝ : S₂.HasRightHomology
⊢ rightHomologyMap φ = h₁.rightHomologyIso.hom ≫ γ.φH ≫ h₂.rightHomologyIso.inv
state_after: C : Type u_1
inst✝³ : Category.{u_2, u_1} C
inst✝² : HasZeroMorphisms C
S S₁ S₂ S₃ : ShortComplex C
φ : S₁ ⟶ S₂
h₁ : S₁.RightHomologyData
h₂ : S₂.RightHomologyData
γ : RightHomologyMapData φ h₁ h₂
inst✝¹ : S₁.HasRightHomology
inst✝ : S₂.HasRightHomology
⊢ rightHomologyMap φ =
    rightHomologyMap' (𝟙 S₁) S₁.rightHomologyData h₁ ≫ γ.φH ≫ rightHomologyMap' (𝟙 S₂) h₂ S₂.rightHomologyData

tactic: rw [← γ.rightHomologyMap'_eq, ← rightHomologyMap'_comp,
  ← rightHomologyMap'_comp, id_comp, comp_id]
state_before: C : Type u_1
inst✝³ : Category.{u_2, u_1} C
inst✝² : HasZeroMorphisms C
S S₁ S₂ S₃ : ShortComplex C
φ : S₁ ⟶ S₂
h₁ : S₁.RightHomologyData
h₂ : S₂.RightHomologyData
γ : RightHomologyMapData φ h₁ h₂
inst✝¹ : S₁.HasRightHomology
inst✝ : S₂.HasRightHomology
⊢ rightHomologyMap φ =
    rightHomologyMap' (𝟙 S₁) S₁.rightHomologyData h₁ ≫ γ.φH ≫ rightHomologyMap' (𝟙 S₂) h₂ S₂.rightHomologyData
state_after: C : Type u_1
inst✝³ : Category.{u_2, u_1} C
inst✝² : HasZeroMorphisms C
S S₁ S₂ S₃ : ShortComplex C
φ : S₁ ⟶ S₂
h₁ : S₁.RightHomologyData
h₂ : S₂.RightHomologyData
γ : RightHomologyMapData φ h₁ h₂
inst✝¹ : S₁.HasRightHomology
inst✝ : S₂.HasRightHomology
⊢ rightHomologyMap φ = rightHomologyMap' φ S₁.rightHomologyData S₂.rightHomologyData

tactic: rfl
state_before: C : Type u_1
inst✝³ : Category.{u_2, u_1} C
inst✝² : HasZeroMorphisms C
S S₁ S₂ S₃ : ShortComplex C
φ : S₁ ⟶ S₂
h₁ : S₁.RightHomologyData
h₂ : S₂.RightHomologyData
γ : RightHomologyMapData φ h₁ h₂
inst✝¹ : S₁.HasRightHomology
inst✝ : S₂.HasRightHomology
⊢ rightHomologyMap φ = rightHomologyMap' φ S₁.rightHomologyData S₂.rightHomologyData
state_after: no goals
Theorem: Behrend.map_mod
File: Mathlib/Combinatorics/Additive/AP/Three/Behrend.lean

tactic: rw [map_succ, Nat.add_mul_mod_self_right]
state_before: α : Type u_1
β : Type u_2
n d k N : ℕ
x : Fin n → ℕ
a : Fin n.succ → ℕ
⊢ (map d) a % d = a 0 % d
state_after: no goals
Theorem: CochainComplex.mappingCone.inl_fst
File: Mathlib/Algebra/Homology/HomotopyCategory/MappingCone.lean

tactic: ext p
state_before: C : Type u_1
inst✝² : Category.{u_2, u_1} C
inst✝¹ : Preadditive C
F G : CochainComplex C ℤ
φ : F ⟶ G
inst✝ : HasHomotopyCofiber φ
⊢ (inl φ).comp ↑(fst φ) ⋯ = Cochain.ofHom (𝟙 F)
state_after: case h
C : Type u_1
inst✝² : Category.{u_2, u_1} C
inst✝¹ : Preadditive C
F G : CochainComplex C ℤ
φ : F ⟶ G
inst✝ : HasHomotopyCofiber φ
p : ℤ
⊢ ((inl φ).comp ↑(fst φ) ⋯).v p p ⋯ = (Cochain.ofHom (𝟙 F)).v p p ⋯

tactic: simp [Cochain.comp_v _ _ (neg_add_self 1) p (p-1) p rfl (by omega)]
state_before: case h
C : Type u_1
inst✝² : Category.{u_2, u_1} C
inst✝¹ : Preadditive C
F G : CochainComplex C ℤ
φ : F ⟶ G
inst✝ : HasHomotopyCofiber φ
p : ℤ
⊢ ((inl φ).comp ↑(fst φ) ⋯).v p p ⋯ = (Cochain.ofHom (𝟙 F)).v p p ⋯
state_after: no goals

tactic: omega
state_before: C : Type u_1
inst✝² : Category.{u_2, u_1} C
inst✝¹ : Preadditive C
F G : CochainComplex C ℤ
φ : F ⟶ G
inst✝ : HasHomotopyCofiber φ
p : ℤ
⊢ p - 1 + 1 = p
state_after: no goals
Theorem: Monoid.CoprodI.NeWord.inv_last
File: Mathlib/GroupTheory/CoprodI.lean

tactic: induction w <;> simp [inv, *]
state_before: ι : Type u_1
M : ι → Type u_2
inst✝² : (i : ι) → Monoid (M i)
N : Type u_3
inst✝¹ : Monoid N
G : ι → Type u_4
inst✝ : (i : ι) → Group (G i)
i j : ι
w : NeWord G i j
⊢ w.inv.last = w.head⁻¹
state_after: no goals
Theorem: SetTheory.PGame.moveLeft_neg
File: Mathlib/SetTheory/Game/PGame.lean

tactic: cases x
state_before: xl xr : Type u
x : PGame
i : x.RightMoves
⊢ (-x).moveLeft (toLeftMovesNeg i) = -x.moveRight i
state_after: case mk
xl xr : Type u
α✝ β✝ : Type u_1
a✝¹ : α✝ → PGame
a✝ : β✝ → PGame
i : (mk α✝ β✝ a✝¹ a✝).RightMoves
⊢ (-mk α✝ β✝ a✝¹ a✝).moveLeft (toLeftMovesNeg i) = -(mk α✝ β✝ a✝¹ a✝).moveRight i

tactic: rfl
state_before: case mk
xl xr : Type u
α✝ β✝ : Type u_1
a✝¹ : α✝ → PGame
a✝ : β✝ → PGame
i : (mk α✝ β✝ a✝¹ a✝).RightMoves
⊢ (-mk α✝ β✝ a✝¹ a✝).moveLeft (toLeftMovesNeg i) = -(mk α✝ β✝ a✝¹ a✝).moveRight i
state_after: no goals
Theorem: ApproximatesLinearOn.lipschitz
File: Mathlib/Analysis/Calculus/InverseFunctionTheorem/ApproximatesLinearOn.lean

tactic: simpa only [restrict_apply, add_sub_cancel] using
  (f'.lipschitz.restrict s).add hf.lipschitz_sub
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'
ε : ℝ
inst✝ : CompleteSpace E
f : E → F
f' : E →L[𝕜] F
s t : Set E
c c' : ℝ≥0
hf : ApproximatesLinearOn f f' s c
⊢ LipschitzWith (‖f'‖₊ + c) (s.restrict f)
state_after: no goals
Theorem: Matrix.norm_lt_iff
File: Mathlib/Analysis/Matrix.lean

tactic: simp_rw [norm_def, pi_norm_lt_iff hr]
state_before: R : Type u_1
l : Type u_2
m : Type u_3
n : Type u_4
α : Type u_5
β : Type u_6
ι : Type u_7
inst✝⁵ : Fintype l
inst✝⁴ : Fintype m
inst✝³ : Fintype n
inst✝² : Unique ι
inst✝¹ : SeminormedAddCommGroup α
inst✝ : SeminormedAddCommGroup β
r : ℝ
hr : 0 < r
A : Matrix m n α
⊢ ‖A‖ < r ↔ ∀ (i : m) (j : n), ‖A i j‖ < r
state_after: no goals
Theorem: hasLineDerivAt_zero
File: Mathlib/Analysis/Calculus/LineDeriv/Basic.lean

tactic: simp [HasLineDerivAt, hasDerivAt_const]
state_before: 𝕜 : Type u_1
inst✝⁴ : NontriviallyNormedField 𝕜
F : Type u_2
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
E : Type u_3
inst✝¹ : AddCommGroup E
inst✝ : Module 𝕜 E
f : E → F
s : Set E
x : E
⊢ HasLineDerivAt 𝕜 f 0 x 0
state_after: no goals
Theorem: absorbent_ball_zero
File: Mathlib/Analysis/Seminorm.lean

tactic: rw [← ball_normSeminorm 𝕜]
state_before: R : Type u_1
R' : Type u_2
𝕜 : Type u_3
𝕜₂ : Type u_4
𝕜₃ : Type u_5
𝕝 : Type u_6
E : Type u_7
E₂ : Type u_8
E₃ : Type u_9
F : Type u_10
G : Type u_11
ι : Type u_12
inst✝² : NormedField 𝕜
inst✝¹ : SeminormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
r : ℝ
x : E
hr : 0 < r
⊢ Absorbent 𝕜 (Metric.ball 0 r)
state_after: R : Type u_1
R' : Type u_2
𝕜 : Type u_3
𝕜₂ : Type u_4
𝕜₃ : Type u_5
𝕝 : Type u_6
E : Type u_7
E₂ : Type u_8
E₃ : Type u_9
F : Type u_10
G : Type u_11
ι : Type u_12
inst✝² : NormedField 𝕜
inst✝¹ : SeminormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
r : ℝ
x : E
hr : 0 < r
⊢ Absorbent 𝕜 ((normSeminorm 𝕜 E).ball 0 r)

tactic: exact (normSeminorm _ _).absorbent_ball_zero hr
state_before: R : Type u_1
R' : Type u_2
𝕜 : Type u_3
𝕜₂ : Type u_4
𝕜₃ : Type u_5
𝕝 : Type u_6
E : Type u_7
E₂ : Type u_8
E₃ : Type u_9
F : Type u_10
G : Type u_11
ι : Type u_12
inst✝² : NormedField 𝕜
inst✝¹ : SeminormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
r : ℝ
x : E
hr : 0 < r
⊢ Absorbent 𝕜 ((normSeminorm 𝕜 E).ball 0 r)
state_after: no goals
Theorem: List.kunion_kerase
File: Mathlib/Data/List/Sigma.lean

tactic: by_cases h : a = s.1 <;> simp [h, kerase_comm a s.1 l, kunion_kerase]
state_before: α : Type u
β : α → Type v
l✝ l₁ l₂ : List (Sigma β)
inst✝ : DecidableEq α
a : α
s : Sigma β
tail✝ : List (Sigma β)
l : List (Sigma β)
⊢ (kerase a (s :: tail✝)).kunion (kerase a l) = kerase a ((s :: tail✝).kunion l)
state_after: no goals
Theorem: Int.testBit_lnot
File: Mathlib/Data/Int/Bitwise.lean

tactic: simp [lnot, testBit]
state_before: n k : ℕ
⊢ (↑n).lnot.testBit k = !(↑n).testBit k
state_after: no goals

tactic: simp [lnot, testBit]
state_before: n k : ℕ
⊢ -[n+1].lnot.testBit k = !-[n+1].testBit k
state_after: no goals
Theorem: Cardinal.mk_of_countable_eventually_mem
File: Mathlib/SetTheory/Cardinal/CountableCover.lean

tactic: apply le_antisymm
state_before: α : Type u
ι : Type v
a : Cardinal.{u}
inst✝¹ : Countable ι
f : ι → Set α
l : Filter ι
inst✝ : l.NeBot
ht : ∀ (x : α), ∀ᶠ (i : ι) in l, x ∈ f i
h'f : ∀ (i : ι), #↑(f i) = a
⊢ #α = a
state_after: case a
α : Type u
ι : Type v
a : Cardinal.{u}
inst✝¹ : Countable ι
f : ι → Set α
l : Filter ι
inst✝ : l.NeBot
ht : ∀ (x : α), ∀ᶠ (i : ι) in l, x ∈ f i
h'f : ∀ (i : ι), #↑(f i) = a
⊢ #α ≤ a

case a
α : Type u
ι : Type v
a : Cardinal.{u}
inst✝¹ : Countable ι
f : ι → Set α
l : Filter ι
inst✝ : l.NeBot
ht : ∀ (x : α), ∀ᶠ (i : ι) in l, x ∈ f i
h'f : ∀ (i : ι), #↑(f i) = a
⊢ a ≤ #α

tactic: apply mk_le_of_countable_eventually_mem ht (fun i ↦ (h'f i).le)
state_before: case a
α : Type u
ι : Type v
a : Cardinal.{u}
inst✝¹ : Countable ι
f : ι → Set α
l : Filter ι
inst✝ : l.NeBot
ht : ∀ (x : α), ∀ᶠ (i : ι) in l, x ∈ f i
h'f : ∀ (i : ι), #↑(f i) = a
⊢ #α ≤ a
state_after: no goals

tactic: obtain ⟨i⟩ : Nonempty ι := nonempty_of_neBot l
state_before: case a
α : Type u
ι : Type v
a : Cardinal.{u}
inst✝¹ : Countable ι
f : ι → Set α
l : Filter ι
inst✝ : l.NeBot
ht : ∀ (x : α), ∀ᶠ (i : ι) in l, x ∈ f i
h'f : ∀ (i : ι), #↑(f i) = a
⊢ a ≤ #α
state_after: case a.intro
α : Type u
ι : Type v
a : Cardinal.{u}
inst✝¹ : Countable ι
f : ι → Set α
l : Filter ι
inst✝ : l.NeBot
ht : ∀ (x : α), ∀ᶠ (i : ι) in l, x ∈ f i
h'f : ∀ (i : ι), #↑(f i) = a
i : ι
⊢ a ≤ #α

tactic: rw [← (h'f i)]
state_before: case a.intro
α : Type u
ι : Type v
a : Cardinal.{u}
inst✝¹ : Countable ι
f : ι → Set α
l : Filter ι
inst✝ : l.NeBot
ht : ∀ (x : α), ∀ᶠ (i : ι) in l, x ∈ f i
h'f : ∀ (i : ι), #↑(f i) = a
i : ι
⊢ a ≤ #α
state_after: case a.intro
α : Type u
ι : Type v
a : Cardinal.{u}
inst✝¹ : Countable ι
f : ι → Set α
l : Filter ι
inst✝ : l.NeBot
ht : ∀ (x : α), ∀ᶠ (i : ι) in l, x ∈ f i
h'f : ∀ (i : ι), #↑(f i) = a
i : ι
⊢ #↑(f i) ≤ #α

tactic: exact mk_set_le (f i)
state_before: case a.intro
α : Type u
ι : Type v
a : Cardinal.{u}
inst✝¹ : Countable ι
f : ι → Set α
l : Filter ι
inst✝ : l.NeBot
ht : ∀ (x : α), ∀ᶠ (i : ι) in l, x ∈ f i
h'f : ∀ (i : ι), #↑(f i) = a
i : ι
⊢ #↑(f i) ≤ #α
state_after: no goals
Theorem: Filter.tendsto_atTop
File: Mathlib/Order/Filter/AtTopBot.lean

tactic: simp only [atTop, tendsto_iInf, tendsto_principal, mem_Ici]
state_before: ι : Type u_1
ι' : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
inst✝ : Preorder β
m : α → β
f : Filter α
⊢ Tendsto m f atTop ↔ ∀ (b : β), ∀ᶠ (a : α) in f, b ≤ m a
state_after: no goals
Theorem: Polynomial.eval_intCast
File: Mathlib/Algebra/Polynomial/Eval.lean

tactic: simp only [← C_eq_intCast, eval_C]
state_before: R : Type u
S : Type v
T : Type w
ι : Type y
a b : R
m n✝ : ℕ
inst✝ : Ring R
p q r : R[X]
n : ℤ
x : R
⊢ eval x ↑n = ↑n
state_after: no goals
Theorem: CategoryTheory.Triangulated.Subcategory.zero
File: Mathlib/CategoryTheory/Triangulated/Subcategory.lean

tactic: obtain ⟨X, hX, mem⟩ := S.zero'
state_before: C : Type u_1
inst✝⁶ : Category.{u_2, u_1} C
inst✝⁵ : HasZeroObject C
inst✝⁴ : HasShift C ℤ
inst✝³ : Preadditive C
inst✝² : ∀ (n : ℤ), (shiftFunctor C n).Additive
inst✝¹ : Pretriangulated C
S : Subcategory C
inst✝ : ClosedUnderIsomorphisms S.P
⊢ S.P 0
state_after: case intro.intro
C : Type u_1
inst✝⁶ : Category.{u_2, u_1} C
inst✝⁵ : HasZeroObject C
inst✝⁴ : HasShift C ℤ
inst✝³ : Preadditive C
inst✝² : ∀ (n : ℤ), (shiftFunctor C n).Additive
inst✝¹ : Pretriangulated C
S : Subcategory C
inst✝ : ClosedUnderIsomorphisms S.P
X : C
hX : IsZero X
mem : S.P X
⊢ S.P 0

tactic: exact mem_of_iso _ hX.isoZero mem
state_before: case intro.intro
C : Type u_1
inst✝⁶ : Category.{u_2, u_1} C
inst✝⁵ : HasZeroObject C
inst✝⁴ : HasShift C ℤ
inst✝³ : Preadditive C
inst✝² : ∀ (n : ℤ), (shiftFunctor C n).Additive
inst✝¹ : Pretriangulated C
S : Subcategory C
inst✝ : ClosedUnderIsomorphisms S.P
X : C
hX : IsZero X
mem : S.P X
⊢ S.P 0
state_after: no goals
Theorem: QuaternionAlgebra.Basis.k_mul_k
File: Mathlib/Algebra/QuaternionBasis.lean

tactic: rw [← i_mul_j, mul_assoc, ← mul_assoc q.j _ _, j_mul_i, ← i_mul_j, ← mul_assoc, mul_neg, ←
  mul_assoc, i_mul_i, smul_mul_assoc, one_mul, neg_mul, smul_mul_assoc, j_mul_j, smul_smul]
state_before: R : Type u_1
A : Type u_2
B : Type u_3
inst✝⁴ : CommRing R
inst✝³ : Ring A
inst✝² : Ring B
inst✝¹ : Algebra R A
inst✝ : Algebra R B
c₁ c₂ : R
q : Basis A c₁ c₂
⊢ q.k * q.k = -((c₁ * c₂) • 1)
state_after: no goals
Theorem: Monovary.sum_smul_comp_perm_lt_sum_smul_iff
File: Mathlib/Algebra/Order/Rearrangement.lean

tactic: simp [(hfg.monovaryOn _).sum_smul_comp_perm_lt_sum_smul_iff fun _ _ ↦ mem_univ _]
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
inst✝⁴ : LinearOrderedRing α
inst✝³ : LinearOrderedAddCommGroup β
inst✝² : Module α β
inst✝¹ : OrderedSMul α β
s : Finset ι
σ : Perm ι
f : ι → α
g : ι → β
inst✝ : Fintype ι
hfg : Monovary f g
⊢ ∑ i : ι, f i • g (σ i) < ∑ i : ι, f i • g i ↔ ¬Monovary f (g ∘ ⇑σ)
state_after: no goals
Theorem: ContMDiffAt.div
File: Mathlib/Geometry/Manifold/Algebra/LieGroup.lean

tactic: simp_rw [div_eq_mul_inv]
state_before: 𝕜 : Type u_1
inst✝¹⁹ : NontriviallyNormedField 𝕜
H : Type u_2
inst✝¹⁸ : TopologicalSpace H
E : Type u_3
inst✝¹⁷ : NormedAddCommGroup E
inst✝¹⁶ : NormedSpace 𝕜 E
I : ModelWithCorners 𝕜 E H
F : Type u_4
inst✝¹⁵ : NormedAddCommGroup F
inst✝¹⁴ : NormedSpace 𝕜 F
J : ModelWithCorners 𝕜 F F
G : Type u_5
inst✝¹³ : TopologicalSpace G
inst✝¹² : ChartedSpace H G
inst✝¹¹ : Group G
inst✝¹⁰ : LieGroup I G
E' : Type u_6
inst✝⁹ : NormedAddCommGroup E'
inst✝⁸ : NormedSpace 𝕜 E'
H' : Type u_7
inst✝⁷ : TopologicalSpace H'
I' : ModelWithCorners 𝕜 E' H'
M : Type u_8
inst✝⁶ : TopologicalSpace M
inst✝⁵ : ChartedSpace H' M
E'' : Type u_9
inst✝⁴ : NormedAddCommGroup E''
inst✝³ : NormedSpace 𝕜 E''
H'' : Type u_10
inst✝² : TopologicalSpace H''
I'' : ModelWithCorners 𝕜 E'' H''
M' : Type u_11
inst✝¹ : TopologicalSpace M'
inst✝ : ChartedSpace H'' M'
n : ℕ∞
f g : M → G
x₀ : M
hf : ContMDiffAt I' I n f x₀
hg : ContMDiffAt I' I n g x₀
⊢ ContMDiffAt I' I n (fun x => f x / g x) x₀
state_after: 𝕜 : Type u_1
inst✝¹⁹ : NontriviallyNormedField 𝕜
H : Type u_2
inst✝¹⁸ : TopologicalSpace H
E : Type u_3
inst✝¹⁷ : NormedAddCommGroup E
inst✝¹⁶ : NormedSpace 𝕜 E
I : ModelWithCorners 𝕜 E H
F : Type u_4
inst✝¹⁵ : NormedAddCommGroup F
inst✝¹⁴ : NormedSpace 𝕜 F
J : ModelWithCorners 𝕜 F F
G : Type u_5
inst✝¹³ : TopologicalSpace G
inst✝¹² : ChartedSpace H G
inst✝¹¹ : Group G
inst✝¹⁰ : LieGroup I G
E' : Type u_6
inst✝⁹ : NormedAddCommGroup E'
inst✝⁸ : NormedSpace 𝕜 E'
H' : Type u_7
inst✝⁷ : TopologicalSpace H'
I' : ModelWithCorners 𝕜 E' H'
M : Type u_8
inst✝⁶ : TopologicalSpace M
inst✝⁵ : ChartedSpace H' M
E'' : Type u_9
inst✝⁴ : NormedAddCommGroup E''
inst✝³ : NormedSpace 𝕜 E''
H'' : Type u_10
inst✝² : TopologicalSpace H''
I'' : ModelWithCorners 𝕜 E'' H''
M' : Type u_11
inst✝¹ : TopologicalSpace M'
inst✝ : ChartedSpace H'' M'
n : ℕ∞
f g : M → G
x₀ : M
hf : ContMDiffAt I' I n f x₀
hg : ContMDiffAt I' I n g x₀
⊢ ContMDiffAt I' I n (fun x => f x * (g x)⁻¹) x₀

tactic: exact hf.mul hg.inv
state_before: 𝕜 : Type u_1
inst✝¹⁹ : NontriviallyNormedField 𝕜
H : Type u_2
inst✝¹⁸ : TopologicalSpace H
E : Type u_3
inst✝¹⁷ : NormedAddCommGroup E
inst✝¹⁶ : NormedSpace 𝕜 E
I : ModelWithCorners 𝕜 E H
F : Type u_4
inst✝¹⁵ : NormedAddCommGroup F
inst✝¹⁴ : NormedSpace 𝕜 F
J : ModelWithCorners 𝕜 F F
G : Type u_5
inst✝¹³ : TopologicalSpace G
inst✝¹² : ChartedSpace H G
inst✝¹¹ : Group G
inst✝¹⁰ : LieGroup I G
E' : Type u_6
inst✝⁹ : NormedAddCommGroup E'
inst✝⁸ : NormedSpace 𝕜 E'
H' : Type u_7
inst✝⁷ : TopologicalSpace H'
I' : ModelWithCorners 𝕜 E' H'
M : Type u_8
inst✝⁶ : TopologicalSpace M
inst✝⁵ : ChartedSpace H' M
E'' : Type u_9
inst✝⁴ : NormedAddCommGroup E''
inst✝³ : NormedSpace 𝕜 E''
H'' : Type u_10
inst✝² : TopologicalSpace H''
I'' : ModelWithCorners 𝕜 E'' H''
M' : Type u_11
inst✝¹ : TopologicalSpace M'
inst✝ : ChartedSpace H'' M'
n : ℕ∞
f g : M → G
x₀ : M
hf : ContMDiffAt I' I n f x₀
hg : ContMDiffAt I' I n g x₀
⊢ ContMDiffAt I' I n (fun x => f x * (g x)⁻¹) x₀
state_after: no goals
Theorem: Submodule.mulMap_comm_of_commute
File: Mathlib/LinearAlgebra/TensorProduct/Submodule.lean

tactic: refine TensorProduct.ext' fun n m ↦ ?_
state_before: R : Type u
S : Type v
inst✝² : CommSemiring R
inst✝¹ : Semiring S
inst✝ : Algebra R S
M N : Submodule R S
hc : ∀ (m : ↥M) (n : ↥N), Commute ↑m ↑n
⊢ N.mulMap M = M.mulMap N ∘ₗ ↑(TensorProduct.comm R ↥N ↥M)
state_after: R : Type u
S : Type v
inst✝² : CommSemiring R
inst✝¹ : Semiring S
inst✝ : Algebra R S
M N : Submodule R S
hc : ∀ (m : ↥M) (n : ↥N), Commute ↑m ↑n
n : ↥N
m : ↥M
⊢ (N.mulMap M) (n ⊗ₜ[R] m) = (M.mulMap N ∘ₗ ↑(TensorProduct.comm R ↥N ↥M)) (n ⊗ₜ[R] m)

tactic: simp_rw [LinearMap.comp_apply, LinearEquiv.coe_coe, TensorProduct.comm_tmul, mulMap_tmul]
state_before: R : Type u
S : Type v
inst✝² : CommSemiring R
inst✝¹ : Semiring S
inst✝ : Algebra R S
M N : Submodule R S
hc : ∀ (m : ↥M) (n : ↥N), Commute ↑m ↑n
n : ↥N
m : ↥M
⊢ (N.mulMap M) (n ⊗ₜ[R] m) = (M.mulMap N ∘ₗ ↑(TensorProduct.comm R ↥N ↥M)) (n ⊗ₜ[R] m)
state_after: R : Type u
S : Type v
inst✝² : CommSemiring R
inst✝¹ : Semiring S
inst✝ : Algebra R S
M N : Submodule R S
hc : ∀ (m : ↥M) (n : ↥N), Commute ↑m ↑n
n : ↥N
m : ↥M
⊢ ↑n * ↑m = ↑m * ↑n

tactic: exact (hc m n).symm
state_before: R : Type u
S : Type v
inst✝² : CommSemiring R
inst✝¹ : Semiring S
inst✝ : Algebra R S
M N : Submodule R S
hc : ∀ (m : ↥M) (n : ↥N), Commute ↑m ↑n
n : ↥N
m : ↥M
⊢ ↑n * ↑m = ↑m * ↑n
state_after: no goals
Theorem: CategoryTheory.uncurry_pre
File: Mathlib/CategoryTheory/Closed/Cartesian.lean

tactic: rw [uncurry_eq, prod_map_pre_app_comp_ev]
state_before: C : Type u
inst✝³ : Category.{v, u} C
A B X✝ X' Y Y' Z : C
inst✝² : HasFiniteProducts C
inst✝¹ : Exponentiable A
f : B ⟶ A
inst✝ : Exponentiable B
X : C
⊢ uncurry ((pre f).app X) = prod.map f (𝟙 (A ⟹ X)) ≫ (exp.ev A).app X
state_after: no goals
Theorem: NonUnitalSubring.coe_eq_zero_iff
File: Mathlib/RingTheory/NonUnitalSubring/Basic.lean

tactic: simp
state_before: R : Type u
S : Type v
T : Type w
inst✝² : NonUnitalNonAssocRing R
inst✝¹ : NonUnitalNonAssocRing S
inst✝ : NonUnitalNonAssocRing T
s : NonUnitalSubring R
x : ↥s
⊢ ↑x = 0 ↔ x = 0
state_after: no goals
Theorem: CategoryTheory.Functor.id_comp
File: Mathlib/CategoryTheory/Functor/Basic.lean

tactic: cases F
state_before: C : Type u₁
inst✝² : Category.{v₁, u₁} C
D : Type u₂
inst✝¹ : Category.{v₂, u₂} D
E : Type u₃
inst✝ : Category.{v₃, u₃} E
F : C ⥤ D
⊢ 𝟭 C ⋙ F = F
state_after: case mk
C : Type u₁
inst✝² : Category.{v₁, u₁} C
D : Type u₂
inst✝¹ : Category.{v₂, u₂} D
E : Type u₃
inst✝ : Category.{v₃, u₃} E
toPrefunctor✝ : C ⥤q D
map_id✝ : ∀ (X : C), toPrefunctor✝.map (𝟙 X) = 𝟙 (toPrefunctor✝.obj X)
map_comp✝ : ∀ {X Y Z : C} (f : X ⟶ Y) (g : Y ⟶ Z), toPrefunctor✝.map (f ≫ g) = toPrefunctor✝.map f ≫ toPrefunctor✝.map g
⊢ 𝟭 C ⋙ { toPrefunctor := toPrefunctor✝, map_id := map_id✝, map_comp := map_comp✝ } =
    { toPrefunctor := toPrefunctor✝, map_id := map_id✝, map_comp := map_comp✝ }

tactic: rfl
state_before: case mk
C : Type u₁
inst✝² : Category.{v₁, u₁} C
D : Type u₂
inst✝¹ : Category.{v₂, u₂} D
E : Type u₃
inst✝ : Category.{v₃, u₃} E
toPrefunctor✝ : C ⥤q D
map_id✝ : ∀ (X : C), toPrefunctor✝.map (𝟙 X) = 𝟙 (toPrefunctor✝.obj X)
map_comp✝ : ∀ {X Y Z : C} (f : X ⟶ Y) (g : Y ⟶ Z), toPrefunctor✝.map (f ≫ g) = toPrefunctor✝.map f ≫ toPrefunctor✝.map g
⊢ 𝟭 C ⋙ { toPrefunctor := toPrefunctor✝, map_id := map_id✝, map_comp := map_comp✝ } =
    { toPrefunctor := toPrefunctor✝, map_id := map_id✝, map_comp := map_comp✝ }
state_after: no goals
Theorem: hasSum_div_const_iff
File: Mathlib/Topology/Algebra/InfiniteSum/Ring.lean

tactic: simpa only [div_eq_mul_inv] using hasSum_mul_right_iff (inv_ne_zero h)
state_before: ι : Type u_1
κ : Type u_2
R : Type u_3
α : Type u_4
inst✝² : DivisionSemiring α
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSemiring α
f g : ι → α
a a₁ a₂ : α
h : a₂ ≠ 0
⊢ HasSum (fun i => f i / a₂) (a₁ / a₂) ↔ HasSum f a₁
state_after: no goals
Theorem: deriv_const_sub
File: Mathlib/Analysis/Calculus/Deriv/Add.lean

tactic: simp only [← derivWithin_univ,
  derivWithin_const_sub (uniqueDiffWithinAt_univ : UniqueDiffWithinAt 𝕜 _ _)]
state_before: 𝕜 : Type u
inst✝⁴ : NontriviallyNormedField 𝕜
F : Type v
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
E : Type w
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
f f₀ f₁ g : 𝕜 → F
f' f₀' f₁' g' : F
x : 𝕜
s t : Set 𝕜
L : Filter 𝕜
c : F
⊢ deriv (fun y => c - f y) x = -deriv f x
state_after: no goals
Theorem: PartialHomeomorph.map_subtype_source
File: Mathlib/Topology/PartialHomeomorph.lean

tactic: refine ⟨e.map_source hxe, ?_⟩
state_before: X : Type u_1
X' : Type u_2
Y : Type u_3
Y' : Type u_4
Z : Type u_5
Z' : Type u_6
inst✝⁵ : TopologicalSpace X
inst✝⁴ : TopologicalSpace X'
inst✝³ : TopologicalSpace Y
inst✝² : TopologicalSpace Y'
inst✝¹ : TopologicalSpace Z
inst✝ : TopologicalSpace Z'
e : PartialHomeomorph X Y
s : Opens X
hs : Nonempty ↥s
x : ↥s
hxe : ↑x ∈ e.source
⊢ ↑e ↑x ∈ (e.subtypeRestr hs).target
state_after: X : Type u_1
X' : Type u_2
Y : Type u_3
Y' : Type u_4
Z : Type u_5
Z' : Type u_6
inst✝⁵ : TopologicalSpace X
inst✝⁴ : TopologicalSpace X'
inst✝³ : TopologicalSpace Y
inst✝² : TopologicalSpace Y'
inst✝¹ : TopologicalSpace Z
inst✝ : TopologicalSpace Z'
e : PartialHomeomorph X Y
s : Opens X
hs : Nonempty ↥s
x : ↥s
hxe : ↑x ∈ e.source
⊢ ↑e ↑x ∈ ↑e.symm ⁻¹' (s.partialHomeomorphSubtypeCoe hs).target

tactic: rw [s.partialHomeomorphSubtypeCoe_target, mem_preimage, e.leftInvOn hxe]
state_before: X : Type u_1
X' : Type u_2
Y : Type u_3
Y' : Type u_4
Z : Type u_5
Z' : Type u_6
inst✝⁵ : TopologicalSpace X
inst✝⁴ : TopologicalSpace X'
inst✝³ : TopologicalSpace Y
inst✝² : TopologicalSpace Y'
inst✝¹ : TopologicalSpace Z
inst✝ : TopologicalSpace Z'
e : PartialHomeomorph X Y
s : Opens X
hs : Nonempty ↥s
x : ↥s
hxe : ↑x ∈ e.source
⊢ ↑e ↑x ∈ ↑e.symm ⁻¹' (s.partialHomeomorphSubtypeCoe hs).target
state_after: X : Type u_1
X' : Type u_2
Y : Type u_3
Y' : Type u_4
Z : Type u_5
Z' : Type u_6
inst✝⁵ : TopologicalSpace X
inst✝⁴ : TopologicalSpace X'
inst✝³ : TopologicalSpace Y
inst✝² : TopologicalSpace Y'
inst✝¹ : TopologicalSpace Z
inst✝ : TopologicalSpace Z'
e : PartialHomeomorph X Y
s : Opens X
hs : Nonempty ↥s
x : ↥s
hxe : ↑x ∈ e.source
⊢ ↑x ∈ ↑s

tactic: exact x.prop
state_before: X : Type u_1
X' : Type u_2
Y : Type u_3
Y' : Type u_4
Z : Type u_5
Z' : Type u_6
inst✝⁵ : TopologicalSpace X
inst✝⁴ : TopologicalSpace X'
inst✝³ : TopologicalSpace Y
inst✝² : TopologicalSpace Y'
inst✝¹ : TopologicalSpace Z
inst✝ : TopologicalSpace Z'
e : PartialHomeomorph X Y
s : Opens X
hs : Nonempty ↥s
x : ↥s
hxe : ↑x ∈ e.source
⊢ ↑x ∈ ↑s
state_after: no goals
Theorem: Finset.fin_map
File: Mathlib/Data/Finset/Image.lean

tactic: simp [Finset.fin, Finset.map_map]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
n : ℕ
s : Finset ℕ
⊢ map Fin.valEmbedding (Finset.fin n s) = filter (fun x => x < n) s
state_after: no goals
Theorem: IsUnit.one_div_mul_cancel
File: Mathlib/Algebra/Group/Units.lean

tactic: simp [h]
state_before: α : Type u
M : Type u_1
N : Type u_2
inst✝ : DivisionMonoid α
a b c : α
h : IsUnit a
⊢ 1 / a * a = 1
state_after: no goals
Theorem: HahnSeries.single_zero_mul_coeff
File: Mathlib/RingTheory/HahnSeries/Multiplication.lean

tactic: rw [← add_zero a, single_mul_coeff_add, add_zero]
state_before: Γ : Type u_1
Γ' : Type u_2
R : Type u_3
inst✝¹ : OrderedCancelAddCommMonoid Γ
inst✝ : NonUnitalNonAssocSemiring R
r : R
x : HahnSeries Γ R
a : Γ
⊢ ((single 0) r * x).coeff a = r * x.coeff a
state_after: no goals
Theorem: Set.ncard_coe_Finset
File: Mathlib/Data/Set/Card.lean

tactic: rw [ncard_eq_toFinset_card _, Finset.finite_toSet_toFinset]
state_before: α : Type u_1
β : Type u_2
s✝ t : Set α
s : Finset α
⊢ (↑s).ncard = s.card
state_after: no goals