ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
Theorem: Orientation.oangle_sub_left_eq_arctan_of_oangle_eq_pi_div_two
File: Mathlib/Geometry/Euclidean/Angle/Oriented/RightAngle.lean

Proof steps:
state_before: V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
hd2 : Fact (finrank ℝ V = 2)
o : Orientation ℝ V (Fin 2)
x y : V
h : o.oangle x y = ↑(π / 2)
⊢ o.oangle (x - y) x = ↑(Real.arctan (‖y‖ / ‖x‖))
state_after: V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
hd2 : Fact (finrank ℝ V = 2)
o : Orientation ℝ V (Fin 2)
x y : V
h : (-o).oangle y x = ↑(π / 2)
⊢ (-o).oangle x (x - y) = ↑(Real.arctan (‖y‖ / ‖x‖))
tactic: rw [← neg_inj, oangle_rev, ← oangle_neg_orientation_eq_neg, neg_inj] at h ⊢
state_before: V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
hd2 : Fact (finrank ℝ V = 2)
o : Orientation ℝ V (Fin 2)
x y : V
h : (-o).oangle y x = ↑(π / 2)
⊢ (-o).oangle x (x - y) = ↑(Real.arctan (‖y‖ / ‖x‖))
state_after: no goals
tactic: exact (-o).oangle_sub_right_eq_arctan_of_oangle_eq_pi_div_two h
Theorem: Nat.add_eq_left
File: Mathlib/Data/Nat/Defs.lean

Proof steps:
state_before: a b c d m n k : ℕ
p q : ℕ → Prop
⊢ a + b = a ↔ b = 0
state_after: no goals
tactic: omega
Theorem: DFinsupp.erase_single_ne
File: Mathlib/Data/DFinsupp/Basic.lean

Proof steps:
state_before: ι : Type u
γ : Type w
β : ι → Type v
β₁ : ι → Type v₁
β₂ : ι → Type v₂
inst✝¹ : DecidableEq ι
inst✝ : (i : ι) → Zero (β i)
s : Finset ι
x✝ : (i : ↑↑s) → β ↑i
i✝ i j : ι
x : β i
h : i ≠ j
⊢ erase j (single i x) = single i x
state_after: no goals
tactic: rw [erase_single, if_neg h]
Theorem: Matrix.det_fromBlocks_zero₁₂
File: Mathlib/LinearAlgebra/Matrix/Determinant/Basic.lean

Proof steps:
state_before: m : Type u_1
n : Type u_2
inst✝⁴ : DecidableEq n
inst✝³ : Fintype n
inst✝² : DecidableEq m
inst✝¹ : Fintype m
R : Type v
inst✝ : CommRing R
A : Matrix m m R
C : Matrix n m R
D : Matrix n n R
⊢ (fromBlocks A 0 C D).det = A.det * D.det
state_after: no goals
tactic: rw [← det_transpose, fromBlocks_transpose, transpose_zero, det_fromBlocks_zero₂₁, det_transpose,
    det_transpose]
Theorem: ENNReal.lintegral_rpow_add_lt_top_of_lintegral_rpow_lt_top
File: Mathlib/MeasureTheory/Integral/MeanInequalities.lean

Proof steps:
state_before: α : Type u_1
inst✝ : MeasurableSpace α
μ : Measure α
p : ℝ
f g : α → ℝ≥0∞
hf : AEMeasurable f μ
hf_top : ∫⁻ (a : α), f a ^ p ∂μ < ⊤
hg_top : ∫⁻ (a : α), g a ^ p ∂μ < ⊤
hp1 : 1 ≤ p
⊢ ∫⁻ (a : α), (f + g) a ^ p ∂μ < ⊤
state_after: α : Type u_1
inst✝ : MeasurableSpace α
μ : Measure α
p : ℝ
f g : α → ℝ≥0∞
hf : AEMeasurable f μ
hf_top : ∫⁻ (a : α), f a ^ p ∂μ < ⊤
hg_top : ∫⁻ (a : α), g a ^ p ∂μ < ⊤
hp1 : 1 ≤ p
hp0_lt : 0 < p
⊢ ∫⁻ (a : α), (f + g) a ^ p ∂μ < ⊤
tactic: have hp0_lt : 0 < p := lt_of_lt_of_le zero_lt_one hp1
state_before: α : Type u_1
inst✝ : MeasurableSpace α
μ : Measure α
p : ℝ
f g : α → ℝ≥0∞
hf : AEMeasurable f μ
hf_top : ∫⁻ (a : α), f a ^ p ∂μ < ⊤
hg_top : ∫⁻ (a : α), g a ^ p ∂μ < ⊤
hp1 : 1 ≤ p
hp0_lt : 0 < p
⊢ ∫⁻ (a : α), (f + g) a ^ p ∂μ < ⊤
state_after: α : Type u_1
inst✝ : MeasurableSpace α
μ : Measure α
p : ℝ
f g : α → ℝ≥0∞
hf : AEMeasurable f μ
hf_top : ∫⁻ (a : α), f a ^ p ∂μ < ⊤
hg_top : ∫⁻ (a : α), g a ^ p ∂μ < ⊤
hp1 : 1 ≤ p
hp0_lt : 0 < p
hp0 : 0 ≤ p
⊢ ∫⁻ (a : α), (f + g) a ^ p ∂μ < ⊤
tactic: have hp0 : 0 ≤ p := le_of_lt hp0_lt
Theorem: Cardinal.mk_finsupp_nat
File: Mathlib/SetTheory/Cardinal/Ordinal.lean

Proof steps:
state_before: α : Type u
inst✝ : Nonempty α
⊢ #(α →₀ ℕ) = max #α ℵ₀
state_after: no goals
tactic: simp
Theorem: CategoryTheory.ShortComplex.HomologyData.op_iso
File: Mathlib/Algebra/Homology/ShortComplex/Homology.lean

Proof steps:
state_before: C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : HasZeroMorphisms C
S S₁ S₂ S₃ S₄ : ShortComplex C
φ : S₁ ⟶ S₂
h₁ : S₁.HomologyData
h₂ : S₂.HomologyData
h : S.HomologyData
⊢ (h.right.op.π ≫ h.iso.op.hom ≫ h.left.op.ι).unop = (h.right.op.i ≫ h.left.op.p).unop
state_after: no goals
tactic: simp
Theorem: LieEquiv.ofBijective_toFun
File: Mathlib/Algebra/Lie/Basic.lean

Proof steps:
state_before: R : Type u
L₁ : Type v
L₂ : Type w
L₃ : Type w₁
inst✝⁶ : CommRing R
inst✝⁵ : LieRing L₁
inst✝⁴ : LieRing L₂
inst✝³ : LieRing L₃
inst✝² : LieAlgebra R L₁
inst✝¹ : LieAlgebra R L₂
inst✝ : LieAlgebra R L₃
f : L₁ →ₗ⁅R⁆ L₂
h : Bijective ⇑f
⊢ ∀ {x y : L₁},
    { toFun := ⇑f, map_add' := ⋯, map_smul' := ⋯ }.toFun ⁅x, y⁆ =
      ⁅{ toFun := ⇑f, map_add' := ⋯, map_smul' := ⋯ }.toFun x, { toFun := ⇑f, map_add' := ⋯, map_smul' := ⋯ }.toFun y⁆
state_after: R : Type u
L₁ : Type v
L₂ : Type w
L₃ : Type w₁
inst✝⁶ : CommRing R
inst✝⁵ : LieRing L₁
inst✝⁴ : LieRing L₂
inst✝³ : LieRing L₃
inst✝² : LieAlgebra R L₁
inst✝¹ : LieAlgebra R L₂
inst✝ : LieAlgebra R L₃
f : L₁ →ₗ⁅R⁆ L₂
h : Bijective ⇑f
x y : L₁
⊢ { toFun := ⇑f, map_add' := ⋯, map_smul' := ⋯ }.toFun ⁅x, y⁆ =
    ⁅{ toFun := ⇑f, map_add' := ⋯, map_smul' := ⋯ }.toFun x, { toFun := ⇑f, map_add' := ⋯, map_smul' := ⋯ }.toFun y⁆
tactic: intros x y
state_before: R : Type u
L₁ : Type v
L₂ : Type w
L₃ : Type w₁
inst✝⁶ : CommRing R
inst✝⁵ : LieRing L₁
inst✝⁴ : LieRing L₂
inst✝³ : LieRing L₃
inst✝² : LieAlgebra R L₁
inst✝¹ : LieAlgebra R L₂
inst✝ : LieAlgebra R L₃
f : L₁ →ₗ⁅R⁆ L₂
h : Bijective ⇑f
x y : L₁
⊢ { toFun := ⇑f, map_add' := ⋯, map_smul' := ⋯ }.toFun ⁅x, y⁆ =
    ⁅{ toFun := ⇑f, map_add' := ⋯, map_smul' := ⋯ }.toFun x, { toFun := ⇑f, map_add' := ⋯, map_smul' := ⋯ }.toFun y⁆
state_after: no goals
tactic: exact f.map_lie x y
Theorem: MvPolynomial.eq_zero_iff
File: Mathlib/Algebra/MvPolynomial/Basic.lean

Proof steps:
state_before: R : Type u
S₁ : Type v
S₂ : Type w
S₃ : Type x
σ : Type u_1
a a' a₁ a₂ : R
e : ℕ
n m : σ
s : σ →₀ ℕ
inst✝¹ : CommSemiring R
inst✝ : CommSemiring S₁
p✝ q p : MvPolynomial σ R
⊢ p = 0 ↔ ∀ (d : σ →₀ ℕ), coeff d p = 0
state_after: R : Type u
S₁ : Type v
S₂ : Type w
S₃ : Type x
σ : Type u_1
a a' a₁ a₂ : R
e : ℕ
n m : σ
s : σ →₀ ℕ
inst✝¹ : CommSemiring R
inst✝ : CommSemiring S₁
p✝ q p : MvPolynomial σ R
⊢ (∀ (m : σ →₀ ℕ), coeff m p = coeff m 0) ↔ ∀ (d : σ →₀ ℕ), coeff d p = 0
tactic: rw [MvPolynomial.ext_iff]
state_before: R : Type u
S₁ : Type v
S₂ : Type w
S₃ : Type x
σ : Type u_1
a a' a₁ a₂ : R
e : ℕ
n m : σ
s : σ →₀ ℕ
inst✝¹ : CommSemiring R
inst✝ : CommSemiring S₁
p✝ q p : MvPolynomial σ R
⊢ (∀ (m : σ →₀ ℕ), coeff m p = coeff m 0) ↔ ∀ (d : σ →₀ ℕ), coeff d p = 0
state_after: no goals
tactic: simp only [coeff_zero]
Theorem: WeierstrassCurve.ΨSq_ofNat
File: Mathlib/AlgebraicGeometry/EllipticCurve/DivisionPolynomial/Basic.lean

Proof steps:
state_before: R : Type r
S : Type s
inst✝¹ : CommRing R
inst✝ : CommRing S
W : WeierstrassCurve R
n : ℕ
⊢ W.ΨSq ↑n = W.preΨ' n ^ 2 * if Even n then W.Ψ₂Sq else 1
state_after: no goals
tactic: simp only [ΨSq, preΨ_ofNat, Int.even_coe_nat]
Theorem: AddConstMapClass.map_nat_add'
File: Mathlib/Algebra/AddConstMap/Basic.lean

Proof steps:
state_before: F : Type u_1
G : Type u_2
H : Type u_3
inst✝³ : FunLike F G H
a : G
b : H
inst✝² : AddCommMonoidWithOne G
inst✝¹ : AddMonoid H
inst✝ : AddConstMapClass F G H 1 b
f : F
n : ℕ
x : G
⊢ f (↑n + x) = f x + n • b
state_after: no goals
tactic: simpa using map_nsmul_add f n x
Theorem: Polynomial.eval₂_mul'
File: Mathlib/Algebra/Polynomial/Eval.lean

Proof steps:
state_before: R : Type u
S : Type v
T : Type w
ι : Type y
a b : R
m n : ℕ
inst✝² : CommSemiring R
inst✝¹ : Semiring S
inst✝ : Algebra R S
x : S
p q : R[X]
⊢ eval₂ (algebraMap R S) x (p * q) = eval₂ (algebraMap R S) x p * eval₂ (algebraMap R S) x q
state_after: no goals
tactic: exact eval₂_mul_noncomm _ _ fun k => Algebra.commute_algebraMap_left (coeff q k) x
Theorem: Sum.update_elim_inl
File: Mathlib/Data/Sum/Basic.lean

Proof steps:
state_before: α : Type u
α' : Type w
β : Type v
β' : Type x
γ : Type u_1
δ : Type u_2
inst✝¹ : DecidableEq α
inst✝ : DecidableEq (α ⊕ β)
f : α → γ
g : β → γ
i : α
x : γ
⊢ x = Sum.elim (update f i x) g (inl i)
state_after: no goals
tactic: simp
state_before: α : Type u
α' : Type w
β : Type v
β' : Type x
γ : Type u_1
δ : Type u_2
inst✝¹ : DecidableEq α
inst✝ : DecidableEq (α ⊕ β)
f : α → γ
g : β → γ
i : α
x : γ
⊢ ∀ (x_1 : α ⊕ β), x_1 ≠ inl i → Sum.elim f g x_1 = Sum.elim (update f i x) g x_1
state_after: no goals
tactic: simp (config := { contextual := true })
Theorem: Basis.mapCoeffs_apply
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
R' : Type u_10
inst✝¹ : Semiring R'
inst✝ : Module R' M
f : R ≃+* R'
h : ∀ (c : R) (x : M), f c • x = c • x
i : ι
⊢ (b.mapCoeffs f h).repr (b i) = Finsupp.single i 1
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
R' : Type u_10
inst✝¹ : Semiring R'
inst✝ : Module R' M
f : R ≃+* R'
h : ∀ (c : R) (x : M), f c • x = c • x
i : ι
this : Module R' R := Module.compHom R ↑f.symm
⊢ (b.mapCoeffs f h).repr (b i) = Finsupp.single i 1
tactic: letI : Module R' R := Module.compHom R (↑f.symm : R' →+* R)
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
R' : Type u_10
inst✝¹ : Semiring R'
inst✝ : Module R' M
f : R ≃+* R'
h : ∀ (c : R) (x : M), f c • x = c • x
i : ι
this✝ : Module R' R := Module.compHom R ↑f.symm
this : IsScalarTower R' R M
⊢ (b.mapCoeffs f h).repr (b i) = Finsupp.single i 1
state_after: no goals
tactic: simp
Theorem: TensorPower.algebraMap₀_eq_smul_one
File: Mathlib/LinearAlgebra/TensorPower.lean

Proof steps:
state_before: R : Type u_1
M : Type u_2
inst✝² : CommSemiring R
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
r : R
⊢ algebraMap₀ r = r • GradedMonoid.GOne.one
state_after: R : Type u_1
M : Type u_2
inst✝² : CommSemiring R
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
r : R
⊢ r • (tprod R) isEmptyElim = r • GradedMonoid.GOne.one
tactic: simp [algebraMap₀]
state_before: R : Type u_1
M : Type u_2
inst✝² : CommSemiring R
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
r : R
⊢ r • (tprod R) isEmptyElim = r • GradedMonoid.GOne.one
state_after: no goals
tactic: congr
Theorem: Nonneg.pow_nonneg
File: Mathlib/Algebra/Order/Ring/Unbundled/Nonneg.lean

Proof steps:
state_before: α : Type u_1
inst✝³ : MonoidWithZero α
inst✝² : Preorder α
inst✝¹ : ZeroLEOneClass α
inst✝ : PosMulMono α
a : α
H : 0 ≤ a
⊢ 0 ≤ a ^ 0
state_after: α : Type u_1
inst✝³ : MonoidWithZero α
inst✝² : Preorder α
inst✝¹ : ZeroLEOneClass α
inst✝ : PosMulMono α
a : α
H : 0 ≤ a
⊢ 0 ≤ 1
tactic: rw [pow_zero]
state_before: α : Type u_1
inst✝³ : MonoidWithZero α
inst✝² : Preorder α
inst✝¹ : ZeroLEOneClass α
inst✝ : PosMulMono α
a : α
H : 0 ≤ a
⊢ 0 ≤ 1
state_after: no goals
tactic: exact zero_le_one
state_before: α : Type u_1
inst✝³ : MonoidWithZero α
inst✝² : Preorder α
inst✝¹ : ZeroLEOneClass α
inst✝ : PosMulMono α
a : α
H : 0 ≤ a
n : ℕ
⊢ 0 ≤ a ^ (n + 1)
state_after: α : Type u_1
inst✝³ : MonoidWithZero α
inst✝² : Preorder α
inst✝¹ : ZeroLEOneClass α
inst✝ : PosMulMono α
a : α
H : 0 ≤ a
n : ℕ
⊢ 0 ≤ a ^ n * a
tactic: rw [pow_succ]
state_before: α : Type u_1
inst✝³ : MonoidWithZero α
inst✝² : Preorder α
inst✝¹ : ZeroLEOneClass α
inst✝ : PosMulMono α
a : α
H : 0 ≤ a
n : ℕ
⊢ 0 ≤ a ^ n * a
state_after: no goals
tactic: exact mul_nonneg (pow_nonneg H _) H
Theorem: HasCompactSupport.integral_Iic_deriv_eq
File: Mathlib/MeasureTheory/Integral/IntegralEqImproper.lean

Proof steps:
state_before: E : Type u_1
f f' : ℝ → E
g g' : ℝ → ℝ
a b✝ l : ℝ
m : E
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
hf : ContDiff ℝ 1 f
h2f : HasCompactSupport f
b : ℝ
⊢ ∫ (x : ℝ) in Iic b, deriv f x = f b
state_after: E : Type u_1
f f' : ℝ → E
g g' : ℝ → ℝ
a b✝ l : ℝ
m : E
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
hf : ContDiff ℝ 1 f
h2f : HasCompactSupport f
b : ℝ
this : ∀ x ∈ Iio b, HasDerivAt f (deriv f x) x
⊢ ∫ (x : ℝ) in Iic b, deriv f x = f b
tactic: have := fun x (_ : x ∈ Iio b) ↦ hf.differentiable le_rfl x |>.hasDerivAt
state_before: E : Type u_1
f f' : ℝ → E
g g' : ℝ → ℝ
a b✝ l : ℝ
m : E
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
hf : ContDiff ℝ 1 f
h2f : HasCompactSupport f
b : ℝ
this : ∀ x ∈ Iio b, HasDerivAt f (deriv f x) x
⊢ ∫ (x : ℝ) in Iic b, deriv f x = f b
state_after: case f'int
E : Type u_1
f f' : ℝ → E
g g' : ℝ → ℝ
a b✝ l : ℝ
m : E
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
hf : ContDiff ℝ 1 f
h2f : HasCompactSupport f
b : ℝ
this : ∀ x ∈ Iio b, HasDerivAt f (deriv f x) x
⊢ IntegrableOn (deriv f) (Iic b) volume

case hf
E : Type u_1
f f' : ℝ → E
g g' : ℝ → ℝ
a b✝ l : ℝ
m : E
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
hf : ContDiff ℝ 1 f
h2f : HasCompactSupport f
b : ℝ
this : ∀ x ∈ Iio b, HasDerivAt f (deriv f x) x
⊢ Tendsto f atBot (𝓝 0)
tactic: rw [integral_Iic_of_hasDerivAt_of_tendsto hf.continuous.continuousWithinAt this, sub_zero]
state_before: case hf
E : Type u_1
f f' : ℝ → E
g g' : ℝ → ℝ
a b✝ l : ℝ
m : E
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
hf : ContDiff ℝ 1 f
h2f : HasCompactSupport f
b : ℝ
this : ∀ x ∈ Iio b, HasDerivAt f (deriv f x) x
⊢ Tendsto f atBot (𝓝 0)
state_after: case hf
E : Type u_1
f f' : ℝ → E
g g' : ℝ → ℝ
a b✝ l : ℝ
m : E
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
hf : ContDiff ℝ 1 f
h2f : f =ᶠ[cocompact ℝ] 0
b : ℝ
this : ∀ x ∈ Iio b, HasDerivAt f (deriv f x) x
⊢ Tendsto f atBot (𝓝 0)
tactic: rw [hasCompactSupport_iff_eventuallyEq, Filter.coclosedCompact_eq_cocompact] at h2f
state_before: case hf
E : Type u_1
f f' : ℝ → E
g g' : ℝ → ℝ
a b✝ l : ℝ
m : E
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
hf : ContDiff ℝ 1 f
h2f : f =ᶠ[cocompact ℝ] 0
b : ℝ
this : ∀ x ∈ Iio b, HasDerivAt f (deriv f x) x
⊢ Tendsto f atBot (𝓝 0)
state_after: no goals
tactic: exact h2f.filter_mono _root_.atBot_le_cocompact |>.tendsto
Theorem: ZNum.of_to_int
File: Mathlib/Data/Num/Lemmas.lean

Proof steps:
state_before: α : Type u_1
n : ZNum
⊢ ↑↑n = n
state_after: no goals
tactic: rw [← ofInt'_eq, of_to_int']
Theorem: Set.Ioc_union_Ioc_left
File: Mathlib/Order/Interval/Set/Basic.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
inst✝¹ : LinearOrder α
inst✝ : LinearOrder β
f : α → β
a a₁ a₂ b b₁ b₂ c d : α
⊢ Ioc a c ∪ Ioc b c = Ioc (min a b) c
state_after: no goals
tactic: rw [Ioc_union_Ioc, max_self] <;> exact (min_le_right _ _).trans (le_max_right _ _)
Theorem: Subgroup.conj_smul_subgroupOf
File: Mathlib/Algebra/Group/Subgroup/Pointwise.lean

Proof steps:
state_before: α : Type u_1
G : Type u_2
A : Type u_3
S : Type u_4
inst✝³ : Group G
inst✝² : AddGroup A
s : Set G
inst✝¹ : Monoid α
inst✝ : MulDistribMulAction α G
P H : Subgroup G
hP : P ≤ H
h : ↥H
⊢ MulAut.conj h • P.subgroupOf H = (MulAut.conj ↑h • P).subgroupOf H
state_after: case refine_1
α : Type u_1
G : Type u_2
A : Type u_3
S : Type u_4
inst✝³ : Group G
inst✝² : AddGroup A
s : Set G
inst✝¹ : Monoid α
inst✝ : MulDistribMulAction α G
P H : Subgroup G
hP : P ≤ H
h : ↥H
⊢ MulAut.conj h • P.subgroupOf H ≤ (MulAut.conj ↑h • P).subgroupOf H

case refine_2
α : Type u_1
G : Type u_2
A : Type u_3
S : Type u_4
inst✝³ : Group G
inst✝² : AddGroup A
s : Set G
inst✝¹ : Monoid α
inst✝ : MulDistribMulAction α G
P H : Subgroup G
hP : P ≤ H
h : ↥H
⊢ (MulAut.conj ↑h • P).subgroupOf H ≤ MulAut.conj h • P.subgroupOf H
tactic: refine le_antisymm ?_ ?_
Theorem: Rat.neg_divInt_neg
File: .lake/packages/batteries/Batteries/Data/Rat/Lemmas.lean

Proof steps:
state_before: num den : Int
⊢ -num /. -den = num /. den
state_after: no goals
tactic: match den with
  | Nat.succ n =>
    simp only [divInt, Int.neg_ofNat_succ]
    simp [normalize_eq_mkRat, Int.neg_neg]
  | 0 => rfl
  | Int.negSucc n =>
    simp only [divInt, Int.neg_negSucc]
    simp [normalize_eq_mkRat, Int.neg_neg]
Theorem: Subalgebra.equivOfEq_rfl
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✝ S : Subalgebra R A
⊢ S.equivOfEq S ⋯ = AlgEquiv.refl
state_after: case h.a
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✝ S : Subalgebra R A
a✝ : ↥S
⊢ ↑((S.equivOfEq S ⋯) a✝) = ↑(AlgEquiv.refl a✝)
tactic: ext
state_before: case h.a
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✝ S : Subalgebra R A
a✝ : ↥S
⊢ ↑((S.equivOfEq S ⋯) a✝) = ↑(AlgEquiv.refl a✝)
state_after: no goals
tactic: rfl
Theorem: CategoryTheory.Abelian.Ext.mk₀_hom
File: Mathlib/Algebra/Homology/DerivedCategory/Ext.lean

Proof steps:
state_before: C : Type u
inst✝³ : Category.{v, u} C
inst✝² : Abelian C
inst✝¹ : HasExt C
X Y Z T : C
inst✝ : HasDerivedCategory C
f : X ⟶ Y
⊢ ↑0 = 0
state_after: no goals
tactic: simp
state_before: C : Type u
inst✝³ : Category.{v, u} C
inst✝² : Abelian C
inst✝¹ : HasExt C
X Y Z T : C
inst✝ : HasDerivedCategory C
f : X ⟶ Y
⊢ (mk₀ f).hom = ShiftedHom.mk₀ ↑0 ⋯ ((DerivedCategory.singleFunctor C 0).map f)
state_after: no goals
tactic: apply SmallShiftedHom.equiv_mk₀
Theorem: PicardLindelof.FunSpace.vComp_apply_coe
File: Mathlib/Analysis/ODE/PicardLindelof.lean

Proof steps:
state_before: E : Type u_1
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℝ E
v : PicardLindelof E
f : v.FunSpace
t : ↑(Icc v.tMin v.tMax)
⊢ f.vComp ↑t = v.toFun (↑t) (f.toFun t)
state_after: no goals
tactic: simp only [vComp, proj_coe]
Theorem: Set.Icc.one_sub_mem
File: Mathlib/Algebra/Order/Interval/Set/Instances.lean

Proof steps:
state_before: α : Type u_1
inst✝¹ : OrderedSemiring α
β : Type u_2
inst✝ : OrderedRing β
t : β
ht : t ∈ Icc 0 1
⊢ 1 - t ∈ Icc 0 1
state_after: α : Type u_1
inst✝¹ : OrderedSemiring α
β : Type u_2
inst✝ : OrderedRing β
t : β
ht : 0 ≤ t ∧ t ≤ 1
⊢ 0 ≤ 1 - t ∧ 1 - t ≤ 1
tactic: rw [mem_Icc] at *
state_before: α : Type u_1
inst✝¹ : OrderedSemiring α
β : Type u_2
inst✝ : OrderedRing β
t : β
ht : 0 ≤ t ∧ t ≤ 1
⊢ 0 ≤ 1 - t ∧ 1 - t ≤ 1
state_after: no goals
tactic: exact ⟨sub_nonneg.2 ht.2, (sub_le_self_iff _).2 ht.1⟩
Theorem: Monoid.exponent_ne_zero
File: Mathlib/GroupTheory/Exponent.lean

Proof steps:
state_before: G : Type u
inst✝ : Monoid G
⊢ exponent G ≠ 0 ↔ ExponentExists G
state_after: G : Type u
inst✝ : Monoid G
⊢ (if h : ExponentExists G then Nat.find h else 0) ≠ 0 ↔ ExponentExists G
tactic: rw [exponent]
state_before: G : Type u
inst✝ : Monoid G
⊢ (if h : ExponentExists G then Nat.find h else 0) ≠ 0 ↔ ExponentExists G
state_after: case pos
G : Type u
inst✝ : Monoid G
h : ExponentExists G
⊢ Nat.find h ≠ 0 ↔ ExponentExists G

case neg
G : Type u
inst✝ : Monoid G
h : ¬ExponentExists G
⊢ 0 ≠ 0 ↔ ExponentExists G
tactic: split_ifs with h
Theorem: LeftOrdContinuous.map_sSup
File: Mathlib/Order/OrdContinuous.lean

Proof steps:
state_before: α : Type u
β : Type v
γ : Type w
ι : Sort x
inst✝¹ : CompleteLattice α
inst✝ : CompleteLattice β
f : α → β
hf : LeftOrdContinuous f
s : Set α
⊢ f (sSup s) = ⨆ x ∈ s, f x
state_after: no goals
tactic: rw [hf.map_sSup', sSup_image]
Theorem: Surreal.nsmul_pow_two_powHalf
File: Mathlib/SetTheory/Surreal/Dyadic.lean

Proof steps:
state_before: n : ℕ
⊢ 2 ^ n * powHalf n = 1
state_after: case zero

⊢ 2 ^ 0 * powHalf 0 = 1

case succ
n : ℕ
hn : 2 ^ n * powHalf n = 1
⊢ 2 ^ (n + 1) * powHalf (n + 1) = 1
tactic: induction' n with n hn
Theorem: Int.abs_lt_one_iff
File: Mathlib/Algebra/Order/Group/Int.lean

Proof steps:
state_before: a : ℤ
⊢ |a| < 1 ↔ a = 0
state_after: no goals
tactic: rw [← zero_add 1, lt_add_one_iff, abs_nonpos_iff]
Theorem: CategoryTheory.Presheaf.subsingleton_iff_isSeparatedFor
File: Mathlib/CategoryTheory/Sites/Sheaf.lean

Proof steps:
state_before: C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
A : Type u₂
inst✝ : Category.{v₂, u₂} A
J : GrothendieckTopology C
P : Cᵒᵖ ⥤ A
X : C
S : Sieve X
R : Presieve X
E : Aᵒᵖ
x : FamilyOfElements (P ⋙ coyoneda.obj E) S.arrows
hx : x.SieveCompatible
⊢ (∀ (c : Cone (S.arrows.diagram.op ⋙ P)), Subsingleton (c ⟶ P.mapCone S.arrows.cocone.op)) ↔
    ∀ (E : Aᵒᵖ), IsSeparatedFor (P ⋙ coyoneda.obj E) S.arrows
state_after: case mp
C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
A : Type u₂
inst✝ : Category.{v₂, u₂} A
J : GrothendieckTopology C
P : Cᵒᵖ ⥤ A
X : C
S : Sieve X
R : Presieve X
E : Aᵒᵖ
x : FamilyOfElements (P ⋙ coyoneda.obj E) S.arrows
hx : x.SieveCompatible
⊢ (∀ (c : Cone (S.arrows.diagram.op ⋙ P)), Subsingleton (c ⟶ P.mapCone S.arrows.cocone.op)) →
    ∀ (E : Aᵒᵖ), IsSeparatedFor (P ⋙ coyoneda.obj E) S.arrows

case mpr
C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
A : Type u₂
inst✝ : Category.{v₂, u₂} A
J : GrothendieckTopology C
P : Cᵒᵖ ⥤ A
X : C
S : Sieve X
R : Presieve X
E : Aᵒᵖ
x : FamilyOfElements (P ⋙ coyoneda.obj E) S.arrows
hx : x.SieveCompatible
⊢ (∀ (E : Aᵒᵖ), IsSeparatedFor (P ⋙ coyoneda.obj E) S.arrows) →
    ∀ (c : Cone (S.arrows.diagram.op ⋙ P)), Subsingleton (c ⟶ P.mapCone S.arrows.cocone.op)
tactic: constructor
Theorem: Finset.biUnion_subset_biUnion_of_subset_left
File: Mathlib/Data/Finset/Union.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
s s₁ s₂ : Finset α
t✝ t₁ t₂ : α → Finset β
inst✝ : DecidableEq β
t : α → Finset β
h : s₁ ⊆ s₂
x : β
⊢ x ∈ s₁.biUnion t → x ∈ s₂.biUnion t
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
s s₁ s₂ : Finset α
t✝ t₁ t₂ : α → Finset β
inst✝ : DecidableEq β
t : α → Finset β
h : s₁ ⊆ s₂
x : β
⊢ (∃ a ∈ s₁, x ∈ t a) → ∃ a ∈ s₂, x ∈ t a
tactic: simp only [and_imp, mem_biUnion, exists_prop]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
s s₁ s₂ : Finset α
t✝ t₁ t₂ : α → Finset β
inst✝ : DecidableEq β
t : α → Finset β
h : s₁ ⊆ s₂
x : β
⊢ (∃ a ∈ s₁, x ∈ t a) → ∃ a ∈ s₂, x ∈ t a
state_after: no goals
tactic: exact Exists.imp fun a ha ↦ ⟨h ha.1, ha.2⟩
Theorem: padicValNat.maxPowDiv_eq_multiplicity
File: Mathlib/NumberTheory/Padics/PadicVal.lean

Proof steps:
state_before: p✝ p n : ℕ
hp : 1 < p
hn : 0 < n
⊢ ↑(p.maxPowDiv n) = multiplicity p n
state_after: p✝ p n : ℕ
hp : 1 < p
hn : 0 < n
⊢ ¬p ^ (p.maxPowDiv n + 1) ∣ n
tactic: apply multiplicity.unique <| pow_dvd p n
state_before: p✝ p n : ℕ
hp : 1 < p
hn : 0 < n
⊢ ¬p ^ (p.maxPowDiv n + 1) ∣ n
state_after: p✝ p n : ℕ
hp : 1 < p
hn : 0 < n
h : p ^ (p.maxPowDiv n + 1) ∣ n
⊢ False
tactic: intro h
state_before: p✝ p n : ℕ
hp : 1 < p
hn : 0 < n
h : p ^ (p.maxPowDiv n + 1) ∣ n
⊢ False
state_after: p✝ p n : ℕ
hp : 1 < p
hn : 0 < n
h : p ^ (p.maxPowDiv n + 1) ∣ n
⊢ p.maxPowDiv n < p.maxPowDiv n + 1
tactic: apply Nat.not_lt.mpr <| le_of_dvd hp hn h
state_before: p✝ p n : ℕ
hp : 1 < p
hn : 0 < n
h : p ^ (p.maxPowDiv n + 1) ∣ n
⊢ p.maxPowDiv n < p.maxPowDiv n + 1
state_after: no goals
tactic: simp
Theorem: AddChar.val_mem_rootsOfUnity
File: Mathlib/NumberTheory/LegendreSymbol/AddCharacter.lean

Proof steps:
state_before: R : Type u
inst✝¹ : CommRing R
R' : Type v
inst✝ : CommMonoid R'
φ : AddChar R R'
a : R
h : 0 < ringChar R
⊢ ⋯.unit ∈ rootsOfUnity (ringChar R).toPNat' R'
state_after: no goals
tactic: simp only [mem_rootsOfUnity', IsUnit.unit_spec, Nat.toPNat'_coe, h, ↓reduceIte,
    ← map_nsmul_eq_pow, nsmul_eq_mul, CharP.cast_eq_zero, zero_mul, map_zero_eq_one]
Theorem: MeasureTheory.setLIntegral_univ
File: Mathlib/MeasureTheory/Integral/Lebesgue.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
⊢ ∫⁻ (x : α) in univ, f x ∂μ = ∫⁻ (x : α), f x ∂μ
state_after: no goals
tactic: rw [Measure.restrict_univ]