ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
Theorem: Finsupp.lcongr_symm_single
File: Mathlib/LinearAlgebra/Finsupp.lean

Proof steps:
state_before: α : Type u_1
M : Type u_2
N : Type u_3
P : Type u_4
R : Type u_5
S : Type u_6
inst✝⁷ : Semiring R
inst✝⁶ : Semiring S
inst✝⁵ : AddCommMonoid M
inst✝⁴ : Module R M
inst✝³ : AddCommMonoid N
inst✝² : Module R N
inst✝¹ : AddCommMonoid P
inst✝ : Module R P
ι : Type u_7
κ : Type u_8
e₁ : ι ≃ κ
e₂ : M ≃ₗ[R] N
k : κ
n : N
⊢ (lcongr e₁ e₂).symm (single k n) = single (e₁.symm k) (e₂.symm n)
state_after: α : Type u_1
M : Type u_2
N : Type u_3
P : Type u_4
R : Type u_5
S : Type u_6
inst✝⁷ : Semiring R
inst✝⁶ : Semiring S
inst✝⁵ : AddCommMonoid M
inst✝⁴ : Module R M
inst✝³ : AddCommMonoid N
inst✝² : Module R N
inst✝¹ : AddCommMonoid P
inst✝ : Module R P
ι : Type u_7
κ : Type u_8
e₁ : ι ≃ κ
e₂ : M ≃ₗ[R] N
k : κ
n : N
⊢ (lcongr e₁ e₂) ((lcongr e₁ e₂).symm (single k n)) = (lcongr e₁ e₂) (single (e₁.symm k) (e₂.symm n))
tactic: apply_fun (lcongr e₁ e₂ : (ι →₀ M) → (κ →₀ N)) using (lcongr e₁ e₂).injective
state_before: α : Type u_1
M : Type u_2
N : Type u_3
P : Type u_4
R : Type u_5
S : Type u_6
inst✝⁷ : Semiring R
inst✝⁶ : Semiring S
inst✝⁵ : AddCommMonoid M
inst✝⁴ : Module R M
inst✝³ : AddCommMonoid N
inst✝² : Module R N
inst✝¹ : AddCommMonoid P
inst✝ : Module R P
ι : Type u_7
κ : Type u_8
e₁ : ι ≃ κ
e₂ : M ≃ₗ[R] N
k : κ
n : N
⊢ (lcongr e₁ e₂) ((lcongr e₁ e₂).symm (single k n)) = (lcongr e₁ e₂) (single (e₁.symm k) (e₂.symm n))
state_after: no goals
tactic: simp
Theorem: AlgHom.coe_range
File: Mathlib/Algebra/Algebra/Subalgebra/Basic.lean

Proof steps:
state_before: R' : Type u'
R : Type u
A : Type v
B : Type w
C : Type w'
inst✝⁶ : CommSemiring R
inst✝⁵ : Semiring A
inst✝⁴ : Algebra R A
inst✝³ : Semiring B
inst✝² : Algebra R B
inst✝¹ : Semiring C
inst✝ : Algebra R C
φ✝ φ : A →ₐ[R] B
⊢ ↑φ.range = Set.range ⇑φ
state_after: case h
R' : Type u'
R : Type u
A : Type v
B : Type w
C : Type w'
inst✝⁶ : CommSemiring R
inst✝⁵ : Semiring A
inst✝⁴ : Algebra R A
inst✝³ : Semiring B
inst✝² : Algebra R B
inst✝¹ : Semiring C
inst✝ : Algebra R C
φ✝ φ : A →ₐ[R] B
x✝ : B
⊢ x✝ ∈ ↑φ.range ↔ x✝ ∈ Set.range ⇑φ
tactic: ext
state_before: case h
R' : Type u'
R : Type u
A : Type v
B : Type w
C : Type w'
inst✝⁶ : CommSemiring R
inst✝⁵ : Semiring A
inst✝⁴ : Algebra R A
inst✝³ : Semiring B
inst✝² : Algebra R B
inst✝¹ : Semiring C
inst✝ : Algebra R C
φ✝ φ : A →ₐ[R] B
x✝ : B
⊢ x✝ ∈ ↑φ.range ↔ x✝ ∈ Set.range ⇑φ
state_after: case h
R' : Type u'
R : Type u
A : Type v
B : Type w
C : Type w'
inst✝⁶ : CommSemiring R
inst✝⁵ : Semiring A
inst✝⁴ : Algebra R A
inst✝³ : Semiring B
inst✝² : Algebra R B
inst✝¹ : Semiring C
inst✝ : Algebra R C
φ✝ φ : A →ₐ[R] B
x✝ : B
⊢ (∃ x, φ x = x✝) ↔ x✝ ∈ Set.range ⇑φ
tactic: rw [SetLike.mem_coe, mem_range]
state_before: case h
R' : Type u'
R : Type u
A : Type v
B : Type w
C : Type w'
inst✝⁶ : CommSemiring R
inst✝⁵ : Semiring A
inst✝⁴ : Algebra R A
inst✝³ : Semiring B
inst✝² : Algebra R B
inst✝¹ : Semiring C
inst✝ : Algebra R C
φ✝ φ : A →ₐ[R] B
x✝ : B
⊢ (∃ x, φ x = x✝) ↔ x✝ ∈ Set.range ⇑φ
state_after: no goals
tactic: rfl
Theorem: Finset.isAtom_iff
File: Mathlib/Data/Finset/Grade.lean

Proof steps:
state_before: α : Type u_1
s t : Finset α
a : α
⊢ IsAtom s ↔ ∃ a, s = {a}
state_after: no goals
tactic: simp [← bot_covBy_iff, covBy_iff_exists_cons, eq_comm]
Theorem: Ideal.Filtration.submodule_span_single
File: Mathlib/RingTheory/Filtration.lean

Proof steps:
state_before: R M : Type u
inst✝² : CommRing R
inst✝¹ : AddCommGroup M
inst✝ : Module R M
I : Ideal R
F F' : I.Filtration M
h : F.Stable
⊢ Submodule.span (↥(reesAlgebra I)) (⋃ i, ⇑(single R i) '' ↑(F.N i)) = F.submodule
state_after: R M : Type u
inst✝² : CommRing R
inst✝¹ : AddCommGroup M
inst✝ : Module R M
I : Ideal R
F F' : I.Filtration M
h : F.Stable
⊢ Submodule.span ↥(reesAlgebra I) ↑F.submodule = F.submodule
tactic: rw [← Submodule.span_closure, submodule_closure_single, Submodule.coe_toAddSubmonoid]
state_before: R M : Type u
inst✝² : CommRing R
inst✝¹ : AddCommGroup M
inst✝ : Module R M
I : Ideal R
F F' : I.Filtration M
h : F.Stable
⊢ Submodule.span ↥(reesAlgebra I) ↑F.submodule = F.submodule
state_after: no goals
tactic: exact Submodule.span_eq (Filtration.submodule F)
Theorem: closedEmbedding_iff_closedEmbedding_of_iSup_eq_top
File: Mathlib/Topology/LocalAtTarget.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
f : α → β
s : Set β
ι : Type u_3
U : ι → Opens β
hU : iSup U = ⊤
h : Continuous f
⊢ ClosedEmbedding f ↔ ∀ (i : ι), ClosedEmbedding ((U i).carrier.restrictPreimage f)
state_after: α : Type u_1
β : Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
f : α → β
s : Set β
ι : Type u_3
U : ι → Opens β
hU : iSup U = ⊤
h : Continuous f
⊢ Embedding f ∧ IsClosed (range f) ↔
    ∀ (i : ι), Embedding ((U i).carrier.restrictPreimage f) ∧ IsClosed (range ((U i).carrier.restrictPreimage f))
tactic: simp_rw [closedEmbedding_iff]
state_before: α : Type u_1
β : Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
f : α → β
s : Set β
ι : Type u_3
U : ι → Opens β
hU : iSup U = ⊤
h : Continuous f
⊢ Embedding f ∧ IsClosed (range f) ↔
    ∀ (i : ι), Embedding ((U i).carrier.restrictPreimage f) ∧ IsClosed (range ((U i).carrier.restrictPreimage f))
state_after: α : Type u_1
β : Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
f : α → β
s : Set β
ι : Type u_3
U : ι → Opens β
hU : iSup U = ⊤
h : Continuous f
⊢ Embedding f ∧ IsClosed (range f) ↔
    (∀ (x : ι), Embedding ((U x).carrier.restrictPreimage f)) ∧
      ∀ (x : ι), IsClosed (range ((U x).carrier.restrictPreimage f))
tactic: rw [forall_and]
state_before: α : Type u_1
β : Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
f : α → β
s : Set β
ι : Type u_3
U : ι → Opens β
hU : iSup U = ⊤
h : Continuous f
⊢ Embedding f ∧ IsClosed (range f) ↔
    (∀ (x : ι), Embedding ((U x).carrier.restrictPreimage f)) ∧
      ∀ (x : ι), IsClosed (range ((U x).carrier.restrictPreimage f))
state_after: case h₁
α : Type u_1
β : Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
f : α → β
s : Set β
ι : Type u_3
U : ι → Opens β
hU : iSup U = ⊤
h : Continuous f
⊢ Embedding f ↔ ∀ (x : ι), Embedding ((U x).carrier.restrictPreimage f)

case h₂
α : Type u_1
β : Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
f : α → β
s : Set β
ι : Type u_3
U : ι → Opens β
hU : iSup U = ⊤
h : Continuous f
⊢ IsClosed (range f) ↔ ∀ (x : ι), IsClosed (range ((U x).carrier.restrictPreimage f))
tactic: apply and_congr
Theorem: Real.hasStrictDerivAt_log_of_pos
File: Mathlib/Analysis/SpecialFunctions/Log/Deriv.lean

Proof steps:
state_before: x : ℝ
hx : 0 < x
⊢ HasStrictDerivAt log x⁻¹ x
state_after: x : ℝ
hx : 0 < x
this : HasStrictDerivAt log (rexp (log x))⁻¹ x
⊢ HasStrictDerivAt log x⁻¹ x
tactic: have : HasStrictDerivAt log (exp <| log x)⁻¹ x :=
    (hasStrictDerivAt_exp <| log x).of_local_left_inverse (continuousAt_log hx.ne')
        (ne_of_gt <| exp_pos _) <|
      Eventually.mono (lt_mem_nhds hx) @exp_log
state_before: x : ℝ
hx : 0 < x
this : HasStrictDerivAt log (rexp (log x))⁻¹ x
⊢ HasStrictDerivAt log x⁻¹ x
state_after: no goals
tactic: rwa [exp_log hx] at this
Theorem: AlgebraicGeometry.Scheme.Pullback.cocycle_fst_snd
File: Mathlib/AlgebraicGeometry/Pullbacks.lean

Proof steps:
state_before: C : Type u
inst✝¹ : Category.{v, u} C
X Y Z : Scheme
𝒰 : X.OpenCover
f : X ⟶ Z
g : Y ⟶ Z
inst✝ : ∀ (i : 𝒰.J), HasPullback (𝒰.map i ≫ f) g
i j k : 𝒰.J
⊢ t' 𝒰 f g i j k ≫
      t' 𝒰 f g j k i ≫
        t' 𝒰 f g k i j ≫
          pullback.fst (fV 𝒰 f g i j) (fV 𝒰 f g i k) ≫ pullback.snd (pullback.fst (𝒰.map i ≫ f) g ≫ 𝒰.map i) (𝒰.map j) =
    pullback.fst (fV 𝒰 f g i j) (fV 𝒰 f g i k) ≫ pullback.snd (pullback.fst (𝒰.map i ≫ f) g ≫ 𝒰.map i) (𝒰.map j)
state_after: no goals
tactic: simp only [t'_fst_snd, t'_snd_snd, t'_fst_fst_fst]
Theorem: Real.abs_exp_sub_one_le
File: Mathlib/Data/Complex/Exponential.lean

Proof steps:
state_before: x : ℝ
hx : |x| ≤ 1
⊢ |rexp x - 1| ≤ 2 * |x|
state_after: x : ℝ
hx this : |x| ≤ 1
⊢ |rexp x - 1| ≤ 2 * |x|
tactic: have : |x| ≤ 1 := mod_cast hx
state_before: x : ℝ
hx this : |x| ≤ 1
⊢ |rexp x - 1| ≤ 2 * |x|
state_after: x : ℝ
hx this✝ : |x| ≤ 1
this : Complex.abs (cexp ↑x - 1) ≤ 2 * Complex.abs ↑x
⊢ |rexp x - 1| ≤ 2 * |x|
tactic: have := Complex.abs_exp_sub_one_le (x := x) (by simpa using this)
state_before: x : ℝ
hx this✝ : |x| ≤ 1
this : Complex.abs (cexp ↑x - 1) ≤ 2 * Complex.abs ↑x
⊢ |rexp x - 1| ≤ 2 * |x|
state_after: x : ℝ
hx this✝ : |x| ≤ 1
this : |rexp x - 1| ≤ 2 * |x|
⊢ |rexp x - 1| ≤ 2 * |x|
tactic: rw [← ofReal_exp, ← ofReal_one, ← ofReal_sub, abs_ofReal, abs_ofReal] at this
state_before: x : ℝ
hx this✝ : |x| ≤ 1
this : |rexp x - 1| ≤ 2 * |x|
⊢ |rexp x - 1| ≤ 2 * |x|
state_after: no goals
tactic: exact this
Theorem: Real.cast_natAbs_eq_nnabs_cast
File: Mathlib/Data/NNReal/Basic.lean

Proof steps:
state_before: n : ℤ
⊢ ↑n.natAbs = nnabs ↑n
state_after: case a
n : ℤ
⊢ ↑↑n.natAbs = ↑(nnabs ↑n)
tactic: ext
state_before: case a
n : ℤ
⊢ ↑↑n.natAbs = ↑(nnabs ↑n)
state_after: no goals
tactic: rw [NNReal.coe_natCast, Int.cast_natAbs, Real.coe_nnabs, Int.cast_abs]
Theorem: Matrix.self_mul_conjTranspose_mulVec_eq_zero
File: Mathlib/LinearAlgebra/Matrix/DotProduct.lean

Proof steps:
state_before: m : Type u_1
n : Type u_2
p : Type u_3
R : Type u_4
inst✝⁷ : Fintype m
inst✝⁶ : Fintype n
inst✝⁵ : Fintype p
inst✝⁴ : PartialOrder R
inst✝³ : NonUnitalRing R
inst✝² : StarRing R
inst✝¹ : StarOrderedRing R
inst✝ : NoZeroDivisors R
A : Matrix m n R
v : m → R
⊢ (A * Aᴴ) *ᵥ v = 0 ↔ Aᴴ *ᵥ v = 0
state_after: no goals
tactic: simpa only [conjTranspose_conjTranspose] using conjTranspose_mul_self_mulVec_eq_zero Aᴴ _
Theorem: Ordset.pos_size_of_mem
File: Mathlib/Data/Ordmap/Ordset.lean

Proof steps:
state_before: α : Type u_1
inst✝¹ : Preorder α
inst✝ : DecidableRel fun x x_1 => x ≤ x_1
x : α
t : Ordset α
h_mem : x ∈ t
⊢ 0 < t.size
state_after: α : Type u_1
inst✝¹ : Preorder α
inst✝ : DecidableRel fun x x_1 => x ≤ x_1
x : α
t : Ordset α
h_mem : Ordnode.mem x ↑t = true
⊢ 0 < t.size
tactic: simp? [Membership.mem, mem] at h_mem says
    simp only [Membership.mem, mem, Bool.decide_eq_true] at h_mem
state_before: α : Type u_1
inst✝¹ : Preorder α
inst✝ : DecidableRel fun x x_1 => x ≤ x_1
x : α
t : Ordset α
h_mem : Ordnode.mem x ↑t = true
⊢ 0 < t.size
state_after: no goals
tactic: apply Ordnode.pos_size_of_mem t.property.sz h_mem
Theorem: CategoryTheory.Presieve.le_of_factorsThru_sieve
File: Mathlib/CategoryTheory/Sites/Coverage.lean

Proof steps:
state_before: C : Type u_2
D : Type ?u.23461
inst✝¹ : Category.{u_1, u_2} C
inst✝ : Category.{?u.23469, ?u.23461} D
X : C
S : Presieve X
T : Sieve X
h : S.FactorsThru T.arrows
⊢ S ≤ T.arrows
state_after: C : Type u_2
D : Type ?u.23461
inst✝¹ : Category.{u_1, u_2} C
inst✝ : Category.{?u.23469, ?u.23461} D
X : C
S : Presieve X
T : Sieve X
h : S.FactorsThru T.arrows
Y : C
f : Y ⟶ X
hf : f ∈ S
⊢ f ∈ T.arrows
tactic: rintro Y f hf
state_before: C : Type u_2
D : Type ?u.23461
inst✝¹ : Category.{u_1, u_2} C
inst✝ : Category.{?u.23469, ?u.23461} D
X : C
S : Presieve X
T : Sieve X
h : S.FactorsThru T.arrows
Y : C
f : Y ⟶ X
hf : f ∈ S
⊢ f ∈ T.arrows
state_after: case intro.intro.intro.intro
C : Type u_2
D : Type ?u.23461
inst✝¹ : Category.{u_1, u_2} C
inst✝ : Category.{?u.23469, ?u.23461} D
X : C
S : Presieve X
T : Sieve X
h : S.FactorsThru T.arrows
Y W : C
i : Y ⟶ W
e : W ⟶ X
h1 : T.arrows e
hf : i ≫ e ∈ S
⊢ i ≫ e ∈ T.arrows
tactic: obtain ⟨W, i, e, h1, rfl⟩ := h hf
state_before: case intro.intro.intro.intro
C : Type u_2
D : Type ?u.23461
inst✝¹ : Category.{u_1, u_2} C
inst✝ : Category.{?u.23469, ?u.23461} D
X : C
S : Presieve X
T : Sieve X
h : S.FactorsThru T.arrows
Y W : C
i : Y ⟶ W
e : W ⟶ X
h1 : T.arrows e
hf : i ≫ e ∈ S
⊢ i ≫ e ∈ T.arrows
state_after: no goals
tactic: exact T.downward_closed h1 _
Theorem: Composition.boundary_zero
File: Mathlib/Combinatorics/Enumerative/Composition.lean

Proof steps:
state_before: n : ℕ
c : Composition n
⊢ c.boundary 0 = 0
state_after: no goals
tactic: simp [boundary, Fin.ext_iff]
Theorem: CochainComplex.HomComplex.Cochain.rightShiftLinearEquiv_apply
File: Mathlib/Algebra/Homology/HomotopyCategory/HomComplexShift.lean

Proof steps:
state_before: C : Type u
inst✝³ : Category.{v, u} C
inst✝² : Preadditive C
R : Type u_1
inst✝¹ : Ring R
inst✝ : Linear R C
K L M : CochainComplex C ℤ
n✝ : ℤ
γ✝ γ₁ γ₂ : Cochain K L n✝
n a n' : ℤ
hn' : n' + a = n
x : R
γ : Cochain K L n
⊢ (rightShiftAddEquiv K L n a n' hn') (x • γ) = x • (rightShiftAddEquiv K L n a n' hn') γ
state_after: no goals
tactic: simp
Theorem: Multiset.bind_assoc
File: Mathlib/Data/Multiset/Bind.lean

Proof steps:
state_before: α : Type u_1
β : Type v
γ : Type u_2
δ : Type u_3
a : α
s✝ t : Multiset α
f✝ g✝ : α → Multiset β
s : Multiset α
f : α → Multiset β
g : β → Multiset γ
⊢ (bind 0 f).bind g = bind 0 fun a => (f a).bind g
state_after: no goals
tactic: simp
state_before: α : Type u_1
β : Type v
γ : Type u_2
δ : Type u_3
a : α
s✝ t : Multiset α
f✝ g✝ : α → Multiset β
s : Multiset α
f : α → Multiset β
g : β → Multiset γ
⊢ ∀ (a : α) (s : Multiset α),
    ((s.bind f).bind g = s.bind fun a => (f a).bind g) →
      ((a ::ₘ s).bind f).bind g = (a ::ₘ s).bind fun a => (f a).bind g
state_after: no goals
tactic: simp (config := { contextual := true })
Theorem: Even.add_odd
File: Mathlib/Algebra/Ring/Parity.lean

Proof steps:
state_before: F : Type u_1
α : Type u_2
β : Type u_3
R : Type u_4
inst✝¹ : Semiring α
inst✝ : Semiring β
a b : α
m n : ℕ
⊢ Even a → Odd b → Odd (a + b)
state_after: case intro.intro
F : Type u_1
α : Type u_2
β : Type u_3
R : Type u_4
inst✝¹ : Semiring α
inst✝ : Semiring β
m n : ℕ
a b : α
⊢ Odd (a + a + (2 * b + 1))
tactic: rintro ⟨a, rfl⟩ ⟨b, rfl⟩
state_before: case intro.intro
F : Type u_1
α : Type u_2
β : Type u_3
R : Type u_4
inst✝¹ : Semiring α
inst✝ : Semiring β
m n : ℕ
a b : α
⊢ Odd (a + a + (2 * b + 1))
state_after: no goals
tactic: exact ⟨a + b, by rw [mul_add, ← two_mul, add_assoc]⟩
Theorem: ProbabilityTheory.measurable_preCDF'
File: Mathlib/Probability/Kernel/Disintegration/CondCdf.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
mα : MeasurableSpace α
ρ : Measure (α × ℝ)
⊢ Measurable fun a r => (preCDF ρ r a).toReal
state_after: α : Type u_1
β : Type u_2
ι : Type u_3
mα : MeasurableSpace α
ρ : Measure (α × ℝ)
⊢ ∀ (a : ℚ), Measurable fun x => (preCDF ρ a x).toReal
tactic: rw [measurable_pi_iff]
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
mα : MeasurableSpace α
ρ : Measure (α × ℝ)
⊢ ∀ (a : ℚ), Measurable fun x => (preCDF ρ a x).toReal
state_after: no goals
tactic: exact fun _ ↦ measurable_preCDF.ennreal_toReal
Theorem: CategoryTheory.Sieve.sieveOfSubfunctor_functorInclusion
File: Mathlib/CategoryTheory/Sites/Sieves.lean

Proof steps:
state_before: C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
D : Type u₂
inst✝ : Category.{v₂, u₂} D
F : C ⥤ D
X Y Z : C
f : Y ⟶ X
S R : Sieve X
⊢ sieveOfSubfunctor S.functorInclusion = S
state_after: case h
C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
D : Type u₂
inst✝ : Category.{v₂, u₂} D
F : C ⥤ D
X Y Z : C
f : Y ⟶ X
S R : Sieve X
Y✝ : C
f✝ : Y✝ ⟶ X
⊢ (sieveOfSubfunctor S.functorInclusion).arrows f✝ ↔ S.arrows f✝
tactic: ext
state_before: case h
C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
D : Type u₂
inst✝ : Category.{v₂, u₂} D
F : C ⥤ D
X Y Z : C
f : Y ⟶ X
S R : Sieve X
Y✝ : C
f✝ : Y✝ ⟶ X
⊢ (sieveOfSubfunctor S.functorInclusion).arrows f✝ ↔ S.arrows f✝
state_after: case h
C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
D : Type u₂
inst✝ : Category.{v₂, u₂} D
F : C ⥤ D
X Y Z : C
f : Y ⟶ X
S R : Sieve X
Y✝ : C
f✝ : Y✝ ⟶ X
⊢ (∃ t, ↑t = f✝) ↔ S.arrows f✝
tactic: simp only [functorInclusion_app, sieveOfSubfunctor_apply]
state_before: case h
C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
D : Type u₂
inst✝ : Category.{v₂, u₂} D
F : C ⥤ D
X Y Z : C
f : Y ⟶ X
S R : Sieve X
Y✝ : C
f✝ : Y✝ ⟶ X
⊢ (∃ t, ↑t = f✝) ↔ S.arrows f✝
state_after: case h.mp
C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
D : Type u₂
inst✝ : Category.{v₂, u₂} D
F : C ⥤ D
X Y Z : C
f : Y ⟶ X
S R : Sieve X
Y✝ : C
f✝ : Y✝ ⟶ X
⊢ (∃ t, ↑t = f✝) → S.arrows f✝

case h.mpr
C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
D : Type u₂
inst✝ : Category.{v₂, u₂} D
F : C ⥤ D
X Y Z : C
f : Y ⟶ X
S R : Sieve X
Y✝ : C
f✝ : Y✝ ⟶ X
⊢ S.arrows f✝ → ∃ t, ↑t = f✝
tactic: constructor
Theorem: Nat.even_mul_succ_self
File: Mathlib/Algebra/Group/Nat.lean

Proof steps:
state_before: m n✝ n : ℕ
⊢ Even (n * (n + 1))
state_after: m n✝ n : ℕ
⊢ Even n ∨ ¬Even n
tactic: rw [even_mul, even_add_one]
state_before: m n✝ n : ℕ
⊢ Even n ∨ ¬Even n
state_after: no goals
tactic: exact em _
Theorem: MeasurableEmbedding.memℒp_map_measure_iff
File: Mathlib/MeasureTheory/Function/LpSeminorm/Basic.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
β : Type u_5
mβ : MeasurableSpace β
f : α → β
g✝ : β → E
g : β → F
hf : MeasurableEmbedding f
⊢ Memℒp g p (Measure.map f μ) ↔ Memℒp (g ∘ f) p μ
state_after: no goals
tactic: simp_rw [Memℒp, hf.aestronglyMeasurable_map_iff, hf.eLpNorm_map_measure]
Theorem: Real.volume_interval
File: Mathlib/MeasureTheory/Measure/Lebesgue/Basic.lean

Proof steps:
state_before: ι : Type u_1
inst✝ : Fintype ι
a b : ℝ
⊢ volume (uIcc a b) = ofReal |b - a|
state_after: no goals
tactic: rw [← Icc_min_max, volume_Icc, max_sub_min_eq_abs]
Theorem: Rat.divInt_mul_divInt
File: .lake/packages/batteries/Batteries/Data/Rat/Lemmas.lean

Proof steps:
state_before: n₁ n₂ d₁ d₂ : Int
z₁ : d₁ ≠ 0
z₂ : d₂ ≠ 0
⊢ n₁ /. d₁ * (n₂ /. d₂) = n₁ * n₂ /. (d₁ * d₂)
state_after: no goals
tactic: rcases Int.eq_nat_or_neg d₁ with ⟨_, rfl | rfl⟩ <;>
  rcases Int.eq_nat_or_neg d₂ with ⟨_, rfl | rfl⟩ <;>
  simp_all [-Int.natCast_mul, divInt_neg', Int.mul_neg, Int.ofNat_mul_ofNat,  Int.neg_mul,
    mkRat_mul_mkRat]
Theorem: WeierstrassCurve.Jacobian.Point.toAffine_neg
File: Mathlib/AlgebraicGeometry/EllipticCurve/Jacobian.lean

Proof steps:
state_before: R : Type u
inst✝¹ : CommRing R
W' : Jacobian R
F : Type v
inst✝ : Field F
W : Jacobian F
P : Fin 3 → F
hP : W.Nonsingular P
⊢ toAffine W (W.neg P) = -toAffine W P
state_after: case pos
R : Type u
inst✝¹ : CommRing R
W' : Jacobian R
F : Type v
inst✝ : Field F
W : Jacobian F
P : Fin 3 → F
hP : W.Nonsingular P
hPz : P z = 0
⊢ toAffine W (W.neg P) = -toAffine W P

case neg
R : Type u
inst✝¹ : CommRing R
W' : Jacobian R
F : Type v
inst✝ : Field F
W : Jacobian F
P : Fin 3 → F
hP : W.Nonsingular P
hPz : ¬P z = 0
⊢ toAffine W (W.neg P) = -toAffine W P
tactic: by_cases hPz : P z = 0
Theorem: Embedding.isTotallyDisconnected_image
File: Mathlib/Topology/Connected/TotallyDisconnected.lean

Proof steps:
state_before: α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
s✝ t u v : Set α
inst✝ : TopologicalSpace β
f : α → β
hf : _root_.Embedding f
s : Set α
⊢ IsTotallyDisconnected (f '' s) ↔ IsTotallyDisconnected s
state_after: α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
s✝ t u✝ v : Set α
inst✝ : TopologicalSpace β
f : α → β
hf : _root_.Embedding f
s : Set α
hs : IsTotallyDisconnected s
u : Set β
hus : u ⊆ f '' s
hu : IsPreconnected u
⊢ u.Subsingleton
tactic: refine ⟨hf.isTotallyDisconnected, fun hs u hus hu ↦ ?_⟩
state_before: α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
s✝ t u✝ v : Set α
inst✝ : TopologicalSpace β
f : α → β
hf : _root_.Embedding f
s : Set α
hs : IsTotallyDisconnected s
u : Set β
hus : u ⊆ f '' s
hu : IsPreconnected u
⊢ u.Subsingleton
state_after: case intro.intro
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
s✝ t u v✝ : Set α
inst✝ : TopologicalSpace β
f : α → β
hf : _root_.Embedding f
s : Set α
hs : IsTotallyDisconnected s
v : Set α
hvs : v ⊆ s
hus : f '' v ⊆ f '' s
hu : IsPreconnected (f '' v)
⊢ (f '' v).Subsingleton
tactic: obtain ⟨v, hvs, rfl⟩ : ∃ v, v ⊆ s ∧ f '' v = u :=
    ⟨f ⁻¹' u ∩ s, inter_subset_right, by rwa [image_preimage_inter, inter_eq_left]⟩
state_before: case intro.intro
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
s✝ t u v✝ : Set α
inst✝ : TopologicalSpace β
f : α → β
hf : _root_.Embedding f
s : Set α
hs : IsTotallyDisconnected s
v : Set α
hvs : v ⊆ s
hus : f '' v ⊆ f '' s
hu : IsPreconnected (f '' v)
⊢ (f '' v).Subsingleton
state_after: case intro.intro
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
s✝ t u v✝ : Set α
inst✝ : TopologicalSpace β
f : α → β
hf : _root_.Embedding f
s : Set α
hs : IsTotallyDisconnected s
v : Set α
hvs : v ⊆ s
hus : f '' v ⊆ f '' s
hu : IsPreconnected v
⊢ (f '' v).Subsingleton
tactic: rw [hf.toInducing.isPreconnected_image] at hu
state_before: case intro.intro
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
s✝ t u v✝ : Set α
inst✝ : TopologicalSpace β
f : α → β
hf : _root_.Embedding f
s : Set α
hs : IsTotallyDisconnected s
v : Set α
hvs : v ⊆ s
hus : f '' v ⊆ f '' s
hu : IsPreconnected v
⊢ (f '' v).Subsingleton
state_after: no goals
tactic: exact (hs v hvs hu).image _
Theorem: HasCompactSupport.hasFDerivAt_convolution_left
File: Mathlib/Analysis/Convolution.lean

Proof steps:
state_before: 𝕜 : Type u𝕜
G : Type uG
E : Type uE
E' : Type uE'
E'' : Type uE''
F : Type uF
F' : Type uF'
F'' : Type uF''
P : Type uP
inst✝¹⁷ : NormedAddCommGroup E
inst✝¹⁶ : NormedAddCommGroup E'
inst✝¹⁵ : NormedAddCommGroup E''
inst✝¹⁴ : NormedAddCommGroup F
f f' : G → E
g g' : G → E'
x x' : G
y y' : E
inst✝¹³ : RCLike 𝕜
inst✝¹² : NormedSpace 𝕜 E
inst✝¹¹ : NormedSpace 𝕜 E'
inst✝¹⁰ : NormedSpace 𝕜 E''
inst✝⁹ : NormedSpace ℝ F
inst✝⁸ : NormedSpace 𝕜 F
n : ℕ∞
inst✝⁷ : CompleteSpace F
inst✝⁶ : MeasurableSpace G
μ ν : Measure G
L : E →L[𝕜] E' →L[𝕜] F
inst✝⁵ : NormedAddCommGroup G
inst✝⁴ : BorelSpace G
inst✝³ : NormedSpace 𝕜 G
inst✝² : SFinite μ
inst✝¹ : μ.IsAddLeftInvariant
inst✝ : μ.IsNegInvariant
hcf : HasCompactSupport f
hf : ContDiff 𝕜 1 f
hg : LocallyIntegrable g μ
x₀ : G
⊢ HasFDerivAt (f ⋆[L, μ] g) ((fderiv 𝕜 f ⋆[precompL G L, μ] g) x₀) x₀
state_after: 𝕜 : Type u𝕜
G : Type uG
E : Type uE
E' : Type uE'
E'' : Type uE''
F : Type uF
F' : Type uF'
F'' : Type uF''
P : Type uP
inst✝¹⁷ : NormedAddCommGroup E
inst✝¹⁶ : NormedAddCommGroup E'
inst✝¹⁵ : NormedAddCommGroup E''
inst✝¹⁴ : NormedAddCommGroup F
f f' : G → E
g g' : G → E'
x x' : G
y y' : E
inst✝¹³ : RCLike 𝕜
inst✝¹² : NormedSpace 𝕜 E
inst✝¹¹ : NormedSpace 𝕜 E'
inst✝¹⁰ : NormedSpace 𝕜 E''
inst✝⁹ : NormedSpace ℝ F
inst✝⁸ : NormedSpace 𝕜 F
n : ℕ∞
inst✝⁷ : CompleteSpace F
inst✝⁶ : MeasurableSpace G
μ ν : Measure G
L : E →L[𝕜] E' →L[𝕜] F
inst✝⁵ : NormedAddCommGroup G
inst✝⁴ : BorelSpace G
inst✝³ : NormedSpace 𝕜 G
inst✝² : SFinite μ
inst✝¹ : μ.IsAddLeftInvariant
inst✝ : μ.IsNegInvariant
hcf : HasCompactSupport f
hf : ContDiff 𝕜 1 f
hg : LocallyIntegrable g μ
x₀ : G
⊢ HasFDerivAt (g ⋆[L.flip, μ] f) ((g ⋆[(precompL G L).flip, μ] fderiv 𝕜 f) x₀) x₀
tactic: simp (config := { singlePass := true }) only [← convolution_flip]
state_before: 𝕜 : Type u𝕜
G : Type uG
E : Type uE
E' : Type uE'
E'' : Type uE''
F : Type uF
F' : Type uF'
F'' : Type uF''
P : Type uP
inst✝¹⁷ : NormedAddCommGroup E
inst✝¹⁶ : NormedAddCommGroup E'
inst✝¹⁵ : NormedAddCommGroup E''
inst✝¹⁴ : NormedAddCommGroup F
f f' : G → E
g g' : G → E'
x x' : G
y y' : E
inst✝¹³ : RCLike 𝕜
inst✝¹² : NormedSpace 𝕜 E
inst✝¹¹ : NormedSpace 𝕜 E'
inst✝¹⁰ : NormedSpace 𝕜 E''
inst✝⁹ : NormedSpace ℝ F
inst✝⁸ : NormedSpace 𝕜 F
n : ℕ∞
inst✝⁷ : CompleteSpace F
inst✝⁶ : MeasurableSpace G
μ ν : Measure G
L : E →L[𝕜] E' →L[𝕜] F
inst✝⁵ : NormedAddCommGroup G
inst✝⁴ : BorelSpace G
inst✝³ : NormedSpace 𝕜 G
inst✝² : SFinite μ
inst✝¹ : μ.IsAddLeftInvariant
inst✝ : μ.IsNegInvariant
hcf : HasCompactSupport f
hf : ContDiff 𝕜 1 f
hg : LocallyIntegrable g μ
x₀ : G
⊢ HasFDerivAt (g ⋆[L.flip, μ] f) ((g ⋆[(precompL G L).flip, μ] fderiv 𝕜 f) x₀) x₀
state_after: no goals
tactic: exact hcf.hasFDerivAt_convolution_right L.flip hg hf x₀