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

Proof steps:
state_before: α : Type u_1
M : Type u_2
R : Type u_3
inst✝⁶ : Fintype α
inst✝⁵ : Semiring R
inst✝⁴ : AddCommMonoid M
inst✝³ : Module R M
S : Type u_4
inst✝² : Semiring S
inst✝¹ : Module S M
inst✝ : SMulCommClass R S M
v : α → M
x : M
⊢ ⊤ ≤ span R (Set.range v) ↔ ∀ (x : M), ∃ c, ∑ i : α, c i • v i = x
state_after: α : Type u_1
M : Type u_2
R : Type u_3
inst✝⁶ : Fintype α
inst✝⁵ : Semiring R
inst✝⁴ : AddCommMonoid M
inst✝³ : Module R M
S : Type u_4
inst✝² : Semiring S
inst✝¹ : Module S M
inst✝ : SMulCommClass R S M
v : α → M
x : M
⊢ ⊤ ≤ span R (Set.range v) ↔ ∀ (x : M), x ∈ span R (Set.range v)
tactic: simp_rw [← mem_span_range_iff_exists_fun]
state_before: α : Type u_1
M : Type u_2
R : Type u_3
inst✝⁶ : Fintype α
inst✝⁵ : Semiring R
inst✝⁴ : AddCommMonoid M
inst✝³ : Module R M
S : Type u_4
inst✝² : Semiring S
inst✝¹ : Module S M
inst✝ : SMulCommClass R S M
v : α → M
x : M
⊢ ⊤ ≤ span R (Set.range v) ↔ ∀ (x : M), x ∈ span R (Set.range v)
state_after: no goals
tactic: exact ⟨fun h x => h trivial, fun h x _ => h x⟩
Theorem: round_neg_two_inv
File: Mathlib/Algebra/Order/Floor.lean

Proof steps:
state_before: F : Type u_1
α : Type u_2
β : Type u_3
inst✝¹ : LinearOrderedField α
inst✝ : FloorRing α
⊢ round (-2⁻¹) = 0
state_after: no goals
tactic: simp only [round_eq, ← one_div, add_left_neg, floor_zero]
Theorem: Finset.pluennecke_ruzsa_inequality_pow_div
File: Mathlib/Combinatorics/Additive/PluenneckeRuzsa.lean

Proof steps:
state_before: α : Type u_1
inst✝¹ : CommGroup α
inst✝ : DecidableEq α
A B✝ C : Finset α
hA : A.Nonempty
B : Finset α
n : ℕ
⊢ ↑(B ^ n).card ≤ (↑(A / B).card / ↑A.card) ^ n * ↑A.card
state_after: no goals
tactic: simpa only [_root_.pow_zero, div_one] using pluennecke_ruzsa_inequality_pow_div_pow_div hA _ _ 0
Theorem: extChartAt_preimage_mem_nhdsWithin'
File: Mathlib/Geometry/Manifold/SmoothManifoldWithCorners.lean

Proof steps:
state_before: 𝕜 : Type u_1
E : Type u_2
M : Type u_3
H : Type u_4
E' : Type u_5
M' : Type u_6
H' : Type u_7
inst✝¹⁰ : NontriviallyNormedField 𝕜
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : NormedSpace 𝕜 E
inst✝⁷ : TopologicalSpace H
inst✝⁶ : TopologicalSpace M
f f' : PartialHomeomorph M H
I : ModelWithCorners 𝕜 E H
inst✝⁵ : NormedAddCommGroup E'
inst✝⁴ : NormedSpace 𝕜 E'
inst✝³ : TopologicalSpace H'
inst✝² : TopologicalSpace M'
I' : ModelWithCorners 𝕜 E' H'
s t : Set M
inst✝¹ : ChartedSpace H M
inst✝ : ChartedSpace H' M'
x x' : M
h : x' ∈ (extChartAt I x).source
ht : t ∈ 𝓝[s] x'
⊢ ↑(extChartAt I x).symm ⁻¹' t ∈ 𝓝[↑(extChartAt I x).symm ⁻¹' s ∩ range ↑I] ↑(extChartAt I x) x'
state_after: no goals
tactic: rwa [← map_extChartAt_symm_nhdsWithin' I h, mem_map] at ht
Theorem: IsLocalizedModule.mk'_eq_iff
File: Mathlib/Algebra/Module/LocalizedModule.lean

Proof steps:
state_before: R : Type u_1
inst✝¹² : CommSemiring R
S : Submonoid R
M : Type u_2
M' : Type u_3
M'' : Type u_4
inst✝¹¹ : AddCommMonoid M
inst✝¹⁰ : AddCommMonoid M'
inst✝⁹ : AddCommMonoid M''
A : Type u_5
inst✝⁸ : CommSemiring A
inst✝⁷ : Algebra R A
inst✝⁶ : Module A M'
inst✝⁵ : IsLocalization S A
inst✝⁴ : Module R M
inst✝³ : Module R M'
inst✝² : Module R M''
inst✝¹ : IsScalarTower R A M'
f : M →ₗ[R] M'
g : M →ₗ[R] M''
inst✝ : IsLocalizedModule S f
m : M
s : ↥S
m' : M'
⊢ mk' f m s = m' ↔ f m = s • m'
state_after: no goals
tactic: rw [← smul_inj f s, Submonoid.smul_def, ← mk'_smul, ← Submonoid.smul_def, mk'_cancel]
Theorem: List.mem_sublists
File: Mathlib/Data/List/Sublists.lean

Proof steps:
state_before: α : Type u
β : Type v
γ : Type w
s t : List α
⊢ s ∈ t.sublists ↔ s <+ t
state_after: no goals
tactic: rw [← reverse_sublist, ← mem_sublists', sublists'_reverse,
    mem_map_of_injective reverse_injective]
Theorem: IsFractionRing.isAlgebraic_iff'
File: Mathlib/RingTheory/Localization/Integral.lean

Proof steps:
state_before: R : Type u_1
inst✝¹³ : CommRing R
M : Submonoid R
S : Type u_2
inst✝¹² : CommRing S
inst✝¹¹ : Algebra R S
P : Type u_3
inst✝¹⁰ : CommRing P
A : Type u_4
K : Type u_5
inst✝⁹ : CommRing A
inst✝⁸ : IsDomain A
inst✝⁷ : Field K
inst✝⁶ : IsDomain R
inst✝⁵ : IsDomain S
inst✝⁴ : Algebra R K
inst✝³ : Algebra S K
inst✝² : NoZeroSMulDivisors R K
inst✝¹ : IsFractionRing S K
inst✝ : IsScalarTower R S K
⊢ Algebra.IsAlgebraic R S ↔ Algebra.IsAlgebraic R K
state_after: R : Type u_1
inst✝¹³ : CommRing R
M : Submonoid R
S : Type u_2
inst✝¹² : CommRing S
inst✝¹¹ : Algebra R S
P : Type u_3
inst✝¹⁰ : CommRing P
A : Type u_4
K : Type u_5
inst✝⁹ : CommRing A
inst✝⁸ : IsDomain A
inst✝⁷ : Field K
inst✝⁶ : IsDomain R
inst✝⁵ : IsDomain S
inst✝⁴ : Algebra R K
inst✝³ : Algebra S K
inst✝² : NoZeroSMulDivisors R K
inst✝¹ : IsFractionRing S K
inst✝ : IsScalarTower R S K
⊢ (∀ (x : S), IsAlgebraic R x) ↔ ∀ (x : K), IsAlgebraic R x
tactic: simp only [Algebra.isAlgebraic_def]
state_before: R : Type u_1
inst✝¹³ : CommRing R
M : Submonoid R
S : Type u_2
inst✝¹² : CommRing S
inst✝¹¹ : Algebra R S
P : Type u_3
inst✝¹⁰ : CommRing P
A : Type u_4
K : Type u_5
inst✝⁹ : CommRing A
inst✝⁸ : IsDomain A
inst✝⁷ : Field K
inst✝⁶ : IsDomain R
inst✝⁵ : IsDomain S
inst✝⁴ : Algebra R K
inst✝³ : Algebra S K
inst✝² : NoZeroSMulDivisors R K
inst✝¹ : IsFractionRing S K
inst✝ : IsScalarTower R S K
⊢ (∀ (x : S), IsAlgebraic R x) ↔ ∀ (x : K), IsAlgebraic R x
state_after: case mp
R : Type u_1
inst✝¹³ : CommRing R
M : Submonoid R
S : Type u_2
inst✝¹² : CommRing S
inst✝¹¹ : Algebra R S
P : Type u_3
inst✝¹⁰ : CommRing P
A : Type u_4
K : Type u_5
inst✝⁹ : CommRing A
inst✝⁸ : IsDomain A
inst✝⁷ : Field K
inst✝⁶ : IsDomain R
inst✝⁵ : IsDomain S
inst✝⁴ : Algebra R K
inst✝³ : Algebra S K
inst✝² : NoZeroSMulDivisors R K
inst✝¹ : IsFractionRing S K
inst✝ : IsScalarTower R S K
⊢ (∀ (x : S), IsAlgebraic R x) → ∀ (x : K), IsAlgebraic R x

case mpr
R : Type u_1
inst✝¹³ : CommRing R
M : Submonoid R
S : Type u_2
inst✝¹² : CommRing S
inst✝¹¹ : Algebra R S
P : Type u_3
inst✝¹⁰ : CommRing P
A : Type u_4
K : Type u_5
inst✝⁹ : CommRing A
inst✝⁸ : IsDomain A
inst✝⁷ : Field K
inst✝⁶ : IsDomain R
inst✝⁵ : IsDomain S
inst✝⁴ : Algebra R K
inst✝³ : Algebra S K
inst✝² : NoZeroSMulDivisors R K
inst✝¹ : IsFractionRing S K
inst✝ : IsScalarTower R S K
⊢ (∀ (x : K), IsAlgebraic R x) → ∀ (x : S), IsAlgebraic R x
tactic: constructor
Theorem: lt_smul_iff_one_lt_left
File: Mathlib/Algebra/Order/Module/Defs.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
a a₁ a₂ : α
b b₁ b₂ : β
inst✝⁷ : Monoid α
inst✝⁶ : Zero α
inst✝⁵ : Zero β
inst✝⁴ : MulAction α β
inst✝³ : Preorder α
inst✝² : Preorder β
inst✝¹ : SMulPosStrictMono α β
inst✝ : SMulPosReflectLT α β
hb : 0 < b
⊢ b < a • b ↔ 1 • b < a • b
state_after: no goals
tactic: rw [one_smul]
Theorem: Rat.divInt_mul_right
File: .lake/packages/batteries/Batteries/Data/Rat/Lemmas.lean

Proof steps:
state_before: n d a : Int
a0 : a ≠ 0
⊢ n * a /. (d * a) = n /. d
state_after: no goals
tactic: simp [← divInt_mul_left (d := d) a0, Int.mul_comm]
Theorem: SymplecticGroup.mem_iff'
File: Mathlib/LinearAlgebra/SymplecticGroup.lean

Proof steps:
state_before: l : Type u_1
R : Type u_2
inst✝² : DecidableEq l
inst✝¹ : Fintype l
inst✝ : CommRing R
A : Matrix (l ⊕ l) (l ⊕ l) R
⊢ A ∈ symplecticGroup l R ↔ Aᵀ * J l R * A = J l R
state_after: no goals
tactic: rw [← transpose_mem_iff, mem_iff, transpose_transpose]
Theorem: List.new_def_eq_old_def
File: Mathlib/Data/List/Indexes.lean

Proof steps:
state_before: α : Type u
β : Type v
⊢ ∀ (f : ℕ → α → β) (l : List α), mapIdx f l = List.oldMapIdx f l
state_after: α : Type u
β : Type v
f : ℕ → α → β
⊢ ∀ (l : List α), mapIdx f l = List.oldMapIdx f l
tactic: intro f
state_before: α : Type u
β : Type v
f : ℕ → α → β
⊢ ∀ (l : List α), mapIdx f l = List.oldMapIdx f l
state_after: case base
α : Type u
β : Type v
f : ℕ → α → β
⊢ mapIdx f [] = List.oldMapIdx f []

case ind
α : Type u
β : Type v
f : ℕ → α → β
⊢ ∀ (l : List α) (e : α), mapIdx f l = List.oldMapIdx f l → mapIdx f (l ++ [e]) = List.oldMapIdx f (l ++ [e])
tactic: apply list_reverse_induction
Theorem: Real.sqrt_div
File: Mathlib/Data/Real/Sqrt.lean

Proof steps:
state_before: x✝ y✝ x : ℝ
hx : 0 ≤ x
y : ℝ
⊢ √(x / y) = √x / √y
state_after: no goals
tactic: rw [division_def, sqrt_mul hx, sqrt_inv, division_def]
Theorem: Matrix.trace_mul_cycle'
File: Mathlib/LinearAlgebra/Matrix/Trace.lean

Proof steps:
state_before: ι : Type u_1
m : Type u_2
n : Type u_3
p : Type u_4
α : Type u_5
R : Type u_6
S : Type u_7
inst✝³ : Fintype m
inst✝² : Fintype n
inst✝¹ : Fintype p
inst✝ : NonUnitalCommSemiring R
A : Matrix m n R
B : Matrix n p R
C : Matrix p m R
⊢ (A * (B * C)).trace = (C * (A * B)).trace
state_after: no goals
tactic: rw [← Matrix.mul_assoc, trace_mul_comm]
Theorem: Polynomial.dvd_pow_natDegree_of_eval₂_eq_zero
File: Mathlib/RingTheory/Polynomial/Eisenstein/Basic.lean

Proof steps:
state_before: R : Type u
A : Type u_1
inst✝¹ : CommRing R
inst✝ : CommRing A
f : R →+* A
hf : Function.Injective ⇑f
p : R[X]
hp : p.Monic
x y : R
z : A
h : eval₂ f z p = 0
hz : f x * z = f y
⊢ x ∣ y ^ p.natDegree
state_after: R : Type u
A : Type u_1
inst✝¹ : CommRing R
inst✝ : CommRing A
f : R →+* A
hf : Function.Injective ⇑f
p : R[X]
hp : p.Monic
x y : R
z : A
h : eval₂ f z p = 0
hz : f x * z = f y
⊢ y ^ (p.scaleRoots x).natDegree ∈ span {x}
tactic: rw [← natDegree_scaleRoots p x, ← Ideal.mem_span_singleton]
state_before: R : Type u
A : Type u_1
inst✝¹ : CommRing R
inst✝ : CommRing A
f : R →+* A
hf : Function.Injective ⇑f
p : R[X]
hp : p.Monic
x y : R
z : A
h : eval₂ f z p = 0
hz : f x * z = f y
⊢ y ^ (p.scaleRoots x).natDegree ∈ span {x}
state_after: R : Type u
A : Type u_1
inst✝¹ : CommRing R
inst✝ : CommRing A
f : R →+* A
hf : Function.Injective ⇑f
p : R[X]
hp : p.Monic
x y : R
z : A
h : eval₂ f z p = 0
hz : f x * z = f y
⊢ (p.scaleRoots x).IsRoot y
tactic: refine
    (scaleRoots.isWeaklyEisensteinAt _
          (Ideal.mem_span_singleton.mpr <| dvd_refl x)).pow_natDegree_le_of_root_of_monic_mem
      ?_ ((monic_scaleRoots_iff x).mpr hp) _ le_rfl
state_before: R : Type u
A : Type u_1
inst✝¹ : CommRing R
inst✝ : CommRing A
f : R →+* A
hf : Function.Injective ⇑f
p : R[X]
hp : p.Monic
x y : R
z : A
h : eval₂ f z p = 0
hz : f x * z = f y
⊢ (p.scaleRoots x).IsRoot y
state_after: R : Type u
A : Type u_1
inst✝¹ : CommRing R
inst✝ : CommRing A
f : R →+* A
hf : ∀ (a : R), f a = 0 ↔ a = 0
p : R[X]
hp : p.Monic
x y : R
z : A
h : eval₂ f z p = 0
hz : f x * z = f y
⊢ (p.scaleRoots x).IsRoot y
tactic: rw [injective_iff_map_eq_zero'] at hf
state_before: R : Type u
A : Type u_1
inst✝¹ : CommRing R
inst✝ : CommRing A
f : R →+* A
hf : ∀ (a : R), f a = 0 ↔ a = 0
p : R[X]
hp : p.Monic
x y : R
z : A
h : eval₂ f z p = 0
hz : f x * z = f y
⊢ (p.scaleRoots x).IsRoot y
state_after: R : Type u
A : Type u_1
inst✝¹ : CommRing R
inst✝ : CommRing A
f : R →+* A
hf : ∀ (a : R), f a = 0 ↔ a = 0
p : R[X]
hp : p.Monic
x y : R
z : A
h : eval₂ f z p = 0
hz : f x * z = f y
this : eval₂ f (f x * z) (p.scaleRoots x) = 0
⊢ (p.scaleRoots x).IsRoot y
tactic: have : eval₂ f _ (p.scaleRoots x) = 0 := scaleRoots_eval₂_eq_zero f h
state_before: R : Type u
A : Type u_1
inst✝¹ : CommRing R
inst✝ : CommRing A
f : R →+* A
hf : ∀ (a : R), f a = 0 ↔ a = 0
p : R[X]
hp : p.Monic
x y : R
z : A
h : eval₂ f z p = 0
hz : f x * z = f y
this : eval₂ f (f x * z) (p.scaleRoots x) = 0
⊢ (p.scaleRoots x).IsRoot y
state_after: no goals
tactic: rwa [hz, Polynomial.eval₂_at_apply, hf] at this
Theorem: hnot_hnot_sup_distrib
File: Mathlib/Order/Heyting/Basic.lean

Proof steps:
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
inst✝ : CoheytingAlgebra α
a✝ b✝ c a b : α
⊢ ￢￢(a ⊔ b) = ￢￢a ⊔ ￢￢b
state_after: ι : Type u_1
α : Type u_2
β : Type u_3
inst✝ : CoheytingAlgebra α
a✝ b✝ c a b : α
⊢ ￢￢(a ⊔ b) ≤ ￢￢a ⊔ ￢￢b
tactic: refine ((hnot_inf_distrib _ _).ge.trans <| hnot_anti le_hnot_inf_hnot).antisymm' ?_
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
inst✝ : CoheytingAlgebra α
a✝ b✝ c a b : α
⊢ ￢￢(a ⊔ b) ≤ ￢￢a ⊔ ￢￢b
state_after: ι : Type u_1
α : Type u_2
β : Type u_3
inst✝ : CoheytingAlgebra α
a✝ b✝ c a b : α
⊢ Codisjoint (a ⊔ b) (￢(a ⊔ b))
tactic: rw [hnot_le_iff_codisjoint_left, codisjoint_assoc, codisjoint_hnot_hnot_left_iff,
    codisjoint_left_comm, codisjoint_hnot_hnot_left_iff, ← codisjoint_assoc, sup_comm]
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
inst✝ : CoheytingAlgebra α
a✝ b✝ c a b : α
⊢ Codisjoint (a ⊔ b) (￢(a ⊔ b))
state_after: no goals
tactic: exact codisjoint_hnot_right
Theorem: rpow_mul_exp_neg_mul_rpow_isLittleO_exp_neg
File: Mathlib/Analysis/SpecialFunctions/Gaussian/GaussianIntegral.lean

Proof steps:
state_before: s b p : ℝ
hp : 1 < p
hb : 0 < b
⊢ (fun x => x ^ s * rexp (-b * x ^ p)) =o[atTop] fun x => rexp (-(1 / 2) * x)
state_after: s b p : ℝ
hp : 1 < p
hb : 0 < b
⊢ (fun x => x ^ s * rexp (-x)) =o[atTop] fun x => rexp (-(1 / 2) * x)
tactic: apply ((isBigO_refl (fun x : ℝ => x ^ s) atTop).mul_isLittleO
      (exp_neg_mul_rpow_isLittleO_exp_neg hb hp)).trans
state_before: s b p : ℝ
hp : 1 < p
hb : 0 < b
⊢ (fun x => x ^ s * rexp (-x)) =o[atTop] fun x => rexp (-(1 / 2) * x)
state_after: no goals
tactic: simpa only [mul_comm] using Real.Gamma_integrand_isLittleO s
Theorem: FixedPoints.minpoly.ne_one
File: Mathlib/FieldTheory/Fixed.lean

Proof steps:
state_before: M : Type u
inst✝⁵ : Monoid M
G : Type u
inst✝⁴ : Group G
F : Type v
inst✝³ : Field F
inst✝² : MulSemiringAction M F
inst✝¹ : MulSemiringAction G F
m : M
inst✝ : Fintype G
x : F
H : minpoly G F x = 1
this : Polynomial.eval₂ (subfield G F).subtype x (minpoly G F x) = 0
⊢ 1 = 0
state_after: no goals
tactic: rwa [H, Polynomial.eval₂_one] at this
Theorem: CategoryTheory.Limits.WalkingParallelPairHom.id.sizeOf_spec'
File: Mathlib/CategoryTheory/Limits/Shapes/Equalizers.lean

Proof steps:
state_before: X : WalkingParallelPair
⊢ sizeOf (𝟙 X) = 1 + sizeOf X
state_after: no goals
tactic: cases X <;> rfl
Theorem: CategoryTheory.sheafificationAdjunction_counit_app_val
File: Mathlib/CategoryTheory/Sites/Sheafification.lean

Proof steps:
state_before: C : Type u₁
inst✝³ : Category.{v₁, u₁} C
J : GrothendieckTopology C
A : Type u₂
inst✝² : Category.{v₂, u₂} A
D : Type u_1
inst✝¹ : Category.{u_2, u_1} D
inst✝ : HasWeakSheafify J D
P : Sheaf J D
⊢ ((sheafificationAdjunction J D).counit.app P).val = sheafifyLift J (𝟙 P.val) ⋯
state_after: C : Type u₁
inst✝³ : Category.{v₁, u₁} C
J : GrothendieckTopology C
A : Type u₂
inst✝² : Category.{v₂, u₂} A
D : Type u_1
inst✝¹ : Category.{u_2, u_1} D
inst✝ : HasWeakSheafify J D
P : Sheaf J D
⊢ ((sheafificationAdjunction J D).counit.app P).val =
    (((sheafificationAdjunction J D).homEquiv P.val { val := P.val, cond := ⋯ }).symm (𝟙 P.val)).val
tactic: unfold sheafifyLift
state_before: C : Type u₁
inst✝³ : Category.{v₁, u₁} C
J : GrothendieckTopology C
A : Type u₂
inst✝² : Category.{v₂, u₂} A
D : Type u_1
inst✝¹ : Category.{u_2, u_1} D
inst✝ : HasWeakSheafify J D
P : Sheaf J D
⊢ ((sheafificationAdjunction J D).counit.app P).val =
    (((sheafificationAdjunction J D).homEquiv P.val { val := P.val, cond := ⋯ }).symm (𝟙 P.val)).val
state_after: C : Type u₁
inst✝³ : Category.{v₁, u₁} C
J : GrothendieckTopology C
A : Type u₂
inst✝² : Category.{v₂, u₂} A
D : Type u_1
inst✝¹ : Category.{u_2, u_1} D
inst✝ : HasWeakSheafify J D
P : Sheaf J D
⊢ ((sheafificationAdjunction J D).counit.app P).val =
    ((presheafToSheaf J D).map (𝟙 P.val) ≫ (sheafificationAdjunction J D).counit.app { val := P.val, cond := ⋯ }).val
tactic: rw [Adjunction.homEquiv_counit]
state_before: C : Type u₁
inst✝³ : Category.{v₁, u₁} C
J : GrothendieckTopology C
A : Type u₂
inst✝² : Category.{v₂, u₂} A
D : Type u_1
inst✝¹ : Category.{u_2, u_1} D
inst✝ : HasWeakSheafify J D
P : Sheaf J D
⊢ ((sheafificationAdjunction J D).counit.app P).val =
    ((presheafToSheaf J D).map (𝟙 P.val) ≫ (sheafificationAdjunction J D).counit.app { val := P.val, cond := ⋯ }).val
state_after: no goals
tactic: simp
Theorem: PiTensorProduct.mapLMultilinear_toFun_toFun
File: Mathlib/Analysis/NormedSpace/PiTensorProduct/InjectiveSeminorm.lean

Proof steps:
state_before: ι : Type uι
inst✝⁹ : Fintype ι
𝕜 : Type u𝕜
inst✝⁸ : NontriviallyNormedField 𝕜
E : ι → Type uE
inst✝⁷ : (i : ι) → SeminormedAddCommGroup (E i)
inst✝⁶ : (i : ι) → NormedSpace 𝕜 (E i)
F : Type uF
inst✝⁵ : SeminormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
E' : ι → Type u_1
E'' : ι → Type u_2
inst✝³ : (i : ι) → SeminormedAddCommGroup (E' i)
inst✝² : (i : ι) → NormedSpace 𝕜 (E' i)
inst✝¹ : (i : ι) → SeminormedAddCommGroup (E'' i)
inst✝ : (i : ι) → NormedSpace 𝕜 (E'' i)
g : (i : ι) → E' i →L[𝕜] E'' i
f✝ f : (i : ι) → E i →L[𝕜] E' i
⊢ ‖{ toFun := mapL, map_add' := ⋯, map_smul' := ⋯ } f‖ ≤ 1 * ∏ i : ι, ‖f i‖
state_after: ι : Type uι
inst✝⁹ : Fintype ι
𝕜 : Type u𝕜
inst✝⁸ : NontriviallyNormedField 𝕜
E : ι → Type uE
inst✝⁷ : (i : ι) → SeminormedAddCommGroup (E i)
inst✝⁶ : (i : ι) → NormedSpace 𝕜 (E i)
F : Type uF
inst✝⁵ : SeminormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
E' : ι → Type u_1
E'' : ι → Type u_2
inst✝³ : (i : ι) → SeminormedAddCommGroup (E' i)
inst✝² : (i : ι) → NormedSpace 𝕜 (E' i)
inst✝¹ : (i : ι) → SeminormedAddCommGroup (E'' i)
inst✝ : (i : ι) → NormedSpace 𝕜 (E'' i)
g : (i : ι) → E' i →L[𝕜] E'' i
f✝ f : (i : ι) → E i →L[𝕜] E' i
⊢ ‖{ toFun := mapL, map_add' := ⋯, map_smul' := ⋯ } f‖ ≤ ∏ i : ι, ‖f i‖
tactic: rw [one_mul]
state_before: ι : Type uι
inst✝⁹ : Fintype ι
𝕜 : Type u𝕜
inst✝⁸ : NontriviallyNormedField 𝕜
E : ι → Type uE
inst✝⁷ : (i : ι) → SeminormedAddCommGroup (E i)
inst✝⁶ : (i : ι) → NormedSpace 𝕜 (E i)
F : Type uF
inst✝⁵ : SeminormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
E' : ι → Type u_1
E'' : ι → Type u_2
inst✝³ : (i : ι) → SeminormedAddCommGroup (E' i)
inst✝² : (i : ι) → NormedSpace 𝕜 (E' i)
inst✝¹ : (i : ι) → SeminormedAddCommGroup (E'' i)
inst✝ : (i : ι) → NormedSpace 𝕜 (E'' i)
g : (i : ι) → E' i →L[𝕜] E'' i
f✝ f : (i : ι) → E i →L[𝕜] E' i
⊢ ‖{ toFun := mapL, map_add' := ⋯, map_smul' := ⋯ } f‖ ≤ ∏ i : ι, ‖f i‖
state_after: no goals
tactic: exact mapL_opNorm f
Theorem: CategoryTheory.Abelian.isIso_of_epi_of_isIso_of_isIso_of_mono
File: Mathlib/CategoryTheory/Abelian/DiagramLemmas/Four.lean

Proof steps:
state_before: C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : Abelian C
R₁ R₂ : ComposableArrows C 4
hR₁ : R₁.Exact
hR₂ : R₂.Exact
φ : R₁ ⟶ R₂
h₀ : Epi (app' φ 0 ⋯)
h₁ : IsIso (app' φ 1 ⋯)
h₂ : IsIso (app' φ 3 ⋯)
h₃ : Mono (app' φ 4 ⋯)
⊢ IsIso (app' φ 2 ⋯)
state_after: C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : Abelian C
R₁ R₂ : ComposableArrows C 4
hR₁ : R₁.Exact
hR₂ : R₂.Exact
φ : R₁ ⟶ R₂
h₀ : Epi (φ.app 0)
h₁ : IsIso (φ.app 1)
h₂ : IsIso (φ.app ⟨3, ⋯⟩)
h₃ : Mono (φ.app ⟨4, ⋯⟩)
⊢ IsIso (app' φ 2 ⋯)
tactic: dsimp at h₀ h₁ h₂ h₃
state_before: C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : Abelian C
R₁ R₂ : ComposableArrows C 4
hR₁ : R₁.Exact
hR₂ : R₂.Exact
φ : R₁ ⟶ R₂
h₀ : Epi (φ.app 0)
h₁ : IsIso (φ.app 1)
h₂ : IsIso (φ.app ⟨3, ⋯⟩)
h₃ : Mono (φ.app ⟨4, ⋯⟩)
⊢ IsIso (app' φ 2 ⋯)
state_after: C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : Abelian C
R₁ R₂ : ComposableArrows C 4
hR₁ : R₁.Exact
hR₂ : R₂.Exact
φ : R₁ ⟶ R₂
h₀ : Epi (φ.app 0)
h₁ : IsIso (φ.app 1)
h₂ : IsIso (φ.app ⟨3, ⋯⟩)
h₃ : Mono (φ.app ⟨4, ⋯⟩)
this : Mono (app' φ 2 ⋯)
⊢ IsIso (app' φ 2 ⋯)
tactic: have : Mono (app' φ 2) := by
    apply mono_of_epi_of_mono_of_mono (δlastFunctor.map φ) (R₁.exact_iff_δlast.1 hR₁).1
      (R₂.exact_iff_δlast.1 hR₂).1 <;> dsimp <;> infer_instance
state_before: C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : Abelian C
R₁ R₂ : ComposableArrows C 4
hR₁ : R₁.Exact
hR₂ : R₂.Exact
φ : R₁ ⟶ R₂
h₀ : Epi (φ.app 0)
h₁ : IsIso (φ.app 1)
h₂ : IsIso (φ.app ⟨3, ⋯⟩)
h₃ : Mono (φ.app ⟨4, ⋯⟩)
this : Mono (app' φ 2 ⋯)
⊢ IsIso (app' φ 2 ⋯)
state_after: C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : Abelian C
R₁ R₂ : ComposableArrows C 4
hR₁ : R₁.Exact
hR₂ : R₂.Exact
φ : R₁ ⟶ R₂
h₀ : Epi (φ.app 0)
h₁ : IsIso (φ.app 1)
h₂ : IsIso (φ.app ⟨3, ⋯⟩)
h₃ : Mono (φ.app ⟨4, ⋯⟩)
this✝ : Mono (app' φ 2 ⋯)
this : Epi (app' φ 2 ⋯)
⊢ IsIso (app' φ 2 ⋯)
tactic: have : Epi (app' φ 2) := by
    apply epi_of_epi_of_epi_of_mono (δ₀Functor.map φ) (R₁.exact_iff_δ₀.1 hR₁).2
      (R₂.exact_iff_δ₀.1 hR₂).2 <;> dsimp <;> infer_instance
state_before: C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : Abelian C
R₁ R₂ : ComposableArrows C 4
hR₁ : R₁.Exact
hR₂ : R₂.Exact
φ : R₁ ⟶ R₂
h₀ : Epi (φ.app 0)
h₁ : IsIso (φ.app 1)
h₂ : IsIso (φ.app ⟨3, ⋯⟩)
h₃ : Mono (φ.app ⟨4, ⋯⟩)
this✝ : Mono (app' φ 2 ⋯)
this : Epi (app' φ 2 ⋯)
⊢ IsIso (app' φ 2 ⋯)
state_after: no goals
tactic: apply isIso_of_mono_of_epi
Theorem: Subgroup.comap_sup_eq_of_le_range
File: Mathlib/Algebra/Group/Subgroup/Basic.lean

Proof steps:
state_before: G : Type u_1
G' : Type u_2
G'' : Type u_3
inst✝⁴ : Group G
inst✝³ : Group G'
inst✝² : Group G''
A : Type u_4
inst✝¹ : AddGroup A
N : Type u_5
inst✝ : Group N
f : G →* N
H K : Subgroup N
hH : H ≤ f.range
hK : K ≤ f.range
⊢ map f (comap f H ⊔ comap f K) = map f (comap f (H ⊔ K))
state_after: no goals
tactic: rw [map_comap_eq, map_sup, map_comap_eq, map_comap_eq, inf_eq_right.mpr hH,
        inf_eq_right.mpr hK, inf_eq_right.mpr (sup_le hH hK)]
Theorem: CategoryTheory.PreGaloisCategory.exists_autMap
File: Mathlib/CategoryTheory/Galois/GaloisObjects.lean

Proof steps:
state_before: C : Type u₁
inst✝⁴ : Category.{u₂, u₁} C
inst✝³ : GaloisCategory C
F : C ⥤ FintypeCat
inst✝² : FiberFunctor F
A B : C
f : A ⟶ B
inst✝¹ : IsConnected A
inst✝ : IsGalois B
σ : Aut A
⊢ ∃! τ, f ≫ τ.hom = σ.hom ≫ f
state_after: C : Type u₁
inst✝⁴ : Category.{u₂, u₁} C
inst✝³ : GaloisCategory C
F✝ : C ⥤ FintypeCat
inst✝² : FiberFunctor F✝
A B : C
f : A ⟶ B
inst✝¹ : IsConnected A
inst✝ : IsGalois B
σ : Aut A
F : C ⥤ FintypeCat := GaloisCategory.getFiberFunctor C
⊢ ∃! τ, f ≫ τ.hom = σ.hom ≫ f
tactic: let F := GaloisCategory.getFiberFunctor C
state_before: C : Type u₁
inst✝⁴ : Category.{u₂, u₁} C
inst✝³ : GaloisCategory C
F✝ : C ⥤ FintypeCat
inst✝² : FiberFunctor F✝
A B : C
f : A ⟶ B
inst✝¹ : IsConnected A
inst✝ : IsGalois B
σ : Aut A
F : C ⥤ FintypeCat := GaloisCategory.getFiberFunctor C
⊢ ∃! τ, f ≫ τ.hom = σ.hom ≫ f
state_after: case intro
C : Type u₁
inst✝⁴ : Category.{u₂, u₁} C
inst✝³ : GaloisCategory C
F✝ : C ⥤ FintypeCat
inst✝² : FiberFunctor F✝
A B : C
f : A ⟶ B
inst✝¹ : IsConnected A
inst✝ : IsGalois B
σ : Aut A
F : C ⥤ FintypeCat := GaloisCategory.getFiberFunctor C
a : ↑(F.obj A)
⊢ ∃! τ, f ≫ τ.hom = σ.hom ≫ f
tactic: obtain ⟨a⟩ := nonempty_fiber_of_isConnected F A
state_before: case intro
C : Type u₁
inst✝⁴ : Category.{u₂, u₁} C
inst✝³ : GaloisCategory C
F✝ : C ⥤ FintypeCat
inst✝² : FiberFunctor F✝
A B : C
f : A ⟶ B
inst✝¹ : IsConnected A
inst✝ : IsGalois B
σ : Aut A
F : C ⥤ FintypeCat := GaloisCategory.getFiberFunctor C
a : ↑(F.obj A)
⊢ ∃! τ, f ≫ τ.hom = σ.hom ≫ f
state_after: case intro.refine_1
C : Type u₁
inst✝⁴ : Category.{u₂, u₁} C
inst✝³ : GaloisCategory C
F✝ : C ⥤ FintypeCat
inst✝² : FiberFunctor F✝
A B : C
f : A ⟶ B
inst✝¹ : IsConnected A
inst✝ : IsGalois B
σ : Aut A
F : C ⥤ FintypeCat := GaloisCategory.getFiberFunctor C
a : ↑(F.obj A)
⊢ Aut B

case intro.refine_2
C : Type u₁
inst✝⁴ : Category.{u₂, u₁} C
inst✝³ : GaloisCategory C
F✝ : C ⥤ FintypeCat
inst✝² : FiberFunctor F✝
A B : C
f : A ⟶ B
inst✝¹ : IsConnected A
inst✝ : IsGalois B
σ : Aut A
F : C ⥤ FintypeCat := GaloisCategory.getFiberFunctor C
a : ↑(F.obj A)
⊢ (fun τ => f ≫ τ.hom = σ.hom ≫ f) ?intro.refine_1

case intro.refine_3
C : Type u₁
inst✝⁴ : Category.{u₂, u₁} C
inst✝³ : GaloisCategory C
F✝ : C ⥤ FintypeCat
inst✝² : FiberFunctor F✝
A B : C
f : A ⟶ B
inst✝¹ : IsConnected A
inst✝ : IsGalois B
σ : Aut A
F : C ⥤ FintypeCat := GaloisCategory.getFiberFunctor C
a : ↑(F.obj A)
⊢ ∀ (y : Aut B), (fun τ => f ≫ τ.hom = σ.hom ≫ f) y → y = ?intro.refine_1
tactic: refine ⟨?_, ?_, ?_⟩
Theorem: Nat.factors_lemma
File: Mathlib/Data/Nat/Prime/Defs.lean

Proof steps:
state_before: n k : ℕ
⊢ k + 2 ≠ 1
state_after: case h
n k : ℕ
⊢ 1 < k + 2
tactic: apply Nat.ne_of_gt
state_before: case h
n k : ℕ
⊢ 1 < k + 2
state_after: case h.a
n k : ℕ
⊢ 0 < k + 1
tactic: apply Nat.succ_lt_succ
state_before: case h.a
n k : ℕ
⊢ 0 < k + 1
state_after: no goals
tactic: apply Nat.zero_lt_succ
Theorem: AlgebraicGeometry.LocallyRingedSpace.homOfSheafedSpaceHomOfIsIso_val
File: Mathlib/Geometry/RingedSpace/LocallyRingedSpace.lean

Proof steps:
state_before: X✝ X Y : LocallyRingedSpace
f : X.toSheafedSpace ⟶ Y.toSheafedSpace
inst✝ : IsIso f
x : ↑↑X.toPresheafedSpace
⊢ IsLocalRingHom (PresheafedSpace.Hom.stalkMap (SheafedSpace.forgetToPresheafedSpace.map f) x)
state_after: no goals
tactic: infer_instance