1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: AddCommGroup.add_zsmul_modEq
File: Mathlib/Algebra/ModEq.lean

tactic: simp
state_before: α : Type u_1
inst✝ : AddCommGroup α
p a a₁ a₂ b b₁ b₂ c : α
n : ℕ
z✝ z : ℤ
⊢ a - (a + z • p) = -z • p
state_after: no goals
Theorem: fn_max_mul_fn_min
File: Mathlib/Algebra/Order/Monoid/Unbundled/MinMax.lean

tactic: obtain h | h := le_total a b <;> simp [h, mul_comm]
state_before: α : Type u_1
β : Type u_2
inst✝² : LinearOrder α
inst✝¹ : CommSemigroup α
inst✝ : CommSemigroup β
f : α → β
a b : α
⊢ f (max a b) * f (min a b) = f a * f b
state_after: no goals
Theorem: Multiplicative.isSubgroup_iff
File: Mathlib/Deprecated/Subgroup.lean

tactic: rintro ⟨⟨h₁, h₂⟩, h₃⟩
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
⊢ IsSubgroup s → IsAddSubgroup s
state_after: case mk.mk
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
h₃ : ∀ {a : Multiplicative A}, a ∈ s → a⁻¹ ∈ s
h₁ : 1 ∈ s
h₂ : ∀ {a b : Multiplicative A}, a ∈ s → b ∈ s → a * b ∈ s
⊢ IsAddSubgroup s

tactic: exact @IsAddSubgroup.mk A _ _ ⟨h₁, @h₂⟩ @h₃
state_before: case mk.mk
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
h₃ : ∀ {a : Multiplicative A}, a ∈ s → a⁻¹ ∈ s
h₁ : 1 ∈ s
h₂ : ∀ {a b : Multiplicative A}, a ∈ s → b ∈ s → a * b ∈ s
⊢ IsAddSubgroup s
state_after: no goals
Theorem: Complex.tendsto_limUnder_of_differentiable_on_punctured_nhds_of_isLittleO
File: Mathlib/Analysis/Complex/RemovableSingularity.lean

tactic: rw [eventually_nhdsWithin_iff] at hd
state_before: E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℂ E
inst✝ : CompleteSpace E
f : ℂ → E
c : ℂ
hd : ∀ᶠ (z : ℂ) in 𝓝[≠] c, DifferentiableAt ℂ f z
ho : (fun z => f z - f c) =o[𝓝[≠] c] fun z => (z - c)⁻¹
⊢ Tendsto f (𝓝[≠] c) (𝓝 (limUnder (𝓝[≠] c) f))
state_after: E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℂ E
inst✝ : CompleteSpace E
f : ℂ → E
c : ℂ
hd : ∀ᶠ (x : ℂ) in 𝓝 c, x ∈ {c}ᶜ → DifferentiableAt ℂ f x
ho : (fun z => f z - f c) =o[𝓝[≠] c] fun z => (z - c)⁻¹
⊢ Tendsto f (𝓝[≠] c) (𝓝 (limUnder (𝓝[≠] c) f))

tactic: have : DifferentiableOn ℂ f ({z | z ≠ c → DifferentiableAt ℂ f z} \ {c}) := fun z hz =>
  (hz.1 hz.2).differentiableWithinAt
state_before: E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℂ E
inst✝ : CompleteSpace E
f : ℂ → E
c : ℂ
hd : ∀ᶠ (x : ℂ) in 𝓝 c, x ∈ {c}ᶜ → DifferentiableAt ℂ f x
ho : (fun z => f z - f c) =o[𝓝[≠] c] fun z => (z - c)⁻¹
⊢ Tendsto f (𝓝[≠] c) (𝓝 (limUnder (𝓝[≠] c) f))
state_after: E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℂ E
inst✝ : CompleteSpace E
f : ℂ → E
c : ℂ
hd : ∀ᶠ (x : ℂ) in 𝓝 c, x ∈ {c}ᶜ → DifferentiableAt ℂ f x
ho : (fun z => f z - f c) =o[𝓝[≠] c] fun z => (z - c)⁻¹
this : DifferentiableOn ℂ f ({z | z ≠ c → DifferentiableAt ℂ f z} \ {c})
⊢ Tendsto f (𝓝[≠] c) (𝓝 (limUnder (𝓝[≠] c) f))

tactic: have H := differentiableOn_update_limUnder_of_isLittleO hd this ho
state_before: E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℂ E
inst✝ : CompleteSpace E
f : ℂ → E
c : ℂ
hd : ∀ᶠ (x : ℂ) in 𝓝 c, x ∈ {c}ᶜ → DifferentiableAt ℂ f x
ho : (fun z => f z - f c) =o[𝓝[≠] c] fun z => (z - c)⁻¹
this : DifferentiableOn ℂ f ({z | z ≠ c → DifferentiableAt ℂ f z} \ {c})
⊢ Tendsto f (𝓝[≠] c) (𝓝 (limUnder (𝓝[≠] c) f))
state_after: E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℂ E
inst✝ : CompleteSpace E
f : ℂ → E
c : ℂ
hd : ∀ᶠ (x : ℂ) in 𝓝 c, x ∈ {c}ᶜ → DifferentiableAt ℂ f x
ho : (fun z => f z - f c) =o[𝓝[≠] c] fun z => (z - c)⁻¹
this : DifferentiableOn ℂ f ({z | z ≠ c → DifferentiableAt ℂ f z} \ {c})
H : DifferentiableOn ℂ (update f c (limUnder (𝓝[≠] c) f)) {x | (fun x => x ∈ {c}ᶜ → DifferentiableAt ℂ f x) x}
⊢ Tendsto f (𝓝[≠] c) (𝓝 (limUnder (𝓝[≠] c) f))

tactic: exact continuousAt_update_same.1 (H.differentiableAt hd).continuousAt
state_before: E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℂ E
inst✝ : CompleteSpace E
f : ℂ → E
c : ℂ
hd : ∀ᶠ (x : ℂ) in 𝓝 c, x ∈ {c}ᶜ → DifferentiableAt ℂ f x
ho : (fun z => f z - f c) =o[𝓝[≠] c] fun z => (z - c)⁻¹
this : DifferentiableOn ℂ f ({z | z ≠ c → DifferentiableAt ℂ f z} \ {c})
H : DifferentiableOn ℂ (update f c (limUnder (𝓝[≠] c) f)) {x | (fun x => x ∈ {c}ᶜ → DifferentiableAt ℂ f x) x}
⊢ Tendsto f (𝓝[≠] c) (𝓝 (limUnder (𝓝[≠] c) f))
state_after: no goals
Theorem: Submodule.torsionBySet_univ
File: Mathlib/Algebra/Module/Torsion.lean

tactic: rw [eq_bot_iff, ← torsionBy_one, ← torsionBySet_singleton_eq]
state_before: R : Type u_1
M : Type u_2
inst✝² : CommSemiring R
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
s : Set R
a : R
⊢ torsionBySet R M Set.univ = ⊥
state_after: R : Type u_1
M : Type u_2
inst✝² : CommSemiring R
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
s : Set R
a : R
⊢ torsionBySet R M Set.univ ≤ torsionBySet R M {1}

tactic: exact torsionBySet_le_torsionBySet_of_subset fun _ _ => trivial
state_before: R : Type u_1
M : Type u_2
inst✝² : CommSemiring R
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
s : Set R
a : R
⊢ torsionBySet R M Set.univ ≤ torsionBySet R M {1}
state_after: no goals
Theorem: WeierstrassCurve.Jacobian.addXYZ_of_X_eq
File: Mathlib/AlgebraicGeometry/EllipticCurve/Jacobian.lean

tactic: erw [addXYZ, addX_of_X_eq hP hQ hPz hQz hx, addY_of_X_eq hP hQ hPz hQz hx, addZ_of_X_eq hx,
  smul_fin3, mul_one, mul_one, mul_zero]
state_before: R : Type u
inst✝¹ : CommRing R
W' : Jacobian R
F : Type v
inst✝ : Field F
W : Jacobian F
P Q : Fin 3 → F
hP : W.Equation P
hQ : W.Equation Q
hPz : P z ≠ 0
hQz : Q z ≠ 0
hx : P x * Q z ^ 2 = Q x * P z ^ 2
⊢ W.addXYZ P Q = addU P Q • ![1, 1, 0]
state_after: no goals
Theorem: iteratedFDerivWithin_one_apply
File: Mathlib/Analysis/Calculus/ContDiff/Defs.lean

tactic: simp only [iteratedFDerivWithin_succ_apply_left, iteratedFDerivWithin_zero_eq_comp,
  (continuousMultilinearCurryFin0 𝕜 E F).symm.comp_fderivWithin h]
state_before: 𝕜 : Type u
inst✝⁸ : NontriviallyNormedField 𝕜
E : Type uE
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace 𝕜 E
F : Type uF
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
G : Type uG
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
X : Type uX
inst✝¹ : NormedAddCommGroup X
inst✝ : NormedSpace 𝕜 X
s s₁ t u : Set E
f f₁ : E → F
g : F → G
x x₀ : E
c : F
m✝ n : ℕ∞
p : E → FormalMultilinearSeries 𝕜 E F
h : UniqueDiffWithinAt 𝕜 s x
m : Fin 1 → E
⊢ (iteratedFDerivWithin 𝕜 1 f s x) m = (fderivWithin 𝕜 f s x) (m 0)
state_after: 𝕜 : Type u
inst✝⁸ : NontriviallyNormedField 𝕜
E : Type uE
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace 𝕜 E
F : Type uF
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
G : Type uG
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
X : Type uX
inst✝¹ : NormedAddCommGroup X
inst✝ : NormedSpace 𝕜 X
s s₁ t u : Set E
f f₁ : E → F
g : F → G
x x₀ : E
c : F
m✝ n : ℕ∞
p : E → FormalMultilinearSeries 𝕜 E F
h : UniqueDiffWithinAt 𝕜 s x
m : Fin 1 → E
⊢ (((↑{ toLinearEquiv := (continuousMultilinearCurryFin0 𝕜 E F).symm.toLinearEquiv, continuous_toFun := ⋯,
                continuous_invFun := ⋯ }).comp
          (fderivWithin 𝕜 f s x))
        (m 0))
      (tail m) =
    (fderivWithin 𝕜 f s x) (m 0)

tactic: rfl
state_before: 𝕜 : Type u
inst✝⁸ : NontriviallyNormedField 𝕜
E : Type uE
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace 𝕜 E
F : Type uF
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
G : Type uG
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
X : Type uX
inst✝¹ : NormedAddCommGroup X
inst✝ : NormedSpace 𝕜 X
s s₁ t u : Set E
f f₁ : E → F
g : F → G
x x₀ : E
c : F
m✝ n : ℕ∞
p : E → FormalMultilinearSeries 𝕜 E F
h : UniqueDiffWithinAt 𝕜 s x
m : Fin 1 → E
⊢ (((↑{ toLinearEquiv := (continuousMultilinearCurryFin0 𝕜 E F).symm.toLinearEquiv, continuous_toFun := ⋯,
                continuous_invFun := ⋯ }).comp
          (fderivWithin 𝕜 f s x))
        (m 0))
      (tail m) =
    (fderivWithin 𝕜 f s x) (m 0)
state_after: no goals
Theorem: NonUnitalAlgHom.map_adjoin_singleton
File: Mathlib/Algebra/Algebra/NonUnitalSubalgebra.lean

tactic: simp [NonUnitalAlgHom.map_adjoin]
state_before: F : Type u_1
R : Type u
A : Type v
B : Type w
inst✝¹⁰ : CommSemiring R
inst✝⁹ : NonUnitalNonAssocSemiring A
inst✝⁸ : Module R A
inst✝⁷ : IsScalarTower R A A
inst✝⁶ : SMulCommClass R A A
inst✝⁵ : NonUnitalNonAssocSemiring B
inst✝⁴ : Module R B
inst✝³ : IsScalarTower R B B
inst✝² : SMulCommClass R B B
inst✝¹ : FunLike F A B
inst✝ : NonUnitalAlgHomClass F R A B
f : F
x : A
⊢ map f (adjoin R {x}) = adjoin R {f x}
state_after: no goals
Theorem: FirstOrder.Language.BoundedFormula.IsPrenex.relabel
File: Mathlib/ModelTheory/Syntax.lean

tactic: simp [h.all]
state_before: L : Language
L' : Language
M : Type w
N : Type u_1
P : Type u_2
inst✝² : L.Structure M
inst✝¹ : L.Structure N
inst✝ : L.Structure P
α : Type u'
β : Type v'
γ : Type u_3
n l : ℕ
φ✝¹ ψ : L.BoundedFormula α l
θ : L.BoundedFormula α l.succ
v : α → M
xs : Fin l → M
m : ℕ
φ : L.BoundedFormula α m
h✝ : φ.IsPrenex
f : α → β ⊕ Fin n
n✝ : ℕ
φ✝ : L.BoundedFormula α (n✝ + 1)
x✝ : φ✝.IsPrenex
h : (BoundedFormula.relabel f φ✝).IsPrenex
⊢ (BoundedFormula.relabel f φ✝.all).IsPrenex
state_after: no goals

tactic: simp [h.ex]
state_before: L : Language
L' : Language
M : Type w
N : Type u_1
P : Type u_2
inst✝² : L.Structure M
inst✝¹ : L.Structure N
inst✝ : L.Structure P
α : Type u'
β : Type v'
γ : Type u_3
n l : ℕ
φ✝¹ ψ : L.BoundedFormula α l
θ : L.BoundedFormula α l.succ
v : α → M
xs : Fin l → M
m : ℕ
φ : L.BoundedFormula α m
h✝ : φ.IsPrenex
f : α → β ⊕ Fin n
n✝ : ℕ
φ✝ : L.BoundedFormula α (n✝ + 1)
x✝ : φ✝.IsPrenex
h : (BoundedFormula.relabel f φ✝).IsPrenex
⊢ (BoundedFormula.relabel f φ✝.ex).IsPrenex
state_after: no goals
Theorem: PicardLindelof.FunSpace.vComp_apply_coe
File: Mathlib/Analysis/ODE/PicardLindelof.lean

tactic: simp only [vComp, proj_coe]
state_before: E : Type u_1
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℝ E
v : PicardLindelof E
f : v.FunSpace
t : ↑(Icc v.tMin v.tMax)
⊢ f.vComp ↑t = v.toFun (↑t) (f.toFun t)
state_after: no goals
Theorem: SimpleGraph.Subgraph.Connected.induce_verts
File: Mathlib/Combinatorics/SimpleGraph/Connectivity/Subgraph.lean

tactic: rw [connected_induce_iff]
state_before: V : Type u
V' : Type v
G : SimpleGraph V
G' : SimpleGraph V'
H : G.Subgraph
h : H.Connected
⊢ (SimpleGraph.induce H.verts G).Connected
state_after: V : Type u
V' : Type v
G : SimpleGraph V
G' : SimpleGraph V'
H : G.Subgraph
h : H.Connected
⊢ (⊤.induce H.verts).Connected

tactic: exact h.mono le_induce_top_verts (by exact rfl)
state_before: V : Type u
V' : Type v
G : SimpleGraph V
G' : SimpleGraph V'
H : G.Subgraph
h : H.Connected
⊢ (⊤.induce H.verts).Connected
state_after: no goals

tactic: exact rfl
state_before: V : Type u
V' : Type v
G : SimpleGraph V
G' : SimpleGraph V'
H : G.Subgraph
h : H.Connected
⊢ H.verts = (⊤.induce H.verts).verts
state_after: no goals
Theorem: InnerProductGeometry.norm_add_sq_eq_norm_sq_add_norm_sq_iff_angle_eq_pi_div_two
File: Mathlib/Geometry/Euclidean/Angle/Unoriented/RightAngle.lean

tactic: rw [norm_add_sq_eq_norm_sq_add_norm_sq_iff_real_inner_eq_zero]
state_before: V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
x y : V
⊢ ‖x + y‖ * ‖x + y‖ = ‖x‖ * ‖x‖ + ‖y‖ * ‖y‖ ↔ angle x y = π / 2
state_after: V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
x y : V
⊢ ⟪x, y⟫_ℝ = 0 ↔ angle x y = π / 2

tactic: exact inner_eq_zero_iff_angle_eq_pi_div_two x y
state_before: V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
x y : V
⊢ ⟪x, y⟫_ℝ = 0 ↔ angle x y = π / 2
state_after: no goals
Theorem: SimplicialObject.Splitting.ιSummand_comp_d_comp_πSummand_eq_zero
File: Mathlib/AlgebraicTopology/DoldKan/SplitSimplicialObject.lean

tactic: rw [A.eqId_iff_mono] at hA
state_before: C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
X : SimplicialObject C
s : Splitting X
inst✝ : Preadditive C
j k : ℕ
A : IndexSet { unop := [j] }
hA : ¬A.EqId
⊢ (s.cofan { unop := [j] }).inj A ≫ K[X].d j k ≫ s.πSummand (IndexSet.id { unop := [k] }) = 0
state_after: C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
X : SimplicialObject C
s : Splitting X
inst✝ : Preadditive C
j k : ℕ
A : IndexSet { unop := [j] }
hA : ¬Mono A.e
⊢ (s.cofan { unop := [j] }).inj A ≫ K[X].d j k ≫ s.πSummand (IndexSet.id { unop := [k] }) = 0

tactic: rw [← assoc, ← s.comp_PInfty_eq_zero_iff, assoc, ← PInfty.comm j k, s.cofan_inj_eq, assoc,
  degeneracy_comp_PInfty_assoc X j A.e hA, zero_comp, comp_zero]
state_before: C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
X : SimplicialObject C
s : Splitting X
inst✝ : Preadditive C
j k : ℕ
A : IndexSet { unop := [j] }
hA : ¬Mono A.e
⊢ (s.cofan { unop := [j] }).inj A ≫ K[X].d j k ≫ s.πSummand (IndexSet.id { unop := [k] }) = 0
state_after: no goals
Theorem: lcm_eq_zero_iff
File: Mathlib/Algebra/GCDMonoid/Basic.lean

tactic: have : Associated (a * b) 0 := (gcd_mul_lcm a b).symm.trans <| by rw [h, mul_zero]
state_before: α : Type u_1
inst✝¹ : CancelCommMonoidWithZero α
inst✝ : GCDMonoid α
a b : α
h : lcm a b = 0
⊢ a = 0 ∨ b = 0
state_after: α : Type u_1
inst✝¹ : CancelCommMonoidWithZero α
inst✝ : GCDMonoid α
a b : α
h : lcm a b = 0
this : Associated (a * b) 0
⊢ a = 0 ∨ b = 0

tactic: rwa [← mul_eq_zero, ← associated_zero_iff_eq_zero]
state_before: α : Type u_1
inst✝¹ : CancelCommMonoidWithZero α
inst✝ : GCDMonoid α
a b : α
h : lcm a b = 0
this : Associated (a * b) 0
⊢ a = 0 ∨ b = 0
state_after: no goals

tactic: rw [h, mul_zero]
state_before: α : Type u_1
inst✝¹ : CancelCommMonoidWithZero α
inst✝ : GCDMonoid α
a b : α
h : lcm a b = 0
⊢ Associated (gcd a b * lcm a b) 0
state_after: no goals

tactic: rintro (rfl | rfl) <;> [apply lcm_zero_left; apply lcm_zero_right]
state_before: α : Type u_1
inst✝¹ : CancelCommMonoidWithZero α
inst✝ : GCDMonoid α
a b : α
⊢ a = 0 ∨ b = 0 → lcm a b = 0
state_after: no goals
Theorem: Cardinal.iSup_lt_of_isRegular
File: Mathlib/SetTheory/Cardinal/Cofinality.lean

tactic: rwa [hc.cof_eq]
state_before: α : Type u_1
r : α → α → Prop
ι : Type u_2
f : ι → Cardinal.{u_2}
c : Cardinal.{u_2}
hc : c.IsRegular
hι : #ι < c
⊢ #ι < c.ord.cof
state_after: no goals
Theorem: Complex.re_eq_abs
File: Mathlib/Data/Complex/Order.lean

tactic: rw [← abs_re_eq_abs.2 h₂.symm, _root_.abs_of_nonneg h₁]
state_before: z : ℂ
this : 0 ≤ abs z
x✝ : 0 ≤ z
h₁ : re 0 ≤ z.re
h₂ : im 0 = z.im
⊢ z.re = abs z
state_after: no goals
Theorem: nhdsWithin_inter_of_mem'
File: Mathlib/Topology/ContinuousOn.lean

tactic: rw [inter_comm, nhdsWithin_inter_of_mem h]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝ : TopologicalSpace α
a : α
s t : Set α
h : t ∈ 𝓝[s] a
⊢ 𝓝[s ∩ t] a = 𝓝[s] a
state_after: no goals
Theorem: SlashInvariantForm.slash_action_eqn'
File: Mathlib/NumberTheory/ModularForms/SlashInvariantForms.lean

tactic: rw [← ModularForm.slash_action_eq'_iff, slash_action_eqn]
state_before: F : Type u_1
Γ✝ : Subgroup SL(2, ℤ)
k✝ : ℤ
inst✝¹ : FunLike F ℍ ℂ
k : ℤ
Γ : Subgroup SL(2, ℤ)
inst✝ : SlashInvariantFormClass F Γ k
f : F
γ : ↥Γ
z : ℍ
⊢ f (γ • z) = (↑(↑↑↑γ 1 0) * ↑z + ↑(↑↑↑γ 1 1)) ^ k * f z
state_after: no goals
Theorem: Finset.eq_univ_iff_forall
File: Mathlib/Data/Fintype/Basic.lean

tactic: simp [ext_iff]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : Fintype α
s t : Finset α
⊢ s = univ ↔ ∀ (x : α), x ∈ s
state_after: no goals
Theorem: Subgroup.zpowers_eq_closure
File: Mathlib/Algebra/Group/Subgroup/ZPowers.lean

tactic: ext
state_before: G : Type u_1
inst✝² : Group G
A : Type u_2
inst✝¹ : AddGroup A
N : Type u_3
inst✝ : Group N
g : G
⊢ zpowers g = closure {g}
state_after: case h
G : Type u_1
inst✝² : Group G
A : Type u_2
inst✝¹ : AddGroup A
N : Type u_3
inst✝ : Group N
g x✝ : G
⊢ x✝ ∈ zpowers g ↔ x✝ ∈ closure {g}

tactic: exact mem_closure_singleton.symm
state_before: case h
G : Type u_1
inst✝² : Group G
A : Type u_2
inst✝¹ : AddGroup A
N : Type u_3
inst✝ : Group N
g x✝ : G
⊢ x✝ ∈ zpowers g ↔ x✝ ∈ closure {g}
state_after: no goals
Theorem: PartENat.withTopEquiv_zero
File: Mathlib/Data/Nat/PartENat.lean

tactic: simp
state_before: ⊢ withTopEquiv 0 = 0
state_after: no goals
Theorem: CategoryTheory.Subobject.mk_arrow
File: Mathlib/CategoryTheory/Subobject/Basic.lean

tactic: obtain ⟨e⟩ := @Quotient.mk_out' _ (isIsomorphicSetoid _) Q
state_before: C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
X Y Z : C
D : Type u₂
inst✝ : Category.{v₂, u₂} D
P : Subobject X
Q : MonoOver X
⊢ mk (arrow (Quotient.mk'' Q)) = Quotient.mk'' Q
state_after: case intro
C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
X Y Z : C
D : Type u₂
inst✝ : Category.{v₂, u₂} D
P : Subobject X
Q : MonoOver X
e : (Quotient.mk'' Q).out' ≅ Q
⊢ mk (arrow (Quotient.mk'' Q)) = Quotient.mk'' Q

tactic: exact Quotient.sound' ⟨MonoOver.isoMk (Iso.refl _) ≪≫ e⟩
state_before: case intro
C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
X Y Z : C
D : Type u₂
inst✝ : Category.{v₂, u₂} D
P : Subobject X
Q : MonoOver X
e : (Quotient.mk'' Q).out' ≅ Q
⊢ mk (arrow (Quotient.mk'' Q)) = Quotient.mk'' Q
state_after: no goals
Theorem: geom_sum_Ico_mul_neg
File: Mathlib/Algebra/GeomSum.lean

tactic: rw [sum_Ico_eq_sub _ hmn, sub_mul, geom_sum_mul_neg, geom_sum_mul_neg, sub_sub_sub_cancel_left]
state_before: α : Type u
inst✝ : Ring α
x : α
m n : ℕ
hmn : m ≤ n
⊢ (∑ i ∈ Ico m n, x ^ i) * (1 - x) = x ^ m - x ^ n
state_after: no goals
Theorem: MeasureTheory.IsSetRing.isSetSemiring
File: Mathlib/MeasureTheory/SetSemiring.lean

tactic: refine fun s hs t ht => ⟨{s \ t}, ?_, ?_, ?_⟩
state_before: α : Type u_1
C : Set (Set α)
s t : Set α
hC : IsSetRing C
⊢ ∀ s ∈ C, ∀ t ∈ C, ∃ I, ↑I ⊆ C ∧ (↑I).PairwiseDisjoint id ∧ s \ t = ⋃₀ ↑I
state_after: case refine_1
α : Type u_1
C : Set (Set α)
s✝ t✝ : Set α
hC : IsSetRing C
s : Set α
hs : s ∈ C
t : Set α
ht : t ∈ C
⊢ ↑{s \ t} ⊆ C

case refine_2
α : Type u_1
C : Set (Set α)
s✝ t✝ : Set α
hC : IsSetRing C
s : Set α
hs : s ∈ C
t : Set α
ht : t ∈ C
⊢ (↑{s \ t}).PairwiseDisjoint id

case refine_3
α : Type u_1
C : Set (Set α)
s✝ t✝ : Set α
hC : IsSetRing C
s : Set α
hs : s ∈ C
t : Set α
ht : t ∈ C
⊢ s \ t = ⋃₀ ↑{s \ t}

tactic: simp only [coe_singleton, Set.singleton_subset_iff]
state_before: case refine_1
α : Type u_1
C : Set (Set α)
s✝ t✝ : Set α
hC : IsSetRing C
s : Set α
hs : s ∈ C
t : Set α
ht : t ∈ C
⊢ ↑{s \ t} ⊆ C
state_after: case refine_1
α : Type u_1
C : Set (Set α)
s✝ t✝ : Set α
hC : IsSetRing C
s : Set α
hs : s ∈ C
t : Set α
ht : t ∈ C
⊢ s \ t ∈ C

tactic: exact hC.diff_mem hs ht
state_before: case refine_1
α : Type u_1
C : Set (Set α)
s✝ t✝ : Set α
hC : IsSetRing C
s : Set α
hs : s ∈ C
t : Set α
ht : t ∈ C
⊢ s \ t ∈ C
state_after: no goals

tactic: simp only [coe_singleton, pairwiseDisjoint_singleton]
state_before: case refine_2
α : Type u_1
C : Set (Set α)
s✝ t✝ : Set α
hC : IsSetRing C
s : Set α
hs : s ∈ C
t : Set α
ht : t ∈ C
⊢ (↑{s \ t}).PairwiseDisjoint id
state_after: no goals

tactic: simp only [coe_singleton, sUnion_singleton]
state_before: case refine_3
α : Type u_1
C : Set (Set α)
s✝ t✝ : Set α
hC : IsSetRing C
s : Set α
hs : s ∈ C
t : Set α
ht : t ∈ C
⊢ s \ t = ⋃₀ ↑{s \ t}
state_after: no goals
Theorem: PartialEquiv.pi_trans
File: Mathlib/Logic/Equiv/PartialEquiv.lean

tactic: ext <;> simp [forall_and]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
e : PartialEquiv α β
e' : PartialEquiv β γ
ι : Type u_5
αi : ι → Type u_6
βi : ι → Type u_7
γi : ι → Type u_8
ei : (i : ι) → PartialEquiv (αi i) (βi i)
ei' : (i : ι) → PartialEquiv (βi i) (γi i)
⊢ (PartialEquiv.pi ei).trans (PartialEquiv.pi ei') = PartialEquiv.pi fun i => (ei i).trans (ei' i)
state_after: no goals
Theorem: TopologicalSpace.isOpen_top_iff
File: Mathlib/Topology/Order.lean

tactic: induction h with
| basic _ h => exact False.elim h
| univ => exact .inr rfl
| inter _ _ _ _ h₁ h₂ =>
  rcases h₁ with (rfl | rfl) <;> rcases h₂ with (rfl | rfl) <;> simp
| sUnion _ _ ih => exact sUnion_mem_empty_univ ih
state_before: α✝ : Type u_1
t t₁ t₂ : TopologicalSpace α✝
s : Set α✝
α : Type u_2
U : Set α
h : IsOpen U
⊢ U = ∅ ∨ U = univ
state_after: no goals

tactic: exact False.elim h
state_before: case basic
α✝ : Type u_1
t t₁ t₂ : TopologicalSpace α✝
s : Set α✝
α : Type u_2
U s✝ : Set α
h : s✝ ∈ OrderDual.ofDual (OrderDual.ofDual ⊥)
⊢ s✝ = ∅ ∨ s✝ = univ
state_after: no goals

tactic: exact .inr rfl
state_before: case univ
α✝ : Type u_1
t t₁ t₂ : TopologicalSpace α✝
s : Set α✝
α : Type u_2
U : Set α
⊢ univ = ∅ ∨ univ = univ
state_after: no goals

tactic: rcases h₁ with (rfl | rfl) <;> rcases h₂ with (rfl | rfl) <;> simp
state_before: case inter
α✝ : Type u_1
t t₁ t₂ : TopologicalSpace α✝
s : Set α✝
α : Type u_2
U s✝ t✝ : Set α
a✝¹ : GenerateOpen (OrderDual.ofDual (OrderDual.ofDual ⊥)) s✝
a✝ : GenerateOpen (OrderDual.ofDual (OrderDual.ofDual ⊥)) t✝
h₁ : s✝ = ∅ ∨ s✝ = univ
h₂ : t✝ = ∅ ∨ t✝ = univ
⊢ s✝ ∩ t✝ = ∅ ∨ s✝ ∩ t✝ = univ
state_after: no goals

tactic: exact sUnion_mem_empty_univ ih
state_before: case sUnion
α✝ : Type u_1
t t₁ t₂ : TopologicalSpace α✝
s : Set α✝
α : Type u_2
U : Set α
S✝ : Set (Set α)
a✝ : ∀ s ∈ S✝, GenerateOpen (OrderDual.ofDual (OrderDual.ofDual ⊥)) s
ih : ∀ s ∈ S✝, s = ∅ ∨ s = univ
⊢ ⋃₀ S✝ = ∅ ∨ ⋃₀ S✝ = univ
state_after: no goals

tactic: rintro (rfl | rfl)
state_before: α✝ : Type u_1
t t₁ t₂ : TopologicalSpace α✝
s : Set α✝
α : Type u_2
U : Set α
⊢ U = ∅ ∨ U = univ → IsOpen U
state_after: case inl
α✝ : Type u_1
t t₁ t₂ : TopologicalSpace α✝
s : Set α✝
α : Type u_2
⊢ IsOpen ∅

case inr
α✝ : Type u_1
t t₁ t₂ : TopologicalSpace α✝
s : Set α✝
α : Type u_2
⊢ IsOpen univ

tactic: exacts [@isOpen_empty _ ⊤, @isOpen_univ _ ⊤]
state_before: case inl
α✝ : Type u_1
t t₁ t₂ : TopologicalSpace α✝
s : Set α✝
α : Type u_2
⊢ IsOpen ∅

case inr
α✝ : Type u_1
t t₁ t₂ : TopologicalSpace α✝
s : Set α✝
α : Type u_2
⊢ IsOpen univ
state_after: no goals
Theorem: CategoryTheory.ShiftedHom.add_comp
File: Mathlib/CategoryTheory/Shift/ShiftedHom.lean

tactic: rw [comp, comp, comp, Preadditive.add_comp]
state_before: C : Type u_1
inst✝³ : Category.{u_3, u_1} C
M : Type u_2
inst✝² : AddMonoid M
inst✝¹ : HasShift C M
X Y Z T : C
inst✝ : Preadditive C
a b c : M
α₁ α₂ : ShiftedHom X Y a
β : ShiftedHom Y Z b
h : b + a = c
⊢ (α₁ + α₂).comp β h = α₁.comp β h + α₂.comp β h
state_after: no goals
Theorem: OpenEmbedding.isOpenMap_iff
File: Mathlib/Topology/Maps.lean

tactic: simp_rw [isOpenMap_iff_nhds_le, ← map_map, comp, ← hg.map_nhds_eq, Filter.map_le_map_iff hg.inj]
state_before: X : Type u_1
Y : Type u_2
Z : Type u_3
ι : Type u_4
f : X → Y
g : Y → Z
inst✝² : TopologicalSpace X
inst✝¹ : TopologicalSpace Y
inst✝ : TopologicalSpace Z
hg : OpenEmbedding g
⊢ IsOpenMap f ↔ IsOpenMap (g ∘ f)
state_after: no goals
Theorem: Complex.cpow_intCast
File: Mathlib/Analysis/SpecialFunctions/Pow/Complex.lean

tactic: simpa using cpow_int_mul x n 1
state_before: x : ℂ
n : ℤ
⊢ x ^ ↑n = x ^ n
state_after: no goals
Theorem: Partrec.option_some_iff
File: Mathlib/Computability/Partrec.lean

tactic: simp [Part.bind_assoc, ← Function.comp_apply (f := Part.some) (g := encode), bind_some_eq_map,
  -Function.comp_apply]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
σ : Type u_4
inst✝³ : Primcodable α
inst✝² : Primcodable β
inst✝¹ : Primcodable γ
inst✝ : Primcodable σ
f : α →. σ
h : Partrec fun a => Part.map Option.some (f a)
n : ℕ
⊢ (do
      let n ← (↑(decode n)).bind fun a => Part.map encode ((fun a => Part.map Option.some (f a)) a)
      ↑n.ppred) =
    (↑(decode n)).bind fun a => Part.map encode (f a)
state_after: no goals
Theorem: Finset.affineCombination_apply_const
File: Mathlib/LinearAlgebra/AffineSpace/Combination.lean

tactic: rw [affineCombination_apply, s.weightedVSubOfPoint_apply_const, h, one_smul, vsub_vadd]
state_before: k : Type u_1
V : Type u_2
P : Type u_3
inst✝² : Ring k
inst✝¹ : AddCommGroup V
inst✝ : Module k V
S : AffineSpace V P
ι : Type u_4
s : Finset ι
ι₂ : Type u_5
s₂ : Finset ι₂
w : ι → k
p : P
h : ∑ i ∈ s, w i = 1
⊢ (affineCombination k s fun x => p) w = p
state_after: no goals