ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
Theorem: Nat.card_divisors
File: Mathlib/NumberTheory/ArithmeticFunction.lean

Proof steps:
state_before: R : Type u_1
n : ℕ
hn : n ≠ 0
⊢ n.divisors.card = ∏ x ∈ n.primeFactors, (n.factorization x + 1)
state_after: R : Type u_1
n : ℕ
hn : n ≠ 0
⊢ (n.factorization.prod fun p k => (σ 0) (p ^ k)) = ∏ x ∈ n.primeFactors, (n.factorization x + 1)
tactic: rw [← sigma_zero_apply, isMultiplicative_sigma.multiplicative_factorization _ hn]
state_before: R : Type u_1
n : ℕ
hn : n ≠ 0
⊢ (n.factorization.prod fun p k => (σ 0) (p ^ k)) = ∏ x ∈ n.primeFactors, (n.factorization x + 1)
state_after: no goals
tactic: exact Finset.prod_congr n.support_factorization fun _ h =>
    sigma_zero_apply_prime_pow <| Nat.prime_of_mem_primeFactors h
Theorem: Algebra.eq_top_iff
File: Mathlib/Algebra/Algebra/Subalgebra/Basic.lean

Proof steps:
state_before: R : Type u
A : Type v
B : Type w
inst✝⁴ : CommSemiring R
inst✝³ : Semiring A
inst✝² : Algebra R A
inst✝¹ : Semiring B
inst✝ : Algebra R B
S : Subalgebra R A
h : S = ⊤
x : A
⊢ x ∈ S
state_after: R : Type u
A : Type v
B : Type w
inst✝⁴ : CommSemiring R
inst✝³ : Semiring A
inst✝² : Algebra R A
inst✝¹ : Semiring B
inst✝ : Algebra R B
S : Subalgebra R A
h : S = ⊤
x : A
⊢ x ∈ ⊤
tactic: rw [h]
state_before: R : Type u
A : Type v
B : Type w
inst✝⁴ : CommSemiring R
inst✝³ : Semiring A
inst✝² : Algebra R A
inst✝¹ : Semiring B
inst✝ : Algebra R B
S : Subalgebra R A
h : S = ⊤
x : A
⊢ x ∈ ⊤
state_after: no goals
tactic: exact mem_top
state_before: R : Type u
A : Type v
B : Type w
inst✝⁴ : CommSemiring R
inst✝³ : Semiring A
inst✝² : Algebra R A
inst✝¹ : Semiring B
inst✝ : Algebra R B
S : Subalgebra R A
h : ∀ (x : A), x ∈ S
⊢ S = ⊤
state_after: case h
R : Type u
A : Type v
B : Type w
inst✝⁴ : CommSemiring R
inst✝³ : Semiring A
inst✝² : Algebra R A
inst✝¹ : Semiring B
inst✝ : Algebra R B
S : Subalgebra R A
h : ∀ (x : A), x ∈ S
x : A
⊢ x ∈ S ↔ x ∈ ⊤
tactic: ext x
state_before: case h
R : Type u
A : Type v
B : Type w
inst✝⁴ : CommSemiring R
inst✝³ : Semiring A
inst✝² : Algebra R A
inst✝¹ : Semiring B
inst✝ : Algebra R B
S : Subalgebra R A
h : ∀ (x : A), x ∈ S
x : A
⊢ x ∈ S ↔ x ∈ ⊤
state_after: no goals
tactic: exact ⟨fun _ => mem_top, fun _ => h x⟩
Theorem: Real.sqrt_eq_iff_sq_eq
File: Mathlib/Data/Real/Sqrt.lean

Proof steps:
state_before: x y : ℝ
hx : 0 ≤ x
hy : 0 ≤ y
⊢ √x = y ↔ y ^ 2 = x
state_after: no goals
tactic: rw [sq, sqrt_eq_iff_mul_self_eq hx hy]
Theorem: ContinuousLinearMap.map_neg
File: Mathlib/Topology/Algebra/Module/Basic.lean

Proof steps:
state_before: R : Type u_1
inst✝¹³ : Ring R
R₂ : Type u_2
inst✝¹² : Ring R₂
R₃ : Type u_3
inst✝¹¹ : Ring R₃
M : Type u_4
inst✝¹⁰ : TopologicalSpace M
inst✝⁹ : AddCommGroup M
M₂ : Type u_5
inst✝⁸ : TopologicalSpace M₂
inst✝⁷ : AddCommGroup M₂
M₃ : Type u_6
inst✝⁶ : TopologicalSpace M₃
inst✝⁵ : AddCommGroup M₃
M₄ : Type u_7
inst✝⁴ : TopologicalSpace M₄
inst✝³ : AddCommGroup M₄
inst✝² : Module R M
inst✝¹ : Module R₂ M₂
inst✝ : Module R₃ M₃
σ₁₂ : R →+* R₂
σ₂₃ : R₂ →+* R₃
σ₁₃ : R →+* R₃
f : M →SL[σ₁₂] M₂
x : M
⊢ f (-x) = -f x
state_after: no goals
tactic: exact map_neg f x
Theorem: Nat.zmodeq_ofDigits_digits
File: Mathlib/Data/Nat/Digits.lean

Proof steps:
state_before: n✝ b b' : ℕ
c : ℤ
h : ↑b' ≡ c [ZMOD ↑b]
n : ℕ
⊢ ↑(ofDigits b' (b'.digits n)) ≡ ofDigits c (b'.digits n) [ZMOD ↑b]
state_after: n✝ b b' : ℕ
c : ℤ
h : ↑b' ≡ c [ZMOD ↑b]
n : ℕ
⊢ ofDigits (↑b') (b'.digits n) ≡ ofDigits c (b'.digits n) [ZMOD ↑b]
tactic: rw [coe_int_ofDigits]
state_before: n✝ b b' : ℕ
c : ℤ
h : ↑b' ≡ c [ZMOD ↑b]
n : ℕ
⊢ ofDigits (↑b') (b'.digits n) ≡ ofDigits c (b'.digits n) [ZMOD ↑b]
state_after: no goals
tactic: apply ofDigits_zmodeq' _ _ _ h
Theorem: NNReal.rpow_inv_rpow_self
File: Mathlib/Analysis/SpecialFunctions/Pow/NNReal.lean

Proof steps:
state_before: w x✝ y✝ z y : ℝ
hy : y ≠ 0
x : ℝ≥0
⊢ (x ^ y) ^ (1 / y) = x
state_after: no goals
tactic: field_simp [← rpow_mul]
Theorem: SimpleGraph.Finsubgraph.coe_iSup
File: Mathlib/Combinatorics/SimpleGraph/Finsubgraph.lean

Proof steps:
state_before: V : Type u
W : Type v
G : SimpleGraph V
F : SimpleGraph W
inst✝ : Finite V
ι : Sort u_1
f : ι → G.Finsubgraph
⊢ ↑(⨆ i, f i) = ⨆ i, ↑(f i)
state_after: no goals
tactic: rw [iSup, coe_sSup, iSup_range]
Theorem: hasStrictFDerivAt_euclidean
File: Mathlib/Analysis/InnerProductSpace/Calculus.lean

Proof steps:
state_before: 𝕜 : Type u_1
ι : Type u_2
H : Type u_3
inst✝³ : _root_.RCLike 𝕜
inst✝² : NormedAddCommGroup H
inst✝¹ : NormedSpace 𝕜 H
inst✝ : Fintype ι
f : H → EuclideanSpace 𝕜 ι
f' : H →L[𝕜] EuclideanSpace 𝕜 ι
t : Set H
y : H
⊢ HasStrictFDerivAt f f' y ↔ ∀ (i : ι), HasStrictFDerivAt (fun x => f x i) ((EuclideanSpace.proj i).comp f') y
state_after: 𝕜 : Type u_1
ι : Type u_2
H : Type u_3
inst✝³ : _root_.RCLike 𝕜
inst✝² : NormedAddCommGroup H
inst✝¹ : NormedSpace 𝕜 H
inst✝ : Fintype ι
f : H → EuclideanSpace 𝕜 ι
f' : H →L[𝕜] EuclideanSpace 𝕜 ι
t : Set H
y : H
⊢ (∀ (i : ι),
      HasStrictFDerivAt (fun x => (⇑(EuclideanSpace.equiv ι 𝕜) ∘ f) x i)
        ((proj i).comp ((↑(EuclideanSpace.equiv ι 𝕜)).comp f')) y) ↔
    ∀ (i : ι), HasStrictFDerivAt (fun x => f x i) ((EuclideanSpace.proj i).comp f') y
tactic: rw [← (EuclideanSpace.equiv ι 𝕜).comp_hasStrictFDerivAt_iff, hasStrictFDerivAt_pi']
state_before: 𝕜 : Type u_1
ι : Type u_2
H : Type u_3
inst✝³ : _root_.RCLike 𝕜
inst✝² : NormedAddCommGroup H
inst✝¹ : NormedSpace 𝕜 H
inst✝ : Fintype ι
f : H → EuclideanSpace 𝕜 ι
f' : H →L[𝕜] EuclideanSpace 𝕜 ι
t : Set H
y : H
⊢ (∀ (i : ι),
      HasStrictFDerivAt (fun x => (⇑(EuclideanSpace.equiv ι 𝕜) ∘ f) x i)
        ((proj i).comp ((↑(EuclideanSpace.equiv ι 𝕜)).comp f')) y) ↔
    ∀ (i : ι), HasStrictFDerivAt (fun x => f x i) ((EuclideanSpace.proj i).comp f') y
state_after: no goals
tactic: rfl
Theorem: Polynomial.derivative_natCast
File: Mathlib/Algebra/Polynomial/Derivative.lean

Proof steps:
state_before: R : Type u
S : Type v
T : Type w
ι : Type y
A : Type z
a b : R
n✝ : ℕ
inst✝ : Semiring R
n : ℕ
⊢ derivative ↑n = 0
state_after: R : Type u
S : Type v
T : Type w
ι : Type y
A : Type z
a b : R
n✝ : ℕ
inst✝ : Semiring R
n : ℕ
⊢ derivative (C ↑n) = 0
tactic: rw [← map_natCast C n]
state_before: R : Type u
S : Type v
T : Type w
ι : Type y
A : Type z
a b : R
n✝ : ℕ
inst✝ : Semiring R
n : ℕ
⊢ derivative (C ↑n) = 0
state_after: no goals
tactic: exact derivative_C
Theorem: List.range'_subset_right
File: .lake/packages/batteries/Batteries/Data/List/Lemmas.lean

Proof steps:
state_before: step s m n : Nat
step0 : 0 < step
⊢ range' s m step ⊆ range' s n step ↔ m ≤ n
state_after: step s m n : Nat
step0 : 0 < step
h : range' s m step ⊆ range' s n step
hn : n < m
⊢ False
tactic: refine ⟨fun h => Nat.le_of_not_lt fun hn => ?_, fun h => (range'_sublist_right.2 h).subset⟩
state_before: step s m n : Nat
step0 : 0 < step
h : range' s m step ⊆ range' s n step
hn : n < m
⊢ False
state_after: step s m n : Nat
step0 : 0 < step
h : range' s m step ⊆ range' s n step
hn : n < m
i : Nat
h' : i < n
e : s + step * n = s + step * i
⊢ False
tactic: have ⟨i, h', e⟩ := mem_range'.1 <| h <| mem_range'.2 ⟨_, hn, rfl⟩
state_before: step s m n : Nat
step0 : 0 < step
h : range' s m step ⊆ range' s n step
hn : n < m
i : Nat
h' : i < n
e : s + step * n = s + step * i
⊢ False
state_after: no goals
tactic: exact Nat.ne_of_gt h' (Nat.eq_of_mul_eq_mul_left step0 (Nat.add_left_cancel e))
Theorem: Computable.option_map
File: Mathlib/Computability/Partrec.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
σ : Type u_4
inst✝³ : Primcodable α
inst✝² : Primcodable β
inst✝¹ : Primcodable γ
inst✝ : Primcodable σ
f : α → Option β
g : α → β → σ
hf : Computable f
hg : Computable₂ g
⊢ Computable fun a => Option.map (g a) (f a)
state_after: case h.e'_5.h
α : Type u_1
β : Type u_2
γ : Type u_3
σ : Type u_4
inst✝³ : Primcodable α
inst✝² : Primcodable β
inst✝¹ : Primcodable γ
inst✝ : Primcodable σ
f : α → Option β
g : α → β → σ
hf : Computable f
hg : Computable₂ g
x✝ : α
⊢ Option.map (g x✝) (f x✝) = (f x✝).bind fun b => Option.some (g x✝ b)
tactic: convert option_bind hf (option_some.comp₂ hg)
state_before: case h.e'_5.h
α : Type u_1
β : Type u_2
γ : Type u_3
σ : Type u_4
inst✝³ : Primcodable α
inst✝² : Primcodable β
inst✝¹ : Primcodable γ
inst✝ : Primcodable σ
f : α → Option β
g : α → β → σ
hf : Computable f
hg : Computable₂ g
x✝ : α
⊢ Option.map (g x✝) (f x✝) = (f x✝).bind fun b => Option.some (g x✝ b)
state_after: no goals
tactic: apply Option.map_eq_bind
Theorem: BoundedContinuousFunction.toLp_denseRange
File: Mathlib/MeasureTheory/Function/ContinuousMapDense.lean

Proof steps:
state_before: α : Type u_1
inst✝¹¹ : TopologicalSpace α
inst✝¹⁰ : NormalSpace α
inst✝⁹ : R1Space α
inst✝⁸ : MeasurableSpace α
inst✝⁷ : BorelSpace α
E : Type u_2
inst✝⁶ : NormedAddCommGroup E
μ : Measure α
p : ℝ≥0∞
inst✝⁵ : SecondCountableTopologyEither α E
_i : Fact (1 ≤ p)
hp : p ≠ ⊤
𝕜 : Type u_3
inst✝⁴ : NormedField 𝕜
inst✝³ : NormedAlgebra ℝ 𝕜
inst✝² : NormedSpace 𝕜 E
inst✝¹ : μ.WeaklyRegular
inst✝ : IsFiniteMeasure μ
⊢ DenseRange ⇑(toLp p μ 𝕜)
state_after: α : Type u_1
inst✝¹¹ : TopologicalSpace α
inst✝¹⁰ : NormalSpace α
inst✝⁹ : R1Space α
inst✝⁸ : MeasurableSpace α
inst✝⁷ : BorelSpace α
E : Type u_2
inst✝⁶ : NormedAddCommGroup E
μ : Measure α
p : ℝ≥0∞
inst✝⁵ : SecondCountableTopologyEither α E
_i : Fact (1 ≤ p)
hp : p ≠ ⊤
𝕜 : Type u_3
inst✝⁴ : NormedField 𝕜
inst✝³ : NormedAlgebra ℝ 𝕜
inst✝² : NormedSpace 𝕜 E
inst✝¹ : μ.WeaklyRegular
inst✝ : IsFiniteMeasure μ
this : NormedSpace ℝ E
⊢ DenseRange ⇑(toLp p μ 𝕜)
tactic: haveI : NormedSpace ℝ E := RestrictScalars.normedSpace ℝ 𝕜 E
state_before: α : Type u_1
inst✝¹¹ : TopologicalSpace α
inst✝¹⁰ : NormalSpace α
inst✝⁹ : R1Space α
inst✝⁸ : MeasurableSpace α
inst✝⁷ : BorelSpace α
E : Type u_2
inst✝⁶ : NormedAddCommGroup E
μ : Measure α
p : ℝ≥0∞
inst✝⁵ : SecondCountableTopologyEither α E
_i : Fact (1 ≤ p)
hp : p ≠ ⊤
𝕜 : Type u_3
inst✝⁴ : NormedField 𝕜
inst✝³ : NormedAlgebra ℝ 𝕜
inst✝² : NormedSpace 𝕜 E
inst✝¹ : μ.WeaklyRegular
inst✝ : IsFiniteMeasure μ
this : NormedSpace ℝ E
⊢ DenseRange ⇑(toLp p μ 𝕜)
state_after: no goals
tactic: simpa only [← range_toLp p μ (𝕜 := 𝕜)]
    using MeasureTheory.Lp.boundedContinuousFunction_dense E μ hp
Theorem: Basis.mem_submodule_iff
File: Mathlib/LinearAlgebra/Basis.lean

Proof steps:
state_before: ι : Type u_1
ι' : Type u_2
R : Type u_3
R₂ : Type u_4
K : Type u_5
M : Type u_6
M' : Type u_7
M'' : Type u_8
V : Type u
V' : Type u_9
inst✝⁴ : Semiring R
inst✝³ : AddCommMonoid M
inst✝² : Module R M
inst✝¹ : AddCommMonoid M'
inst✝ : Module R M'
b✝ b₁ : Basis ι R M
i : ι
c : R
x✝ : M
P : Submodule R M
b : Basis ι R ↥P
x : M
⊢ x ∈ P ↔ ∃ c, x = c.sum fun i x => x • ↑(b i)
state_after: ι : Type u_1
ι' : Type u_2
R : Type u_3
R₂ : Type u_4
K : Type u_5
M : Type u_6
M' : Type u_7
M'' : Type u_8
V : Type u
V' : Type u_9
inst✝⁴ : Semiring R
inst✝³ : AddCommMonoid M
inst✝² : Module R M
inst✝¹ : AddCommMonoid M'
inst✝ : Module R M'
b✝ b₁ : Basis ι R M
i : ι
c : R
x✝ : M
P : Submodule R M
b : Basis ι R ↥P
x : M
⊢ x ∈ LinearMap.range (Finsupp.total ι M R (⇑P.subtype ∘ ⇑b)) ↔ ∃ c, x = c.sum fun i x => x • ↑(b i)
tactic: conv_lhs =>
    rw [← P.range_subtype, ← Submodule.map_top, ← b.span_eq, Submodule.map_span, ← Set.range_comp,
        ← Finsupp.range_total]
state_before: ι : Type u_1
ι' : Type u_2
R : Type u_3
R₂ : Type u_4
K : Type u_5
M : Type u_6
M' : Type u_7
M'' : Type u_8
V : Type u
V' : Type u_9
inst✝⁴ : Semiring R
inst✝³ : AddCommMonoid M
inst✝² : Module R M
inst✝¹ : AddCommMonoid M'
inst✝ : Module R M'
b✝ b₁ : Basis ι R M
i : ι
c : R
x✝ : M
P : Submodule R M
b : Basis ι R ↥P
x : M
⊢ x ∈ LinearMap.range (Finsupp.total ι M R (⇑P.subtype ∘ ⇑b)) ↔ ∃ c, x = c.sum fun i x => x • ↑(b i)
state_after: no goals
tactic: simp [@eq_comm _ x, Function.comp, Finsupp.total_apply]
Theorem: CategoryTheory.MorphismProperty.monotone_isoClosure
File: Mathlib/CategoryTheory/MorphismProperty/Basic.lean

Proof steps:
state_before: C : Type u
inst✝¹ : Category.{v, u} C
D : Type u_1
inst✝ : Category.{?u.10941, u_1} D
⊢ Monotone isoClosure
state_after: C : Type u
inst✝¹ : Category.{v, u} C
D : Type u_1
inst✝ : Category.{?u.10941, u_1} D
P Q : MorphismProperty C
h : P ≤ Q
X Y : C
f : X ⟶ Y
X' Y' : C
f' : X' ⟶ Y'
hf' : P f'
e : Arrow.mk f' ≅ Arrow.mk f
⊢ Q.isoClosure f
tactic: intro P Q h X Y f ⟨X', Y', f', hf', ⟨e⟩⟩
state_before: C : Type u
inst✝¹ : Category.{v, u} C
D : Type u_1
inst✝ : Category.{?u.10941, u_1} D
P Q : MorphismProperty C
h : P ≤ Q
X Y : C
f : X ⟶ Y
X' Y' : C
f' : X' ⟶ Y'
hf' : P f'
e : Arrow.mk f' ≅ Arrow.mk f
⊢ Q.isoClosure f
state_after: no goals
tactic: exact ⟨X', Y', f', h _ hf', ⟨e⟩⟩
Theorem: Mathlib.Tactic.ComputeDegree.natDegree_eq_of_le_of_coeff_ne_zero'
File: Mathlib/Tactic/ComputeDegree.lean

Proof steps:
state_before: R : Type u_1
inst✝ : Semiring R
deg m o : ℕ
c : R
p : R[X]
h_natDeg_le : p.natDegree ≤ m
coeff_eq : p.coeff o = c
coeff_ne_zero : c ≠ 0
deg_eq_deg : m = deg
coeff_eq_deg : o = deg
⊢ p.natDegree = deg
state_after: R : Type u_1
inst✝ : Semiring R
o : ℕ
p : R[X]
coeff_ne_zero : p.coeff o ≠ 0
h_natDeg_le : p.natDegree ≤ o
⊢ p.natDegree = o
tactic: subst coeff_eq deg_eq_deg coeff_eq_deg
state_before: R : Type u_1
inst✝ : Semiring R
o : ℕ
p : R[X]
coeff_ne_zero : p.coeff o ≠ 0
h_natDeg_le : p.natDegree ≤ o
⊢ p.natDegree = o
state_after: no goals
tactic: exact natDegree_eq_of_le_of_coeff_ne_zero ‹_› ‹_›
Theorem: Equiv.Perm.fst_prodExtendRight
File: Mathlib/Logic/Equiv/Basic.lean

Proof steps:
state_before: α₁ : Type u_1
β₁ : Type u_2
inst✝ : DecidableEq α₁
a : α₁
e : Perm β₁
ab : α₁ × β₁
⊢ ((prodExtendRight a e) ab).1 = ab.1
state_after: α₁ : Type u_1
β₁ : Type u_2
inst✝ : DecidableEq α₁
a : α₁
e : Perm β₁
ab : α₁ × β₁
⊢ ({ toFun := fun ab => if ab.1 = a then (a, e ab.2) else ab,
          invFun := fun ab => if ab.1 = a then (a, (Equiv.symm e) ab.2) else ab, left_inv := ⋯, right_inv := ⋯ }
        ab).1 =
    ab.1
tactic: rw [prodExtendRight]
state_before: α₁ : Type u_1
β₁ : Type u_2
inst✝ : DecidableEq α₁
a : α₁
e : Perm β₁
ab : α₁ × β₁
⊢ ({ toFun := fun ab => if ab.1 = a then (a, e ab.2) else ab,
          invFun := fun ab => if ab.1 = a then (a, (Equiv.symm e) ab.2) else ab, left_inv := ⋯, right_inv := ⋯ }
        ab).1 =
    ab.1
state_after: α₁ : Type u_1
β₁ : Type u_2
inst✝ : DecidableEq α₁
a : α₁
e : Perm β₁
ab : α₁ × β₁
⊢ (if ab.1 = a then (a, e ab.2) else ab).1 = ab.1
tactic: dsimp
state_before: α₁ : Type u_1
β₁ : Type u_2
inst✝ : DecidableEq α₁
a : α₁
e : Perm β₁
ab : α₁ × β₁
⊢ (if ab.1 = a then (a, e ab.2) else ab).1 = ab.1
state_after: case pos
α₁ : Type u_1
β₁ : Type u_2
inst✝ : DecidableEq α₁
a : α₁
e : Perm β₁
ab : α₁ × β₁
h : ab.1 = a
⊢ (a, e ab.2).1 = ab.1

case neg
α₁ : Type u_1
β₁ : Type u_2
inst✝ : DecidableEq α₁
a : α₁
e : Perm β₁
ab : α₁ × β₁
h : ¬ab.1 = a
⊢ ab.1 = ab.1
tactic: split_ifs with h
Theorem: DirichletCharacter.toUnitHom_eq_char'
File: Mathlib/NumberTheory/DirichletCharacter/Basic.lean

Proof steps:
state_before: R : Type u_1
inst✝ : CommMonoidWithZero R
n : ℕ
χ : DirichletCharacter R n
a : ZMod n
ha : IsUnit a
⊢ χ a = ↑((toUnitHom χ) ha.unit)
state_after: no goals
tactic: simp
Theorem: Matrix.exists_vecMul_eq_zero_iff
File: Mathlib/LinearAlgebra/Matrix/ToLinearEquiv.lean

Proof steps:
state_before: n : Type u_1
inst✝⁶ : Fintype n
R : Type u_2
M✝ : Type u_3
inst✝⁵ : CommRing R
inst✝⁴ : AddCommGroup M✝
inst✝³ : Module R M✝
A : Type u_4
inst✝² : DecidableEq n
inst✝¹ : CommRing A
inst✝ : IsDomain A
M : Matrix n n A
⊢ (∃ v, v ≠ 0 ∧ v ᵥ* M = 0) ↔ M.det = 0
state_after: no goals
tactic: simpa only [← M.det_transpose, ← mulVec_transpose] using exists_mulVec_eq_zero_iff
Theorem: Complex.abs_cpow_real
File: Mathlib/Analysis/SpecialFunctions/Pow/Real.lean

Proof steps:
state_before: x : ℂ
y : ℝ
⊢ abs (x ^ ↑y) = abs x ^ y
state_after: no goals
tactic: rw [abs_cpow_of_imp] <;> simp
Theorem: IsOpen.isGδ
File: Mathlib/Topology/GDelta.lean

Proof steps:
state_before: X : Type u_1
Y : Type u_2
ι : Type u_3
ι' : Sort u_4
inst✝ : TopologicalSpace X
s : Set X
h : IsOpen s
⊢ ∀ t ∈ {s}, IsOpen t
state_after: no goals
tactic: simp [h]
Theorem: CategoryTheory.isSeparator_sigma
File: Mathlib/CategoryTheory/Generator.lean

Proof steps:
state_before: C : Type u₁
inst✝³ : Category.{v₁, u₁} C
D : Type u₂
inst✝² : Category.{v₂, u₂} D
inst✝¹ : HasZeroMorphisms C
β : Type w
f : β → C
inst✝ : HasCoproduct f
⊢ IsSeparator (∐ f) ↔ IsSeparating (Set.range f)
state_after: case refine_1
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
D : Type u₂
inst✝² : Category.{v₂, u₂} D
inst✝¹ : HasZeroMorphisms C
β : Type w
f : β → C
inst✝ : HasCoproduct f
h : IsSeparator (∐ f)
X Y : C
u v : X ⟶ Y
huv : ∀ G ∈ Set.range f, ∀ (h : G ⟶ X), h ≫ u = h ≫ v
⊢ u = v

case refine_2
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
D : Type u₂
inst✝² : Category.{v₂, u₂} D
inst✝¹ : HasZeroMorphisms C
β : Type w
f : β → C
inst✝ : HasCoproduct f
h : IsSeparating (Set.range f)
X Y : C
u v : X ⟶ Y
huv : ∀ (h : ∐ f ⟶ X), h ≫ u = h ≫ v
Z : C
hZ : Z ∈ Set.range f
g : Z ⟶ X
⊢ g ≫ u = g ≫ v
tactic: refine
    ⟨fun h X Y u v huv => ?_, fun h =>
      (isSeparator_def _).2 fun X Y u v huv => h _ _ fun Z hZ g => ?_⟩
Theorem: IntermediateField.fixingSubgroup_fixedField
File: Mathlib/FieldTheory/Galois.lean

Proof steps:
state_before: F : Type u_1
inst✝³ : Field F
E : Type u_2
inst✝² : Field E
inst✝¹ : Algebra F E
H : Subgroup (E ≃ₐ[F] E)
K : IntermediateField F E
inst✝ : FiniteDimensional F E
⊢ (fixedField H).fixingSubgroup = H
state_after: F : Type u_1
inst✝³ : Field F
E : Type u_2
inst✝² : Field E
inst✝¹ : Algebra F E
H : Subgroup (E ≃ₐ[F] E)
K : IntermediateField F E
inst✝ : FiniteDimensional F E
H_le : H ≤ (fixedField H).fixingSubgroup
⊢ (fixedField H).fixingSubgroup = H
tactic: have H_le : H ≤ fixingSubgroup (fixedField H) := (le_iff_le _ _).mp le_rfl
state_before: F : Type u_1
inst✝³ : Field F
E : Type u_2
inst✝² : Field E
inst✝¹ : Algebra F E
H : Subgroup (E ≃ₐ[F] E)
K : IntermediateField F E
inst✝ : FiniteDimensional F E
H_le : H ≤ (fixedField H).fixingSubgroup
⊢ (fixedField H).fixingSubgroup = H
state_after: no goals
tactic: classical
  suffices Fintype.card H = Fintype.card (fixingSubgroup (fixedField H)) by
    exact SetLike.coe_injective (Set.eq_of_inclusion_surjective
      ((Fintype.bijective_iff_injective_and_card (Set.inclusion H_le)).mpr
        ⟨Set.inclusion_injective H_le, this⟩).2).symm
  apply Fintype.card_congr
  refine (FixedPoints.toAlgHomEquiv H E).trans ?_
  refine (algEquivEquivAlgHom (fixedField H) E).toEquiv.symm.trans ?_
  exact (fixingSubgroupEquiv (fixedField H)).toEquiv.symm
Theorem: Mathlib.Tactic.Abel.term_atom_pf
File: Mathlib/Tactic/Abel.lean

Proof steps:
state_before: α : Type u_1
inst✝ : AddCommMonoid α
x x' : α
h : x = x'
⊢ x = term 1 x' 0
state_after: no goals
tactic: simp [term, h]
Theorem: CategoryTheory.Square.toArrowArrowFunctor'_obj_left_right
File: Mathlib/CategoryTheory/Square.lean

Proof steps:
state_before: C : Type u
inst✝¹ : Category.{v, u} C
D : Type u'
inst✝ : Category.{v', u'} D
X✝ Y✝ : Square C
φ : X✝ ⟶ Y✝
⊢ Arrow.homMk ⋯ ≫ ((fun sq => Arrow.mk (Arrow.homMk ⋯)) Y✝).hom =
    ((fun sq => Arrow.mk (Arrow.homMk ⋯)) X✝).hom ≫ Arrow.homMk ⋯
state_after: no goals
tactic: aesop_cat
Theorem: Profinite.projective_of_extrDisc
File: Mathlib/Topology/Category/Stonean/Basic.lean

Proof steps:
state_before: X : Profinite
hX : ExtremallyDisconnected ↑X.toTop
⊢ Projective X
state_after: X : Profinite
hX : ExtremallyDisconnected ↑X.toTop
⊢ Projective (Stonean.toProfinite.obj (CompHausLike.mk X.toTop ⋯))
tactic: show Projective (Stonean.toProfinite.obj ⟨X.toTop, inferInstance⟩)
state_before: X : Profinite
hX : ExtremallyDisconnected ↑X.toTop
⊢ Projective (Stonean.toProfinite.obj (CompHausLike.mk X.toTop ⋯))
state_after: no goals
tactic: exact inferInstance
Theorem: CliffordAlgebra.lift_unique
File: Mathlib/LinearAlgebra/CliffordAlgebra/Basic.lean

Proof steps:
state_before: R : Type u_1
inst✝⁴ : CommRing R
M : Type u_2
inst✝³ : AddCommGroup M
inst✝² : Module R M
Q : QuadraticForm R M
n : ℕ
A : Type u_3
inst✝¹ : Semiring A
inst✝ : Algebra R A
f : M →ₗ[R] A
cond : ∀ (m : M), f m * f m = (algebraMap R A) (Q m)
g : CliffordAlgebra Q →ₐ[R] A
⊢ g.toLinearMap ∘ₗ ι Q = f ↔ g = (lift Q) ⟨f, cond⟩
state_after: case h.e'_1.a
R : Type u_1
inst✝⁴ : CommRing R
M : Type u_2
inst✝³ : AddCommGroup M
inst✝² : Module R M
Q : QuadraticForm R M
n : ℕ
A : Type u_3
inst✝¹ : Semiring A
inst✝ : Algebra R A
f : M →ₗ[R] A
cond : ∀ (m : M), f m * f m = (algebraMap R A) (Q m)
g : CliffordAlgebra Q →ₐ[R] A
⊢ g.toLinearMap ∘ₗ ι Q = f ↔ (lift Q).symm g = ⟨f, cond⟩
tactic: convert (lift Q : _ ≃ (CliffordAlgebra Q →ₐ[R] A)).symm_apply_eq
state_before: case h.e'_1.a
R : Type u_1
inst✝⁴ : CommRing R
M : Type u_2
inst✝³ : AddCommGroup M
inst✝² : Module R M
Q : QuadraticForm R M
n : ℕ
A : Type u_3
inst✝¹ : Semiring A
inst✝ : Algebra R A
f : M →ₗ[R] A
cond : ∀ (m : M), f m * f m = (algebraMap R A) (Q m)
g : CliffordAlgebra Q →ₐ[R] A
⊢ g.toLinearMap ∘ₗ ι Q = f ↔ (lift Q).symm g = ⟨f, cond⟩
state_after: no goals
tactic: rw [lift_symm_apply, Subtype.mk_eq_mk]
Theorem: Nat.modEq_digits_sum
File: Mathlib/Data/Nat/Digits.lean

Proof steps:
state_before: n✝ b b' : ℕ
h : b' % b = 1
n : ℕ
⊢ n ≡ (b'.digits n).sum [MOD b]
state_after: n✝ b b' : ℕ
h : b' % b = 1
n : ℕ
⊢ n ≡ ofDigits 1 (b'.digits n) [MOD b]
tactic: rw [← ofDigits_one]
state_before: n✝ b b' : ℕ
h : b' % b = 1
n : ℕ
⊢ ofDigits b' (b'.digits n) ≡ ofDigits 1 (b'.digits n) [MOD b]
state_after: case h.e'_3.h.e'_3
n✝ b b' : ℕ
h : b' % b = 1
n : ℕ
⊢ 1 = b' % b
tactic: convert ofDigits_modEq b' b (digits b' n)
state_before: case h.e'_3.h.e'_3
n✝ b b' : ℕ
h : b' % b = 1
n : ℕ
⊢ 1 = b' % b
state_after: no goals
tactic: exact h.symm
Theorem: AddMonoidAlgebra.divOf_add_modOf
File: Mathlib/Algebra/MonoidAlgebra/Division.lean

Proof steps:
state_before: k : Type u_1
G : Type u_2
inst✝¹ : Semiring k
inst✝ : AddCancelCommMonoid G
x : k[G]
g : G
⊢ of' k G g * (x /ᵒᶠ g) + x %ᵒᶠ g = x
state_after: k : Type u_1
G : Type u_2
inst✝¹ : Semiring k
inst✝ : AddCancelCommMonoid G
x : k[G]
g g' : G
⊢ (of' k G g * (x /ᵒᶠ g) + x %ᵒᶠ g) g' = x g'
tactic: refine Finsupp.ext fun g' => ?_
state_before: k : Type u_1
G : Type u_2
inst✝¹ : Semiring k
inst✝ : AddCancelCommMonoid G
x : k[G]
g g' : G
⊢ (of' k G g * (x /ᵒᶠ g) + x %ᵒᶠ g) g' = x g'
state_after: k : Type u_1
G : Type u_2
inst✝¹ : Semiring k
inst✝ : AddCancelCommMonoid G
x : k[G]
g g' : G
⊢ (of' k G g * (x /ᵒᶠ g)) g' + (x %ᵒᶠ g) g' = x g'
tactic: rw [Finsupp.add_apply]
state_before: k : Type u_1
G : Type u_2
inst✝¹ : Semiring k
inst✝ : AddCancelCommMonoid G
x : k[G]
g g' : G
⊢ (of' k G g * (x /ᵒᶠ g)) g' + (x %ᵒᶠ g) g' = x g'
state_after: case inl.intro
k : Type u_1
G : Type u_2
inst✝¹ : Semiring k
inst✝ : AddCancelCommMonoid G
x : k[G]
g d : G
⊢ (of' k G g * (x /ᵒᶠ g)) (g + d) + (x %ᵒᶠ g) (g + d) = x (g + d)

case inr
k : Type u_1
G : Type u_2
inst✝¹ : Semiring k
inst✝ : AddCancelCommMonoid G
x : k[G]
g g' : G
h : ¬∃ d, g' = g + d
⊢ (of' k G g * (x /ᵒᶠ g)) g' + (x %ᵒᶠ g) g' = x g'
tactic: obtain ⟨d, rfl⟩ | h := em (∃ d, g' = g + d)
state_before: case inl.intro
k : Type u_1
G : Type u_2
inst✝¹ : Semiring k
inst✝ : AddCancelCommMonoid G
x : k[G]
g d : G
⊢ (of' k G g * (x /ᵒᶠ g)) (g + d) + (x %ᵒᶠ g) (g + d) = x (g + d)

case inr
k : Type u_1
G : Type u_2
inst✝¹ : Semiring k
inst✝ : AddCancelCommMonoid G
x : k[G]
g g' : G
h : ¬∃ d, g' = g + d
⊢ (of' k G g * (x /ᵒᶠ g)) g' + (x %ᵒᶠ g) g' = x g'
state_after: case inr
k : Type u_1
G : Type u_2
inst✝¹ : Semiring k
inst✝ : AddCancelCommMonoid G
x : k[G]
g g' : G
h : ¬∃ d, g' = g + d
⊢ (of' k G g * (x /ᵒᶠ g)) g' + (x %ᵒᶠ g) g' = x g'

case inl.intro
k : Type u_1
G : Type u_2
inst✝¹ : Semiring k
inst✝ : AddCancelCommMonoid G
x : k[G]
g d : G
⊢ (of' k G g * (x /ᵒᶠ g)) (g + d) + (x %ᵒᶠ g) (g + d) = x (g + d)
tactic: swap
Theorem: inf_covBy_of_covBy_sup_of_covBy_sup_right
File: Mathlib/Order/ModularLattice.lean

Proof steps:
state_before: α : Type u_1
inst✝¹ : Lattice α
inst✝ : IsWeakLowerModularLattice α
a b : α
⊢ a ⋖ a ⊔ b → b ⋖ a ⊔ b → a ⊓ b ⋖ b
state_after: α : Type u_1
inst✝¹ : Lattice α
inst✝ : IsWeakLowerModularLattice α
a b : α
⊢ a ⋖ b ⊔ a → b ⋖ b ⊔ a → b ⊓ a ⋖ b
tactic: rw [sup_comm, inf_comm]
state_before: α : Type u_1
inst✝¹ : Lattice α
inst✝ : IsWeakLowerModularLattice α
a b : α
⊢ a ⋖ b ⊔ a → b ⋖ b ⊔ a → b ⊓ a ⋖ b
state_after: no goals
tactic: exact fun ha hb => inf_covBy_of_covBy_sup_of_covBy_sup_left hb ha