1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: CategoryTheory.IsPullback.zero_right
File: Mathlib/CategoryTheory/Limits/Shapes/CommSq.lean

tactic: simp
state_before: C : Type u₁
inst✝² : Category.{v₁, u₁} C
P X✝ Y Z : C
fst : P ⟶ X✝
snd : P ⟶ Y
f : X✝ ⟶ Z
g : Y ⟶ Z
inst✝¹ : HasZeroObject C
inst✝ : HasZeroMorphisms C
X : C
⊢ CommSq 0 (𝟙 X) 0 0
state_after: no goals

tactic: simp [eq_iff_true_of_subsingleton]
state_before: C : Type u₁
inst✝² : Category.{v₁, u₁} C
P X✝ Y Z : C
fst : P ⟶ X✝
snd : P ⟶ Y
f : X✝ ⟶ Z
g : Y ⟶ Z
inst✝¹ : HasZeroObject C
inst✝ : HasZeroMorphisms C
X : C
⊢ ((zeroProdIso X).symm ≪≫ (pullbackZeroZeroIso 0 X).symm).hom ≫ pullback.fst = 0
state_after: no goals

tactic: simp
state_before: C : Type u₁
inst✝² : Category.{v₁, u₁} C
P X✝ Y Z : C
fst : P ⟶ X✝
snd : P ⟶ Y
f : X✝ ⟶ Z
g : Y ⟶ Z
inst✝¹ : HasZeroObject C
inst✝ : HasZeroMorphisms C
X : C
⊢ ((zeroProdIso X).symm ≪≫ (pullbackZeroZeroIso 0 X).symm).hom ≫ pullback.snd = 𝟙 X
state_after: no goals
Theorem: Matrix.det_sum_le
File: Mathlib/LinearAlgebra/Matrix/AbsoluteValue.lean

tactic: simp only [sum_apply]
state_before: R : Type u_1
S : Type u_2
inst✝⁴ : CommRing R
inst✝³ : Nontrivial R
inst✝² : LinearOrderedCommRing S
n : Type u_3
inst✝¹ : Fintype n
inst✝ : DecidableEq n
ι : Type u_4
s : Finset ι
A : ι → Matrix n n R
abv : AbsoluteValue R S
x : S
hx : ∀ (k : ι) (i j : n), abv (A k i j) ≤ x
i j : n
⊢ abv ((∑ k ∈ s, A k) i j) = abv (∑ k ∈ s, A k i j)
state_after: no goals
Theorem: Complex.re_add_im
File: Mathlib/Data/Complex/Basic.lean

tactic: simp [ofReal']
state_before: z : ℂ
⊢ (↑z.re + ↑z.im * I).re = z.re ∧ (↑z.re + ↑z.im * I).im = z.im
state_after: no goals
Theorem: PNat.le_of_dvd
File: Mathlib/Data/PNat/Basic.lean

tactic: rw [dvd_iff']
state_before: m n : ℕ+
⊢ m ∣ n → m ≤ n
state_after: m n : ℕ+
⊢ n.mod m = m → m ≤ n

tactic: intro h
state_before: m n : ℕ+
⊢ n.mod m = m → m ≤ n
state_after: m n : ℕ+
h : n.mod m = m
⊢ m ≤ n

tactic: rw [← h]
state_before: m n : ℕ+
h : n.mod m = m
⊢ m ≤ n
state_after: m n : ℕ+
h : n.mod m = m
⊢ n.mod m ≤ n

tactic: apply (mod_le n m).left
state_before: m n : ℕ+
h : n.mod m = m
⊢ n.mod m ≤ n
state_after: no goals
Theorem: PNat.XgcdType.step_wf
File: Mathlib/Data/PNat/Xgcd.lean

tactic: change u.r - 1 < u.bp
state_before: u : XgcdType
hr : u.r ≠ 0
⊢ sizeOf u.step < sizeOf u
state_after: u : XgcdType
hr : u.r ≠ 0
⊢ u.r - 1 < u.bp

tactic: have h₀ : u.r - 1 + 1 = u.r := Nat.succ_pred_eq_of_pos (Nat.pos_of_ne_zero hr)
state_before: u : XgcdType
hr : u.r ≠ 0
⊢ u.r - 1 < u.bp
state_after: u : XgcdType
hr : u.r ≠ 0
h₀ : u.r - 1 + 1 = u.r
⊢ u.r - 1 < u.bp

tactic: have h₁ : u.r < u.bp + 1 := Nat.mod_lt (u.ap + 1) u.bp.succ_pos
state_before: u : XgcdType
hr : u.r ≠ 0
h₀ : u.r - 1 + 1 = u.r
⊢ u.r - 1 < u.bp
state_after: u : XgcdType
hr : u.r ≠ 0
h₀ : u.r - 1 + 1 = u.r
h₁ : u.r < u.bp + 1
⊢ u.r - 1 < u.bp

tactic: rw [← h₀] at h₁
state_before: u : XgcdType
hr : u.r ≠ 0
h₀ : u.r - 1 + 1 = u.r
h₁ : u.r < u.bp + 1
⊢ u.r - 1 < u.bp
state_after: u : XgcdType
hr : u.r ≠ 0
h₀ : u.r - 1 + 1 = u.r
h₁ : u.r - 1 + 1 < u.bp + 1
⊢ u.r - 1 < u.bp

tactic: exact lt_of_succ_lt_succ h₁
state_before: u : XgcdType
hr : u.r ≠ 0
h₀ : u.r - 1 + 1 = u.r
h₁ : u.r - 1 + 1 < u.bp + 1
⊢ u.r - 1 < u.bp
state_after: no goals
Theorem: Real.hasDerivAt_Gamma_nat
File: Mathlib/NumberTheory/Harmonic/GammaDeriv.lean

tactic: linarith
state_before: n m : ℕ
⊢ ↑n + 1 ≠ -↑m
state_after: no goals
Theorem: LinearMap.norm_mkContinuous₂_aux
File: Mathlib/Analysis/NormedSpace/OperatorNorm/Bilinear.lean

tactic: rw [max_mul_of_nonneg _ _ (norm_nonneg x), zero_mul]
state_before: 𝕜 : Type u_1
𝕜₂ : Type u_2
𝕜₃ : Type u_3
E : Type u_4
Eₗ : Type u_5
F : Type u_6
Fₗ : Type u_7
G : Type u_8
Gₗ : Type u_9
𝓕 : Type u_10
inst✝¹⁷ : SeminormedAddCommGroup E
inst✝¹⁶ : SeminormedAddCommGroup Eₗ
inst✝¹⁵ : SeminormedAddCommGroup F
inst✝¹⁴ : SeminormedAddCommGroup Fₗ
inst✝¹³ : SeminormedAddCommGroup G
inst✝¹² : SeminormedAddCommGroup Gₗ
inst✝¹¹ : NontriviallyNormedField 𝕜
inst✝¹⁰ : NontriviallyNormedField 𝕜₂
inst✝⁹ : NontriviallyNormedField 𝕜₃
inst✝⁸ : NormedSpace 𝕜 E
inst✝⁷ : NormedSpace 𝕜 Eₗ
inst✝⁶ : NormedSpace 𝕜₂ F
inst✝⁵ : NormedSpace 𝕜 Fₗ
inst✝⁴ : NormedSpace 𝕜₃ G
inst✝³ : NormedSpace 𝕜 Gₗ
σ₁₂ : 𝕜 →+* 𝕜₂
σ₂₃ : 𝕜₂ →+* 𝕜₃
σ₁₃ : 𝕜 →+* 𝕜₃
inst✝² : RingHomCompTriple σ₁₂ σ₂₃ σ₁₃
inst✝¹ : FunLike 𝓕 E F
inst✝ : RingHomIsometric σ₂₃
f : E →ₛₗ[σ₁₃] F →ₛₗ[σ₂₃] G
C : ℝ
h : ∀ (x : E) (y : F), ‖(f x) y‖ ≤ C * ‖x‖ * ‖y‖
x : E
⊢ max (C * ‖x‖) 0 = max C 0 * ‖x‖
state_after: no goals
Theorem: CategoryTheory.ShortComplex.SnakeInput.exact_C₁_down
File: Mathlib/Algebra/Homology/ShortComplex/SnakeLemma.lean

tactic: rw [← comp_τ₁, S.w₁₃, zero_τ₁]
state_before: C : Type u_1
inst✝¹ : Category.{?u.39082, u_1} C
inst✝ : Abelian C
S : SnakeInput C
⊢ S.v₁₂.τ₁ ≫ S.v₂₃.τ₁ = 0
state_after: no goals
Theorem: MeasureTheory.weightedSMul_smul
File: Mathlib/MeasureTheory/Integral/Bochner.lean

tactic: simp_rw [weightedSMul_apply, smul_comm]
state_before: α : Type u_1
E : Type u_2
F : Type u_3
𝕜 : Type u_4
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
m : MeasurableSpace α
μ : Measure α
inst✝² : NormedField 𝕜
inst✝¹ : NormedSpace 𝕜 F
inst✝ : SMulCommClass ℝ 𝕜 F
c : 𝕜
s : Set α
x : F
⊢ (weightedSMul μ s) (c • x) = c • (weightedSMul μ s) x
state_after: no goals
Theorem: AlgebraicTopology.NormalizedMooreComplex.d_squared
File: Mathlib/AlgebraicTopology/MooreComplex.lean

tactic: rcases n with _ | n <;> dsimp [objD]
state_before: C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : Abelian C
X : SimplicialObject C
n : ℕ
⊢ objD X (n + 1) ≫ objD X n = 0
state_after: case zero
C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : Abelian C
X : SimplicialObject C
⊢ ({0}.inf fun k => kernelSubobject (X.δ k.succ)).factorThru
        ((Finset.univ.inf fun k => kernelSubobject (X.δ k.succ)).arrow ≫ X.δ 0) ⋯ ≫
      ({0}.inf fun k => kernelSubobject (X.δ k.succ)).arrow ≫ X.δ 0 ≫ inv ⊤.arrow =
    0

case succ
C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : Abelian C
X : SimplicialObject C
n : ℕ
⊢ (Finset.univ.inf fun k => kernelSubobject (X.δ k.succ)).factorThru
        ((Finset.univ.inf fun k => kernelSubobject (X.δ k.succ)).arrow ≫ X.δ 0) ⋯ ≫
      (Finset.univ.inf fun k => kernelSubobject (X.δ k.succ)).factorThru
        ((Finset.univ.inf fun k => kernelSubobject (X.δ k.succ)).arrow ≫ X.δ 0) ⋯ =
    0

tactic: erw [Subobject.factorThru_arrow_assoc, Category.assoc,
  ← X.δ_comp_δ_assoc (Fin.zero_le (0 : Fin 2)),
  ← factorThru_arrow _ _ (finset_inf_arrow_factors Finset.univ _ (0 : Fin 2) (by simp)),
  Category.assoc, kernelSubobject_arrow_comp_assoc, zero_comp, comp_zero]
state_before: case zero
C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : Abelian C
X : SimplicialObject C
⊢ ({0}.inf fun k => kernelSubobject (X.δ k.succ)).factorThru
        ((Finset.univ.inf fun k => kernelSubobject (X.δ k.succ)).arrow ≫ X.δ 0) ⋯ ≫
      ({0}.inf fun k => kernelSubobject (X.δ k.succ)).arrow ≫ X.δ 0 ≫ inv ⊤.arrow =
    0
state_after: no goals

tactic: simp
state_before: C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : Abelian C
X : SimplicialObject C
⊢ 0 ∈ Finset.univ
state_after: no goals

tactic: erw [factorThru_right, factorThru_eq_zero, factorThru_arrow_assoc, Category.assoc,
  ← X.δ_comp_δ (Fin.zero_le (0 : Fin (n + 3))),
  ← factorThru_arrow _ _ (finset_inf_arrow_factors Finset.univ _ (0 : Fin (n + 3)) (by simp)),
  Category.assoc, kernelSubobject_arrow_comp_assoc, zero_comp, comp_zero]
state_before: case succ
C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : Abelian C
X : SimplicialObject C
n : ℕ
⊢ (Finset.univ.inf fun k => kernelSubobject (X.δ k.succ)).factorThru
        ((Finset.univ.inf fun k => kernelSubobject (X.δ k.succ)).arrow ≫ X.δ 0) ⋯ ≫
      (Finset.univ.inf fun k => kernelSubobject (X.δ k.succ)).factorThru
        ((Finset.univ.inf fun k => kernelSubobject (X.δ k.succ)).arrow ≫ X.δ 0) ⋯ =
    0
state_after: no goals

tactic: simp
state_before: C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : Abelian C
X : SimplicialObject C
n : ℕ
⊢ 0 ∈ Finset.univ
state_after: no goals
Theorem: IsSubgroup.div_mem
File: Mathlib/Deprecated/Subgroup.lean

tactic: simpa only [div_eq_mul_inv] using hs.mul_mem hx (hs.inv_mem hy)
state_before: G : Type u_1
H : Type u_2
A : Type u_3
a a₁ a₂ b c : G
inst✝¹ : Group G
inst✝ : AddGroup A
s : Set G
hs : IsSubgroup s
x y : G
hx : x ∈ s
hy : y ∈ s
⊢ x / y ∈ s
state_after: no goals
Theorem: HasDerivAt.smul
File: Mathlib/Analysis/Calculus/Deriv/Mul.lean

tactic: rw [← hasDerivWithinAt_univ] at *
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 𝕜 𝕜'
inst✝¹ : NormedSpace 𝕜' F
inst✝ : IsScalarTower 𝕜 𝕜' F
c : 𝕜 → 𝕜'
c' : 𝕜'
hc : HasDerivAt c c' x
hf : HasDerivAt f f' x
⊢ HasDerivAt (fun y => c y • f y) (c x • f' + c' • f x) x
state_after: 𝕜 : 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 𝕜 𝕜'
inst✝¹ : NormedSpace 𝕜' F
inst✝ : IsScalarTower 𝕜 𝕜' F
c : 𝕜 → 𝕜'
c' : 𝕜'
hc : HasDerivWithinAt c c' univ x
hf : HasDerivWithinAt f f' univ x
⊢ HasDerivWithinAt (fun y => c y • f y) (c x • f' + c' • f x) univ x

tactic: exact hc.smul hf
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 𝕜 𝕜'
inst✝¹ : NormedSpace 𝕜' F
inst✝ : IsScalarTower 𝕜 𝕜' F
c : 𝕜 → 𝕜'
c' : 𝕜'
hc : HasDerivWithinAt c c' univ x
hf : HasDerivWithinAt f f' univ x
⊢ HasDerivWithinAt (fun y => c y • f y) (c x • f' + c' • f x) univ x
state_after: no goals
Theorem: Hyperreal.isSt_iff_tendsto
File: Mathlib/Data/Real/Hyperreal.lean

tactic: rcases ofSeq_surjective x with ⟨f, rfl⟩
state_before: x : ℝ*
r : ℝ
⊢ x.IsSt r ↔ Germ.Tendsto x (𝓝 r)
state_after: case intro
r : ℝ
f : ℕ → ℝ
⊢ (ofSeq f).IsSt r ↔ Germ.Tendsto (ofSeq f) (𝓝 r)

tactic: exact isSt_ofSeq_iff_tendsto
state_before: case intro
r : ℝ
f : ℕ → ℝ
⊢ (ofSeq f).IsSt r ↔ Germ.Tendsto (ofSeq f) (𝓝 r)
state_after: no goals
Theorem: IsAddSubgroup.of_sub
File: Mathlib/Deprecated/Subgroup.lean

tactic: simpa only [sub_eq_add_neg] using sub_mem hx hy
state_before: G : Type u_1
H : Type u_2
A : Type u_3
a a₁ a₂ b c : G
inst✝¹ : Group G
inst✝ : AddGroup A
s : Set A
zero_mem : 0 ∈ s
sub_mem : ∀ {a b : A}, a ∈ s → b ∈ s → a - b ∈ s
x y : A
hx : x ∈ s
hy : y ∈ s
⊢ x + -y ∈ s
state_after: no goals
Theorem: LieModule.ideal_oper_maxTrivSubmodule_eq_bot
File: Mathlib/Algebra/Lie/Abelian.lean

tactic: rw [← LieSubmodule.coe_toSubmodule_eq_iff, LieSubmodule.lieIdeal_oper_eq_linear_span,
  LieSubmodule.bot_coeSubmodule, Submodule.span_eq_bot]
state_before: R : Type u
L : Type v
M : Type w
N : Type w₁
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✝³ : AddCommGroup N
inst✝² : Module R N
inst✝¹ : LieRingModule L N
inst✝ : LieModule R L N
I : LieIdeal R L
⊢ ⁅I, maxTrivSubmodule R L M⁆ = ⊥
state_after: R : Type u
L : Type v
M : Type w
N : Type w₁
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✝³ : AddCommGroup N
inst✝² : Module R N
inst✝¹ : LieRingModule L N
inst✝ : LieModule R L N
I : LieIdeal R L
⊢ ∀ x ∈ {m | ∃ x n, ⁅↑x, ↑n⁆ = m}, x = 0

tactic: rintro m ⟨⟨x, hx⟩, ⟨⟨m, hm⟩, rfl⟩⟩
state_before: R : Type u
L : Type v
M : Type w
N : Type w₁
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✝³ : AddCommGroup N
inst✝² : Module R N
inst✝¹ : LieRingModule L N
inst✝ : LieModule R L N
I : LieIdeal R L
⊢ ∀ x ∈ {m | ∃ x n, ⁅↑x, ↑n⁆ = m}, x = 0
state_after: case intro.mk.intro.mk
R : Type u
L : Type v
M : Type w
N : Type w₁
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✝³ : AddCommGroup N
inst✝² : Module R N
inst✝¹ : LieRingModule L N
inst✝ : LieModule R L N
I : LieIdeal R L
x : L
hx : x ∈ I
m : M
hm : m ∈ maxTrivSubmodule R L M
⊢ ⁅↑⟨x, hx⟩, ↑⟨m, hm⟩⁆ = 0

tactic: exact hm x
state_before: case intro.mk.intro.mk
R : Type u
L : Type v
M : Type w
N : Type w₁
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✝³ : AddCommGroup N
inst✝² : Module R N
inst✝¹ : LieRingModule L N
inst✝ : LieModule R L N
I : LieIdeal R L
x : L
hx : x ∈ I
m : M
hm : m ∈ maxTrivSubmodule R L M
⊢ ⁅↑⟨x, hx⟩, ↑⟨m, hm⟩⁆ = 0
state_after: no goals
Theorem: contMDiffOn_extChartAt_symm
File: Mathlib/Geometry/Manifold/ContMDiff/Atlas.lean

tactic: convert contMDiffOn_extend_symm (chart_mem_maximalAtlas I x)
state_before: 𝕜 : 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
M : Type u_4
inst✝⁸ : TopologicalSpace M
inst✝⁷ : ChartedSpace H M
inst✝⁶ : SmoothManifoldWithCorners I M
E' : Type u_5
inst✝⁵ : NormedAddCommGroup E'
inst✝⁴ : NormedSpace 𝕜 E'
H' : Type u_6
inst✝³ : TopologicalSpace H'
I' : ModelWithCorners 𝕜 E' H'
M' : Type u_7
inst✝² : TopologicalSpace M'
inst✝¹ : ChartedSpace H' M'
inst✝ : SmoothManifoldWithCorners I' M'
e : PartialHomeomorph M H
x✝ : M
m n : ℕ∞
x : M
⊢ ContMDiffOn 𝓘(𝕜, E) I n (↑(extChartAt I x).symm) (extChartAt I x).target
state_after: case h.e'_23
𝕜 : 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
M : Type u_4
inst✝⁸ : TopologicalSpace M
inst✝⁷ : ChartedSpace H M
inst✝⁶ : SmoothManifoldWithCorners I M
E' : Type u_5
inst✝⁵ : NormedAddCommGroup E'
inst✝⁴ : NormedSpace 𝕜 E'
H' : Type u_6
inst✝³ : TopologicalSpace H'
I' : ModelWithCorners 𝕜 E' H'
M' : Type u_7
inst✝² : TopologicalSpace M'
inst✝¹ : ChartedSpace H' M'
inst✝ : SmoothManifoldWithCorners I' M'
e : PartialHomeomorph M H
x✝ : M
m n : ℕ∞
x : M
⊢ (extChartAt I x).target = ↑I '' (chartAt H x).target

tactic: rw [extChartAt_target, I.image_eq]
state_before: case h.e'_23
𝕜 : 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
M : Type u_4
inst✝⁸ : TopologicalSpace M
inst✝⁷ : ChartedSpace H M
inst✝⁶ : SmoothManifoldWithCorners I M
E' : Type u_5
inst✝⁵ : NormedAddCommGroup E'
inst✝⁴ : NormedSpace 𝕜 E'
H' : Type u_6
inst✝³ : TopologicalSpace H'
I' : ModelWithCorners 𝕜 E' H'
M' : Type u_7
inst✝² : TopologicalSpace M'
inst✝¹ : ChartedSpace H' M'
inst✝ : SmoothManifoldWithCorners I' M'
e : PartialHomeomorph M H
x✝ : M
m n : ℕ∞
x : M
⊢ (extChartAt I x).target = ↑I '' (chartAt H x).target
state_after: no goals
Theorem: Batteries.RBNode.balance1_eq
File: .lake/packages/batteries/Batteries/Data/RBMap/WF.lean

tactic: unfold balance1
state_before: α : Type u_1
c : RBColor
n : Nat
l : RBNode α
v : α
r : RBNode α
hl : l.Balanced c n
⊢ l.balance1 v r = node black l v r
state_after: α : Type u_1
c : RBColor
n : Nat
l : RBNode α
v : α
r : RBNode α
hl : l.Balanced c n
⊢ (match l, v, r with
    | node red (node red a x b) y c, z, d => node red (node black a x b) y (node black c z d)
    | node red a x (node red b y c), z, d => node red (node black a x b) y (node black c z d)
    | a, x, b => node black a x b) =
    node black l v r

tactic: split <;> first | rfl | nomatch hl
state_before: α : Type u_1
c : RBColor
n : Nat
l : RBNode α
v : α
r : RBNode α
hl : l.Balanced c n
⊢ (match l, v, r with
    | node red (node red a x b) y c, z, d => node red (node black a x b) y (node black c z d)
    | node red a x (node red b y c), z, d => node red (node black a x b) y (node black c z d)
    | a, x, b => node black a x b) =
    node black l v r
state_after: no goals

tactic: rfl
state_before: case h_3
α : Type u_1
c : RBColor
n : Nat
l : RBNode α
v : α
r : RBNode α
hl : l.Balanced c n
x✝⁴ : RBNode α
x✝³ : α
x✝² : RBNode α
x✝¹ : ∀ (a : RBNode α) (x : α) (b : RBNode α) (y : α) (c : RBNode α), l = node red (node red a x b) y c → False
x✝ : ∀ (a : RBNode α) (x : α) (b : RBNode α) (y : α) (c : RBNode α), l = node red a x (node red b y c) → False
⊢ node black l v r = node black l v r
state_after: no goals

tactic: nomatch hl
state_before: case h_2
α : Type u_1
c : RBColor
n : Nat
v : α
r x✝⁴ : RBNode α
x✝³ : α
x✝² a✝ : RBNode α
x✝¹ : α
b✝ : RBNode α
y✝ : α
c✝ : RBNode α
x✝ : ∀ (a : RBNode α) (x : α) (b : RBNode α), a✝ = node red a x b → False
hl : (node red a✝ x✝¹ (node red b✝ y✝ c✝)).Balanced c n
⊢ node red (node black a✝ x✝¹ b✝) y✝ (node black c✝ v r) = node black (node red a✝ x✝¹ (node red b✝ y✝ c✝)) v r
state_after: no goals
Theorem: Nat.unpair_right_le
File: Mathlib/Data/Nat/Pairing.lean

tactic: simpa using right_le_pair n.unpair.1 n.unpair.2
state_before: n : ℕ
⊢ (unpair n).2 ≤ n
state_after: no goals
Theorem: Batteries.RBNode.mem_reverse
File: .lake/packages/batteries/Batteries/Data/RBMap/Lemmas.lean

tactic: rw [← mem_toList]
state_before: α : Type u_1
a : α
t : RBNode α
⊢ a ∈ t.reverse ↔ a ∈ t
state_after: α : Type u_1
a : α
t : RBNode α
⊢ a ∈ t.reverse.toList ↔ a ∈ t

tactic: simp
state_before: α : Type u_1
a : α
t : RBNode α
⊢ a ∈ t.reverse.toList ↔ a ∈ t
state_after: no goals
Theorem: Polynomial.toFinsupp_pow
File: Mathlib/Algebra/Polynomial/Basic.lean

tactic: cases a
state_before: R : Type u
a✝ b : R
m n✝ : ℕ
inst✝ : Semiring R
p q a : R[X]
n : ℕ
⊢ (a ^ n).toFinsupp = a.toFinsupp ^ n
state_after: case ofFinsupp
R : Type u
a b : R
m n✝ : ℕ
inst✝ : Semiring R
p q : R[X]
n : ℕ
toFinsupp✝ : R[ℕ]
⊢ ({ toFinsupp := toFinsupp✝ } ^ n).toFinsupp = { toFinsupp := toFinsupp✝ }.toFinsupp ^ n

tactic: rw [← ofFinsupp_pow]
state_before: case ofFinsupp
R : Type u
a b : R
m n✝ : ℕ
inst✝ : Semiring R
p q : R[X]
n : ℕ
toFinsupp✝ : R[ℕ]
⊢ ({ toFinsupp := toFinsupp✝ } ^ n).toFinsupp = { toFinsupp := toFinsupp✝ }.toFinsupp ^ n
state_after: no goals
Theorem: eventually_nhdsSet_iUnion₂
File: Mathlib/Topology/NhdsSet.lean

tactic: simp only [nhdsSet_iUnion, eventually_iSup]
state_before: X : Type u_1
Y : Type u_2
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
f : Filter X
s✝ t s₁ s₂ t₁ t₂ : Set X
x : X
ι : Sort u_3
p : ι → Prop
s : ι → Set X
P : X → Prop
⊢ (∀ᶠ (x : X) in 𝓝ˢ (⋃ i, ⋃ (_ : p i), s i), P x) ↔ ∀ (i : ι), p i → ∀ᶠ (x : X) in 𝓝ˢ (s i), P x
state_after: no goals
Theorem: Pell.pellZd_sub
File: Mathlib/NumberTheory/PellMatiyasevic.lean

tactic: let t := pellZd_add a1 n (m - n)
state_before: a : ℕ
a1 : 1 < a
m n : ℕ
h : n ≤ m
⊢ pellZd a1 (m - n) = pellZd a1 m * star (pellZd a1 n)
state_after: a : ℕ
a1 : 1 < a
m n : ℕ
h : n ≤ m
t : pellZd a1 (n + (m - n)) = pellZd a1 n * pellZd a1 (m - n) := pellZd_add a1 n (m - n)
⊢ pellZd a1 (m - n) = pellZd a1 m * star (pellZd a1 n)

tactic: rw [add_tsub_cancel_of_le h] at t
state_before: a : ℕ
a1 : 1 < a
m n : ℕ
h : n ≤ m
t : pellZd a1 (n + (m - n)) = pellZd a1 n * pellZd a1 (m - n) := pellZd_add a1 n (m - n)
⊢ pellZd a1 (m - n) = pellZd a1 m * star (pellZd a1 n)
state_after: a : ℕ
a1 : 1 < a
m n : ℕ
h : n ≤ m
t : pellZd a1 m = pellZd a1 n * pellZd a1 (m - n)
⊢ pellZd a1 (m - n) = pellZd a1 m * star (pellZd a1 n)

tactic: rw [t, mul_comm (pellZd _ n) _, mul_assoc, isPell_norm.1 (isPell_pellZd _ _), mul_one]
state_before: a : ℕ
a1 : 1 < a
m n : ℕ
h : n ≤ m
t : pellZd a1 m = pellZd a1 n * pellZd a1 (m - n)
⊢ pellZd a1 (m - n) = pellZd a1 m * star (pellZd a1 n)
state_after: no goals
Theorem: Int.isUnit_iff
File: Mathlib/Algebra/Group/Int.lean

tactic: refine ⟨fun h ↦ isUnit_eq_one_or h, fun h ↦ ?_⟩
state_before: u v : ℤ
⊢ IsUnit u ↔ u = 1 ∨ u = -1
state_after: u v : ℤ
h : u = 1 ∨ u = -1
⊢ IsUnit u

tactic: rcases h with (rfl | rfl)
state_before: u v : ℤ
h : u = 1 ∨ u = -1
⊢ IsUnit u
state_after: case inl
v : ℤ
⊢ IsUnit 1

case inr
v : ℤ
⊢ IsUnit (-1)

tactic: exact isUnit_one
state_before: case inl
v : ℤ
⊢ IsUnit 1
state_after: no goals

tactic: exact ⟨⟨-1, -1, by decide, by decide⟩, rfl⟩
state_before: case inr
v : ℤ
⊢ IsUnit (-1)
state_after: no goals

tactic: decide
state_before: v : ℤ
⊢ -1 * -1 = 1
state_after: no goals
Theorem: summable_mul_right_iff
File: Mathlib/Topology/Algebra/InfiniteSum/Ring.lean

tactic: simpa only [mul_inv_cancel_right₀ h] using H.mul_right a⁻¹
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
H : Summable fun i => f i * a
⊢ Summable f
state_after: no goals
Theorem: CategoryTheory.Limits.Types.isConnected_iff_isColimit_pUnitCocone
File: Mathlib/CategoryTheory/Limits/IsConnected.lean

tactic: refine ⟨fun inst => ⟨isColimitPUnitCocone C⟩, fun ⟨h⟩ => ?_⟩
state_before: C : Type u
inst✝ : Category.{v, u} C
⊢ IsConnected C ↔ Nonempty (IsColimit (pUnitCocone C))
state_after: C : Type u
inst✝ : Category.{v, u} C
x✝ : Nonempty (IsColimit (pUnitCocone C))
h : IsColimit (pUnitCocone C)
⊢ IsConnected C

tactic: let colimitCocone : ColimitCocone (constPUnitFunctor C) := ⟨pUnitCocone.{w} C, h⟩
state_before: C : Type u
inst✝ : Category.{v, u} C
x✝ : Nonempty (IsColimit (pUnitCocone C))
h : IsColimit (pUnitCocone C)
⊢ IsConnected C
state_after: C : Type u
inst✝ : Category.{v, u} C
x✝ : Nonempty (IsColimit (pUnitCocone C))
h : IsColimit (pUnitCocone C)
colimitCocone : ColimitCocone (constPUnitFunctor C) := { cocone := pUnitCocone C, isColimit := h }
⊢ IsConnected C

tactic: have : HasColimit (constPUnitFunctor.{w} C) := ⟨⟨colimitCocone⟩⟩
state_before: C : Type u
inst✝ : Category.{v, u} C
x✝ : Nonempty (IsColimit (pUnitCocone C))
h : IsColimit (pUnitCocone C)
colimitCocone : ColimitCocone (constPUnitFunctor C) := { cocone := pUnitCocone C, isColimit := h }
⊢ IsConnected C
state_after: C : Type u
inst✝ : Category.{v, u} C
x✝ : Nonempty (IsColimit (pUnitCocone C))
h : IsColimit (pUnitCocone C)
colimitCocone : ColimitCocone (constPUnitFunctor C) := { cocone := pUnitCocone C, isColimit := h }
this : HasColimit (constPUnitFunctor C)
⊢ IsConnected C

tactic: simp only [isConnected_iff_colimit_constPUnitFunctor_iso_pUnit.{w} C]
state_before: C : Type u
inst✝ : Category.{v, u} C
x✝ : Nonempty (IsColimit (pUnitCocone C))
h : IsColimit (pUnitCocone C)
colimitCocone : ColimitCocone (constPUnitFunctor C) := { cocone := pUnitCocone C, isColimit := h }
this : HasColimit (constPUnitFunctor C)
⊢ IsConnected C
state_after: C : Type u
inst✝ : Category.{v, u} C
x✝ : Nonempty (IsColimit (pUnitCocone C))
h : IsColimit (pUnitCocone C)
colimitCocone : ColimitCocone (constPUnitFunctor C) := { cocone := pUnitCocone C, isColimit := h }
this : HasColimit (constPUnitFunctor C)
⊢ Nonempty (colimit (constPUnitFunctor C) ≅ PUnit.{w + 1})

tactic: exact ⟨colimit.isoColimitCocone colimitCocone⟩
state_before: C : Type u
inst✝ : Category.{v, u} C
x✝ : Nonempty (IsColimit (pUnitCocone C))
h : IsColimit (pUnitCocone C)
colimitCocone : ColimitCocone (constPUnitFunctor C) := { cocone := pUnitCocone C, isColimit := h }
this : HasColimit (constPUnitFunctor C)
⊢ Nonempty (colimit (constPUnitFunctor C) ≅ PUnit.{w + 1})
state_after: no goals