1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: Homotopy.map_nullHomotopicMap
File: Mathlib/Algebra/Homology/Homotopy.lean

tactic: exact G.map (hom i j)
state_before: ι : Type u_1
V : Type u
inst✝⁴ : Category.{v, u} V
inst✝³ : Preadditive V
c : ComplexShape ι
C D E : HomologicalComplex V c
f g : C ⟶ D
h k : D ⟶ E
i✝ : ι
W : Type u_2
inst✝² : Category.{?u.127901, u_2} W
inst✝¹ : Preadditive W
G : V ⥤ W
inst✝ : G.Additive
hom : (i j : ι) → C.X i ⟶ D.X j
i j : ι
⊢ ((G.mapHomologicalComplex c).obj C).X i ⟶ ((G.mapHomologicalComplex c).obj D).X j
state_after: no goals

tactic: ext i
state_before: ι : Type u_1
V : Type u
inst✝⁴ : Category.{v, u} V
inst✝³ : Preadditive V
c : ComplexShape ι
C D E : HomologicalComplex V c
f g : C ⟶ D
h k : D ⟶ E
i : ι
W : Type u_2
inst✝² : Category.{u_3, u_2} W
inst✝¹ : Preadditive W
G : V ⥤ W
inst✝ : G.Additive
hom : (i j : ι) → C.X i ⟶ D.X j
⊢ (G.mapHomologicalComplex c).map (nullHomotopicMap hom) = nullHomotopicMap fun i j => G.map (hom i j)
state_after: case h
ι : Type u_1
V : Type u
inst✝⁴ : Category.{v, u} V
inst✝³ : Preadditive V
c : ComplexShape ι
C D E : HomologicalComplex V c
f g : C ⟶ D
h k : D ⟶ E
i✝ : ι
W : Type u_2
inst✝² : Category.{u_3, u_2} W
inst✝¹ : Preadditive W
G : V ⥤ W
inst✝ : G.Additive
hom : (i j : ι) → C.X i ⟶ D.X j
i : ι
⊢ ((G.mapHomologicalComplex c).map (nullHomotopicMap hom)).f i = (nullHomotopicMap fun i j => G.map (hom i j)).f i

tactic: dsimp [nullHomotopicMap, dNext, prevD]
state_before: case h
ι : Type u_1
V : Type u
inst✝⁴ : Category.{v, u} V
inst✝³ : Preadditive V
c : ComplexShape ι
C D E : HomologicalComplex V c
f g : C ⟶ D
h k : D ⟶ E
i✝ : ι
W : Type u_2
inst✝² : Category.{u_3, u_2} W
inst✝¹ : Preadditive W
G : V ⥤ W
inst✝ : G.Additive
hom : (i j : ι) → C.X i ⟶ D.X j
i : ι
⊢ ((G.mapHomologicalComplex c).map (nullHomotopicMap hom)).f i = (nullHomotopicMap fun i j => G.map (hom i j)).f i
state_after: case h
ι : Type u_1
V : Type u
inst✝⁴ : Category.{v, u} V
inst✝³ : Preadditive V
c : ComplexShape ι
C D E : HomologicalComplex V c
f g : C ⟶ D
h k : D ⟶ E
i✝ : ι
W : Type u_2
inst✝² : Category.{u_3, u_2} W
inst✝¹ : Preadditive W
G : V ⥤ W
inst✝ : G.Additive
hom : (i j : ι) → C.X i ⟶ D.X j
i : ι
⊢ G.map (C.d i (c.next i) ≫ hom (c.next i) i + hom i (c.prev i) ≫ D.d (c.prev i) i) =
    G.map (C.d i (c.next i)) ≫ G.map (hom (c.next i) i) + G.map (hom i (c.prev i)) ≫ G.map (D.d (c.prev i) i)

tactic: simp only [G.map_comp, Functor.map_add]
state_before: case h
ι : Type u_1
V : Type u
inst✝⁴ : Category.{v, u} V
inst✝³ : Preadditive V
c : ComplexShape ι
C D E : HomologicalComplex V c
f g : C ⟶ D
h k : D ⟶ E
i✝ : ι
W : Type u_2
inst✝² : Category.{u_3, u_2} W
inst✝¹ : Preadditive W
G : V ⥤ W
inst✝ : G.Additive
hom : (i j : ι) → C.X i ⟶ D.X j
i : ι
⊢ G.map (C.d i (c.next i) ≫ hom (c.next i) i + hom i (c.prev i) ≫ D.d (c.prev i) i) =
    G.map (C.d i (c.next i)) ≫ G.map (hom (c.next i) i) + G.map (hom i (c.prev i)) ≫ G.map (D.d (c.prev i) i)
state_after: no goals
Theorem: CategoryTheory.Functor.Faithful.of_iso
File: Mathlib/CategoryTheory/Functor/FullyFaithful.lean

tactic: rw [← NatIso.naturality_1 α.symm, h, NatIso.naturality_1 α.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 F' : C ⥤ D
G : D ⥤ E
inst✝ : F.Faithful
α : F ≅ F'
X✝ Y✝ : C
a₁✝ a₂✝ : X✝ ⟶ Y✝
h : F'.map a₁✝ = F'.map a₂✝
⊢ F.map a₁✝ = F.map a₂✝
state_after: no goals
Theorem: CategoryTheory.biproduct_ι_comp_leftDistributor_hom
File: Mathlib/CategoryTheory/Monoidal/Preadditive.lean

tactic: simp [leftDistributor_hom, Preadditive.comp_sum, ← MonoidalCategory.whiskerLeft_comp_assoc,
  biproduct.ι_π, whiskerLeft_dite, dite_comp]
state_before: C : Type u_1
inst✝⁵ : Category.{u_2, u_1} C
inst✝⁴ : Preadditive C
inst✝³ : MonoidalCategory C
inst✝² : MonoidalPreadditive C
inst✝¹ : HasFiniteBiproducts C
J : Type
inst✝ : Fintype J
X : C
f : J → C
j : J
⊢ X ◁ biproduct.ι f j ≫ (leftDistributor X f).hom = biproduct.ι (fun j => X ⊗ f j) j
state_after: no goals
Theorem: CategoryTheory.ShortComplex.exact_iff_of_concreteCategory
File: Mathlib/Algebra/Homology/ShortComplex/ConcreteCategory.lean

tactic: rw [S.exact_iff_exact_map_forget₂, ab_exact_iff]
state_before: C : Type u
inst✝⁷ : Category.{v, u} C
inst✝⁶ : ConcreteCategory C
inst✝⁵ : HasForget₂ C Ab
inst✝⁴ : Preadditive C
inst✝³ : (forget₂ C Ab).Additive
inst✝² : (forget₂ C Ab).PreservesHomology
inst✝¹ : HasZeroObject C
S : ShortComplex C
inst✝ : S.HasHomology
⊢ S.Exact ↔
    ∀ (x₂ : ↑((forget₂ C Ab).obj S.X₂)), ((forget₂ C Ab).map S.g) x₂ = 0 → ∃ x₁, ((forget₂ C Ab).map S.f) x₁ = x₂
state_after: C : Type u
inst✝⁷ : Category.{v, u} C
inst✝⁶ : ConcreteCategory C
inst✝⁵ : HasForget₂ C Ab
inst✝⁴ : Preadditive C
inst✝³ : (forget₂ C Ab).Additive
inst✝² : (forget₂ C Ab).PreservesHomology
inst✝¹ : HasZeroObject C
S : ShortComplex C
inst✝ : S.HasHomology
⊢ (∀ (x₂ : ↑(S.map (forget₂ C Ab)).X₂), (S.map (forget₂ C Ab)).g x₂ = 0 → ∃ x₁, (S.map (forget₂ C Ab)).f x₁ = x₂) ↔
    ∀ (x₂ : ↑((forget₂ C Ab).obj S.X₂)), ((forget₂ C Ab).map S.g) x₂ = 0 → ∃ x₁, ((forget₂ C Ab).map S.f) x₁ = x₂

tactic: rfl
state_before: C : Type u
inst✝⁷ : Category.{v, u} C
inst✝⁶ : ConcreteCategory C
inst✝⁵ : HasForget₂ C Ab
inst✝⁴ : Preadditive C
inst✝³ : (forget₂ C Ab).Additive
inst✝² : (forget₂ C Ab).PreservesHomology
inst✝¹ : HasZeroObject C
S : ShortComplex C
inst✝ : S.HasHomology
⊢ (∀ (x₂ : ↑(S.map (forget₂ C Ab)).X₂), (S.map (forget₂ C Ab)).g x₂ = 0 → ∃ x₁, (S.map (forget₂ C Ab)).f x₁ = x₂) ↔
    ∀ (x₂ : ↑((forget₂ C Ab).obj S.X₂)), ((forget₂ C Ab).map S.g) x₂ = 0 → ∃ x₁, ((forget₂ C Ab).map S.f) x₁ = x₂
state_after: no goals
Theorem: div_lt_one_of_neg
File: Mathlib/Algebra/Order/Field/Basic.lean

tactic: rw [div_lt_iff_of_neg hb, one_mul]
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
inst✝ : LinearOrderedField α
a b c d : α
n : ℤ
hb : b < 0
⊢ a / b < 1 ↔ b < a
state_after: no goals
Theorem: map_seq
File: Mathlib/Control/Basic.lean

tactic: simp only [← pure_seq]
state_before: α β γ : Type u
F : Type u → Type v
inst✝¹ : Applicative F
inst✝ : LawfulApplicative F
f : β → γ
x : F (α → β)
y : F α
⊢ (f <$> Seq.seq x fun x => y) = Seq.seq ((fun x => f ∘ x) <$> x) fun x => y
state_after: α β γ : Type u
F : Type u → Type v
inst✝¹ : Applicative F
inst✝ : LawfulApplicative F
f : β → γ
x : F (α → β)
y : F α
⊢ (Seq.seq (pure f) fun x_1 => Seq.seq x fun x => y) = Seq.seq (Seq.seq (pure fun x => f ∘ x) fun x_1 => x) fun x => y

tactic: simp [seq_assoc]
state_before: α β γ : Type u
F : Type u → Type v
inst✝¹ : Applicative F
inst✝ : LawfulApplicative F
f : β → γ
x : F (α → β)
y : F α
⊢ (Seq.seq (pure f) fun x_1 => Seq.seq x fun x => y) = Seq.seq (Seq.seq (pure fun x => f ∘ x) fun x_1 => x) fun x => y
state_after: no goals
Theorem: Asymptotics.IsBigO.hasFDerivWithinAt
File: Mathlib/Analysis/Calculus/FDeriv/Basic.lean

tactic: simp_rw [HasFDerivWithinAt, hasFDerivAtFilter_iff_isLittleO,
  h.eq_zero_of_norm_pow_within hx₀ hn.ne_bot, zero_apply, sub_zero,
  h.trans_isLittleO ((isLittleO_pow_sub_sub x₀ hn).mono nhdsWithin_le_nhds)]
state_before: 𝕜 : Type u_1
inst✝⁸ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace 𝕜 E
F : Type u_3
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
G : Type u_4
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
G' : Type u_5
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f f₀ f₁ g : E → F
f' f₀' f₁' g' e : E →L[𝕜] F
x : E
s✝ t : Set E
L L₁ L₂ : Filter E
s : Set E
x₀ : E
n : ℕ
h : f =O[𝓝[s] x₀] fun x => ‖x - x₀‖ ^ n
hx₀ : x₀ ∈ s
hn : 1 < n
⊢ HasFDerivWithinAt f 0 s x₀
state_after: no goals
Theorem: Stirling.log_stirlingSeq_bounded_by_constant
File: Mathlib/Analysis/SpecialFunctions/Stirling.lean

tactic: obtain ⟨d, h⟩ := log_stirlingSeq_bounded_aux
state_before: ⊢ ∃ c, ∀ (n : ℕ), c ≤ Real.log (stirlingSeq (n + 1))
state_after: case intro
d : ℝ
h : ∀ (n : ℕ), Real.log (stirlingSeq 1) - Real.log (stirlingSeq (n + 1)) ≤ d
⊢ ∃ c, ∀ (n : ℕ), c ≤ Real.log (stirlingSeq (n + 1))

tactic: exact ⟨log (stirlingSeq 1) - d, fun n => sub_le_comm.mp (h n)⟩
state_before: case intro
d : ℝ
h : ∀ (n : ℕ), Real.log (stirlingSeq 1) - Real.log (stirlingSeq (n + 1)) ≤ d
⊢ ∃ c, ∀ (n : ℕ), c ≤ Real.log (stirlingSeq (n + 1))
state_after: no goals
Theorem: SimpleGraph.Walk.isHamiltonianCycle_iff_isCycle_and_support_count_tail_eq_one
File: Mathlib/Combinatorics/SimpleGraph/Hamiltonian.lean

tactic: simp only [isHamiltonianCycle_isCycle_and_isHamiltonian_tail, IsHamiltonian, support_tail,
  exists_prop]
state_before: α : Type u_1
β : Type u_2
inst✝³ : Fintype α
inst✝² : Fintype β
inst✝¹ : DecidableEq α
inst✝ : DecidableEq β
G : SimpleGraph α
a b : α
p✝ : G.Walk a b
p : G.Walk a a
⊢ p.IsHamiltonianCycle ↔ p.IsCycle ∧ ∀ (a_1 : α), List.count a_1 p.support.tail = 1
state_after: no goals
Theorem: MeasureTheory.SimpleFunc.norm_setToSimpleFunc_le_sum_opNorm
File: Mathlib/MeasureTheory/Integral/SetToL1.lean

tactic: refine Finset.sum_le_sum fun b _ => ?_
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 α
m : MeasurableSpace α
T : Set α → F' →L[ℝ] F
f : α →ₛ F'
⊢ ∑ x ∈ f.range, ‖(T (↑f ⁻¹' {x})) x‖ ≤ ∑ x ∈ f.range, ‖T (↑f ⁻¹' {x})‖ * ‖x‖
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 α
m : MeasurableSpace α
T : Set α → F' →L[ℝ] F
f : α →ₛ F'
b : F'
x✝ : b ∈ f.range
⊢ ‖(T (↑f ⁻¹' {b})) b‖ ≤ ‖T (↑f ⁻¹' {b})‖ * ‖b‖

tactic: simp_rw [ContinuousLinearMap.le_opNorm]
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 α
m : MeasurableSpace α
T : Set α → F' →L[ℝ] F
f : α →ₛ F'
b : F'
x✝ : b ∈ f.range
⊢ ‖(T (↑f ⁻¹' {b})) b‖ ≤ ‖T (↑f ⁻¹' {b})‖ * ‖b‖
state_after: no goals
Theorem: Ideal.Quotient.index_eq_zero
File: Mathlib/Algebra/CharP/Quotient.lean

tactic: rw [AddSubgroup.index, Nat.card_eq]
state_before: R : Type u_1
inst✝ : CommRing R
I : Ideal R
⊢ ↑(Submodule.toAddSubgroup I).index = 0
state_after: R : Type u_1
inst✝ : CommRing R
I : Ideal R
⊢ ↑(if h : Finite (R ⧸ Submodule.toAddSubgroup I) then Fintype.card (R ⧸ Submodule.toAddSubgroup I) else 0) = 0

tactic: split_ifs with hq
state_before: R : Type u_1
inst✝ : CommRing R
I : Ideal R
⊢ ↑(if h : Finite (R ⧸ Submodule.toAddSubgroup I) then Fintype.card (R ⧸ Submodule.toAddSubgroup I) else 0) = 0
state_after: case pos
R : Type u_1
inst✝ : CommRing R
I : Ideal R
hq : Finite (R ⧸ Submodule.toAddSubgroup I)
⊢ ↑(Fintype.card (R ⧸ Submodule.toAddSubgroup I)) = 0

case neg
R : Type u_1
inst✝ : CommRing R
I : Ideal R
hq : ¬Finite (R ⧸ Submodule.toAddSubgroup I)
⊢ ↑0 = 0

tactic: swap
state_before: case pos
R : Type u_1
inst✝ : CommRing R
I : Ideal R
hq : Finite (R ⧸ Submodule.toAddSubgroup I)
⊢ ↑(Fintype.card (R ⧸ Submodule.toAddSubgroup I)) = 0

case neg
R : Type u_1
inst✝ : CommRing R
I : Ideal R
hq : ¬Finite (R ⧸ Submodule.toAddSubgroup I)
⊢ ↑0 = 0
state_after: case neg
R : Type u_1
inst✝ : CommRing R
I : Ideal R
hq : ¬Finite (R ⧸ Submodule.toAddSubgroup I)
⊢ ↑0 = 0

case pos
R : Type u_1
inst✝ : CommRing R
I : Ideal R
hq : Finite (R ⧸ Submodule.toAddSubgroup I)
⊢ ↑(Fintype.card (R ⧸ Submodule.toAddSubgroup I)) = 0

tactic: letI : Fintype (R ⧸ I) := @Fintype.ofFinite _ hq
state_before: case pos
R : Type u_1
inst✝ : CommRing R
I : Ideal R
hq : Finite (R ⧸ Submodule.toAddSubgroup I)
⊢ ↑(Fintype.card (R ⧸ Submodule.toAddSubgroup I)) = 0
state_after: case pos
R : Type u_1
inst✝ : CommRing R
I : Ideal R
hq : Finite (R ⧸ Submodule.toAddSubgroup I)
this : Fintype (R ⧸ I) := Fintype.ofFinite (R ⧸ I)
⊢ ↑(Fintype.card (R ⧸ Submodule.toAddSubgroup I)) = 0

tactic: exact Nat.cast_card_eq_zero (R ⧸ I)
state_before: case pos
R : Type u_1
inst✝ : CommRing R
I : Ideal R
hq : Finite (R ⧸ Submodule.toAddSubgroup I)
this : Fintype (R ⧸ I) := Fintype.ofFinite (R ⧸ I)
⊢ ↑(Fintype.card (R ⧸ Submodule.toAddSubgroup I)) = 0
state_after: no goals

tactic: simp
state_before: case neg
R : Type u_1
inst✝ : CommRing R
I : Ideal R
hq : ¬Finite (R ⧸ Submodule.toAddSubgroup I)
⊢ ↑0 = 0
state_after: no goals
Theorem: Polynomial.dickson_add_two
File: Mathlib/RingTheory/Polynomial/Dickson.lean

tactic: rw [dickson]
state_before: R : Type u_1
S : Type u_2
inst✝¹ : CommRing R
inst✝ : CommRing S
k : ℕ
a : R
n : ℕ
⊢ dickson k a (n + 2) = X * dickson k a (n + 1) - C a * dickson k a n
state_after: no goals
Theorem: homology'.lift_ι
File: Mathlib/CategoryTheory/Abelian/Homology.lean

tactic: dsimp [ι, lift]
state_before: A : Type u
inst✝¹ : Category.{v, u} A
inst✝ : Abelian A
X Y Z : A
f : X ⟶ Y
g : Y ⟶ Z
w : f ≫ g = 0
W : A
e : W ⟶ cokernel f
he : e ≫ cokernel.desc f g w = 0
⊢ lift f g w e he ≫ ι f g w = e
state_after: A : Type u
inst✝¹ : Category.{v, u} A
inst✝ : Abelian A
X Y Z : A
f : X ⟶ Y
g : Y ⟶ Z
w : f ≫ g = 0
W : A
e : W ⟶ cokernel f
he : e ≫ cokernel.desc f g w = 0
⊢ (kernel.lift (cokernel.desc f g w) e he ≫ (homology'IsoKernelDesc f g w).inv) ≫
      (homology'IsoKernelDesc f g w).hom ≫ kernel.ι (cokernel.desc f g w) =
    e

tactic: simp
state_before: A : Type u
inst✝¹ : Category.{v, u} A
inst✝ : Abelian A
X Y Z : A
f : X ⟶ Y
g : Y ⟶ Z
w : f ≫ g = 0
W : A
e : W ⟶ cokernel f
he : e ≫ cokernel.desc f g w = 0
⊢ (kernel.lift (cokernel.desc f g w) e he ≫ (homology'IsoKernelDesc f g w).inv) ≫
      (homology'IsoKernelDesc f g w).hom ≫ kernel.ι (cokernel.desc f g w) =
    e
state_after: no goals
Theorem: Set.encard_eq_coe_toFinset_card
File: Mathlib/Data/Set/Card.lean

tactic: have h := toFinite s
state_before: α : Type u_1
β : Type u_2
s✝ t s : Set α
inst✝ : Fintype ↑s
⊢ s.encard = ↑s.toFinset.card
state_after: α : Type u_1
β : Type u_2
s✝ t s : Set α
inst✝ : Fintype ↑s
h : s.Finite
⊢ s.encard = ↑s.toFinset.card

tactic: rw [h.encard_eq_coe_toFinset_card, toFinite_toFinset]
state_before: α : Type u_1
β : Type u_2
s✝ t s : Set α
inst✝ : Fintype ↑s
h : s.Finite
⊢ s.encard = ↑s.toFinset.card
state_after: no goals
Theorem: add_self
File: Mathlib/Algebra/Ring/BooleanRing.lean

tactic: have : a + a = a + a + (a + a) :=
  calc
    a + a = (a + a) * (a + a) := by rw [mul_self]
    _ = a * a + a * a + (a * a + a * a) := by rw [add_mul, mul_add]
    _ = a + a + (a + a) := by rw [mul_self]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : BooleanRing α
a b : α
⊢ a + a = 0
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : BooleanRing α
a b : α
this : a + a = a + a + (a + a)
⊢ a + a = 0

tactic: rwa [self_eq_add_left] at this
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : BooleanRing α
a b : α
this : a + a = a + a + (a + a)
⊢ a + a = 0
state_after: no goals

tactic: rw [mul_self]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : BooleanRing α
a b : α
⊢ a + a = (a + a) * (a + a)
state_after: no goals

tactic: rw [add_mul, mul_add]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : BooleanRing α
a b : α
⊢ (a + a) * (a + a) = a * a + a * a + (a * a + a * a)
state_after: no goals

tactic: rw [mul_self]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : BooleanRing α
a b : α
⊢ a * a + a * a + (a * a + a * a) = a + a + (a + a)
state_after: no goals
Theorem: CategoryTheory.Limits.imageSubobject_arrow'
File: Mathlib/CategoryTheory/Subobject/Limits.lean

tactic: simp [imageSubobjectIso]
state_before: C : Type u
inst✝¹ : Category.{v, u} C
X Y Z : C
f : X ⟶ Y
inst✝ : HasImage f
⊢ (imageSubobjectIso f).inv ≫ (imageSubobject f).arrow = image.ι f
state_after: no goals
Theorem: MeasureTheory.snorm_le_snorm_of_exponent_le
File: Mathlib/MeasureTheory/Function/LpSeminorm/CompareExp.lean

tactic: simp [measure_univ]
state_before: α : Type u_1
E : Type u_2
m : MeasurableSpace α
inst✝¹ : NormedAddCommGroup E
μ : Measure α
f : α → E
p q : ℝ≥0∞
hpq : p ≤ q
inst✝ : IsProbabilityMeasure μ
hf : AEStronglyMeasurable f μ
⊢ snorm f q μ * μ Set.univ ^ (1 / p.toReal - 1 / q.toReal) = snorm f q μ
state_after: no goals
Theorem: Finset.image_image₂_antidistrib_left
File: Mathlib/Data/Finset/NAry.lean

tactic: push_cast
state_before: α : Type u_1
α' : Type u_2
β : Type u_3
β' : Type u_4
γ : Type u_5
γ' : Type u_6
δ : Type u_7
δ' : Type u_8
ε : Type u_9
ε' : Type u_10
ζ : Type u_11
ζ' : Type u_12
ν : Type u_13
inst✝⁷ : DecidableEq α'
inst✝⁶ : DecidableEq β'
inst✝⁵ : DecidableEq γ
inst✝⁴ : DecidableEq γ'
inst✝³ : DecidableEq δ
inst✝² : DecidableEq δ'
inst✝¹ : DecidableEq ε
inst✝ : DecidableEq ε'
f f'✝ : α → β → γ
g✝ g'✝ : α → β → γ → δ
s s' : Finset α
t t' : Finset β
u u' : Finset γ
a a' : α
b b' : β
c : γ
g : γ → δ
f' : β' → α → δ
g' : β → β'
h_antidistrib : ∀ (a : α) (b : β), g (f a b) = f' (g' b) a
⊢ ↑(image g (image₂ f s t)) = ↑(image₂ f' (image g' t) s)
state_after: α : Type u_1
α' : Type u_2
β : Type u_3
β' : Type u_4
γ : Type u_5
γ' : Type u_6
δ : Type u_7
δ' : Type u_8
ε : Type u_9
ε' : Type u_10
ζ : Type u_11
ζ' : Type u_12
ν : Type u_13
inst✝⁷ : DecidableEq α'
inst✝⁶ : DecidableEq β'
inst✝⁵ : DecidableEq γ
inst✝⁴ : DecidableEq γ'
inst✝³ : DecidableEq δ
inst✝² : DecidableEq δ'
inst✝¹ : DecidableEq ε
inst✝ : DecidableEq ε'
f f'✝ : α → β → γ
g✝ g'✝ : α → β → γ → δ
s s' : Finset α
t t' : Finset β
u u' : Finset γ
a a' : α
b b' : β
c : γ
g : γ → δ
f' : β' → α → δ
g' : β → β'
h_antidistrib : ∀ (a : α) (b : β), g (f a b) = f' (g' b) a
⊢ g '' image2 f ↑s ↑t = image2 f' (g' '' ↑t) ↑s

tactic: exact image_image2_antidistrib_left h_antidistrib
state_before: α : Type u_1
α' : Type u_2
β : Type u_3
β' : Type u_4
γ : Type u_5
γ' : Type u_6
δ : Type u_7
δ' : Type u_8
ε : Type u_9
ε' : Type u_10
ζ : Type u_11
ζ' : Type u_12
ν : Type u_13
inst✝⁷ : DecidableEq α'
inst✝⁶ : DecidableEq β'
inst✝⁵ : DecidableEq γ
inst✝⁴ : DecidableEq γ'
inst✝³ : DecidableEq δ
inst✝² : DecidableEq δ'
inst✝¹ : DecidableEq ε
inst✝ : DecidableEq ε'
f f'✝ : α → β → γ
g✝ g'✝ : α → β → γ → δ
s s' : Finset α
t t' : Finset β
u u' : Finset γ
a a' : α
b b' : β
c : γ
g : γ → δ
f' : β' → α → δ
g' : β → β'
h_antidistrib : ∀ (a : α) (b : β), g (f a b) = f' (g' b) a
⊢ g '' image2 f ↑s ↑t = image2 f' (g' '' ↑t) ↑s
state_after: no goals
Theorem: IsCyclic.ext
File: Mathlib/GroupTheory/SpecificGroups/Cyclic.lean

tactic: obtain ⟨g, hg⟩ := IsCyclic.exists_generator (α := G)
state_before: α : Type u
a✝ : α
inst✝⁵ : Group α
inst✝⁴ : DecidableEq α
inst✝³ : Fintype α
G : Type u_1
inst✝² : Group G
inst✝¹ : Fintype G
inst✝ : IsCyclic G
d : ℕ
a b : ZMod d
hGcard : Fintype.card G = d
h : ∀ (t : G), t ^ a.val = t ^ b.val
⊢ a = b
state_after: case intro
α : Type u
a✝ : α
inst✝⁵ : Group α
inst✝⁴ : DecidableEq α
inst✝³ : Fintype α
G : Type u_1
inst✝² : Group G
inst✝¹ : Fintype G
inst✝ : IsCyclic G
d : ℕ
a b : ZMod d
hGcard : Fintype.card G = d
h : ∀ (t : G), t ^ a.val = t ^ b.val
g : G
hg : ∀ (x : G), x ∈ zpowers g
⊢ a = b

tactic: specialize h g
state_before: case intro
α : Type u
a✝ : α
inst✝⁵ : Group α
inst✝⁴ : DecidableEq α
inst✝³ : Fintype α
G : Type u_1
inst✝² : Group G
inst✝¹ : Fintype G
inst✝ : IsCyclic G
d : ℕ
a b : ZMod d
hGcard : Fintype.card G = d
h : ∀ (t : G), t ^ a.val = t ^ b.val
g : G
hg : ∀ (x : G), x ∈ zpowers g
⊢ a = b
state_after: case intro
α : Type u
a✝ : α
inst✝⁵ : Group α
inst✝⁴ : DecidableEq α
inst✝³ : Fintype α
G : Type u_1
inst✝² : Group G
inst✝¹ : Fintype G
inst✝ : IsCyclic G
d : ℕ
a b : ZMod d
hGcard : Fintype.card G = d
g : G
hg : ∀ (x : G), x ∈ zpowers g
h : g ^ a.val = g ^ b.val
⊢ a = b

tactic: subst hGcard
state_before: case intro
α : Type u
a✝ : α
inst✝⁵ : Group α
inst✝⁴ : DecidableEq α
inst✝³ : Fintype α
G : Type u_1
inst✝² : Group G
inst✝¹ : Fintype G
inst✝ : IsCyclic G
d : ℕ
a b : ZMod d
hGcard : Fintype.card G = d
g : G
hg : ∀ (x : G), x ∈ zpowers g
h : g ^ a.val = g ^ b.val
⊢ a = b
state_after: case intro
α : Type u
a✝ : α
inst✝⁵ : Group α
inst✝⁴ : DecidableEq α
inst✝³ : Fintype α
G : Type u_1
inst✝² : Group G
inst✝¹ : Fintype G
inst✝ : IsCyclic G
g : G
hg : ∀ (x : G), x ∈ zpowers g
a b : ZMod (Fintype.card G)
h : g ^ a.val = g ^ b.val
⊢ a = b

tactic: rw [pow_eq_pow_iff_modEq, orderOf_eq_card_of_forall_mem_zpowers hg,
  ← ZMod.natCast_eq_natCast_iff] at h
state_before: case intro
α : Type u
a✝ : α
inst✝⁵ : Group α
inst✝⁴ : DecidableEq α
inst✝³ : Fintype α
G : Type u_1
inst✝² : Group G
inst✝¹ : Fintype G
inst✝ : IsCyclic G
g : G
hg : ∀ (x : G), x ∈ zpowers g
a b : ZMod (Fintype.card G)
h : g ^ a.val = g ^ b.val
⊢ a = b
state_after: case intro
α : Type u
a✝ : α
inst✝⁵ : Group α
inst✝⁴ : DecidableEq α
inst✝³ : Fintype α
G : Type u_1
inst✝² : Group G
inst✝¹ : Fintype G
inst✝ : IsCyclic G
g : G
hg : ∀ (x : G), x ∈ zpowers g
a b : ZMod (Fintype.card G)
h : ↑a.val = ↑b.val
⊢ a = b

tactic: simpa [ZMod.natCast_val, ZMod.cast_id'] using h
state_before: case intro
α : Type u
a✝ : α
inst✝⁵ : Group α
inst✝⁴ : DecidableEq α
inst✝³ : Fintype α
G : Type u_1
inst✝² : Group G
inst✝¹ : Fintype G
inst✝ : IsCyclic G
g : G
hg : ∀ (x : G), x ∈ zpowers g
a b : ZMod (Fintype.card G)
h : ↑a.val = ↑b.val
⊢ a = b
state_after: no goals
Theorem: ENNReal.div_top
File: Mathlib/Data/ENNReal/Inv.lean

tactic: rw [div_eq_mul_inv, inv_top, mul_zero]
state_before: a b c d : ℝ≥0∞
r p q : ℝ≥0
⊢ a / ⊤ = 0
state_after: no goals
Theorem: CategoryTheory.unit_transferNatTrans
File: Mathlib/CategoryTheory/Adjunction/Mates.lean

tactic: dsimp [transferNatTrans]
state_before: C : Type u₁
D : Type u₂
inst✝³ : Category.{v₁, u₁} C
inst✝² : Category.{v₂, u₂} D
E : Type u₃
F : Type u₄
inst✝¹ : Category.{v₃, u₃} E
inst✝ : Category.{v₄, u₄} F
G : C ⥤ E
H : D ⥤ F
L₁ : C ⥤ D
R₁ : D ⥤ C
L₂ : E ⥤ F
R₂ : F ⥤ E
adj₁ : L₁ ⊣ R₁
adj₂ : L₂ ⊣ R₂
f : G ⋙ L₂ ⟶ L₁ ⋙ H
X : C
⊢ G.map (adj₁.unit.app X) ≫ ((transferNatTrans adj₁ adj₂) f).app (L₁.obj X) =
    adj₂.unit.app (G.obj ((𝟭 C).obj X)) ≫ R₂.map (f.app ((𝟭 C).obj X))
state_after: C : Type u₁
D : Type u₂
inst✝³ : Category.{v₁, u₁} C
inst✝² : Category.{v₂, u₂} D
E : Type u₃
F : Type u₄
inst✝¹ : Category.{v₃, u₃} E
inst✝ : Category.{v₄, u₄} F
G : C ⥤ E
H : D ⥤ F
L₁ : C ⥤ D
R₁ : D ⥤ C
L₂ : E ⥤ F
R₂ : F ⥤ E
adj₁ : L₁ ⊣ R₁
adj₂ : L₂ ⊣ R₂
f : G ⋙ L₂ ⟶ L₁ ⋙ H
X : C
⊢ G.map (adj₁.unit.app X) ≫
      adj₂.unit.app (G.obj (R₁.obj (L₁.obj X))) ≫
        R₂.map (f.app (R₁.obj (L₁.obj X)) ≫ H.map (adj₁.counit.app (L₁.obj X))) =
    adj₂.unit.app (G.obj X) ≫ R₂.map (f.app X)

tactic: rw [← adj₂.unit_naturality_assoc, ← R₂.map_comp, ← Functor.comp_map G L₂, f.naturality_assoc,
  Functor.comp_map, ← H.map_comp]
state_before: C : Type u₁
D : Type u₂
inst✝³ : Category.{v₁, u₁} C
inst✝² : Category.{v₂, u₂} D
E : Type u₃
F : Type u₄
inst✝¹ : Category.{v₃, u₃} E
inst✝ : Category.{v₄, u₄} F
G : C ⥤ E
H : D ⥤ F
L₁ : C ⥤ D
R₁ : D ⥤ C
L₂ : E ⥤ F
R₂ : F ⥤ E
adj₁ : L₁ ⊣ R₁
adj₂ : L₂ ⊣ R₂
f : G ⋙ L₂ ⟶ L₁ ⋙ H
X : C
⊢ G.map (adj₁.unit.app X) ≫
      adj₂.unit.app (G.obj (R₁.obj (L₁.obj X))) ≫
        R₂.map (f.app (R₁.obj (L₁.obj X)) ≫ H.map (adj₁.counit.app (L₁.obj X))) =
    adj₂.unit.app (G.obj X) ≫ R₂.map (f.app X)
state_after: C : Type u₁
D : Type u₂
inst✝³ : Category.{v₁, u₁} C
inst✝² : Category.{v₂, u₂} D
E : Type u₃
F : Type u₄
inst✝¹ : Category.{v₃, u₃} E
inst✝ : Category.{v₄, u₄} F
G : C ⥤ E
H : D ⥤ F
L₁ : C ⥤ D
R₁ : D ⥤ C
L₂ : E ⥤ F
R₂ : F ⥤ E
adj₁ : L₁ ⊣ R₁
adj₂ : L₂ ⊣ R₂
f : G ⋙ L₂ ⟶ L₁ ⋙ H
X : C
⊢ adj₂.unit.app (G.obj X) ≫ R₂.map (f.app X ≫ H.map (L₁.map (adj₁.unit.app X) ≫ adj₁.counit.app (L₁.obj X))) =
    adj₂.unit.app (G.obj X) ≫ R₂.map (f.app X)

tactic: simp
state_before: C : Type u₁
D : Type u₂
inst✝³ : Category.{v₁, u₁} C
inst✝² : Category.{v₂, u₂} D
E : Type u₃
F : Type u₄
inst✝¹ : Category.{v₃, u₃} E
inst✝ : Category.{v₄, u₄} F
G : C ⥤ E
H : D ⥤ F
L₁ : C ⥤ D
R₁ : D ⥤ C
L₂ : E ⥤ F
R₂ : F ⥤ E
adj₁ : L₁ ⊣ R₁
adj₂ : L₂ ⊣ R₂
f : G ⋙ L₂ ⟶ L₁ ⋙ H
X : C
⊢ adj₂.unit.app (G.obj X) ≫ R₂.map (f.app X ≫ H.map (L₁.map (adj₁.unit.app X) ≫ adj₁.counit.app (L₁.obj X))) =
    adj₂.unit.app (G.obj X) ≫ R₂.map (f.app X)
state_after: no goals