1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: ConvexOn.map_sum_le
File: Mathlib/Analysis/Convex/Jensen.lean

tactic: simpa only [centerMass, h₁, inv_one, one_smul] using
  hf.map_centerMass_le h₀ (h₁.symm ▸ zero_lt_one) hmem
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
β : Type u_4
ι : Type u_5
inst✝⁵ : LinearOrderedField 𝕜
inst✝⁴ : AddCommGroup E
inst✝³ : OrderedAddCommGroup β
inst✝² : Module 𝕜 E
inst✝¹ : Module 𝕜 β
inst✝ : OrderedSMul 𝕜 β
s : Set E
f : E → β
t : Finset ι
w : ι → 𝕜
p : ι → E
v : 𝕜
q : E
hf : ConvexOn 𝕜 s f
h₀ : ∀ i ∈ t, 0 ≤ w i
h₁ : ∑ i ∈ t, w i = 1
hmem : ∀ i ∈ t, p i ∈ s
⊢ f (∑ i ∈ t, w i • p i) ≤ ∑ i ∈ t, w i • f (p i)
state_after: no goals
Theorem: MeasureTheory.Measure.haar.mem_prehaar_empty
File: Mathlib/MeasureTheory/Measure/Haar/Basic.lean

tactic: simp only [haarProduct, Set.pi, forall_prop_of_true, mem_univ, mem_setOf_eq]
state_before: G : Type u_1
inst✝¹ : Group G
inst✝ : TopologicalSpace G
K₀ : Set G
f : Compacts G → ℝ
⊢ f ∈ haarProduct K₀ ↔ ∀ (K : Compacts G), f K ∈ Icc 0 ↑(index (↑K) K₀)
state_after: no goals
Theorem: FintypeCat.hom_ext
File: Mathlib/CategoryTheory/FintypeCat.lean

tactic: funext
state_before: X Y : FintypeCat
f g : X ⟶ Y
h : ∀ (x : ↑X), f x = g x
⊢ f = g
state_after: case h
X Y : FintypeCat
f g : X ⟶ Y
h : ∀ (x : ↑X), f x = g x
x✝ : ↑X
⊢ f x✝ = g x✝

tactic: apply h
state_before: case h
X Y : FintypeCat
f g : X ⟶ Y
h : ∀ (x : ↑X), f x = g x
x✝ : ↑X
⊢ f x✝ = g x✝
state_after: no goals
Theorem: mul_right_surjective₀
File: Mathlib/Algebra/GroupWithZero/Basic.lean

tactic: simp [mul_assoc, inv_mul_cancel h]
state_before: α : Type u_1
M₀ : Type u_2
G₀ : Type u_3
M₀' : Type u_4
G₀' : Type u_5
F : Type u_6
F' : Type u_7
inst✝ : GroupWithZero G₀
a✝ b c a : G₀
h : a ≠ 0
g : G₀
⊢ (fun g => g * a) (g * a⁻¹) = g
state_after: no goals
Theorem: inf_sdiff_right_comm
File: Mathlib/Order/BooleanAlgebra.lean

tactic: rw [inf_comm x, inf_comm, inf_sdiff_assoc]
state_before: α : Type u
β : Type u_1
w x y z : α
inst✝ : GeneralizedBooleanAlgebra α
⊢ x \ z ⊓ y = (x ⊓ y) \ z
state_after: no goals
Theorem: bernoulliFun_eval_one
File: Mathlib/NumberTheory/ZetaValues.lean

tactic: rw [bernoulliFun, bernoulliFun_eval_zero, Polynomial.eval_one_map, Polynomial.bernoulli_eval_one]
state_before: k : ℕ
⊢ bernoulliFun k 1 = bernoulliFun k 0 + if k = 1 then 1 else 0
state_after: k : ℕ
⊢ (algebraMap ℚ ℝ) (bernoulli' k) = ↑(bernoulli k) + if k = 1 then 1 else 0

tactic: split_ifs with h
state_before: k : ℕ
⊢ (algebraMap ℚ ℝ) (bernoulli' k) = ↑(bernoulli k) + if k = 1 then 1 else 0
state_after: case pos
k : ℕ
h : k = 1
⊢ (algebraMap ℚ ℝ) (bernoulli' k) = ↑(bernoulli k) + 1

case neg
k : ℕ
h : ¬k = 1
⊢ (algebraMap ℚ ℝ) (bernoulli' k) = ↑(bernoulli k) + 0

tactic: rw [h, bernoulli_one, bernoulli'_one, eq_ratCast]
state_before: case pos
k : ℕ
h : k = 1
⊢ (algebraMap ℚ ℝ) (bernoulli' k) = ↑(bernoulli k) + 1
state_after: case pos
k : ℕ
h : k = 1
⊢ ↑(1 / 2) = ↑(-1 / 2) + 1

tactic: push_cast
state_before: case pos
k : ℕ
h : k = 1
⊢ ↑(1 / 2) = ↑(-1 / 2) + 1
state_after: case pos
k : ℕ
h : k = 1
⊢ 1 / 2 = -1 / 2 + 1

tactic: ring
state_before: case pos
k : ℕ
h : k = 1
⊢ 1 / 2 = -1 / 2 + 1
state_after: no goals

tactic: rw [bernoulli_eq_bernoulli'_of_ne_one h, add_zero, eq_ratCast]
state_before: case neg
k : ℕ
h : ¬k = 1
⊢ (algebraMap ℚ ℝ) (bernoulli' k) = ↑(bernoulli k) + 0
state_after: no goals
Theorem: sub_self_div_two
File: Mathlib/Algebra/Order/Field/Basic.lean

tactic: suffices a / 2 + a / 2 - a / 2 = a / 2 by rwa [add_halves] at this
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
inst✝ : LinearOrderedField α
a✝ b c d : α
n : ℤ
a : α
⊢ a - a / 2 = a / 2
state_after: ι : Type u_1
α : Type u_2
β : Type u_3
inst✝ : LinearOrderedField α
a✝ b c d : α
n : ℤ
a : α
⊢ a / 2 + a / 2 - a / 2 = a / 2

tactic: rw [add_sub_cancel_right]
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
inst✝ : LinearOrderedField α
a✝ b c d : α
n : ℤ
a : α
⊢ a / 2 + a / 2 - a / 2 = a / 2
state_after: no goals

tactic: rwa [add_halves] at this
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
inst✝ : LinearOrderedField α
a✝ b c d : α
n : ℤ
a : α
this : a / 2 + a / 2 - a / 2 = a / 2
⊢ a - a / 2 = a / 2
state_after: no goals
Theorem: factorization_eq_count
File: Mathlib/RingTheory/UniqueFactorizationDomain.lean

tactic: simp [factorization]
state_before: α : Type u_1
inst✝³ : CancelCommMonoidWithZero α
inst✝² : UniqueFactorizationMonoid α
inst✝¹ : NormalizationMonoid α
inst✝ : DecidableEq α
n p : α
⊢ (factorization n) p = Multiset.count p (normalizedFactors n)
state_after: no goals
Theorem: Stream'.WSeq.LiftRel.symm
File: Mathlib/Data/Seq/WSeq.lean

tactic: rwa [LiftRel.swap, H.swap_eq] at h
state_before: α : Type u
β : Type v
γ : Type w
R : α → α → Prop
H : Symmetric R
s1 s2 : WSeq α
h : Function.swap (LiftRel R) s2 s1
⊢ LiftRel R s2 s1
state_after: no goals
Theorem: RCLike.im_ofReal_mul
File: Mathlib/Analysis/RCLike/Basic.lean

tactic: simp only [add_zero, ofReal_im, zero_mul, ofReal_re, mul_im]
state_before: K : Type u_1
E : Type u_2
inst✝ : RCLike K
r : ℝ
z : K
⊢ im (↑r * z) = r * im z
state_after: no goals
Theorem: IsBezout.gcd_eq_sum
File: Mathlib/RingTheory/PrincipalIdealDomain.lean

tactic: rw [← span_gcd]
state_before: R : Type u
M : Type v
inst✝¹ : CommRing R
x y z : R
inst✝ : IsPrincipal (Ideal.span {x, y})
⊢ gcd x y ∈ Ideal.span {x, y}
state_after: R : Type u
M : Type v
inst✝¹ : CommRing R
x y z : R
inst✝ : IsPrincipal (Ideal.span {x, y})
⊢ gcd x y ∈ Ideal.span {gcd x y}

tactic: apply Ideal.subset_span
state_before: R : Type u
M : Type v
inst✝¹ : CommRing R
x y z : R
inst✝ : IsPrincipal (Ideal.span {x, y})
⊢ gcd x y ∈ Ideal.span {gcd x y}
state_after: case a
R : Type u
M : Type v
inst✝¹ : CommRing R
x y z : R
inst✝ : IsPrincipal (Ideal.span {x, y})
⊢ gcd x y ∈ {gcd x y}

tactic: simp
state_before: case a
R : Type u
M : Type v
inst✝¹ : CommRing R
x y z : R
inst✝ : IsPrincipal (Ideal.span {x, y})
⊢ gcd x y ∈ {gcd x y}
state_after: no goals
Theorem: Cardinal.lift_iSup_le_lift_iSup
File: Mathlib/SetTheory/Cardinal/Basic.lean

tactic: rw [lift_iSup hf, lift_iSup hf']
state_before: α β : Type u
ι : Type v
ι' : Type v'
f : ι → Cardinal.{w}
f' : ι' → Cardinal.{w'}
hf : BddAbove (range f)
hf' : BddAbove (range f')
g : ι → ι'
h : ∀ (i : ι), lift.{w', w} (f i) ≤ lift.{w, w'} (f' (g i))
⊢ lift.{w', w} (iSup f) ≤ lift.{w, w'} (iSup f')
state_after: α β : Type u
ι : Type v
ι' : Type v'
f : ι → Cardinal.{w}
f' : ι' → Cardinal.{w'}
hf : BddAbove (range f)
hf' : BddAbove (range f')
g : ι → ι'
h : ∀ (i : ι), lift.{w', w} (f i) ≤ lift.{w, w'} (f' (g i))
⊢ ⨆ i, lift.{w', w} (f i) ≤ ⨆ i, lift.{w, w'} (f' i)

tactic: exact ciSup_mono' (bddAbove_range_comp.{_,_,w} hf' _) fun i => ⟨_, h i⟩
state_before: α β : Type u
ι : Type v
ι' : Type v'
f : ι → Cardinal.{w}
f' : ι' → Cardinal.{w'}
hf : BddAbove (range f)
hf' : BddAbove (range f')
g : ι → ι'
h : ∀ (i : ι), lift.{w', w} (f i) ≤ lift.{w, w'} (f' (g i))
⊢ ⨆ i, lift.{w', w} (f i) ≤ ⨆ i, lift.{w, w'} (f' i)
state_after: no goals
Theorem: CategoryTheory.MonoidalCategory.whiskerRight_tensor_symm
File: Mathlib/CategoryTheory/Monoidal/Category.lean

tactic: simp
state_before: C✝ : Type u
𝒞 : Category.{v, u} C✝
inst✝² : MonoidalCategory C✝
C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : MonoidalCategory C
U V W X✝ Y✝ Z✝ X X' : C
f : X ⟶ X'
Y Z : C
⊢ f ▷ Y ▷ Z = (α_ X Y Z).hom ≫ f ▷ (Y ⊗ Z) ≫ (α_ X' Y Z).inv
state_after: no goals
Theorem: MeasureTheory.SimpleFunc.lintegral_sum
File: Mathlib/MeasureTheory/Function/SimpleFunc.lean

tactic: simp only [lintegral, Measure.sum_apply, f.measurableSet_preimage, ← Finset.tsum_subtype, ←
  ENNReal.tsum_mul_left]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m✝ : MeasurableSpace α
μ✝ ν : Measure α
m : MeasurableSpace α
ι : Type u_5
f : α →ₛ ℝ≥0∞
μ : ι → Measure α
⊢ f.lintegral (Measure.sum μ) = ∑' (i : ι), f.lintegral (μ i)
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m✝ : MeasurableSpace α
μ✝ ν : Measure α
m : MeasurableSpace α
ι : Type u_5
f : α →ₛ ℝ≥0∞
μ : ι → Measure α
⊢ ∑' (x : { x // x ∈ f.range }) (i : ι), ↑x * (μ i) (↑f ⁻¹' {↑x}) =
    ∑' (i : ι) (x : { x // x ∈ f.range }), ↑x * (μ i) (↑f ⁻¹' {↑x})

tactic: apply ENNReal.tsum_comm
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m✝ : MeasurableSpace α
μ✝ ν : Measure α
m : MeasurableSpace α
ι : Type u_5
f : α →ₛ ℝ≥0∞
μ : ι → Measure α
⊢ ∑' (x : { x // x ∈ f.range }) (i : ι), ↑x * (μ i) (↑f ⁻¹' {↑x}) =
    ∑' (i : ι) (x : { x // x ∈ f.range }), ↑x * (μ i) (↑f ⁻¹' {↑x})
state_after: no goals
Theorem: HurwitzZeta.hasSum_int_hurwitzZetaEven
File: Mathlib/NumberTheory/LSeries/HurwitzZetaEven.lean

tactic: rw [hurwitzZetaEven, Function.update_noteq (ne_zero_of_one_lt_re hs)]
state_before: a : ℝ
s : ℂ
hs : 1 < s.re
⊢ HasSum (fun n => 1 / ↑|↑n + a| ^ s / 2) (hurwitzZetaEven (↑a) s)
state_after: a : ℝ
s : ℂ
hs : 1 < s.re
⊢ HasSum (fun n => 1 / ↑|↑n + a| ^ s / 2) (completedHurwitzZetaEven (↑a) s / s.Gammaℝ)

tactic: have := (hasSum_int_completedHurwitzZetaEven a hs).div_const (Gammaℝ s)
state_before: a : ℝ
s : ℂ
hs : 1 < s.re
⊢ HasSum (fun n => 1 / ↑|↑n + a| ^ s / 2) (completedHurwitzZetaEven (↑a) s / s.Gammaℝ)
state_after: a : ℝ
s : ℂ
hs : 1 < s.re
this : HasSum (fun i => s.Gammaℝ / ↑|↑i + a| ^ s / 2 / s.Gammaℝ) (completedHurwitzZetaEven (↑a) s / s.Gammaℝ)
⊢ HasSum (fun n => 1 / ↑|↑n + a| ^ s / 2) (completedHurwitzZetaEven (↑a) s / s.Gammaℝ)

tactic: exact this.congr_fun fun n ↦ by simp only [div_right_comm _ _ (Gammaℝ _),
  div_self (Gammaℝ_ne_zero_of_re_pos (zero_lt_one.trans hs))]
state_before: a : ℝ
s : ℂ
hs : 1 < s.re
this : HasSum (fun i => s.Gammaℝ / ↑|↑i + a| ^ s / 2 / s.Gammaℝ) (completedHurwitzZetaEven (↑a) s / s.Gammaℝ)
⊢ HasSum (fun n => 1 / ↑|↑n + a| ^ s / 2) (completedHurwitzZetaEven (↑a) s / s.Gammaℝ)
state_after: no goals

tactic: simp only [div_right_comm _ _ (Gammaℝ _),
div_self (Gammaℝ_ne_zero_of_re_pos (zero_lt_one.trans hs))]
state_before: a : ℝ
s : ℂ
hs : 1 < s.re
this : HasSum (fun i => s.Gammaℝ / ↑|↑i + a| ^ s / 2 / s.Gammaℝ) (completedHurwitzZetaEven (↑a) s / s.Gammaℝ)
n : ℤ
⊢ 1 / ↑|↑n + a| ^ s / 2 = s.Gammaℝ / ↑|↑n + a| ^ s / 2 / s.Gammaℝ
state_after: no goals
Theorem: CategoryTheory.Presieve.ofArrows_pUnit
File: Mathlib/CategoryTheory/Sites/Sieves.lean

tactic: funext Y
state_before: C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
D : Type u₂
inst✝ : Category.{v₂, u₂} D
F : C ⥤ D
X Y Z : C
f : Y ⟶ X
⊢ (ofArrows (fun x => Y) fun x => f) = singleton f
state_after: case h
C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
D : Type u₂
inst✝ : Category.{v₂, u₂} D
F : C ⥤ D
X Y✝ Z : C
f : Y✝ ⟶ X
Y : C
⊢ (ofArrows (fun x => Y✝) fun x => f) = singleton f

tactic: ext g
state_before: case h
C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
D : Type u₂
inst✝ : Category.{v₂, u₂} D
F : C ⥤ D
X Y✝ Z : C
f : Y✝ ⟶ X
Y : C
⊢ (ofArrows (fun x => Y✝) fun x => f) = singleton f
state_after: case h.h
C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
D : Type u₂
inst✝ : Category.{v₂, u₂} D
F : C ⥤ D
X Y✝ Z : C
f : Y✝ ⟶ X
Y : C
g : Y ⟶ X
⊢ (g ∈ ofArrows (fun x => Y✝) fun x => f) ↔ g ∈ singleton f

tactic: constructor
state_before: case h.h
C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
D : Type u₂
inst✝ : Category.{v₂, u₂} D
F : C ⥤ D
X Y✝ Z : C
f : Y✝ ⟶ X
Y : C
g : Y ⟶ X
⊢ (g ∈ ofArrows (fun x => Y✝) fun x => f) ↔ g ∈ singleton f
state_after: case h.h.mp
C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
D : Type u₂
inst✝ : Category.{v₂, u₂} D
F : C ⥤ D
X Y✝ Z : C
f : Y✝ ⟶ X
Y : C
g : Y ⟶ X
⊢ (g ∈ ofArrows (fun x => Y✝) fun x => f) → g ∈ singleton f

case h.h.mpr
C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
D : Type u₂
inst✝ : Category.{v₂, u₂} D
F : C ⥤ D
X Y✝ Z : C
f : Y✝ ⟶ X
Y : C
g : Y ⟶ X
⊢ g ∈ singleton f → g ∈ ofArrows (fun x => Y✝) fun x => f

tactic: rintro ⟨_⟩
state_before: case h.h.mp
C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
D : Type u₂
inst✝ : Category.{v₂, u₂} D
F : C ⥤ D
X Y✝ Z : C
f : Y✝ ⟶ X
Y : C
g : Y ⟶ X
⊢ (g ∈ ofArrows (fun x => Y✝) fun x => f) → g ∈ singleton f
state_after: case h.h.mp.mk
C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
D : Type u₂
inst✝ : Category.{v₂, u₂} D
F : C ⥤ D
X Y✝ Z : C
f : Y✝ ⟶ X
Y : C
i✝ : PUnit.{u_1 + 1}
⊢ f ∈ singleton f

tactic: apply singleton.mk
state_before: case h.h.mp.mk
C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
D : Type u₂
inst✝ : Category.{v₂, u₂} D
F : C ⥤ D
X Y✝ Z : C
f : Y✝ ⟶ X
Y : C
i✝ : PUnit.{u_1 + 1}
⊢ f ∈ singleton f
state_after: no goals

tactic: rintro ⟨_⟩
state_before: case h.h.mpr
C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
D : Type u₂
inst✝ : Category.{v₂, u₂} D
F : C ⥤ D
X Y✝ Z : C
f : Y✝ ⟶ X
Y : C
g : Y ⟶ X
⊢ g ∈ singleton f → g ∈ ofArrows (fun x => Y✝) fun x => f
state_after: case h.h.mpr.mk
C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
D : Type u₂
inst✝ : Category.{v₂, u₂} D
F : C ⥤ D
X Y✝ Z : C
f : Y✝ ⟶ X
Y : C
⊢ f ∈ ofArrows (fun x => Y✝) fun x => f

tactic: exact ofArrows.mk PUnit.unit
state_before: case h.h.mpr.mk
C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
D : Type u₂
inst✝ : Category.{v₂, u₂} D
F : C ⥤ D
X Y✝ Z : C
f : Y✝ ⟶ X
Y : C
⊢ f ∈ ofArrows (fun x => Y✝) fun x => f
state_after: no goals
Theorem: Real.continuousOn_log
File: Mathlib/Analysis/SpecialFunctions/Log/Basic.lean

tactic: simp (config := { unfoldPartialApp := true }) only [continuousOn_iff_continuous_restrict,
  restrict]
state_before: x y : ℝ
⊢ ContinuousOn log {0}ᶜ
state_after: x y : ℝ
⊢ Continuous fun x => log ↑x

tactic: conv in log _ => rw [log_of_ne_zero (show (x : ℝ) ≠ 0 from x.2)]
state_before: x y : ℝ
⊢ Continuous fun x => log ↑x
state_after: x y : ℝ
⊢ Continuous fun x => expOrderIso.symm ⟨|↑x|, ⋯⟩

tactic: exact expOrderIso.symm.continuous.comp (continuous_subtype_val.norm.subtype_mk _)
state_before: x y : ℝ
⊢ Continuous fun x => expOrderIso.symm ⟨|↑x|, ⋯⟩
state_after: no goals
Theorem: ContDiffWithinAt.div_const
File: Mathlib/Analysis/Calculus/ContDiff/Basic.lean

tactic: simpa only [div_eq_mul_inv] using hf.mul contDiffWithinAt_const
state_before: 𝕜 : Type u_1
inst✝¹⁶ : NontriviallyNormedField 𝕜
D : Type uD
inst✝¹⁵ : NormedAddCommGroup D
inst✝¹⁴ : NormedSpace 𝕜 D
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 u_2
inst✝⁷ : NormedAddCommGroup X
inst✝⁶ : NormedSpace 𝕜 X
s s₁ t u : Set E
f✝ f₁ : E → F
g : F → G
x x₀ : E
c✝ : F
b : E × F → G
m n✝ : ℕ∞
p : E → FormalMultilinearSeries 𝕜 E F
𝔸 : Type u_3
𝔸' : Type u_4
ι : Type u_5
𝕜' : Type u_6
inst✝⁵ : NormedRing 𝔸
inst✝⁴ : NormedAlgebra 𝕜 𝔸
inst✝³ : NormedCommRing 𝔸'
inst✝² : NormedAlgebra 𝕜 𝔸'
inst✝¹ : NormedField 𝕜'
inst✝ : NormedAlgebra 𝕜 𝕜'
f : E → 𝕜'
n : ℕ∞
hf : ContDiffWithinAt 𝕜 n f s x
c : 𝕜'
⊢ ContDiffWithinAt 𝕜 n (fun x => f x / c) s x
state_after: no goals
Theorem: Rat.mk_denom_ne_zero_of_ne_zero
File: Mathlib/Data/Rat/Defs.lean

tactic: simpa [this] using hqnd
state_before: q✝ a b c q : ℚ
n d : ℤ
hq : q ≠ 0
hqnd : q = n /. d
this : d = 0
⊢ q = 0
state_after: no goals
Theorem: Rat.exists_eq_mul_div_num_and_eq_mul_div_den
File: Mathlib/Data/Rat/Lemmas.lean

tactic: rw [← Rat.divInt_eq_div]
state_before: n d : ℤ
d_ne_zero : d ≠ 0
⊢ ↑n / ↑d = n /. d
state_after: no goals
Theorem: Polynomial.reflect_sub
File: Mathlib/Algebra/Polynomial/Reverse.lean

tactic: rw [sub_eq_add_neg, sub_eq_add_neg, reflect_add, reflect_neg]
state_before: R : Type u_1
inst✝ : Ring R
f g : R[X]
N : ℕ
⊢ reflect N (f - g) = reflect N f - reflect N g
state_after: no goals
Theorem: MeasureTheory.SimpleFunc.coe_injective
File: Mathlib/MeasureTheory/Function/SimpleFunc.lean

tactic: cases f
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝ : MeasurableSpace α
f g : α →ₛ β
H : ↑f = ↑g
⊢ f = g
state_after: case mk
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝ : MeasurableSpace α
g : α →ₛ β
toFun✝ : α → β
measurableSet_fiber'✝ : ∀ (x : β), MeasurableSet (toFun✝ ⁻¹' {x})
finite_range'✝ : (range toFun✝).Finite
H : ↑{ toFun := toFun✝, measurableSet_fiber' := measurableSet_fiber'✝, finite_range' := finite_range'✝ } = ↑g
⊢ { toFun := toFun✝, measurableSet_fiber' := measurableSet_fiber'✝, finite_range' := finite_range'✝ } = g

tactic: cases g
state_before: case mk
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝ : MeasurableSpace α
g : α →ₛ β
toFun✝ : α → β
measurableSet_fiber'✝ : ∀ (x : β), MeasurableSet (toFun✝ ⁻¹' {x})
finite_range'✝ : (range toFun✝).Finite
H : ↑{ toFun := toFun✝, measurableSet_fiber' := measurableSet_fiber'✝, finite_range' := finite_range'✝ } = ↑g
⊢ { toFun := toFun✝, measurableSet_fiber' := measurableSet_fiber'✝, finite_range' := finite_range'✝ } = g
state_after: case mk.mk
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝ : MeasurableSpace α
toFun✝¹ : α → β
measurableSet_fiber'✝¹ : ∀ (x : β), MeasurableSet (toFun✝¹ ⁻¹' {x})
finite_range'✝¹ : (range toFun✝¹).Finite
toFun✝ : α → β
measurableSet_fiber'✝ : ∀ (x : β), MeasurableSet (toFun✝ ⁻¹' {x})
finite_range'✝ : (range toFun✝).Finite
H :
  ↑{ toFun := toFun✝¹, measurableSet_fiber' := measurableSet_fiber'✝¹, finite_range' := finite_range'✝¹ } =
    ↑{ toFun := toFun✝, measurableSet_fiber' := measurableSet_fiber'✝, finite_range' := finite_range'✝ }
⊢ { toFun := toFun✝¹, measurableSet_fiber' := measurableSet_fiber'✝¹, finite_range' := finite_range'✝¹ } =
    { toFun := toFun✝, measurableSet_fiber' := measurableSet_fiber'✝, finite_range' := finite_range'✝ }

tactic: congr
state_before: case mk.mk
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝ : MeasurableSpace α
toFun✝¹ : α → β
measurableSet_fiber'✝¹ : ∀ (x : β), MeasurableSet (toFun✝¹ ⁻¹' {x})
finite_range'✝¹ : (range toFun✝¹).Finite
toFun✝ : α → β
measurableSet_fiber'✝ : ∀ (x : β), MeasurableSet (toFun✝ ⁻¹' {x})
finite_range'✝ : (range toFun✝).Finite
H :
  ↑{ toFun := toFun✝¹, measurableSet_fiber' := measurableSet_fiber'✝¹, finite_range' := finite_range'✝¹ } =
    ↑{ toFun := toFun✝, measurableSet_fiber' := measurableSet_fiber'✝, finite_range' := finite_range'✝ }
⊢ { toFun := toFun✝¹, measurableSet_fiber' := measurableSet_fiber'✝¹, finite_range' := finite_range'✝¹ } =
    { toFun := toFun✝, measurableSet_fiber' := measurableSet_fiber'✝, finite_range' := finite_range'✝ }
state_after: no goals
Theorem: IsCompact.inf_nhdsSet_eq_biSup
File: Mathlib/Topology/Compactness/Compact.lean

tactic: simp only [inf_comm l, hK.nhdsSet_inf_eq_biSup]
state_before: X : Type u
Y : Type v
ι : Type u_1
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
s t K : Set X
hK : IsCompact K
l : Filter X
⊢ l ⊓ 𝓝ˢ K = ⨆ x ∈ K, l ⊓ 𝓝 x
state_after: no goals
Theorem: Polynomial.map_mapRingHom_evalEval
File: Mathlib/Algebra/Polynomial/Bivariate.lean

tactic: rw [evalEval, ← map_mapRingHom_eval_map_eval, map_C]
state_before: R : Type u_1
S : Type u_2
inst✝¹ : Semiring R
inst✝ : Semiring S
f : R →+* S
p : R[X][Y]
q : R[X]
x y : R
⊢ evalEval (f x) (f y) (map (mapRingHom f) p) = f (evalEval x y p)
state_after: no goals
Theorem: Set.SurjOn.extendDomain
File: Mathlib/Data/Set/Function.lean

tactic: rintro _ ⟨a, ha, rfl⟩
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
π : α → Type u_5
p : β → Prop
inst✝ : DecidablePred p
f : α ≃ Subtype p
g g₁ g₂ : Perm α
s t : Set α
h : SurjOn (⇑g) s t
⊢ SurjOn (⇑(g.extendDomain f)) (Subtype.val ∘ ⇑f '' s) (Subtype.val ∘ ⇑f '' t)
state_after: case intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
π : α → Type u_5
p : β → Prop
inst✝ : DecidablePred p
f : α ≃ Subtype p
g g₁ g₂ : Perm α
s t : Set α
h : SurjOn (⇑g) s t
a : α
ha : a ∈ t
⊢ (Subtype.val ∘ ⇑f) a ∈ ⇑(g.extendDomain f) '' (Subtype.val ∘ ⇑f '' s)

tactic: obtain ⟨b, hb, rfl⟩ := h ha
state_before: case intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
π : α → Type u_5
p : β → Prop
inst✝ : DecidablePred p
f : α ≃ Subtype p
g g₁ g₂ : Perm α
s t : Set α
h : SurjOn (⇑g) s t
a : α
ha : a ∈ t
⊢ (Subtype.val ∘ ⇑f) a ∈ ⇑(g.extendDomain f) '' (Subtype.val ∘ ⇑f '' s)
state_after: case intro.intro.intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
π : α → Type u_5
p : β → Prop
inst✝ : DecidablePred p
f : α ≃ Subtype p
g g₁ g₂ : Perm α
s t : Set α
h : SurjOn (⇑g) s t
b : α
hb : b ∈ s
ha : g b ∈ t
⊢ (Subtype.val ∘ ⇑f) (g b) ∈ ⇑(g.extendDomain f) '' (Subtype.val ∘ ⇑f '' s)

tactic: exact ⟨_, ⟨_, hb, rfl⟩, by simp_rw [Function.comp_apply, extendDomain_apply_image]⟩
state_before: case intro.intro.intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
π : α → Type u_5
p : β → Prop
inst✝ : DecidablePred p
f : α ≃ Subtype p
g g₁ g₂ : Perm α
s t : Set α
h : SurjOn (⇑g) s t
b : α
hb : b ∈ s
ha : g b ∈ t
⊢ (Subtype.val ∘ ⇑f) (g b) ∈ ⇑(g.extendDomain f) '' (Subtype.val ∘ ⇑f '' s)
state_after: no goals

tactic: simp_rw [Function.comp_apply, extendDomain_apply_image]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
π : α → Type u_5
p : β → Prop
inst✝ : DecidablePred p
f : α ≃ Subtype p
g g₁ g₂ : Perm α
s t : Set α
h : SurjOn (⇑g) s t
b : α
hb : b ∈ s
ha : g b ∈ t
⊢ (g.extendDomain f) ((Subtype.val ∘ ⇑f) b) = (Subtype.val ∘ ⇑f) (g b)
state_after: no goals
Theorem: nonempty_oreSet_of_strongRankCondition
File: Mathlib/LinearAlgebra/Dimension/Localization.lean

tactic: by_contra h
state_before: R : Type u_1
inst✝² : Ring R
inst✝¹ : IsDomain R
S : Submonoid R
inst✝ : StrongRankCondition R
⊢ Nonempty (OreLocalization.OreSet R⁰)
state_after: R : Type u_1
inst✝² : Ring R
inst✝¹ : IsDomain R
S : Submonoid R
inst✝ : StrongRankCondition R
h : ¬Nonempty (OreLocalization.OreSet R⁰)
⊢ False

tactic: have := aleph0_le_rank_of_isEmpty_oreSet (not_nonempty_iff.mp h)
state_before: R : Type u_1
inst✝² : Ring R
inst✝¹ : IsDomain R
S : Submonoid R
inst✝ : StrongRankCondition R
h : ¬Nonempty (OreLocalization.OreSet R⁰)
⊢ False
state_after: R : Type u_1
inst✝² : Ring R
inst✝¹ : IsDomain R
S : Submonoid R
inst✝ : StrongRankCondition R
h : ¬Nonempty (OreLocalization.OreSet R⁰)
this : ℵ₀ ≤ Module.rank R R
⊢ False

tactic: rw [rank_self] at this
state_before: R : Type u_1
inst✝² : Ring R
inst✝¹ : IsDomain R
S : Submonoid R
inst✝ : StrongRankCondition R
h : ¬Nonempty (OreLocalization.OreSet R⁰)
this : ℵ₀ ≤ Module.rank R R
⊢ False
state_after: R : Type u_1
inst✝² : Ring R
inst✝¹ : IsDomain R
S : Submonoid R
inst✝ : StrongRankCondition R
h : ¬Nonempty (OreLocalization.OreSet R⁰)
this : ℵ₀ ≤ 1
⊢ False

tactic: exact this.not_lt one_lt_aleph0
state_before: R : Type u_1
inst✝² : Ring R
inst✝¹ : IsDomain R
S : Submonoid R
inst✝ : StrongRankCondition R
h : ¬Nonempty (OreLocalization.OreSet R⁰)
this : ℵ₀ ≤ 1
⊢ False
state_after: no goals
Theorem: ZMod.χ₈'_int_eq_if_mod_eight
File: Mathlib/NumberTheory/LegendreSymbol/ZModChar.lean

tactic: have help :
  ∀ m : ℤ, 0 ≤ m → m < 8 → χ₈' m = if m % 2 = 0 then 0 else if m = 1 ∨ m = 3 then 1 else -1 := by
  decide
state_before: n : ℤ
⊢ χ₈' ↑n = if n % 2 = 0 then 0 else if n % 8 = 1 ∨ n % 8 = 3 then 1 else -1
state_after: n : ℤ
help : ∀ (m : ℤ), 0 ≤ m → m < 8 → χ₈' ↑m = if m % 2 = 0 then 0 else if m = 1 ∨ m = 3 then 1 else -1
⊢ χ₈' ↑n = if n % 2 = 0 then 0 else if n % 8 = 1 ∨ n % 8 = 3 then 1 else -1

tactic: rw [← Int.emod_emod_of_dvd n (by omega : (2 : ℤ) ∣ 8), ← ZMod.intCast_mod n 8]
state_before: n : ℤ
help : ∀ (m : ℤ), 0 ≤ m → m < 8 → χ₈' ↑m = if m % 2 = 0 then 0 else if m = 1 ∨ m = 3 then 1 else -1
⊢ χ₈' ↑n = if n % 2 = 0 then 0 else if n % 8 = 1 ∨ n % 8 = 3 then 1 else -1
state_after: n : ℤ
help : ∀ (m : ℤ), 0 ≤ m → m < 8 → χ₈' ↑m = if m % 2 = 0 then 0 else if m = 1 ∨ m = 3 then 1 else -1
⊢ χ₈' ↑(n % ↑8) = if n % 8 % 2 = 0 then 0 else if n % 8 = 1 ∨ n % 8 = 3 then 1 else -1

tactic: exact help (n % 8) (Int.emod_nonneg n (by omega)) (Int.emod_lt n (by omega))
state_before: n : ℤ
help : ∀ (m : ℤ), 0 ≤ m → m < 8 → χ₈' ↑m = if m % 2 = 0 then 0 else if m = 1 ∨ m = 3 then 1 else -1
⊢ χ₈' ↑(n % ↑8) = if n % 8 % 2 = 0 then 0 else if n % 8 = 1 ∨ n % 8 = 3 then 1 else -1
state_after: no goals

tactic: decide
state_before: n : ℤ
⊢ ∀ (m : ℤ), 0 ≤ m → m < 8 → χ₈' ↑m = if m % 2 = 0 then 0 else if m = 1 ∨ m = 3 then 1 else -1
state_after: no goals

tactic: omega
state_before: n : ℤ
help : ∀ (m : ℤ), 0 ≤ m → m < 8 → χ₈' ↑m = if m % 2 = 0 then 0 else if m = 1 ∨ m = 3 then 1 else -1
⊢ 2 ∣ 8
state_after: no goals

tactic: omega
state_before: n : ℤ
help : ∀ (m : ℤ), 0 ≤ m → m < 8 → χ₈' ↑m = if m % 2 = 0 then 0 else if m = 1 ∨ m = 3 then 1 else -1
⊢ 8 ≠ 0
state_after: no goals