1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: norm_multiset_prod_le
File: Mathlib/Analysis/Normed/Group/Basic.lean

tactic: rw [← Multiplicative.ofAdd_le, ofAdd_multiset_prod, Multiset.map_map]
state_before: 𝓕 : Type u_1
𝕜 : Type u_2
α : Type u_3
ι : Type u_4
κ : Type u_5
E : Type u_6
F : Type u_7
G : Type u_8
inst✝¹ : SeminormedCommGroup E
inst✝ : SeminormedCommGroup F
a a₁ a₂ b b₁ b₂ : E
r r₁ r₂ : ℝ
m : Multiset E
⊢ ‖m.prod‖ ≤ (Multiset.map (fun x => ‖x‖) m).sum
state_after: 𝓕 : Type u_1
𝕜 : Type u_2
α : Type u_3
ι : Type u_4
κ : Type u_5
E : Type u_6
F : Type u_7
G : Type u_8
inst✝¹ : SeminormedCommGroup E
inst✝ : SeminormedCommGroup F
a a₁ a₂ b b₁ b₂ : E
r r₁ r₂ : ℝ
m : Multiset E
⊢ Multiplicative.ofAdd ‖m.prod‖ ≤ (Multiset.map (⇑Multiplicative.ofAdd ∘ fun x => ‖x‖) m).prod

tactic: refine Multiset.le_prod_of_submultiplicative (Multiplicative.ofAdd ∘ norm) ?_ (fun x y => ?_) _
state_before: 𝓕 : Type u_1
𝕜 : Type u_2
α : Type u_3
ι : Type u_4
κ : Type u_5
E : Type u_6
F : Type u_7
G : Type u_8
inst✝¹ : SeminormedCommGroup E
inst✝ : SeminormedCommGroup F
a a₁ a₂ b b₁ b₂ : E
r r₁ r₂ : ℝ
m : Multiset E
⊢ Multiplicative.ofAdd ‖m.prod‖ ≤ (Multiset.map (⇑Multiplicative.ofAdd ∘ fun x => ‖x‖) m).prod
state_after: case refine_1
𝓕 : Type u_1
𝕜 : Type u_2
α : Type u_3
ι : Type u_4
κ : Type u_5
E : Type u_6
F : Type u_7
G : Type u_8
inst✝¹ : SeminormedCommGroup E
inst✝ : SeminormedCommGroup F
a a₁ a₂ b b₁ b₂ : E
r r₁ r₂ : ℝ
m : Multiset E
⊢ (⇑Multiplicative.ofAdd ∘ norm) 1 = 1

case refine_2
𝓕 : Type u_1
𝕜 : Type u_2
α : Type u_3
ι : Type u_4
κ : Type u_5
E : Type u_6
F : Type u_7
G : Type u_8
inst✝¹ : SeminormedCommGroup E
inst✝ : SeminormedCommGroup F
a a₁ a₂ b b₁ b₂ : E
r r₁ r₂ : ℝ
m : Multiset E
x y : E
⊢ (⇑Multiplicative.ofAdd ∘ norm) (x * y) ≤ (⇑Multiplicative.ofAdd ∘ norm) x * (⇑Multiplicative.ofAdd ∘ norm) y

tactic: simp only [comp_apply, norm_one', ofAdd_zero]
state_before: case refine_1
𝓕 : Type u_1
𝕜 : Type u_2
α : Type u_3
ι : Type u_4
κ : Type u_5
E : Type u_6
F : Type u_7
G : Type u_8
inst✝¹ : SeminormedCommGroup E
inst✝ : SeminormedCommGroup F
a a₁ a₂ b b₁ b₂ : E
r r₁ r₂ : ℝ
m : Multiset E
⊢ (⇑Multiplicative.ofAdd ∘ norm) 1 = 1
state_after: no goals

tactic: exact norm_mul_le' x y
state_before: case refine_2
𝓕 : Type u_1
𝕜 : Type u_2
α : Type u_3
ι : Type u_4
κ : Type u_5
E : Type u_6
F : Type u_7
G : Type u_8
inst✝¹ : SeminormedCommGroup E
inst✝ : SeminormedCommGroup F
a a₁ a₂ b b₁ b₂ : E
r r₁ r₂ : ℝ
m : Multiset E
x y : E
⊢ (⇑Multiplicative.ofAdd ∘ norm) (x * y) ≤ (⇑Multiplicative.ofAdd ∘ norm) x * (⇑Multiplicative.ofAdd ∘ norm) y
state_after: no goals
Theorem: ringChar.Nat.cast_ringChar
File: Mathlib/Algebra/CharP/Defs.lean

tactic: rw [ringChar.spec]
state_before: R : Type u_1
inst✝ : NonAssocSemiring R
⊢ ↑(ringChar R) = 0
state_after: no goals
Theorem: disjoint_assoc
File: Mathlib/Order/Disjoint.lean

tactic: rw [disjoint_iff_inf_le, disjoint_iff_inf_le, inf_assoc]
state_before: α : Type u_1
inst✝¹ : SemilatticeInf α
inst✝ : OrderBot α
a b c d : α
⊢ Disjoint (a ⊓ b) c ↔ Disjoint a (b ⊓ c)
state_after: no goals
Theorem: MeasureTheory.snorm'_neg
File: Mathlib/MeasureTheory/Function/LpSeminorm/Basic.lean

tactic: simp [snorm']
state_before: α : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
m m0 : MeasurableSpace α
p : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedAddCommGroup G
f : α → F
⊢ snorm' (-f) q μ = snorm' f q μ
state_after: no goals
Theorem: Real.doublingGamma_add_one
File: Mathlib/Analysis/SpecialFunctions/Gamma/BohrMollerup.lean

tactic: rw [doublingGamma, doublingGamma, (by abel : s + 1 - 1 = s - 1 + 1), add_div, add_assoc,
  add_halves (1 : ℝ), Gamma_add_one (div_ne_zero hs two_ne_zero), rpow_add two_pos, rpow_one]
state_before: s : ℝ
hs : s ≠ 0
⊢ (s + 1).doublingGamma = s * s.doublingGamma
state_after: s : ℝ
hs : s ≠ 0
⊢ Gamma (s / 2 + 1 / 2) * (s / 2 * Gamma (s / 2)) * (2 ^ (s - 1) * 2) / √π =
    s * (Gamma (s / 2) * Gamma (s / 2 + 1 / 2) * 2 ^ (s - 1) / √π)

tactic: ring
state_before: s : ℝ
hs : s ≠ 0
⊢ Gamma (s / 2 + 1 / 2) * (s / 2 * Gamma (s / 2)) * (2 ^ (s - 1) * 2) / √π =
    s * (Gamma (s / 2) * Gamma (s / 2 + 1 / 2) * 2 ^ (s - 1) / √π)
state_after: no goals

tactic: abel
state_before: s : ℝ
hs : s ≠ 0
⊢ s + 1 - 1 = s - 1 + 1
state_after: no goals
Theorem: SetTheory.Game.bddAbove_range_of_small
File: Mathlib/SetTheory/Game/Basic.lean

tactic: obtain ⟨x, hx⟩ := PGame.bddAbove_range_of_small (Quotient.out ∘ f)
state_before: ι : Type u_1
inst✝ : Small.{u, u_1} ι
f : ι → Game
⊢ BddAbove (Set.range f)
state_after: case intro
ι : Type u_1
inst✝ : Small.{u, u_1} ι
f : ι → Game
x : PGame
hx : x ∈ upperBounds (Set.range (Quotient.out ∘ f))
⊢ BddAbove (Set.range f)

tactic: refine ⟨⟦x⟧, Set.forall_mem_range.2 fun i ↦ ?_⟩
state_before: case intro
ι : Type u_1
inst✝ : Small.{u, u_1} ι
f : ι → Game
x : PGame
hx : x ∈ upperBounds (Set.range (Quotient.out ∘ f))
⊢ BddAbove (Set.range f)
state_after: case intro
ι : Type u_1
inst✝ : Small.{u, u_1} ι
f : ι → Game
x : PGame
hx : x ∈ upperBounds (Set.range (Quotient.out ∘ f))
i : ι
⊢ f i ≤ ⟦x⟧

tactic: simpa [PGame.le_iff_game_le] using hx $ Set.mem_range_self i
state_before: case intro
ι : Type u_1
inst✝ : Small.{u, u_1} ι
f : ι → Game
x : PGame
hx : x ∈ upperBounds (Set.range (Quotient.out ∘ f))
i : ι
⊢ f i ≤ ⟦x⟧
state_after: no goals
Theorem: LipschitzWith.comp
File: Mathlib/Topology/EMetricSpace/Lipschitz.lean

tactic: rw [← mul_assoc, ENNReal.coe_mul]
state_before: α : Type u
β : Type v
γ : Type w
ι : Type x
inst✝² : PseudoEMetricSpace α
inst✝¹ : PseudoEMetricSpace β
inst✝ : PseudoEMetricSpace γ
K : ℝ≥0
f✝ : α → β
x✝ y✝ : α
r : ℝ≥0∞
Kf Kg : ℝ≥0
f : β → γ
g : α → β
hf : LipschitzWith Kf f
hg : LipschitzWith Kg g
x y : α
⊢ ↑Kf * (↑Kg * edist x y) = ↑(Kf * Kg) * edist x y
state_after: no goals
Theorem: mul_div_assoc
File: Mathlib/Algebra/Group/Basic.lean

tactic: rw [div_eq_mul_inv, div_eq_mul_inv, mul_assoc _ _ _]
state_before: α : Type u_1
β : Type u_2
G : Type u_3
M : Type u_4
inst✝ : DivInvMonoid G
a✝ b✝ c✝ a b c : G
⊢ a * b / c = a * (b / c)
state_after: no goals
Theorem: Localization.r_of_eq
File: Mathlib/GroupTheory/MonoidLocalization.lean

tactic: rw [h]
state_before: M : Type u_1
inst✝² : CommMonoid M
S : Submonoid M
N : Type u_2
inst✝¹ : CommMonoid N
P : Type u_3
inst✝ : CommMonoid P
x y : M × ↥S
h : ↑y.2 * x.1 = ↑x.2 * y.1
⊢ ↑1 * (↑y.2 * x.1) = ↑1 * (↑x.2 * y.1)
state_after: no goals
Theorem: Real.Angle.sign_eq_zero_iff
File: Mathlib/Analysis/SpecialFunctions/Trigonometric/Angle.lean

tactic: rw [sign, _root_.sign_eq_zero_iff, sin_eq_zero_iff]
state_before: θ : Angle
⊢ θ.sign = 0 ↔ θ = 0 ∨ θ = ↑π
state_after: no goals
Theorem: intervalIntegral.integral_interval_sub_interval_comm
File: Mathlib/MeasureTheory/Integral/IntervalIntegral.lean

tactic: simp only [sub_eq_add_neg, ← integral_symm,
  integral_interval_add_interval_comm hab hcd.symm (hac.trans hcd)]
state_before: ι : Type u_1
𝕜 : Type u_2
E : Type u_3
F : Type u_4
A : Type u_5
inst✝² : NormedAddCommGroup E
inst✝¹ : CompleteSpace E
inst✝ : NormedSpace ℝ E
a b c d : ℝ
f g : ℝ → E
μ : Measure ℝ
hab : IntervalIntegrable f μ a b
hcd : IntervalIntegrable f μ c d
hac : IntervalIntegrable f μ a c
⊢ ∫ (x : ℝ) in a..b, f x ∂μ - ∫ (x : ℝ) in c..d, f x ∂μ = ∫ (x : ℝ) in a..c, f x ∂μ - ∫ (x : ℝ) in b..d, f x ∂μ
state_after: no goals
Theorem: CategoryTheory.Localization.homEquiv_isoOfHom_inv
File: Mathlib/CategoryTheory/Localization/HomEquiv.lean

tactic: rw [← cancel_mono (isoOfHom L₂ W f hf).hom, Iso.inv_hom_id, isoOfHom_hom,
  ← homEquiv_map W L₁ L₂ f, ← homEquiv_comp, isoOfHom_inv_hom_id, homEquiv_id]
state_before: C : Type u_1
C₁ : Type u_2
C₂ : Type u_3
C₃ : Type u_4
D₁ : Type u_5
D₂ : Type u_6
D₃ : Type u_7
inst✝⁹ : Category.{u_8, u_1} C
inst✝⁸ : Category.{?u.49971, u_2} C₁
inst✝⁷ : Category.{?u.49975, u_3} C₂
inst✝⁶ : Category.{?u.49979, u_4} C₃
inst✝⁵ : Category.{u_10, u_5} D₁
inst✝⁴ : Category.{u_9, u_6} D₂
inst✝³ : Category.{?u.49991, u_7} D₃
W : MorphismProperty C
L₁ : C ⥤ D₁
inst✝² : L₁.IsLocalization W
L₂ : C ⥤ D₂
inst✝¹ : L₂.IsLocalization W
L₃ : C ⥤ D₃
inst✝ : L₃.IsLocalization W
X Y Z : C
f : Y ⟶ X
hf : W f
⊢ (homEquiv W L₁ L₂) (isoOfHom L₁ W f hf).inv = (isoOfHom L₂ W f hf).inv
state_after: no goals
Theorem: EuclideanGeometry.angle_const_sub
File: Mathlib/Geometry/Euclidean/Angle/Unoriented/Affine.lean

tactic: simpa only [vsub_eq_sub] using angle_const_vsub v v₁ v₂ v₃
state_before: V : Type u_1
P : Type u_2
inst✝³ : NormedAddCommGroup V
inst✝² : InnerProductSpace ℝ V
inst✝¹ : MetricSpace P
inst✝ : NormedAddTorsor V P
p p₀ p₁ p₂ : P
v v₁ v₂ v₃ : V
⊢ ∠ (v - v₁) (v - v₂) (v - v₃) = ∠ v₁ v₂ v₃
state_after: no goals
Theorem: mul_self_eq_zero
File: Mathlib/Algebra/GroupWithZero/Defs.lean

tactic: simp
state_before: G₀ : Type u
M₀ : Type u_1
M₀' : Type u_2
G₀' : Type u_3
inst✝¹ : MulZeroClass M₀
inst✝ : NoZeroDivisors M₀
a b : M₀
⊢ a * a = 0 ↔ a = 0
state_after: no goals
Theorem: List.tails_append
File: Mathlib/Data/List/Infix.lean

tactic: simp
state_before: α : Type u_1
β : Type u_2
l l₁ l₂ l₃ : List α
a b : α
m n : ℕ
⊢ ([] ++ []).tails = map (fun l => l ++ []) [].tails ++ [].tails.tail
state_after: no goals

tactic: simp
state_before: α : Type u_1
β : Type u_2
l l₁ l₂ l₃ : List α
a✝ b : α
m n : ℕ
a : α
t : List α
⊢ ([] ++ a :: t).tails = map (fun l => l ++ a :: t) [].tails ++ (a :: t).tails.tail
state_after: no goals

tactic: simp [tails_append s t]
state_before: α : Type u_1
β : Type u_2
l l₁ l₂ l₃ : List α
a✝ b : α
m n : ℕ
a : α
s t : List α
⊢ (a :: s ++ t).tails = map (fun l => l ++ t) (a :: s).tails ++ t.tails.tail
state_after: no goals
Theorem: MeasureTheory.addHaarMeasure_eq_volume_pi
File: Mathlib/MeasureTheory/Measure/Lebesgue/EqHaar.lean

tactic: convert (addHaarMeasure_unique volume (piIcc01 ι)).symm
state_before: ι : Type u_1
inst✝ : Fintype ι
⊢ addHaarMeasure (piIcc01 ι) = volume
state_after: case h.e'_2
ι : Type u_1
inst✝ : Fintype ι
⊢ addHaarMeasure (piIcc01 ι) = volume ↑(piIcc01 ι) • addHaarMeasure (piIcc01 ι)

tactic: simp only [piIcc01, volume_pi_pi fun _ => Icc (0 : ℝ) 1, PositiveCompacts.coe_mk,
  Compacts.coe_mk, Finset.prod_const_one, ENNReal.ofReal_one, Real.volume_Icc, one_smul, sub_zero]
state_before: case h.e'_2
ι : Type u_1
inst✝ : Fintype ι
⊢ addHaarMeasure (piIcc01 ι) = volume ↑(piIcc01 ι) • addHaarMeasure (piIcc01 ι)
state_after: no goals
Theorem: Pretrivialization.symm_trans_symm
File: Mathlib/Topology/FiberBundle/Trivialization.lean

tactic: rw [PartialEquiv.trans_symm_eq_symm_trans_symm, PartialEquiv.symm_symm]
state_before: ι : Type u_1
B : Type u_2
F : Type u_3
E : B → Type u_4
Z : Type u_5
inst✝¹ : TopologicalSpace B
inst✝ : TopologicalSpace F
proj : Z → B
e✝ : Pretrivialization F proj
x : Z
e e' : Pretrivialization F proj
⊢ (e.symm.trans e'.toPartialEquiv).symm = e'.symm.trans e.toPartialEquiv
state_after: no goals
Theorem: Homotopy.nullHomotopicMap_f_eq_zero
File: Mathlib/Algebra/Homology/Homotopy.lean

tactic: dsimp [nullHomotopicMap, dNext, prevD]
state_before: ι : Type u_1
V : Type u
inst✝¹ : Category.{v, u} V
inst✝ : Preadditive V
c : ComplexShape ι
C D E : HomologicalComplex V c
f g : C ⟶ D
h k : D ⟶ E
i k₀ : ι
hk₀ : ∀ (l : ι), ¬c.Rel k₀ l
hk₀' : ∀ (l : ι), ¬c.Rel l k₀
hom : (i j : ι) → C.X i ⟶ D.X j
⊢ (nullHomotopicMap hom).f k₀ = 0
state_after: ι : Type u_1
V : Type u
inst✝¹ : Category.{v, u} V
inst✝ : Preadditive V
c : ComplexShape ι
C D E : HomologicalComplex V c
f g : C ⟶ D
h k : D ⟶ E
i k₀ : ι
hk₀ : ∀ (l : ι), ¬c.Rel k₀ l
hk₀' : ∀ (l : ι), ¬c.Rel l k₀
hom : (i j : ι) → C.X i ⟶ D.X j
⊢ C.d k₀ (c.next k₀) ≫ hom (c.next k₀) k₀ + hom k₀ (c.prev k₀) ≫ D.d (c.prev k₀) k₀ = 0

tactic: rw [C.shape, D.shape, zero_comp, comp_zero, add_zero] <;> apply_assumption
state_before: ι : Type u_1
V : Type u
inst✝¹ : Category.{v, u} V
inst✝ : Preadditive V
c : ComplexShape ι
C D E : HomologicalComplex V c
f g : C ⟶ D
h k : D ⟶ E
i k₀ : ι
hk₀ : ∀ (l : ι), ¬c.Rel k₀ l
hk₀' : ∀ (l : ι), ¬c.Rel l k₀
hom : (i j : ι) → C.X i ⟶ D.X j
⊢ C.d k₀ (c.next k₀) ≫ hom (c.next k₀) k₀ + hom k₀ (c.prev k₀) ≫ D.d (c.prev k₀) k₀ = 0
state_after: no goals
Theorem: Algebra.rank_eq_of_equiv_equiv
File: Mathlib/LinearAlgebra/Dimension/Basic.lean

tactic: simpa only [lift_id] using lift_rank_eq_of_equiv_equiv i j hc
state_before: R✝ : Type u
R'✝ : Type u'
M M₁ : Type v
M' : Type v'
inst✝¹⁸ : Ring R✝
inst✝¹⁷ : Ring R'✝
inst✝¹⁶ : AddCommGroup M
inst✝¹⁵ : AddCommGroup M'
inst✝¹⁴ : AddCommGroup M₁
inst✝¹³ : Module R✝ M
inst✝¹² : Module R✝ M'
inst✝¹¹ : Module R✝ M₁
inst✝¹⁰ : Module R'✝ M'
inst✝⁹ : Module R'✝ M₁
R : Type w
S : Type v
inst✝⁸ : CommRing R
inst✝⁷ : Ring S
inst✝⁶ : Algebra R S
R' : Type w'
S'✝ : Type v'
inst✝⁵ : CommRing R'
inst✝⁴ : Ring S'✝
inst✝³ : Algebra R' S'✝
S' : Type v
inst✝² : CommRing R'
inst✝¹ : Ring S'
inst✝ : Algebra R' S'
i : R ≃+* R'
j : S ≃+* S'
hc : (algebraMap R' S').comp i.toRingHom = j.toRingHom.comp (algebraMap R S)
⊢ Module.rank R S = Module.rank R' S'
state_after: no goals
Theorem: MeasureTheory.condexpIndL1_of_measurableSet_of_measure_ne_top
File: Mathlib/MeasureTheory/Function/ConditionalExpectation/CondexpL1.lean

tactic: simp only [condexpIndL1, And.intro hs hμs, dif_pos, Ne, not_false_iff, and_self_iff]
state_before: α : Type u_1
β : Type u_2
F : Type u_3
F' : Type u_4
G : Type u_5
G' : Type u_6
𝕜 : Type u_7
p : ℝ≥0∞
inst✝¹² : RCLike 𝕜
inst✝¹¹ : NormedAddCommGroup F
inst✝¹⁰ : NormedSpace 𝕜 F
inst✝⁹ : NormedAddCommGroup F'
inst✝⁸ : NormedSpace 𝕜 F'
inst✝⁷ : NormedSpace ℝ F'
inst✝⁶ : CompleteSpace F'
inst✝⁵ : NormedAddCommGroup G
inst✝⁴ : NormedAddCommGroup G'
inst✝³ : NormedSpace ℝ G'
inst✝² : CompleteSpace G'
m m0 : MeasurableSpace α
μ : Measure α
s t : Set α
inst✝¹ : NormedSpace ℝ G
hm : m ≤ m0
inst✝ : SigmaFinite (μ.trim hm)
hs : MeasurableSet s
hμs : μ s ≠ ⊤
x : G
⊢ condexpIndL1 hm μ s x = condexpIndL1Fin hm hs hμs x
state_after: no goals
Theorem: Algebra.adjoin_attach_biUnion
File: Mathlib/RingTheory/Adjoin/Basic.lean

tactic: simp [adjoin_iUnion]
state_before: R : Type uR
S : Type uS
A : Type uA
B : Type uB
inst✝⁹ : CommSemiring R
inst✝⁸ : CommSemiring S
inst✝⁷ : Semiring A
inst✝⁶ : Semiring B
inst✝⁵ : Algebra R S
inst✝⁴ : Algebra R A
inst✝³ : Algebra S A
inst✝² : Algebra R B
inst✝¹ : IsScalarTower R S A
s✝ t : Set A
inst✝ : DecidableEq A
α : Type u_1
s : Finset α
f : { x // x ∈ s } → Finset A
⊢ adjoin R ↑(s.attach.biUnion f) = ⨆ x, adjoin R ↑(f x)
state_after: no goals
Theorem: Rat.not_countably_generated_cocompact
File: Mathlib/Topology/Instances/RatLemmas.lean

tactic: intro H
state_before: p q : ℚ
s t : Set ℚ
⊢ ¬(cocompact ℚ).IsCountablyGenerated
state_after: p q : ℚ
s t : Set ℚ
H : (cocompact ℚ).IsCountablyGenerated
⊢ False

tactic: rcases exists_seq_tendsto (cocompact ℚ ⊓ 𝓝 0) with ⟨x, hx⟩
state_before: p q : ℚ
s t : Set ℚ
H : (cocompact ℚ).IsCountablyGenerated
⊢ False
state_after: case intro
p q : ℚ
s t : Set ℚ
H : (cocompact ℚ).IsCountablyGenerated
x : ℕ → ℚ
hx : Tendsto x atTop (cocompact ℚ ⊓ 𝓝 0)
⊢ False

tactic: rw [tendsto_inf] at hx
state_before: case intro
p q : ℚ
s t : Set ℚ
H : (cocompact ℚ).IsCountablyGenerated
x : ℕ → ℚ
hx : Tendsto x atTop (cocompact ℚ ⊓ 𝓝 0)
⊢ False
state_after: case intro
p q : ℚ
s t : Set ℚ
H : (cocompact ℚ).IsCountablyGenerated
x : ℕ → ℚ
hx : Tendsto x atTop (cocompact ℚ) ∧ Tendsto x atTop (𝓝 0)
⊢ False

tactic: rcases hx with ⟨hxc, hx0⟩
state_before: case intro
p q : ℚ
s t : Set ℚ
H : (cocompact ℚ).IsCountablyGenerated
x : ℕ → ℚ
hx : Tendsto x atTop (cocompact ℚ) ∧ Tendsto x atTop (𝓝 0)
⊢ False
state_after: case intro.intro
p q : ℚ
s t : Set ℚ
H : (cocompact ℚ).IsCountablyGenerated
x : ℕ → ℚ
hxc : Tendsto x atTop (cocompact ℚ)
hx0 : Tendsto x atTop (𝓝 0)
⊢ False

tactic: obtain ⟨n, hn⟩ : ∃ n : ℕ, x n ∉ insert (0 : ℚ) (range x) :=
  (hxc.eventually hx0.isCompact_insert_range.compl_mem_cocompact).exists
state_before: case intro.intro
p q : ℚ
s t : Set ℚ
H : (cocompact ℚ).IsCountablyGenerated
x : ℕ → ℚ
hxc : Tendsto x atTop (cocompact ℚ)
hx0 : Tendsto x atTop (𝓝 0)
⊢ False
state_after: case intro.intro.intro
p q : ℚ
s t : Set ℚ
H : (cocompact ℚ).IsCountablyGenerated
x : ℕ → ℚ
hxc : Tendsto x atTop (cocompact ℚ)
hx0 : Tendsto x atTop (𝓝 0)
n : ℕ
hn : x n ∉ insert 0 (range x)
⊢ False

tactic: exact hn (Or.inr ⟨n, rfl⟩)
state_before: case intro.intro.intro
p q : ℚ
s t : Set ℚ
H : (cocompact ℚ).IsCountablyGenerated
x : ℕ → ℚ
hxc : Tendsto x atTop (cocompact ℚ)
hx0 : Tendsto x atTop (𝓝 0)
n : ℕ
hn : x n ∉ insert 0 (range x)
⊢ False
state_after: no goals
Theorem: groupCohomology.twoCocycles_ρ_map_inv_sub_map_inv
File: Mathlib/RepresentationTheory/GroupCohomology/LowDegree.lean

tactic: have := (mem_twoCocycles_iff f.1).1 f.2 g g⁻¹ g
state_before: k G : Type u
inst✝¹ : CommRing k
inst✝ : Group G
A : Rep k G
f : ↥(twoCocycles A)
g : G
⊢ (A.ρ g) (↑f (g⁻¹, g)) - ↑f (g, g⁻¹) = ↑f (1, 1) - ↑f (g, 1)
state_after: k G : Type u
inst✝¹ : CommRing k
inst✝ : Group G
A : Rep k G
f : ↥(twoCocycles A)
g : G
this : ↑f (g * g⁻¹, g) + ↑f (g, g⁻¹) = (A.ρ g) (↑f (g⁻¹, g)) + ↑f (g, g⁻¹ * g)
⊢ (A.ρ g) (↑f (g⁻¹, g)) - ↑f (g, g⁻¹) = ↑f (1, 1) - ↑f (g, 1)

tactic: simp only [mul_right_inv, mul_left_inv, twoCocycles_map_one_fst _ g]
  at this
state_before: k G : Type u
inst✝¹ : CommRing k
inst✝ : Group G
A : Rep k G
f : ↥(twoCocycles A)
g : G
this : ↑f (g * g⁻¹, g) + ↑f (g, g⁻¹) = (A.ρ g) (↑f (g⁻¹, g)) + ↑f (g, g⁻¹ * g)
⊢ (A.ρ g) (↑f (g⁻¹, g)) - ↑f (g, g⁻¹) = ↑f (1, 1) - ↑f (g, 1)
state_after: k G : Type u
inst✝¹ : CommRing k
inst✝ : Group G
A : Rep k G
f : ↥(twoCocycles A)
g : G
this : ↑f (1, 1) + ↑f (g, g⁻¹) = (A.ρ g) (↑f (g⁻¹, g)) + ↑f (g, 1)
⊢ (A.ρ g) (↑f (g⁻¹, g)) - ↑f (g, g⁻¹) = ↑f (1, 1) - ↑f (g, 1)

tactic: exact sub_eq_sub_iff_add_eq_add.2 this.symm
state_before: k G : Type u
inst✝¹ : CommRing k
inst✝ : Group G
A : Rep k G
f : ↥(twoCocycles A)
g : G
this : ↑f (1, 1) + ↑f (g, g⁻¹) = (A.ρ g) (↑f (g⁻¹, g)) + ↑f (g, 1)
⊢ (A.ρ g) (↑f (g⁻¹, g)) - ↑f (g, g⁻¹) = ↑f (1, 1) - ↑f (g, 1)
state_after: no goals
Theorem: AddSubmonoid.mem_closure_singleton
File: Mathlib/Algebra/Group/Submonoid/Membership.lean

tactic: rw [closure_singleton_eq, AddMonoidHom.mem_mrange]
state_before: M : Type u_1
A : Type u_2
B : Type u_3
inst✝ : AddMonoid A
x y : A
⊢ y ∈ closure {x} ↔ ∃ n, n • x = y
state_after: M : Type u_1
A : Type u_2
B : Type u_3
inst✝ : AddMonoid A
x y : A
⊢ (∃ x_1, ((multiplesHom A) x) x_1 = y) ↔ ∃ n, n • x = y

tactic: rfl
state_before: M : Type u_1
A : Type u_2
B : Type u_3
inst✝ : AddMonoid A
x y : A
⊢ (∃ x_1, ((multiplesHom A) x) x_1 = y) ↔ ∃ n, n • x = y
state_after: no goals
Theorem: SimpleGraph.neighborSet_snd_subgraphOfAdj
File: Mathlib/Combinatorics/SimpleGraph/Subgraph.lean

tactic: rw [subgraphOfAdj_symm hvw.symm]
state_before: ι : Sort u_1
V : Type u
W : Type v
G : SimpleGraph V
G' : SimpleGraph W
v w : V
hvw : G.Adj v w
⊢ (G.subgraphOfAdj hvw).neighborSet w = {v}
state_after: ι : Sort u_1
V : Type u
W : Type v
G : SimpleGraph V
G' : SimpleGraph W
v w : V
hvw : G.Adj v w
⊢ (G.subgraphOfAdj ⋯).neighborSet w = {v}

tactic: exact neighborSet_fst_subgraphOfAdj hvw.symm
state_before: ι : Sort u_1
V : Type u
W : Type v
G : SimpleGraph V
G' : SimpleGraph W
v w : V
hvw : G.Adj v w
⊢ (G.subgraphOfAdj ⋯).neighborSet w = {v}
state_after: no goals
Theorem: List.toFinsupp_singleton
File: Mathlib/Data/List/ToFinsupp.lean

tactic: ext ⟨_ | i⟩ <;> simp [Finsupp.single_apply, (Nat.zero_lt_succ _).ne]
state_before: M : Type u_1
inst✝² : Zero M
l : List M
inst✝¹ : DecidablePred fun x => l.getD x 0 ≠ 0
n : ℕ
x : M
inst✝ : DecidablePred fun x_1 => [x].getD x_1 0 ≠ 0
⊢ [x].toFinsupp = Finsupp.single 0 x
state_after: no goals
Theorem: Int.le_add_iff_lt_of_dvd_sub
File: Mathlib/Data/Int/Defs.lean

tactic: rw [Int.add_le_iff_le_sub, ← Int.sub_pos, le_iff_pos_of_dvd ha hab]
state_before: a b c d m n : ℤ
ha : 0 < a
hab : a ∣ c - b
⊢ a + b ≤ c ↔ b < c
state_after: no goals
Theorem: Polynomial.natDegree_add_le_iff_left
File: Mathlib/Algebra/Polynomial/Degree/Lemmas.lean

tactic: refine ⟨fun h => ?_, fun h => natDegree_add_le_of_degree_le h qn⟩
state_before: R : Type u
S : Type v
ι : Type w
a b : R
m n✝ : ℕ
inst✝ : Semiring R
p✝ q✝ r : R[X]
n : ℕ
p q : R[X]
qn : q.natDegree ≤ n
⊢ (p + q).natDegree ≤ n ↔ p.natDegree ≤ n
state_after: R : Type u
S : Type v
ι : Type w
a b : R
m n✝ : ℕ
inst✝ : Semiring R
p✝ q✝ r : R[X]
n : ℕ
p q : R[X]
qn : q.natDegree ≤ n
h : (p + q).natDegree ≤ n
⊢ p.natDegree ≤ n

tactic: refine natDegree_le_iff_coeff_eq_zero.mpr fun m hm => ?_
state_before: R : Type u
S : Type v
ι : Type w
a b : R
m n✝ : ℕ
inst✝ : Semiring R
p✝ q✝ r : R[X]
n : ℕ
p q : R[X]
qn : q.natDegree ≤ n
h : (p + q).natDegree ≤ n
⊢ p.natDegree ≤ n
state_after: R : Type u
S : Type v
ι : Type w
a b : R
m✝ n✝ : ℕ
inst✝ : Semiring R
p✝ q✝ r : R[X]
n : ℕ
p q : R[X]
qn : q.natDegree ≤ n
h : (p + q).natDegree ≤ n
m : ℕ
hm : n < m
⊢ p.coeff m = 0

tactic: convert natDegree_le_iff_coeff_eq_zero.mp h m hm using 1
state_before: R : Type u
S : Type v
ι : Type w
a b : R
m✝ n✝ : ℕ
inst✝ : Semiring R
p✝ q✝ r : R[X]
n : ℕ
p q : R[X]
qn : q.natDegree ≤ n
h : (p + q).natDegree ≤ n
m : ℕ
hm : n < m
⊢ p.coeff m = 0
state_after: case h.e'_2
R : Type u
S : Type v
ι : Type w
a b : R
m✝ n✝ : ℕ
inst✝ : Semiring R
p✝ q✝ r : R[X]
n : ℕ
p q : R[X]
qn : q.natDegree ≤ n
h : (p + q).natDegree ≤ n
m : ℕ
hm : n < m
⊢ p.coeff m = (p + q).coeff m

tactic: rw [coeff_add, natDegree_le_iff_coeff_eq_zero.mp qn _ hm, add_zero]
state_before: case h.e'_2
R : Type u
S : Type v
ι : Type w
a b : R
m✝ n✝ : ℕ
inst✝ : Semiring R
p✝ q✝ r : R[X]
n : ℕ
p q : R[X]
qn : q.natDegree ≤ n
h : (p + q).natDegree ≤ n
m : ℕ
hm : n < m
⊢ p.coeff m = (p + q).coeff m
state_after: no goals
Theorem: Multiset.Ico_filter_lt
File: Mathlib/Order/Interval/Multiset.lean

tactic: rw [Ico, Ico, ← Finset.filter_val, Finset.Ico_filter_lt]
state_before: α : Type u_1
inst✝¹ : LinearOrder α
inst✝ : LocallyFiniteOrder α
a✝ b✝ c✝ d a b c : α
⊢ filter (fun x => x < c) (Ico a b) = Ico a (min b c)
state_after: no goals
Theorem: Fin.lt_last_iff_ne_last
File: Mathlib/Data/Fin/Basic.lean

tactic: simp [Fin.lt_iff_le_and_ne, le_last]
state_before: n m : ℕ
a : Fin (n + 1)
⊢ a < last n ↔ a ≠ last n
state_after: no goals
Theorem: MeasureTheory.JordanDecomposition.coe_smul
File: Mathlib/MeasureTheory/Decomposition/Jordan.lean

tactic: rw [real_smul_def, if_pos (NNReal.coe_nonneg r), Real.toNNReal_coe]
state_before: α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
j : JordanDecomposition α
r : ℝ≥0
⊢ ↑r • j = r • j
state_after: no goals
Theorem: IsCompact.mul_closedBall
File: Mathlib/Analysis/Normed/Group/Pointwise.lean

tactic: rw [← smul_closedBall_one, mul_smul_comm, hs.mul_closedBall_one hδ]
state_before: E : Type u_1
inst✝ : SeminormedCommGroup E
ε δ : ℝ
s t : Set E
x✝ y : E
hs : IsCompact s
hδ : 0 ≤ δ
x : E
⊢ s * closedBall x δ = x • cthickening δ s
state_after: no goals
Theorem: Matroid.ExchangeProperty.encard_base_eq
File: Mathlib/Data/Matroid/Basic.lean

tactic: rw [← encard_diff_add_encard_inter B₁ B₂, exch.encard_diff_eq hB₁ hB₂, inter_comm,
     encard_diff_add_encard_inter]
state_before: α : Type u_1
M : Matroid α
Base : Set α → Prop
exch : ExchangeProperty Base
B₁ B₂ : Set α
hB₁ : Base B₁
hB₂ : Base B₂
⊢ B₁.encard = B₂.encard
state_after: no goals
Theorem: riemannZeta_two
File: Mathlib/NumberTheory/LSeries/HurwitzZetaValues.lean

tactic: convert congr_arg ((↑) : ℝ → ℂ) hasSum_zeta_two.tsum_eq
state_before: ⊢ riemannZeta 2 = ↑π ^ 2 / 6
state_after: case h.e'_2

⊢ riemannZeta 2 = ↑(∑' (b : ℕ), 1 / ↑b ^ 2)

case h.e'_3

⊢ ↑π ^ 2 / 6 = ↑(π ^ 2 / 6)

tactic: rw [← Nat.cast_two, zeta_nat_eq_tsum_of_gt_one one_lt_two]
state_before: case h.e'_2

⊢ riemannZeta 2 = ↑(∑' (b : ℕ), 1 / ↑b ^ 2)
state_after: case h.e'_2

⊢ ∑' (n : ℕ), 1 / ↑n ^ 2 = ↑(∑' (b : ℕ), 1 / ↑b ^ 2)

tactic: simp only [push_cast]
state_before: case h.e'_2

⊢ ∑' (n : ℕ), 1 / ↑n ^ 2 = ↑(∑' (b : ℕ), 1 / ↑b ^ 2)
state_after: no goals

tactic: norm_cast
state_before: case h.e'_3

⊢ ↑π ^ 2 / 6 = ↑(π ^ 2 / 6)
state_after: no goals
Theorem: Finset.Iio_mul_Iic_subset'
File: Mathlib/Data/Finset/Pointwise/Interval.lean

tactic: simpa using Set.Iio_mul_Iic_subset' _ _
state_before: α : Type u_1
inst✝⁵ : Mul α
inst✝⁴ : PartialOrder α
inst✝³ : DecidableEq α
inst✝² : CovariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x < x_1
inst✝¹ : CovariantClass α α (Function.swap HMul.hMul) LT.lt
inst✝ : LocallyFiniteOrderBot α
a b : α
⊢ ↑(Iio a * Iic b) ⊆ ↑(Iio (a * b))
state_after: no goals