ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
Theorem: CategoryTheory.SimplicialObject.Augmented.toArrow_map_left
File: Mathlib/AlgebraicTopology/SimplicialObject.lean

Proof steps:
state_before: C : Type u
inst✝ : Category.{v, u} C
X : SimplicialObject C
X✝ Y✝ : Augmented C
η : X✝ ⟶ Y✝
⊢ (𝟭 C).map ((drop.map η).app (op [0])) ≫
      ((fun X => { left := drop.obj X _[0], right := point.obj X, hom := X.hom.app (op [0]) }) Y✝).hom =
    ((fun X => { left := drop.obj X _[0], right := point.obj X, hom := X.hom.app (op [0]) }) X✝).hom ≫
      (𝟭 C).map (point.map η)
state_after: C : Type u
inst✝ : Category.{v, u} C
X : SimplicialObject C
X✝ Y✝ : Augmented C
η : X✝ ⟶ Y✝
⊢ η.left.app (op [0]) ≫ Y✝.hom.app (op [0]) = X✝.hom.app (op [0]) ≫ η.right
tactic: dsimp
state_before: C : Type u
inst✝ : Category.{v, u} C
X : SimplicialObject C
X✝ Y✝ : Augmented C
η : X✝ ⟶ Y✝
⊢ η.left.app (op [0]) ≫ Y✝.hom.app (op [0]) = X✝.hom.app (op [0]) ≫ η.right
state_after: C : Type u
inst✝ : Category.{v, u} C
X : SimplicialObject C
X✝ Y✝ : Augmented C
η : X✝ ⟶ Y✝
⊢ (η.left ≫ Y✝.hom).app (op [0]) = X✝.hom.app (op [0]) ≫ η.right
tactic: rw [← NatTrans.comp_app]
state_before: C : Type u
inst✝ : Category.{v, u} C
X : SimplicialObject C
X✝ Y✝ : Augmented C
η : X✝ ⟶ Y✝
⊢ (η.left ≫ Y✝.hom).app (op [0]) = X✝.hom.app (op [0]) ≫ η.right
state_after: C : Type u
inst✝ : Category.{v, u} C
X : SimplicialObject C
X✝ Y✝ : Augmented C
η : X✝ ⟶ Y✝
⊢ (X✝.hom ≫ (const C).map η.right).app (op [0]) = X✝.hom.app (op [0]) ≫ η.right
tactic: erw [η.w]
state_before: C : Type u
inst✝ : Category.{v, u} C
X : SimplicialObject C
X✝ Y✝ : Augmented C
η : X✝ ⟶ Y✝
⊢ (X✝.hom ≫ (const C).map η.right).app (op [0]) = X✝.hom.app (op [0]) ≫ η.right
state_after: no goals
tactic: rfl
Theorem: CategoryTheory.CosimplicialObject.δ_comp_σ_of_le
File: Mathlib/AlgebraicTopology/SimplicialObject.lean

Proof steps:
state_before: C : Type u
inst✝ : Category.{v, u} C
X : CosimplicialObject C
n : ℕ
i : Fin (n + 2)
j : Fin (n + 1)
H : i ≤ j.castSucc
⊢ X.δ i.castSucc ≫ X.σ j.succ = X.σ j ≫ X.δ i
state_after: C : Type u
inst✝ : Category.{v, u} C
X : CosimplicialObject C
n : ℕ
i : Fin (n + 2)
j : Fin (n + 1)
H : i ≤ j.castSucc
⊢ X.map (SimplexCategory.δ i.castSucc) ≫ X.map (SimplexCategory.σ j.succ) =
    X.map (SimplexCategory.σ j) ≫ X.map (SimplexCategory.δ i)
tactic: dsimp [δ, σ]
state_before: C : Type u
inst✝ : Category.{v, u} C
X : CosimplicialObject C
n : ℕ
i : Fin (n + 2)
j : Fin (n + 1)
H : i ≤ j.castSucc
⊢ X.map (SimplexCategory.δ i.castSucc) ≫ X.map (SimplexCategory.σ j.succ) =
    X.map (SimplexCategory.σ j) ≫ X.map (SimplexCategory.δ i)
state_after: no goals
tactic: simp only [← X.map_comp, SimplexCategory.δ_comp_σ_of_le H]
Theorem: Polynomial.nextCoeffUp_C_eq_zero
File: Mathlib/Algebra/Polynomial/Degree/TrailingDegree.lean

Proof steps:
state_before: R : Type u
S : Type v
a b : R
n m : ℕ
inst✝ : Semiring R
c : R
⊢ (C c).nextCoeffUp = 0
state_after: R : Type u
S : Type v
a b : R
n m : ℕ
inst✝ : Semiring R
c : R
⊢ (if (C c).natTrailingDegree = 0 then 0 else (C c).coeff ((C c).natTrailingDegree + 1)) = 0
tactic: rw [nextCoeffUp]
state_before: R : Type u
S : Type v
a b : R
n m : ℕ
inst✝ : Semiring R
c : R
⊢ (if (C c).natTrailingDegree = 0 then 0 else (C c).coeff ((C c).natTrailingDegree + 1)) = 0
state_after: no goals
tactic: simp
Theorem: List.rdrop_append_length
File: Mathlib/Data/List/DropRight.lean

Proof steps:
state_before: α : Type u_1
p : α → Bool
l : List α
n : ℕ
l₁ l₂ : List α
⊢ (l₁ ++ l₂).rdrop l₂.length = l₁
state_after: no goals
tactic: rw [rdrop_eq_reverse_drop_reverse, ← length_reverse l₂,
      reverse_append, drop_left, reverse_reverse]
Theorem: CategoryTheory.NonPreadditiveAbelian.neg_add_self
File: Mathlib/CategoryTheory/Abelian/NonPreadditive.lean

Proof steps:
state_before: C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : NonPreadditiveAbelian C
X Y : C
a : X ⟶ Y
⊢ -a + a = 0
state_after: no goals
tactic: rw [add_comm, add_neg_self]
Theorem: LinearMap.commute_mulLeft_right
File: Mathlib/Algebra/Algebra/Bilinear.lean

Proof steps:
state_before: R : Type u_1
A : Type u_2
inst✝⁴ : CommSemiring R
inst✝³ : NonUnitalSemiring A
inst✝² : Module R A
inst✝¹ : SMulCommClass R A A
inst✝ : IsScalarTower R A A
a b : A
⊢ Commute (mulLeft R a) (mulRight R b)
state_after: case h
R : Type u_1
A : Type u_2
inst✝⁴ : CommSemiring R
inst✝³ : NonUnitalSemiring A
inst✝² : Module R A
inst✝¹ : SMulCommClass R A A
inst✝ : IsScalarTower R A A
a b c : A
⊢ (mulLeft R a * mulRight R b) c = (mulRight R b * mulLeft R a) c
tactic: ext c
state_before: case h
R : Type u_1
A : Type u_2
inst✝⁴ : CommSemiring R
inst✝³ : NonUnitalSemiring A
inst✝² : Module R A
inst✝¹ : SMulCommClass R A A
inst✝ : IsScalarTower R A A
a b c : A
⊢ (mulLeft R a * mulRight R b) c = (mulRight R b * mulLeft R a) c
state_after: no goals
tactic: exact (mul_assoc a c b).symm
Theorem: StieltjesFunction.isProbabilityMeasure
File: Mathlib/MeasureTheory/Measure/Stieltjes.lean

Proof steps:
state_before: f : StieltjesFunction
hf_bot : Tendsto (↑f) atBot (𝓝 0)
hf_top : Tendsto (↑f) atTop (𝓝 1)
⊢ f.measure univ = 1
state_after: no goals
tactic: simp [f.measure_univ hf_bot hf_top]
Theorem: exists_nat_ge
File: Mathlib/Algebra/Order/Archimedean.lean

Proof steps:
state_before: α : Type u_1
M : Type u_2
inst✝¹ : OrderedSemiring α
inst✝ : Archimedean α
x : α
⊢ ∃ n, x ≤ ↑n
state_after: α : Type u_1
M : Type u_2
inst✝¹ : OrderedSemiring α
inst✝ : Archimedean α
x : α
a✝ : Nontrivial α
⊢ ∃ n, x ≤ ↑n
tactic: nontriviality α
state_before: α : Type u_1
M : Type u_2
inst✝¹ : OrderedSemiring α
inst✝ : Archimedean α
x : α
a✝ : Nontrivial α
⊢ ∃ n, x ≤ ↑n
state_after: no goals
tactic: exact (Archimedean.arch x one_pos).imp fun n h => by rwa [← nsmul_one]
Theorem: lp.norm_le_of_tsum_le
File: Mathlib/Analysis/Normed/Lp/lpSpace.lean

Proof steps:
state_before: α : Type u_1
E : α → Type u_2
p q : ℝ≥0∞
inst✝ : (i : α) → NormedAddCommGroup (E i)
hp : 0 < p.toReal
C : ℝ
hC : 0 ≤ C
f : ↥(lp E p)
hf : ∑' (i : α), ‖↑f i‖ ^ p.toReal ≤ C ^ p.toReal
⊢ ‖f‖ ≤ C
state_after: α : Type u_1
E : α → Type u_2
p q : ℝ≥0∞
inst✝ : (i : α) → NormedAddCommGroup (E i)
hp : 0 < p.toReal
C : ℝ
hC : 0 ≤ C
f : ↥(lp E p)
hf : ∑' (i : α), ‖↑f i‖ ^ p.toReal ≤ C ^ p.toReal
⊢ ∑' (i : α), ‖↑f i‖ ^ p.toReal ≤ C ^ p.toReal
tactic: rw [← Real.rpow_le_rpow_iff (norm_nonneg' _) hC hp, norm_rpow_eq_tsum hp]
state_before: α : Type u_1
E : α → Type u_2
p q : ℝ≥0∞
inst✝ : (i : α) → NormedAddCommGroup (E i)
hp : 0 < p.toReal
C : ℝ
hC : 0 ≤ C
f : ↥(lp E p)
hf : ∑' (i : α), ‖↑f i‖ ^ p.toReal ≤ C ^ p.toReal
⊢ ∑' (i : α), ‖↑f i‖ ^ p.toReal ≤ C ^ p.toReal
state_after: no goals
tactic: exact hf
Theorem: IsLocallyInjective.comp_right
File: Mathlib/Topology/SeparatedMap.lean

Proof steps:
state_before: X : Type u_1
Y : Type u_2
A : Type u_3
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace A
f : X → Y
hf : IsLocallyInjective f
g : A → X
cont : Continuous g
hg : Function.Injective g
⊢ IsLocallyInjective (f ∘ g)
state_after: X : Type u_1
Y : Type u_2
A : Type u_3
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace A
f : X → Y
hf : IsOpen (Function.pullbackDiagonal f)
g : A → X
cont : Continuous g
hg : Function.Injective g
⊢ IsOpen (Function.pullbackDiagonal (f ∘ g))
tactic: rw [isLocallyInjective_iff_isOpen_diagonal] at hf ⊢
state_before: X : Type u_1
Y : Type u_2
A : Type u_3
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace A
f : X → Y
hf : IsOpen (Function.pullbackDiagonal f)
g : A → X
cont : Continuous g
hg : Function.Injective g
⊢ IsOpen (Function.pullbackDiagonal (f ∘ g))
state_after: X : Type u_1
Y : Type u_2
A : Type u_3
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace A
f : X → Y
hf : IsOpen (Function.pullbackDiagonal f)
g : A → X
cont : Continuous g
hg : Function.Injective g
⊢ IsOpen (Function.mapPullback g id g ⋯ ⋯ ⁻¹' Function.pullbackDiagonal f)
tactic: rw [← hg.preimage_pullbackDiagonal]
state_before: X : Type u_1
Y : Type u_2
A : Type u_3
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace A
f : X → Y
hf : IsOpen (Function.pullbackDiagonal f)
g : A → X
cont : Continuous g
hg : Function.Injective g
⊢ IsOpen (Function.mapPullback g id g ⋯ ⋯ ⁻¹' Function.pullbackDiagonal f)
state_after: no goals
tactic: apply hf.preimage (cont.mapPullback cont)
Theorem: Ordinal.isNormal_iff_lt_succ_and_blsub_eq
File: Mathlib/SetTheory/Ordinal/Arithmetic.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
f : Ordinal.{u} → Ordinal.{max u v}
⊢ IsNormal f ↔
    (∀ (a : Ordinal.{u}), f a < f (succ a)) ∧ ∀ (o : Ordinal.{u}), o.IsLimit → (o.blsub fun x x_1 => f x) = f o
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
f : Ordinal.{u} → Ordinal.{max u v}
⊢ (∀ (a : Ordinal.{u}), f a < f (succ a)) →
    ((∀ (o : Ordinal.{u}), o.IsLimit → (o.bsup fun x x_1 => f x) = f o) ↔
      ∀ (o : Ordinal.{u}), o.IsLimit → (o.blsub fun x x_1 => f x) = f o)
tactic: rw [isNormal_iff_lt_succ_and_bsup_eq.{u, v}, and_congr_right_iff]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
f : Ordinal.{u} → Ordinal.{max u v}
⊢ (∀ (a : Ordinal.{u}), f a < f (succ a)) →
    ((∀ (o : Ordinal.{u}), o.IsLimit → (o.bsup fun x x_1 => f x) = f o) ↔
      ∀ (o : Ordinal.{u}), o.IsLimit → (o.blsub fun x x_1 => f x) = f o)
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
f : Ordinal.{u} → Ordinal.{max u v}
h : ∀ (a : Ordinal.{u}), f a < f (succ a)
⊢ (∀ (o : Ordinal.{u}), o.IsLimit → (o.bsup fun x x_1 => f x) = f o) ↔
    ∀ (o : Ordinal.{u}), o.IsLimit → (o.blsub fun x x_1 => f x) = f o
tactic: intro h
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
f : Ordinal.{u} → Ordinal.{max u v}
h : ∀ (a : Ordinal.{u}), f a < f (succ a)
⊢ (∀ (o : Ordinal.{u}), o.IsLimit → (o.bsup fun x x_1 => f x) = f o) ↔
    ∀ (o : Ordinal.{u}), o.IsLimit → (o.blsub fun x x_1 => f x) = f o
state_after: no goals
tactic: constructor <;> intro H o ho <;> have := H o ho <;>
    rwa [← bsup_eq_blsub_of_lt_succ_limit ho fun a _ => h a] at *
Theorem: RatFunc.num_zero
File: Mathlib/FieldTheory/RatFunc/Basic.lean

Proof steps:
state_before: K : Type u
inst✝ : Field K
⊢ num 0 = 0
state_after: no goals
tactic: convert num_div' (0 : K[X]) one_ne_zero <;> simp
Theorem: CategoryTheory.Limits.equalizerSubobject_factors
File: Mathlib/CategoryTheory/Subobject/Limits.lean

Proof steps:
state_before: C : Type u
inst✝¹ : Category.{v, u} C
X Y Z : C
f g : X ⟶ Y
inst✝ : HasEqualizer f g
W : C
h : W ⟶ X
w : h ≫ f = h ≫ g
⊢ equalizer.lift h w ≫ (MonoOver.mk' (equalizer.ι f g)).arrow = h
state_after: no goals
tactic: simp
Theorem: Sym.coe_equivNatSumOfFintype_symm_apply
File: Mathlib/Data/Finsupp/Multiset.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
inst✝¹ : DecidableEq α
n : ℕ
inst✝ : Fintype α
P : { P // ∑ i : α, P i = n }
⊢ ↑((equivNatSumOfFintype α n).symm P) = ∑ a : α, ↑P a • {a}
state_after: case mk
α : Type u_1
β : Type u_2
ι : Type u_3
inst✝¹ : DecidableEq α
n : ℕ
inst✝ : Fintype α
P : α → ℕ
hP : ∑ i : α, P i = n
⊢ ↑((equivNatSumOfFintype α n).symm ⟨P, hP⟩) = ∑ a : α, ↑⟨P, hP⟩ a • {a}
tactic: obtain ⟨P, hP⟩ := P
state_before: case mk
α : Type u_1
β : Type u_2
ι : Type u_3
inst✝¹ : DecidableEq α
n : ℕ
inst✝ : Fintype α
P : α → ℕ
hP : ∑ i : α, P i = n
⊢ ↑((equivNatSumOfFintype α n).symm ⟨P, hP⟩) = ∑ a : α, ↑⟨P, hP⟩ a • {a}
state_after: case mk
α : Type u_1
β : Type u_2
ι : Type u_3
inst✝¹ : DecidableEq α
n : ℕ
inst✝ : Fintype α
P : α → ℕ
hP : ∑ i : α, P i = n
⊢ Finsupp.toMultiset (Finsupp.equivFunOnFinite.symm P) = (Multiset.map (fun a => ↑⟨P, hP⟩ a • {a}) univ.val).sum
tactic: change Finsupp.toMultiset (Finsupp.equivFunOnFinite.symm P) = Multiset.sum _
state_before: case mk
α : Type u_1
β : Type u_2
ι : Type u_3
inst✝¹ : DecidableEq α
n : ℕ
inst✝ : Fintype α
P : α → ℕ
hP : ∑ i : α, P i = n
⊢ Finsupp.toMultiset (Finsupp.equivFunOnFinite.symm P) = (Multiset.map (fun a => ↑⟨P, hP⟩ a • {a}) univ.val).sum
state_after: case mk.a
α : Type u_1
β : Type u_2
ι : Type u_3
inst✝¹ : DecidableEq α
n : ℕ
inst✝ : Fintype α
P : α → ℕ
hP : ∑ i : α, P i = n
a : α
⊢ Multiset.count a (Finsupp.toMultiset (Finsupp.equivFunOnFinite.symm P)) =
    Multiset.count a (Multiset.map (fun a => ↑⟨P, hP⟩ a • {a}) univ.val).sum
tactic: ext a
state_before: case mk.a
α : Type u_1
β : Type u_2
ι : Type u_3
inst✝¹ : DecidableEq α
n : ℕ
inst✝ : Fintype α
P : α → ℕ
hP : ∑ i : α, P i = n
a : α
⊢ Multiset.count a (Finsupp.toMultiset (Finsupp.equivFunOnFinite.symm P)) =
    Multiset.count a (Multiset.map (fun a => ↑⟨P, hP⟩ a • {a}) univ.val).sum
state_after: case mk.a
α : Type u_1
β : Type u_2
ι : Type u_3
inst✝¹ : DecidableEq α
n : ℕ
inst✝ : Fintype α
P : α → ℕ
hP : ∑ i : α, P i = n
a : α
⊢ Multiset.count a (Finsupp.toMultiset (Finsupp.equivFunOnFinite.symm P)) =
    (Multiset.map (fun b => Multiset.count a (↑⟨P, hP⟩ b • {b})) univ.val).sum
tactic: rw [Multiset.count_sum]
state_before: case mk.a
α : Type u_1
β : Type u_2
ι : Type u_3
inst✝¹ : DecidableEq α
n : ℕ
inst✝ : Fintype α
P : α → ℕ
hP : ∑ i : α, P i = n
a : α
⊢ Multiset.count a (Finsupp.toMultiset (Finsupp.equivFunOnFinite.symm P)) =
    (Multiset.map (fun b => Multiset.count a (↑⟨P, hP⟩ b • {b})) univ.val).sum
state_after: no goals
tactic: simp [Multiset.count_singleton]
Theorem: UpperHalfPlane.linear_ne_zero
File: Mathlib/Analysis/Complex/UpperHalfPlane/Basic.lean

Proof steps:
state_before: cd : Fin 2 → ℝ
z : ℍ
h : cd ≠ 0
⊢ ↑(cd 0) * ↑z + ↑(cd 1) ≠ 0
state_after: cd : Fin 2 → ℝ
z : ℍ
h : ↑(cd 0) * ↑z + ↑(cd 1) = 0
⊢ cd = 0
tactic: contrapose! h
state_before: cd : Fin 2 → ℝ
z : ℍ
h : ↑(cd 0) * ↑z + ↑(cd 1) = 0
⊢ cd = 0
state_after: cd : Fin 2 → ℝ
z : ℍ
h : ↑(cd 0) * ↑z + ↑(cd 1) = 0
this : cd 0 = 0
⊢ cd = 0
tactic: have : cd 0 = 0 := by
    -- we will need this twice
    apply_fun Complex.im at h
    simpa only [z.im_ne_zero, Complex.add_im, add_zero, coe_im, zero_mul, or_false_iff,
      Complex.ofReal_im, Complex.zero_im, Complex.mul_im, mul_eq_zero] using h
state_before: cd : Fin 2 → ℝ
z : ℍ
h : ↑(cd 0) * ↑z + ↑(cd 1) = 0
this : cd 0 = 0
⊢ cd = 0
state_after: cd : Fin 2 → ℝ
z : ℍ
this : cd 0 = 0
h : cd 1 = 0
⊢ cd = 0
tactic: simp only [this, zero_mul, Complex.ofReal_zero, zero_add, Complex.ofReal_eq_zero]
    at h
state_before: cd : Fin 2 → ℝ
z : ℍ
this : cd 0 = 0
h : cd 1 = 0
⊢ cd = 0
state_after: case h
cd : Fin 2 → ℝ
z : ℍ
this : cd 0 = 0
h : cd 1 = 0
i : Fin 2
⊢ cd i = 0 i
tactic: ext i
state_before: case h
cd : Fin 2 → ℝ
z : ℍ
this : cd 0 = 0
h : cd 1 = 0
i : Fin 2
⊢ cd i = 0 i
state_after: no goals
tactic: fin_cases i <;> assumption
Theorem: Affine.Simplex.sum_circumcenterWeightsWithCircumcenter
File: Mathlib/Geometry/Euclidean/Circumcenter.lean

Proof steps:
state_before: V : Type u_1
P : Type u_2
inst✝³ : NormedAddCommGroup V
inst✝² : InnerProductSpace ℝ V
inst✝¹ : MetricSpace P
inst✝ : NormedAddTorsor V P
n : ℕ
⊢ ∑ i : PointsWithCircumcenterIndex n, circumcenterWeightsWithCircumcenter n i = 1
state_after: case h.e'_2.a
V : Type u_1
P : Type u_2
inst✝³ : NormedAddCommGroup V
inst✝² : InnerProductSpace ℝ V
inst✝¹ : MetricSpace P
inst✝ : NormedAddTorsor V P
n : ℕ
j : PointsWithCircumcenterIndex n
a✝ : j ∈ univ
⊢ circumcenterWeightsWithCircumcenter n j =
    if j = circumcenterIndex then Function.const (PointsWithCircumcenterIndex n) 1 j else 0

case h.e'_3
V : Type u_1
P : Type u_2
inst✝³ : NormedAddCommGroup V
inst✝² : InnerProductSpace ℝ V
inst✝¹ : MetricSpace P
inst✝ : NormedAddTorsor V P
n : ℕ
⊢ 1 = if circumcenterIndex ∈ univ then Function.const (PointsWithCircumcenterIndex n) 1 circumcenterIndex else 0
tactic: convert sum_ite_eq' univ circumcenterIndex (Function.const _ (1 : ℝ)) with j
Theorem: MeasurableSpace.DynkinSystem.generate_inter
File: Mathlib/MeasureTheory/PiSystem.lean

Proof steps:
state_before: α : Type u_1
d : DynkinSystem α
s : Set (Set α)
hs : IsPiSystem s
t₁ t₂ : Set α
ht₁ : (generate s).Has t₁
ht₂ : (generate s).Has t₂
s₁ : Set α
hs₁ : s₁ ∈ s
this✝¹ : (generate s).Has s₁
this✝ : generate s ≤ (generate s).restrictOn this✝¹
this : (generate s).Has (t₂ ∩ s₁)
⊢ (generate s).Has (s₁ ∩ t₂)
state_after: no goals
tactic: rwa [inter_comm]
Theorem: LindelofSpace.elim_nhds_subcover
File: Mathlib/Topology/Compactness/Lindelof.lean

Proof steps:
state_before: X : Type u
Y : Type v
ι : Type u_1
inst✝² : TopologicalSpace X
inst✝¹ : TopologicalSpace Y
s t : Set X
inst✝ : LindelofSpace X
U : X → Set X
hU : ∀ (x : X), U x ∈ 𝓝 x
⊢ ∃ t, t.Countable ∧ ⋃ x ∈ t, U x = univ
state_after: case intro.intro.intro
X : Type u
Y : Type v
ι : Type u_1
inst✝² : TopologicalSpace X
inst✝¹ : TopologicalSpace Y
s✝ t✝ : Set X
inst✝ : LindelofSpace X
U : X → Set X
hU : ∀ (x : X), U x ∈ 𝓝 x
t : Set X
tc : t.Countable
s : univ ⊆ ⋃ x ∈ t, U x
⊢ ∃ t, t.Countable ∧ ⋃ x ∈ t, U x = univ
tactic: obtain ⟨t, tc, -, s⟩ := IsLindelof.elim_nhds_subcover isLindelof_univ U fun x _ => hU x
state_before: case intro.intro.intro
X : Type u
Y : Type v
ι : Type u_1
inst✝² : TopologicalSpace X
inst✝¹ : TopologicalSpace Y
s✝ t✝ : Set X
inst✝ : LindelofSpace X
U : X → Set X
hU : ∀ (x : X), U x ∈ 𝓝 x
t : Set X
tc : t.Countable
s : univ ⊆ ⋃ x ∈ t, U x
⊢ ∃ t, t.Countable ∧ ⋃ x ∈ t, U x = univ
state_after: case right
X : Type u
Y : Type v
ι : Type u_1
inst✝² : TopologicalSpace X
inst✝¹ : TopologicalSpace Y
s✝ t✝ : Set X
inst✝ : LindelofSpace X
U : X → Set X
hU : ∀ (x : X), U x ∈ 𝓝 x
t : Set X
tc : t.Countable
s : univ ⊆ ⋃ x ∈ t, U x
⊢ ⋃ x ∈ t, U x = univ
tactic: use t, tc
state_before: case right
X : Type u
Y : Type v
ι : Type u_1
inst✝² : TopologicalSpace X
inst✝¹ : TopologicalSpace Y
s✝ t✝ : Set X
inst✝ : LindelofSpace X
U : X → Set X
hU : ∀ (x : X), U x ∈ 𝓝 x
t : Set X
tc : t.Countable
s : univ ⊆ ⋃ x ∈ t, U x
⊢ ⋃ x ∈ t, U x = univ
state_after: no goals
tactic: apply top_unique s
Theorem: one_div_pow_le_one_div_pow_of_le
File: Mathlib/Algebra/Order/Field/Basic.lean

Proof steps:
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
inst✝ : LinearOrderedSemifield α
a b c d e : α
m✝ n✝ : ℤ
a1 : 1 ≤ a
m n : ℕ
mn : m ≤ n
⊢ 1 / a ^ n ≤ 1 / a ^ m
state_after: no goals
tactic: refine (one_div_le_one_div ?_ ?_).mpr (pow_le_pow_right a1 mn) <;>
    exact pow_pos (zero_lt_one.trans_le a1) _
Theorem: deriv_eqOn
File: Mathlib/Analysis/Calculus/Deriv/Basic.lean

Proof steps:
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 L₁ L₂ : Filter 𝕜
f' : 𝕜 → F
hs : IsOpen s
hf' : ∀ x ∈ s, HasDerivWithinAt f (f' x) s x
x : 𝕜
hx : x ∈ s
⊢ deriv f x = f' x
state_after: no goals
tactic: rw [← derivWithin_of_isOpen hs hx, (hf' _ hx).derivWithin <| hs.uniqueDiffWithinAt hx]
Theorem: Asymptotics.isLittleO_sum_range_of_tendsto_zero
File: Mathlib/Analysis/Asymptotics/SpecificAsymptotics.lean

Proof steps:
state_before: α : Type u_1
inst✝ : NormedAddCommGroup α
f : ℕ → α
h : Tendsto f atTop (𝓝 0)
⊢ (fun n => ∑ i ∈ range n, f i) =o[atTop] fun n => ↑n
state_after: α : Type u_1
inst✝ : NormedAddCommGroup α
f : ℕ → α
h : Tendsto f atTop (𝓝 0)
this :
  Tendsto (fun n => ∑ i ∈ range n, 1) atTop atTop → (fun n => ∑ i ∈ range n, f i) =o[atTop] fun n => ∑ i ∈ range n, 1
⊢ (fun n => ∑ i ∈ range n, f i) =o[atTop] fun n => ↑n
tactic: have := ((isLittleO_one_iff ℝ).2 h).sum_range fun i => zero_le_one
state_before: α : Type u_1
inst✝ : NormedAddCommGroup α
f : ℕ → α
h : Tendsto f atTop (𝓝 0)
this :
  Tendsto (fun n => ∑ i ∈ range n, 1) atTop atTop → (fun n => ∑ i ∈ range n, f i) =o[atTop] fun n => ∑ i ∈ range n, 1
⊢ (fun n => ∑ i ∈ range n, f i) =o[atTop] fun n => ↑n
state_after: α : Type u_1
inst✝ : NormedAddCommGroup α
f : ℕ → α
h : Tendsto f atTop (𝓝 0)
this : Tendsto (fun n => ↑n) atTop atTop → (fun n => ∑ i ∈ range n, f i) =o[atTop] fun n => ↑n
⊢ (fun n => ∑ i ∈ range n, f i) =o[atTop] fun n => ↑n
tactic: simp only [sum_const, card_range, Nat.smul_one_eq_cast] at this
state_before: α : Type u_1
inst✝ : NormedAddCommGroup α
f : ℕ → α
h : Tendsto f atTop (𝓝 0)
this : Tendsto (fun n => ↑n) atTop atTop → (fun n => ∑ i ∈ range n, f i) =o[atTop] fun n => ↑n
⊢ (fun n => ∑ i ∈ range n, f i) =o[atTop] fun n => ↑n
state_after: no goals
tactic: exact this tendsto_natCast_atTop_atTop
Theorem: Set.toFinset_subset
File: Mathlib/Data/Fintype/Basic.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
s t✝ : Set α
inst✝ : Fintype ↑s
t : Finset α
⊢ s.toFinset ⊆ t ↔ s ⊆ ↑t
state_after: no goals
tactic: rw [← Finset.coe_subset, coe_toFinset]
Theorem: Valuation.Integers.eq_algebraMap_or_inv_eq_algebraMap
File: Mathlib/RingTheory/Valuation/Integers.lean

Proof steps:
state_before: F : Type u
Γ₀ : Type v
inst✝³ : Field F
inst✝² : LinearOrderedCommGroupWithZero Γ₀
v : Valuation F Γ₀
O : Type w
inst✝¹ : CommRing O
inst✝ : Algebra O F
hv : v.Integers O
x : F
⊢ ∃ a, x = (algebraMap O F) a ∨ x⁻¹ = (algebraMap O F) a
state_after: case inl.intro
F : Type u
Γ₀ : Type v
inst✝³ : Field F
inst✝² : LinearOrderedCommGroupWithZero Γ₀
v : Valuation F Γ₀
O : Type w
inst✝¹ : CommRing O
inst✝ : Algebra O F
hv : v.Integers O
x : F
h : v x ≤ 1
a : O
ha : (algebraMap O F) a = x
⊢ ∃ a, x = (algebraMap O F) a ∨ x⁻¹ = (algebraMap O F) a

case inr.intro
F : Type u
Γ₀ : Type v
inst✝³ : Field F
inst✝² : LinearOrderedCommGroupWithZero Γ₀
v : Valuation F Γ₀
O : Type w
inst✝¹ : CommRing O
inst✝ : Algebra O F
hv : v.Integers O
x : F
h : v x⁻¹ ≤ 1
a : O
ha : (algebraMap O F) a = x⁻¹
⊢ ∃ a, x = (algebraMap O F) a ∨ x⁻¹ = (algebraMap O F) a
tactic: rcases val_le_one_or_val_inv_le_one v x with h | h <;>
  obtain ⟨a, ha⟩ := exists_of_le_one hv h
state_before: case inl.intro
F : Type u
Γ₀ : Type v
inst✝³ : Field F
inst✝² : LinearOrderedCommGroupWithZero Γ₀
v : Valuation F Γ₀
O : Type w
inst✝¹ : CommRing O
inst✝ : Algebra O F
hv : v.Integers O
x : F
h : v x ≤ 1
a : O
ha : (algebraMap O F) a = x
⊢ ∃ a, x = (algebraMap O F) a ∨ x⁻¹ = (algebraMap O F) a

case inr.intro
F : Type u
Γ₀ : Type v
inst✝³ : Field F
inst✝² : LinearOrderedCommGroupWithZero Γ₀
v : Valuation F Γ₀
O : Type w
inst✝¹ : CommRing O
inst✝ : Algebra O F
hv : v.Integers O
x : F
h : v x⁻¹ ≤ 1
a : O
ha : (algebraMap O F) a = x⁻¹
⊢ ∃ a, x = (algebraMap O F) a ∨ x⁻¹ = (algebraMap O F) a
state_after: no goals
tactic: exacts [⟨a, Or.inl ha.symm⟩, ⟨a, Or.inr ha.symm⟩]
Theorem: List.get_zip
File: Mathlib/Data/List/Zip.lean

Proof steps:
state_before: α : Type u
β : Type u_1
γ : Type u_2
δ : Type u_3
ε : Type u_4
l : List α
l' : List β
i : Fin (l.zip l').length
⊢ (l.zip l').get i = (l.get ⟨↑i, ⋯⟩, l'.get ⟨↑i, ⋯⟩)
state_after: no goals
tactic: simp
Theorem: Mathlib.Tactic.PushNeg.ne_empty_eq_nonempty
File: Mathlib/Tactic/PushNeg.lean

Proof steps:
state_before: p q : Prop
α : Sort u_1
s✝ : α → Prop
β : Type u_2
inst✝ : LinearOrder β
s : Set β
⊢ (s ≠ ∅) = s.Nonempty
state_after: no goals
tactic: rw [ne_eq, ← not_nonempty_eq s, not_not]
Theorem: aestronglyMeasurable_withDensity_iff
File: Mathlib/MeasureTheory/Function/StronglyMeasurable/Lemmas.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
m : MeasurableSpace α
μ : Measure α
inst✝³ : TopologicalSpace β
inst✝² : TopologicalSpace γ
f✝ g✝ : α → β
E : Type u_4
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℝ E
f : α → ℝ≥0
hf : Measurable f
g : α → E
⊢ AEStronglyMeasurable g (μ.withDensity fun x => ↑(f x)) ↔ AEStronglyMeasurable (fun x => ↑(f x) • g x) μ
state_after: case mp
α : Type u_1
β : Type u_2
γ : Type u_3
m : MeasurableSpace α
μ : Measure α
inst✝³ : TopologicalSpace β
inst✝² : TopologicalSpace γ
f✝ g✝ : α → β
E : Type u_4
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℝ E
f : α → ℝ≥0
hf : Measurable f
g : α → E
⊢ AEStronglyMeasurable g (μ.withDensity fun x => ↑(f x)) → AEStronglyMeasurable (fun x => ↑(f x) • g x) μ

case mpr
α : Type u_1
β : Type u_2
γ : Type u_3
m : MeasurableSpace α
μ : Measure α
inst✝³ : TopologicalSpace β
inst✝² : TopologicalSpace γ
f✝ g✝ : α → β
E : Type u_4
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℝ E
f : α → ℝ≥0
hf : Measurable f
g : α → E
⊢ AEStronglyMeasurable (fun x => ↑(f x) • g x) μ → AEStronglyMeasurable g (μ.withDensity fun x => ↑(f x))
tactic: constructor