ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
Theorem: invertible_unique
File: Mathlib/Algebra/Group/Invertible/Defs.lean

Proof steps:
state_before: α✝ α : Type u
inst✝² : Monoid α
a b : α
inst✝¹ : Invertible a
inst✝ : Invertible b
h : a = b
⊢ ⅟a = ⅟b
state_after: case hac
α✝ α : Type u
inst✝² : Monoid α
a b : α
inst✝¹ : Invertible a
inst✝ : Invertible b
h : a = b
⊢ a * ⅟b = 1
tactic: apply invOf_eq_right_inv
state_before: case hac
α✝ α : Type u
inst✝² : Monoid α
a b : α
inst✝¹ : Invertible a
inst✝ : Invertible b
h : a = b
⊢ a * ⅟b = 1
state_after: no goals
tactic: rw [h, mul_invOf_self]
Theorem: Real.isCauSeq_iff_lift
File: Mathlib/Data/Real/Archimedean.lean

Proof steps:
state_before: f : ℕ → ℚ
H : IsCauSeq abs f
ε : ℝ
ε0 : ε > 0
δ : ℚ
δ0 : 0 < δ
δε : ↑δ < ε
i : ℕ
hi : ∀ j ≥ i, |f j - f i| < δ
j : ℕ
ij : j ≥ i
⊢ |(fun i => ↑(f i)) j - (fun i => ↑(f i)) i| < ε
state_after: f : ℕ → ℚ
H : IsCauSeq abs f
ε : ℝ
ε0 : ε > 0
δ : ℚ
δ0 : 0 < δ
δε : ↑δ < ε
i : ℕ
hi : ∀ j ≥ i, |f j - f i| < δ
j : ℕ
ij : j ≥ i
⊢ |↑(f j) - ↑(f i)| < ε
tactic: dsimp
state_before: f : ℕ → ℚ
H : IsCauSeq abs f
ε : ℝ
ε0 : ε > 0
δ : ℚ
δ0 : 0 < δ
δε : ↑δ < ε
i : ℕ
hi : ∀ j ≥ i, |f j - f i| < δ
j : ℕ
ij : j ≥ i
⊢ |↑(f j) - ↑(f i)| < ε
state_after: no goals
tactic: exact lt_trans (mod_cast hi _ ij) δε
state_before: f : ℕ → ℚ
H : IsCauSeq abs fun i => ↑(f i)
ε : ℚ
ε0 : ε > 0
i : ℕ
hi : ∀ j ≥ i, |(fun i => ↑(f i)) j - (fun i => ↑(f i)) i| < ↑ε
j : ℕ
ij : j ≥ i
⊢ |f j - f i| < ε
state_after: f : ℕ → ℚ
H : IsCauSeq abs fun i => ↑(f i)
ε : ℚ
ε0 : ε > 0
i : ℕ
hi : ∀ j ≥ i, |↑(f j) - ↑(f i)| < ↑ε
j : ℕ
ij : j ≥ i
⊢ |f j - f i| < ε
tactic: dsimp at hi
state_before: f : ℕ → ℚ
H : IsCauSeq abs fun i => ↑(f i)
ε : ℚ
ε0 : ε > 0
i : ℕ
hi : ∀ j ≥ i, |↑(f j) - ↑(f i)| < ↑ε
j : ℕ
ij : j ≥ i
⊢ |f j - f i| < ε
state_after: no goals
tactic: exact mod_cast hi _ ij
Theorem: neg_one_mul
File: Mathlib/Algebra/Ring/Defs.lean

Proof steps:
state_before: α : Type u
β : Type v
γ : Type w
R : Type x
inst✝¹ : MulOneClass α
inst✝ : HasDistribNeg α
a : α
⊢ -1 * a = -a
state_after: no goals
tactic: simp
Theorem: Quandle.fix_inv
File: Mathlib/Algebra/Quandle.lean

Proof steps:
state_before: Q : Type u_1
inst✝ : Quandle Q
x : Q
⊢ x ◃⁻¹ x = x
state_after: Q : Type u_1
inst✝ : Quandle Q
x : Q
⊢ x ◃ x ◃⁻¹ x = x ◃ x
tactic: rw [← left_cancel x]
state_before: Q : Type u_1
inst✝ : Quandle Q
x : Q
⊢ x ◃ x ◃⁻¹ x = x ◃ x
state_after: no goals
tactic: simp
Theorem: Algebra.isIntegral_sup
File: Mathlib/RingTheory/IntegralClosure/IsIntegralClosure/Basic.lean

Proof steps:
state_before: R : Type u_1
A : Type u_2
B : Type u_3
S✝ : Type u_4
inst✝⁵ : CommRing R
inst✝⁴ : CommRing A
inst✝³ : Ring B
inst✝² : CommRing S✝
inst✝¹ : Algebra R A
inst✝ : Algebra R B
f✝ f : R →+* S✝
S T : Subalgebra R A
⊢ Algebra.IsIntegral R ↥(S ⊔ T) ↔ Algebra.IsIntegral R ↥S ∧ Algebra.IsIntegral R ↥T
state_after: no goals
tactic: simp only [← le_integralClosure_iff_isIntegral, sup_le_iff]
Theorem: Multiset.disjoint_sum_left
File: Mathlib/Algebra/BigOperators/Group/Finset.lean

Proof steps:
state_before: ι : Type u_1
κ : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
s s₁ s₂ : Finset α
a✝ : α
f g : α → β
a : Multiset α
i : Multiset (Multiset α)
l : List (Multiset α)
⊢ (sum ⟦l⟧).Disjoint a ↔ ∀ b ∈ ⟦l⟧, b.Disjoint a
state_after: ι : Type u_1
κ : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
s s₁ s₂ : Finset α
a✝ : α
f g : α → β
a : Multiset α
i : Multiset (Multiset α)
l : List (Multiset α)
⊢ l.sum.Disjoint a ↔ ∀ b ∈ ↑l, b.Disjoint a
tactic: rw [quot_mk_to_coe, Multiset.sum_coe]
state_before: ι : Type u_1
κ : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
s s₁ s₂ : Finset α
a✝ : α
f g : α → β
a : Multiset α
i : Multiset (Multiset α)
l : List (Multiset α)
⊢ l.sum.Disjoint a ↔ ∀ b ∈ ↑l, b.Disjoint a
state_after: no goals
tactic: exact disjoint_list_sum_left
Theorem: Submodule.quotDualCoannihilatorToDual_nondegenerate
File: Mathlib/LinearAlgebra/Dual.lean

Proof steps:
state_before: R : Type u_1
M : Type u_2
M' : Type u_3
inst✝⁴ : CommRing R
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : AddCommGroup M'
inst✝ : Module R M'
W : Submodule R (Dual R M)
⊢ W.quotDualCoannihilatorToDual.Nondegenerate
state_after: R : Type u_1
M : Type u_2
M' : Type u_3
inst✝⁴ : CommRing R
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : AddCommGroup M'
inst✝ : Module R M'
W : Submodule R (Dual R M)
⊢ ker W.quotDualCoannihilatorToDual = ⊥ ∧ ker W.quotDualCoannihilatorToDual.flip = ⊥
tactic: rw [Nondegenerate, separatingLeft_iff_ker_eq_bot, separatingRight_iff_flip_ker_eq_bot]
state_before: R : Type u_1
M : Type u_2
M' : Type u_3
inst✝⁴ : CommRing R
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : AddCommGroup M'
inst✝ : Module R M'
W : Submodule R (Dual R M)
⊢ ker W.quotDualCoannihilatorToDual = ⊥ ∧ ker W.quotDualCoannihilatorToDual.flip = ⊥
state_after: R : Type u_1
M : Type u_2
M' : Type u_3
inst✝⁴ : CommRing R
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : AddCommGroup M'
inst✝ : Module R M'
W : Submodule R (Dual R M)
this : AddCommGroup ↥W := inferInstance
⊢ ker W.quotDualCoannihilatorToDual = ⊥ ∧ ker W.quotDualCoannihilatorToDual.flip = ⊥
tactic: letI : AddCommGroup W := inferInstance
state_before: R : Type u_1
M : Type u_2
M' : Type u_3
inst✝⁴ : CommRing R
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : AddCommGroup M'
inst✝ : Module R M'
W : Submodule R (Dual R M)
this : AddCommGroup ↥W := inferInstance
⊢ ker W.quotDualCoannihilatorToDual = ⊥ ∧ ker W.quotDualCoannihilatorToDual.flip = ⊥
state_after: R : Type u_1
M : Type u_2
M' : Type u_3
inst✝⁴ : CommRing R
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : AddCommGroup M'
inst✝ : Module R M'
W : Submodule R (Dual R M)
this : AddCommGroup ↥W := inferInstance
⊢ Function.Injective ⇑W.quotDualCoannihilatorToDual ∧ Function.Injective ⇑W.quotDualCoannihilatorToDual.flip
tactic: simp_rw [ker_eq_bot]
state_before: R : Type u_1
M : Type u_2
M' : Type u_3
inst✝⁴ : CommRing R
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : AddCommGroup M'
inst✝ : Module R M'
W : Submodule R (Dual R M)
this : AddCommGroup ↥W := inferInstance
⊢ Function.Injective ⇑W.quotDualCoannihilatorToDual ∧ Function.Injective ⇑W.quotDualCoannihilatorToDual.flip
state_after: no goals
tactic: exact ⟨W.quotDualCoannihilatorToDual_injective, W.flip_quotDualCoannihilatorToDual_injective⟩
Theorem: Valued.norm_add_le
File: Mathlib/Topology/Algebra/Valued/NormedValued.lean

Proof steps:
state_before: K : Type u_1
hK : NormedField K
h : IsNonarchimedean (sorryAx (K → ℝ) true)
L : Type u_2
inst✝¹ : Field L
Γ₀ : Type u_3
inst✝ : LinearOrderedCommGroupWithZero Γ₀
val : Valued L Γ₀
hv : v.RankOne
x y : L
⊢ norm (x + y) ≤ max (norm x) (norm y)
state_after: K : Type u_1
hK : NormedField K
h : IsNonarchimedean (sorryAx (K → ℝ) true)
L : Type u_2
inst✝¹ : Field L
Γ₀ : Type u_3
inst✝ : LinearOrderedCommGroupWithZero Γ₀
val : Valued L Γ₀
hv : v.RankOne
x y : L
⊢ v (x + y) ≤ v x ∨ v (x + y) ≤ v y
tactic: simp only [norm, NNReal.coe_le_coe, le_max_iff, StrictMono.le_iff_le hv.strictMono]
state_before: K : Type u_1
hK : NormedField K
h : IsNonarchimedean (sorryAx (K → ℝ) true)
L : Type u_2
inst✝¹ : Field L
Γ₀ : Type u_3
inst✝ : LinearOrderedCommGroupWithZero Γ₀
val : Valued L Γ₀
hv : v.RankOne
x y : L
⊢ v (x + y) ≤ v x ∨ v (x + y) ≤ v y
state_after: no goals
tactic: exact le_max_iff.mp (Valuation.map_add_le_max' val.v _ _)
Theorem: List.perm_replicate
File: .lake/packages/batteries/Batteries/Data/List/Perm.lean

Proof steps:
state_before: α : Type u_1
n : Nat
a : α
l : List α
⊢ l ~ replicate n a ↔ l = replicate n a
state_after: α : Type u_1
n : Nat
a : α
l : List α
p : l ~ replicate n a
⊢ l.length = n ∧ ∀ (b : α), b ∈ l → b = a
tactic: refine ⟨fun p => eq_replicate.2 ?_, fun h => h ▸ .rfl⟩
state_before: α : Type u_1
n : Nat
a : α
l : List α
p : l ~ replicate n a
⊢ l.length = n ∧ ∀ (b : α), b ∈ l → b = a
state_after: no goals
tactic: exact ⟨p.length_eq.trans <| length_replicate .., fun _b m => eq_of_mem_replicate <| p.subset m⟩
Theorem: NNRat.toNNRat_sum_of_nonneg
File: Mathlib/Data/NNRat/BigOperators.lean

Proof steps:
state_before: ι : Type u_1
α : Type u_2
s : Finset α
f : α → ℚ
hf : ∀ a ∈ s, 0 ≤ f a
⊢ (∑ a ∈ s, f a).toNNRat = ∑ a ∈ s, (f a).toNNRat
state_after: ι : Type u_1
α : Type u_2
s : Finset α
f : α → ℚ
hf : ∀ a ∈ s, 0 ≤ f a
⊢ ∑ i ∈ s, f i = ∑ a ∈ s, ↑(f a).toNNRat
tactic: rw [← coe_inj, coe_sum, Rat.coe_toNNRat _ (Finset.sum_nonneg hf)]
state_before: ι : Type u_1
α : Type u_2
s : Finset α
f : α → ℚ
hf : ∀ a ∈ s, 0 ≤ f a
⊢ ∑ i ∈ s, f i = ∑ a ∈ s, ↑(f a).toNNRat
state_after: no goals
tactic: exact Finset.sum_congr rfl fun x hxs ↦ by rw [Rat.coe_toNNRat _ (hf x hxs)]
Theorem: Int.cast_pow
File: Mathlib/Algebra/Ring/Int.lean

Proof steps:
state_before: R : Type u_1
inst✝ : Ring R
n : ℤ
m : ℕ
⊢ ↑(n ^ m) = ↑n ^ m
state_after: no goals
tactic: induction' m with m ih <;> simp [_root_.pow_succ, *]
Theorem: cmp_compares
File: Mathlib/Order/Compare.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
inst✝ : LinearOrder α
a b : α
⊢ (cmp a b).Compares a b
state_after: no goals
tactic: obtain h | h | h := lt_trichotomy a b <;> simp [cmp, cmpUsing, h, h.not_lt]
Theorem: MvPolynomial.algebraTensorAlgEquiv_tmul
File: Mathlib/RingTheory/TensorProduct/MvPolynomial.lean

Proof steps:
state_before: R : Type u
M : Type v
N : Type w
inst✝⁹ : CommSemiring R
inst✝⁸ : AddCommMonoid M
inst✝⁷ : Module R M
σ : Type u_1
inst✝⁶ : DecidableEq σ
S : Type u_2
inst✝⁵ : CommSemiring S
inst✝⁴ : Algebra R S
inst✝³ : CommSemiring N
inst✝² : Algebra R N
A : Type u_3
inst✝¹ : CommSemiring A
inst✝ : Algebra R A
a : A
p : MvPolynomial σ R
⊢ (algebraTensorAlgEquiv R A) (a ⊗ₜ[R] p) = a • (map (algebraMap R A)) p
state_after: R : Type u
M : Type v
N : Type w
inst✝⁹ : CommSemiring R
inst✝⁸ : AddCommMonoid M
inst✝⁷ : Module R M
σ : Type u_1
inst✝⁶ : DecidableEq σ
S : Type u_2
inst✝⁵ : CommSemiring S
inst✝⁴ : Algebra R S
inst✝³ : CommSemiring N
inst✝² : Algebra R N
A : Type u_3
inst✝¹ : CommSemiring A
inst✝ : Algebra R A
a : A
p : MvPolynomial σ R
⊢ (Algebra.ofId A (MvPolynomial σ A)) a * eval₂ (C.comp ↑(Algebra.ofId R A)) X p = C a * (map (algebraMap R A)) p
tactic: simp [algebraTensorAlgEquiv, Algebra.smul_def]
state_before: R : Type u
M : Type v
N : Type w
inst✝⁹ : CommSemiring R
inst✝⁸ : AddCommMonoid M
inst✝⁷ : Module R M
σ : Type u_1
inst✝⁶ : DecidableEq σ
S : Type u_2
inst✝⁵ : CommSemiring S
inst✝⁴ : Algebra R S
inst✝³ : CommSemiring N
inst✝² : Algebra R N
A : Type u_3
inst✝¹ : CommSemiring A
inst✝ : Algebra R A
a : A
p : MvPolynomial σ R
⊢ (Algebra.ofId A (MvPolynomial σ A)) a * eval₂ (C.comp ↑(Algebra.ofId R A)) X p = C a * (map (algebraMap R A)) p
state_after: no goals
tactic: rfl
Theorem: frontier_ball
File: Mathlib/Analysis/NormedSpace/Real.lean

Proof steps:
state_before: E : Type u_1
inst✝¹ : SeminormedAddCommGroup E
inst✝ : NormedSpace ℝ E
x : E
r : ℝ
hr : r ≠ 0
⊢ frontier (ball x r) = sphere x r
state_after: no goals
tactic: rw [frontier, closure_ball x hr, isOpen_ball.interior_eq, closedBall_diff_ball]
Theorem: Stream'.WSeq.ofList_cons
File: Mathlib/Data/Seq/WSeq.lean

Proof steps:
state_before: α : Type u
β : Type v
γ : Type w
a : α
l : List α
⊢ Seq.map some ↑(a :: l) = Seq.cons (some a) (Seq.map some ↑l)
state_after: no goals
tactic: simp
Theorem: Set.infsep_pos
File: Mathlib/Topology/MetricSpace/Infsep.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
inst✝ : EDist α
x y : α
s : Set α
⊢ 0 < s.infsep ↔ 0 < s.einfsep ∧ s.einfsep < ⊤
state_after: no goals
tactic: simp_rw [infsep, ENNReal.toReal_pos_iff]
Theorem: SemilinearMapClass.map_smul_inv
File: Mathlib/Algebra/Module/LinearMap/Defs.lean

Proof steps:
state_before: R : Type u_1
R₁ : Type u_2
R₂ : Type u_3
R₃ : Type u_4
k : Type u_5
S : Type u_6
S₃ : Type u_7
T : Type u_8
M : Type u_9
M₁ : Type u_10
M₂ : Type u_11
M₃ : Type u_12
N₁ : Type u_13
N₂ : Type u_14
N₃ : Type u_15
ι : Type u_16
F : Type u_17
inst✝¹¹ : Semiring R
inst✝¹⁰ : Semiring S
inst✝⁹ : AddCommMonoid M
inst✝⁸ : AddCommMonoid M₁
inst✝⁷ : AddCommMonoid M₂
inst✝⁶ : AddCommMonoid M₃
inst✝⁵ : Module R M
inst✝⁴ : Module R M₂
inst✝³ : Module S M₃
σ : R →+* S
f : F
inst✝² : FunLike F M M₃
inst✝¹ : SemilinearMapClass F σ M M₃
σ' : S →+* R
inst✝ : RingHomInvPair σ σ'
c : S
x : M
⊢ c • f x = f (σ' c • x)
state_after: no goals
tactic: simp [map_smulₛₗ _]
Theorem: Ideal.map_fst_prod
File: Mathlib/RingTheory/Ideal/Prod.lean

Proof steps:
state_before: R : Type u
S : Type v
inst✝¹ : Semiring R
inst✝ : Semiring S
I✝ I' : Ideal R
J✝ J' : Ideal S
I : Ideal R
J : Ideal S
⊢ map (RingHom.fst R S) (I.prod J) = I
state_after: case h
R : Type u
S : Type v
inst✝¹ : Semiring R
inst✝ : Semiring S
I✝ I' : Ideal R
J✝ J' : Ideal S
I : Ideal R
J : Ideal S
x : R
⊢ x ∈ map (RingHom.fst R S) (I.prod J) ↔ x ∈ I
tactic: ext x
state_before: case h
R : Type u
S : Type v
inst✝¹ : Semiring R
inst✝ : Semiring S
I✝ I' : Ideal R
J✝ J' : Ideal S
I : Ideal R
J : Ideal S
x : R
⊢ x ∈ map (RingHom.fst R S) (I.prod J) ↔ x ∈ I
state_after: case h
R : Type u
S : Type v
inst✝¹ : Semiring R
inst✝ : Semiring S
I✝ I' : Ideal R
J✝ J' : Ideal S
I : Ideal R
J : Ideal S
x : R
⊢ (∃ x_1 ∈ I.prod J, (RingHom.fst R S) x_1 = x) ↔ x ∈ I
tactic: rw [mem_map_iff_of_surjective (RingHom.fst R S) Prod.fst_surjective]
state_before: case h
R : Type u
S : Type v
inst✝¹ : Semiring R
inst✝ : Semiring S
I✝ I' : Ideal R
J✝ J' : Ideal S
I : Ideal R
J : Ideal S
x : R
⊢ (∃ x_1 ∈ I.prod J, (RingHom.fst R S) x_1 = x) ↔ x ∈ I
state_after: no goals
tactic: exact
    ⟨by
      rintro ⟨x, ⟨h, rfl⟩⟩
      exact h.1, fun h => ⟨⟨x, 0⟩, ⟨⟨h, Ideal.zero_mem _⟩, rfl⟩⟩⟩
Theorem: SimpleGraph.TripartiteFromTriangles.card_triangles
File: Mathlib/Combinatorics/SimpleGraph/Triangle/Tripartite.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
𝕜 : Type u_4
inst✝⁷ : LinearOrderedField 𝕜
t : Finset (α × β × γ)
a a' : α
b b' : β
c c' : γ
x : α × β × γ
ε : 𝕜
inst✝⁶ : DecidableEq α
inst✝⁵ : DecidableEq β
inst✝⁴ : DecidableEq γ
inst✝³ : Fintype α
inst✝² : Fintype β
inst✝¹ : Fintype γ
inst✝ : NoAccidental t
⊢ ((graph t).cliqueFinset 3).card = t.card
state_after: no goals
tactic: rw [cliqueFinset_eq_map, card_map]
Theorem: measurable_measure_prod_mk_left_finite
File: Mathlib/MeasureTheory/Constructions/Prod/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
inst✝⁶ : MeasurableSpace α
inst✝⁵ : MeasurableSpace α'
inst✝⁴ : MeasurableSpace β
inst✝³ : MeasurableSpace β'
inst✝² : MeasurableSpace γ
μ μ' : Measure α
ν ν' : Measure β
τ : Measure γ
inst✝¹ : NormedAddCommGroup E
inst✝ : IsFiniteMeasure ν
s : Set (α × β)
hs : MeasurableSet s
⊢ Measurable fun x => ν (Prod.mk x ⁻¹' s)
state_after: case refine_1
α : Type u_1
α' : Type u_2
β : Type u_3
β' : Type u_4
γ : Type u_5
E : Type u_6
inst✝⁶ : MeasurableSpace α
inst✝⁵ : MeasurableSpace α'
inst✝⁴ : MeasurableSpace β
inst✝³ : MeasurableSpace β'
inst✝² : MeasurableSpace γ
μ μ' : Measure α
ν ν' : Measure β
τ : Measure γ
inst✝¹ : NormedAddCommGroup E
inst✝ : IsFiniteMeasure ν
s : Set (α × β)
hs : MeasurableSet s
⊢ (fun s => Measurable fun x => ν (Prod.mk x ⁻¹' s)) ∅

case refine_2
α : Type u_1
α' : Type u_2
β : Type u_3
β' : Type u_4
γ : Type u_5
E : Type u_6
inst✝⁶ : MeasurableSpace α
inst✝⁵ : MeasurableSpace α'
inst✝⁴ : MeasurableSpace β
inst✝³ : MeasurableSpace β'
inst✝² : MeasurableSpace γ
μ μ' : Measure α
ν ν' : Measure β
τ : Measure γ
inst✝¹ : NormedAddCommGroup E
inst✝ : IsFiniteMeasure ν
s : Set (α × β)
hs : MeasurableSet s
⊢ ∀ t ∈ image2 (fun x x_1 => x ×ˢ x_1) {s | MeasurableSet s} {t | MeasurableSet t},
    (fun s => Measurable fun x => ν (Prod.mk x ⁻¹' s)) t

case refine_3
α : Type u_1
α' : Type u_2
β : Type u_3
β' : Type u_4
γ : Type u_5
E : Type u_6
inst✝⁶ : MeasurableSpace α
inst✝⁵ : MeasurableSpace α'
inst✝⁴ : MeasurableSpace β
inst✝³ : MeasurableSpace β'
inst✝² : MeasurableSpace γ
μ μ' : Measure α
ν ν' : Measure β
τ : Measure γ
inst✝¹ : NormedAddCommGroup E
inst✝ : IsFiniteMeasure ν
s : Set (α × β)
hs : MeasurableSet s
⊢ ∀ (t : Set (α × β)),
    MeasurableSet t →
      (fun s => Measurable fun x => ν (Prod.mk x ⁻¹' s)) t → (fun s => Measurable fun x => ν (Prod.mk x ⁻¹' s)) tᶜ

case refine_4
α : Type u_1
α' : Type u_2
β : Type u_3
β' : Type u_4
γ : Type u_5
E : Type u_6
inst✝⁶ : MeasurableSpace α
inst✝⁵ : MeasurableSpace α'
inst✝⁴ : MeasurableSpace β
inst✝³ : MeasurableSpace β'
inst✝² : MeasurableSpace γ
μ μ' : Measure α
ν ν' : Measure β
τ : Measure γ
inst✝¹ : NormedAddCommGroup E
inst✝ : IsFiniteMeasure ν
s : Set (α × β)
hs : MeasurableSet s
⊢ ∀ (f : ℕ → Set (α × β)),
    Pairwise (Disjoint on f) →
      (∀ (i : ℕ), MeasurableSet (f i)) →
        (∀ (i : ℕ), (fun s => Measurable fun x => ν (Prod.mk x ⁻¹' s)) (f i)) →
          (fun s => Measurable fun x => ν (Prod.mk x ⁻¹' s)) (⋃ i, f i)
tactic: refine induction_on_inter (C := fun s => Measurable fun x => ν (Prod.mk x ⁻¹' s))
    generateFrom_prod.symm isPiSystem_prod ?_ ?_ ?_ ?_ hs
Theorem: MeasureTheory.extend_eq
File: Mathlib/MeasureTheory/OuterMeasure/Induced.lean

Proof steps:
state_before: α : Type u_1
P : α → Prop
m : (s : α) → P s → ℝ≥0∞
s : α
h : P s
⊢ extend m s = m s h
state_after: no goals
tactic: simp [extend, h]
Theorem: Nat.digits_def'
File: Mathlib/Data/Nat/Digits.lean

Proof steps:
state_before: n n✝ : ℕ
h : 1 < 0
⊢ ¬1 < 0
state_after: no goals
tactic: decide
state_before: n n✝ : ℕ
h : 1 < 1
⊢ ¬1 < 1
state_after: no goals
tactic: decide
state_before: n n✝ b : ℕ
x✝ : 1 < b + 2
⊢ 2 ≤ b + 2
state_after: no goals
tactic: simp
Theorem: blimsup_cthickening_ae_eq_blimsup_thickening
File: Mathlib/MeasureTheory/Covering/LiminfLimsup.lean

Proof steps:
state_before: α : Type u_1
inst✝⁵ : MetricSpace α
inst✝⁴ : SecondCountableTopology α
inst✝³ : MeasurableSpace α
inst✝² : BorelSpace α
μ : Measure α
inst✝¹ : IsLocallyFiniteMeasure μ
inst✝ : IsUnifLocDoublingMeasure μ
p : ℕ → Prop
s : ℕ → Set α
r : ℕ → ℝ
hr : Tendsto r atTop (𝓝 0)
hr' : ∀ᶠ (i : ℕ) in atTop, p i → 0 < r i
⊢ blimsup (fun i => cthickening (r i) (s i)) atTop p =ᶠ[ae μ] blimsup (fun i => thickening (r i) (s i)) atTop p
state_after: case refine_1
α : Type u_1
inst✝⁵ : MetricSpace α
inst✝⁴ : SecondCountableTopology α
inst✝³ : MeasurableSpace α
inst✝² : BorelSpace α
μ : Measure α
inst✝¹ : IsLocallyFiniteMeasure μ
inst✝ : IsUnifLocDoublingMeasure μ
p : ℕ → Prop
s : ℕ → Set α
r : ℕ → ℝ
hr : Tendsto r atTop (𝓝 0)
hr' : ∀ᶠ (i : ℕ) in atTop, p i → 0 < r i
⊢ blimsup (fun i => cthickening (r i) (s i)) atTop p ≤ᶠ[ae μ] blimsup (fun i => thickening (r i) (s i)) atTop p

case refine_2
α : Type u_1
inst✝⁵ : MetricSpace α
inst✝⁴ : SecondCountableTopology α
inst✝³ : MeasurableSpace α
inst✝² : BorelSpace α
μ : Measure α
inst✝¹ : IsLocallyFiniteMeasure μ
inst✝ : IsUnifLocDoublingMeasure μ
p : ℕ → Prop
s : ℕ → Set α
r : ℕ → ℝ
hr : Tendsto r atTop (𝓝 0)
hr' : ∀ᶠ (i : ℕ) in atTop, p i → 0 < r i
⊢ blimsup (fun i => thickening (r i) (s i)) atTop p ≤ blimsup (fun i => cthickening (r i) (s i)) atTop p
tactic: refine eventuallyLE_antisymm_iff.mpr ⟨?_, HasSubset.Subset.eventuallyLE (?_ : _ ≤ _)⟩
Theorem: Real.summable_nat_rpow
File: Mathlib/Analysis/PSeries.lean

Proof steps:
state_before: p : ℝ
⊢ (Summable fun n => ↑n ^ p) ↔ p < -1
state_after: case intro
p : ℝ
⊢ (Summable fun n => ↑n ^ (-p)) ↔ -p < -1
tactic: rcases neg_surjective p with ⟨p, rfl⟩
state_before: case intro
p : ℝ
⊢ (Summable fun n => ↑n ^ (-p)) ↔ -p < -1
state_after: no goals
tactic: simp [rpow_neg]
Theorem: Submonoid.powLogEquiv_apply
File: Mathlib/Algebra/Group/Submonoid/Membership.lean

Proof steps:
state_before: M : Type u_1
A : Type u_2
B : Type u_3
inst✝¹ : Monoid M
a : M
inst✝ : DecidableEq M
n : M
h : Function.Injective fun m => n ^ m
x✝¹ x✝ : Multiplicative ℕ
⊢ { toFun := fun m => pow n (Multiplicative.toAdd m), invFun := fun m => Multiplicative.ofAdd (log m), left_inv := ⋯,
          right_inv := ⋯ }.toFun
      (x✝¹ * x✝) =
    { toFun := fun m => pow n (Multiplicative.toAdd m), invFun := fun m => Multiplicative.ofAdd (log m), left_inv := ⋯,
            right_inv := ⋯ }.toFun
        x✝¹ *
      { toFun := fun m => pow n (Multiplicative.toAdd m), invFun := fun m => Multiplicative.ofAdd (log m),
            left_inv := ⋯, right_inv := ⋯ }.toFun
        x✝
state_after: no goals
tactic: simp only [pow, map_mul, ofAdd_add, toAdd_mul]
Theorem: IntervalIntegrable.iff_comp_neg
File: Mathlib/MeasureTheory/Integral/IntervalIntegral.lean

Proof steps:
state_before: ι : Type u_1
𝕜 : Type u_2
E : Type u_3
F : Type u_4
A : Type u_5
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedRing A
f g : ℝ → E
a b : ℝ
μ : Measure ℝ
⊢ IntervalIntegrable f volume a b ↔ IntervalIntegrable (fun x => f (-x)) volume (-a) (-b)
state_after: ι : Type u_1
𝕜 : Type u_2
E : Type u_3
F : Type u_4
A : Type u_5
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedRing A
f g : ℝ → E
a b : ℝ
μ : Measure ℝ
⊢ IntervalIntegrable (fun x => f (-1 * x)) volume (a / -1) (b / -1) ↔
    IntervalIntegrable (fun x => f (-x)) volume (-a) (-b)
tactic: rw [← comp_mul_left_iff (neg_ne_zero.2 one_ne_zero)]
state_before: ι : Type u_1
𝕜 : Type u_2
E : Type u_3
F : Type u_4
A : Type u_5
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedRing A
f g : ℝ → E
a b : ℝ
μ : Measure ℝ
⊢ IntervalIntegrable (fun x => f (-1 * x)) volume (a / -1) (b / -1) ↔
    IntervalIntegrable (fun x => f (-x)) volume (-a) (-b)
state_after: no goals
tactic: simp [div_neg]
Theorem: Multiset.count_sub
File: Mathlib/Data/Multiset/Basic.lean

Proof steps:
state_before: α : Type u_1
β : Type v
γ : Type u_2
inst✝ : DecidableEq α
s✝ : Multiset α
a : α
s t : Multiset α
⊢ count a (s - t) = count a s - count a t
state_after: α : Type u_1
β : Type v
γ : Type u_2
inst✝ : DecidableEq α
s : Multiset α
a : α
t : Multiset α
⊢ ∀ (s : Multiset α), count a (s - t) = count a s - count a t
tactic: revert s
state_before: α : Type u_1
β : Type v
γ : Type u_2
inst✝ : DecidableEq α
s : Multiset α
a : α
t : Multiset α
⊢ ∀ (s : Multiset α), count a (s - t) = count a s - count a t
state_after: α : Type u_1
β : Type v
γ : Type u_2
inst✝ : DecidableEq α
s✝ : Multiset α
a : α
t✝ : Multiset α
b : α
t : Multiset α
IH : ∀ (s : Multiset α), count a (s - t) = count a s - count a t
s : Multiset α
⊢ count a (s - b ::ₘ t) = count a s - count a (b ::ₘ t)
tactic: refine Multiset.induction_on t (by simp) fun b t IH s => ?_
state_before: α : Type u_1
β : Type v
γ : Type u_2
inst✝ : DecidableEq α
s✝ : Multiset α
a : α
t✝ : Multiset α
b : α
t : Multiset α
IH : ∀ (s : Multiset α), count a (s - t) = count a s - count a t
s : Multiset α
⊢ count a (s - b ::ₘ t) = count a s - count a (b ::ₘ t)
state_after: α : Type u_1
β : Type v
γ : Type u_2
inst✝ : DecidableEq α
s✝ : Multiset α
a : α
t✝ : Multiset α
b : α
t : Multiset α
IH : ∀ (s : Multiset α), count a (s - t) = count a s - count a t
s : Multiset α
⊢ count a (s.erase b) - count a t = count a s - count a (b ::ₘ t)
tactic: rw [sub_cons, IH]
state_before: α : Type u_1
β : Type v
γ : Type u_2
inst✝ : DecidableEq α
s✝ : Multiset α
a : α
t✝ : Multiset α
b : α
t : Multiset α
IH : ∀ (s : Multiset α), count a (s - t) = count a s - count a t
s : Multiset α
⊢ count a (s.erase b) - count a t = count a s - count a (b ::ₘ t)
state_after: case inl
α : Type u_1
β : Type v
γ : Type u_2
inst✝ : DecidableEq α
s✝ : Multiset α
a : α
t✝ t : Multiset α
IH : ∀ (s : Multiset α), count a (s - t) = count a s - count a t
s : Multiset α
⊢ count a (s.erase a) - count a t = count a s - count a (a ::ₘ t)

case inr
α : Type u_1
β : Type v
γ : Type u_2
inst✝ : DecidableEq α
s✝ : Multiset α
a : α
t✝ : Multiset α
b : α
t : Multiset α
IH : ∀ (s : Multiset α), count a (s - t) = count a s - count a t
s : Multiset α
ab : a ≠ b
⊢ count a (s.erase b) - count a t = count a s - count a (b ::ₘ t)
tactic: rcases Decidable.eq_or_ne a b with rfl | ab
Theorem: PartENat.lt_wf
File: Mathlib/Data/Nat/PartENat.lean

Proof steps:
state_before: ⊢ WellFounded fun x x_1 => x < x_1
state_after: no goals
tactic: classical
    change WellFounded fun a b : PartENat => a < b
    simp_rw [← withTopEquiv_lt]
    exact InvImage.wf _ wellFounded_lt