ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
Theorem: cfc_real_eq_complex
File: Mathlib/Analysis/CstarAlgebra/ContinuousFunctionalCalculus/Instances.lean

Proof steps:
state_before: A : Type u_1
inst✝⁸ : TopologicalSpace A
inst✝⁷ : Ring A
inst✝⁶ : StarRing A
inst✝⁵ : Algebra ℂ A
inst✝⁴ : StarModule ℂ A
inst✝³ : ContinuousFunctionalCalculus ℂ IsStarNormal
inst✝² : ContinuousFunctionalCalculus ℝ IsSelfAdjoint
inst✝¹ : UniqueContinuousFunctionalCalculus ℝ A
inst✝ : UniqueContinuousFunctionalCalculus ℂ A
a : A
f : ℝ → ℝ
ha : autoParam (IsSelfAdjoint a) _auto✝
⊢ cfc f a = cfc (fun x => ↑(f x.re)) a
state_after: A : Type u_1
inst✝⁸ : TopologicalSpace A
inst✝⁷ : Ring A
inst✝⁶ : StarRing A
inst✝⁵ : Algebra ℂ A
inst✝⁴ : StarModule ℂ A
inst✝³ : ContinuousFunctionalCalculus ℂ IsStarNormal
inst✝² : ContinuousFunctionalCalculus ℝ IsSelfAdjoint
inst✝¹ : UniqueContinuousFunctionalCalculus ℝ A
inst✝ : UniqueContinuousFunctionalCalculus ℂ A
a : A
f : ℝ → ℝ
ha : autoParam (IsSelfAdjoint a) _auto✝
this : CompactSpace ↑(σ ℂ a)
⊢ cfc f a = cfc (fun x => ↑(f x.re)) a
tactic: have := UniqueContinuousFunctionalCalculus.compactSpace_spectrum a (R := ℂ)
state_before: A : Type u_1
inst✝⁸ : TopologicalSpace A
inst✝⁷ : Ring A
inst✝⁶ : StarRing A
inst✝⁵ : Algebra ℂ A
inst✝⁴ : StarModule ℂ A
inst✝³ : ContinuousFunctionalCalculus ℂ IsStarNormal
inst✝² : ContinuousFunctionalCalculus ℝ IsSelfAdjoint
inst✝¹ : UniqueContinuousFunctionalCalculus ℝ A
inst✝ : UniqueContinuousFunctionalCalculus ℂ A
a : A
f : ℝ → ℝ
ha : autoParam (IsSelfAdjoint a) _auto✝
this : CompactSpace ↑(σ ℂ a)
⊢ cfc f a = cfc (fun x => ↑(f x.re)) a
state_after: A : Type u_1
inst✝⁸ : TopologicalSpace A
inst✝⁷ : Ring A
inst✝⁶ : StarRing A
inst✝⁵ : Algebra ℂ A
inst✝⁴ : StarModule ℂ A
inst✝³ : ContinuousFunctionalCalculus ℂ IsStarNormal
inst✝² : ContinuousFunctionalCalculus ℝ IsSelfAdjoint
inst✝¹ : UniqueContinuousFunctionalCalculus ℝ A
inst✝ : UniqueContinuousFunctionalCalculus ℂ A
a : A
f : ℝ → ℝ
this : CompactSpace ↑(σ ℂ a)
ha : IsSelfAdjoint a
⊢ cfc f a = cfc (fun x => ↑(f x.re)) a
tactic: replace ha : IsSelfAdjoint a := ha
state_before: A : Type u_1
inst✝⁸ : TopologicalSpace A
inst✝⁷ : Ring A
inst✝⁶ : StarRing A
inst✝⁵ : Algebra ℂ A
inst✝⁴ : StarModule ℂ A
inst✝³ : ContinuousFunctionalCalculus ℂ IsStarNormal
inst✝² : ContinuousFunctionalCalculus ℝ IsSelfAdjoint
inst✝¹ : UniqueContinuousFunctionalCalculus ℝ A
inst✝ : UniqueContinuousFunctionalCalculus ℂ A
a : A
f : ℝ → ℝ
this : CompactSpace ↑(σ ℂ a)
ha : IsSelfAdjoint a
⊢ cfc f a = cfc (fun x => ↑(f x.re)) a
state_after: no goals
tactic: exact ha.spectrumRestricts.cfc_eq_restrict (f := Complex.reCLM)
    Complex.isometry_ofReal.uniformEmbedding ha ha.isStarNormal f
Theorem: EuclideanGeometry.inner_pos_of_dist_lt_radius
File: Mathlib/Geometry/Euclidean/Sphere/Basic.lean

Proof steps:
state_before: V : Type u_1
P : Type u_2
inst✝³ : NormedAddCommGroup V
inst✝² : InnerProductSpace ℝ V
inst✝¹ : MetricSpace P
inst✝ : NormedAddTorsor V P
s : Sphere P
p₁ p₂ : P
hp₁ : p₁ ∈ s
hp₂ : dist p₂ s.center < s.radius
⊢ 0 < ⟪p₁ -ᵥ p₂, p₁ -ᵥ s.center⟫_ℝ
state_after: case pos
V : Type u_1
P : Type u_2
inst✝³ : NormedAddCommGroup V
inst✝² : InnerProductSpace ℝ V
inst✝¹ : MetricSpace P
inst✝ : NormedAddTorsor V P
s : Sphere P
p₁ p₂ : P
hp₁ : p₁ ∈ s
hp₂ : dist p₂ s.center < s.radius
h : p₁ = p₂
⊢ 0 < ⟪p₁ -ᵥ p₂, p₁ -ᵥ s.center⟫_ℝ

case neg
V : Type u_1
P : Type u_2
inst✝³ : NormedAddCommGroup V
inst✝² : InnerProductSpace ℝ V
inst✝¹ : MetricSpace P
inst✝ : NormedAddTorsor V P
s : Sphere P
p₁ p₂ : P
hp₁ : p₁ ∈ s
hp₂ : dist p₂ s.center < s.radius
h : ¬p₁ = p₂
⊢ 0 < ⟪p₁ -ᵥ p₂, p₁ -ᵥ s.center⟫_ℝ
tactic: by_cases h : p₁ = p₂
state_before: case neg
V : Type u_1
P : Type u_2
inst✝³ : NormedAddCommGroup V
inst✝² : InnerProductSpace ℝ V
inst✝¹ : MetricSpace P
inst✝ : NormedAddTorsor V P
s : Sphere P
p₁ p₂ : P
hp₁ : p₁ ∈ s
hp₂ : dist p₂ s.center < s.radius
h : ¬p₁ = p₂
⊢ 0 < ⟪p₁ -ᵥ p₂, p₁ -ᵥ s.center⟫_ℝ
state_after: no goals
tactic: exact (inner_pos_or_eq_of_dist_le_radius hp₁ hp₂.le).resolve_right h
Theorem: Rat.num_div_den
File: Mathlib/Algebra/Ring/Rat.lean

Proof steps:
state_before: r : ℚ
⊢ ↑r.num / ↑r.den = r
state_after: no goals
tactic: rw [← Int.cast_natCast, ← divInt_eq_div, num_divInt_den]
Theorem: HahnSeries.SummableFamily.hsum_smul
File: Mathlib/RingTheory/HahnSeries/Summable.lean

Proof steps:
state_before: Γ : Type u_1
R : Type u_2
inst✝¹ : OrderedCancelAddCommMonoid Γ
inst✝ : Semiring R
α : Type u_3
x : HahnSeries Γ R
s : SummableFamily Γ R α
⊢ (x • s).hsum = x * s.hsum
state_after: case coeff.h
Γ : Type u_1
R : Type u_2
inst✝¹ : OrderedCancelAddCommMonoid Γ
inst✝ : Semiring R
α : Type u_3
x : HahnSeries Γ R
s : SummableFamily Γ R α
g : Γ
⊢ (x • s).hsum.coeff g = (x * s.hsum).coeff g
tactic: ext g
state_before: case coeff.h
Γ : Type u_1
R : Type u_2
inst✝¹ : OrderedCancelAddCommMonoid Γ
inst✝ : Semiring R
α : Type u_3
x : HahnSeries Γ R
s : SummableFamily Γ R α
g : Γ
⊢ (x • s).hsum.coeff g = (x * s.hsum).coeff g
state_after: case coeff.h
Γ : Type u_1
R : Type u_2
inst✝¹ : OrderedCancelAddCommMonoid Γ
inst✝ : Semiring R
α : Type u_3
x : HahnSeries Γ R
s : SummableFamily Γ R α
g : Γ
⊢ ∑ᶠ (i : α), ∑ ij ∈ addAntidiagonal ⋯ ⋯ g, x.coeff ij.1 * (s i).coeff ij.2 =
    ∑ x_1 ∈ addAntidiagonal ⋯ ⋯ g, x.coeff x_1.1 * ∑ᶠ (i : α), (s i).coeff x_1.2
tactic: simp only [mul_coeff, hsum_coeff, smul_apply]
state_before: case coeff.h
Γ : Type u_1
R : Type u_2
inst✝¹ : OrderedCancelAddCommMonoid Γ
inst✝ : Semiring R
α : Type u_3
x : HahnSeries Γ R
s : SummableFamily Γ R α
g : Γ
⊢ ∑ᶠ (i : α), ∑ ij ∈ addAntidiagonal ⋯ ⋯ g, x.coeff ij.1 * (s i).coeff ij.2 =
    ∑ x_1 ∈ addAntidiagonal ⋯ ⋯ g, x.coeff x_1.1 * ∑ᶠ (i : α), (s i).coeff x_1.2
state_after: case coeff.h.refine_1
Γ : Type u_1
R : Type u_2
inst✝¹ : OrderedCancelAddCommMonoid Γ
inst✝ : Semiring R
α : Type u_3
x : HahnSeries Γ R
s : SummableFamily Γ R α
g : Γ
a : α
⊢ ∑ ij ∈ addAntidiagonal ⋯ ⋯ g, x.coeff ij.1 * (s a).coeff ij.2 =
    ∑ b ∈ addAntidiagonal ⋯ ⋯ g, x.coeff b.1 * (s a).coeff b.2

case coeff.h.refine_2
Γ : Type u_1
R : Type u_2
inst✝¹ : OrderedCancelAddCommMonoid Γ
inst✝ : Semiring R
α : Type u_3
x : HahnSeries Γ R
s : SummableFamily Γ R α
g : Γ
⊢ ∀ b ∈ addAntidiagonal ⋯ ⋯ g, (Function.support fun a => (fun i ij => x.coeff ij.1 * (s i).coeff ij.2) a b).Finite

case coeff.h.refine_3
Γ : Type u_1
R : Type u_2
inst✝¹ : OrderedCancelAddCommMonoid Γ
inst✝ : Semiring R
α : Type u_3
x : HahnSeries Γ R
s : SummableFamily Γ R α
g : Γ
⊢ ∑ b ∈ addAntidiagonal ⋯ ⋯ g, ∑ᶠ (a : α), x.coeff b.1 * (s a).coeff b.2 =
    ∑ x_1 ∈ addAntidiagonal ⋯ ⋯ g, x.coeff x_1.1 * ∑ᶠ (i : α), (s i).coeff x_1.2
tactic: refine
    (Eq.trans (finsum_congr fun a => ?_)
          (finsum_sum_comm (addAntidiagonal x.isPWO_support s.isPWO_iUnion_support g)
            (fun i ij => x.coeff (Prod.fst ij) * (s i).coeff ij.snd) ?_)).trans
      ?_
Theorem: CategoryTheory.tensorRightHomEquiv_whiskerRight_comp_evaluation
File: Mathlib/CategoryTheory/Monoidal/Rigid/Basic.lean

Proof steps:
state_before: C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y : C
inst✝ : HasRightDual X
f : Y ⟶ Xᘁ
⊢ (tensorRightHomEquiv Y X Xᘁ (𝟙_ C)) (f ▷ X ≫ ε_ X Xᘁ) = 𝟙 Y ⊗≫ (Y ◁ η_ X Xᘁ ≫ f ▷ (X ⊗ Xᘁ)) ⊗≫ ε_ X Xᘁ ▷ Xᘁ
state_after: C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y : C
inst✝ : HasRightDual X
f : Y ⟶ Xᘁ
⊢ (ρ_ Y).inv ≫ Y ◁ η_ X Xᘁ ≫ (α_ Y X Xᘁ).inv ≫ (f ▷ X ≫ ε_ X Xᘁ) ▷ Xᘁ =
    𝟙 Y ⊗≫ (Y ◁ η_ X Xᘁ ≫ f ▷ (X ⊗ Xᘁ)) ⊗≫ ε_ X Xᘁ ▷ Xᘁ
tactic: dsimp [tensorRightHomEquiv]
state_before: C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y : C
inst✝ : HasRightDual X
f : Y ⟶ Xᘁ
⊢ (ρ_ Y).inv ≫ Y ◁ η_ X Xᘁ ≫ (α_ Y X Xᘁ).inv ≫ (f ▷ X ≫ ε_ X Xᘁ) ▷ Xᘁ =
    𝟙 Y ⊗≫ (Y ◁ η_ X Xᘁ ≫ f ▷ (X ⊗ Xᘁ)) ⊗≫ ε_ X Xᘁ ▷ Xᘁ
state_after: no goals
tactic: coherence
state_before: C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y : C
inst✝ : HasRightDual X
f : Y ⟶ Xᘁ
⊢ 𝟙 Y ⊗≫ (Y ◁ η_ X Xᘁ ≫ f ▷ (X ⊗ Xᘁ)) ⊗≫ ε_ X Xᘁ ▷ Xᘁ = f ⊗≫ Xᘁ ◁ η_ X Xᘁ ⊗≫ ε_ X Xᘁ ▷ Xᘁ
state_after: C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y : C
inst✝ : HasRightDual X
f : Y ⟶ Xᘁ
⊢ 𝟙 Y ⊗≫ (f ▷ 𝟙_ C ≫ Xᘁ ◁ η_ X Xᘁ) ⊗≫ ε_ X Xᘁ ▷ Xᘁ = f ⊗≫ Xᘁ ◁ η_ X Xᘁ ⊗≫ ε_ X Xᘁ ▷ Xᘁ
tactic: rw [whisker_exchange]
state_before: C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y : C
inst✝ : HasRightDual X
f : Y ⟶ Xᘁ
⊢ 𝟙 Y ⊗≫ (f ▷ 𝟙_ C ≫ Xᘁ ◁ η_ X Xᘁ) ⊗≫ ε_ X Xᘁ ▷ Xᘁ = f ⊗≫ Xᘁ ◁ η_ X Xᘁ ⊗≫ ε_ X Xᘁ ▷ Xᘁ
state_after: no goals
tactic: coherence
state_before: C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y : C
inst✝ : HasRightDual X
f : Y ⟶ Xᘁ
⊢ f ⊗≫ Xᘁ ◁ η_ X Xᘁ ⊗≫ ε_ X Xᘁ ▷ Xᘁ = f ≫ (λ_ Xᘁ).inv
state_after: C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y : C
inst✝ : HasRightDual X
f : Y ⟶ Xᘁ
⊢ f ⊗≫ ⊗𝟙 = f ≫ (λ_ Xᘁ).inv
tactic: rw [coevaluation_evaluation'']
state_before: C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y : C
inst✝ : HasRightDual X
f : Y ⟶ Xᘁ
⊢ f ⊗≫ ⊗𝟙 = f ≫ (λ_ Xᘁ).inv
state_after: no goals
tactic: coherence
Theorem: CategoryTheory.ProjectiveResolution.complex_d_succ_comp
File: Mathlib/CategoryTheory/Preadditive/ProjectiveResolution.lean

Proof steps:
state_before: C : Type u
inst✝² : Category.{v, u} C
inst✝¹ : HasZeroObject C
inst✝ : HasZeroMorphisms C
Z : C
P : ProjectiveResolution Z
n : ℕ
⊢ P.complex.d n (n + 1) ≫ P.complex.d (n + 1) (n + 2) = 0
state_after: no goals
tactic: simp
Theorem: MvPolynomial.comap_rename
File: Mathlib/Algebra/MvPolynomial/Comap.lean

Proof steps:
state_before: σ : Type u_1
τ : Type u_2
υ : Type u_3
R : Type u_4
inst✝ : CommSemiring R
f : σ → τ
x : τ → R
⊢ comap (rename f) x = x ∘ f
state_after: case h
σ : Type u_1
τ : Type u_2
υ : Type u_3
R : Type u_4
inst✝ : CommSemiring R
f : σ → τ
x : τ → R
x✝ : σ
⊢ comap (rename f) x x✝ = (x ∘ f) x✝
tactic: funext
state_before: case h
σ : Type u_1
τ : Type u_2
υ : Type u_3
R : Type u_4
inst✝ : CommSemiring R
f : σ → τ
x : τ → R
x✝ : σ
⊢ comap (rename f) x x✝ = (x ∘ f) x✝
state_after: no goals
tactic: simp [rename_X, comap_apply, aeval_X]
Theorem: LinearIndependent.ne_zero
File: Mathlib/LinearAlgebra/LinearIndependent.lean

Proof steps:
state_before: ι : Type u'
ι' : Type u_1
R : Type u_2
K : Type u_3
M : Type u_4
M' : Type u_5
M'' : Type u_6
V : Type u
V' : Type u_7
v : ι → M
inst✝⁷ : Semiring R
inst✝⁶ : AddCommMonoid M
inst✝⁵ : AddCommMonoid M'
inst✝⁴ : AddCommMonoid M''
inst✝³ : Module R M
inst✝² : Module R M'
inst✝¹ : Module R M''
a b : R
x y : M
inst✝ : Nontrivial R
i : ι
hv : LinearIndependent R v
h : v i = 0
⊢ 1 = 0
state_after: ι : Type u'
ι' : Type u_1
R : Type u_2
K : Type u_3
M : Type u_4
M' : Type u_5
M'' : Type u_6
V : Type u
V' : Type u_7
v : ι → M
inst✝⁷ : Semiring R
inst✝⁶ : AddCommMonoid M
inst✝⁵ : AddCommMonoid M'
inst✝⁴ : AddCommMonoid M''
inst✝³ : Module R M
inst✝² : Module R M'
inst✝¹ : Module R M''
a b : R
x y : M
inst✝ : Nontrivial R
i : ι
hv : LinearIndependent R v
h : v i = 0
⊢ (Finsupp.single i 1) i = 0
tactic: suffices (Finsupp.single i 1 : ι →₀ R) i = 0 by simpa
state_before: ι : Type u'
ι' : Type u_1
R : Type u_2
K : Type u_3
M : Type u_4
M' : Type u_5
M'' : Type u_6
V : Type u
V' : Type u_7
v : ι → M
inst✝⁷ : Semiring R
inst✝⁶ : AddCommMonoid M
inst✝⁵ : AddCommMonoid M'
inst✝⁴ : AddCommMonoid M''
inst✝³ : Module R M
inst✝² : Module R M'
inst✝¹ : Module R M''
a b : R
x y : M
inst✝ : Nontrivial R
i : ι
hv : LinearIndependent R v
h : v i = 0
⊢ (Finsupp.single i 1) i = 0
state_after: ι : Type u'
ι' : Type u_1
R : Type u_2
K : Type u_3
M : Type u_4
M' : Type u_5
M'' : Type u_6
V : Type u
V' : Type u_7
v : ι → M
inst✝⁷ : Semiring R
inst✝⁶ : AddCommMonoid M
inst✝⁵ : AddCommMonoid M'
inst✝⁴ : AddCommMonoid M''
inst✝³ : Module R M
inst✝² : Module R M'
inst✝¹ : Module R M''
a b : R
x y : M
inst✝ : Nontrivial R
i : ι
hv : LinearIndependent R v
h : v i = 0
⊢ 0 i = 0

ι : Type u'
ι' : Type u_1
R : Type u_2
K : Type u_3
M : Type u_4
M' : Type u_5
M'' : Type u_6
V : Type u
V' : Type u_7
v : ι → M
inst✝⁷ : Semiring R
inst✝⁶ : AddCommMonoid M
inst✝⁵ : AddCommMonoid M'
inst✝⁴ : AddCommMonoid M''
inst✝³ : Module R M
inst✝² : Module R M'
inst✝¹ : Module R M''
a b : R
x y : M
inst✝ : Nontrivial R
i : ι
hv : LinearIndependent R v
h : v i = 0
⊢ (Finsupp.total ι M R v) (Finsupp.single i 1) = 0
tactic: rw [linearIndependent_iff.1 hv (Finsupp.single i 1)]
Theorem: StrictConvexOn.translate_right
File: Mathlib/Analysis/Convex/Function.lean

Proof steps:
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
α : Type u_4
β : Type u_5
ι : Type u_6
inst✝⁴ : OrderedSemiring 𝕜
inst✝³ : AddCancelCommMonoid E
inst✝² : OrderedAddCommMonoid β
inst✝¹ : Module 𝕜 E
inst✝ : SMul 𝕜 β
s : Set E
f : E → β
hf : StrictConvexOn 𝕜 s f
c x : E
hx : x ∈ (fun z => c + z) ⁻¹' s
y : E
hy : y ∈ (fun z => c + z) ⁻¹' s
hxy : x ≠ y
a b : 𝕜
ha : 0 < a
hb : 0 < b
hab : a + b = 1
⊢ f (c + (a • x + b • y)) = f (a • (c + x) + b • (c + y))
state_after: no goals
tactic: rw [smul_add, smul_add, add_add_add_comm, Convex.combo_self hab]
Theorem: LinearMap.BilinForm.IsAdjointPair.comp
File: Mathlib/LinearAlgebra/BilinearForm/Properties.lean

Proof steps:
state_before: R : Type u_1
M : Type u_2
inst✝¹⁸ : CommSemiring R
inst✝¹⁷ : AddCommMonoid M
inst✝¹⁶ : Module R M
R₁ : Type u_3
M₁ : Type u_4
inst✝¹⁵ : CommRing R₁
inst✝¹⁴ : AddCommGroup M₁
inst✝¹³ : Module R₁ M₁
V : Type u_5
K : Type u_6
inst✝¹² : Field K
inst✝¹¹ : AddCommGroup V
inst✝¹⁰ : Module K V
M'✝ : Type u_7
M''✝ : Type u_8
inst✝⁹ : AddCommMonoid M'✝
inst✝⁸ : AddCommMonoid M''✝
inst✝⁷ : Module R M'✝
inst✝⁶ : Module R M''✝
B : BilinForm R M
B₁ : BilinForm R₁ M₁
F : BilinForm R M
M' : Type u_9
inst✝⁵ : AddCommMonoid M'
inst✝⁴ : Module R M'
B' : BilinForm R M'
f f'✝ : M →ₗ[R] M'
g g'✝ : M' →ₗ[R] M
M₁' : Type u_10
inst✝³ : AddCommGroup M₁'
inst✝² : Module R₁ M₁'
B₁' : BilinForm R₁ M₁'
f₁ f₁' : M₁ →ₗ[R₁] M₁'
g₁ g₁' : M₁' →ₗ[R₁] M₁
B₂' : BilinForm R M'
f₂ f₂' : M →ₗ[R] M'
g₂ g₂' : M' →ₗ[R] M
M'' : Type u_11
inst✝¹ : AddCommMonoid M''
inst✝ : Module R M''
B'' : BilinForm R M''
f' : M' →ₗ[R] M''
g' : M'' →ₗ[R] M'
h : B.IsAdjointPair B' f g
h' : B'.IsAdjointPair B'' f' g'
x : M
y : M''
⊢ (B'' ((f' ∘ₗ f) x)) y = (B x) ((g ∘ₗ g') y)
state_after: no goals
tactic: rw [LinearMap.comp_apply, LinearMap.comp_apply, h', h]
Theorem: CategoryTheory.NatIso.isIso_map_iff
File: Mathlib/CategoryTheory/NatIso.lean

Proof steps:
state_before: C : Type u₁
inst✝² : Category.{v₁, u₁} C
D : Type u₂
inst✝¹ : Category.{v₂, u₂} D
E : Type u₃
inst✝ : Category.{v₃, u₃} E
F G : C ⥤ D
X✝ Y✝ : C
F₁ F₂ : C ⥤ D
e : F₁ ≅ F₂
X Y : C
f : X ⟶ Y
⊢ IsIso (F₁.map f) ↔ IsIso (F₂.map f)
state_after: C : Type u₁
inst✝² : Category.{v₁, u₁} C
D : Type u₂
inst✝¹ : Category.{v₂, u₂} D
E : Type u₃
inst✝ : Category.{v₃, u₃} E
F G : C ⥤ D
X✝ Y✝ X Y : C
f : X ⟶ Y
⊢ ∀ {F₁ F₂ : C ⥤ D}, (F₁ ≅ F₂) → (IsIso (F₁.map f) ↔ IsIso (F₂.map f))
tactic: revert F₁ F₂
state_before: C : Type u₁
inst✝² : Category.{v₁, u₁} C
D : Type u₂
inst✝¹ : Category.{v₂, u₂} D
E : Type u₃
inst✝ : Category.{v₃, u₃} E
F G : C ⥤ D
X✝ Y✝ X Y : C
f : X ⟶ Y
⊢ ∀ {F₁ F₂ : C ⥤ D}, (F₁ ≅ F₂) → (IsIso (F₁.map f) ↔ IsIso (F₂.map f))
state_after: C : Type u₁
inst✝² : Category.{v₁, u₁} C
D : Type u₂
inst✝¹ : Category.{v₂, u₂} D
E : Type u₃
inst✝ : Category.{v₃, u₃} E
F G : C ⥤ D
X✝ Y✝ X Y : C
f : X ⟶ Y
⊢ ∀ {F₁ F₂ : C ⥤ D}, (F₁ ≅ F₂) → IsIso (F₁.map f) → IsIso (F₂.map f)
tactic: suffices ∀ {F₁ F₂ : C ⥤ D} (_ : F₁ ≅ F₂) (_ : IsIso (F₁.map f)), IsIso (F₂.map f) by
    exact fun F₁ F₂ e => ⟨this e, this e.symm⟩
state_before: C : Type u₁
inst✝² : Category.{v₁, u₁} C
D : Type u₂
inst✝¹ : Category.{v₂, u₂} D
E : Type u₃
inst✝ : Category.{v₃, u₃} E
F G : C ⥤ D
X✝ Y✝ X Y : C
f : X ⟶ Y
⊢ ∀ {F₁ F₂ : C ⥤ D}, (F₁ ≅ F₂) → IsIso (F₁.map f) → IsIso (F₂.map f)
state_after: C : Type u₁
inst✝² : Category.{v₁, u₁} C
D : Type u₂
inst✝¹ : Category.{v₂, u₂} D
E : Type u₃
inst✝ : Category.{v₃, u₃} E
F G : C ⥤ D
X✝ Y✝ X Y : C
f : X ⟶ Y
F₁ F₂ : C ⥤ D
e : F₁ ≅ F₂
hf : IsIso (F₁.map f)
⊢ IsIso (F₂.map f)
tactic: intro F₁ F₂ e hf
state_before: C : Type u₁
inst✝² : Category.{v₁, u₁} C
D : Type u₂
inst✝¹ : Category.{v₂, u₂} D
E : Type u₃
inst✝ : Category.{v₃, u₃} E
F G : C ⥤ D
X✝ Y✝ X Y : C
f : X ⟶ Y
F₁ F₂ : C ⥤ D
e : F₁ ≅ F₂
hf : IsIso (F₁.map f)
⊢ IsIso (F₂.map f)
state_after: case refine_1
C : Type u₁
inst✝² : Category.{v₁, u₁} C
D : Type u₂
inst✝¹ : Category.{v₂, u₂} D
E : Type u₃
inst✝ : Category.{v₃, u₃} E
F G : C ⥤ D
X✝ Y✝ X Y : C
f : X ⟶ Y
F₁ F₂ : C ⥤ D
e : F₁ ≅ F₂
hf : IsIso (F₁.map f)
⊢ F₂.map f ≫ e.inv.app Y ≫ inv (F₁.map f) ≫ e.hom.app X = 𝟙 (F₂.obj X)

case refine_2
C : Type u₁
inst✝² : Category.{v₁, u₁} C
D : Type u₂
inst✝¹ : Category.{v₂, u₂} D
E : Type u₃
inst✝ : Category.{v₃, u₃} E
F G : C ⥤ D
X✝ Y✝ X Y : C
f : X ⟶ Y
F₁ F₂ : C ⥤ D
e : F₁ ≅ F₂
hf : IsIso (F₁.map f)
⊢ (e.inv.app Y ≫ inv (F₁.map f) ≫ e.hom.app X) ≫ F₂.map f = 𝟙 (F₂.obj Y)
tactic: refine IsIso.mk ⟨e.inv.app Y ≫ inv (F₁.map f) ≫ e.hom.app X, ?_, ?_⟩
Theorem: EReal.mul_inv
File: Mathlib/Data/Real/EReal.lean

Proof steps:
state_before: a b : EReal
⊢ (a * b)⁻¹ = a⁻¹ * b⁻¹
state_after: no goals
tactic: induction a, b using EReal.induction₂_symm with
  | top_top | top_zero | top_bot | zero_bot | bot_bot => simp
  | @symm a b h => rw [mul_comm b a, mul_comm b⁻¹ a⁻¹]; exact h
  | top_pos x x_pos => rw [top_mul_of_pos (EReal.coe_pos.2 x_pos), inv_top, zero_mul]
  | top_neg x x_neg => rw [top_mul_of_neg (EReal.coe_neg'.2 x_neg), inv_bot, inv_top, zero_mul]
  | pos_bot x x_pos => rw [mul_bot_of_pos (EReal.coe_pos.2 x_pos), inv_bot, mul_zero]
  | coe_coe x y => rw [← coe_mul, ← coe_inv, _root_.mul_inv, coe_mul, coe_inv, coe_inv]
  | neg_bot x x_neg => rw [mul_bot_of_neg (EReal.coe_neg'.2 x_neg), inv_top, inv_bot, mul_zero]
Theorem: CongruenceSubgroup.Gamma1_mem
File: Mathlib/NumberTheory/ModularForms/CongruenceSubgroups.lean

Proof steps:
state_before: N✝ N : ℕ
A : SL(2, ℤ)
⊢ A ∈ Gamma1 N ↔ ↑(↑A 0 0) = 1 ∧ ↑(↑A 1 1) = 1 ∧ ↑(↑A 1 0) = 0
state_after: case mp
N✝ N : ℕ
A : SL(2, ℤ)
⊢ A ∈ Gamma1 N → ↑(↑A 0 0) = 1 ∧ ↑(↑A 1 1) = 1 ∧ ↑(↑A 1 0) = 0

case mpr
N✝ N : ℕ
A : SL(2, ℤ)
⊢ ↑(↑A 0 0) = 1 ∧ ↑(↑A 1 1) = 1 ∧ ↑(↑A 1 0) = 0 → A ∈ Gamma1 N
tactic: constructor
Theorem: ENNReal.log_ofReal_of_pos
File: Mathlib/Analysis/SpecialFunctions/Log/ENNRealLog.lean

Proof steps:
state_before: x : ℝ
hx : 0 < x
⊢ (ENNReal.ofReal x).log = ↑(Real.log x)
state_after: case hnc
x : ℝ
hx : 0 < x
⊢ ¬x ≤ 0
tactic: rw [log_ofReal, if_neg]
state_before: case hnc
x : ℝ
hx : 0 < x
⊢ ¬x ≤ 0
state_after: no goals
tactic: exact not_le.mpr hx
Theorem: AddCommGroup.ModEq.zsmul
File: Mathlib/Algebra/ModEq.lean

Proof steps:
state_before: α : Type u_1
inst✝ : AddCommGroup α
p a a₁ a₂ b b₁ b₂ c : α
n : ℕ
z m : ℤ
hm : b - a = m • p
⊢ z • b - z • a = m • z • p
state_after: no goals
tactic: rw [← smul_sub, hm, smul_comm]
Theorem: tendsto_floor_left
File: Mathlib/Topology/Algebra/Order/Floor.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝³ : LinearOrderedRing α
inst✝² : FloorRing α
inst✝¹ : TopologicalSpace α
inst✝ : OrderClosedTopology α
n : ℤ
⊢ pure (IntCast.intCast (n - 1)) ≤ 𝓝[≤] (↑n - 1)
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝³ : LinearOrderedRing α
inst✝² : FloorRing α
inst✝¹ : TopologicalSpace α
inst✝ : OrderClosedTopology α
n : ℤ
⊢ pure (IntCast.intCast (n - 1)) ≤ 𝓝[≤] ↑(n - 1)
tactic: rw [← @cast_one α, ← cast_sub]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝³ : LinearOrderedRing α
inst✝² : FloorRing α
inst✝¹ : TopologicalSpace α
inst✝ : OrderClosedTopology α
n : ℤ
⊢ pure (IntCast.intCast (n - 1)) ≤ 𝓝[≤] ↑(n - 1)
state_after: no goals
tactic: exact pure_le_nhdsWithin le_rfl
Theorem: tendsto_Ioo_atBot
File: Mathlib/Topology/Order/DenselyOrdered.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝³ : TopologicalSpace α
inst✝² : LinearOrder α
inst✝¹ : OrderTopology α
inst✝ : DenselyOrdered α
a b : α
s : Set α
l : Filter β
f✝ : α → β
f : β → ↑(Ioo a b)
⊢ Tendsto f l atBot ↔ Tendsto (fun x => ↑(f x)) l (𝓝[>] a)
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝³ : TopologicalSpace α
inst✝² : LinearOrder α
inst✝¹ : OrderTopology α
inst✝ : DenselyOrdered α
a b : α
s : Set α
l : Filter β
f✝ : α → β
f : β → ↑(Ioo a b)
⊢ Tendsto (Subtype.val ∘ f) l (𝓝[>] a) ↔ Tendsto (fun x => ↑(f x)) l (𝓝[>] a)
tactic: rw [← comap_coe_Ioo_nhdsWithin_Ioi, tendsto_comap_iff]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝³ : TopologicalSpace α
inst✝² : LinearOrder α
inst✝¹ : OrderTopology α
inst✝ : DenselyOrdered α
a b : α
s : Set α
l : Filter β
f✝ : α → β
f : β → ↑(Ioo a b)
⊢ Tendsto (Subtype.val ∘ f) l (𝓝[>] a) ↔ Tendsto (fun x => ↑(f x)) l (𝓝[>] a)
state_after: no goals
tactic: rfl
Theorem: IsCompact.add_closure_zero_eq_closure
File: Mathlib/Topology/Algebra/Group/Basic.lean

Proof steps:
state_before: G : Type w
H : Type x
α : Type u
β : Type v
inst✝² : TopologicalSpace G
inst✝¹ : Group G
inst✝ : TopologicalGroup G
s t K : Set G
hK : IsCompact K
⊢ K * closure {1} = closure K
state_after: G : Type w
H : Type x
α : Type u
β : Type v
inst✝² : TopologicalSpace G
inst✝¹ : Group G
inst✝ : TopologicalGroup G
s t K : Set G
hK : IsCompact K
⊢ K * closure {1} ⊆ closure K

G : Type w
H : Type x
α : Type u
β : Type v
inst✝² : TopologicalSpace G
inst✝¹ : Group G
inst✝ : TopologicalGroup G
s t K : Set G
hK : IsCompact K
⊢ closure K ⊆ K * closure {1}
tactic: apply Subset.antisymm ?_ ?_
Theorem: Topology.IsLowerSet.isOpen_iff_isLowerSet
File: Mathlib/Topology/Order/UpperLowerSetTopology.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝² : Preorder α
inst✝¹ : TopologicalSpace α
inst✝ : Topology.IsLowerSet α
s : Set α
⊢ IsOpen s ↔ IsLowerSet s
state_after: no goals
tactic: rfl
Theorem: Finset.sigmaAntidiagonalEquivProd_symm_apply_snd_coe
File: Mathlib/Algebra/Order/Antidiag/Prod.lean

Proof steps:
state_before: A : Type u_1
inst✝¹ : AddMonoid A
inst✝ : HasAntidiagonal A
⊢ LeftInverse (fun x => ⟨x.1 + x.2, ⟨x, ⋯⟩⟩) fun x => ↑x.snd
state_after: case mk.mk.mk
A : Type u_1
inst✝¹ : AddMonoid A
inst✝ : HasAntidiagonal A
n k l : A
h : (k, l) ∈ antidiagonal n
⊢ (fun x => ⟨x.1 + x.2, ⟨x, ⋯⟩⟩) ((fun x => ↑x.snd) ⟨n, ⟨(k, l), h⟩⟩) = ⟨n, ⟨(k, l), h⟩⟩
tactic: rintro ⟨n, ⟨k, l⟩, h⟩
state_before: case mk.mk.mk
A : Type u_1
inst✝¹ : AddMonoid A
inst✝ : HasAntidiagonal A
n k l : A
h : (k, l) ∈ antidiagonal n
⊢ (fun x => ⟨x.1 + x.2, ⟨x, ⋯⟩⟩) ((fun x => ↑x.snd) ⟨n, ⟨(k, l), h⟩⟩) = ⟨n, ⟨(k, l), h⟩⟩
state_after: case mk.mk.mk
A : Type u_1
inst✝¹ : AddMonoid A
inst✝ : HasAntidiagonal A
n k l : A
h✝ : (k, l) ∈ antidiagonal n
h : (k, l).1 + (k, l).2 = n
⊢ (fun x => ⟨x.1 + x.2, ⟨x, ⋯⟩⟩) ((fun x => ↑x.snd) ⟨n, ⟨(k, l), h✝⟩⟩) = ⟨n, ⟨(k, l), h✝⟩⟩
tactic: rw [mem_antidiagonal] at h
state_before: case mk.mk.mk
A : Type u_1
inst✝¹ : AddMonoid A
inst✝ : HasAntidiagonal A
n k l : A
h✝ : (k, l) ∈ antidiagonal n
h : (k, l).1 + (k, l).2 = n
⊢ (fun x => ⟨x.1 + x.2, ⟨x, ⋯⟩⟩) ((fun x => ↑x.snd) ⟨n, ⟨(k, l), h✝⟩⟩) = ⟨n, ⟨(k, l), h✝⟩⟩
state_after: no goals
tactic: exact Sigma.subtype_ext h rfl
Theorem: Cardinal.infinite_iff
File: Mathlib/SetTheory/Cardinal/Basic.lean

Proof steps:
state_before: α✝ β α : Type u
⊢ Infinite α ↔ ℵ₀ ≤ #α
state_after: no goals
tactic: rw [← not_lt, lt_aleph0_iff_finite, not_finite_iff_infinite]
Theorem: List.perm_append_right_iff
File: .lake/packages/batteries/Batteries/Data/List/Perm.lean

Proof steps:
state_before: α : Type u_1
l₁ l₂ l : List α
⊢ l₁ ++ l ~ l₂ ++ l ↔ l₁ ~ l₂
state_after: α : Type u_1
l₁ l₂ l : List α
p : l₁ ++ l ~ l₂ ++ l
⊢ l₁ ~ l₂
tactic: refine ⟨fun p => ?_, .append_right _⟩
state_before: α : Type u_1
l₁ l₂ l : List α
p : l₁ ++ l ~ l₂ ++ l
⊢ l₁ ~ l₂
state_after: no goals
tactic: exact (perm_append_left_iff _).1 <| perm_append_comm.trans <| p.trans perm_append_comm
Theorem: nhdsWithin_union
File: Mathlib/Topology/ContinuousOn.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝ : TopologicalSpace α
a : α
s t : Set α
⊢ 𝓝[s ∪ t] a = 𝓝[s] a ⊔ 𝓝[t] a
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝ : TopologicalSpace α
a : α
s t : Set α
⊢ 𝓝 a ⊓ 𝓟 (s ∪ t) = 𝓝 a ⊓ 𝓟 s ⊔ 𝓝 a ⊓ 𝓟 t
tactic: delta nhdsWithin
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝ : TopologicalSpace α
a : α
s t : Set α
⊢ 𝓝 a ⊓ 𝓟 (s ∪ t) = 𝓝 a ⊓ 𝓟 s ⊔ 𝓝 a ⊓ 𝓟 t
state_after: no goals
tactic: rw [← inf_sup_left, sup_principal]