1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: CategoryTheory.reflects_mono_of_reflectsLimit
File: Mathlib/CategoryTheory/Limits/Constructions/EpiMono.lean

tactic: have := PullbackCone.isLimitMkIdId (F.map f)
state_before: C : Type u₁
D : Type u₂
inst✝³ : Category.{v₁, u₁} C
inst✝² : Category.{v₂, u₂} D
F : C ⥤ D
X Y : C
f : X ⟶ Y
inst✝¹ : ReflectsLimit (cospan f f) F
inst✝ : Mono (F.map f)
⊢ Mono f
state_after: C : Type u₁
D : Type u₂
inst✝³ : Category.{v₁, u₁} C
inst✝² : Category.{v₂, u₂} D
F : C ⥤ D
X Y : C
f : X ⟶ Y
inst✝¹ : ReflectsLimit (cospan f f) F
inst✝ : Mono (F.map f)
this : IsLimit (PullbackCone.mk (𝟙 (F.obj X)) (𝟙 (F.obj X)) ⋯)
⊢ Mono f

tactic: simp_rw [← F.map_id] at this
state_before: C : Type u₁
D : Type u₂
inst✝³ : Category.{v₁, u₁} C
inst✝² : Category.{v₂, u₂} D
F : C ⥤ D
X Y : C
f : X ⟶ Y
inst✝¹ : ReflectsLimit (cospan f f) F
inst✝ : Mono (F.map f)
this : IsLimit (PullbackCone.mk (𝟙 (F.obj X)) (𝟙 (F.obj X)) ⋯)
⊢ Mono f
state_after: C : Type u₁
D : Type u₂
inst✝³ : Category.{v₁, u₁} C
inst✝² : Category.{v₂, u₂} D
F : C ⥤ D
X Y : C
f : X ⟶ Y
inst✝¹ : ReflectsLimit (cospan f f) F
inst✝ : Mono (F.map f)
this : IsLimit (PullbackCone.mk (F.map (𝟙 X)) (F.map (𝟙 X)) ⋯)
⊢ Mono f

tactic: apply PullbackCone.mono_of_isLimitMkIdId _ (isLimitOfIsLimitPullbackConeMap F _ this)
state_before: C : Type u₁
D : Type u₂
inst✝³ : Category.{v₁, u₁} C
inst✝² : Category.{v₂, u₂} D
F : C ⥤ D
X Y : C
f : X ⟶ Y
inst✝¹ : ReflectsLimit (cospan f f) F
inst✝ : Mono (F.map f)
this : IsLimit (PullbackCone.mk (F.map (𝟙 X)) (F.map (𝟙 X)) ⋯)
⊢ Mono f
state_after: no goals
Theorem: MulAction.mem_orbit_symm
File: Mathlib/GroupTheory/GroupAction/Basic.lean

tactic: simp_rw [← orbit_eq_iff, eq_comm]
state_before: G : Type u_1
α : Type u_2
β : Type u_3
inst✝² : Group G
inst✝¹ : MulAction G α
inst✝ : MulAction G β
a₁ a₂ : α
⊢ a₁ ∈ orbit G a₂ ↔ a₂ ∈ orbit G a₁
state_after: no goals
Theorem: Combinatorics.Line.map_apply
File: Mathlib/Combinatorics/HalesJewett.lean

tactic: simp only [Line.apply, Line.map, Option.getD_map]
state_before: α : Type u_1
α' : Type u_2
ι : Type u_3
f : α → α'
l : Line α ι
x : α
⊢ (fun x i => ((map f l).idxFun i).getD x) (f x) = f ∘ (fun x i => (l.idxFun i).getD x) x
state_after: α : Type u_1
α' : Type u_2
ι : Type u_3
f : α → α'
l : Line α ι
x : α
⊢ (fun i => f ((l.idxFun i).getD x)) = f ∘ fun i => (l.idxFun i).getD x

tactic: rfl
state_before: α : Type u_1
α' : Type u_2
ι : Type u_3
f : α → α'
l : Line α ι
x : α
⊢ (fun i => f ((l.idxFun i).getD x)) = f ∘ fun i => (l.idxFun i).getD x
state_after: no goals
Theorem: Polynomial.degree_mul_X_pow
File: Mathlib/Algebra/Polynomial/Degree/Definitions.lean

tactic: simp [(monic_X_pow n).degree_mul]
state_before: R : Type u
S : Type v
a b c d : R
n✝ m : ℕ
inst✝¹ : Semiring R
inst✝ : Nontrivial R
p q : R[X]
n : ℕ
⊢ (p * X ^ n).degree = p.degree + ↑n
state_after: no goals
Theorem: ULift.closedEmbedding_down
File: Mathlib/Topology/Constructions.lean

tactic: simp only [ULift.down_surjective.range_eq, isClosed_univ]
state_before: X : Type u
Y : Type v
Z : Type u_1
W : Type u_2
ε : Type u_3
ζ : Type u_4
inst✝ : TopologicalSpace X
⊢ IsClosed (range down)
state_after: no goals
Theorem: dist_homothety_self
File: Mathlib/Analysis/NormedSpace/AddTorsor.lean

tactic: rw [homothety_eq_lineMap, dist_lineMap_right]
state_before: α : Type u_1
V : Type u_2
P : Type u_3
W : Type u_4
Q : Type u_5
inst✝⁸ : SeminormedAddCommGroup V
inst✝⁷ : PseudoMetricSpace P
inst✝⁶ : NormedAddTorsor V P
inst✝⁵ : NormedAddCommGroup W
inst✝⁴ : MetricSpace Q
inst✝³ : NormedAddTorsor W Q
𝕜 : Type u_6
inst✝² : NormedField 𝕜
inst✝¹ : NormedSpace 𝕜 V
inst✝ : NormedSpace 𝕜 W
p₁ p₂ : P
c : 𝕜
⊢ dist ((homothety p₁ c) p₂) p₂ = ‖1 - c‖ * dist p₁ p₂
state_after: no goals
Theorem: isEllSequence_id
File: Mathlib/NumberTheory/EllipticDivisibilitySequence.lean

tactic: simp only [id_eq]
state_before: R : Type u
S : Type v
inst✝¹ : CommRing R
inst✝ : CommRing S
W : ℤ → R
f : R →+* S
x✝² x✝¹ x✝ : ℤ
⊢ id (x✝² + x✝¹) * id (x✝² - x✝¹) * id x✝ ^ 2 =
    id (x✝² + x✝) * id (x✝² - x✝) * id x✝¹ ^ 2 - id (x✝¹ + x✝) * id (x✝¹ - x✝) * id x✝² ^ 2
state_after: R : Type u
S : Type v
inst✝¹ : CommRing R
inst✝ : CommRing S
W : ℤ → R
f : R →+* S
x✝² x✝¹ x✝ : ℤ
⊢ (x✝² + x✝¹) * (x✝² - x✝¹) * x✝ ^ 2 = (x✝² + x✝) * (x✝² - x✝) * x✝¹ ^ 2 - (x✝¹ + x✝) * (x✝¹ - x✝) * x✝² ^ 2

tactic: ring1
state_before: R : Type u
S : Type v
inst✝¹ : CommRing R
inst✝ : CommRing S
W : ℤ → R
f : R →+* S
x✝² x✝¹ x✝ : ℤ
⊢ (x✝² + x✝¹) * (x✝² - x✝¹) * x✝ ^ 2 = (x✝² + x✝) * (x✝² - x✝) * x✝¹ ^ 2 - (x✝¹ + x✝) * (x✝¹ - x✝) * x✝² ^ 2
state_after: no goals
Theorem: CategoryTheory.ShortComplex.HomologyData.exact_iff
File: Mathlib/Algebra/Homology/ShortComplex/Exact.lean

tactic: haveI := HasHomology.mk' h
state_before: C : Type u_1
D : Type u_2
inst✝³ : Category.{u_3, u_1} C
inst✝² : Category.{?u.4045, u_2} D
inst✝¹ : HasZeroMorphisms C
inst✝ : HasZeroMorphisms D
S S₁ S₂ : ShortComplex C
h : S.HomologyData
⊢ S.Exact ↔ IsZero h.left.H
state_after: C : Type u_1
D : Type u_2
inst✝³ : Category.{u_3, u_1} C
inst✝² : Category.{?u.4045, u_2} D
inst✝¹ : HasZeroMorphisms C
inst✝ : HasZeroMorphisms D
S S₁ S₂ : ShortComplex C
h : S.HomologyData
this : S.HasHomology
⊢ S.Exact ↔ IsZero h.left.H

tactic: exact LeftHomologyData.exact_iff h.left
state_before: C : Type u_1
D : Type u_2
inst✝³ : Category.{u_3, u_1} C
inst✝² : Category.{?u.4045, u_2} D
inst✝¹ : HasZeroMorphisms C
inst✝ : HasZeroMorphisms D
S S₁ S₂ : ShortComplex C
h : S.HomologyData
this : S.HasHomology
⊢ S.Exact ↔ IsZero h.left.H
state_after: no goals
Theorem: Orientation.two_zsmul_oangle_smul_right_self
File: Mathlib/Geometry/Euclidean/Angle/Oriented/Basic.lean

tactic: rcases lt_or_le r 0 with (h | h) <;> simp [h]
state_before: V : Type u_1
V' : Type u_2
inst✝⁵ : NormedAddCommGroup V
inst✝⁴ : NormedAddCommGroup V'
inst✝³ : InnerProductSpace ℝ V
inst✝² : InnerProductSpace ℝ V'
inst✝¹ : Fact (finrank ℝ V = 2)
inst✝ : Fact (finrank ℝ V' = 2)
o : Orientation ℝ V (Fin 2)
x : V
r : ℝ
⊢ 2 • o.oangle x (r • x) = 0
state_after: no goals
Theorem: List.getElem?_indexOf
File: Mathlib/Data/List/Basic.lean

tactic: rw [getElem?_eq_getElem, getElem_indexOf (indexOf_lt_length.2 h)]
state_before: ι : Type u_1
α : Type u
β : Type v
γ : Type w
l₁ l₂ : List α
inst✝ : DecidableEq α
a : α
l : List α
h : a ∈ l
⊢ l[indexOf a l]? = some a
state_after: no goals
Theorem: List.destutter'_cons_pos
File: Mathlib/Data/List/Destutter.lean

tactic: rw [destutter', if_pos h]
state_before: α : Type u_1
l : List α
R : α → α → Prop
inst✝ : DecidableRel R
a b : α
h : R b a
⊢ destutter' R b (a :: l) = b :: destutter' R a l
state_after: no goals
Theorem: AlgebraicGeometry.ProjectiveSpectrum.Proj.toSpec_base_apply_eq_comap
File: Mathlib/AlgebraicGeometry/ProjectiveSpectrum/Scheme.lean

tactic: show PrimeSpectrum.comap (awayToΓ 𝒜 f ≫ LocallyRingedSpace.ΓToStalk (Proj| pbo f) x)
      (LocalRing.closedPoint ((Proj| pbo f).presheaf.stalk x)) = _
state_before: R : Type u_1
A : Type u_2
inst✝³ : CommRing R
inst✝² : CommRing A
inst✝¹ : Algebra R A
𝒜 : ℕ → Submodule R A
inst✝ : GradedAlgebra 𝒜
f : A
x : ↑(Proj.restrict ⋯).toTopCat
⊢ (toSpec 𝒜 f).val.base x = (PrimeSpectrum.comap (mapId 𝒜 ⋯)) (closedPoint (AtPrime 𝒜 (↑x).asHomogeneousIdeal.toIdeal))
state_after: R : Type u_1
A : Type u_2
inst✝³ : CommRing R
inst✝² : CommRing A
inst✝¹ : Algebra R A
𝒜 : ℕ → Submodule R A
inst✝ : GradedAlgebra 𝒜
f : A
x : ↑(Proj.restrict ⋯).toTopCat
⊢ (PrimeSpectrum.comap (awayToΓ 𝒜 f ≫ (Proj.restrict ⋯).ΓToStalk x))
      (closedPoint ↑((Proj.restrict ⋯).presheaf.stalk x)) =
    (PrimeSpectrum.comap (mapId 𝒜 ⋯)) (closedPoint (AtPrime 𝒜 (↑x).asHomogeneousIdeal.toIdeal))

tactic: rw [awayToΓ_ΓToStalk, CommRingCat.comp_eq_ring_hom_comp, PrimeSpectrum.comap_comp]
state_before: R : Type u_1
A : Type u_2
inst✝³ : CommRing R
inst✝² : CommRing A
inst✝¹ : Algebra R A
𝒜 : ℕ → Submodule R A
inst✝ : GradedAlgebra 𝒜
f : A
x : ↑(Proj.restrict ⋯).toTopCat
⊢ (PrimeSpectrum.comap (awayToΓ 𝒜 f ≫ (Proj.restrict ⋯).ΓToStalk x))
      (closedPoint ↑((Proj.restrict ⋯).presheaf.stalk x)) =
    (PrimeSpectrum.comap (mapId 𝒜 ⋯)) (closedPoint (AtPrime 𝒜 (↑x).asHomogeneousIdeal.toIdeal))
state_after: R : Type u_1
A : Type u_2
inst✝³ : CommRing R
inst✝² : CommRing A
inst✝¹ : Algebra R A
𝒜 : ℕ → Submodule R A
inst✝ : GradedAlgebra 𝒜
f : A
x : ↑(Proj.restrict ⋯).toTopCat
⊢ ((PrimeSpectrum.comap (mapId 𝒜 ⋯)).comp
        (PrimeSpectrum.comap ((Proj.stalkIso' 𝒜 ↑x).toCommRingCatIso.inv ≫ (Proj.restrictStalkIso ⋯ x).inv)))
      (closedPoint ↑((Proj.restrict ⋯).presheaf.stalk x)) =
    (PrimeSpectrum.comap (mapId 𝒜 ⋯)) (closedPoint (AtPrime 𝒜 (↑x).asHomogeneousIdeal.toIdeal))

tactic: exact congr(PrimeSpectrum.comap _ $(@LocalRing.comap_closedPoint
  (HomogeneousLocalization.AtPrime 𝒜 x.1.asHomogeneousIdeal.toIdeal) _ _
  ((Proj| pbo f).presheaf.stalk x) _ _ _ (isLocalRingHom_of_isIso _)))
state_before: R : Type u_1
A : Type u_2
inst✝³ : CommRing R
inst✝² : CommRing A
inst✝¹ : Algebra R A
𝒜 : ℕ → Submodule R A
inst✝ : GradedAlgebra 𝒜
f : A
x : ↑(Proj.restrict ⋯).toTopCat
⊢ ((PrimeSpectrum.comap (mapId 𝒜 ⋯)).comp
        (PrimeSpectrum.comap ((Proj.stalkIso' 𝒜 ↑x).toCommRingCatIso.inv ≫ (Proj.restrictStalkIso ⋯ x).inv)))
      (closedPoint ↑((Proj.restrict ⋯).presheaf.stalk x)) =
    (PrimeSpectrum.comap (mapId 𝒜 ⋯)) (closedPoint (AtPrime 𝒜 (↑x).asHomogeneousIdeal.toIdeal))
state_after: no goals
Theorem: Finset.Colex.forall_lt_mono
File: Mathlib/Combinatorics/Colex.lean

tactic: rintro b hb
state_before: α : Type u_1
β : Type u_2
inst✝¹ : PartialOrder α
inst✝ : PartialOrder β
f : α → β
𝒜 𝒜₁ 𝒜₂ : Finset (Finset α)
s t u : Finset α
a b : α
hst : { ofColex := s } ≤ { ofColex := t }
ht : ∀ b ∈ t, b < a
⊢ ∀ b ∈ s, b < a
state_after: α : Type u_1
β : Type u_2
inst✝¹ : PartialOrder α
inst✝ : PartialOrder β
f : α → β
𝒜 𝒜₁ 𝒜₂ : Finset (Finset α)
s t u : Finset α
a b✝ : α
hst : { ofColex := s } ≤ { ofColex := t }
ht : ∀ b ∈ t, b < a
b : α
hb : b ∈ s
⊢ b < a

tactic: by_cases b ∈ t
state_before: α : Type u_1
β : Type u_2
inst✝¹ : PartialOrder α
inst✝ : PartialOrder β
f : α → β
𝒜 𝒜₁ 𝒜₂ : Finset (Finset α)
s t u : Finset α
a b✝ : α
hst : { ofColex := s } ≤ { ofColex := t }
ht : ∀ b ∈ t, b < a
b : α
hb : b ∈ s
⊢ b < a
state_after: case pos
α : Type u_1
β : Type u_2
inst✝¹ : PartialOrder α
inst✝ : PartialOrder β
f : α → β
𝒜 𝒜₁ 𝒜₂ : Finset (Finset α)
s t u : Finset α
a b✝ : α
hst : { ofColex := s } ≤ { ofColex := t }
ht : ∀ b ∈ t, b < a
b : α
hb : b ∈ s
h✝ : b ∈ t
⊢ b < a

case neg
α : Type u_1
β : Type u_2
inst✝¹ : PartialOrder α
inst✝ : PartialOrder β
f : α → β
𝒜 𝒜₁ 𝒜₂ : Finset (Finset α)
s t u : Finset α
a b✝ : α
hst : { ofColex := s } ≤ { ofColex := t }
ht : ∀ b ∈ t, b < a
b : α
hb : b ∈ s
h✝ : b ∉ t
⊢ b < a

tactic: exact ht _ ‹_›
state_before: case pos
α : Type u_1
β : Type u_2
inst✝¹ : PartialOrder α
inst✝ : PartialOrder β
f : α → β
𝒜 𝒜₁ 𝒜₂ : Finset (Finset α)
s t u : Finset α
a b✝ : α
hst : { ofColex := s } ≤ { ofColex := t }
ht : ∀ b ∈ t, b < a
b : α
hb : b ∈ s
h✝ : b ∈ t
⊢ b < a
state_after: no goals

tactic: obtain ⟨c, hct, -, hbc⟩ := hst hb ‹_›
state_before: case neg
α : Type u_1
β : Type u_2
inst✝¹ : PartialOrder α
inst✝ : PartialOrder β
f : α → β
𝒜 𝒜₁ 𝒜₂ : Finset (Finset α)
s t u : Finset α
a b✝ : α
hst : { ofColex := s } ≤ { ofColex := t }
ht : ∀ b ∈ t, b < a
b : α
hb : b ∈ s
h✝ : b ∉ t
⊢ b < a
state_after: case neg.intro.intro.intro
α : Type u_1
β : Type u_2
inst✝¹ : PartialOrder α
inst✝ : PartialOrder β
f : α → β
𝒜 𝒜₁ 𝒜₂ : Finset (Finset α)
s t u : Finset α
a b✝ : α
hst : { ofColex := s } ≤ { ofColex := t }
ht : ∀ b ∈ t, b < a
b : α
hb : b ∈ s
h✝ : b ∉ t
c : α
hct : c ∈ { ofColex := t }.ofColex
hbc : b ≤ c
⊢ b < a

tactic: exact hbc.trans_lt <| ht _ hct
state_before: case neg.intro.intro.intro
α : Type u_1
β : Type u_2
inst✝¹ : PartialOrder α
inst✝ : PartialOrder β
f : α → β
𝒜 𝒜₁ 𝒜₂ : Finset (Finset α)
s t u : Finset α
a b✝ : α
hst : { ofColex := s } ≤ { ofColex := t }
ht : ∀ b ∈ t, b < a
b : α
hb : b ∈ s
h✝ : b ∉ t
c : α
hct : c ∈ { ofColex := t }.ofColex
hbc : b ≤ c
⊢ b < a
state_after: no goals
Theorem: SchwartzMap.le_seminorm'
File: Mathlib/Analysis/Distribution/SchwartzSpace.lean

tactic: have := le_seminorm 𝕜 k n f x
state_before: 𝕜 : Type u_1
𝕜' : Type u_2
D : Type u_3
E : Type u_4
F : Type u_5
G : Type u_6
V : Type u_7
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace ℝ E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
inst✝² : NormedField 𝕜
inst✝¹ : NormedSpace 𝕜 F
inst✝ : SMulCommClass ℝ 𝕜 F
k n : ℕ
f : 𝓢(ℝ, F)
x : ℝ
⊢ |x| ^ k * ‖iteratedDeriv n (⇑f) x‖ ≤ (SchwartzMap.seminorm 𝕜 k n) f
state_after: 𝕜 : Type u_1
𝕜' : Type u_2
D : Type u_3
E : Type u_4
F : Type u_5
G : Type u_6
V : Type u_7
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace ℝ E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
inst✝² : NormedField 𝕜
inst✝¹ : NormedSpace 𝕜 F
inst✝ : SMulCommClass ℝ 𝕜 F
k n : ℕ
f : 𝓢(ℝ, F)
x : ℝ
this : ‖x‖ ^ k * ‖iteratedFDeriv ℝ n (⇑f) x‖ ≤ (SchwartzMap.seminorm 𝕜 k n) f
⊢ |x| ^ k * ‖iteratedDeriv n (⇑f) x‖ ≤ (SchwartzMap.seminorm 𝕜 k n) f

tactic: rwa [← Real.norm_eq_abs, ← norm_iteratedFDeriv_eq_norm_iteratedDeriv]
state_before: 𝕜 : Type u_1
𝕜' : Type u_2
D : Type u_3
E : Type u_4
F : Type u_5
G : Type u_6
V : Type u_7
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace ℝ E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
inst✝² : NormedField 𝕜
inst✝¹ : NormedSpace 𝕜 F
inst✝ : SMulCommClass ℝ 𝕜 F
k n : ℕ
f : 𝓢(ℝ, F)
x : ℝ
this : ‖x‖ ^ k * ‖iteratedFDeriv ℝ n (⇑f) x‖ ≤ (SchwartzMap.seminorm 𝕜 k n) f
⊢ |x| ^ k * ‖iteratedDeriv n (⇑f) x‖ ≤ (SchwartzMap.seminorm 𝕜 k n) f
state_after: no goals
Theorem: TensorProduct.map₂_mk_top_top_eq_top
File: Mathlib/LinearAlgebra/TensorProduct/Basic.lean

tactic: rw [← top_le_iff, ← span_tmul_eq_top, Submodule.map₂_eq_span_image2]
state_before: R : Type u_1
inst✝¹⁸ : CommSemiring R
R' : Type u_2
inst✝¹⁷ : Monoid R'
R'' : Type u_3
inst✝¹⁶ : Semiring R''
M : Type u_4
N : Type u_5
P : Type u_6
Q : Type u_7
S : Type u_8
T : Type u_9
inst✝¹⁵ : AddCommMonoid M
inst✝¹⁴ : AddCommMonoid N
inst✝¹³ : AddCommMonoid P
inst✝¹² : AddCommMonoid Q
inst✝¹¹ : AddCommMonoid S
inst✝¹⁰ : AddCommMonoid T
inst✝⁹ : Module R M
inst✝⁸ : Module R N
inst✝⁷ : Module R P
inst✝⁶ : Module R Q
inst✝⁵ : Module R S
inst✝⁴ : Module R T
inst✝³ : DistribMulAction R' M
inst✝² : Module R'' M
inst✝¹ : SMulCommClass R R' M
inst✝ : SMulCommClass R R'' M
⊢ Submodule.map₂ (mk R M N) ⊤ ⊤ = ⊤
state_after: R : Type u_1
inst✝¹⁸ : CommSemiring R
R' : Type u_2
inst✝¹⁷ : Monoid R'
R'' : Type u_3
inst✝¹⁶ : Semiring R''
M : Type u_4
N : Type u_5
P : Type u_6
Q : Type u_7
S : Type u_8
T : Type u_9
inst✝¹⁵ : AddCommMonoid M
inst✝¹⁴ : AddCommMonoid N
inst✝¹³ : AddCommMonoid P
inst✝¹² : AddCommMonoid Q
inst✝¹¹ : AddCommMonoid S
inst✝¹⁰ : AddCommMonoid T
inst✝⁹ : Module R M
inst✝⁸ : Module R N
inst✝⁷ : Module R P
inst✝⁶ : Module R Q
inst✝⁵ : Module R S
inst✝⁴ : Module R T
inst✝³ : DistribMulAction R' M
inst✝² : Module R'' M
inst✝¹ : SMulCommClass R R' M
inst✝ : SMulCommClass R R'' M
⊢ Submodule.span R {t | ∃ m n, m ⊗ₜ[R] n = t} ≤ Submodule.span R (Set.image2 (fun m n => ((mk R M N) m) n) ↑⊤ ↑⊤)

tactic: exact Submodule.span_mono fun _ ⟨m, n, h⟩ => ⟨m, trivial, n, trivial, h⟩
state_before: R : Type u_1
inst✝¹⁸ : CommSemiring R
R' : Type u_2
inst✝¹⁷ : Monoid R'
R'' : Type u_3
inst✝¹⁶ : Semiring R''
M : Type u_4
N : Type u_5
P : Type u_6
Q : Type u_7
S : Type u_8
T : Type u_9
inst✝¹⁵ : AddCommMonoid M
inst✝¹⁴ : AddCommMonoid N
inst✝¹³ : AddCommMonoid P
inst✝¹² : AddCommMonoid Q
inst✝¹¹ : AddCommMonoid S
inst✝¹⁰ : AddCommMonoid T
inst✝⁹ : Module R M
inst✝⁸ : Module R N
inst✝⁷ : Module R P
inst✝⁶ : Module R Q
inst✝⁵ : Module R S
inst✝⁴ : Module R T
inst✝³ : DistribMulAction R' M
inst✝² : Module R'' M
inst✝¹ : SMulCommClass R R' M
inst✝ : SMulCommClass R R'' M
⊢ Submodule.span R {t | ∃ m n, m ⊗ₜ[R] n = t} ≤ Submodule.span R (Set.image2 (fun m n => ((mk R M N) m) n) ↑⊤ ↑⊤)
state_after: no goals
Theorem: Fin.append_rev
File: Mathlib/Data/Fin/Tuple/Basic.lean

tactic: rcases rev_surjective i with ⟨i, rfl⟩
state_before: m✝ n✝ : ℕ
α✝ : Fin (n✝ + 1) → Type u
x : α✝ 0
q : (i : Fin (n✝ + 1)) → α✝ i
p : (i : Fin n✝) → α✝ i.succ
i✝ : Fin n✝
y : α✝ i✝.succ
z : α✝ 0
m n : ℕ
α : Type u_1
xs : Fin m → α
ys : Fin n → α
i : Fin (m + n)
⊢ append xs ys i.rev = append (ys ∘ rev) (xs ∘ rev) (cast ⋯ i)
state_after: case intro
m✝ n✝ : ℕ
α✝ : Fin (n✝ + 1) → Type u
x : α✝ 0
q : (i : Fin (n✝ + 1)) → α✝ i
p : (i : Fin n✝) → α✝ i.succ
i✝ : Fin n✝
y : α✝ i✝.succ
z : α✝ 0
m n : ℕ
α : Type u_1
xs : Fin m → α
ys : Fin n → α
i : Fin (m + n)
⊢ append xs ys i.rev.rev = append (ys ∘ rev) (xs ∘ rev) (cast ⋯ i.rev)

tactic: rw [rev_rev]
state_before: case intro
m✝ n✝ : ℕ
α✝ : Fin (n✝ + 1) → Type u
x : α✝ 0
q : (i : Fin (n✝ + 1)) → α✝ i
p : (i : Fin n✝) → α✝ i.succ
i✝ : Fin n✝
y : α✝ i✝.succ
z : α✝ 0
m n : ℕ
α : Type u_1
xs : Fin m → α
ys : Fin n → α
i : Fin (m + n)
⊢ append xs ys i.rev.rev = append (ys ∘ rev) (xs ∘ rev) (cast ⋯ i.rev)
state_after: case intro
m✝ n✝ : ℕ
α✝ : Fin (n✝ + 1) → Type u
x : α✝ 0
q : (i : Fin (n✝ + 1)) → α✝ i
p : (i : Fin n✝) → α✝ i.succ
i✝ : Fin n✝
y : α✝ i✝.succ
z : α✝ 0
m n : ℕ
α : Type u_1
xs : Fin m → α
ys : Fin n → α
i : Fin (m + n)
⊢ append xs ys i = append (ys ∘ rev) (xs ∘ rev) (cast ⋯ i.rev)

tactic: induction i using Fin.addCases
state_before: case intro
m✝ n✝ : ℕ
α✝ : Fin (n✝ + 1) → Type u
x : α✝ 0
q : (i : Fin (n✝ + 1)) → α✝ i
p : (i : Fin n✝) → α✝ i.succ
i✝ : Fin n✝
y : α✝ i✝.succ
z : α✝ 0
m n : ℕ
α : Type u_1
xs : Fin m → α
ys : Fin n → α
i : Fin (m + n)
⊢ append xs ys i = append (ys ∘ rev) (xs ∘ rev) (cast ⋯ i.rev)
state_after: case intro.left
m✝ n✝ : ℕ
α✝ : Fin (n✝ + 1) → Type u
x : α✝ 0
q : (i : Fin (n✝ + 1)) → α✝ i
p : (i : Fin n✝) → α✝ i.succ
i : Fin n✝
y : α✝ i.succ
z : α✝ 0
m n : ℕ
α : Type u_1
xs : Fin m → α
ys : Fin n → α
i✝ : Fin m
⊢ append xs ys (castAdd n i✝) = append (ys ∘ rev) (xs ∘ rev) (cast ⋯ (castAdd n i✝).rev)

case intro.right
m✝ n✝ : ℕ
α✝ : Fin (n✝ + 1) → Type u
x : α✝ 0
q : (i : Fin (n✝ + 1)) → α✝ i
p : (i : Fin n✝) → α✝ i.succ
i : Fin n✝
y : α✝ i.succ
z : α✝ 0
m n : ℕ
α : Type u_1
xs : Fin m → α
ys : Fin n → α
i✝ : Fin n
⊢ append xs ys (natAdd m i✝) = append (ys ∘ rev) (xs ∘ rev) (cast ⋯ (natAdd m i✝).rev)

tactic: simp [rev_castAdd]
state_before: case intro.left
m✝ n✝ : ℕ
α✝ : Fin (n✝ + 1) → Type u
x : α✝ 0
q : (i : Fin (n✝ + 1)) → α✝ i
p : (i : Fin n✝) → α✝ i.succ
i : Fin n✝
y : α✝ i.succ
z : α✝ 0
m n : ℕ
α : Type u_1
xs : Fin m → α
ys : Fin n → α
i✝ : Fin m
⊢ append xs ys (castAdd n i✝) = append (ys ∘ rev) (xs ∘ rev) (cast ⋯ (castAdd n i✝).rev)
state_after: no goals

tactic: simp [cast_rev, rev_addNat]
state_before: case intro.right
m✝ n✝ : ℕ
α✝ : Fin (n✝ + 1) → Type u
x : α✝ 0
q : (i : Fin (n✝ + 1)) → α✝ i
p : (i : Fin n✝) → α✝ i.succ
i : Fin n✝
y : α✝ i.succ
z : α✝ 0
m n : ℕ
α : Type u_1
xs : Fin m → α
ys : Fin n → α
i✝ : Fin n
⊢ append xs ys (natAdd m i✝) = append (ys ∘ rev) (xs ∘ rev) (cast ⋯ (natAdd m i✝).rev)
state_after: no goals
Theorem: Matrix.zpow_neg_natCast
File: Mathlib/LinearAlgebra/Matrix/ZPow.lean

tactic: cases n
state_before: n' : Type u_1
inst✝² : DecidableEq n'
inst✝¹ : Fintype n'
R : Type u_2
inst✝ : CommRing R
A : M
n : ℕ
⊢ A ^ (-↑n) = (A ^ n)⁻¹
state_after: case zero
n' : Type u_1
inst✝² : DecidableEq n'
inst✝¹ : Fintype n'
R : Type u_2
inst✝ : CommRing R
A : M
⊢ A ^ (-↑0) = (A ^ 0)⁻¹

case succ
n' : Type u_1
inst✝² : DecidableEq n'
inst✝¹ : Fintype n'
R : Type u_2
inst✝ : CommRing R
A : M
n✝ : ℕ
⊢ A ^ (-↑(n✝ + 1)) = (A ^ (n✝ + 1))⁻¹

tactic: simp
state_before: case zero
n' : Type u_1
inst✝² : DecidableEq n'
inst✝¹ : Fintype n'
R : Type u_2
inst✝ : CommRing R
A : M
⊢ A ^ (-↑0) = (A ^ 0)⁻¹
state_after: no goals

tactic: exact DivInvMonoid.zpow_neg' _ _
state_before: case succ
n' : Type u_1
inst✝² : DecidableEq n'
inst✝¹ : Fintype n'
R : Type u_2
inst✝ : CommRing R
A : M
n✝ : ℕ
⊢ A ^ (-↑(n✝ + 1)) = (A ^ (n✝ + 1))⁻¹
state_after: no goals
Theorem: Ordinal.div_one
File: Mathlib/SetTheory/Ordinal/Arithmetic.lean

tactic: simpa only [one_mul] using mul_div_cancel a Ordinal.one_ne_zero
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
a : Ordinal.{u_4}
⊢ a / 1 = a
state_after: no goals
Theorem: Finset.sup'_inf_distrib_left
File: Mathlib/Data/Finset/Lattice.lean

tactic: induction hs using Finset.Nonempty.cons_induction with
| singleton => simp
| cons _ _ _ hs ih => simp_rw [sup'_cons hs, inf_sup_left, ih]
state_before: F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
ι : Type u_5
κ : Type u_6
inst✝ : DistribLattice α
s : Finset ι
t : Finset κ
hs : s.Nonempty
ht : t.Nonempty
f✝ : ι → α
g : κ → α
a✝ : α
f : ι → α
a : α
⊢ a ⊓ s.sup' hs f = s.sup' hs fun i => a ⊓ f i
state_after: no goals

tactic: simp
state_before: case singleton
F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
ι : Type u_5
κ : Type u_6
inst✝ : DistribLattice α
s : Finset ι
t : Finset κ
hs : s.Nonempty
ht : t.Nonempty
f✝ : ι → α
g : κ → α
a✝¹ : α
f : ι → α
a : α
a✝ : ι
⊢ a ⊓ {a✝}.sup' ⋯ f = {a✝}.sup' ⋯ fun i => a ⊓ f i
state_after: no goals

tactic: simp_rw [sup'_cons hs, inf_sup_left, ih]
state_before: case cons
F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
ι : Type u_5
κ : Type u_6
inst✝ : DistribLattice α
s : Finset ι
t : Finset κ
hs✝ : s.Nonempty
ht : t.Nonempty
f✝ : ι → α
g : κ → α
a✝¹ : α
f : ι → α
a : α
a✝ : ι
s✝ : Finset ι
h✝ : a✝ ∉ s✝
hs : s✝.Nonempty
ih : a ⊓ s✝.sup' hs f = s✝.sup' hs fun i => a ⊓ f i
⊢ a ⊓ (cons a✝ s✝ h✝).sup' ⋯ f = (cons a✝ s✝ h✝).sup' ⋯ fun i => a ⊓ f i
state_after: no goals
Theorem: Polynomial.exists_partition_polynomial
File: Mathlib/NumberTheory/ClassNumber/AdmissibleCardPowDegree.lean

tactic: obtain ⟨t, ht⟩ := exists_partition_polynomial_aux n hε hb A
state_before: Fq : Type u_1
inst✝¹ : Fintype Fq
inst✝ : Field Fq
n : ℕ
ε : ℝ
hε : 0 < ε
b : Fq[X]
hb : b ≠ 0
A : Fin n → Fq[X]
⊢ ∃ t, ∀ (i₀ i₁ : Fin n), t i₀ = t i₁ → ↑(cardPowDegree (A i₁ % b - A i₀ % b)) < cardPowDegree b • ε
state_after: case intro
Fq : Type u_1
inst✝¹ : Fintype Fq
inst✝ : Field Fq
n : ℕ
ε : ℝ
hε : 0 < ε
b : Fq[X]
hb : b ≠ 0
A : Fin n → Fq[X]
t : Fin n → Fin (Fintype.card Fq ^ ⌈-log ε / log ↑(Fintype.card Fq)⌉₊)
ht : ∀ (i₀ i₁ : Fin n), t i₀ = t i₁ ↔ ↑(cardPowDegree (A i₁ % b - A i₀ % b)) < cardPowDegree b • ε
⊢ ∃ t, ∀ (i₀ i₁ : Fin n), t i₀ = t i₁ → ↑(cardPowDegree (A i₁ % b - A i₀ % b)) < cardPowDegree b • ε

tactic: exact ⟨t, fun i₀ i₁ hi => (ht i₀ i₁).mp hi⟩
state_before: case intro
Fq : Type u_1
inst✝¹ : Fintype Fq
inst✝ : Field Fq
n : ℕ
ε : ℝ
hε : 0 < ε
b : Fq[X]
hb : b ≠ 0
A : Fin n → Fq[X]
t : Fin n → Fin (Fintype.card Fq ^ ⌈-log ε / log ↑(Fintype.card Fq)⌉₊)
ht : ∀ (i₀ i₁ : Fin n), t i₀ = t i₁ ↔ ↑(cardPowDegree (A i₁ % b - A i₀ % b)) < cardPowDegree b • ε
⊢ ∃ t, ∀ (i₀ i₁ : Fin n), t i₀ = t i₁ → ↑(cardPowDegree (A i₁ % b - A i₀ % b)) < cardPowDegree b • ε
state_after: no goals
Theorem: map_inv_lt_iff
File: Mathlib/Order/Hom/Basic.lean

tactic: rw [← map_lt_map_iff f]
state_before: F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
δ : Type u_5
inst✝³ : Preorder α
inst✝² : Preorder β
inst✝¹ : EquivLike F α β
inst✝ : OrderIsoClass F α β
f : F
a : α
b : β
⊢ EquivLike.inv f b < a ↔ b < f a
state_after: F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
δ : Type u_5
inst✝³ : Preorder α
inst✝² : Preorder β
inst✝¹ : EquivLike F α β
inst✝ : OrderIsoClass F α β
f : F
a : α
b : β
⊢ f (EquivLike.inv f b) < f a ↔ b < f a

tactic: simp only [EquivLike.apply_inv_apply]
state_before: F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
δ : Type u_5
inst✝³ : Preorder α
inst✝² : Preorder β
inst✝¹ : EquivLike F α β
inst✝ : OrderIsoClass F α β
f : F
a : α
b : β
⊢ f (EquivLike.inv f b) < f a ↔ b < f a
state_after: no goals
Theorem: MvPolynomial.weightedDegree_apply
File: Mathlib/RingTheory/MvPolynomial/WeightedHomogeneous.lean

tactic: rfl
state_before: R : Type u_1
M : Type u_2
inst✝¹ : CommSemiring R
σ : Type u_3
inst✝ : AddCommMonoid M
w : σ → M
f : σ →₀ ℕ
⊢ (weightedDegree w) f = f.sum fun i c => c • w i
state_after: no goals