1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: CategoryTheory.Functor.map_shiftFunctorCompIsoId_inv_app
File: Mathlib/CategoryTheory/Shift/CommShift.lean

tactic: rw [← cancel_epi (F.map ((shiftFunctorCompIsoId C a b h).hom.app X)), ← F.map_comp,
  Iso.hom_inv_id_app, F.map_id, map_shiftFunctorCompIsoId_hom_app]
state_before: C : Type u_1
D : Type u_2
E : Type u_3
inst✝¹⁰ : Category.{u_6, u_1} C
inst✝⁹ : Category.{u_7, u_2} D
inst✝⁸ : Category.{?u.89086, u_3} E
F : C ⥤ D
G : D ⥤ E
A : Type u_4
B : Type u_5
inst✝⁷ : AddMonoid A
inst✝⁶ : AddCommMonoid B
inst✝⁵ : HasShift C A
inst✝⁴ : HasShift D A
inst✝³ : HasShift E A
inst✝² : HasShift C B
inst✝¹ : HasShift D B
inst✝ : F.CommShift A
X : C
a b : A
h : a + b = 0
⊢ F.map ((shiftFunctorCompIsoId C a b h).inv.app X) =
    (shiftFunctorCompIsoId D a b h).inv.app (F.obj X) ≫
      (shiftFunctor D b).map ((F.commShiftIso a).inv.app X) ≫ (F.commShiftIso b).inv.app ((shiftFunctor C a).obj X)
state_after: C : Type u_1
D : Type u_2
E : Type u_3
inst✝¹⁰ : Category.{u_6, u_1} C
inst✝⁹ : Category.{u_7, u_2} D
inst✝⁸ : Category.{?u.89086, u_3} E
F : C ⥤ D
G : D ⥤ E
A : Type u_4
B : Type u_5
inst✝⁷ : AddMonoid A
inst✝⁶ : AddCommMonoid B
inst✝⁵ : HasShift C A
inst✝⁴ : HasShift D A
inst✝³ : HasShift E A
inst✝² : HasShift C B
inst✝¹ : HasShift D B
inst✝ : F.CommShift A
X : C
a b : A
h : a + b = 0
⊢ 𝟙 (F.obj ((shiftFunctor C a ⋙ shiftFunctor C b).obj X)) =
    ((F.commShiftIso b).hom.app ((shiftFunctor C a).obj X) ≫
        (shiftFunctor D b).map ((F.commShiftIso a).hom.app X) ≫ (shiftFunctorCompIsoId D a b h).hom.app (F.obj X)) ≫
      (shiftFunctorCompIsoId D a b h).inv.app (F.obj X) ≫
        (shiftFunctor D b).map ((F.commShiftIso a).inv.app X) ≫ (F.commShiftIso b).inv.app ((shiftFunctor C a).obj X)

tactic: simp only [comp_obj, id_obj, Category.assoc, Iso.hom_inv_id_app_assoc,
  ← Functor.map_comp_assoc, Iso.hom_inv_id_app, Functor.map_id, Category.id_comp]
state_before: C : Type u_1
D : Type u_2
E : Type u_3
inst✝¹⁰ : Category.{u_6, u_1} C
inst✝⁹ : Category.{u_7, u_2} D
inst✝⁸ : Category.{?u.89086, u_3} E
F : C ⥤ D
G : D ⥤ E
A : Type u_4
B : Type u_5
inst✝⁷ : AddMonoid A
inst✝⁶ : AddCommMonoid B
inst✝⁵ : HasShift C A
inst✝⁴ : HasShift D A
inst✝³ : HasShift E A
inst✝² : HasShift C B
inst✝¹ : HasShift D B
inst✝ : F.CommShift A
X : C
a b : A
h : a + b = 0
⊢ 𝟙 (F.obj ((shiftFunctor C a ⋙ shiftFunctor C b).obj X)) =
    ((F.commShiftIso b).hom.app ((shiftFunctor C a).obj X) ≫
        (shiftFunctor D b).map ((F.commShiftIso a).hom.app X) ≫ (shiftFunctorCompIsoId D a b h).hom.app (F.obj X)) ≫
      (shiftFunctorCompIsoId D a b h).inv.app (F.obj X) ≫
        (shiftFunctor D b).map ((F.commShiftIso a).inv.app X) ≫ (F.commShiftIso b).inv.app ((shiftFunctor C a).obj X)
state_after: no goals
Theorem: MeasureTheory.L1.SimpleFunc.norm_setToL1S_le
File: Mathlib/MeasureTheory/Integral/SetToL1.lean

tactic: rw [setToL1S, norm_eq_sum_mul f]
state_before: α : Type u_1
E : Type u_2
F : Type u_3
F' : Type u_4
G : Type u_5
𝕜 : Type u_6
p : ℝ≥0∞
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : NormedAddCommGroup F
inst✝⁵ : NormedSpace ℝ F
inst✝⁴ : NormedAddCommGroup F'
inst✝³ : NormedSpace ℝ F'
inst✝² : NormedAddCommGroup G
m : MeasurableSpace α
μ : Measure α
inst✝¹ : NormedField 𝕜
inst✝ : NormedSpace 𝕜 E
T : Set α → E →L[ℝ] F
C : ℝ
hT_norm : ∀ (s : Set α), MeasurableSet s → μ s < ⊤ → ‖T s‖ ≤ C * (μ s).toReal
f : ↥(simpleFunc E 1 μ)
⊢ ‖setToL1S T f‖ ≤ C * ‖f‖
state_after: α : Type u_1
E : Type u_2
F : Type u_3
F' : Type u_4
G : Type u_5
𝕜 : Type u_6
p : ℝ≥0∞
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : NormedAddCommGroup F
inst✝⁵ : NormedSpace ℝ F
inst✝⁴ : NormedAddCommGroup F'
inst✝³ : NormedSpace ℝ F'
inst✝² : NormedAddCommGroup G
m : MeasurableSpace α
μ : Measure α
inst✝¹ : NormedField 𝕜
inst✝ : NormedSpace 𝕜 E
T : Set α → E →L[ℝ] F
C : ℝ
hT_norm : ∀ (s : Set α), MeasurableSet s → μ s < ⊤ → ‖T s‖ ≤ C * (μ s).toReal
f : ↥(simpleFunc E 1 μ)
⊢ ‖SimpleFunc.setToSimpleFunc T (toSimpleFunc f)‖ ≤
    C * ∑ x ∈ (toSimpleFunc f).range, (μ (↑(toSimpleFunc f) ⁻¹' {x})).toReal * ‖x‖

tactic: exact
  SimpleFunc.norm_setToSimpleFunc_le_sum_mul_norm_of_integrable T hT_norm _
    (SimpleFunc.integrable f)
state_before: α : Type u_1
E : Type u_2
F : Type u_3
F' : Type u_4
G : Type u_5
𝕜 : Type u_6
p : ℝ≥0∞
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : NormedAddCommGroup F
inst✝⁵ : NormedSpace ℝ F
inst✝⁴ : NormedAddCommGroup F'
inst✝³ : NormedSpace ℝ F'
inst✝² : NormedAddCommGroup G
m : MeasurableSpace α
μ : Measure α
inst✝¹ : NormedField 𝕜
inst✝ : NormedSpace 𝕜 E
T : Set α → E →L[ℝ] F
C : ℝ
hT_norm : ∀ (s : Set α), MeasurableSet s → μ s < ⊤ → ‖T s‖ ≤ C * (μ s).toReal
f : ↥(simpleFunc E 1 μ)
⊢ ‖SimpleFunc.setToSimpleFunc T (toSimpleFunc f)‖ ≤
    C * ∑ x ∈ (toSimpleFunc f).range, (μ (↑(toSimpleFunc f) ⁻¹' {x})).toReal * ‖x‖
state_after: no goals
Theorem: Set.surjOn_empty_iff
File: Mathlib/Data/Set/Function.lean

tactic: simp [SurjOn, subset_empty_iff]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
π : α → Type u_5
s s₁ s₂ : Set α
t t₁ t₂ : Set β
p : Set γ
f f₁ f₂ f₃ : α → β
g g₁ g₂ : β → γ
f' f₁' f₂' : β → α
g' : γ → β
a : α
b : β
⊢ SurjOn f ∅ t ↔ t = ∅
state_after: no goals
Theorem: AffineSubspace.Parallel.direction_eq
File: Mathlib/LinearAlgebra/AffineSpace/AffineSubspace.lean

tactic: rcases h with ⟨v, rfl⟩
state_before: k : Type u_1
V : Type u_2
P : Type u_3
inst✝³ : Ring k
inst✝² : AddCommGroup V
inst✝¹ : Module k V
inst✝ : AffineSpace V P
s₁ s₂ : AffineSubspace k P
h : s₁ ∥ s₂
⊢ s₁.direction = s₂.direction
state_after: case intro
k : Type u_1
V : Type u_2
P : Type u_3
inst✝³ : Ring k
inst✝² : AddCommGroup V
inst✝¹ : Module k V
inst✝ : AffineSpace V P
s₁ : AffineSubspace k P
v : V
⊢ s₁.direction = (map (↑(constVAdd k P v)) s₁).direction

tactic: simp
state_before: case intro
k : Type u_1
V : Type u_2
P : Type u_3
inst✝³ : Ring k
inst✝² : AddCommGroup V
inst✝¹ : Module k V
inst✝ : AffineSpace V P
s₁ : AffineSubspace k P
v : V
⊢ s₁.direction = (map (↑(constVAdd k P v)) s₁).direction
state_after: no goals
Theorem: antilipschitzWith_mul_left
File: Mathlib/Analysis/Normed/Field/Basic.lean

tactic: simp [dist_eq_norm, ← _root_.mul_sub, ha]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝ : NormedDivisionRing α
a✝ a : α
ha : a ≠ 0
x✝¹ x✝ : α
⊢ dist x✝¹ x✝ ≤ ↑‖a‖₊⁻¹ * dist (a * x✝¹) (a * x✝)
state_after: no goals
Theorem: Set.star_subset
File: Mathlib/Algebra/Star/Pointwise.lean

tactic: rw [← star_subset_star, star_star]
state_before: α : Type u_1
s✝ t✝ : Set α
a : α
inst✝ : InvolutiveStar α
s t : Set α
⊢ s⋆ ⊆ t ↔ s ⊆ t⋆
state_after: no goals
Theorem: Polynomial.smeval_X_pow_assoc
File: Mathlib/Algebra/Polynomial/Smeval.lean

tactic: induction p using Polynomial.induction_on' with
| h_add p q ph qh =>
  simp only [smeval_add, ph, qh, mul_add]
| h_monomial n a =>
  simp only [smeval_monomial, mul_smul_comm, npow_mul_assoc]
state_before: R : Type u_1
inst✝⁶ : Semiring R
p✝ : R[X]
r : R
p q : R[X]
S : Type u_2
inst✝⁵ : NonAssocSemiring S
inst✝⁴ : Module R S
inst✝³ : IsScalarTower R S S
inst✝² : SMulCommClass R S S
inst✝¹ : Pow S ℕ
inst✝ : NatPowAssoc S
x : S
m n : ℕ
⊢ x ^ m * x ^ n * p.smeval x = x ^ m * (x ^ n * p.smeval x)
state_after: no goals

tactic: simp only [smeval_add, ph, qh, mul_add]
state_before: case h_add
R : Type u_1
inst✝⁶ : Semiring R
p✝¹ : R[X]
r : R
p✝ q✝ : R[X]
S : Type u_2
inst✝⁵ : NonAssocSemiring S
inst✝⁴ : Module R S
inst✝³ : IsScalarTower R S S
inst✝² : SMulCommClass R S S
inst✝¹ : Pow S ℕ
inst✝ : NatPowAssoc S
x : S
m n : ℕ
p q : R[X]
ph : x ^ m * x ^ n * p.smeval x = x ^ m * (x ^ n * p.smeval x)
qh : x ^ m * x ^ n * q.smeval x = x ^ m * (x ^ n * q.smeval x)
⊢ x ^ m * x ^ n * (p + q).smeval x = x ^ m * (x ^ n * (p + q).smeval x)
state_after: no goals

tactic: simp only [smeval_monomial, mul_smul_comm, npow_mul_assoc]
state_before: case h_monomial
R : Type u_1
inst✝⁶ : Semiring R
p✝ : R[X]
r : R
p q : R[X]
S : Type u_2
inst✝⁵ : NonAssocSemiring S
inst✝⁴ : Module R S
inst✝³ : IsScalarTower R S S
inst✝² : SMulCommClass R S S
inst✝¹ : Pow S ℕ
inst✝ : NatPowAssoc S
x : S
m n✝ n : ℕ
a : R
⊢ x ^ m * x ^ n✝ * ((monomial n) a).smeval x = x ^ m * (x ^ n✝ * ((monomial n) a).smeval x)
state_after: no goals
Theorem: gramSchmidtOrthonormalBasis_inv_triangular'
File: Mathlib/Analysis/InnerProductSpace/GramSchmidtOrtho.lean

tactic: simpa [OrthonormalBasis.repr_apply_apply] using gramSchmidtOrthonormalBasis_inv_triangular h f hij
state_before: 𝕜 : Type u_1
E : Type u_2
inst✝⁷ : RCLike 𝕜
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : InnerProductSpace 𝕜 E
ι : Type u_3
inst✝⁴ : LinearOrder ι
inst✝³ : LocallyFiniteOrderBot ι
inst✝² : IsWellOrder ι fun x x_1 => x < x_1
inst✝¹ : Fintype ι
inst✝ : FiniteDimensional 𝕜 E
h : finrank 𝕜 E = Fintype.card ι
f : ι → E
i j : ι
hij : i < j
⊢ (gramSchmidtOrthonormalBasis h f).repr (f i) j = 0
state_after: no goals
Theorem: HomologicalComplex.biprod_inr_fst_f
File: Mathlib/Algebra/Homology/HomologicalComplexBiprod.lean

tactic: rw [← comp_f, biprod.inr_fst, zero_f]
state_before: C : Type u_1
ι : Type u_2
inst✝² : Category.{u_3, u_1} C
inst✝¹ : Preadditive C
c : ComplexShape ι
K L : HomologicalComplex C c
inst✝ : ∀ (i : ι), HasBinaryBiproduct (K.X i) (L.X i)
i : ι
⊢ biprod.inr.f i ≫ biprod.fst.f i = 0
state_after: no goals
Theorem: lowerClosure_singleton
File: Mathlib/Order/UpperLower/Basic.lean

tactic: ext
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
κ : ι → Sort u_5
inst✝¹ : Preorder α
inst✝ : Preorder β
s t : Set α
x a : α
⊢ lowerClosure {a} = LowerSet.Iic a
state_after: case a.h
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
κ : ι → Sort u_5
inst✝¹ : Preorder α
inst✝ : Preorder β
s t : Set α
x a x✝ : α
⊢ x✝ ∈ ↑(lowerClosure {a}) ↔ x✝ ∈ ↑(LowerSet.Iic a)

tactic: simp
state_before: case a.h
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
κ : ι → Sort u_5
inst✝¹ : Preorder α
inst✝ : Preorder β
s t : Set α
x a x✝ : α
⊢ x✝ ∈ ↑(lowerClosure {a}) ↔ x✝ ∈ ↑(LowerSet.Iic a)
state_after: no goals
Theorem: GromovHausdorff.optimalGHDist_mem_candidatesB
File: Mathlib/Topology/MetricSpace/GromovHausdorffRealized.lean

tactic: cases Classical.choose_spec (exists_minimizer X Y)
state_before: X : Type u
Y : Type v
inst✝⁵ : MetricSpace X
inst✝⁴ : CompactSpace X
inst✝³ : Nonempty X
inst✝² : MetricSpace Y
inst✝¹ : CompactSpace Y
inst✝ : Nonempty Y
⊢ GromovHausdorff.optimalGHDist X Y ∈ GromovHausdorff.candidatesB X Y
state_after: case intro
X : Type u
Y : Type v
inst✝⁵ : MetricSpace X
inst✝⁴ : CompactSpace X
inst✝³ : Nonempty X
inst✝² : MetricSpace Y
inst✝¹ : CompactSpace Y
inst✝ : Nonempty Y
left✝ : Classical.choose ⋯ ∈ GromovHausdorff.candidatesB X Y
right✝ : ∀ g ∈ GromovHausdorff.candidatesB X Y, HD (Classical.choose ⋯) ≤ HD g
⊢ GromovHausdorff.optimalGHDist X Y ∈ GromovHausdorff.candidatesB X Y

tactic: assumption
state_before: case intro
X : Type u
Y : Type v
inst✝⁵ : MetricSpace X
inst✝⁴ : CompactSpace X
inst✝³ : Nonempty X
inst✝² : MetricSpace Y
inst✝¹ : CompactSpace Y
inst✝ : Nonempty Y
left✝ : Classical.choose ⋯ ∈ GromovHausdorff.candidatesB X Y
right✝ : ∀ g ∈ GromovHausdorff.candidatesB X Y, HD (Classical.choose ⋯) ≤ HD g
⊢ GromovHausdorff.optimalGHDist X Y ∈ GromovHausdorff.candidatesB X Y
state_after: no goals
Theorem: Vector.id_traverse
File: Mathlib/Data/Vector/Basic.lean

tactic: rintro ⟨x, rfl⟩
state_before: n : ℕ
F G : Type u → Type u
inst✝¹ : Applicative F
inst✝ : Applicative G
α β : Type u
⊢ ∀ (x : Vector α n), Vector.traverse pure x = x
state_after: case mk
F G : Type u → Type u
inst✝¹ : Applicative F
inst✝ : Applicative G
α β : Type u
x : List α
⊢ Vector.traverse pure ⟨x, ⋯⟩ = ⟨x, ⋯⟩

tactic: dsimp [Vector.traverse, cast]
state_before: case mk
F G : Type u → Type u
inst✝¹ : Applicative F
inst✝ : Applicative G
α β : Type u
x : List α
⊢ Vector.traverse pure ⟨x, ⋯⟩ = ⟨x, ⋯⟩
state_after: case mk
F G : Type u → Type u
inst✝¹ : Applicative F
inst✝ : Applicative G
α β : Type u
x : List α
⊢ Vector.traverseAux pure x = ⟨x, ⋯⟩

tactic: induction' x with x xs IH
state_before: case mk
F G : Type u → Type u
inst✝¹ : Applicative F
inst✝ : Applicative G
α β : Type u
x : List α
⊢ Vector.traverseAux pure x = ⟨x, ⋯⟩
state_after: case mk.nil
F G : Type u → Type u
inst✝¹ : Applicative F
inst✝ : Applicative G
α β : Type u
⊢ Vector.traverseAux pure [] = ⟨[], ⋯⟩

case mk.cons
F G : Type u → Type u
inst✝¹ : Applicative F
inst✝ : Applicative G
α β : Type u
x : α
xs : List α
IH : Vector.traverseAux pure xs = ⟨xs, ⋯⟩
⊢ Vector.traverseAux pure (x :: xs) = ⟨x :: xs, ⋯⟩

tactic: simp! [IH]
state_before: case mk.cons
F G : Type u → Type u
inst✝¹ : Applicative F
inst✝ : Applicative G
α β : Type u
x : α
xs : List α
IH : Vector.traverseAux pure xs = ⟨xs, ⋯⟩
⊢ Vector.traverseAux pure (x :: xs) = ⟨x :: xs, ⋯⟩
state_after: case mk.cons
F G : Type u → Type u
inst✝¹ : Applicative F
inst✝ : Applicative G
α β : Type u
x : α
xs : List α
IH : Vector.traverseAux pure xs = ⟨xs, ⋯⟩
⊢ (Seq.seq (cons x) fun x => ⟨xs, ⋯⟩) = ⟨x :: xs, ⋯⟩

tactic: rfl
state_before: case mk.cons
F G : Type u → Type u
inst✝¹ : Applicative F
inst✝ : Applicative G
α β : Type u
x : α
xs : List α
IH : Vector.traverseAux pure xs = ⟨xs, ⋯⟩
⊢ (Seq.seq (cons x) fun x => ⟨xs, ⋯⟩) = ⟨x :: xs, ⋯⟩
state_after: no goals

tactic: rfl
state_before: case mk.nil
F G : Type u → Type u
inst✝¹ : Applicative F
inst✝ : Applicative G
α β : Type u
⊢ Vector.traverseAux pure [] = ⟨[], ⋯⟩
state_after: no goals
Theorem: CategoryTheory.Presheaf.isSheaf_iff_isSheaf_comp
File: Mathlib/CategoryTheory/Sites/Sheaf.lean

tactic: letI : ReflectsLimitsOfSize s := reflectsLimitsOfReflectsIsomorphisms
state_before: C : Type u₁
inst✝⁶ : Category.{v₁, u₁} C
A : Type u₂
inst✝⁵ : Category.{v₂, u₂} A
A' : Type u₂
inst✝⁴ : Category.{max v₁ u₁, u₂} A'
B : Type u₃
inst✝³ : Category.{v₃, u₃} B
J : GrothendieckTopology C
U : C
R : Presieve U
P : Cᵒᵖ ⥤ A
P' : Cᵒᵖ ⥤ A'
s : A ⥤ B
inst✝² : HasLimitsOfSize.{v₁, max v₁ u₁, v₂, u₂} A
inst✝¹ : PreservesLimitsOfSize.{v₁, max v₁ u₁, v₂, v₃, u₂, u₃} s
inst✝ : s.ReflectsIsomorphisms
⊢ IsSheaf J P ↔ IsSheaf J (P ⋙ s)
state_after: C : Type u₁
inst✝⁶ : Category.{v₁, u₁} C
A : Type u₂
inst✝⁵ : Category.{v₂, u₂} A
A' : Type u₂
inst✝⁴ : Category.{max v₁ u₁, u₂} A'
B : Type u₃
inst✝³ : Category.{v₃, u₃} B
J : GrothendieckTopology C
U : C
R : Presieve U
P : Cᵒᵖ ⥤ A
P' : Cᵒᵖ ⥤ A'
s : A ⥤ B
inst✝² : HasLimitsOfSize.{v₁, max v₁ u₁, v₂, u₂} A
inst✝¹ : PreservesLimitsOfSize.{v₁, max v₁ u₁, v₂, v₃, u₂, u₃} s
inst✝ : s.ReflectsIsomorphisms
this : ReflectsLimitsOfSize.{v₁, max u₁ v₁, v₂, v₃, u₂, u₃} s := reflectsLimitsOfReflectsIsomorphisms
⊢ IsSheaf J P ↔ IsSheaf J (P ⋙ s)

tactic: exact ⟨isSheaf_comp_of_isSheaf J P s, isSheaf_of_isSheaf_comp J P s⟩
state_before: C : Type u₁
inst✝⁶ : Category.{v₁, u₁} C
A : Type u₂
inst✝⁵ : Category.{v₂, u₂} A
A' : Type u₂
inst✝⁴ : Category.{max v₁ u₁, u₂} A'
B : Type u₃
inst✝³ : Category.{v₃, u₃} B
J : GrothendieckTopology C
U : C
R : Presieve U
P : Cᵒᵖ ⥤ A
P' : Cᵒᵖ ⥤ A'
s : A ⥤ B
inst✝² : HasLimitsOfSize.{v₁, max v₁ u₁, v₂, u₂} A
inst✝¹ : PreservesLimitsOfSize.{v₁, max v₁ u₁, v₂, v₃, u₂, u₃} s
inst✝ : s.ReflectsIsomorphisms
this : ReflectsLimitsOfSize.{v₁, max u₁ v₁, v₂, v₃, u₂, u₃} s := reflectsLimitsOfReflectsIsomorphisms
⊢ IsSheaf J P ↔ IsSheaf J (P ⋙ s)
state_after: no goals
Theorem: List.leftpad_length
File: .lake/packages/batteries/Batteries/Data/List/Lemmas.lean

tactic: simp only [leftpad, length_append, length_replicate, Nat.sub_add_eq_max]
state_before: α : Type u_1
n : Nat
a : α
l : List α
⊢ (leftpad n a l).length = max n l.length
state_after: no goals
Theorem: HomologicalComplex.ι_mapBifunctorMap
File: Mathlib/Algebra/Homology/Bifunctor.lean

tactic: simp [mapBifunctorMap]
state_before: C₁ : Type u_1
C₂ : Type u_2
D : Type u_3
inst✝¹¹ : Category.{u_9, u_1} C₁
inst✝¹⁰ : Category.{u_8, u_2} C₂
inst✝⁹ : Category.{u_7, u_3} D
I₁ : Type u_4
I₂ : Type u_5
J : Type u_6
c₁ : ComplexShape I₁
c₂ : ComplexShape I₂
inst✝⁸ : HasZeroMorphisms C₁
inst✝⁷ : HasZeroMorphisms C₂
inst✝⁶ : Preadditive D
K₁ L₁ : HomologicalComplex C₁ c₁
K₂ L₂ : HomologicalComplex C₂ c₂
f₁ : K₁ ⟶ L₁
f₂ : K₂ ⟶ L₂
F : C₁ ⥤ C₂ ⥤ D
inst✝⁵ : F.PreservesZeroMorphisms
inst✝⁴ : ∀ (X₁ : C₁), (F.obj X₁).PreservesZeroMorphisms
c : ComplexShape J
inst✝³ : TotalComplexShape c₁ c₂ c
inst✝² : K₁.HasMapBifunctor K₂ F c
inst✝¹ : L₁.HasMapBifunctor L₂ F c
inst✝ : DecidableEq J
i₁ : I₁
i₂ : I₂
j : J
h : c₁.π c₂ c (i₁, i₂) = j
⊢ K₁.ιMapBifunctor K₂ F c i₁ i₂ j h ≫ (mapBifunctorMap f₁ f₂ F c).f j =
    (F.map (f₁.f i₁)).app (K₂.X i₂) ≫ (F.obj (L₁.X i₁)).map (f₂.f i₂) ≫ L₁.ιMapBifunctor L₂ F c i₁ i₂ j h
state_after: no goals
Theorem: LinearMap.iSup_range_stdBasis_eq_iInf_ker_proj
File: Mathlib/LinearAlgebra/StdBasis.lean

tactic: refine le_antisymm (iSup_range_stdBasis_le_iInf_ker_proj _ _ _ _ hd) ?_
state_before: R : Type u_1
ι : Type u_2
inst✝³ : Semiring R
φ : ι → Type u_3
inst✝² : (i : ι) → AddCommMonoid (φ i)
inst✝¹ : (i : ι) → Module R (φ i)
inst✝ : DecidableEq ι
I J : Set ι
hd : Disjoint I J
hu : univ ⊆ I ∪ J
hI : I.Finite
⊢ ⨆ i ∈ I, range (stdBasis R φ i) = ⨅ i ∈ J, ker (proj i)
state_after: R : Type u_1
ι : Type u_2
inst✝³ : Semiring R
φ : ι → Type u_3
inst✝² : (i : ι) → AddCommMonoid (φ i)
inst✝¹ : (i : ι) → Module R (φ i)
inst✝ : DecidableEq ι
I J : Set ι
hd : Disjoint I J
hu : univ ⊆ I ∪ J
hI : I.Finite
⊢ ⨅ i ∈ J, ker (proj i) ≤ ⨆ i ∈ I, range (stdBasis R φ i)

tactic: have : Set.univ ⊆ ↑hI.toFinset ∪ J := by rwa [hI.coe_toFinset]
state_before: R : Type u_1
ι : Type u_2
inst✝³ : Semiring R
φ : ι → Type u_3
inst✝² : (i : ι) → AddCommMonoid (φ i)
inst✝¹ : (i : ι) → Module R (φ i)
inst✝ : DecidableEq ι
I J : Set ι
hd : Disjoint I J
hu : univ ⊆ I ∪ J
hI : I.Finite
⊢ ⨅ i ∈ J, ker (proj i) ≤ ⨆ i ∈ I, range (stdBasis R φ i)
state_after: R : Type u_1
ι : Type u_2
inst✝³ : Semiring R
φ : ι → Type u_3
inst✝² : (i : ι) → AddCommMonoid (φ i)
inst✝¹ : (i : ι) → Module R (φ i)
inst✝ : DecidableEq ι
I J : Set ι
hd : Disjoint I J
hu : univ ⊆ I ∪ J
hI : I.Finite
this : univ ⊆ ↑hI.toFinset ∪ J
⊢ ⨅ i ∈ J, ker (proj i) ≤ ⨆ i ∈ I, range (stdBasis R φ i)

tactic: refine le_trans (iInf_ker_proj_le_iSup_range_stdBasis R φ this) (iSup_mono fun i => ?_)
state_before: R : Type u_1
ι : Type u_2
inst✝³ : Semiring R
φ : ι → Type u_3
inst✝² : (i : ι) → AddCommMonoid (φ i)
inst✝¹ : (i : ι) → Module R (φ i)
inst✝ : DecidableEq ι
I J : Set ι
hd : Disjoint I J
hu : univ ⊆ I ∪ J
hI : I.Finite
this : univ ⊆ ↑hI.toFinset ∪ J
⊢ ⨅ i ∈ J, ker (proj i) ≤ ⨆ i ∈ I, range (stdBasis R φ i)
state_after: R : Type u_1
ι : Type u_2
inst✝³ : Semiring R
φ : ι → Type u_3
inst✝² : (i : ι) → AddCommMonoid (φ i)
inst✝¹ : (i : ι) → Module R (φ i)
inst✝ : DecidableEq ι
I J : Set ι
hd : Disjoint I J
hu : univ ⊆ I ∪ J
hI : I.Finite
this : univ ⊆ ↑hI.toFinset ∪ J
i : ι
⊢ ⨆ (_ : i ∈ hI.toFinset), range (stdBasis R φ i) ≤ ⨆ (_ : i ∈ I), range (stdBasis R φ i)

tactic: rw [Set.Finite.mem_toFinset]
state_before: R : Type u_1
ι : Type u_2
inst✝³ : Semiring R
φ : ι → Type u_3
inst✝² : (i : ι) → AddCommMonoid (φ i)
inst✝¹ : (i : ι) → Module R (φ i)
inst✝ : DecidableEq ι
I J : Set ι
hd : Disjoint I J
hu : univ ⊆ I ∪ J
hI : I.Finite
this : univ ⊆ ↑hI.toFinset ∪ J
i : ι
⊢ ⨆ (_ : i ∈ hI.toFinset), range (stdBasis R φ i) ≤ ⨆ (_ : i ∈ I), range (stdBasis R φ i)
state_after: no goals

tactic: rwa [hI.coe_toFinset]
state_before: R : Type u_1
ι : Type u_2
inst✝³ : Semiring R
φ : ι → Type u_3
inst✝² : (i : ι) → AddCommMonoid (φ i)
inst✝¹ : (i : ι) → Module R (φ i)
inst✝ : DecidableEq ι
I J : Set ι
hd : Disjoint I J
hu : univ ⊆ I ∪ J
hI : I.Finite
⊢ univ ⊆ ↑hI.toFinset ∪ J
state_after: no goals
Theorem: Subgroup.exists_smul_eq
File: Mathlib/GroupTheory/SchurZassenhaus.lean

tactic: rw [inv_pow, ← powCoprime_apply hH, Equiv.apply_symm_apply, mul_inv_self]
state_before: G : Type u_1
inst✝³ : Group G
H : Subgroup G
inst✝² : H.IsCommutative
inst✝¹ : H.FiniteIndex
α✝¹ β✝¹ : ↑(leftTransversals ↑H)
inst✝ : H.Normal
hH : (Nat.card ↥H).Coprime H.index
α✝ β✝ : H.QuotientDiff
β α : ↑(leftTransversals ↑H)
⊢ diff (MonoidHom.id ↥H) β α * ((powCoprime hH).symm (diff (MonoidHom.id ↥H) β α))⁻¹ ^ H.index = 1
state_after: no goals
Theorem: Ring.mul_inverse_cancel_left
File: Mathlib/Algebra/GroupWithZero/Units/Basic.lean

tactic: rw [← mul_assoc, mul_inverse_cancel x h, one_mul]
state_before: α : Type u_1
M₀ : Type u_2
G₀ : Type u_3
M₀' : Type u_4
G₀' : Type u_5
F : Type u_6
F' : Type u_7
inst✝ : MonoidWithZero M₀
x y : M₀
h : IsUnit x
⊢ x * (inverse x * y) = y
state_after: no goals
Theorem: Set.mem_dite_univ_left
File: Mathlib/Data/Set/Basic.lean

tactic: split_ifs <;> simp_all
state_before: α : Type u
β : Type v
γ : Type w
ι : Sort x
a b : α
s s₁ s₂ t✝ t₁ t₂ u : Set α
p : Prop
inst✝ : Decidable p
t : ¬p → Set α
x : α
⊢ (x ∈ if h : p then univ else t h) ↔ ∀ (h : ¬p), x ∈ t h
state_after: no goals
Theorem: CircleDeg1Lift.translationNumber_zpow
File: Mathlib/Dynamics/Circle/RotationNumber/TranslationNumber.lean

tactic: simp [translationNumber_pow f n]
state_before: f✝ g : CircleDeg1Lift
f : CircleDeg1Liftˣ
n : ℕ
⊢ τ ↑(f ^ ↑n) = ↑↑n * τ ↑f
state_after: no goals

tactic: simp
state_before: f✝ g : CircleDeg1Lift
f : CircleDeg1Liftˣ
n : ℕ
⊢ τ ↑(f ^ -[n+1]) = ↑-[n+1] * τ ↑f
state_after: f✝ g : CircleDeg1Lift
f : CircleDeg1Liftˣ
n : ℕ
⊢ -((↑n + 1) * τ ↑f) = (-1 + -↑n) * τ ↑f

tactic: ring
state_before: f✝ g : CircleDeg1Lift
f : CircleDeg1Liftˣ
n : ℕ
⊢ -((↑n + 1) * τ ↑f) = (-1 + -↑n) * τ ↑f
state_after: no goals
Theorem: Matrix.range_cons_empty
File: Mathlib/Data/Fin/VecNotation.lean

tactic: rw [range_cons, range_empty, Set.union_empty]
state_before: α : Type u
m n o : ℕ
m' : Type u_1
n' : Type u_2
o' : Type u_3
x : α
u : Fin 0 → α
⊢ Set.range (vecCons x u) = {x}
state_after: no goals
Theorem: Finset.mem_finsuppAntidiag'
File: Mathlib/Algebra/Order/Antidiag/Finsupp.lean

tactic: rw [mem_finsuppAntidiag, and_congr_right_iff]
state_before: ι : Type u_1
μ : Type u_2
μ' : Type u_3
inst✝⁶ : DecidableEq ι
inst✝⁵ : AddCommMonoid μ
inst✝⁴ : HasAntidiagonal μ
inst✝³ : DecidableEq μ
inst✝² : AddCommMonoid μ'
inst✝¹ : HasAntidiagonal μ'
inst✝ : DecidableEq μ'
s : Finset ι
n : μ
f : ι →₀ μ
⊢ f ∈ s.finsuppAntidiag n ↔ f.support ⊆ s ∧ s.sum ⇑f = n
state_after: ι : Type u_1
μ : Type u_2
μ' : Type u_3
inst✝⁶ : DecidableEq ι
inst✝⁵ : AddCommMonoid μ
inst✝⁴ : HasAntidiagonal μ
inst✝³ : DecidableEq μ
inst✝² : AddCommMonoid μ'
inst✝¹ : HasAntidiagonal μ'
inst✝ : DecidableEq μ'
s : Finset ι
n : μ
f : ι →₀ μ
⊢ f.support ⊆ s → ((f.sum fun x x => x) = n ↔ s.sum ⇑f = n)

tactic: intro hs
state_before: ι : Type u_1
μ : Type u_2
μ' : Type u_3
inst✝⁶ : DecidableEq ι
inst✝⁵ : AddCommMonoid μ
inst✝⁴ : HasAntidiagonal μ
inst✝³ : DecidableEq μ
inst✝² : AddCommMonoid μ'
inst✝¹ : HasAntidiagonal μ'
inst✝ : DecidableEq μ'
s : Finset ι
n : μ
f : ι →₀ μ
⊢ f.support ⊆ s → ((f.sum fun x x => x) = n ↔ s.sum ⇑f = n)
state_after: ι : Type u_1
μ : Type u_2
μ' : Type u_3
inst✝⁶ : DecidableEq ι
inst✝⁵ : AddCommMonoid μ
inst✝⁴ : HasAntidiagonal μ
inst✝³ : DecidableEq μ
inst✝² : AddCommMonoid μ'
inst✝¹ : HasAntidiagonal μ'
inst✝ : DecidableEq μ'
s : Finset ι
n : μ
f : ι →₀ μ
hs : f.support ⊆ s
⊢ (f.sum fun x x => x) = n ↔ s.sum ⇑f = n

tactic: rw [sum_of_support_subset _ hs]
state_before: ι : Type u_1
μ : Type u_2
μ' : Type u_3
inst✝⁶ : DecidableEq ι
inst✝⁵ : AddCommMonoid μ
inst✝⁴ : HasAntidiagonal μ
inst✝³ : DecidableEq μ
inst✝² : AddCommMonoid μ'
inst✝¹ : HasAntidiagonal μ'
inst✝ : DecidableEq μ'
s : Finset ι
n : μ
f : ι →₀ μ
hs : f.support ⊆ s
⊢ (f.sum fun x x => x) = n ↔ s.sum ⇑f = n
state_after: case h
ι : Type u_1
μ : Type u_2
μ' : Type u_3
inst✝⁶ : DecidableEq ι
inst✝⁵ : AddCommMonoid μ
inst✝⁴ : HasAntidiagonal μ
inst✝³ : DecidableEq μ
inst✝² : AddCommMonoid μ'
inst✝¹ : HasAntidiagonal μ'
inst✝ : DecidableEq μ'
s : Finset ι
n : μ
f : ι →₀ μ
hs : f.support ⊆ s
⊢ ∀ i ∈ s, 0 = 0

tactic: exact fun _ _ => rfl
state_before: case h
ι : Type u_1
μ : Type u_2
μ' : Type u_3
inst✝⁶ : DecidableEq ι
inst✝⁵ : AddCommMonoid μ
inst✝⁴ : HasAntidiagonal μ
inst✝³ : DecidableEq μ
inst✝² : AddCommMonoid μ'
inst✝¹ : HasAntidiagonal μ'
inst✝ : DecidableEq μ'
s : Finset ι
n : μ
f : ι →₀ μ
hs : f.support ⊆ s
⊢ ∀ i ∈ s, 0 = 0
state_after: no goals