1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: MeasureTheory.AEEqFun.snorm_compMeasurePreserving
File: Mathlib/MeasureTheory/Function/LpSeminorm/Basic.lean

tactic: rw [snorm_congr_ae (g.coeFn_compMeasurePreserving _)]
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
β : Type u_5
mβ : MeasurableSpace β
f : α → β
g✝ : β → E
ν : Measure β
g : β →ₘ[ν] E
hf : MeasurePreserving f μ ν
⊢ snorm (↑(g.compMeasurePreserving f hf)) p μ = snorm (↑g) p ν
state_after: α : 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
β : Type u_5
mβ : MeasurableSpace β
f : α → β
g✝ : β → E
ν : Measure β
g : β →ₘ[ν] E
hf : MeasurePreserving f μ ν
⊢ snorm (↑g ∘ f) p μ = snorm (↑g) p ν

tactic: exact snorm_comp_measurePreserving g.aestronglyMeasurable hf
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
β : Type u_5
mβ : MeasurableSpace β
f : α → β
g✝ : β → E
ν : Measure β
g : β →ₘ[ν] E
hf : MeasurePreserving f μ ν
⊢ snorm (↑g ∘ f) p μ = snorm (↑g) p ν
state_after: no goals
Theorem: CategoryTheory.Limits.biprod.map_lift_mapBiprod
File: Mathlib/CategoryTheory/Limits/Preserves/Shapes/Biproducts.lean

tactic: ext <;> simp [mapBiprod, ← F.map_comp]
state_before: C : Type u₁
inst✝⁶ : Category.{v₁, u₁} C
D : Type u₂
inst✝⁵ : Category.{v₂, u₂} D
inst✝⁴ : HasZeroMorphisms C
inst✝³ : HasZeroMorphisms D
F : C ⥤ D
inst✝² : F.PreservesZeroMorphisms
X Y : C
inst✝¹ : HasBinaryBiproduct X Y
inst✝ : PreservesBinaryBiproduct X Y F
W : C
f : W ⟶ X
g : W ⟶ Y
⊢ F.map (lift f g) ≫ (F.mapBiprod X Y).hom = lift (F.map f) (F.map g)
state_after: no goals
Theorem: hasFDerivWithinAt_iff_hasGradientWithinAt
File: Mathlib/Analysis/Calculus/Gradient/Basic.lean

tactic: rw [hasGradientWithinAt_iff_hasFDerivWithinAt, (toDual 𝕜 F).apply_symm_apply frechet]
state_before: 𝕜 : Type u_1
F : Type u_2
inst✝³ : RCLike 𝕜
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace 𝕜 F
inst✝ : CompleteSpace F
f : F → 𝕜
f' x : F
s✝ : Set F
L : Filter F
frechet : F →L[𝕜] 𝕜
s : Set F
⊢ HasFDerivWithinAt f frechet s x ↔ HasGradientWithinAt f ((toDual 𝕜 F).symm frechet) s x
state_after: no goals
Theorem: nilradical_eq_sInf
File: Mathlib/RingTheory/Nilpotent/Lemmas.lean

tactic: simp_rw [and_iff_right bot_le]
state_before: R✝ : Type u_1
S : Type u_2
x✝ y✝ : R✝
inst✝¹ : CommSemiring R✝
x y : R✝
R : Type u_3
inst✝ : CommSemiring R
⊢ sInf {J | ⊥ ≤ J ∧ J.IsPrime} = sInf {J | J.IsPrime}
state_after: no goals
Theorem: Finset.union_erase_of_mem
File: Mathlib/Data/Finset/Basic.lean

tactic: rw [← insert_erase (mem_union_left t ha), erase_union_distrib, ← insert_union, insert_erase ha]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : DecidableEq α
s t✝ u v : Finset α
a b : α
ha : a ∈ s
t : Finset α
⊢ s ∪ t.erase a = s ∪ t
state_after: no goals
Theorem: Interval.coe_iInf
File: Mathlib/Order/Interval/Basic.lean

tactic: simp [iInf]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Sort u_5
κ : ι → Sort u_6
inst✝¹ : CompleteLattice α
inst✝ : DecidableRel fun x x_1 => x ≤ x_1
f : ι → Interval α
⊢ ↑(⨅ i, f i) = ⋂ i, ↑(f i)
state_after: no goals
Theorem: Polynomial.splits_mul
File: Mathlib/Algebra/Polynomial/Splits.lean

tactic: convert hpf
state_before: R : Type u_1
F : Type u
K : Type v
L : Type w
inst✝² : CommRing K
inst✝¹ : Field L
inst✝ : Field F
i : K →+* L
f g : K[X]
hf : Splits i f
hg : Splits i g
this : DecidableEq L := Classical.decEq L
h : ¬map i (f * g) = 0
p : L[X]
hp : Irreducible p
hpf : p ∣ map i (f * g)
⊢ p ∣ map i f * map i g
state_after: case h.e'_4
R : Type u_1
F : Type u
K : Type v
L : Type w
inst✝² : CommRing K
inst✝¹ : Field L
inst✝ : Field F
i : K →+* L
f g : K[X]
hf : Splits i f
hg : Splits i g
this : DecidableEq L := Classical.decEq L
h : ¬map i (f * g) = 0
p : L[X]
hp : Irreducible p
hpf : p ∣ map i (f * g)
⊢ map i f * map i g = map i (f * g)

tactic: rw [Polynomial.map_mul]
state_before: case h.e'_4
R : Type u_1
F : Type u
K : Type v
L : Type w
inst✝² : CommRing K
inst✝¹ : Field L
inst✝ : Field F
i : K →+* L
f g : K[X]
hf : Splits i f
hg : Splits i g
this : DecidableEq L := Classical.decEq L
h : ¬map i (f * g) = 0
p : L[X]
hp : Irreducible p
hpf : p ∣ map i (f * g)
⊢ map i f * map i g = map i (f * g)
state_after: no goals

tactic: simp [hf] at h
state_before: R : Type u_1
F : Type u
K : Type v
L : Type w
inst✝² : CommRing K
inst✝¹ : Field L
inst✝ : Field F
i : K →+* L
f g : K[X]
hf✝ : Splits i f
hg : Splits i g
this : DecidableEq L := Classical.decEq L
h : ¬map i (f * g) = 0
p : L[X]
hp : Irreducible p
hpf : p ∣ map i (f * g)
hf : map i f = 0
⊢ False
state_after: no goals

tactic: simp [hg] at h
state_before: R : Type u_1
F : Type u
K : Type v
L : Type w
inst✝² : CommRing K
inst✝¹ : Field L
inst✝ : Field F
i : K →+* L
f g : K[X]
hf : Splits i f
hg✝ : Splits i g
this : DecidableEq L := Classical.decEq L
h : ¬map i (f * g) = 0
p : L[X]
hp : Irreducible p
hpf : p ∣ map i (f * g)
hg : map i g = 0
⊢ False
state_after: no goals
Theorem: ManyOneDegree.add_le
File: Mathlib/Computability/Reduce.lean

tactic: induction d₁ using ManyOneDegree.ind_on
state_before: α : Type u
inst✝⁵ : Primcodable α
inst✝⁴ : Inhabited α
β : Type v
inst✝³ : Primcodable β
inst✝² : Inhabited β
γ : Type w
inst✝¹ : Primcodable γ
inst✝ : Inhabited γ
d₁ d₂ d₃ : ManyOneDegree
⊢ d₁ + d₂ ≤ d₃ ↔ d₁ ≤ d₃ ∧ d₂ ≤ d₃
state_after: case h
α : Type u
inst✝⁵ : Primcodable α
inst✝⁴ : Inhabited α
β : Type v
inst✝³ : Primcodable β
inst✝² : Inhabited β
γ : Type w
inst✝¹ : Primcodable γ
inst✝ : Inhabited γ
d₂ d₃ : ManyOneDegree
p✝ : Set ℕ
⊢ of p✝ + d₂ ≤ d₃ ↔ of p✝ ≤ d₃ ∧ d₂ ≤ d₃

tactic: induction d₂ using ManyOneDegree.ind_on
state_before: case h
α : Type u
inst✝⁵ : Primcodable α
inst✝⁴ : Inhabited α
β : Type v
inst✝³ : Primcodable β
inst✝² : Inhabited β
γ : Type w
inst✝¹ : Primcodable γ
inst✝ : Inhabited γ
d₂ d₃ : ManyOneDegree
p✝ : Set ℕ
⊢ of p✝ + d₂ ≤ d₃ ↔ of p✝ ≤ d₃ ∧ d₂ ≤ d₃
state_after: case h.h
α : Type u
inst✝⁵ : Primcodable α
inst✝⁴ : Inhabited α
β : Type v
inst✝³ : Primcodable β
inst✝² : Inhabited β
γ : Type w
inst✝¹ : Primcodable γ
inst✝ : Inhabited γ
d₃ : ManyOneDegree
p✝¹ p✝ : Set ℕ
⊢ of p✝¹ + of p✝ ≤ d₃ ↔ of p✝¹ ≤ d₃ ∧ of p✝ ≤ d₃

tactic: induction d₃ using ManyOneDegree.ind_on
state_before: case h.h
α : Type u
inst✝⁵ : Primcodable α
inst✝⁴ : Inhabited α
β : Type v
inst✝³ : Primcodable β
inst✝² : Inhabited β
γ : Type w
inst✝¹ : Primcodable γ
inst✝ : Inhabited γ
d₃ : ManyOneDegree
p✝¹ p✝ : Set ℕ
⊢ of p✝¹ + of p✝ ≤ d₃ ↔ of p✝¹ ≤ d₃ ∧ of p✝ ≤ d₃
state_after: case h.h.h
α : Type u
inst✝⁵ : Primcodable α
inst✝⁴ : Inhabited α
β : Type v
inst✝³ : Primcodable β
inst✝² : Inhabited β
γ : Type w
inst✝¹ : Primcodable γ
inst✝ : Inhabited γ
p✝² p✝¹ p✝ : Set ℕ
⊢ of p✝² + of p✝¹ ≤ of p✝ ↔ of p✝² ≤ of p✝ ∧ of p✝¹ ≤ of p✝

tactic: simpa only [← add_of, of_le_of] using disjoin_le
state_before: case h.h.h
α : Type u
inst✝⁵ : Primcodable α
inst✝⁴ : Inhabited α
β : Type v
inst✝³ : Primcodable β
inst✝² : Inhabited β
γ : Type w
inst✝¹ : Primcodable γ
inst✝ : Inhabited γ
p✝² p✝¹ p✝ : Set ℕ
⊢ of p✝² + of p✝¹ ≤ of p✝ ↔ of p✝² ≤ of p✝ ∧ of p✝¹ ≤ of p✝
state_after: no goals
Theorem: HomologicalComplex.d_toCycles
File: Mathlib/Algebra/Homology/ShortComplex/HomologicalComplex.lean

tactic: simp only [← cancel_mono (K.iCycles k), assoc, toCycles_i, d_comp_d, zero_comp]
state_before: C : Type u_1
inst✝³ : Category.{u_3, u_1} C
inst✝² : HasZeroMorphisms C
ι : Type u_2
c : ComplexShape ι
K L M : HomologicalComplex C c
φ : K ⟶ L
ψ : L ⟶ M
i j k : ι
inst✝¹ : K.HasHomology i
inst✝ : K.HasHomology k
⊢ K.d i j ≫ K.toCycles j k = 0
state_after: no goals
Theorem: Int.sub_floor_div_mul_lt
File: Mathlib/Algebra/Order/Floor.lean

tactic: rw [← one_add_mul _ b, ← div_lt_iff hb, add_comm]
state_before: F : Type u_1
α : Type u_2
β : Type u_3
inst✝³ : LinearOrderedRing α
inst✝² : FloorRing α
z : ℤ
a✝ : α
k : Type u_4
inst✝¹ : LinearOrderedField k
inst✝ : FloorRing k
b a : k
hb : 0 < b
⊢ a < b + ↑⌊a / b⌋ * b
state_after: F : Type u_1
α : Type u_2
β : Type u_3
inst✝³ : LinearOrderedRing α
inst✝² : FloorRing α
z : ℤ
a✝ : α
k : Type u_4
inst✝¹ : LinearOrderedField k
inst✝ : FloorRing k
b a : k
hb : 0 < b
⊢ a / b < ↑⌊a / b⌋ + 1

tactic: exact lt_floor_add_one _
state_before: F : Type u_1
α : Type u_2
β : Type u_3
inst✝³ : LinearOrderedRing α
inst✝² : FloorRing α
z : ℤ
a✝ : α
k : Type u_4
inst✝¹ : LinearOrderedField k
inst✝ : FloorRing k
b a : k
hb : 0 < b
⊢ a / b < ↑⌊a / b⌋ + 1
state_after: no goals
Theorem: Equiv.Perm.SameCycle.apply_eq_self_iff
File: Mathlib/GroupTheory/Perm/Cycle/Basic.lean

tactic: rw [← hi, ← mul_apply, ← zpow_one_add, add_comm, zpow_add_one, mul_apply,
  (f ^ i).injective.eq_iff]
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
f g : Perm α
p : α → Prop
x y z : α
x✝ : f.SameCycle x y
i : ℤ
hi : (f ^ i) x = y
⊢ f x = x ↔ f y = y
state_after: no goals
Theorem: CstarRing.star_mul_self_eq_zero_iff
File: Mathlib/Analysis/NormedSpace/Star/Basic.lean

tactic: rw [← norm_eq_zero, norm_star_mul_self]
state_before: 𝕜 : Type u_1
E : Type u_2
α : Type u_3
inst✝² : NonUnitalNormedRing E
inst✝¹ : StarRing E
inst✝ : CstarRing E
x : E
⊢ x⋆ * x = 0 ↔ x = 0
state_after: 𝕜 : Type u_1
E : Type u_2
α : Type u_3
inst✝² : NonUnitalNormedRing E
inst✝¹ : StarRing E
inst✝ : CstarRing E
x : E
⊢ ‖x‖ * ‖x‖ = 0 ↔ x = 0

tactic: exact mul_self_eq_zero.trans norm_eq_zero
state_before: 𝕜 : Type u_1
E : Type u_2
α : Type u_3
inst✝² : NonUnitalNormedRing E
inst✝¹ : StarRing E
inst✝ : CstarRing E
x : E
⊢ ‖x‖ * ‖x‖ = 0 ↔ x = 0
state_after: no goals
Theorem: EReal.div_le_iff_le_mul
File: Mathlib/Data/Real/EReal.lean

tactic: nth_rw 1 [← @mul_div_cancel c b (ne_bot_of_gt h) h' (ne_of_gt h)]
state_before: a b c : EReal
h : 0 < b
h' : b ≠ ⊤
⊢ a / b ≤ c ↔ a ≤ b * c
state_after: a b c : EReal
h : 0 < b
h' : b ≠ ⊤
⊢ a / b ≤ b * (c / b) ↔ a ≤ b * c

tactic: rw [mul_div b c b, mul_comm b]
state_before: a b c : EReal
h : 0 < b
h' : b ≠ ⊤
⊢ a / b ≤ b * (c / b) ↔ a ≤ b * c
state_after: a b c : EReal
h : 0 < b
h' : b ≠ ⊤
⊢ a / b ≤ c * b / b ↔ a ≤ c * b

tactic: exact StrictMono.le_iff_le (strictMono_div_right_of_pos h h')
state_before: a b c : EReal
h : 0 < b
h' : b ≠ ⊤
⊢ a / b ≤ c * b / b ↔ a ≤ c * b
state_after: no goals
Theorem: AddCommGrp.kernelIsoKer_inv_comp_ι
File: Mathlib/Algebra/Category/Grp/Limits.lean

tactic: ext
state_before: J : Type v
inst✝ : Category.{w, v} J
G H : AddCommGrp
f : G ⟶ H
⊢ (kernelIsoKer f).inv ≫ kernel.ι f = (AddMonoidHom.ker f).subtype
state_after: case w
J : Type v
inst✝ : Category.{w, v} J
G H : AddCommGrp
f : G ⟶ H
x✝ : ↑(of ↥(AddMonoidHom.ker f))
⊢ ((kernelIsoKer f).inv ≫ kernel.ι f) x✝ = (AddMonoidHom.ker f).subtype x✝

tactic: simp [kernelIsoKer]
state_before: case w
J : Type v
inst✝ : Category.{w, v} J
G H : AddCommGrp
f : G ⟶ H
x✝ : ↑(of ↥(AddMonoidHom.ker f))
⊢ ((kernelIsoKer f).inv ≫ kernel.ι f) x✝ = (AddMonoidHom.ker f).subtype x✝
state_after: no goals
Theorem: EMetric.infEdist_closure_pos_iff_not_mem_closure
File: Mathlib/Topology/MetricSpace/HausdorffDistance.lean

tactic: rw [infEdist_closure, infEdist_pos_iff_not_mem_closure]
state_before: ι : Sort u_1
α : Type u
β : Type v
inst✝¹ : PseudoEMetricSpace α
inst✝ : PseudoEMetricSpace β
x✝ y : α
s t : Set α
Φ : α → β
x : α
E : Set α
⊢ 0 < infEdist x (closure E) ↔ x ∉ closure E
state_after: no goals
Theorem: Num.le_to_nat
File: Mathlib/Data/Num/Lemmas.lean

tactic: rw [← not_lt]
state_before: α : Type u_1
m n : Num
⊢ ↑m ≤ ↑n ↔ m ≤ n
state_after: α : Type u_1
m n : Num
⊢ ¬↑n < ↑m ↔ m ≤ n

tactic: exact not_congr lt_to_nat
state_before: α : Type u_1
m n : Num
⊢ ¬↑n < ↑m ↔ m ≤ n
state_after: no goals
Theorem: exists_mem_Ico_zpow
File: Mathlib/Algebra/Order/Archimedean.lean

tactic: classical exact
    let ⟨N, hN⟩ := pow_unbounded_of_one_lt x⁻¹ hy
    have he : ∃ m : ℤ, y ^ m ≤ x :=
      ⟨-N,
        le_of_lt
          (by
            rw [zpow_neg y ↑N, zpow_natCast]
            exact (inv_lt hx (lt_trans (inv_pos.2 hx) hN)).1 hN)⟩
    let ⟨M, hM⟩ := pow_unbounded_of_one_lt x hy
    have hb : ∃ b : ℤ, ∀ m, y ^ m ≤ x → m ≤ b :=
      ⟨M, fun m hm =>
        le_of_not_lt fun hlt =>
          not_lt_of_ge (zpow_le_of_le hy.le hlt.le)
            (lt_of_le_of_lt hm (by rwa [← zpow_natCast] at hM))⟩
    let ⟨n, hn₁, hn₂⟩ := Int.exists_greatest_of_bdd hb he
    ⟨n, hn₁, lt_of_not_ge fun hge => not_le_of_gt (Int.lt_succ _) (hn₂ _ hge)⟩
state_before: α : Type u_1
M : Type u_2
inst✝² : LinearOrderedSemifield α
inst✝¹ : Archimedean α
inst✝ : ExistsAddOfLE α
x y ε : α
hx : 0 < x
hy : 1 < y
⊢ ∃ n, x ∈ Ico (y ^ n) (y ^ (n + 1))
state_after: no goals

tactic: exact
let ⟨N, hN⟩ := pow_unbounded_of_one_lt x⁻¹ hy
have he : ∃ m : ℤ, y ^ m ≤ x :=
⟨-N,
le_of_lt
(by
  rw [zpow_neg y ↑N, zpow_natCast]
  exact (inv_lt hx (lt_trans (inv_pos.2 hx) hN)).1 hN)⟩
let ⟨M, hM⟩ := pow_unbounded_of_one_lt x hy
have hb : ∃ b : ℤ, ∀ m, y ^ m ≤ x → m ≤ b :=
⟨M, fun m hm =>
le_of_not_lt fun hlt =>
not_lt_of_ge (zpow_le_of_le hy.le hlt.le)
  (lt_of_le_of_lt hm (by rwa [← zpow_natCast] at hM))⟩
let ⟨n, hn₁, hn₂⟩ := Int.exists_greatest_of_bdd hb he
⟨n, hn₁, lt_of_not_ge fun hge => not_le_of_gt (Int.lt_succ _) (hn₂ _ hge)⟩
state_before: α : Type u_1
M : Type u_2
inst✝² : LinearOrderedSemifield α
inst✝¹ : Archimedean α
inst✝ : ExistsAddOfLE α
x y ε : α
hx : 0 < x
hy : 1 < y
⊢ ∃ n, x ∈ Ico (y ^ n) (y ^ (n + 1))
state_after: no goals

tactic: rw [zpow_neg y ↑N, zpow_natCast]
state_before: α : Type u_1
M : Type u_2
inst✝² : LinearOrderedSemifield α
inst✝¹ : Archimedean α
inst✝ : ExistsAddOfLE α
x y ε : α
hx : 0 < x
hy : 1 < y
N : ℕ
hN : x⁻¹ < y ^ N
⊢ y ^ (-↑N) < x
state_after: α : Type u_1
M : Type u_2
inst✝² : LinearOrderedSemifield α
inst✝¹ : Archimedean α
inst✝ : ExistsAddOfLE α
x y ε : α
hx : 0 < x
hy : 1 < y
N : ℕ
hN : x⁻¹ < y ^ N
⊢ (y ^ N)⁻¹ < x

tactic: exact (inv_lt hx (lt_trans (inv_pos.2 hx) hN)).1 hN
state_before: α : Type u_1
M : Type u_2
inst✝² : LinearOrderedSemifield α
inst✝¹ : Archimedean α
inst✝ : ExistsAddOfLE α
x y ε : α
hx : 0 < x
hy : 1 < y
N : ℕ
hN : x⁻¹ < y ^ N
⊢ (y ^ N)⁻¹ < x
state_after: no goals

tactic: rwa [← zpow_natCast] at hM
state_before: α : Type u_1
M✝ : Type u_2
inst✝² : LinearOrderedSemifield α
inst✝¹ : Archimedean α
inst✝ : ExistsAddOfLE α
x y ε : α
hx : 0 < x
hy : 1 < y
N : ℕ
hN : x⁻¹ < y ^ N
he : ∃ m, y ^ m ≤ x
M : ℕ
hM : x < y ^ M
m : ℤ
hm : y ^ m ≤ x
hlt : ↑M < m
⊢ x < y ^ ↑M
state_after: no goals
Theorem: MeasureTheory.ProbabilityMeasure.eq_of_forall_toMeasure_apply_eq
File: Mathlib/MeasureTheory/Measure/ProbabilityMeasure.lean

tactic: apply toMeasure_injective
state_before: Ω : Type u_1
inst✝ : MeasurableSpace Ω
μ ν : ProbabilityMeasure Ω
h : ∀ (s : Set Ω), MeasurableSet s → ↑μ s = ↑ν s
⊢ μ = ν
state_after: case a
Ω : Type u_1
inst✝ : MeasurableSpace Ω
μ ν : ProbabilityMeasure Ω
h : ∀ (s : Set Ω), MeasurableSet s → ↑μ s = ↑ν s
⊢ ↑μ = ↑ν

tactic: ext1 s s_mble
state_before: case a
Ω : Type u_1
inst✝ : MeasurableSpace Ω
μ ν : ProbabilityMeasure Ω
h : ∀ (s : Set Ω), MeasurableSet s → ↑μ s = ↑ν s
⊢ ↑μ = ↑ν
state_after: case a.h
Ω : Type u_1
inst✝ : MeasurableSpace Ω
μ ν : ProbabilityMeasure Ω
h : ∀ (s : Set Ω), MeasurableSet s → ↑μ s = ↑ν s
s : Set Ω
s_mble : MeasurableSet s
⊢ ↑μ s = ↑ν s

tactic: exact h s s_mble
state_before: case a.h
Ω : Type u_1
inst✝ : MeasurableSpace Ω
μ ν : ProbabilityMeasure Ω
h : ∀ (s : Set Ω), MeasurableSet s → ↑μ s = ↑ν s
s : Set Ω
s_mble : MeasurableSet s
⊢ ↑μ s = ↑ν s
state_after: no goals
Theorem: Basis.flag_strictMono
File: Mathlib/LinearAlgebra/Basis/Flag.lean

tactic: simp [flag_succ]
state_before: R : Type u_1
M : Type u_2
inst✝³ : Semiring R
inst✝² : AddCommMonoid M
inst✝¹ : Module R M
n : ℕ
inst✝ : Nontrivial R
b : Basis (Fin n) R M
x✝ : Fin n
⊢ b.flag x✝.castSucc < b.flag x✝.succ
state_after: no goals
Theorem: Basis.coe_dualBasis
File: Mathlib/LinearAlgebra/Dual.lean

tactic: ext i x
state_before: R : Type uR
M : Type uM
K : Type uK
V : Type uV
ι : Type uι
inst✝⁴ : CommRing R
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : DecidableEq ι
b : Basis ι R M
inst✝ : _root_.Finite ι
⊢ ⇑b.dualBasis = b.coord
state_after: case h.h
R : Type uR
M : Type uM
K : Type uK
V : Type uV
ι : Type uι
inst✝⁴ : CommRing R
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : DecidableEq ι
b : Basis ι R M
inst✝ : _root_.Finite ι
i : ι
x : M
⊢ (b.dualBasis i) x = (b.coord i) x

tactic: apply dualBasis_apply
state_before: case h.h
R : Type uR
M : Type uM
K : Type uK
V : Type uV
ι : Type uι
inst✝⁴ : CommRing R
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : DecidableEq ι
b : Basis ι R M
inst✝ : _root_.Finite ι
i : ι
x : M
⊢ (b.dualBasis i) x = (b.coord i) x
state_after: no goals
Theorem: Polynomial.Separable.of_pow'
File: Mathlib/FieldTheory/Separable.lean

tactic: rw [pow_succ, pow_succ] at h
state_before: R : Type u
inst✝¹ : CommSemiring R
S : Type v
inst✝ : CommSemiring S
f : R[X]
n : ℕ
h : (f ^ (n + 2)).Separable
⊢ IsUnit f ∨ f.Separable ∧ n + 2 = 1 ∨ n + 2 = 0
state_after: R : Type u
inst✝¹ : CommSemiring R
S : Type v
inst✝ : CommSemiring S
f : R[X]
n : ℕ
h : (f ^ n * f * f).Separable
⊢ IsUnit f ∨ f.Separable ∧ n + 2 = 1 ∨ n + 2 = 0

tactic: exact Or.inl (isCoprime_self.1 h.isCoprime.of_mul_left_right)
state_before: R : Type u
inst✝¹ : CommSemiring R
S : Type v
inst✝ : CommSemiring S
f : R[X]
n : ℕ
h : (f ^ n * f * f).Separable
⊢ IsUnit f ∨ f.Separable ∧ n + 2 = 1 ∨ n + 2 = 0
state_after: no goals
Theorem: Rep.linearization_of
File: Mathlib/RepresentationTheory/Rep.lean

tactic: rw [linearization_obj_ρ, Finsupp.lmapDomain_apply, Finsupp.mapDomain_single]
state_before: k G : Type u
inst✝¹ : CommRing k
inst✝ : Monoid G
X : Action (Type u) (MonCat.of G)
g : G
x : X.V
⊢ (((linearization k G).obj X).ρ g) (Finsupp.single x 1) = Finsupp.single (X.ρ g x) 1
state_after: no goals
Theorem: LipschitzWith.div
File: Mathlib/Analysis/Normed/Group/Uniform.lean

tactic: simpa only [div_eq_mul_inv] using hf.mul' hg.inv
state_before: 𝓕 : Type u_1
α✝ : Type u_2
E✝ : Type u_3
F : Type u_4
inst✝³ : SeminormedCommGroup E✝
inst✝² : SeminormedCommGroup F
a a₁ a₂ b b₁ b₂ : E✝
r r₁ r₂ : ℝ
α : Type u_5
E : Type u_6
inst✝¹ : SeminormedCommGroup E
inst✝ : PseudoEMetricSpace α
K Kf Kg : ℝ≥0
f g : α → E
s : Set α
x : α
hf : LipschitzWith Kf f
hg : LipschitzWith Kg g
⊢ LipschitzWith (Kf + Kg) fun x => f x / g x
state_after: no goals
Theorem: IsCoprime.map
File: Mathlib/RingTheory/Coprime/Basic.lean

tactic: rw [← f.map_mul, ← f.map_mul, ← f.map_add, h, f.map_one]
state_before: R : Type u
inst✝¹ : CommSemiring R
x y z : R
H : IsCoprime x y
S : Type v
inst✝ : CommSemiring S
f : R →+* S
a b : R
h : a * x + b * y = 1
⊢ f a * f x + f b * f y = 1
state_after: no goals
Theorem: Int.cast_eq_zero
File: Mathlib/Data/Int/Cast/Lemmas.lean

tactic: cases n
state_before: F : Type u_1
ι : Type u_2
α : Type u_3
β : Type u_4
inst✝¹ : AddGroupWithOne α
inst✝ : CharZero α
m n : ℤ
h : ↑n = 0
⊢ n = 0
state_after: case ofNat
F : Type u_1
ι : Type u_2
α : Type u_3
β : Type u_4
inst✝¹ : AddGroupWithOne α
inst✝ : CharZero α
m : ℤ
a✝ : ℕ
h : ↑(ofNat a✝) = 0
⊢ ofNat a✝ = 0

case negSucc
F : Type u_1
ι : Type u_2
α : Type u_3
β : Type u_4
inst✝¹ : AddGroupWithOne α
inst✝ : CharZero α
m : ℤ
a✝ : ℕ
h : ↑-[a✝+1] = 0
⊢ -[a✝+1] = 0

tactic: erw [Int.cast_natCast] at h
state_before: case ofNat
F : Type u_1
ι : Type u_2
α : Type u_3
β : Type u_4
inst✝¹ : AddGroupWithOne α
inst✝ : CharZero α
m : ℤ
a✝ : ℕ
h : ↑(ofNat a✝) = 0
⊢ ofNat a✝ = 0
state_after: case ofNat
F : Type u_1
ι : Type u_2
α : Type u_3
β : Type u_4
inst✝¹ : AddGroupWithOne α
inst✝ : CharZero α
m : ℤ
a✝ : ℕ
h : ↑a✝ = 0
⊢ ofNat a✝ = 0

tactic: exact congr_arg _ (Nat.cast_eq_zero.1 h)
state_before: case ofNat
F : Type u_1
ι : Type u_2
α : Type u_3
β : Type u_4
inst✝¹ : AddGroupWithOne α
inst✝ : CharZero α
m : ℤ
a✝ : ℕ
h : ↑a✝ = 0
⊢ ofNat a✝ = 0
state_after: no goals

tactic: rw [cast_negSucc, neg_eq_zero, Nat.cast_eq_zero] at h
state_before: case negSucc
F : Type u_1
ι : Type u_2
α : Type u_3
β : Type u_4
inst✝¹ : AddGroupWithOne α
inst✝ : CharZero α
m : ℤ
a✝ : ℕ
h : ↑-[a✝+1] = 0
⊢ -[a✝+1] = 0
state_after: case negSucc
F : Type u_1
ι : Type u_2
α : Type u_3
β : Type u_4
inst✝¹ : AddGroupWithOne α
inst✝ : CharZero α
m : ℤ
a✝ : ℕ
h : a✝ + 1 = 0
⊢ -[a✝+1] = 0

tactic: contradiction
state_before: case negSucc
F : Type u_1
ι : Type u_2
α : Type u_3
β : Type u_4
inst✝¹ : AddGroupWithOne α
inst✝ : CharZero α
m : ℤ
a✝ : ℕ
h : a✝ + 1 = 0
⊢ -[a✝+1] = 0
state_after: no goals

tactic: rw [h, cast_zero]
state_before: F : Type u_1
ι : Type u_2
α : Type u_3
β : Type u_4
inst✝¹ : AddGroupWithOne α
inst✝ : CharZero α
m n : ℤ
h : n = 0
⊢ ↑n = 0
state_after: no goals
Theorem: MeasureTheory.SimpleFunc.restrict_mono
File: Mathlib/MeasureTheory/Function/SimpleFunc.lean

tactic: simp only [coe_restrict _ hs, indicator_le_indicator (H x)]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝² : MeasurableSpace α
K : Type u_5
inst✝¹ : Zero β
inst✝ : Preorder β
s : Set α
f g : α →ₛ β
H : f ≤ g
hs : MeasurableSet s
x : α
⊢ ↑(f.restrict s) x ≤ ↑(g.restrict s) x
state_after: no goals

tactic: simp only [restrict_of_not_measurable hs, le_refl]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝² : MeasurableSpace α
K : Type u_5
inst✝¹ : Zero β
inst✝ : Preorder β
s : Set α
f g : α →ₛ β
H : f ≤ g
hs : ¬MeasurableSet s
⊢ f.restrict s ≤ g.restrict s
state_after: no goals
Theorem: Associates.isAtom_iff
File: Mathlib/RingTheory/ChainOfDivisors.lean

tactic: simpa only [Associates.isUnit_iff_eq_one] using hp.1
state_before: M : Type u_1
inst✝ : CancelCommMonoidWithZero M
p : Associates M
h₁ : p ≠ 0
hp : IsAtom p
⊢ ¬IsUnit p
state_after: no goals

tactic: rw [ha] at h
state_before: M : Type u_1
inst✝ : CancelCommMonoidWithZero M
p : Associates M
h₁ : p ≠ 0
hp : IsAtom p
a b : Associates M
h : p = a * b
ha : a = p
⊢ IsUnit b
state_after: M : Type u_1
inst✝ : CancelCommMonoidWithZero M
p : Associates M
h₁ : p ≠ 0
hp : IsAtom p
a b : Associates M
h : p = p * b
ha : a = p
⊢ IsUnit b

tactic: apply isUnit_of_associated_mul (show Associated (p * b) p by conv_rhs => rw [h]) h₁
state_before: M : Type u_1
inst✝ : CancelCommMonoidWithZero M
p : Associates M
h₁ : p ≠ 0
hp : IsAtom p
a b : Associates M
h : p = p * b
ha : a = p
⊢ IsUnit b
state_after: no goals

tactic: conv_rhs => rw [h]
state_before: M : Type u_1
inst✝ : CancelCommMonoidWithZero M
p : Associates M
h₁ : p ≠ 0
hp : IsAtom p
a b : Associates M
h : p = p * b
ha : a = p
⊢ Associated (p * b) p
state_after: no goals

tactic: simpa only [Associates.isUnit_iff_eq_one, Associates.bot_eq_one] using hp.1
state_before: M : Type u_1
inst✝ : CancelCommMonoidWithZero M
p : Associates M
h₁ : p ≠ 0
hp : Irreducible p
⊢ p ≠ ⊥
state_after: no goals

tactic: rwa [Associates.isUnit_iff_eq_one, ← Associates.bot_eq_one] at hb
state_before: M : Type u_1
inst✝ : CancelCommMonoidWithZero M
p : Associates M
h₁ : p ≠ 0
hp : Irreducible p
b : Associates M
x✝ : b < p
a : Associates M
hab : p = b * a
hb✝ : ¬p ∣ b
hb : IsUnit b
⊢ b = ⊥
state_after: no goals

tactic: rw [hab, mul_assoc, IsUnit.mul_val_inv ha, mul_one]
state_before: M : Type u_1
inst✝ : CancelCommMonoidWithZero M
p : Associates M
h₁ : p ≠ 0
hp : Irreducible p
b : Associates M
x✝ : b < p
a : Associates M
hab : p = b * a
hb : ¬p ∣ b
ha : IsUnit a
⊢ b = p * ↑ha.unit⁻¹
state_after: no goals
Theorem: Polynomial.eraseLead_natDegree_le
File: Mathlib/Algebra/Polynomial/EraseLead.lean

tactic: rcases f.eraseLead_natDegree_lt_or_eraseLead_eq_zero with (h | h)
state_before: R : Type u_1
inst✝ : Semiring R
f✝ f : R[X]
⊢ f.eraseLead.natDegree ≤ f.natDegree - 1
state_after: case inl
R : Type u_1
inst✝ : Semiring R
f✝ f : R[X]
h : f.eraseLead.natDegree < f.natDegree
⊢ f.eraseLead.natDegree ≤ f.natDegree - 1

case inr
R : Type u_1
inst✝ : Semiring R
f✝ f : R[X]
h : f.eraseLead = 0
⊢ f.eraseLead.natDegree ≤ f.natDegree - 1

tactic: exact Nat.le_sub_one_of_lt h
state_before: case inl
R : Type u_1
inst✝ : Semiring R
f✝ f : R[X]
h : f.eraseLead.natDegree < f.natDegree
⊢ f.eraseLead.natDegree ≤ f.natDegree - 1
state_after: no goals

tactic: simp only [h, natDegree_zero, zero_le]
state_before: case inr
R : Type u_1
inst✝ : Semiring R
f✝ f : R[X]
h : f.eraseLead = 0
⊢ f.eraseLead.natDegree ≤ f.natDegree - 1
state_after: no goals