ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
Theorem: intervalIntegral.sum_integral_adjacent_intervals_Ico
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✝¹ : CompleteSpace E
inst✝ : NormedSpace ℝ E
a✝ b c d : ℝ
f g : ℝ → E
μ : Measure ℝ
a : ℕ → ℝ
m n : ℕ
hmn : m ≤ n
hint : ∀ k ∈ Ico m n, IntervalIntegrable f μ (a k) (a (k + 1))
⊢ ∑ k ∈ Finset.Ico m n, ∫ (x : ℝ) in a k..a (k + 1), f x ∂μ = ∫ (x : ℝ) in a m..a n, f x ∂μ
state_after: ι : Type u_1
𝕜 : Type u_2
E : Type u_3
F : Type u_4
A : Type u_5
inst✝² : NormedAddCommGroup E
inst✝¹ : CompleteSpace E
inst✝ : NormedSpace ℝ E
a✝ b c d : ℝ
f g : ℝ → E
μ : Measure ℝ
a : ℕ → ℝ
m n : ℕ
hmn : m ≤ n
⊢ (∀ k ∈ Ico m n, IntervalIntegrable f μ (a k) (a (k + 1))) →
    ∑ k ∈ Finset.Ico m n, ∫ (x : ℝ) in a k..a (k + 1), f x ∂μ = ∫ (x : ℝ) in a m..a n, f x ∂μ
tactic: revert hint
state_before: ι : Type u_1
𝕜 : Type u_2
E : Type u_3
F : Type u_4
A : Type u_5
inst✝² : NormedAddCommGroup E
inst✝¹ : CompleteSpace E
inst✝ : NormedSpace ℝ E
a✝ b c d : ℝ
f g : ℝ → E
μ : Measure ℝ
a : ℕ → ℝ
m n : ℕ
hmn : m ≤ n
⊢ (∀ k ∈ Ico m n, IntervalIntegrable f μ (a k) (a (k + 1))) →
    ∑ k ∈ Finset.Ico m n, ∫ (x : ℝ) in a k..a (k + 1), f x ∂μ = ∫ (x : ℝ) in a m..a n, f x ∂μ
state_after: case refine_1
ι : Type u_1
𝕜 : Type u_2
E : Type u_3
F : Type u_4
A : Type u_5
inst✝² : NormedAddCommGroup E
inst✝¹ : CompleteSpace E
inst✝ : NormedSpace ℝ E
a✝ b c d : ℝ
f g : ℝ → E
μ : Measure ℝ
a : ℕ → ℝ
m n : ℕ
hmn : m ≤ n
⊢ (∀ k ∈ Ico m m, IntervalIntegrable f μ (a k) (a (k + 1))) →
    ∑ k ∈ Finset.Ico m m, ∫ (x : ℝ) in a k..a (k + 1), f x ∂μ = ∫ (x : ℝ) in a m..a m, f x ∂μ

case refine_2
ι : Type u_1
𝕜 : Type u_2
E : Type u_3
F : Type u_4
A : Type u_5
inst✝² : NormedAddCommGroup E
inst✝¹ : CompleteSpace E
inst✝ : NormedSpace ℝ E
a✝ b c d : ℝ
f g : ℝ → E
μ : Measure ℝ
a : ℕ → ℝ
m n : ℕ
hmn : m ≤ n
⊢ ∀ (n : ℕ),
    m ≤ n →
      ((∀ k ∈ Ico m n, IntervalIntegrable f μ (a k) (a (k + 1))) →
          ∑ k ∈ Finset.Ico m n, ∫ (x : ℝ) in a k..a (k + 1), f x ∂μ = ∫ (x : ℝ) in a m..a n, f x ∂μ) →
        (∀ k ∈ Ico m (n + 1), IntervalIntegrable f μ (a k) (a (k + 1))) →
          ∑ k ∈ Finset.Ico m (n + 1), ∫ (x : ℝ) in a k..a (k + 1), f x ∂μ = ∫ (x : ℝ) in a m..a (n + 1), f x ∂μ
tactic: refine Nat.le_induction ?_ ?_ n hmn
Theorem: antivary_inv_right
File: Mathlib/Algebra/Order/Monovary.lean

Proof steps:
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
inst✝¹ : OrderedCommGroup α
inst✝ : OrderedCommGroup β
s : Set ι
f f₁ f₂ : ι → α
g g₁ g₂ : ι → β
⊢ Antivary f g⁻¹ ↔ Monovary f g
state_after: no goals
tactic: simpa [Monovary, Antivary] using forall_swap
Theorem: PowerSeries.X_dvd_iff
File: Mathlib/RingTheory/PowerSeries/Basic.lean

Proof steps:
state_before: R : Type u_1
inst✝ : Semiring R
φ : R⟦X⟧
⊢ X ∣ φ ↔ (constantCoeff R) φ = 0
state_after: R : Type u_1
inst✝ : Semiring R
φ : R⟦X⟧
⊢ (∀ m < 1, (coeff R m) φ = 0) ↔ (coeff R 0) φ = 0
tactic: rw [← pow_one (X : R⟦X⟧), X_pow_dvd_iff, ← coeff_zero_eq_constantCoeff_apply]
state_before: R : Type u_1
inst✝ : Semiring R
φ : R⟦X⟧
⊢ (∀ m < 1, (coeff R m) φ = 0) ↔ (coeff R 0) φ = 0
state_after: case mp
R : Type u_1
inst✝ : Semiring R
φ : R⟦X⟧
h : ∀ m < 1, (coeff R m) φ = 0
⊢ (coeff R 0) φ = 0

case mpr
R : Type u_1
inst✝ : Semiring R
φ : R⟦X⟧
h : (coeff R 0) φ = 0
⊢ ∀ m < 1, (coeff R m) φ = 0
tactic: constructor <;> intro h
Theorem: DFA.evalFrom_of_pow
File: Mathlib/Computability/DFA.lean

Proof steps:
state_before: α : Type u
σ : Type v
M : DFA α σ
x y : List α
s : σ
hx : M.evalFrom s x = s
hy : y ∈ {x}∗
⊢ M.evalFrom s y = s
state_after: α : Type u
σ : Type v
M : DFA α σ
x y : List α
s : σ
hx : M.evalFrom s x = s
hy : ∃ L, y = L.join ∧ ∀ y ∈ L, y ∈ {x}
⊢ M.evalFrom s y = s
tactic: rw [Language.mem_kstar] at hy
state_before: α : Type u
σ : Type v
M : DFA α σ
x y : List α
s : σ
hx : M.evalFrom s x = s
hy : ∃ L, y = L.join ∧ ∀ y ∈ L, y ∈ {x}
⊢ M.evalFrom s y = s
state_after: case intro.intro
α : Type u
σ : Type v
M : DFA α σ
x : List α
s : σ
hx : M.evalFrom s x = s
S : List (List α)
hS : ∀ y ∈ S, y ∈ {x}
⊢ M.evalFrom s S.join = s
tactic: rcases hy with ⟨S, rfl, hS⟩
state_before: case intro.intro
α : Type u
σ : Type v
M : DFA α σ
x : List α
s : σ
hx : M.evalFrom s x = s
S : List (List α)
hS : ∀ y ∈ S, y ∈ {x}
⊢ M.evalFrom s S.join = s
state_after: case intro.intro.nil
α : Type u
σ : Type v
M : DFA α σ
x : List α
s : σ
hx : M.evalFrom s x = s
hS : ∀ y ∈ [], y ∈ {x}
⊢ M.evalFrom s [].join = s

case intro.intro.cons
α : Type u
σ : Type v
M : DFA α σ
x : List α
s : σ
hx : M.evalFrom s x = s
a : List α
S : List (List α)
ih : (∀ y ∈ S, y ∈ {x}) → M.evalFrom s S.join = s
hS : ∀ y ∈ a :: S, y ∈ {x}
⊢ M.evalFrom s (a :: S).join = s
tactic: induction' S with a S ih
Theorem: Polynomial.leadingCoeff_normalize
File: Mathlib/Algebra/Polynomial/FieldDivision.lean

Proof steps:
state_before: R : Type u
S : Type v
k : Type y
A : Type z
a b : R
n : ℕ
inst✝² : CommRing R
inst✝¹ : IsDomain R
inst✝ : NormalizationMonoid R
p : R[X]
⊢ (normalize p).leadingCoeff = normalize p.leadingCoeff
state_after: no goals
tactic: simp
Theorem: Field.nonempty_iff
File: Mathlib/FieldTheory/Cardinality.lean

Proof steps:
state_before: α : Type u
⊢ Nonempty (Field α) ↔ IsPrimePow #α
state_after: α : Type u
⊢ Nonempty (Field α) ↔ ℵ₀ ≤ #α ∨ ∃ n, #α = ↑n ∧ IsPrimePow n
tactic: rw [Cardinal.isPrimePow_iff]
state_before: α : Type u
⊢ Nonempty (Field α) ↔ ℵ₀ ≤ #α ∨ ∃ n, #α = ↑n ∧ IsPrimePow n
state_after: case inl
α : Type u
h : Fintype α
⊢ Nonempty (Field α) ↔ ℵ₀ ≤ #α ∨ ∃ n, #α = ↑n ∧ IsPrimePow n

case inr
α : Type u
h : Infinite α
⊢ Nonempty (Field α) ↔ ℵ₀ ≤ #α ∨ ∃ n, #α = ↑n ∧ IsPrimePow n
tactic: cases' fintypeOrInfinite α with h h
Theorem: Ordnode.findMax'_dual
File: Mathlib/Data/Ordmap/Ordset.lean

Proof steps:
state_before: α : Type u_1
t : Ordnode α
x : α
⊢ findMax' x t.dual = t.findMin' x
state_after: no goals
tactic: rw [← findMin'_dual, dual_dual]
Theorem: Multiset.mem_sections
File: Mathlib/Data/Multiset/Sections.lean

Proof steps:
state_before: α : Type u_1
s : Multiset (Multiset α)
⊢ ∀ {a : Multiset α}, a ∈ s.Sections ↔ Rel (fun s a => a ∈ s) s a
state_after: no goals
tactic: induction s using Multiset.induction_on with
  | empty => simp
  | cons _ _ ih => simp [ih, rel_cons_left, eq_comm]
Theorem: Complex.abs_re_le_abs
File: Mathlib/Data/Complex/Abs.lean

Proof steps:
state_before: z : ℂ
⊢ z.re ^ 2 ≤ normSq z
state_after: z : ℂ
⊢ z.re ^ 2 ≤ z.re ^ 2 + z.im * z.im
tactic: rw [normSq_apply, ← sq]
state_before: z : ℂ
⊢ z.re ^ 2 ≤ z.re ^ 2 + z.im * z.im
state_after: no goals
tactic: exact le_add_of_nonneg_right (mul_self_nonneg _)
Theorem: _private.Mathlib.RingTheory.AdicCompletion.AsTensorProduct.0.AdicCompletion.if_exact
File: Mathlib/RingTheory/AdicCompletion/AsTensorProduct.lean

Proof steps:
state_before: R✝ : Type u_1
inst✝¹⁰ : CommRing R✝
I✝ : Ideal R✝
M✝ : Type u_2
inst✝⁹ : AddCommGroup M✝
inst✝⁸ : Module R✝ M✝
N : Type u_3
inst✝⁷ : AddCommGroup N
inst✝⁶ : Module R✝ N
R : Type u
inst✝⁵ : CommRing R
I : Ideal R
M : Type u
inst✝⁴ : AddCommGroup M
inst✝³ : Module R M
inst✝² : IsNoetherianRing R
ι : Type
inst✝¹ : Fintype ι
inst✝ : DecidableEq ι
f : (ι → R) →ₗ[R] M
hf : Function.Surjective ⇑f
x : ι → R
⊢ x ∈ Set.range ⇑(LinearMap.ker f).subtype → f x = 0
state_after: case intro
R✝ : Type u_1
inst✝¹⁰ : CommRing R✝
I✝ : Ideal R✝
M✝ : Type u_2
inst✝⁹ : AddCommGroup M✝
inst✝⁸ : Module R✝ M✝
N : Type u_3
inst✝⁷ : AddCommGroup N
inst✝⁶ : Module R✝ N
R : Type u
inst✝⁵ : CommRing R
I : Ideal R
M : Type u
inst✝⁴ : AddCommGroup M
inst✝³ : Module R M
inst✝² : IsNoetherianRing R
ι : Type
inst✝¹ : Fintype ι
inst✝ : DecidableEq ι
f : (ι → R) →ₗ[R] M
hf : Function.Surjective ⇑f
x : ↥(LinearMap.ker f)
⊢ f ((LinearMap.ker f).subtype x) = 0
tactic: rintro ⟨x, rfl⟩
state_before: case intro
R✝ : Type u_1
inst✝¹⁰ : CommRing R✝
I✝ : Ideal R✝
M✝ : Type u_2
inst✝⁹ : AddCommGroup M✝
inst✝⁸ : Module R✝ M✝
N : Type u_3
inst✝⁷ : AddCommGroup N
inst✝⁶ : Module R✝ N
R : Type u
inst✝⁵ : CommRing R
I : Ideal R
M : Type u
inst✝⁴ : AddCommGroup M
inst✝³ : Module R M
inst✝² : IsNoetherianRing R
ι : Type
inst✝¹ : Fintype ι
inst✝ : DecidableEq ι
f : (ι → R) →ₗ[R] M
hf : Function.Surjective ⇑f
x : ↥(LinearMap.ker f)
⊢ f ((LinearMap.ker f).subtype x) = 0
state_after: no goals
tactic: exact x.property
Theorem: HasDerivWithinAt.rpow_const
File: Mathlib/Analysis/SpecialFunctions/Pow/Deriv.lean

Proof steps:
state_before: f g : ℝ → ℝ
f' g' x y p : ℝ
s : Set ℝ
hf : HasDerivWithinAt f f' s x
hx : f x ≠ 0 ∨ 1 ≤ p
⊢ HasDerivWithinAt (fun y => f y ^ p) (f' * p * f x ^ (p - 1)) s x
state_after: case h.e'_7
f g : ℝ → ℝ
f' g' x y p : ℝ
s : Set ℝ
hf : HasDerivWithinAt f f' s x
hx : f x ≠ 0 ∨ 1 ≤ p
⊢ f' * p * f x ^ (p - 1) = p * f x ^ (p - 1) * f'
tactic: convert (hasDerivAt_rpow_const hx).comp_hasDerivWithinAt x hf using 1
state_before: case h.e'_7
f g : ℝ → ℝ
f' g' x y p : ℝ
s : Set ℝ
hf : HasDerivWithinAt f f' s x
hx : f x ≠ 0 ∨ 1 ≤ p
⊢ f' * p * f x ^ (p - 1) = p * f x ^ (p - 1) * f'
state_after: no goals
tactic: ring
Theorem: HurwitzZeta.hurwitzZetaOdd_neg_two_mul_nat_sub_one
File: Mathlib/NumberTheory/LSeries/HurwitzZetaOdd.lean

Proof steps:
state_before: a : UnitAddCircle
n : ℕ
⊢ hurwitzZetaOdd a (-2 * ↑n - 1) = 0
state_after: no goals
tactic: rw [hurwitzZetaOdd, Gammaℝ_eq_zero_iff.mpr ⟨n, by rw [neg_mul, sub_add_cancel]⟩, div_zero]
Theorem: Finsupp.support_subtypeDomain
File: Mathlib/Data/Finsupp/Basic.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
M : Type u_5
M' : Type u_6
N : Type u_7
P : Type u_8
G : Type u_9
H : Type u_10
R : Type u_11
S : Type u_12
inst✝ : Zero M
p : α → Prop
D : DecidablePred p
f : α →₀ M
⊢ (subtypeDomain p f).support = Finset.subtype p f.support
state_after: no goals
tactic: rw [Subsingleton.elim D] <;> rfl
Theorem: DFinsupp.card_Ioc
File: Mathlib/Data/DFinsupp/Interval.lean

Proof steps:
state_before: ι : Type u_1
α : ι → Type u_2
inst✝⁴ : DecidableEq ι
inst✝³ : (i : ι) → DecidableEq (α i)
inst✝² : (i : ι) → PartialOrder (α i)
inst✝¹ : (i : ι) → Zero (α i)
inst✝ : (i : ι) → LocallyFiniteOrder (α i)
f g : Π₀ (i : ι), α i
⊢ (Ioc f g).card = ∏ i ∈ f.support ∪ g.support, (Icc (f i) (g i)).card - 1
state_after: no goals
tactic: rw [card_Ioc_eq_card_Icc_sub_one, card_Icc]
Theorem: PadicInt.norm_pow
File: Mathlib/NumberTheory/Padics/PadicIntegers.lean

Proof steps:
state_before: p : ℕ
inst✝ : Fact (Nat.Prime p)
z : ℤ_[p]
⊢ ‖z ^ 0‖ = ‖z‖ ^ 0
state_after: no goals
tactic: simp
state_before: p : ℕ
inst✝ : Fact (Nat.Prime p)
z : ℤ_[p]
k : ℕ
⊢ ‖z ^ (k + 1)‖ = ‖z‖ ^ (k + 1)
state_after: p : ℕ
inst✝ : Fact (Nat.Prime p)
z : ℤ_[p]
k : ℕ
⊢ ‖z ^ k‖ * ‖z‖ = ‖z‖ ^ k * ‖z‖
tactic: rw [pow_succ, pow_succ, norm_mul]
state_before: p : ℕ
inst✝ : Fact (Nat.Prime p)
z : ℤ_[p]
k : ℕ
⊢ ‖z ^ k‖ * ‖z‖ = ‖z‖ ^ k * ‖z‖
state_after: case e_a
p : ℕ
inst✝ : Fact (Nat.Prime p)
z : ℤ_[p]
k : ℕ
⊢ ‖z ^ k‖ = ‖z‖ ^ k
tactic: congr
state_before: case e_a
p : ℕ
inst✝ : Fact (Nat.Prime p)
z : ℤ_[p]
k : ℕ
⊢ ‖z ^ k‖ = ‖z‖ ^ k
state_after: no goals
tactic: apply norm_pow
Theorem: MvPolynomial.mapRange_eq_map
File: Mathlib/RingTheory/MvPolynomial/Basic.lean

Proof steps:
state_before: σ : Type u
R✝ : Type v
inst✝² : CommSemiring R✝
p✝ m : ℕ
R : Type u_1
S : Type u_2
inst✝¹ : CommSemiring R
inst✝ : CommSemiring S
p : MvPolynomial σ R
f : R →+* S
⊢ Finsupp.mapRange ⇑f ⋯ p = (map f) p
state_after: σ : Type u
R✝ : Type v
inst✝² : CommSemiring R✝
p✝ m : ℕ
R : Type u_1
S : Type u_2
inst✝¹ : CommSemiring R
inst✝ : CommSemiring S
p : MvPolynomial σ R
f : R →+* S
⊢ ∑ x ∈ p.support, Finsupp.mapRange ⇑f ⋯ ((monomial x) (coeff x p)) =
    ∑ x ∈ p.support, (map f) ((monomial x) (coeff x p))
tactic: rw [p.as_sum, Finsupp.mapRange_finset_sum, map_sum (map f)]
state_before: σ : Type u
R✝ : Type v
inst✝² : CommSemiring R✝
p✝ m : ℕ
R : Type u_1
S : Type u_2
inst✝¹ : CommSemiring R
inst✝ : CommSemiring S
p : MvPolynomial σ R
f : R →+* S
⊢ ∑ x ∈ p.support, Finsupp.mapRange ⇑f ⋯ ((monomial x) (coeff x p)) =
    ∑ x ∈ p.support, (map f) ((monomial x) (coeff x p))
state_after: σ : Type u
R✝ : Type v
inst✝² : CommSemiring R✝
p✝ m : ℕ
R : Type u_1
S : Type u_2
inst✝¹ : CommSemiring R
inst✝ : CommSemiring S
p : MvPolynomial σ R
f : R →+* S
n : σ →₀ ℕ
x✝ : n ∈ p.support
⊢ Finsupp.mapRange ⇑f ⋯ ((monomial n) (coeff n p)) = (map f) ((monomial n) (coeff n p))
tactic: refine Finset.sum_congr rfl fun n _ => ?_
state_before: σ : Type u
R✝ : Type v
inst✝² : CommSemiring R✝
p✝ m : ℕ
R : Type u_1
S : Type u_2
inst✝¹ : CommSemiring R
inst✝ : CommSemiring S
p : MvPolynomial σ R
f : R →+* S
n : σ →₀ ℕ
x✝ : n ∈ p.support
⊢ Finsupp.mapRange ⇑f ⋯ ((monomial n) (coeff n p)) = (map f) ((monomial n) (coeff n p))
state_after: no goals
tactic: rw [map_monomial, ← single_eq_monomial, Finsupp.mapRange_single, single_eq_monomial]
Theorem: Orientation.oangle_sign_add_left
File: Mathlib/Geometry/Euclidean/Angle/Oriented/Basic.lean

Proof steps:
state_before: V : Type u_1
V' : Type u_2
inst✝⁵ : NormedAddCommGroup V
inst✝⁴ : NormedAddCommGroup V'
inst✝³ : InnerProductSpace ℝ V
inst✝² : InnerProductSpace ℝ V'
inst✝¹ : Fact (finrank ℝ V = 2)
inst✝ : Fact (finrank ℝ V' = 2)
o : Orientation ℝ V (Fin 2)
x y : V
⊢ (o.oangle (x + y) y).sign = (o.oangle x y).sign
state_after: no goals
tactic: rw [← o.oangle_sign_add_smul_left x y 1, one_smul]
Theorem: Subspace.exists_eq_top_of_biUnion_eq_univ
File: Mathlib/GroupTheory/CosetCover.lean

Proof steps:
state_before: k : Type u_1
E : Type u_2
ι : Type u_3
inst✝³ : DivisionRing k
inst✝² : Infinite k
inst✝¹ : AddCommGroup E
inst✝ : Module k E
s : Finset (Subspace k E)
hcovers : ⋃ p ∈ s, ↑p = Set.univ
⊢ ∃ p ∈ s, p = ⊤
state_after: k : Type u_1
E : Type u_2
ι : Type u_3
inst✝³ : DivisionRing k
inst✝² : Infinite k
inst✝¹ : AddCommGroup E
inst✝ : Module k E
s : Finset (Subspace k E)
hcovers : ∀ p ∈ s, p ≠ ⊤
⊢ ⋃ p ∈ s, ↑p ≠ Set.univ
tactic: contrapose! hcovers
state_before: k : Type u_1
E : Type u_2
ι : Type u_3
inst✝³ : DivisionRing k
inst✝² : Infinite k
inst✝¹ : AddCommGroup E
inst✝ : Module k E
s : Finset (Subspace k E)
hcovers : ∀ p ∈ s, p ≠ ⊤
⊢ ⋃ p ∈ s, ↑p ≠ Set.univ
state_after: no goals
tactic: exact Subspace.biUnion_ne_univ_of_ne_top hcovers
Theorem: HomologicalComplex₂.d₂_eq_zero'
File: Mathlib/Algebra/Homology/TotalComplex.lean

Proof steps:
state_before: C : Type u_1
inst✝⁴ : Category.{u_5, u_1} C
inst✝³ : Preadditive C
I₁ : Type u_2
I₂ : Type u_3
I₁₂ : Type u_4
c₁ : ComplexShape I₁
c₂ : ComplexShape I₂
K L M : HomologicalComplex₂ C c₁ c₂
φ : K ⟶ L
e : K ≅ L
ψ : L ⟶ M
c₁₂ : ComplexShape I₁₂
inst✝² : DecidableEq I₁₂
inst✝¹ : TotalComplexShape c₁ c₂ c₁₂
inst✝ : K.HasTotal c₁₂
i₁ : I₁
i₂ i₂' : I₂
h : c₂.Rel i₂ i₂'
i₁₂ : I₁₂
h' : c₁.π c₂ c₁₂ (i₁, i₂') ≠ i₁₂
⊢ K.d₂ c₁₂ i₁ i₂ i₁₂ = 0
state_after: case h
C : Type u_1
inst✝⁴ : Category.{u_5, u_1} C
inst✝³ : Preadditive C
I₁ : Type u_2
I₂ : Type u_3
I₁₂ : Type u_4
c₁ : ComplexShape I₁
c₂ : ComplexShape I₂
K L M : HomologicalComplex₂ C c₁ c₂
φ : K ⟶ L
e : K ≅ L
ψ : L ⟶ M
c₁₂ : ComplexShape I₁₂
inst✝² : DecidableEq I₁₂
inst✝¹ : TotalComplexShape c₁ c₂ c₁₂
inst✝ : K.HasTotal c₁₂
i₁ : I₁
i₂ i₂' : I₂
h : c₂.Rel i₂ i₂'
i₁₂ : I₁₂
h' : c₁.π c₂ c₁₂ (i₁, i₂') ≠ i₁₂
⊢ c₁.π c₂ c₁₂ (i₁, i₂') ≠ i₁₂
tactic: rw [totalAux.d₂_eq' K c₁₂ i₁ h i₁₂, K.toGradedObject.ιMapObjOrZero_eq_zero, comp_zero, smul_zero]
state_before: case h
C : Type u_1
inst✝⁴ : Category.{u_5, u_1} C
inst✝³ : Preadditive C
I₁ : Type u_2
I₂ : Type u_3
I₁₂ : Type u_4
c₁ : ComplexShape I₁
c₂ : ComplexShape I₂
K L M : HomologicalComplex₂ C c₁ c₂
φ : K ⟶ L
e : K ≅ L
ψ : L ⟶ M
c₁₂ : ComplexShape I₁₂
inst✝² : DecidableEq I₁₂
inst✝¹ : TotalComplexShape c₁ c₂ c₁₂
inst✝ : K.HasTotal c₁₂
i₁ : I₁
i₂ i₂' : I₂
h : c₂.Rel i₂ i₂'
i₁₂ : I₁₂
h' : c₁.π c₂ c₁₂ (i₁, i₂') ≠ i₁₂
⊢ c₁.π c₂ c₁₂ (i₁, i₂') ≠ i₁₂
state_after: no goals
tactic: exact h'
Theorem: RegularExpression.star_rmatch_iff
File: Mathlib/Computability/RegularExpressions.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
dec : DecidableEq α
a b : α
P : RegularExpression α
x : List α
⊢ P.star.rmatch x = true ↔ ∃ S, x = S.join ∧ ∀ t ∈ S, t ≠ [] ∧ P.rmatch t = true
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
dec : DecidableEq α
a b : α
P : RegularExpression α
x : List α
IH :
  ∀ (t : List α), t.length < x.length → (P.star.rmatch t = true ↔ ∃ S, t = S.join ∧ ∀ t ∈ S, t ≠ [] ∧ P.rmatch t = true)
⊢ P.star.rmatch x = true ↔ ∃ S, x = S.join ∧ ∀ t ∈ S, t ≠ [] ∧ P.rmatch t = true
tactic: have IH := fun t (_h : List.length t < List.length x) => star_rmatch_iff P t
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
dec : DecidableEq α
a b : α
P : RegularExpression α
x : List α
IH :
  ∀ (t : List α), t.length < x.length → (P.star.rmatch t = true ↔ ∃ S, t = S.join ∧ ∀ t ∈ S, t ≠ [] ∧ P.rmatch t = true)
⊢ P.star.rmatch x = true ↔ ∃ S, x = S.join ∧ ∀ t ∈ S, t ≠ [] ∧ P.rmatch t = true
state_after: case mp
α : Type u_1
β : Type u_2
γ : Type u_3
dec : DecidableEq α
a b : α
P : RegularExpression α
x : List α
IH :
  ∀ (t : List α), t.length < x.length → (P.star.rmatch t = true ↔ ∃ S, t = S.join ∧ ∀ t ∈ S, t ≠ [] ∧ P.rmatch t = true)
⊢ P.star.rmatch x = true → ∃ S, x = S.join ∧ ∀ t ∈ S, t ≠ [] ∧ P.rmatch t = true

case mpr
α : Type u_1
β : Type u_2
γ : Type u_3
dec : DecidableEq α
a b : α
P : RegularExpression α
x : List α
IH :
  ∀ (t : List α), t.length < x.length → (P.star.rmatch t = true ↔ ∃ S, t = S.join ∧ ∀ t ∈ S, t ≠ [] ∧ P.rmatch t = true)
⊢ (∃ S, x = S.join ∧ ∀ t ∈ S, t ≠ [] ∧ P.rmatch t = true) → P.star.rmatch x = true
tactic: constructor
Theorem: AddGroupFilterBasis.nhds_zero_hasBasis
File: Mathlib/Topology/Algebra/FilterBasis.lean

Proof steps:
state_before: G : Type u
inst✝ : Group G
B✝ B : GroupFilterBasis G
⊢ (𝓝 1).HasBasis (fun V => V ∈ B) id
state_after: G : Type u
inst✝ : Group G
B✝ B : GroupFilterBasis G
⊢ toFilterBasis.filter.HasBasis (fun V => V ∈ B) id
tactic: rw [B.nhds_one_eq]
state_before: G : Type u
inst✝ : Group G
B✝ B : GroupFilterBasis G
⊢ toFilterBasis.filter.HasBasis (fun V => V ∈ B) id
state_after: no goals
tactic: exact B.toFilterBasis.hasBasis
Theorem: CategoryTheory.Limits.image.preComp_ι
File: Mathlib/CategoryTheory/Limits/Shapes/Images.lean

Proof steps:
state_before: C : Type u
inst✝² : Category.{v, u} C
X Y : C
f : X ⟶ Y
Z : C
g : Y ⟶ Z
inst✝¹ : HasImage g
inst✝ : HasImage (f ≫ g)
⊢ preComp f g ≫ ι g = ι (f ≫ g)
state_after: C : Type u
inst✝² : Category.{v, u} C
X Y : C
f : X ⟶ Y
Z : C
g : Y ⟶ Z
inst✝¹ : HasImage g
inst✝ : HasImage (f ≫ g)
⊢ lift (MonoFactorisation.mk (image g) (ι g) (f ≫ factorThruImage g) ⋯) ≫ ι g = ι (f ≫ g)
tactic: dsimp [image.preComp]
state_before: C : Type u
inst✝² : Category.{v, u} C
X Y : C
f : X ⟶ Y
Z : C
g : Y ⟶ Z
inst✝¹ : HasImage g
inst✝ : HasImage (f ≫ g)
⊢ lift (MonoFactorisation.mk (image g) (ι g) (f ≫ factorThruImage g) ⋯) ≫ ι g = ι (f ≫ g)
state_after: no goals
tactic: rw [image.lift_fac]
Theorem: KaehlerDifferential.tensorProductTo_surjective
File: Mathlib/RingTheory/Kaehler/Basic.lean

Proof steps:
state_before: R : Type u
S : Type v
inst✝⁶ : CommRing R
inst✝⁵ : CommRing S
inst✝⁴ : Algebra R S
M : Type u_1
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : Module S M
inst✝ : IsScalarTower R S M
⊢ Function.Surjective ⇑(D R S).tensorProductTo
state_after: R : Type u
S : Type v
inst✝⁶ : CommRing R
inst✝⁵ : CommRing S
inst✝⁴ : Algebra R S
M : Type u_1
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : Module S M
inst✝ : IsScalarTower R S M
x : Ω[S⁄R]
⊢ ∃ a, (D R S).tensorProductTo a = x
tactic: intro x
state_before: R : Type u
S : Type v
inst✝⁶ : CommRing R
inst✝⁵ : CommRing S
inst✝⁴ : Algebra R S
M : Type u_1
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : Module S M
inst✝ : IsScalarTower R S M
x : Ω[S⁄R]
⊢ ∃ a, (D R S).tensorProductTo a = x
state_after: case intro
R : Type u
S : Type v
inst✝⁶ : CommRing R
inst✝⁵ : CommRing S
inst✝⁴ : Algebra R S
M : Type u_1
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : Module S M
inst✝ : IsScalarTower R S M
x : ↥(ideal R S)
⊢ ∃ a, (D R S).tensorProductTo a = (ideal R S).toCotangent x
tactic: obtain ⟨x, rfl⟩ := (KaehlerDifferential.ideal R S).toCotangent_surjective x
state_before: case intro
R : Type u
S : Type v
inst✝⁶ : CommRing R
inst✝⁵ : CommRing S
inst✝⁴ : Algebra R S
M : Type u_1
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : Module S M
inst✝ : IsScalarTower R S M
x : ↥(ideal R S)
⊢ ∃ a, (D R S).tensorProductTo a = (ideal R S).toCotangent x
state_after: no goals
tactic: exact ⟨x, KaehlerDifferential.D_tensorProductTo x⟩
Theorem: Zsqrtd.decompose
File: Mathlib/NumberTheory/Zsqrtd/Basic.lean

Proof steps:
state_before: d x y : ℤ
⊢ { re := x, im := y } = ↑x + sqrtd * ↑y
state_after: no goals
tactic: ext <;> simp
Theorem: sup_eq_iSup
File: Mathlib/Order/CompleteLattice.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
β₂ : Type u_3
γ : Type u_4
ι : Sort u_5
ι' : Sort u_6
κ : ι → Sort u_7
κ' : ι' → Sort u_8
inst✝ : CompleteLattice α
f g s t : ι → α
a b x y : α
⊢ x ⊔ y = ⨆ b, bif b then x else y
state_after: no goals
tactic: rw [iSup_bool_eq, Bool.cond_true, Bool.cond_false]
Theorem: Function.iterate_id
File: Mathlib/Logic/Function/Iterate.lean

Proof steps:
state_before: α : Type u
β : Type v
f : α → α
n✝ n : ℕ
ihn : id^[n] = id
⊢ id^[n.succ] = id
state_after: no goals
tactic: rw [iterate_succ, ihn, id_comp]
Theorem: biSup_const
File: Mathlib/Order/CompleteLattice.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
β₂ : Type u_3
γ : Type u_4
ι✝ : Sort u_5
ι' : Sort u_6
κ : ι✝ → Sort u_7
κ' : ι' → Sort u_8
inst✝ : CompleteLattice α
f g s✝ t : ι✝ → α
a✝ b : α
ι : Type u_9
a : α
s : Set ι
hs : s.Nonempty
⊢ ⨆ i ∈ s, a = a
state_after: α : Type u_1
β : Type u_2
β₂ : Type u_3
γ : Type u_4
ι✝ : Sort u_5
ι' : Sort u_6
κ : ι✝ → Sort u_7
κ' : ι' → Sort u_8
inst✝ : CompleteLattice α
f g s✝ t : ι✝ → α
a✝ b : α
ι : Type u_9
a : α
s : Set ι
hs : s.Nonempty
this : Nonempty ↑s
⊢ ⨆ i ∈ s, a = a
tactic: haveI : Nonempty s := Set.nonempty_coe_sort.mpr hs
state_before: α : Type u_1
β : Type u_2
β₂ : Type u_3
γ : Type u_4
ι✝ : Sort u_5
ι' : Sort u_6
κ : ι✝ → Sort u_7
κ' : ι' → Sort u_8
inst✝ : CompleteLattice α
f g s✝ t : ι✝ → α
a✝ b : α
ι : Type u_9
a : α
s : Set ι
hs : s.Nonempty
this : Nonempty ↑s
⊢ ⨆ i ∈ s, a = a
state_after: no goals
tactic: rw [← iSup_subtype'', iSup_const]
Theorem: Subgroup.sylow_mem_fixedPoints_iff
File: Mathlib/GroupTheory/Sylow.lean

Proof steps:
state_before: p : ℕ
G : Type u_1
inst✝ : Group G
H : Subgroup G
P : Sylow p G
⊢ P ∈ fixedPoints (↥H) (Sylow p G) ↔ H ≤ (↑P).normalizer
state_after: p : ℕ
G : Type u_1
inst✝ : Group G
H : Subgroup G
P : Sylow p G
⊢ P ∈ fixedPoints (↥H) (Sylow p G) ↔ ∀ ⦃x : G⦄, x ∈ H → x • P = P
tactic: simp_rw [SetLike.le_def, ← Sylow.smul_eq_iff_mem_normalizer]
state_before: p : ℕ
G : Type u_1
inst✝ : Group G
H : Subgroup G
P : Sylow p G
⊢ P ∈ fixedPoints (↥H) (Sylow p G) ↔ ∀ ⦃x : G⦄, x ∈ H → x • P = P
state_after: no goals
tactic: exact Subtype.forall
Theorem: Filter.tendsto_pure_self
File: Mathlib/Topology/Filter.lean

Proof steps:
state_before: ι : Sort u_1
α : Type u_2
β : Type u_3
X : Type u_4
Y : Type u_5
l : Filter X
⊢ Tendsto pure l (𝓝 l)
state_after: ι : Sort u_1
α : Type u_2
β : Type u_3
X : Type u_4
Y : Type u_5
l : Filter X
⊢ ∀ s ∈ l, ∀ᶠ (a : X) in l, s ∈ pure a
tactic: rw [Filter.tendsto_nhds]
state_before: ι : Sort u_1
α : Type u_2
β : Type u_3
X : Type u_4
Y : Type u_5
l : Filter X
⊢ ∀ s ∈ l, ∀ᶠ (a : X) in l, s ∈ pure a
state_after: no goals
tactic: exact fun s hs ↦ Eventually.mono hs fun x ↦ id
Theorem: Submonoid.prod_eq_top_iff
File: Mathlib/Algebra/Group/Submonoid/Operations.lean

Proof steps:
state_before: M : Type u_1
N : Type u_2
P : Type u_3
inst✝³ : MulOneClass M
inst✝² : MulOneClass N
inst✝¹ : MulOneClass P
S : Submonoid M
A : Type u_4
inst✝ : SetLike A M
hA : SubmonoidClass A M
S' : A
s : Submonoid M
t : Submonoid N
⊢ s.prod t = ⊤ ↔ s = ⊤ ∧ t = ⊤
state_after: no goals
tactic: simp only [eq_top_iff, le_prod_iff, ← (gc_map_comap _).le_iff_le, ← mrange_eq_map, mrange_fst,
    mrange_snd]