ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
Theorem: AlgebraicGeometry.Scheme.eqToHom_c_app
File: Mathlib/AlgebraicGeometry/Scheme.lean

Proof steps:
state_before: X Y : Scheme
e : X = Y
U : Y.Opens
⊢ Γ(Y, U) = Γ(X, eqToHom e ⁻¹ᵁ U)
state_after: X : Scheme
U : X.Opens
⊢ Γ(X, U) = Γ(X, eqToHom ⋯ ⁻¹ᵁ U)
tactic: subst e
state_before: X : Scheme
U : X.Opens
⊢ Γ(X, U) = Γ(X, eqToHom ⋯ ⁻¹ᵁ U)
state_after: no goals
tactic: rfl
state_before: X Y : Scheme
e : X = Y
U : Y.Opens
⊢ Hom.app (eqToHom e) U = eqToHom ⋯
state_after: X : Scheme
U : X.Opens
⊢ Hom.app (eqToHom ⋯) U = eqToHom ⋯
tactic: subst e
state_before: X : Scheme
U : X.Opens
⊢ Hom.app (eqToHom ⋯) U = eqToHom ⋯
state_after: no goals
tactic: rfl
Theorem: AddLocalization.mk_eq_mk_iff
File: Mathlib/GroupTheory/MonoidLocalization/Basic.lean

Proof steps:
state_before: M : Type u_1
inst✝² : CommMonoid M
S : Submonoid M
N : Type u_2
inst✝¹ : CommMonoid N
P : Type u_3
inst✝ : CommMonoid P
a c : M
b d : ↥S
⊢ mk a b = mk c d ↔ (r S) (a, b) (c, d)
state_after: M : Type u_1
inst✝² : CommMonoid M
S : Submonoid M
N : Type u_2
inst✝¹ : CommMonoid N
P : Type u_3
inst✝ : CommMonoid P
a c : M
b d : ↥S
⊢ (∃ u v, u • c = v • a ∧ ↑u * ↑d = v * ↑b) ↔ Setoid.r (a, b) (c, d)
tactic: rw [mk, mk, OreLocalization.oreDiv_eq_iff, r_iff_oreEqv_r]
state_before: M : Type u_1
inst✝² : CommMonoid M
S : Submonoid M
N : Type u_2
inst✝¹ : CommMonoid N
P : Type u_3
inst✝ : CommMonoid P
a c : M
b d : ↥S
⊢ (∃ u v, u • c = v • a ∧ ↑u * ↑d = v * ↑b) ↔ Setoid.r (a, b) (c, d)
state_after: no goals
tactic: rfl
Theorem: IsCyclotomicExtension.finite
File: Mathlib/NumberTheory/Cyclotomic/Basic.lean

Proof steps:
state_before: n : ℕ+
S T : Set ℕ+
A : Type u
B : Type v
K : Type w
L : Type z
inst✝⁶ : CommRing A
inst✝⁵ : CommRing B
inst✝⁴ : Algebra A B
inst✝³ : Field K
inst✝² : Field L
inst✝¹ : Algebra K L
inst✝ : IsDomain B
h₁ : Finite ↑S
h₂ : IsCyclotomicExtension S A B
⊢ Module.Finite A B
state_after: case intro
n : ℕ+
S T : Set ℕ+
A : Type u
B : Type v
K : Type w
L : Type z
inst✝⁶ : CommRing A
inst✝⁵ : CommRing B
inst✝⁴ : Algebra A B
inst✝³ : Field K
inst✝² : Field L
inst✝¹ : Algebra K L
inst✝ : IsDomain B
h₁ : Finite ↑S
h₂ : IsCyclotomicExtension S A B
h : Fintype ↑S
⊢ Module.Finite A B
tactic: cases' nonempty_fintype S with h
state_before: case intro
n : ℕ+
S T : Set ℕ+
A : Type u
B : Type v
K : Type w
L : Type z
inst✝⁶ : CommRing A
inst✝⁵ : CommRing B
inst✝⁴ : Algebra A B
inst✝³ : Field K
inst✝² : Field L
inst✝¹ : Algebra K L
inst✝ : IsDomain B
h₁ : Finite ↑S
h₂ : IsCyclotomicExtension S A B
h : Fintype ↑S
⊢ Module.Finite A B
state_after: case intro
n : ℕ+
S T : Set ℕ+
K : Type w
L : Type z
inst✝² : Field K
inst✝¹ : Field L
inst✝ : Algebra K L
h₁ : Finite ↑S
h : Fintype ↑S
⊢ ∀ (A : Type u) (B : Type v) [inst : CommRing A] [inst_1 : CommRing B] [inst_2 : Algebra A B] [inst_3 : IsDomain B]
    [h₂ : IsCyclotomicExtension S A B], Module.Finite A B
tactic: revert h₂ A B
state_before: case intro
n : ℕ+
S T : Set ℕ+
K : Type w
L : Type z
inst✝² : Field K
inst✝¹ : Field L
inst✝ : Algebra K L
h₁ : Finite ↑S
h : Fintype ↑S
⊢ ∀ (A : Type u) (B : Type v) [inst : CommRing A] [inst_1 : CommRing B] [inst_2 : Algebra A B] [inst_3 : IsDomain B]
    [h₂ : IsCyclotomicExtension S A B], Module.Finite A B
state_after: case intro.refine_1
n : ℕ+
S T : Set ℕ+
K : Type w
L : Type z
inst✝² : Field K
inst✝¹ : Field L
inst✝ : Algebra K L
h₁ : Finite ↑S
h : Fintype ↑S
A : Type u
B : Type v
⊢ ∀ [inst : CommRing A] [inst_1 : CommRing B] [inst_2 : Algebra A B] [inst_3 : IsDomain B]
    [h₂ : IsCyclotomicExtension ∅ A B], Module.Finite A B

case intro.refine_2
n✝ : ℕ+
S✝ T : Set ℕ+
K : Type w
L : Type z
inst✝² : Field K
inst✝¹ : Field L
inst✝ : Algebra K L
h₁ : Finite ↑S✝
h : Fintype ↑S✝
n : ℕ+
S : Set ℕ+
x✝¹ : n ∉ S
x✝ : S.Finite
H :
  ∀ (A : Type u) (B : Type v) [inst : CommRing A] [inst_1 : CommRing B] [inst_2 : Algebra A B] [inst_3 : IsDomain B]
    [h₂ : IsCyclotomicExtension S A B], Module.Finite A B
A : Type u
B : Type v
⊢ ∀ [inst : CommRing A] [inst_1 : CommRing B] [inst_2 : Algebra A B] [inst_3 : IsDomain B]
    [h₂ : IsCyclotomicExtension (insert n S) A B], Module.Finite A B
tactic: refine Set.Finite.induction_on h₁ (fun A B => ?_) @fun n S _ _ H A B => ?_
Theorem: AddSubgroup.mem_addUnits_iff_val_mem
File: Mathlib/Algebra/Group/Submonoid/Units.lean

Proof steps:
state_before: M : Type u_1
inst✝¹ : Monoid M
G : Type u_2
inst✝ : Group G
H : Subgroup G
x : Gˣ
⊢ x ∈ H.units ↔ ↑x ∈ H
state_after: no goals
tactic: simp_rw [Submonoid.mem_units_iff, mem_toSubmonoid, val_inv_eq_inv_val, inv_mem_iff, and_self]
Theorem: SimpleGraph.Walk.length_dropUntil_le
File: Mathlib/Combinatorics/SimpleGraph/Walk.lean

Proof steps:
state_before: V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
u✝ v✝ w✝ x y : V
inst✝ : DecidableEq V
u v w : V
p : G.Walk v w
h : u ∈ p.support
⊢ (p.dropUntil u h).length ≤ p.length
state_after: V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
u✝ v✝ w✝ x y : V
inst✝ : DecidableEq V
u v w : V
p : G.Walk v w
h : u ∈ p.support
this : ((p.takeUntil u h).append (p.dropUntil u h)).length = p.length
⊢ (p.dropUntil u h).length ≤ p.length
tactic: have := congr_arg Walk.length (p.take_spec h)
state_before: V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
u✝ v✝ w✝ x y : V
inst✝ : DecidableEq V
u v w : V
p : G.Walk v w
h : u ∈ p.support
this : ((p.takeUntil u h).append (p.dropUntil u h)).length = p.length
⊢ (p.dropUntil u h).length ≤ p.length
state_after: V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
u✝ v✝ w✝ x y : V
inst✝ : DecidableEq V
u v w : V
p : G.Walk v w
h : u ∈ p.support
this : (p.dropUntil u h).length + (p.takeUntil u h).length = p.length
⊢ (p.dropUntil u h).length ≤ p.length
tactic: rw [length_append, add_comm] at this
state_before: V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
u✝ v✝ w✝ x y : V
inst✝ : DecidableEq V
u v w : V
p : G.Walk v w
h : u ∈ p.support
this : (p.dropUntil u h).length + (p.takeUntil u h).length = p.length
⊢ (p.dropUntil u h).length ≤ p.length
state_after: no goals
tactic: exact Nat.le.intro this
Theorem: primorial_succ
File: Mathlib/NumberTheory/Primorial.lean

Proof steps:
state_before: n : ℕ
hn1 : n ≠ 1
hn : Odd n
⊢ (n + 1)# = n#
state_after: n : ℕ
hn1 : n ≠ 1
hn : Odd n
⊢ filter Nat.Prime (range (n + 1 + 1)) = filter Nat.Prime (range (n + 1))
tactic: refine prod_congr ?_ fun _ _ ↦ rfl
state_before: n : ℕ
hn1 : n ≠ 1
hn : Odd n
⊢ filter Nat.Prime (range (n + 1 + 1)) = filter Nat.Prime (range (n + 1))
state_after: n : ℕ
hn1 : n ≠ 1
hn : Odd n
⊢ Nat.Prime (n + 1) → Even n
tactic: rw [range_succ, filter_insert, if_neg fun h ↦ odd_iff_not_even.mp hn _]
state_before: n : ℕ
hn1 : n ≠ 1
hn : Odd n
⊢ Nat.Prime (n + 1) → Even n
state_after: no goals
tactic: exact fun h ↦ h.even_sub_one <| mt succ.inj hn1
Theorem: MeasureTheory.Lp.nnnorm_le_mul_nnnorm_of_ae_le_mul
File: Mathlib/MeasureTheory/Function/LpSpace.lean

Proof steps:
state_before: α : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
m m0 : MeasurableSpace α
p : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedAddCommGroup G
c : ℝ≥0
f : ↥(Lp E p μ)
g : ↥(Lp F p μ)
h : ∀ᵐ (x : α) ∂μ, ‖↑↑f x‖₊ ≤ c * ‖↑↑g x‖₊
⊢ ‖f‖₊ ≤ c * ‖g‖₊
state_after: α : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
m m0 : MeasurableSpace α
p : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedAddCommGroup G
c : ℝ≥0
f : ↥(Lp E p μ)
g : ↥(Lp F p μ)
h : ∀ᵐ (x : α) ∂μ, ‖↑↑f x‖₊ ≤ c * ‖↑↑g x‖₊
⊢ (eLpNorm (↑↑f) p μ).toNNReal ≤ c * (eLpNorm (↑↑g) p μ).toNNReal
tactic: simp only [nnnorm_def]
state_before: α : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
m m0 : MeasurableSpace α
p : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedAddCommGroup G
c : ℝ≥0
f : ↥(Lp E p μ)
g : ↥(Lp F p μ)
h : ∀ᵐ (x : α) ∂μ, ‖↑↑f x‖₊ ≤ c * ‖↑↑g x‖₊
⊢ (eLpNorm (↑↑f) p μ).toNNReal ≤ c * (eLpNorm (↑↑g) p μ).toNNReal
state_after: α : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
m m0 : MeasurableSpace α
p : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedAddCommGroup G
c : ℝ≥0
f : ↥(Lp E p μ)
g : ↥(Lp F p μ)
h : ∀ᵐ (x : α) ∂μ, ‖↑↑f x‖₊ ≤ c * ‖↑↑g x‖₊
this : eLpNorm (↑↑f) p μ ≤ c • eLpNorm (↑↑g) p μ
⊢ (eLpNorm (↑↑f) p μ).toNNReal ≤ c * (eLpNorm (↑↑g) p μ).toNNReal
tactic: have := eLpNorm_le_nnreal_smul_eLpNorm_of_ae_le_mul h p
state_before: α : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
m m0 : MeasurableSpace α
p : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedAddCommGroup G
c : ℝ≥0
f : ↥(Lp E p μ)
g : ↥(Lp F p μ)
h : ∀ᵐ (x : α) ∂μ, ‖↑↑f x‖₊ ≤ c * ‖↑↑g x‖₊
this : eLpNorm (↑↑f) p μ ≤ c • eLpNorm (↑↑g) p μ
⊢ (eLpNorm (↑↑f) p μ).toNNReal ≤ c * (eLpNorm (↑↑g) p μ).toNNReal
state_after: case ha
α : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
m m0 : MeasurableSpace α
p : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedAddCommGroup G
c : ℝ≥0
f : ↥(Lp E p μ)
g : ↥(Lp F p μ)
h : ∀ᵐ (x : α) ∂μ, ‖↑↑f x‖₊ ≤ c * ‖↑↑g x‖₊
this : eLpNorm (↑↑f) p μ ≤ c • eLpNorm (↑↑g) p μ
⊢ eLpNorm (↑↑f) p μ ≠ ⊤

case hb
α : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
m m0 : MeasurableSpace α
p : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedAddCommGroup G
c : ℝ≥0
f : ↥(Lp E p μ)
g : ↥(Lp F p μ)
h : ∀ᵐ (x : α) ∂μ, ‖↑↑f x‖₊ ≤ c * ‖↑↑g x‖₊
this : eLpNorm (↑↑f) p μ ≤ c • eLpNorm (↑↑g) p μ
⊢ c • eLpNorm (↑↑g) p μ ≠ ⊤
tactic: rwa [← ENNReal.toNNReal_le_toNNReal, ENNReal.smul_def, smul_eq_mul, ENNReal.toNNReal_mul,
    ENNReal.toNNReal_coe] at this
Theorem: Language.reverse_one
File: Mathlib/Computability/Language.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
l m : Language α
a b x : List α
⊢ reverse 1 = 1
state_after: no goals
tactic: simp [reverse, ← one_def]
Theorem: NumberField.RingOfIntegers.mk_eq_mk
File: Mathlib/NumberTheory/NumberField/Basic.lean

Proof steps:
state_before: K : Type u_1
L : Type u_2
inst✝¹ : Field K
inst✝ : Field L
nf : NumberField K
x y : K
hx : x ∈ integralClosure ℤ K
hy : y ∈ integralClosure ℤ K
⊢ ⟨x, hx⟩ = ⟨y, hy⟩ ↔ x = y
state_after: no goals
tactic: simp
Theorem: Algebra.FormallySmooth.iff_split_surjection
File: Mathlib/RingTheory/Smooth/Basic.lean

Proof steps:
state_before: R S : Type u
inst✝⁶ : CommRing R
inst✝⁵ : CommSemiring S
P A : Type u
inst✝⁴ : CommRing A
inst✝³ : Algebra R A
inst✝² : CommRing P
inst✝¹ : Algebra R P
I : Ideal P
f : P →ₐ[R] A
hf : Function.Surjective ⇑f
inst✝ : FormallySmooth R P
⊢ FormallySmooth R A ↔ ∃ g, f.kerSquareLift.comp g = AlgHom.id R A
state_after: case mp
R S : Type u
inst✝⁶ : CommRing R
inst✝⁵ : CommSemiring S
P A : Type u
inst✝⁴ : CommRing A
inst✝³ : Algebra R A
inst✝² : CommRing P
inst✝¹ : Algebra R P
I : Ideal P
f : P →ₐ[R] A
hf : Function.Surjective ⇑f
inst✝ : FormallySmooth R P
⊢ FormallySmooth R A → ∃ g, f.kerSquareLift.comp g = AlgHom.id R A

case mpr
R S : Type u
inst✝⁶ : CommRing R
inst✝⁵ : CommSemiring S
P A : Type u
inst✝⁴ : CommRing A
inst✝³ : Algebra R A
inst✝² : CommRing P
inst✝¹ : Algebra R P
I : Ideal P
f : P →ₐ[R] A
hf : Function.Surjective ⇑f
inst✝ : FormallySmooth R P
⊢ (∃ g, f.kerSquareLift.comp g = AlgHom.id R A) → FormallySmooth R A
tactic: constructor
Theorem: ENNReal.inv_eq_one
File: Mathlib/Data/ENNReal/Inv.lean

Proof steps:
state_before: a b c d : ℝ≥0∞
r p q : ℝ≥0
⊢ a⁻¹ = 1 ↔ a = 1
state_after: no goals
tactic: rw [← inv_inj, inv_inv, inv_one]
Theorem: Set.ncard_singleton_inter
File: Mathlib/Data/Set/Card.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
s✝ t : Set α
a : α
s : Set α
⊢ ({a} ∩ s).ncard ≤ 1
state_after: α : Type u_1
β : Type u_2
s✝ t : Set α
a : α
s : Set α
⊢ ({a} ∩ s).encard ≤ 1
tactic: rw [← Nat.cast_le (α := ℕ∞), (toFinite _).cast_ncard_eq, Nat.cast_one]
state_before: α : Type u_1
β : Type u_2
s✝ t : Set α
a : α
s : Set α
⊢ ({a} ∩ s).encard ≤ 1
state_after: no goals
tactic: apply encard_singleton_inter
Theorem: cauchy_series_of_le_geometric
File: Mathlib/Analysis/SpecificLimits/Normed.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
inst✝ : SeminormedAddCommGroup α
r✝ C✝ : ℝ
f : ℕ → α
C : ℝ
u : ℕ → α
r : ℝ
hr : r < 1
h : ∀ (n : ℕ), ‖u n‖ ≤ C * r ^ n
⊢ ∀ (n : ℕ), dist (∑ k ∈ Finset.range n, u k) (∑ k ∈ Finset.range (n + 1), u k) ≤ C * r ^ n
state_after: no goals
tactic: simp [h]
Theorem: Ideal.cotangentIdeal_square
File: Mathlib/RingTheory/Ideal/Cotangent.lean

Proof steps:
state_before: R : Type u
S : Type v
S' : Type w
inst✝⁶ : CommRing R
inst✝⁵ : CommSemiring S
inst✝⁴ : Algebra S R
inst✝³ : CommSemiring S'
inst✝² : Algebra S' R
inst✝¹ : Algebra S S'
inst✝ : IsScalarTower S S' R
I✝ I : Ideal R
⊢ I.cotangentIdeal ^ 2 = ⊥
state_after: R : Type u
S : Type v
S' : Type w
inst✝⁶ : CommRing R
inst✝⁵ : CommSemiring S
inst✝⁴ : Algebra S R
inst✝³ : CommSemiring S'
inst✝² : Algebra S' R
inst✝¹ : Algebra S S'
inst✝ : IsScalarTower S S' R
I✝ I : Ideal R
⊢ I.cotangentIdeal • I.cotangentIdeal ≤ ⊥
tactic: rw [eq_bot_iff, pow_two I.cotangentIdeal, ← smul_eq_mul]
state_before: R : Type u
S : Type v
S' : Type w
inst✝⁶ : CommRing R
inst✝⁵ : CommSemiring S
inst✝⁴ : Algebra S R
inst✝³ : CommSemiring S'
inst✝² : Algebra S' R
inst✝¹ : Algebra S S'
inst✝ : IsScalarTower S S' R
I✝ I : Ideal R
⊢ I.cotangentIdeal • I.cotangentIdeal ≤ ⊥
state_after: R : Type u
S : Type v
S' : Type w
inst✝⁶ : CommRing R
inst✝⁵ : CommSemiring S
inst✝⁴ : Algebra S R
inst✝³ : CommSemiring S'
inst✝² : Algebra S' R
inst✝¹ : Algebra S S'
inst✝ : IsScalarTower S S' R
I✝ I : Ideal R
x : R ⧸ I ^ 2
hx : x ∈ I.cotangentIdeal • I.cotangentIdeal
⊢ x ∈ ⊥
tactic: intro x hx
state_before: R : Type u
S : Type v
S' : Type w
inst✝⁶ : CommRing R
inst✝⁵ : CommSemiring S
inst✝⁴ : Algebra S R
inst✝³ : CommSemiring S'
inst✝² : Algebra S' R
inst✝¹ : Algebra S S'
inst✝ : IsScalarTower S S' R
I✝ I : Ideal R
x : R ⧸ I ^ 2
hx : x ∈ I.cotangentIdeal • I.cotangentIdeal
⊢ x ∈ ⊥
state_after: case refine_1
R : Type u
S : Type v
S' : Type w
inst✝⁶ : CommRing R
inst✝⁵ : CommSemiring S
inst✝⁴ : Algebra S R
inst✝³ : CommSemiring S'
inst✝² : Algebra S' R
inst✝¹ : Algebra S S'
inst✝ : IsScalarTower S S' R
I✝ I : Ideal R
x : R ⧸ I ^ 2
hx : x ∈ I.cotangentIdeal • I.cotangentIdeal
⊢ ∀ r ∈ I.cotangentIdeal, ∀ n ∈ I.cotangentIdeal, r • n ∈ ⊥

case refine_2
R : Type u
S : Type v
S' : Type w
inst✝⁶ : CommRing R
inst✝⁵ : CommSemiring S
inst✝⁴ : Algebra S R
inst✝³ : CommSemiring S'
inst✝² : Algebra S' R
inst✝¹ : Algebra S S'
inst✝ : IsScalarTower S S' R
I✝ I : Ideal R
x : R ⧸ I ^ 2
hx : x ∈ I.cotangentIdeal • I.cotangentIdeal
⊢ ∀ (x y : R ⧸ I ^ 2), x ∈ ⊥ → y ∈ ⊥ → x + y ∈ ⊥
tactic: refine Submodule.smul_induction_on hx ?_ ?_
Theorem: Real.ofCauchy_sub
File: Mathlib/Data/Real/Basic.lean

Proof steps:
state_before: x y : ℝ
a b : Cauchy abs
⊢ { cauchy := a - b } = { cauchy := a } - { cauchy := b }
state_after: x y : ℝ
a b : Cauchy abs
⊢ { cauchy := a } + -{ cauchy := b } = { cauchy := a } - { cauchy := b }
tactic: rw [sub_eq_add_neg, ofCauchy_add, ofCauchy_neg]
state_before: x y : ℝ
a b : Cauchy abs
⊢ { cauchy := a } + -{ cauchy := b } = { cauchy := a } - { cauchy := b }
state_after: no goals
tactic: rfl
Theorem: InnerProductGeometry.inner_eq_neg_mul_norm_of_angle_eq_pi
File: Mathlib/Geometry/Euclidean/Angle/Unoriented/Basic.lean

Proof steps:
state_before: V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
x✝ y✝ x y : V
h : angle x y = π
⊢ ⟪x, y⟫_ℝ = -(‖x‖ * ‖y‖)
state_after: no goals
tactic: simp [← cos_angle_mul_norm_mul_norm, h]
Theorem: Prop.exists
File: Mathlib/Logic/Lemmas.lean

Proof steps:
state_before: α : Sort u_1
p✝ q r : Prop
inst✝¹ : Decidable p✝
inst✝ : Decidable q
a b c : α
f : Prop → Prop
x✝ : ∃ p, f p
p : Prop
h : f p
⊢ f True ∨ f False
state_after: no goals
tactic: refine (em p).imp ?_ ?_ <;> intro H <;> convert h <;> simp [H]
state_before: α : Sort u_1
p q r : Prop
inst✝¹ : Decidable p
inst✝ : Decidable q
a b c : α
f : Prop → Prop
⊢ f True ∨ f False → ∃ p, f p
state_after: no goals
tactic: rintro (h | h) <;> exact ⟨_, h⟩
Theorem: Nat.pow_le_iff_le_log
File: Mathlib/Data/Nat/Log.lean

Proof steps:
state_before: b : ℕ
hb : 1 < b
x y : ℕ
hy : y ≠ 0
⊢ b ^ x ≤ y ↔ x ≤ log b y
state_after: case h
b : ℕ
hb : 1 < b
y : ℕ
ih : ∀ m < y, ∀ {x : ℕ}, m ≠ 0 → (b ^ x ≤ m ↔ x ≤ log b m)
x : ℕ
hy : y ≠ 0
⊢ b ^ x ≤ y ↔ x ≤ log b y
tactic: induction' y using Nat.strong_induction_on with y ih generalizing x
Theorem: CategoryTheory.Dial.tensor_id
File: Mathlib/CategoryTheory/Dialectica/Monoidal.lean

Proof steps:
state_before: C : Type u
inst✝² : Category.{v, u} C
inst✝¹ : HasFiniteProducts C
inst✝ : HasPullbacks C
X₁ X₂ : Dial C
⊢ 𝟙 X₁ ⊗ 𝟙 X₂ = 𝟙 (X₁ ⊗ X₂)
state_after: no goals
tactic: aesop_cat
Theorem: CategoryTheory.ShortComplex.Homotopy.leftHomologyMap'_congr
File: Mathlib/Algebra/Homology/ShortComplex/Preadditive.lean

Proof steps:
state_before: C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : Preadditive C
S₁ S₂ S₃ : ShortComplex C
φ₁ φ₂ φ₃ φ₄ : S₁ ⟶ S₂
h : Homotopy φ₁ φ₂
h₁ : S₁.LeftHomologyData
h₂ : S₂.LeftHomologyData
⊢ leftHomologyMap' φ₁ h₁ h₂ = leftHomologyMap' φ₂ h₁ h₂
state_after: no goals
tactic: rw [h.eq_add_nullHomotopic, leftHomologyMap'_add, leftHomologyMap'_nullHomotopic, add_zero]
Theorem: MeasureTheory.Measure.haarMeasure_apply
File: Mathlib/MeasureTheory/Measure/Haar/Basic.lean

Proof steps:
state_before: G : Type u_1
inst✝⁴ : Group G
inst✝³ : TopologicalSpace G
inst✝² : TopologicalGroup G
inst✝¹ : MeasurableSpace G
inst✝ : BorelSpace G
K₀ : PositiveCompacts G
s : Set G
hs : MeasurableSet s
⊢ (haarMeasure K₀) s = (haarContent K₀).outerMeasure s / (haarContent K₀).measure ↑K₀
state_after: G : Type u_1
inst✝⁴ : Group G
inst✝³ : TopologicalSpace G
inst✝² : TopologicalGroup G
inst✝¹ : MeasurableSpace G
inst✝ : BorelSpace G
K₀ : PositiveCompacts G
s : Set G
hs : MeasurableSet s
⊢ ((haarContent K₀).measure ↑K₀)⁻¹ * (haarContent K₀).measure s =
    (haarContent K₀).outerMeasure s / (haarContent K₀).measure ↑K₀
tactic: change ((haarContent K₀).measure K₀)⁻¹ * (haarContent K₀).measure s = _
state_before: G : Type u_1
inst✝⁴ : Group G
inst✝³ : TopologicalSpace G
inst✝² : TopologicalGroup G
inst✝¹ : MeasurableSpace G
inst✝ : BorelSpace G
K₀ : PositiveCompacts G
s : Set G
hs : MeasurableSet s
⊢ ((haarContent K₀).measure ↑K₀)⁻¹ * (haarContent K₀).measure s =
    (haarContent K₀).outerMeasure s / (haarContent K₀).measure ↑K₀
state_after: no goals
tactic: simp only [hs, div_eq_mul_inv, mul_comm, Content.measure_apply]
Theorem: div_lt_comm₀
File: Mathlib/Algebra/Order/Field/Basic.lean

Proof steps:
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
inst✝ : LinearOrderedSemifield α
a b c d e : α
m n : ℤ
hb : 0 < b
hc : 0 < c
⊢ a / b < c ↔ a / c < b
state_after: no goals
tactic: rw [div_lt_iff hb, div_lt_iff' hc]
Theorem: List.isRotated_singleton_iff
File: Mathlib/Data/List/Rotate.lean

Proof steps:
state_before: α : Type u
l l' : List α
x : α
x✝ : l ~r [x]
n : ℕ
hn : l.rotate n = [x]
⊢ l = [x]
state_after: no goals
tactic: simpa using hn
state_before: α : Type u
l l' : List α
x : α
h : l = [x]
⊢ l ~r l
state_after: no goals
tactic: rfl
Theorem: fib_golden_exp'
File: Mathlib/Data/Real/GoldenRatio.lean

Proof steps:
state_before: n : ℕ
⊢ φ * ↑(Nat.fib (n + 1)) + ↑(Nat.fib n) = φ ^ (n + 1)
state_after: no goals
tactic: induction n with
  | zero => norm_num
  | succ n ih =>
    calc
      _ = φ * (Nat.fib n) + φ ^ 2 * (Nat.fib (n + 1)) := by
        simp only [Nat.fib_add_one (Nat.succ_ne_zero n), Nat.succ_sub_succ_eq_sub, tsub_zero,
          Nat.cast_add, gold_sq]; ring
      _ = φ * ((Nat.fib n) + φ * (Nat.fib (n + 1))) := by ring
      _ = φ ^ (n + 2) := by rw [add_comm, ih]; ring
Theorem: Set.smul_mem_center
File: Mathlib/Algebra/Algebra/NonUnitalSubalgebra.lean

Proof steps:
state_before: R : Type u_1
A : Type u_2
inst✝⁴ : CommSemiring R
inst✝³ : NonUnitalNonAssocSemiring A
inst✝² : Module R A
inst✝¹ : IsScalarTower R A A
inst✝ : SMulCommClass R A A
r : R
a : A
ha : a ∈ Set.center A
b : A
⊢ r • a * b = b * r • a
state_after: no goals
tactic: rw [mul_smul_comm, smul_mul_assoc, ha.comm]
state_before: R : Type u_1
A : Type u_2
inst✝⁴ : CommSemiring R
inst✝³ : NonUnitalNonAssocSemiring A
inst✝² : Module R A
inst✝¹ : IsScalarTower R A A
inst✝ : SMulCommClass R A A
r : R
a : A
ha : a ∈ Set.center A
b c : A
⊢ r • a * (b * c) = r • a * b * c
state_after: no goals
tactic: rw [smul_mul_assoc, smul_mul_assoc, smul_mul_assoc, ha.left_assoc]
state_before: R : Type u_1
A : Type u_2
inst✝⁴ : CommSemiring R
inst✝³ : NonUnitalNonAssocSemiring A
inst✝² : Module R A
inst✝¹ : IsScalarTower R A A
inst✝ : SMulCommClass R A A
r : R
a : A
ha : a ∈ Set.center A
b c : A
⊢ b * r • a * c = b * (r • a * c)
state_after: no goals
tactic: rw [mul_smul_comm, smul_mul_assoc, smul_mul_assoc, mul_smul_comm, ha.mid_assoc]
state_before: R : Type u_1
A : Type u_2
inst✝⁴ : CommSemiring R
inst✝³ : NonUnitalNonAssocSemiring A
inst✝² : Module R A
inst✝¹ : IsScalarTower R A A
inst✝ : SMulCommClass R A A
r : R
a : A
ha : a ∈ Set.center A
b c : A
⊢ b * c * r • a = b * (c * r • a)
state_after: no goals
tactic: rw [mul_smul_comm, mul_smul_comm, mul_smul_comm, ha.right_assoc]
Theorem: List.Perm.insert
File: .lake/packages/batteries/Batteries/Data/List/Perm.lean

Proof steps:
state_before: α : Type u_1
inst✝ : DecidableEq α
a : α
l₁ l₂ : List α
p : l₁ ~ l₂
⊢ List.insert a l₁ ~ List.insert a l₂
state_after: no goals
tactic: if h : a ∈ l₁ then
    simp [h, p.subset h, p]
  else
    have := p.cons a
    simpa [h, mt p.mem_iff.2 h] using this
Theorem: UpperHalfPlane.normSq_pos
File: Mathlib/Analysis/Complex/UpperHalfPlane/Basic.lean

Proof steps:
state_before: z : ℍ
⊢ 0 < Complex.normSq ↑z
state_after: z : ℍ
⊢ ↑z ≠ 0
tactic: rw [Complex.normSq_pos]
state_before: z : ℍ
⊢ ↑z ≠ 0
state_after: no goals
tactic: exact z.ne_zero
Theorem: PredOrder.ofCore_pred
File: Mathlib/Order/SuccPred/Basic.lean

Proof steps:
state_before: α✝ : Type u_1
β : Type u_2
inst✝¹ : LinearOrder α✝
α : Type ?u.4184
inst✝ : LinearOrder α
pred : α → α
hn : ∀ {a : α}, ¬IsMin a → ∀ (b : α), b ≤ pred a ↔ b < a
hm : ∀ (a : α), IsMin a → pred a = a
a : α
h : ¬IsMin a
⊢ pred a < a
state_after: no goals
tactic: simpa using (hn h a).not
state_before: α✝ : Type u_1
β : Type u_2
inst✝¹ : LinearOrder α✝
α : Type ?u.4184
inst✝ : LinearOrder α
pred : α → α
hn : ∀ {a : α}, ¬IsMin a → ∀ (b : α), b ≤ pred a ↔ b < a
hm : ∀ (a : α), IsMin a → pred a = a
a b : α
hab : pred a < b
h : ¬IsMin a
⊢ a ≤ b
state_after: no goals
tactic: simpa [hab] using (hn h b).not
state_before: α✝ : Type u_1
β : Type u_2
inst✝¹ : LinearOrder α✝
α : Type ?u.4184
inst✝ : LinearOrder α
pred : α → α
hn : ∀ {a : α}, ¬IsMin a → ∀ (b : α), b ≤ pred a ↔ b < a
hm : ∀ (a : α), IsMin a → pred a = a
a : α
h : ¬IsMin a
⊢ ¬a ≤ pred a
state_after: no goals
tactic: simpa using (hn h a).not
Theorem: MeasureTheory.IsStoppingTime.measurableSpace_le
File: Mathlib/Probability/Process/Stopping.lean

Proof steps:
state_before: Ω : Type u_1
β : Type u_2
ι✝ : Type u_3
m : MeasurableSpace Ω
inst✝² : Preorder ι✝
f✝ : Filtration ι✝ m
τ✝ π : Ω → ι✝
ι : Type u_4
inst✝¹ : SemilatticeSup ι
f : Filtration ι m
τ : Ω → ι
inst✝ : atTop.IsCountablyGenerated
hτ : IsStoppingTime f τ
⊢ hτ.measurableSpace ≤ m
state_after: case inl
Ω : Type u_1
β : Type u_2
ι✝ : Type u_3
m : MeasurableSpace Ω
inst✝² : Preorder ι✝
f✝ : Filtration ι✝ m
τ✝ π : Ω → ι✝
ι : Type u_4
inst✝¹ : SemilatticeSup ι
f : Filtration ι m
τ : Ω → ι
inst✝ : atTop.IsCountablyGenerated
hτ : IsStoppingTime f τ
h✝ : IsEmpty ι
⊢ hτ.measurableSpace ≤ m

case inr
Ω : Type u_1
β : Type u_2
ι✝ : Type u_3
m : MeasurableSpace Ω
inst✝² : Preorder ι✝
f✝ : Filtration ι✝ m
τ✝ π : Ω → ι✝
ι : Type u_4
inst✝¹ : SemilatticeSup ι
f : Filtration ι m
τ : Ω → ι
inst✝ : atTop.IsCountablyGenerated
hτ : IsStoppingTime f τ
h✝ : Nonempty ι
⊢ hτ.measurableSpace ≤ m
tactic: cases isEmpty_or_nonempty ι
state_before: case inr
Ω : Type u_1
β : Type u_2
ι✝ : Type u_3
m : MeasurableSpace Ω
inst✝² : Preorder ι✝
f✝ : Filtration ι✝ m
τ✝ π : Ω → ι✝
ι : Type u_4
inst✝¹ : SemilatticeSup ι
f : Filtration ι m
τ : Ω → ι
inst✝ : atTop.IsCountablyGenerated
hτ : IsStoppingTime f τ
h✝ : Nonempty ι
⊢ hτ.measurableSpace ≤ m
state_after: no goals
tactic: exact measurableSpace_le' hτ