ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
Theorem: MeasureTheory.stronglyMeasurable_const'
File: Mathlib/MeasureTheory/Function/StronglyMeasurable/Basic.lean

Proof steps:
state_before: α✝ : Type u_1
β✝ : Type u_2
γ : Type u_3
ι : Type u_4
inst✝¹ : Countable ι
α : Type u_5
β : Type u_6
m : MeasurableSpace α
inst✝ : TopologicalSpace β
f : α → β
hf : ∀ (x y : α), f x = f y
⊢ StronglyMeasurable f
state_after: α✝ : Type u_1
β✝ : Type u_2
γ : Type u_3
ι : Type u_4
inst✝¹ : Countable ι
α : Type u_5
β : Type u_6
m : MeasurableSpace α
inst✝ : TopologicalSpace β
f : α → β
hf : ∀ (x y : α), f x = f y
a✝ : Nontrivial α
⊢ StronglyMeasurable f
tactic: nontriviality α
state_before: α✝ : Type u_1
β✝ : Type u_2
γ : Type u_3
ι : Type u_4
inst✝¹ : Countable ι
α : Type u_5
β : Type u_6
m : MeasurableSpace α
inst✝ : TopologicalSpace β
f : α → β
hf : ∀ (x y : α), f x = f y
a✝ : Nontrivial α
⊢ StronglyMeasurable f
state_after: α✝ : Type u_1
β✝ : Type u_2
γ : Type u_3
ι : Type u_4
inst✝¹ : Countable ι
α : Type u_5
β : Type u_6
m : MeasurableSpace α
inst✝ : TopologicalSpace β
f : α → β
hf : ∀ (x y : α), f x = f y
a✝ : Nontrivial α
inhabited_h : Inhabited α
⊢ StronglyMeasurable f
tactic: inhabit α
state_before: α✝ : Type u_1
β✝ : Type u_2
γ : Type u_3
ι : Type u_4
inst✝¹ : Countable ι
α : Type u_5
β : Type u_6
m : MeasurableSpace α
inst✝ : TopologicalSpace β
f : α → β
hf : ∀ (x y : α), f x = f y
a✝ : Nontrivial α
inhabited_h : Inhabited α
⊢ StronglyMeasurable f
state_after: case h.e'_5
α✝ : Type u_1
β✝ : Type u_2
γ : Type u_3
ι : Type u_4
inst✝¹ : Countable ι
α : Type u_5
β : Type u_6
m : MeasurableSpace α
inst✝ : TopologicalSpace β
f : α → β
hf : ∀ (x y : α), f x = f y
a✝ : Nontrivial α
inhabited_h : Inhabited α
⊢ f = fun x => ?convert_3

case convert_3
α✝ : Type u_1
β✝ : Type u_2
γ : Type u_3
ι : Type u_4
inst✝¹ : Countable ι
α : Type u_5
β : Type u_6
m : MeasurableSpace α
inst✝ : TopologicalSpace β
f : α → β
hf : ∀ (x y : α), f x = f y
a✝ : Nontrivial α
inhabited_h : Inhabited α
⊢ β
tactic: convert stronglyMeasurable_const (β := β) using 1
state_before: case h.e'_5
α✝ : Type u_1
β✝ : Type u_2
γ : Type u_3
ι : Type u_4
inst✝¹ : Countable ι
α : Type u_5
β : Type u_6
m : MeasurableSpace α
inst✝ : TopologicalSpace β
f : α → β
hf : ∀ (x y : α), f x = f y
a✝ : Nontrivial α
inhabited_h : Inhabited α
⊢ f = fun x => ?convert_3

case convert_3
α✝ : Type u_1
β✝ : Type u_2
γ : Type u_3
ι : Type u_4
inst✝¹ : Countable ι
α : Type u_5
β : Type u_6
m : MeasurableSpace α
inst✝ : TopologicalSpace β
f : α → β
hf : ∀ (x y : α), f x = f y
a✝ : Nontrivial α
inhabited_h : Inhabited α
⊢ β
state_after: no goals
tactic: exact funext fun x => hf x default
Theorem: ProbabilityTheory.condIndepSet_iff_condIndep
File: Mathlib/Probability/Independence/Conditional.lean

Proof steps:
state_before: Ω : Type u_1
ι : Type u_2
m' mΩ : MeasurableSpace Ω
inst✝² : StandardBorelSpace Ω
inst✝¹ : Nonempty Ω
hm' : m' ≤ mΩ
s t : Set Ω
μ : Measure Ω
inst✝ : IsFiniteMeasure μ
⊢ CondIndepSet m' hm' s t μ ↔ CondIndep m' (generateFrom {s}) (generateFrom {t}) hm' μ
state_after: no goals
tactic: simp only [CondIndepSet, CondIndep, Kernel.IndepSet]
Theorem: FractionalIdeal.count_coe_nonneg
File: Mathlib/RingTheory/DedekindDomain/Factorization.lean

Proof steps:
state_before: R : Type u_1
inst✝⁴ : CommRing R
K : Type u_2
inst✝³ : Field K
inst✝² : Algebra R K
inst✝¹ : IsFractionRing R K
inst✝ : IsDedekindDomain R
v : HeightOneSpectrum R
J : Ideal R
⊢ 0 ≤ count K v ↑J
state_after: case pos
R : Type u_1
inst✝⁴ : CommRing R
K : Type u_2
inst✝³ : Field K
inst✝² : Algebra R K
inst✝¹ : IsFractionRing R K
inst✝ : IsDedekindDomain R
v : HeightOneSpectrum R
J : Ideal R
hJ : J = 0
⊢ 0 ≤ count K v ↑J

case neg
R : Type u_1
inst✝⁴ : CommRing R
K : Type u_2
inst✝³ : Field K
inst✝² : Algebra R K
inst✝¹ : IsFractionRing R K
inst✝ : IsDedekindDomain R
v : HeightOneSpectrum R
J : Ideal R
hJ : ¬J = 0
⊢ 0 ≤ count K v ↑J
tactic: by_cases hJ : J = 0
Theorem: Matroid.Indep.subset
File: Mathlib/Data/Matroid/Basic.lean

Proof steps:
state_before: α : Type u_1
M : Matroid α
B B' I J D X : Set α
e f : α
hJ : M.Indep J
hIJ : I ⊆ J
⊢ M.Indep I
state_after: case intro.intro
α : Type u_1
M : Matroid α
B✝ B' I J D X : Set α
e f : α
hJ : M.Indep J
hIJ : I ⊆ J
B : Set α
hB : M.Base B
hJB : J ⊆ B
⊢ M.Indep I
tactic: obtain ⟨B, hB, hJB⟩ := hJ.exists_base_superset
state_before: case intro.intro
α : Type u_1
M : Matroid α
B✝ B' I J D X : Set α
e f : α
hJ : M.Indep J
hIJ : I ⊆ J
B : Set α
hB : M.Base B
hJB : J ⊆ B
⊢ M.Indep I
state_after: no goals
tactic: exact indep_iff.2 ⟨B, hB, hIJ.trans hJB⟩
Theorem: padicValNat.div'
File: Mathlib/NumberTheory/Padics/PadicVal.lean

Proof steps:
state_before: p a b✝ : ℕ
hp : Fact (Nat.Prime p)
m : ℕ
cpm : p.Coprime m
b : ℕ
dvd : m ∣ b
⊢ padicValNat p (b / m) = padicValNat p b
state_after: no goals
tactic: rw [padicValNat.div_of_dvd dvd, eq_zero_of_not_dvd (hp.out.coprime_iff_not_dvd.mp cpm),
    Nat.sub_zero]
Theorem: Real.tan_nonneg_of_nonneg_of_le_pi_div_two
File: Mathlib/Analysis/SpecialFunctions/Trigonometric/Basic.lean

Proof steps:
state_before: x : ℝ
h0x : 0 ≤ x
hxp✝ : x ≤ π / 2
h✝ : 0 < x
hxp : x = π / 2
⊢ 0 ≤ tan x
state_after: no goals
tactic: simp [hxp, tan_eq_sin_div_cos]
state_before: x : ℝ
h0x : 0 ≤ x
hxp : x ≤ π / 2
hx0 : 0 = x
x✝ : x < π / 2 ∨ x = π / 2
⊢ 0 ≤ tan x
state_after: no goals
tactic: simp [hx0.symm]
Theorem: Multiset.map_univ_val_equiv
File: Mathlib/Data/Fintype/Basic.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝¹ : Fintype α
inst✝ : Fintype β
e : α ≃ β
⊢ map (⇑e) univ.val = univ.val
state_after: no goals
tactic: rw [← congr_arg Finset.val (Finset.map_univ_equiv e), Finset.map_val, Equiv.coe_toEmbedding]
Theorem: Monoid.exponent_eq_iSup_orderOf'
File: Mathlib/GroupTheory/Exponent.lean

Proof steps:
state_before: G : Type u
inst✝ : CommMonoid G
⊢ exponent G = if ∃ g, orderOf g = 0 then 0 else ⨆ g, orderOf g
state_after: case pos
G : Type u
inst✝ : CommMonoid G
h : ∃ g, orderOf g = 0
⊢ exponent G = 0

case neg
G : Type u
inst✝ : CommMonoid G
h : ¬∃ g, orderOf g = 0
⊢ exponent G = ⨆ g, orderOf g
tactic: split_ifs with h
Theorem: Filter.sup_principal
File: Mathlib/Order/Filter/Basic.lean

Proof steps:
state_before: α : Type u
β : Type v
γ : Type w
δ : Type u_1
ι : Sort x
f g : Filter α
s✝ t✝ s t u : Set α
⊢ u ∈ 𝓟 s ⊔ 𝓟 t ↔ u ∈ 𝓟 (s ∪ t)
state_after: no goals
tactic: simp only [union_subset_iff, mem_sup, mem_principal]
Theorem: Rat.den_le_and_le_num_le_of_sub_lt_one_div_den_sq
File: Mathlib/NumberTheory/DiophantineApproximation.lean

Proof steps:
state_before: ξ q : ℚ
h : |ξ - q| < 1 / ↑q.den ^ 2
⊢ q.den ≤ ξ.den ∧ ⌈ξ * ↑q.den⌉ - 1 ≤ q.num ∧ q.num ≤ ⌊ξ * ↑q.den⌋ + 1
state_after: ξ q : ℚ
h : |ξ - q| < 1 / ↑q.den ^ 2
hq₀ : 0 < ↑q.den
⊢ q.den ≤ ξ.den ∧ ⌈ξ * ↑q.den⌉ - 1 ≤ q.num ∧ q.num ≤ ⌊ξ * ↑q.den⌋ + 1
tactic: have hq₀ : (0 : ℚ) < q.den := Nat.cast_pos.mpr q.pos
state_before: ξ q : ℚ
h : |ξ - q| < 1 / ↑q.den ^ 2
hq₀ : 0 < ↑q.den
⊢ q.den ≤ ξ.den ∧ ⌈ξ * ↑q.den⌉ - 1 ≤ q.num ∧ q.num ≤ ⌊ξ * ↑q.den⌋ + 1
state_after: ξ q : ℚ
hq₀ : 0 < ↑q.den
h : |ξ * ↑q.den - ↑q.num| < 1 / ↑q.den
⊢ q.den ≤ ξ.den ∧ ⌈ξ * ↑q.den⌉ - 1 ≤ q.num ∧ q.num ≤ ⌊ξ * ↑q.den⌋ + 1
tactic: replace h : |ξ * q.den - q.num| < 1 / q.den := by
    rw [← mul_lt_mul_right hq₀] at h
    conv_lhs at h => rw [← abs_of_pos hq₀, ← abs_mul, sub_mul, mul_den_eq_num]
    rwa [sq, div_mul, mul_div_cancel_left₀ _ hq₀.ne'] at h
state_before: ξ q : ℚ
hq₀ : 0 < ↑q.den
h : |ξ * ↑q.den - ↑q.num| < 1 / ↑q.den
⊢ q.den ≤ ξ.den ∧ ⌈ξ * ↑q.den⌉ - 1 ≤ q.num ∧ q.num ≤ ⌊ξ * ↑q.den⌋ + 1
state_after: case left
ξ q : ℚ
hq₀ : 0 < ↑q.den
h : |ξ * ↑q.den - ↑q.num| < 1 / ↑q.den
⊢ q.den ≤ ξ.den

case right
ξ q : ℚ
hq₀ : 0 < ↑q.den
h : |ξ * ↑q.den - ↑q.num| < 1 / ↑q.den
⊢ ⌈ξ * ↑q.den⌉ - 1 ≤ q.num ∧ q.num ≤ ⌊ξ * ↑q.den⌋ + 1
tactic: constructor
Theorem: Int.natAbs_ediv
File: Mathlib/Data/Int/Defs.lean

Proof steps:
state_before: a✝ b✝ c d m n a b : ℤ
H : b ∣ a
⊢ (a / b).natAbs = a.natAbs / b.natAbs
state_after: case inl
a✝ b✝ c d m n a b : ℤ
H : b ∣ a
h : b.natAbs = 0
⊢ (a / b).natAbs = a.natAbs / b.natAbs

case inr
a✝ b✝ c d m n a b : ℤ
H : b ∣ a
h : b.natAbs > 0
⊢ (a / b).natAbs = a.natAbs / b.natAbs
tactic: rcases Nat.eq_zero_or_pos (natAbs b) with (h | h)
state_before: case inr
a✝ b✝ c d m n a b : ℤ
H : b ∣ a
h : b.natAbs > 0
⊢ (a / b).natAbs = a.natAbs / b.natAbs
state_after: no goals
tactic: calc
    natAbs (a / b) = natAbs (a / b) * 1 := by rw [Nat.mul_one]
    _ = natAbs (a / b) * (natAbs b / natAbs b) := by rw [Nat.div_self h]
    _ = natAbs (a / b) * natAbs b / natAbs b := by rw [Nat.mul_div_assoc _ b.natAbs.dvd_refl]
    _ = natAbs (a / b * b) / natAbs b := by rw [natAbs_mul (a / b) b]
    _ = natAbs a / natAbs b := by rw [Int.ediv_mul_cancel H]
Theorem: Ordinal.add_eq_zero_iff
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
a b : Ordinal.{u_4}
α : Type u_4
r : α → α → Prop
x✝¹ : IsWellOrder α r
β : Type u_4
s : β → β → Prop
x✝ : IsWellOrder β s
⊢ type r + type s = 0 ↔ type r = 0 ∧ type s = 0
state_after: α✝ : Type u_1
β✝ : Type u_2
γ : Type u_3
r✝ : α✝ → α✝ → Prop
s✝ : β✝ → β✝ → Prop
t : γ → γ → Prop
a b : Ordinal.{u_4}
α : Type u_4
r : α → α → Prop
x✝¹ : IsWellOrder α r
β : Type u_4
s : β → β → Prop
x✝ : IsWellOrder β s
⊢ IsEmpty (α ⊕ β) ↔ IsEmpty α ∧ IsEmpty β
tactic: simp_rw [← type_sum_lex, type_eq_zero_iff_isEmpty]
state_before: α✝ : Type u_1
β✝ : Type u_2
γ : Type u_3
r✝ : α✝ → α✝ → Prop
s✝ : β✝ → β✝ → Prop
t : γ → γ → Prop
a b : Ordinal.{u_4}
α : Type u_4
r : α → α → Prop
x✝¹ : IsWellOrder α r
β : Type u_4
s : β → β → Prop
x✝ : IsWellOrder β s
⊢ IsEmpty (α ⊕ β) ↔ IsEmpty α ∧ IsEmpty β
state_after: no goals
tactic: exact isEmpty_sum
Theorem: Filter.Tendsto.max_right
File: Mathlib/Topology/Order/OrderClosed.lean

Proof steps:
state_before: α : Type u
β : Type v
γ : Type w
inst✝² : TopologicalSpace α
inst✝¹ : LinearOrder α
inst✝ : OrderClosedTopology α
f g : β → α
l : Filter β
a : α
h : Tendsto f l (𝓝 a)
⊢ Tendsto (fun i => max a (f i)) l (𝓝 a)
state_after: case h.e'_5.h.e'_3
α : Type u
β : Type v
γ : Type w
inst✝² : TopologicalSpace α
inst✝¹ : LinearOrder α
inst✝ : OrderClosedTopology α
f g : β → α
l : Filter β
a : α
h : Tendsto f l (𝓝 a)
⊢ a = ((fun p => max p.1 p.2) ∘ fun y => (a, y)) a
tactic: convert ((continuous_max.comp (@Continuous.Prod.mk α α _ _ a)).tendsto a).comp h
state_before: case h.e'_5.h.e'_3
α : Type u
β : Type v
γ : Type w
inst✝² : TopologicalSpace α
inst✝¹ : LinearOrder α
inst✝ : OrderClosedTopology α
f g : β → α
l : Filter β
a : α
h : Tendsto f l (𝓝 a)
⊢ a = ((fun p => max p.1 p.2) ∘ fun y => (a, y)) a
state_after: no goals
tactic: simp
Theorem: CategoryTheory.ShortComplex.exact_and_mono_f_iff_of_iso
File: Mathlib/Algebra/Homology/ShortComplex/Exact.lean

Proof steps:
state_before: C : Type u_1
D : Type u_2
inst✝³ : Category.{u_3, u_1} C
inst✝² : Category.{?u.7193, u_2} D
inst✝¹ : HasZeroMorphisms C
inst✝ : HasZeroMorphisms D
S S₁ S₂ : ShortComplex C
e : S₁ ≅ S₂
⊢ S₁.Exact ∧ Mono S₁.f ↔ S₂.Exact ∧ Mono S₂.f
state_after: C : Type u_1
D : Type u_2
inst✝³ : Category.{u_3, u_1} C
inst✝² : Category.{?u.7193, u_2} D
inst✝¹ : HasZeroMorphisms C
inst✝ : HasZeroMorphisms D
S S₁ S₂ : ShortComplex C
e : S₁ ≅ S₂
this : Mono S₁.f ↔ Mono S₂.f
⊢ S₁.Exact ∧ Mono S₁.f ↔ S₂.Exact ∧ Mono S₂.f
tactic: have : Mono S₁.f ↔ Mono S₂.f :=
    (MorphismProperty.monomorphisms C).arrow_mk_iso_iff
      (Arrow.isoMk (ShortComplex.π₁.mapIso e) (ShortComplex.π₂.mapIso e) e.hom.comm₁₂)
state_before: C : Type u_1
D : Type u_2
inst✝³ : Category.{u_3, u_1} C
inst✝² : Category.{?u.7193, u_2} D
inst✝¹ : HasZeroMorphisms C
inst✝ : HasZeroMorphisms D
S S₁ S₂ : ShortComplex C
e : S₁ ≅ S₂
this : Mono S₁.f ↔ Mono S₂.f
⊢ S₁.Exact ∧ Mono S₁.f ↔ S₂.Exact ∧ Mono S₂.f
state_after: no goals
tactic: rw [exact_iff_of_iso e, this]
Theorem: ModuleCat.free_map
File: Mathlib/Algebra/Category/ModuleCat/Adjunctions.lean

Proof steps:
state_before: R : Type u
inst✝ : Ring R
⊢ ∀ (X : Type u),
    { obj := fun X => of R (X →₀ R), map := fun {X Y} f => Finsupp.lmapDomain R R f }.map (𝟙 X) =
      𝟙 ({ obj := fun X => of R (X →₀ R), map := fun {X Y} f => Finsupp.lmapDomain R R f }.obj X)
state_after: R : Type u
inst✝ : Ring R
X✝ : Type u
⊢ { obj := fun X => of R (X →₀ R), map := fun {X Y} f => Finsupp.lmapDomain R R f }.map (𝟙 X✝) =
    𝟙 ({ obj := fun X => of R (X →₀ R), map := fun {X Y} f => Finsupp.lmapDomain R R f }.obj X✝)
tactic: intros
state_before: R : Type u
inst✝ : Ring R
X✝ : Type u
⊢ { obj := fun X => of R (X →₀ R), map := fun {X Y} f => Finsupp.lmapDomain R R f }.map (𝟙 X✝) =
    𝟙 ({ obj := fun X => of R (X →₀ R), map := fun {X Y} f => Finsupp.lmapDomain R R f }.obj X✝)
state_after: no goals
tactic: exact Finsupp.lmapDomain_id _ _
state_before: R : Type u
inst✝ : Ring R
⊢ ∀ {X Y Z : Type u} (f : X ⟶ Y) (g : Y ⟶ Z),
    { obj := fun X => of R (X →₀ R), map := fun {X Y} f => Finsupp.lmapDomain R R f }.map (f ≫ g) =
      { obj := fun X => of R (X →₀ R), map := fun {X Y} f => Finsupp.lmapDomain R R f }.map f ≫
        { obj := fun X => of R (X →₀ R), map := fun {X Y} f => Finsupp.lmapDomain R R f }.map g
state_after: R : Type u
inst✝ : Ring R
X✝ Y✝ Z✝ : Type u
f✝ : X✝ ⟶ Y✝
g✝ : Y✝ ⟶ Z✝
⊢ { obj := fun X => of R (X →₀ R), map := fun {X Y} f => Finsupp.lmapDomain R R f }.map (f✝ ≫ g✝) =
    { obj := fun X => of R (X →₀ R), map := fun {X Y} f => Finsupp.lmapDomain R R f }.map f✝ ≫
      { obj := fun X => of R (X →₀ R), map := fun {X Y} f => Finsupp.lmapDomain R R f }.map g✝
tactic: intros
state_before: R : Type u
inst✝ : Ring R
X✝ Y✝ Z✝ : Type u
f✝ : X✝ ⟶ Y✝
g✝ : Y✝ ⟶ Z✝
⊢ { obj := fun X => of R (X →₀ R), map := fun {X Y} f => Finsupp.lmapDomain R R f }.map (f✝ ≫ g✝) =
    { obj := fun X => of R (X →₀ R), map := fun {X Y} f => Finsupp.lmapDomain R R f }.map f✝ ≫
      { obj := fun X => of R (X →₀ R), map := fun {X Y} f => Finsupp.lmapDomain R R f }.map g✝
state_after: no goals
tactic: exact Finsupp.lmapDomain_comp _ _ _ _
Theorem: MeasureTheory.measure_biUnion₀
File: Mathlib/MeasureTheory/Measure/MeasureSpace.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Type u_5
R : Type u_6
R' : Type u_7
m : MeasurableSpace α
μ μ₁ μ₂ : Measure α
s✝ s₁ s₂ t : Set α
s : Set β
f : β → Set α
hs : s.Countable
hd : s.Pairwise (AEDisjoint μ on f)
h : ∀ b ∈ s, NullMeasurableSet (f b) μ
⊢ μ (⋃ b ∈ s, f b) = ∑' (p : ↑s), μ (f ↑p)
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Type u_5
R : Type u_6
R' : Type u_7
m : MeasurableSpace α
μ μ₁ μ₂ : Measure α
s✝ s₁ s₂ t : Set α
s : Set β
f : β → Set α
hs : s.Countable
hd : s.Pairwise (AEDisjoint μ on f)
h : ∀ b ∈ s, NullMeasurableSet (f b) μ
this : Encodable ↑s
⊢ μ (⋃ b ∈ s, f b) = ∑' (p : ↑s), μ (f ↑p)
tactic: haveI := hs.toEncodable
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Type u_5
R : Type u_6
R' : Type u_7
m : MeasurableSpace α
μ μ₁ μ₂ : Measure α
s✝ s₁ s₂ t : Set α
s : Set β
f : β → Set α
hs : s.Countable
hd : s.Pairwise (AEDisjoint μ on f)
h : ∀ b ∈ s, NullMeasurableSet (f b) μ
this : Encodable ↑s
⊢ μ (⋃ b ∈ s, f b) = ∑' (p : ↑s), μ (f ↑p)
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Type u_5
R : Type u_6
R' : Type u_7
m : MeasurableSpace α
μ μ₁ μ₂ : Measure α
s✝ s₁ s₂ t : Set α
s : Set β
f : β → Set α
hs : s.Countable
hd : s.Pairwise (AEDisjoint μ on f)
h : ∀ b ∈ s, NullMeasurableSet (f b) μ
this : Encodable ↑s
⊢ μ (⋃ x, f ↑x) = ∑' (p : ↑s), μ (f ↑p)
tactic: rw [biUnion_eq_iUnion]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Type u_5
R : Type u_6
R' : Type u_7
m : MeasurableSpace α
μ μ₁ μ₂ : Measure α
s✝ s₁ s₂ t : Set α
s : Set β
f : β → Set α
hs : s.Countable
hd : s.Pairwise (AEDisjoint μ on f)
h : ∀ b ∈ s, NullMeasurableSet (f b) μ
this : Encodable ↑s
⊢ μ (⋃ x, f ↑x) = ∑' (p : ↑s), μ (f ↑p)
state_after: no goals
tactic: exact measure_iUnion₀ (hd.on_injective Subtype.coe_injective fun x => x.2) fun x => h x x.2
Theorem: preimage_add_closedBall
File: Mathlib/Analysis/Normed/Group/Basic.lean

Proof steps:
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₂ : ℝ
a b : E
r : ℝ
⊢ (fun x => b * x) ⁻¹' closedBall a r = closedBall (a / b) r
state_after: case h
𝓕 : 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₂ : ℝ
a b : E
r : ℝ
c : E
⊢ c ∈ (fun x => b * x) ⁻¹' closedBall a r ↔ c ∈ closedBall (a / b) r
tactic: ext c
state_before: case h
𝓕 : 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₂ : ℝ
a b : E
r : ℝ
c : E
⊢ c ∈ (fun x => b * x) ⁻¹' closedBall a r ↔ c ∈ closedBall (a / b) r
state_after: no goals
tactic: simp only [dist_eq_norm_div, Set.mem_preimage, mem_closedBall, div_div_eq_mul_div, mul_comm]
Theorem: WeierstrassCurve.Jacobian.addY_of_X_eq'
File: Mathlib/AlgebraicGeometry/EllipticCurve/Jacobian.lean

Proof steps:
state_before: R : Type u
inst✝¹ : CommRing R
W' : Jacobian R
F : Type v
inst✝ : Field F
W : Jacobian F
P Q : Fin 3 → R
hP : W'.Equation P
hQ : W'.Equation Q
hx : P x * Q z ^ 2 = Q x * P z ^ 2
⊢ W'.addY P Q * (P z * Q z) ^ 3 = (-(P y * Q z ^ 3 - Q y * P z ^ 3)) ^ 3
state_after: no goals
tactic: erw [addY, negY, addZ_of_X_eq hx, mul_zero, sub_zero, zero_pow three_ne_zero, mul_zero, sub_zero,
    neg_mul, negAddY_of_X_eq' hP hQ hx, Odd.neg_pow <| by decide]
Theorem: RelSeries.append_length
File: Mathlib/Order/RelSeries.lean

Proof steps:
state_before: α : Type u_1
r : Rel α α
β : Type u_2
s : Rel β β
p q : RelSeries r
connect : r p.last q.head
⊢ p.length + q.length + 1 + 1 = p.length + 1 + (q.length + 1)
state_after: no goals
tactic: abel
state_before: α : Type u_1
r : Rel α α
β : Type u_2
s : Rel β β
p q : RelSeries r
connect : r p.last q.head
i : Fin (p.length + q.length + 1)
⊢ r ((Fin.append p.toFun q.toFun ∘ Fin.cast ⋯) i.castSucc) ((Fin.append p.toFun q.toFun ∘ Fin.cast ⋯) i.succ)
state_after: case inl
α : Type u_1
r : Rel α α
β : Type u_2
s : Rel β β
p q : RelSeries r
connect : r p.last q.head
i : Fin (p.length + q.length + 1)
hi : i < Fin.castLE ⋯ (Fin.last p.length)
⊢ r ((Fin.append p.toFun q.toFun ∘ Fin.cast ⋯) i.castSucc) ((Fin.append p.toFun q.toFun ∘ Fin.cast ⋯) i.succ)

case inr.inl
α : Type u_1
r : Rel α α
β : Type u_2
s : Rel β β
p q : RelSeries r
connect : r p.last q.head
⊢ r ((Fin.append p.toFun q.toFun ∘ Fin.cast ⋯) (Fin.castLE ⋯ (Fin.last p.length)).castSucc)
    ((Fin.append p.toFun q.toFun ∘ Fin.cast ⋯) (Fin.castLE ⋯ (Fin.last p.length)).succ)

case inr.inr
α : Type u_1
r : Rel α α
β : Type u_2
s : Rel β β
p q : RelSeries r
connect : r p.last q.head
i : Fin (p.length + q.length + 1)
hi : Fin.castLE ⋯ (Fin.last p.length) < i
⊢ r ((Fin.append p.toFun q.toFun ∘ Fin.cast ⋯) i.castSucc) ((Fin.append p.toFun q.toFun ∘ Fin.cast ⋯) i.succ)
tactic: obtain hi | rfl | hi :=
      lt_trichotomy i (Fin.castLE (by omega) (Fin.last _ : Fin (p.length + 1)))
Theorem: Finset.finsuppAntidiag_empty_of_ne_zero
File: Mathlib/Algebra/Order/Antidiag/Finsupp.lean

Proof steps:
state_before: ι : Type u_1
μ : Type u_2
μ' : Type u_3
inst✝³ : DecidableEq ι
inst✝² : AddCommMonoid μ
inst✝¹ : HasAntidiagonal μ
inst✝ : DecidableEq μ
s : Finset ι
n : μ
f : ι →₀ μ
hn : n ≠ 0
⊢ ∀ (x : ι →₀ μ), x ∉ ∅.finsuppAntidiag n
state_after: no goals
tactic: simp [@eq_comm _ 0, hn.symm]
Theorem: CategoryTheory.ShortComplex.rightHomologyMapIso_hom
File: Mathlib/Algebra/Homology/ShortComplex/RightHomology.lean

Proof steps:
state_before: C : Type u_1
inst✝³ : Category.{?u.119316, u_1} C
inst✝² : HasZeroMorphisms C
S S₁ S₂ S₃ : ShortComplex C
e : S₁ ≅ S₂
inst✝¹ : S₁.HasRightHomology
inst✝ : S₂.HasRightHomology
⊢ rightHomologyMap e.hom ≫ rightHomologyMap e.inv = 𝟙 S₁.rightHomology
state_after: no goals
tactic: rw [← rightHomologyMap_comp, e.hom_inv_id, rightHomologyMap_id]
state_before: C : Type u_1
inst✝³ : Category.{?u.119316, u_1} C
inst✝² : HasZeroMorphisms C
S S₁ S₂ S₃ : ShortComplex C
e : S₁ ≅ S₂
inst✝¹ : S₁.HasRightHomology
inst✝ : S₂.HasRightHomology
⊢ rightHomologyMap e.inv ≫ rightHomologyMap e.hom = 𝟙 S₂.rightHomology
state_after: no goals
tactic: rw [← rightHomologyMap_comp, e.inv_hom_id, rightHomologyMap_id]
Theorem: Polynomial.Separable.of_mul_left
File: Mathlib/FieldTheory/Separable.lean

Proof steps:
state_before: R : Type u
inst✝¹ : CommSemiring R
S : Type v
inst✝ : CommSemiring S
f g : R[X]
h : (f * g).Separable
⊢ f.Separable
state_after: R : Type u
inst✝¹ : CommSemiring R
S : Type v
inst✝ : CommSemiring S
f g : R[X]
h : (f * g).Separable
this : IsCoprime f (derivative (f * g))
⊢ f.Separable
tactic: have := h.of_mul_left_left
state_before: R : Type u
inst✝¹ : CommSemiring R
S : Type v
inst✝ : CommSemiring S
f g : R[X]
h : (f * g).Separable
this : IsCoprime f (derivative (f * g))
⊢ f.Separable
state_after: R : Type u
inst✝¹ : CommSemiring R
S : Type v
inst✝ : CommSemiring S
f g : R[X]
h : (f * g).Separable
this : IsCoprime f (derivative f * g + f * derivative g)
⊢ f.Separable
tactic: rw [derivative_mul] at this
state_before: R : Type u
inst✝¹ : CommSemiring R
S : Type v
inst✝ : CommSemiring S
f g : R[X]
h : (f * g).Separable
this : IsCoprime f (derivative f * g + f * derivative g)
⊢ f.Separable
state_after: no goals
tactic: exact IsCoprime.of_mul_right_left (IsCoprime.of_add_mul_left_right this)
Theorem: Polynomial.reverse_neg
File: Mathlib/Algebra/Polynomial/Reverse.lean

Proof steps:
state_before: R : Type u_1
inst✝ : Ring R
f : R[X]
⊢ (-f).reverse = -f.reverse
state_after: no goals
tactic: rw [reverse, reverse, reflect_neg, natDegree_neg]
Theorem: PowerSeries.coeff_monomial
File: Mathlib/RingTheory/PowerSeries/Basic.lean

Proof steps:
state_before: R : Type u_1
inst✝ : Semiring R
m n : ℕ
a : R
⊢ (if single () m = single () n then a else 0) = if m = n then a else 0
state_after: no goals
tactic: simp only [Finsupp.unique_single_eq_iff]
Theorem: Set.Ioc_inter_Ioo_of_right_le
File: Mathlib/Order/Interval/Set/Basic.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
inst✝¹ : LinearOrder α
inst✝ : LinearOrder β
f : α → β
a a₁ a₂ b b₁ b₂ c d : α
h : b₂ ≤ b₁
x : α
⊢ x ∈ Ioc a₁ b₁ ∩ Ioo a₂ b₂ ↔ x ∈ Ioo (max a₁ a₂) b₂
state_after: no goals
tactic: simp [and_assoc, @and_left_comm (x ≤ _),
      and_iff_right_iff_imp.2 fun h' => (le_of_lt h').trans h]
Theorem: SimpleGraph.Walk.mem_edges_toSubgraph
File: Mathlib/Combinatorics/SimpleGraph/Connectivity/Subgraph.lean

Proof steps:
state_before: V : Type u
V' : Type v
G : SimpleGraph V
G' : SimpleGraph V'
u v w : V
p : G.Walk u v
e : Sym2 V
⊢ e ∈ p.toSubgraph.edgeSet ↔ e ∈ p.edges
state_after: no goals
tactic: induction p <;> simp [*]
Theorem: Finset.disjoint_insert_left
File: Mathlib/Data/Finset/Basic.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : DecidableEq α
s t u v : Finset α
a b : α
⊢ _root_.Disjoint (insert a s) t ↔ a ∉ t ∧ _root_.Disjoint s t
state_after: no goals
tactic: simp only [disjoint_left, mem_insert, or_imp, forall_and, forall_eq]