ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
Theorem: Equiv.pointReflection_midpoint_left
File: Mathlib/LinearAlgebra/AffineSpace/Midpoint.lean

Proof steps:
state_before: R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁷ : Ring R
inst✝⁶ : Invertible 2
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module R V
inst✝³ : AddTorsor V P
inst✝² : AddCommGroup V'
inst✝¹ : Module R V'
inst✝ : AddTorsor V' P'
x✝ y✝ z x y : P
⊢ (pointReflection (midpoint R x y)) x = y
state_after: no goals
tactic: rw [midpoint, pointReflection_apply, lineMap_apply, vadd_vsub, vadd_vadd, ← add_smul, ← two_mul,
    mul_invOf_self, one_smul, vsub_vadd]
Theorem: LipschitzWith.norm_div_le_of_le
File: Mathlib/Analysis/Normed/Group/Uniform.lean

Proof steps:
state_before: 𝓕 : Type u_1
α : Type u_2
E : Type u_3
F : Type u_4
inst✝² : SeminormedGroup E
inst✝¹ : SeminormedGroup F
s : Set E
a a₁ a₂ b b₁ b₂ : E
r r₁ r₂ : ℝ
inst✝ : FunLike 𝓕 E F
f : E → F
C : ℝ≥0
h : LipschitzWith C f
hr : ‖a / b‖ ≤ r
⊢ ↑C * ‖a / b‖ ≤ ↑C * r
state_after: no goals
tactic: gcongr
Theorem: leftAddCoset_assoc
File: Mathlib/GroupTheory/Coset.lean

Proof steps:
state_before: α : Type u_1
inst✝ : Semigroup α
s : Set α
a b : α
⊢ a • b • s = (a * b) • s
state_after: no goals
tactic: simp [← image_smul, (image_comp _ _ _).symm, Function.comp, mul_assoc]
Theorem: _private.Mathlib.Algebra.Polynomial.Identities.0.Polynomial.poly_binom_aux3
File: Mathlib/Algebra/Polynomial/Identities.lean

Proof steps:
state_before: R : Type u
S : Type v
T : Type w
ι : Type x
k : Type y
A : Type z
a b : R
m n : ℕ
inst✝ : CommRing R
f : R[X]
x y : R
⊢ eval (x + y) f =
    ((f.sum fun e a => a * x ^ e) + f.sum fun e a => a * ↑e * x ^ (e - 1) * y) +
      f.sum fun e a => a * ↑(Polynomial.polyBinomAux1 x y e a) * y ^ 2
state_after: R : Type u
S : Type v
T : Type w
ι : Type x
k : Type y
A : Type z
a b : R
m n : ℕ
inst✝ : CommRing R
f : R[X]
x y : R
⊢ (f.sum fun e a => a * (x ^ e + ↑e * x ^ (e - 1) * y + ↑(Polynomial.polyBinomAux1 x y e a) * y ^ 2)) =
    ((f.sum fun e a => a * x ^ e) + f.sum fun e a => a * ↑e * x ^ (e - 1) * y) +
      f.sum fun e a => a * ↑(Polynomial.polyBinomAux1 x y e a) * y ^ 2
tactic: rw [poly_binom_aux2]
state_before: R : Type u
S : Type v
T : Type w
ι : Type x
k : Type y
A : Type z
a b : R
m n : ℕ
inst✝ : CommRing R
f : R[X]
x y : R
⊢ (f.sum fun e a => a * (x ^ e + ↑e * x ^ (e - 1) * y + ↑(Polynomial.polyBinomAux1 x y e a) * y ^ 2)) =
    ((f.sum fun e a => a * x ^ e) + f.sum fun e a => a * ↑e * x ^ (e - 1) * y) +
      f.sum fun e a => a * ↑(Polynomial.polyBinomAux1 x y e a) * y ^ 2
state_after: no goals
tactic: simp [left_distrib, sum_add, mul_assoc]
Theorem: tsum_const_smul''
File: Mathlib/Topology/Algebra/InfiniteSum/Module.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ✝ : Type u_3
δ : Type u_4
inst✝⁸ : Monoid γ✝
inst✝⁷ : TopologicalSpace α
inst✝⁶ : AddCommMonoid α
inst✝⁵ : DistribMulAction γ✝ α
inst✝⁴ : ContinuousConstSMul γ✝ α
f : β → α
γ : Type u_5
inst✝³ : DivisionRing γ
inst✝² : Module γ α
inst✝¹ : ContinuousConstSMul γ α
inst✝ : T2Space α
g : γ
⊢ ∑' (i : β), g • f i = g • ∑' (i : β), f i
state_after: case inl
α : Type u_1
β : Type u_2
γ✝ : Type u_3
δ : Type u_4
inst✝⁸ : Monoid γ✝
inst✝⁷ : TopologicalSpace α
inst✝⁶ : AddCommMonoid α
inst✝⁵ : DistribMulAction γ✝ α
inst✝⁴ : ContinuousConstSMul γ✝ α
f : β → α
γ : Type u_5
inst✝³ : DivisionRing γ
inst✝² : Module γ α
inst✝¹ : ContinuousConstSMul γ α
inst✝ : T2Space α
⊢ ∑' (i : β), 0 • f i = 0 • ∑' (i : β), f i

case inr
α : Type u_1
β : Type u_2
γ✝ : Type u_3
δ : Type u_4
inst✝⁸ : Monoid γ✝
inst✝⁷ : TopologicalSpace α
inst✝⁶ : AddCommMonoid α
inst✝⁵ : DistribMulAction γ✝ α
inst✝⁴ : ContinuousConstSMul γ✝ α
f : β → α
γ : Type u_5
inst✝³ : DivisionRing γ
inst✝² : Module γ α
inst✝¹ : ContinuousConstSMul γ α
inst✝ : T2Space α
g : γ
hg : g ≠ 0
⊢ ∑' (i : β), g • f i = g • ∑' (i : β), f i
tactic: rcases eq_or_ne g 0 with rfl | hg
Theorem: AffineSubspace.not_sOppSide_self
File: Mathlib/Analysis/Convex/Side.lean

Proof steps:
state_before: R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁶ : LinearOrderedField R
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module R V
inst✝³ : AddTorsor V P
inst✝² : AddCommGroup V'
inst✝¹ : Module R V'
inst✝ : AddTorsor V' P'
s : AffineSubspace R P
x : P
⊢ ¬s.SOppSide x x
state_after: R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁶ : LinearOrderedField R
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module R V
inst✝³ : AddTorsor V P
inst✝² : AddCommGroup V'
inst✝¹ : Module R V'
inst✝ : AddTorsor V' P'
s : AffineSubspace R P
x : P
⊢ ¬(s.WOppSide x x ∧ x ∉ s ∧ x ∉ s)
tactic: rw [SOppSide]
state_before: R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁶ : LinearOrderedField R
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module R V
inst✝³ : AddTorsor V P
inst✝² : AddCommGroup V'
inst✝¹ : Module R V'
inst✝ : AddTorsor V' P'
s : AffineSubspace R P
x : P
⊢ ¬(s.WOppSide x x ∧ x ∉ s ∧ x ∉ s)
state_after: no goals
tactic: simp
Theorem: InnerProductSpace.Core.normSq_eq_zero
File: Mathlib/Analysis/InnerProductSpace/Basic.lean

Proof steps:
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝² : _root_.RCLike 𝕜
inst✝¹ : AddCommGroup F
inst✝ : Module 𝕜 F
c : Core 𝕜 F
x : F
⊢ normSq x = 0 ↔ ⟪x, x⟫_𝕜 = 0
state_after: no goals
tactic: simp only [normSq, ext_iff, map_zero, inner_self_im, eq_self_iff_true, and_true_iff]
Theorem: WittVector.init_pow
File: Mathlib/RingTheory/WittVector/InitTail.lean

Proof steps:
state_before: p : ℕ
hp : Fact (Nat.Prime p)
n✝ : ℕ
R : Type u_1
inst✝ : CommRing R
m : ℕ
x : 𝕎 R
n : ℕ
⊢ init n (x ^ m) = init n (init n x ^ m)
state_after: no goals
tactic: init_ring using fun p [Fact (Nat.Prime p)] n => wittPow_vars p m n
Theorem: PolishSpace.IsClopenable.compl
File: Mathlib/Topology/MetricSpace/Polish.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
inst✝ : TopologicalSpace α
s : Set α
hs : IsClopenable s
⊢ IsClopenable sᶜ
state_after: case intro.intro.intro.intro
α : Type u_1
β : Type u_2
inst✝ : TopologicalSpace α
s : Set α
t : TopologicalSpace α
t_le : t ≤ inst✝
t_polish : PolishSpace α
h : IsClosed s
h' : IsOpen s
⊢ IsClopenable sᶜ
tactic: rcases hs with ⟨t, t_le, t_polish, h, h'⟩
state_before: case intro.intro.intro.intro
α : Type u_1
β : Type u_2
inst✝ : TopologicalSpace α
s : Set α
t : TopologicalSpace α
t_le : t ≤ inst✝
t_polish : PolishSpace α
h : IsClosed s
h' : IsOpen s
⊢ IsClopenable sᶜ
state_after: no goals
tactic: exact ⟨t, t_le, t_polish, @IsOpen.isClosed_compl α t s h', @IsClosed.isOpen_compl α t s h⟩
Theorem: CategoryTheory.MonoidalClosed.pre_map
File: Mathlib/CategoryTheory/Closed/Monoidal.lean

Proof steps:
state_before: C : Type u
inst✝⁶ : Category.{v, u} C
inst✝⁵ : MonoidalCategory C
A B X X' Y Y' Z : C
inst✝⁴ : Closed A
inst✝³ : Closed B
A₁ A₂ A₃ : C
inst✝² : Closed A₁
inst✝¹ : Closed A₂
inst✝ : Closed A₃
f : A₁ ⟶ A₂
g : A₂ ⟶ A₃
⊢ pre (f ≫ g) = pre g ≫ pre f
state_after: no goals
tactic: rw [pre, pre, pre, conjugateEquiv_comp, (tensoringLeft C).map_comp]
Theorem: _private.Mathlib.FieldTheory.PrimitiveElement.0.Field.primitive_element_inf_aux_of_finite_intermediateField
File: Mathlib/FieldTheory/PrimitiveElement.lean

Proof steps:
state_before: F : Type u_1
inst✝⁴ : Field F
inst✝³ : Infinite F
E : Type u_2
inst✝² : Field E
ϕ : F →+* E
α β : E
inst✝¹ : Algebra F E
inst✝ : Finite (IntermediateField F E)
⊢ ∃ γ, F⟮α, β⟯ = F⟮γ⟯
state_after: F : Type u_1
inst✝⁴ : Field F
inst✝³ : Infinite F
E : Type u_2
inst✝² : Field E
ϕ : F →+* E
α β : E
inst✝¹ : Algebra F E
inst✝ : Finite (IntermediateField F E)
f : F → IntermediateField F E := fun x => F⟮α + x • β⟯
⊢ ∃ γ, F⟮α, β⟯ = F⟮γ⟯
tactic: let f : F → IntermediateField F E := fun x ↦ F⟮α + x • β⟯
state_before: F : Type u_1
inst✝⁴ : Field F
inst✝³ : Infinite F
E : Type u_2
inst✝² : Field E
ϕ : F →+* E
α β : E
inst✝¹ : Algebra F E
inst✝ : Finite (IntermediateField F E)
f : F → IntermediateField F E := fun x => F⟮α + x • β⟯
⊢ ∃ γ, F⟮α, β⟯ = F⟮γ⟯
state_after: case intro.intro.intro
F : Type u_1
inst✝⁴ : Field F
inst✝³ : Infinite F
E : Type u_2
inst✝² : Field E
ϕ : F →+* E
α β : E
inst✝¹ : Algebra F E
inst✝ : Finite (IntermediateField F E)
f : F → IntermediateField F E := fun x => F⟮α + x • β⟯
x y : F
hneq : x ≠ y
heq : f x = f y
⊢ ∃ γ, F⟮α, β⟯ = F⟮γ⟯
tactic: obtain ⟨x, y, hneq, heq⟩ := Finite.exists_ne_map_eq_of_infinite f
state_before: case intro.intro.intro
F : Type u_1
inst✝⁴ : Field F
inst✝³ : Infinite F
E : Type u_2
inst✝² : Field E
ϕ : F →+* E
α β : E
inst✝¹ : Algebra F E
inst✝ : Finite (IntermediateField F E)
f : F → IntermediateField F E := fun x => F⟮α + x • β⟯
x y : F
hneq : x ≠ y
heq : f x = f y
⊢ ∃ γ, F⟮α, β⟯ = F⟮γ⟯
state_after: case h
F : Type u_1
inst✝⁴ : Field F
inst✝³ : Infinite F
E : Type u_2
inst✝² : Field E
ϕ : F →+* E
α β : E
inst✝¹ : Algebra F E
inst✝ : Finite (IntermediateField F E)
f : F → IntermediateField F E := fun x => F⟮α + x • β⟯
x y : F
hneq : x ≠ y
heq : f x = f y
⊢ F⟮α, β⟯ = F⟮α + x • β⟯
tactic: use α + x • β
state_before: case h
F : Type u_1
inst✝⁴ : Field F
inst✝³ : Infinite F
E : Type u_2
inst✝² : Field E
ϕ : F →+* E
α β : E
inst✝¹ : Algebra F E
inst✝ : Finite (IntermediateField F E)
f : F → IntermediateField F E := fun x => F⟮α + x • β⟯
x y : F
hneq : x ≠ y
heq : f x = f y
⊢ F⟮α, β⟯ = F⟮α + x • β⟯
state_after: case h.a
F : Type u_1
inst✝⁴ : Field F
inst✝³ : Infinite F
E : Type u_2
inst✝² : Field E
ϕ : F →+* E
α β : E
inst✝¹ : Algebra F E
inst✝ : Finite (IntermediateField F E)
f : F → IntermediateField F E := fun x => F⟮α + x • β⟯
x y : F
hneq : x ≠ y
heq : f x = f y
⊢ F⟮α, β⟯ ≤ F⟮α + x • β⟯

case h.a
F : Type u_1
inst✝⁴ : Field F
inst✝³ : Infinite F
E : Type u_2
inst✝² : Field E
ϕ : F →+* E
α β : E
inst✝¹ : Algebra F E
inst✝ : Finite (IntermediateField F E)
f : F → IntermediateField F E := fun x => F⟮α + x • β⟯
x y : F
hneq : x ≠ y
heq : f x = f y
⊢ F⟮α + x • β⟯ ≤ F⟮α, β⟯
tactic: apply le_antisymm
Theorem: Quaternion.normSq_exp
File: Mathlib/Analysis/NormedSpace/QuaternionExponential.lean

Proof steps:
state_before: q : ℍ
⊢ normSq (exp ℝ q) = normSq (exp ℝ q.re • (↑(Real.cos ‖q.im‖) + (Real.sin ‖q.im‖ / ‖q.im‖) • q.im))
state_after: no goals
tactic: rw [exp_eq]
state_before: q : ℍ
⊢ normSq (exp ℝ q.re • (↑(Real.cos ‖q.im‖) + (Real.sin ‖q.im‖ / ‖q.im‖) • q.im)) =
    exp ℝ q.re ^ 2 * normSq (↑(Real.cos ‖q.im‖) + (Real.sin ‖q.im‖ / ‖q.im‖) • q.im)
state_after: no goals
tactic: rw [normSq_smul]
state_before: q : ℍ
⊢ exp ℝ q.re ^ 2 * normSq (↑(Real.cos ‖q.im‖) + (Real.sin ‖q.im‖ / ‖q.im‖) • q.im) =
    exp ℝ q.re ^ 2 * (Real.cos ‖q.im‖ ^ 2 + Real.sin ‖q.im‖ ^ 2)
state_after: case e_a
q : ℍ
⊢ normSq (↑(Real.cos ‖q.im‖) + (Real.sin ‖q.im‖ / ‖q.im‖) • q.im) = Real.cos ‖q.im‖ ^ 2 + Real.sin ‖q.im‖ ^ 2
tactic: congr 1
state_before: case e_a
q : ℍ
⊢ normSq (↑(Real.cos ‖q.im‖) + (Real.sin ‖q.im‖ / ‖q.im‖) • q.im) = Real.cos ‖q.im‖ ^ 2 + Real.sin ‖q.im‖ ^ 2
state_after: case e_a.inl
q : ℍ
hv : ‖q.im‖ = 0
⊢ normSq (↑(Real.cos ‖q.im‖) + (Real.sin ‖q.im‖ / ‖q.im‖) • q.im) = Real.cos ‖q.im‖ ^ 2 + Real.sin ‖q.im‖ ^ 2

case e_a.inr
q : ℍ
hv : ‖q.im‖ ≠ 0
⊢ normSq (↑(Real.cos ‖q.im‖) + (Real.sin ‖q.im‖ / ‖q.im‖) • q.im) = Real.cos ‖q.im‖ ^ 2 + Real.sin ‖q.im‖ ^ 2
tactic: obtain hv | hv := eq_or_ne ‖q.im‖ 0
state_before: case e_a.inr
q : ℍ
hv : ‖q.im‖ ≠ 0
⊢ normSq (↑(Real.cos ‖q.im‖) + (Real.sin ‖q.im‖ / ‖q.im‖) • q.im) = Real.cos ‖q.im‖ ^ 2 + Real.sin ‖q.im‖ ^ 2
state_after: no goals
tactic: rw [normSq_add, normSq_smul, star_smul, coe_mul_eq_smul, smul_re, smul_re, star_re, im_re,
        smul_zero, smul_zero, mul_zero, add_zero, div_pow, normSq_coe,
        normSq_eq_norm_mul_self, ← sq, div_mul_cancel₀ _ (pow_ne_zero _ hv)]
state_before: q : ℍ
⊢ exp ℝ q.re ^ 2 * (Real.cos ‖q.im‖ ^ 2 + Real.sin ‖q.im‖ ^ 2) = exp ℝ q.re ^ 2
state_after: no goals
tactic: rw [Real.cos_sq_add_sin_sq, mul_one]
Theorem: Convex.add_smul_mem
File: Mathlib/Analysis/Convex/Basic.lean

Proof steps:
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
β : Type u_4
inst✝⁴ : OrderedRing 𝕜
inst✝³ : AddCommGroup E
inst✝² : AddCommGroup F
inst✝¹ : Module 𝕜 E
inst✝ : Module 𝕜 F
s t✝ : Set E
hs : Convex 𝕜 s
x y : E
hx : x ∈ s
hy : x + y ∈ s
t : 𝕜
ht : t ∈ Icc 0 1
⊢ x + t • y ∈ s
state_after: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
β : Type u_4
inst✝⁴ : OrderedRing 𝕜
inst✝³ : AddCommGroup E
inst✝² : AddCommGroup F
inst✝¹ : Module 𝕜 E
inst✝ : Module 𝕜 F
s t✝ : Set E
hs : Convex 𝕜 s
x y : E
hx : x ∈ s
hy : x + y ∈ s
t : 𝕜
ht : t ∈ Icc 0 1
h : x + t • y = (1 - t) • x + t • (x + y)
⊢ x + t • y ∈ s
tactic: have h : x + t • y = (1 - t) • x + t • (x + y) := by
    rw [smul_add, ← add_assoc, ← add_smul, sub_add_cancel, one_smul]
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
β : Type u_4
inst✝⁴ : OrderedRing 𝕜
inst✝³ : AddCommGroup E
inst✝² : AddCommGroup F
inst✝¹ : Module 𝕜 E
inst✝ : Module 𝕜 F
s t✝ : Set E
hs : Convex 𝕜 s
x y : E
hx : x ∈ s
hy : x + y ∈ s
t : 𝕜
ht : t ∈ Icc 0 1
h : x + t • y = (1 - t) • x + t • (x + y)
⊢ x + t • y ∈ s
state_after: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
β : Type u_4
inst✝⁴ : OrderedRing 𝕜
inst✝³ : AddCommGroup E
inst✝² : AddCommGroup F
inst✝¹ : Module 𝕜 E
inst✝ : Module 𝕜 F
s t✝ : Set E
hs : Convex 𝕜 s
x y : E
hx : x ∈ s
hy : x + y ∈ s
t : 𝕜
ht : t ∈ Icc 0 1
h : x + t • y = (1 - t) • x + t • (x + y)
⊢ (1 - t) • x + t • (x + y) ∈ s
tactic: rw [h]
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
β : Type u_4
inst✝⁴ : OrderedRing 𝕜
inst✝³ : AddCommGroup E
inst✝² : AddCommGroup F
inst✝¹ : Module 𝕜 E
inst✝ : Module 𝕜 F
s t✝ : Set E
hs : Convex 𝕜 s
x y : E
hx : x ∈ s
hy : x + y ∈ s
t : 𝕜
ht : t ∈ Icc 0 1
h : x + t • y = (1 - t) • x + t • (x + y)
⊢ (1 - t) • x + t • (x + y) ∈ s
state_after: no goals
tactic: exact hs hx hy (sub_nonneg_of_le ht.2) ht.1 (sub_add_cancel _ _)
Theorem: Grp.SurjectiveOfEpiAuxs.fromCoset_ne_of_nin_range
File: Mathlib/Algebra/Category/Grp/EpiMono.lean

Proof steps:
state_before: A B : Grp
f : A ⟶ B
b : ↑B
hb : b ∉ MonoidHom.range f
⊢ fromCoset ⟨b • ↑(MonoidHom.range f), ⋯⟩ ≠ fromCoset ⟨↑(MonoidHom.range f), ⋯⟩
state_after: A B : Grp
f : A ⟶ B
b : ↑B
hb : b ∉ MonoidHom.range f
r : fromCoset ⟨b • ↑(MonoidHom.range f), ⋯⟩ = fromCoset ⟨↑(MonoidHom.range f), ⋯⟩
⊢ False
tactic: intro r
state_before: A B : Grp
f : A ⟶ B
b : ↑B
hb : b ∉ MonoidHom.range f
r : fromCoset ⟨b • ↑(MonoidHom.range f), ⋯⟩ = fromCoset ⟨↑(MonoidHom.range f), ⋯⟩
⊢ False
state_after: A B : Grp
f : A ⟶ B
b : ↑B
hb : b ∉ MonoidHom.range f
r : b • ↑(MonoidHom.range f) = ↑(MonoidHom.range f)
⊢ False
tactic: simp only [fromCoset.injEq, Subtype.mk.injEq] at r
state_before: A B : Grp
f : A ⟶ B
b : ↑B
hb : b ∉ MonoidHom.range f
r : b • ↑(MonoidHom.range f) = ↑(MonoidHom.range f)
⊢ False
state_after: A B : Grp
f : A ⟶ B
b : ↑B
hb : b ∉ MonoidHom.range f
r : b • ↑(MonoidHom.range f) = ↑(MonoidHom.range f)
b' : ↑B := b
⊢ False
tactic: let b' : B.α := b
state_before: A B : Grp
f : A ⟶ B
b : ↑B
hb : b ∉ MonoidHom.range f
r : b • ↑(MonoidHom.range f) = ↑(MonoidHom.range f)
b' : ↑B := b
⊢ False
state_after: A B : Grp
f : A ⟶ B
b : ↑B
hb : b ∉ MonoidHom.range f
b' : ↑B := b
r : b' • ↑(MonoidHom.range f) = ↑(MonoidHom.range f)
⊢ False
tactic: change b' • (f.range : Set B) = f.range at r
state_before: A B : Grp
f : A ⟶ B
b : ↑B
hb : b ∉ MonoidHom.range f
b' : ↑B := b
r : b' • ↑(MonoidHom.range f) = ↑(MonoidHom.range f)
⊢ False
state_after: A B : Grp
f : A ⟶ B
b : ↑B
hb : b ∉ MonoidHom.range f
b' : ↑B := b
r : b' • ↑(MonoidHom.range f) = 1 • ↑(MonoidHom.range f)
⊢ False
tactic: nth_rw 2 [show (f.range : Set B.α) = (1 : B) • f.range from (one_leftCoset _).symm] at r
state_before: A B : Grp
f : A ⟶ B
b : ↑B
hb : b ∉ MonoidHom.range f
b' : ↑B := b
r : b' • ↑(MonoidHom.range f) = 1 • ↑(MonoidHom.range f)
⊢ False
state_after: A B : Grp
f : A ⟶ B
b : ↑B
hb : b ∉ MonoidHom.range f
b' : ↑B := b
r : b'⁻¹ ∈ MonoidHom.range f
⊢ False
tactic: rw [leftCoset_eq_iff, mul_one] at r
state_before: A B : Grp
f : A ⟶ B
b : ↑B
hb : b ∉ MonoidHom.range f
b' : ↑B := b
r : b'⁻¹ ∈ MonoidHom.range f
⊢ False
state_after: no goals
tactic: exact hb (inv_inv b ▸ Subgroup.inv_mem _ r)
Theorem: Finsupp.support_inf
File: Mathlib/Data/Finsupp/Order.lean

Proof steps:
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
inst✝¹ : CanonicallyLinearOrderedAddCommMonoid α
inst✝ : DecidableEq ι
f g : ι →₀ α
⊢ (f ⊓ g).support = f.support ∩ g.support
state_after: case a
ι : Type u_1
α : Type u_2
β : Type u_3
inst✝¹ : CanonicallyLinearOrderedAddCommMonoid α
inst✝ : DecidableEq ι
f g : ι →₀ α
a✝ : ι
⊢ a✝ ∈ (f ⊓ g).support ↔ a✝ ∈ f.support ∩ g.support
tactic: ext
state_before: case a
ι : Type u_1
α : Type u_2
β : Type u_3
inst✝¹ : CanonicallyLinearOrderedAddCommMonoid α
inst✝ : DecidableEq ι
f g : ι →₀ α
a✝ : ι
⊢ a✝ ∈ (f ⊓ g).support ↔ a✝ ∈ f.support ∩ g.support
state_after: case a
ι : Type u_1
α : Type u_2
β : Type u_3
inst✝¹ : CanonicallyLinearOrderedAddCommMonoid α
inst✝ : DecidableEq ι
f g : ι →₀ α
a✝ : ι
⊢ ¬f a✝ ⊓ g a✝ = 0 ↔ ¬f a✝ = 0 ∧ ¬g a✝ = 0
tactic: simp only [inf_apply, mem_support_iff, Ne, Finset.mem_union, Finset.mem_filter,
    Finset.mem_inter]
state_before: case a
ι : Type u_1
α : Type u_2
β : Type u_3
inst✝¹ : CanonicallyLinearOrderedAddCommMonoid α
inst✝ : DecidableEq ι
f g : ι →₀ α
a✝ : ι
⊢ ¬f a✝ ⊓ g a✝ = 0 ↔ ¬f a✝ = 0 ∧ ¬g a✝ = 0
state_after: no goals
tactic: simp only [inf_eq_min, ← nonpos_iff_eq_zero, min_le_iff, not_or]
Theorem: HasSum.neg
File: Mathlib/Topology/Algebra/InfiniteSum/Group.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝² : CommGroup α
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalGroup α
f g : β → α
a a₁ a₂ : α
h : HasProd f a
⊢ HasProd (fun b => (f b)⁻¹) a⁻¹
state_after: no goals
tactic: simpa only using h.map (MonoidHom.id α)⁻¹ continuous_inv
Theorem: QuadraticMap.hasLineDerivAt
File: Mathlib/Analysis/Calculus/LineDeriv/QuadraticMap.lean

Proof steps:
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁴ : NontriviallyNormedField 𝕜
inst✝³ : AddCommGroup E
inst✝² : Module 𝕜 E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace 𝕜 F
f : QuadraticMap 𝕜 E F
a b : E
⊢ HasLineDerivAt 𝕜 (⇑f) (polar (⇑f) a b) a b
state_after: no goals
tactic: simpa [HasLineDerivAt, QuadraticMap.map_add, f.map_smul] using
    ((hasDerivAt_const (0 : 𝕜) (f a)).add <|
      ((hasDerivAt_id 0).mul (hasDerivAt_id 0)).smul (hasDerivAt_const 0 (f b))).add
      ((hasDerivAt_id 0).smul (hasDerivAt_const 0 (polar f a b)))
Theorem: deriv.lhopital_zero_nhds
File: Mathlib/Analysis/Calculus/LHopital.lean

Proof steps:
state_before: a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hdf : ∀ᶠ (x : ℝ) in 𝓝 a, DifferentiableAt ℝ f x
hg' : ∀ᶠ (x : ℝ) in 𝓝 a, deriv g x ≠ 0
hfa : Tendsto f (𝓝 a) (𝓝 0)
hga : Tendsto g (𝓝 a) (𝓝 0)
hdiv : Tendsto (fun x => deriv f x / deriv g x) (𝓝 a) l
⊢ Tendsto (fun x => f x / g x) (𝓝[≠] a) l
state_after: no goals
tactic: apply lhopital_zero_nhds' <;>
    (first | apply eventually_nhdsWithin_of_eventually_nhds |
      apply tendsto_nhdsWithin_of_tendsto_nhds) <;> assumption
Theorem: FiniteField.pow_dichotomy
File: Mathlib/FieldTheory/Finite/Basic.lean

Proof steps:
state_before: K : Type u_1
R : Type u_2
F : Type u_3
inst✝¹ : Field F
inst✝ : Fintype F
hF : ringChar F ≠ 2
a : F
ha : a ≠ 0
⊢ a ^ (Fintype.card F / 2) = 1 ∨ a ^ (Fintype.card F / 2) = -1
state_after: K : Type u_1
R : Type u_2
F : Type u_3
inst✝¹ : Field F
inst✝ : Fintype F
hF : ringChar F ≠ 2
a : F
ha : a ≠ 0
h₁ : a ^ (Fintype.card F - 1) = 1
⊢ a ^ (Fintype.card F / 2) = 1 ∨ a ^ (Fintype.card F / 2) = -1
tactic: have h₁ := FiniteField.pow_card_sub_one_eq_one a ha
state_before: K : Type u_1
R : Type u_2
F : Type u_3
inst✝¹ : Field F
inst✝ : Fintype F
hF : ringChar F ≠ 2
a : F
ha : a ≠ 0
h₁ : a ^ (Fintype.card F - 1) = 1
⊢ a ^ (Fintype.card F / 2) = 1 ∨ a ^ (Fintype.card F / 2) = -1
state_after: K : Type u_1
R : Type u_2
F : Type u_3
inst✝¹ : Field F
inst✝ : Fintype F
hF : ringChar F ≠ 2
a : F
ha : a ≠ 0
h₁ : a ^ (Fintype.card F / 2) * a ^ (Fintype.card F / 2) = 1
⊢ a ^ (Fintype.card F / 2) = 1 ∨ a ^ (Fintype.card F / 2) = -1
tactic: rw [← Nat.two_mul_odd_div_two (FiniteField.odd_card_of_char_ne_two hF), mul_comm, pow_mul,
    pow_two] at h₁
state_before: K : Type u_1
R : Type u_2
F : Type u_3
inst✝¹ : Field F
inst✝ : Fintype F
hF : ringChar F ≠ 2
a : F
ha : a ≠ 0
h₁ : a ^ (Fintype.card F / 2) * a ^ (Fintype.card F / 2) = 1
⊢ a ^ (Fintype.card F / 2) = 1 ∨ a ^ (Fintype.card F / 2) = -1
state_after: no goals
tactic: exact mul_self_eq_one_iff.mp h₁
Theorem: ordConnected_iff_upperClosure_inter_lowerClosure
File: Mathlib/Order/UpperLower/Basic.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
κ : ι → Sort u_5
inst✝¹ : Preorder α
inst✝ : Preorder β
s t : Set α
x : α
⊢ s.OrdConnected ↔ ↑(upperClosure s) ∩ ↑(lowerClosure s) = s
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
κ : ι → Sort u_5
inst✝¹ : Preorder α
inst✝ : Preorder β
s t : Set α
x : α
h : ↑(upperClosure s) ∩ ↑(lowerClosure s) = s
⊢ s.OrdConnected
tactic: refine ⟨Set.OrdConnected.upperClosure_inter_lowerClosure, fun h => ?_⟩
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
κ : ι → Sort u_5
inst✝¹ : Preorder α
inst✝ : Preorder β
s t : Set α
x : α
h : ↑(upperClosure s) ∩ ↑(lowerClosure s) = s
⊢ s.OrdConnected
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
κ : ι → Sort u_5
inst✝¹ : Preorder α
inst✝ : Preorder β
s t : Set α
x : α
h : ↑(upperClosure s) ∩ ↑(lowerClosure s) = s
⊢ (↑(upperClosure s) ∩ ↑(lowerClosure s)).OrdConnected
tactic: rw [← h]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
κ : ι → Sort u_5
inst✝¹ : Preorder α
inst✝ : Preorder β
s t : Set α
x : α
h : ↑(upperClosure s) ∩ ↑(lowerClosure s) = s
⊢ (↑(upperClosure s) ∩ ↑(lowerClosure s)).OrdConnected
state_after: no goals
tactic: exact (UpperSet.upper _).ordConnected.inter (LowerSet.lower _).ordConnected
Theorem: Filter.HasBasis.tendsto_left_iff
File: Mathlib/Order/Filter/Bases.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
la : Filter α
pa : ι → Prop
sa : ι → Set α
lb : Filter β
pb : ι' → Prop
sb : ι' → Set β
f : α → β
hla : la.HasBasis pa sa
⊢ Tendsto f la lb ↔ ∀ t ∈ lb, ∃ i, pa i ∧ MapsTo f (sa i) t
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
la : Filter α
pa : ι → Prop
sa : ι → Set α
lb : Filter β
pb : ι' → Prop
sb : ι' → Set β
f : α → β
hla : la.HasBasis pa sa
⊢ (∀ t ∈ lb, ∃ i, pa i ∧ sa i ⊆ f ⁻¹' t) ↔ ∀ t ∈ lb, ∃ i, pa i ∧ MapsTo f (sa i) t
tactic: simp only [Tendsto, (hla.map f).le_iff, image_subset_iff]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
la : Filter α
pa : ι → Prop
sa : ι → Set α
lb : Filter β
pb : ι' → Prop
sb : ι' → Set β
f : α → β
hla : la.HasBasis pa sa
⊢ (∀ t ∈ lb, ∃ i, pa i ∧ sa i ⊆ f ⁻¹' t) ↔ ∀ t ∈ lb, ∃ i, pa i ∧ MapsTo f (sa i) t
state_after: no goals
tactic: rfl
Theorem: Finset.truncatedInf_union
File: Mathlib/Combinatorics/SetFamily/AhlswedeZhang.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
inst✝⁶ : SemilatticeInf α
inst✝⁵ : BoundedOrder α
inst✝⁴ : DecidableRel fun x x_1 => x ≤ x_1
inst✝³ : SemilatticeInf β
inst✝² : BoundedOrder β
inst✝¹ : DecidableRel fun x x_1 => x ≤ x_1
s t : Finset α
a : α
inst✝ : DecidableEq α
hs : a ∈ upperClosure ↑s
ht : a ∈ upperClosure ↑t
⊢ (s ∪ t).truncatedInf a = s.truncatedInf a ⊓ t.truncatedInf a
state_after: no goals
tactic: simpa only [truncatedInf_of_mem, hs, ht, upper_aux.2 (Or.inl hs), filter_union] using
    inf'_union _ _ _
Theorem: Cycle.isCycle_formPerm
File: Mathlib/GroupTheory/Perm/Cycle/Concrete.lean

Proof steps:
state_before: α : Type u_1
inst✝ : DecidableEq α
s✝ s' s : Cycle α
h : s.Nodup
hn : s.Nontrivial
⊢ (s.formPerm h).IsCycle
state_after: case h
α : Type u_1
inst✝ : DecidableEq α
s s' : Cycle α
a✝ : List α
h : Nodup (Quot.mk Setoid.r a✝)
hn : Nontrivial (Quot.mk Setoid.r a✝)
⊢ (formPerm (Quot.mk Setoid.r a✝) h).IsCycle
tactic: induction s using Quot.inductionOn
state_before: case h
α : Type u_1
inst✝ : DecidableEq α
s s' : Cycle α
a✝ : List α
h : Nodup (Quot.mk Setoid.r a✝)
hn : Nontrivial (Quot.mk Setoid.r a✝)
⊢ (formPerm (Quot.mk Setoid.r a✝) h).IsCycle
state_after: no goals
tactic: exact List.isCycle_formPerm h (length_nontrivial hn)