1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: WithLp.prod_nndist_eq_of_L2
File: Mathlib/Analysis/NormedSpace/ProdLp.lean

tactic: push_cast
state_before: p : ℝ≥0∞
𝕜 : Type u_1
α : Type u_2
β : Type u_3
hp : Fact (1 ≤ p)
inst✝¹ : SeminormedAddCommGroup α
inst✝ : SeminormedAddCommGroup β
x y : WithLp 2 (α × β)
⊢ ↑(nndist x y) = ↑(NNReal.sqrt (nndist x.1 y.1 ^ 2 + nndist x.2 y.2 ^ 2))
state_after: p : ℝ≥0∞
𝕜 : Type u_1
α : Type u_2
β : Type u_3
hp : Fact (1 ≤ p)
inst✝¹ : SeminormedAddCommGroup α
inst✝ : SeminormedAddCommGroup β
x y : WithLp 2 (α × β)
⊢ dist x y = √(dist x.1 y.1 ^ 2 + dist x.2 y.2 ^ 2)

tactic: exact prod_dist_eq_of_L2 _ _
state_before: p : ℝ≥0∞
𝕜 : Type u_1
α : Type u_2
β : Type u_3
hp : Fact (1 ≤ p)
inst✝¹ : SeminormedAddCommGroup α
inst✝ : SeminormedAddCommGroup β
x y : WithLp 2 (α × β)
⊢ dist x y = √(dist x.1 y.1 ^ 2 + dist x.2 y.2 ^ 2)
state_after: no goals
Theorem: CochainComplex.HomComplex.Cochain.leftUnshift_zero
File: Mathlib/Algebra/Homology/HomotopyCategory/HomComplexShift.lean

tactic: change (leftShiftAddEquiv K L n a n' hn').symm 0 = 0
state_before: C : Type u
inst✝³ : Category.{v, u} C
inst✝² : Preadditive C
R : Type u_1
inst✝¹ : Ring R
inst✝ : Linear R C
K L M : CochainComplex C ℤ
n : ℤ
γ γ₁ γ₂ : Cochain K L n
a n' : ℤ
hn' : n + a = n'
⊢ leftUnshift 0 n hn' = 0
state_after: C : Type u
inst✝³ : Category.{v, u} C
inst✝² : Preadditive C
R : Type u_1
inst✝¹ : Ring R
inst✝ : Linear R C
K L M : CochainComplex C ℤ
n : ℤ
γ γ₁ γ₂ : Cochain K L n
a n' : ℤ
hn' : n + a = n'
⊢ (leftShiftAddEquiv K L n a n' hn').symm 0 = 0

tactic: apply _root_.map_zero
state_before: C : Type u
inst✝³ : Category.{v, u} C
inst✝² : Preadditive C
R : Type u_1
inst✝¹ : Ring R
inst✝ : Linear R C
K L M : CochainComplex C ℤ
n : ℤ
γ γ₁ γ₂ : Cochain K L n
a n' : ℤ
hn' : n + a = n'
⊢ (leftShiftAddEquiv K L n a n' hn').symm 0 = 0
state_after: no goals
Theorem: toIocMod_neg
File: Mathlib/Algebra/Order/ToIntervalMod.lean

tactic: simp_rw [toIocMod, toIcoMod, toIocDiv_neg, neg_smul, add_smul]
state_before: α : Type u_1
inst✝ : LinearOrderedAddCommGroup α
hα : Archimedean α
p : α
hp : 0 < p
a✝ b✝ c : α
n : ℤ
a b : α
⊢ toIocMod hp a (-b) = p - toIcoMod hp (-a) b
state_after: α : Type u_1
inst✝ : LinearOrderedAddCommGroup α
hα : Archimedean α
p : α
hp : 0 < p
a✝ b✝ c : α
n : ℤ
a b : α
⊢ -b - -(toIcoDiv hp (-a) b • p + 1 • p) = p - (b - toIcoDiv hp (-a) b • p)

tactic: abel
state_before: α : Type u_1
inst✝ : LinearOrderedAddCommGroup α
hα : Archimedean α
p : α
hp : 0 < p
a✝ b✝ c : α
n : ℤ
a b : α
⊢ -b - -(toIcoDiv hp (-a) b • p + 1 • p) = p - (b - toIcoDiv hp (-a) b • p)
state_after: no goals
Theorem: IsLowerSet.not_bddBelow
File: Mathlib/Order/UpperLower/Basic.lean

tactic: rintro ⟨a, ha⟩ ⟨b, hb⟩
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
κ : ι → Sort u_5
inst✝² : Preorder α
inst✝¹ : Preorder β
s : Set α
p : α → Prop
a : α
inst✝ : NoMinOrder α
hs : IsLowerSet s
⊢ s.Nonempty → ¬BddBelow s
state_after: case intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
κ : ι → Sort u_5
inst✝² : Preorder α
inst✝¹ : Preorder β
s : Set α
p : α → Prop
a✝ : α
inst✝ : NoMinOrder α
hs : IsLowerSet s
a : α
ha : a ∈ s
b : α
hb : b ∈ lowerBounds s
⊢ False

tactic: obtain ⟨c, hc⟩ := exists_lt b
state_before: case intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
κ : ι → Sort u_5
inst✝² : Preorder α
inst✝¹ : Preorder β
s : Set α
p : α → Prop
a✝ : α
inst✝ : NoMinOrder α
hs : IsLowerSet s
a : α
ha : a ∈ s
b : α
hb : b ∈ lowerBounds s
⊢ False
state_after: case intro.intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
κ : ι → Sort u_5
inst✝² : Preorder α
inst✝¹ : Preorder β
s : Set α
p : α → Prop
a✝ : α
inst✝ : NoMinOrder α
hs : IsLowerSet s
a : α
ha : a ∈ s
b : α
hb : b ∈ lowerBounds s
c : α
hc : c < b
⊢ False

tactic: exact hc.not_le (hb <| hs (hc.le.trans <| hb ha) ha)
state_before: case intro.intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
κ : ι → Sort u_5
inst✝² : Preorder α
inst✝¹ : Preorder β
s : Set α
p : α → Prop
a✝ : α
inst✝ : NoMinOrder α
hs : IsLowerSet s
a : α
ha : a ∈ s
b : α
hb : b ∈ lowerBounds s
c : α
hc : c < b
⊢ False
state_after: no goals
Theorem: CategoryTheory.Functor.mapIso_trans
File: Mathlib/CategoryTheory/Iso.lean

tactic: ext
state_before: C : Type u
inst✝¹ : Category.{v, u} C
X✝ Y✝ Z✝ : C
D : Type u₂
inst✝ : Category.{v₂, u₂} D
F : C ⥤ D
X Y Z : C
i : X ≅ Y
j : Y ≅ Z
⊢ F.mapIso (i ≪≫ j) = F.mapIso i ≪≫ F.mapIso j
state_after: case w
C : Type u
inst✝¹ : Category.{v, u} C
X✝ Y✝ Z✝ : C
D : Type u₂
inst✝ : Category.{v₂, u₂} D
F : C ⥤ D
X Y Z : C
i : X ≅ Y
j : Y ≅ Z
⊢ (F.mapIso (i ≪≫ j)).hom = (F.mapIso i ≪≫ F.mapIso j).hom

tactic: apply Functor.map_comp
state_before: case w
C : Type u
inst✝¹ : Category.{v, u} C
X✝ Y✝ Z✝ : C
D : Type u₂
inst✝ : Category.{v₂, u₂} D
F : C ⥤ D
X Y Z : C
i : X ≅ Y
j : Y ≅ Z
⊢ (F.mapIso (i ≪≫ j)).hom = (F.mapIso i ≪≫ F.mapIso j).hom
state_after: no goals
Theorem: UpperHalfPlane.smulAux'_im
File: Mathlib/Analysis/Complex/UpperHalfPlane/Basic.lean

tactic: rw [smulAux', Complex.div_im]
state_before: g : ↥GL(2, ℝ)⁺
z : ℍ
⊢ (smulAux' g z).im = (↑↑g).det * z.im / Complex.normSq (denom g z)
state_after: g : ↥GL(2, ℝ)⁺
z : ℍ
⊢ (num g z).im * (denom g z).re / Complex.normSq (denom g z) -
      (num g z).re * (denom g z).im / Complex.normSq (denom g z) =
    (↑↑g).det * z.im / Complex.normSq (denom g z)

tactic: field_simp [smulAux', num, denom]
state_before: g : ↥GL(2, ℝ)⁺
z : ℍ
⊢ (num g z).im * (denom g z).re / Complex.normSq (denom g z) -
      (num g z).re * (denom g z).im / Complex.normSq (denom g z) =
    (↑↑g).det * z.im / Complex.normSq (denom g z)
state_after: g : ↥GL(2, ℝ)⁺
z : ℍ
⊢ ↑↑g 0 0 * z.im * (↑↑g 1 0 * z.re + ↑↑g 1 1) / Complex.normSq (↑(↑↑g 1 0) * ↑z + ↑(↑↑g 1 1)) -
      (↑↑g 0 0 * z.re + ↑↑g 0 1) * (↑↑g 1 0 * z.im) / Complex.normSq (↑(↑↑g 1 0) * ↑z + ↑(↑↑g 1 1)) =
    (↑↑g).det * z.im / Complex.normSq (↑(↑↑g 1 0) * ↑z + ↑(↑↑g 1 1))

tactic: rw [Matrix.det_fin_two ((g : GL (Fin 2) ℝ) : Matrix (Fin 2) (Fin 2) ℝ)]
state_before: g : ↥GL(2, ℝ)⁺
z : ℍ
⊢ ↑↑g 0 0 * z.im * (↑↑g 1 0 * z.re + ↑↑g 1 1) / Complex.normSq (↑(↑↑g 1 0) * ↑z + ↑(↑↑g 1 1)) -
      (↑↑g 0 0 * z.re + ↑↑g 0 1) * (↑↑g 1 0 * z.im) / Complex.normSq (↑(↑↑g 1 0) * ↑z + ↑(↑↑g 1 1)) =
    (↑↑g).det * z.im / Complex.normSq (↑(↑↑g 1 0) * ↑z + ↑(↑↑g 1 1))
state_after: g : ↥GL(2, ℝ)⁺
z : ℍ
⊢ ↑↑g 0 0 * z.im * (↑↑g 1 0 * z.re + ↑↑g 1 1) / Complex.normSq (↑(↑↑g 1 0) * ↑z + ↑(↑↑g 1 1)) -
      (↑↑g 0 0 * z.re + ↑↑g 0 1) * (↑↑g 1 0 * z.im) / Complex.normSq (↑(↑↑g 1 0) * ↑z + ↑(↑↑g 1 1)) =
    (↑↑g 0 0 * ↑↑g 1 1 - ↑↑g 0 1 * ↑↑g 1 0) * z.im / Complex.normSq (↑(↑↑g 1 0) * ↑z + ↑(↑↑g 1 1))

tactic: ring
state_before: g : ↥GL(2, ℝ)⁺
z : ℍ
⊢ ↑↑g 0 0 * z.im * (↑↑g 1 0 * z.re + ↑↑g 1 1) / Complex.normSq (↑(↑↑g 1 0) * ↑z + ↑(↑↑g 1 1)) -
      (↑↑g 0 0 * z.re + ↑↑g 0 1) * (↑↑g 1 0 * z.im) / Complex.normSq (↑(↑↑g 1 0) * ↑z + ↑(↑↑g 1 1)) =
    (↑↑g 0 0 * ↑↑g 1 1 - ↑↑g 0 1 * ↑↑g 1 0) * z.im / Complex.normSq (↑(↑↑g 1 0) * ↑z + ↑(↑↑g 1 1))
state_after: no goals
Theorem: MvPFunctor.comp.get_mk
File: Mathlib/Data/PFunctor/Multivariate/Basic.lean

tactic: rfl
state_before: n m : ℕ
P : MvPFunctor.{u} n
Q : Fin2 n → MvPFunctor.{u} m
α β : TypeVec.{u} m
x : ↑P fun i => ↑(Q i) α
⊢ get (mk x) = x
state_after: no goals
Theorem: CategoryTheory.Subobject.factorThru_comp_arrow
File: Mathlib/CategoryTheory/Subobject/FactorThru.lean

tactic: ext
state_before: C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
X✝ Y✝ Z : C
D : Type u₂
inst✝ : Category.{v₂, u₂} D
X Y : C
P : Subobject Y
f : X ⟶ underlying.obj P
h : P.Factors (f ≫ P.arrow)
⊢ P.factorThru (f ≫ P.arrow) h = f
state_after: case h
C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
X✝ Y✝ Z : C
D : Type u₂
inst✝ : Category.{v₂, u₂} D
X Y : C
P : Subobject Y
f : X ⟶ underlying.obj P
h : P.Factors (f ≫ P.arrow)
⊢ P.factorThru (f ≫ P.arrow) h ≫ P.arrow = f ≫ P.arrow

tactic: simp
state_before: case h
C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
X✝ Y✝ Z : C
D : Type u₂
inst✝ : Category.{v₂, u₂} D
X Y : C
P : Subobject Y
f : X ⟶ underlying.obj P
h : P.Factors (f ≫ P.arrow)
⊢ P.factorThru (f ≫ P.arrow) h ≫ P.arrow = f ≫ P.arrow
state_after: no goals
Theorem: SimpleGraph.map_comap_le
File: Mathlib/Combinatorics/SimpleGraph/Maps.lean

tactic: rw [map_le_iff_le_comap]
state_before: V : Type u_1
W : Type u_2
X : Type u_3
G✝ : SimpleGraph V
G' : SimpleGraph W
u v : V
f : V ↪ W
G : SimpleGraph W
⊢ SimpleGraph.map f (SimpleGraph.comap (⇑f) G) ≤ G
state_after: no goals
Theorem: Cardinal.continuum_le_lift
File: Mathlib/SetTheory/Cardinal/Continuum.lean

tactic: rw [← lift_continuum.{v, u}, lift_le]
state_before: c : Cardinal.{u}
⊢ 𝔠 ≤ lift.{v, u} c ↔ 𝔠 ≤ c
state_after: no goals
Theorem: WittVector.frobenius_zmodp
File: Mathlib/RingTheory/WittVector/Frobenius.lean

tactic: simp only [ext_iff, coeff_frobenius_charP, ZMod.pow_card, eq_self_iff_true, forall_const]
state_before: p : ℕ
R : Type u_1
S : Type u_2
hp : Fact (Nat.Prime p)
inst✝² : CommRing R
inst✝¹ : CommRing S
inst✝ : CharP R p
x : 𝕎 (ZMod p)
⊢ frobenius x = x
state_after: no goals
Theorem: PNat.div_add_mod'
File: Mathlib/Data/PNat/Basic.lean

tactic: rw [mul_comm]
state_before: m k : ℕ+
⊢ m.div k * ↑k + ↑(m.mod k) = ↑m
state_after: m k : ℕ+
⊢ ↑k * m.div k + ↑(m.mod k) = ↑m

tactic: exact div_add_mod _ _
state_before: m k : ℕ+
⊢ ↑k * m.div k + ↑(m.mod k) = ↑m
state_after: no goals
Theorem: Polynomial.nthRootsFinset_zero
File: Mathlib/Algebra/Polynomial/Roots.lean

tactic: classical simp [nthRootsFinset_def]
state_before: R : Type u
S : Type v
T : Type w
a b : R
n : ℕ
inst✝¹ : CommRing R
inst✝ : IsDomain R
p q : R[X]
⊢ nthRootsFinset 0 R = ∅
state_after: no goals

tactic: simp [nthRootsFinset_def]
state_before: R : Type u
S : Type v
T : Type w
a b : R
n : ℕ
inst✝¹ : CommRing R
inst✝ : IsDomain R
p q : R[X]
⊢ nthRootsFinset 0 R = ∅
state_after: no goals
Theorem: List.Sublist.filter
File: .lake/packages/batteries/Batteries/Data/List/Lemmas.lean

tactic: rw [← filterMap_eq_filter]
state_before: α : Type u_1
p : α → Bool
l₁ l₂ : List α
s : l₁ <+ l₂
⊢ List.filter p l₁ <+ List.filter p l₂
state_after: α : Type u_1
p : α → Bool
l₁ l₂ : List α
s : l₁ <+ l₂
⊢ filterMap (Option.guard fun x => p x = true) l₁ <+ filterMap (Option.guard fun x => p x = true) l₂

tactic: apply s.filterMap
state_before: α : Type u_1
p : α → Bool
l₁ l₂ : List α
s : l₁ <+ l₂
⊢ filterMap (Option.guard fun x => p x = true) l₁ <+ filterMap (Option.guard fun x => p x = true) l₂
state_after: no goals
Theorem: Polynomial.rootSet_neg
File: Mathlib/Algebra/Polynomial/Roots.lean

tactic: rw [rootSet, aroots_neg, rootSet]
state_before: R : Type u
S✝ : Type v
T : Type w
a b : R
n : ℕ
inst✝⁵ : CommRing R
inst✝⁴ : IsDomain R
p✝ q : R[X]
inst✝³ : CommRing T
p : T[X]
S : Type u_1
inst✝² : CommRing S
inst✝¹ : IsDomain S
inst✝ : Algebra T S
⊢ (-p).rootSet S = p.rootSet S
state_after: no goals
Theorem: OrderEmbedding.image_Ioi
File: Mathlib/Order/UpperLower/Basic.lean

tactic: rw [← e.preimage_Ioi, image_preimage_eq_inter_range,
  inter_eq_left.2 <| he.Ioi_subset (mem_range_self _)]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
κ : ι → Sort u_5
inst✝¹ : Preorder α
inst✝ : Preorder β
s : Set α
p : α → Prop
a✝ : α
e : α ↪o β
he : IsUpperSet (range ⇑e)
a : α
⊢ ⇑e '' Ioi a = Ioi (e a)
state_after: no goals
Theorem: Nat.divisor_le
File: Mathlib/NumberTheory/Divisors.lean

tactic: cases' m with m
state_before: n m : ℕ
⊢ n ∈ m.divisors → n ≤ m
state_after: case zero
n : ℕ
⊢ n ∈ divisors 0 → n ≤ 0

case succ
n m : ℕ
⊢ n ∈ (m + 1).divisors → n ≤ m + 1

tactic: simp
state_before: case zero
n : ℕ
⊢ n ∈ divisors 0 → n ≤ 0
state_after: no goals

tactic: simp only [mem_divisors, Nat.succ_ne_zero m, and_true_iff, Ne, not_false_iff]
state_before: case succ
n m : ℕ
⊢ n ∈ (m + 1).divisors → n ≤ m + 1
state_after: case succ
n m : ℕ
⊢ n ∣ m + 1 → n ≤ m + 1

tactic: exact Nat.le_of_dvd (Nat.succ_pos m)
state_before: case succ
n m : ℕ
⊢ n ∣ m + 1 → n ≤ m + 1
state_after: no goals
Theorem: le_sup_sdiff_sup_sdiff
File: Mathlib/Order/Heyting/Basic.lean

tactic: simpa using @sdiff_sdiff_sdiff_le_sdiff
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
inst✝ : GeneralizedCoheytingAlgebra α
a b c d : α
⊢ a ≤ b ⊔ (a \ c ⊔ c \ b)
state_after: no goals
Theorem: SimpleGraph.Preconnected.boxProd
File: Mathlib/Combinatorics/SimpleGraph/Prod.lean

tactic: rintro x y
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
G : SimpleGraph α
H : SimpleGraph β
hG : G.Preconnected
hH : H.Preconnected
⊢ (G □ H).Preconnected
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
G : SimpleGraph α
H : SimpleGraph β
hG : G.Preconnected
hH : H.Preconnected
x y : α × β
⊢ (G □ H).Reachable x y

tactic: obtain ⟨w₁⟩ := hG x.1 y.1
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
G : SimpleGraph α
H : SimpleGraph β
hG : G.Preconnected
hH : H.Preconnected
x y : α × β
⊢ (G □ H).Reachable x y
state_after: case intro
α : Type u_1
β : Type u_2
γ : Type u_3
G : SimpleGraph α
H : SimpleGraph β
hG : G.Preconnected
hH : H.Preconnected
x y : α × β
w₁ : G.Walk x.1 y.1
⊢ (G □ H).Reachable x y

tactic: obtain ⟨w₂⟩ := hH x.2 y.2
state_before: case intro
α : Type u_1
β : Type u_2
γ : Type u_3
G : SimpleGraph α
H : SimpleGraph β
hG : G.Preconnected
hH : H.Preconnected
x y : α × β
w₁ : G.Walk x.1 y.1
⊢ (G □ H).Reachable x y
state_after: case intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
G : SimpleGraph α
H : SimpleGraph β
hG : G.Preconnected
hH : H.Preconnected
x y : α × β
w₁ : G.Walk x.1 y.1
w₂ : H.Walk x.2 y.2
⊢ (G □ H).Reachable x y

tactic: exact ⟨(w₁.boxProdLeft _ _).append (w₂.boxProdRight _ _)⟩
state_before: case intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
G : SimpleGraph α
H : SimpleGraph β
hG : G.Preconnected
hH : H.Preconnected
x y : α × β
w₁ : G.Walk x.1 y.1
w₂ : H.Walk x.2 y.2
⊢ (G □ H).Reachable x y
state_after: no goals
Theorem: IsometryEquiv.ediam_preimage
File: Mathlib/Topology/MetricSpace/Isometry.lean

tactic: rw [← image_symm, ediam_image]
state_before: ι : Type u_1
α : Type u
β : Type v
γ : Type w
inst✝² : PseudoEMetricSpace α
inst✝¹ : PseudoEMetricSpace β
inst✝ : PseudoEMetricSpace γ
h : α ≃ᵢ β
s : Set β
⊢ EMetric.diam (⇑h ⁻¹' s) = EMetric.diam s
state_after: no goals
Theorem: MonoidHomClass.isometry_iff_norm
File: Mathlib/Analysis/Normed/Group/Uniform.lean

tactic: simp only [isometry_iff_dist_eq, dist_eq_norm_div, ← map_div]
state_before: 𝓕 : Type u_1
α : Type u_2
E : Type u_3
F : Type u_4
inst✝³ : SeminormedGroup E
inst✝² : SeminormedGroup F
s : Set E
a a₁ a₂ b b₁ b₂ : E
r r₁ r₂ : ℝ
inst✝¹ : FunLike 𝓕 E F
inst✝ : MonoidHomClass 𝓕 E F
f : 𝓕
⊢ Isometry ⇑f ↔ ∀ (x : E), ‖f x‖ = ‖x‖
state_after: 𝓕 : Type u_1
α : Type u_2
E : Type u_3
F : Type u_4
inst✝³ : SeminormedGroup E
inst✝² : SeminormedGroup F
s : Set E
a a₁ a₂ b b₁ b₂ : E
r r₁ r₂ : ℝ
inst✝¹ : FunLike 𝓕 E F
inst✝ : MonoidHomClass 𝓕 E F
f : 𝓕
⊢ (∀ (x y : E), ‖f (x / y)‖ = ‖x / y‖) ↔ ∀ (x : E), ‖f x‖ = ‖x‖

tactic: refine ⟨fun h x => ?_, fun h x y => h _⟩
state_before: 𝓕 : Type u_1
α : Type u_2
E : Type u_3
F : Type u_4
inst✝³ : SeminormedGroup E
inst✝² : SeminormedGroup F
s : Set E
a a₁ a₂ b b₁ b₂ : E
r r₁ r₂ : ℝ
inst✝¹ : FunLike 𝓕 E F
inst✝ : MonoidHomClass 𝓕 E F
f : 𝓕
⊢ (∀ (x y : E), ‖f (x / y)‖ = ‖x / y‖) ↔ ∀ (x : E), ‖f x‖ = ‖x‖
state_after: 𝓕 : Type u_1
α : Type u_2
E : Type u_3
F : Type u_4
inst✝³ : SeminormedGroup E
inst✝² : SeminormedGroup F
s : Set E
a a₁ a₂ b b₁ b₂ : E
r r₁ r₂ : ℝ
inst✝¹ : FunLike 𝓕 E F
inst✝ : MonoidHomClass 𝓕 E F
f : 𝓕
h : ∀ (x y : E), ‖f (x / y)‖ = ‖x / y‖
x : E
⊢ ‖f x‖ = ‖x‖

tactic: simpa using h x 1
state_before: 𝓕 : Type u_1
α : Type u_2
E : Type u_3
F : Type u_4
inst✝³ : SeminormedGroup E
inst✝² : SeminormedGroup F
s : Set E
a a₁ a₂ b b₁ b₂ : E
r r₁ r₂ : ℝ
inst✝¹ : FunLike 𝓕 E F
inst✝ : MonoidHomClass 𝓕 E F
f : 𝓕
h : ∀ (x y : E), ‖f (x / y)‖ = ‖x / y‖
x : E
⊢ ‖f x‖ = ‖x‖
state_after: no goals
Theorem: CategoryTheory.oppositeShiftFunctorAdd'_inv_app
File: Mathlib/CategoryTheory/Shift/Opposite.lean

tactic: subst h
state_before: C : Type u_1
inst✝² : Category.{u_3, u_1} C
A : Type u_2
inst✝¹ : AddMonoid A
inst✝ : HasShift C A
X : OppositeShift C A
a b c : A
h : a + b = c
⊢ (shiftFunctorAdd' (OppositeShift C A) a b c h).inv.app X = ((shiftFunctorAdd' C a b c h).hom.app X.unop).op
state_after: C : Type u_1
inst✝² : Category.{u_3, u_1} C
A : Type u_2
inst✝¹ : AddMonoid A
inst✝ : HasShift C A
X : OppositeShift C A
a b : A
⊢ (shiftFunctorAdd' (OppositeShift C A) a b (a + b) ⋯).inv.app X =
    ((shiftFunctorAdd' C a b (a + b) ⋯).hom.app X.unop).op

tactic: simp only [shiftFunctorAdd'_eq_shiftFunctorAdd, oppositeShiftFunctorAdd_inv_app]
state_before: C : Type u_1
inst✝² : Category.{u_3, u_1} C
A : Type u_2
inst✝¹ : AddMonoid A
inst✝ : HasShift C A
X : OppositeShift C A
a b : A
⊢ (shiftFunctorAdd' (OppositeShift C A) a b (a + b) ⋯).inv.app X =
    ((shiftFunctorAdd' C a b (a + b) ⋯).hom.app X.unop).op
state_after: no goals
Theorem: CategoryTheory.Abelian.epi_of_cokernel_π_eq_zero
File: Mathlib/CategoryTheory/Abelian/Basic.lean

tactic: apply NormalMonoCategory.epi_of_zero_cokernel _ (cokernel f)
state_before: C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : Abelian C
P Q : C
f : P ⟶ Q
h : cokernel.π f = 0
⊢ Epi f
state_after: C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : Abelian C
P Q : C
f : P ⟶ Q
h : cokernel.π f = 0
⊢ IsColimit (CokernelCofork.ofπ 0 ⋯)

tactic: simp_rw [← h]
state_before: C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : Abelian C
P Q : C
f : P ⟶ Q
h : cokernel.π f = 0
⊢ IsColimit (CokernelCofork.ofπ 0 ⋯)
state_after: C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : Abelian C
P Q : C
f : P ⟶ Q
h : cokernel.π f = 0
⊢ IsColimit (CokernelCofork.ofπ (cokernel.π f) ⋯)

tactic: exact IsColimit.ofIsoColimit (colimit.isColimit (parallelPair f 0)) (isoOfπ _)
state_before: C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : Abelian C
P Q : C
f : P ⟶ Q
h : cokernel.π f = 0
⊢ IsColimit (CokernelCofork.ofπ (cokernel.π f) ⋯)
state_after: no goals
Theorem: MeasureTheory.Measure.InnerRegular.map_iff
File: Mathlib/MeasureTheory/Measure/Regular.lean

tactic: refine ⟨fun h ↦ ?_, fun h ↦ h.map f⟩
state_before: α : Type u_1
β : Type u_2
inst✝⁵ : MeasurableSpace α
inst✝⁴ : TopologicalSpace α
μ : Measure α
U : Set α
ε : ℝ≥0∞
inst✝³ : BorelSpace α
inst✝² : MeasurableSpace β
inst✝¹ : TopologicalSpace β
inst✝ : BorelSpace β
f : α ≃ₜ β
⊢ (map (⇑f) μ).InnerRegular ↔ μ.InnerRegular
state_after: α : Type u_1
β : Type u_2
inst✝⁵ : MeasurableSpace α
inst✝⁴ : TopologicalSpace α
μ : Measure α
U : Set α
ε : ℝ≥0∞
inst✝³ : BorelSpace α
inst✝² : MeasurableSpace β
inst✝¹ : TopologicalSpace β
inst✝ : BorelSpace β
f : α ≃ₜ β
h : (map (⇑f) μ).InnerRegular
⊢ μ.InnerRegular

tactic: convert h.map f.symm
state_before: α : Type u_1
β : Type u_2
inst✝⁵ : MeasurableSpace α
inst✝⁴ : TopologicalSpace α
μ : Measure α
U : Set α
ε : ℝ≥0∞
inst✝³ : BorelSpace α
inst✝² : MeasurableSpace β
inst✝¹ : TopologicalSpace β
inst✝ : BorelSpace β
f : α ≃ₜ β
h : (map (⇑f) μ).InnerRegular
⊢ μ.InnerRegular
state_after: case h.e'_4
α : Type u_1
β : Type u_2
inst✝⁵ : MeasurableSpace α
inst✝⁴ : TopologicalSpace α
μ : Measure α
U : Set α
ε : ℝ≥0∞
inst✝³ : BorelSpace α
inst✝² : MeasurableSpace β
inst✝¹ : TopologicalSpace β
inst✝ : BorelSpace β
f : α ≃ₜ β
h : (map (⇑f) μ).InnerRegular
⊢ μ = map (⇑f.symm) (map (⇑f) μ)

tactic: rw [map_map f.symm.continuous.measurable f.continuous.measurable]
state_before: case h.e'_4
α : Type u_1
β : Type u_2
inst✝⁵ : MeasurableSpace α
inst✝⁴ : TopologicalSpace α
μ : Measure α
U : Set α
ε : ℝ≥0∞
inst✝³ : BorelSpace α
inst✝² : MeasurableSpace β
inst✝¹ : TopologicalSpace β
inst✝ : BorelSpace β
f : α ≃ₜ β
h : (map (⇑f) μ).InnerRegular
⊢ μ = map (⇑f.symm) (map (⇑f) μ)
state_after: case h.e'_4
α : Type u_1
β : Type u_2
inst✝⁵ : MeasurableSpace α
inst✝⁴ : TopologicalSpace α
μ : Measure α
U : Set α
ε : ℝ≥0∞
inst✝³ : BorelSpace α
inst✝² : MeasurableSpace β
inst✝¹ : TopologicalSpace β
inst✝ : BorelSpace β
f : α ≃ₜ β
h : (map (⇑f) μ).InnerRegular
⊢ μ = map (⇑f.symm ∘ ⇑f) μ

tactic: simp
state_before: case h.e'_4
α : Type u_1
β : Type u_2
inst✝⁵ : MeasurableSpace α
inst✝⁴ : TopologicalSpace α
μ : Measure α
U : Set α
ε : ℝ≥0∞
inst✝³ : BorelSpace α
inst✝² : MeasurableSpace β
inst✝¹ : TopologicalSpace β
inst✝ : BorelSpace β
f : α ≃ₜ β
h : (map (⇑f) μ).InnerRegular
⊢ μ = map (⇑f.symm ∘ ⇑f) μ
state_after: no goals
Theorem: IsEllSequence.smul
File: Mathlib/NumberTheory/EllipticDivisibilitySequence.lean

tactic: linear_combination (norm := (simp only [Pi.smul_apply, smul_eq_mul]; ring1)) x ^ 4 * h m n r
state_before: R : Type u
S : Type v
inst✝¹ : CommRing R
inst✝ : CommRing S
W : ℤ → R
f : R →+* S
h : IsEllSequence W
x : R
m n r : ℤ
⊢ (x • W) (m + n) * (x • W) (m - n) * (x • W) r ^ 2 =
    (x • W) (m + r) * (x • W) (m - r) * (x • W) n ^ 2 - (x • W) (n + r) * (x • W) (n - r) * (x • W) m ^ 2
state_after: no goals

tactic: simp only [Pi.smul_apply, smul_eq_mul]
state_before: case a
R : Type u
S : Type v
inst✝¹ : CommRing R
inst✝ : CommRing S
W : ℤ → R
f : R →+* S
h : IsEllSequence W
x : R
m n r : ℤ
⊢ (x • W) (m + n) * (x • W) (m - n) * (x • W) r ^ 2 -
        ((x • W) (m + r) * (x • W) (m - r) * (x • W) n ^ 2 - (x • W) (n + r) * (x • W) (n - r) * (x • W) m ^ 2) -
      (x ^ 4 * (W (m + n) * W (m - n) * W r ^ 2) -
        x ^ 4 * (W (m + r) * W (m - r) * W n ^ 2 - W (n + r) * W (n - r) * W m ^ 2)) =
    0
state_after: case a
R : Type u
S : Type v
inst✝¹ : CommRing R
inst✝ : CommRing S
W : ℤ → R
f : R →+* S
h : IsEllSequence W
x : R
m n r : ℤ
⊢ x * W (m + n) * (x * W (m - n)) * (x * W r) ^ 2 -
        (x * W (m + r) * (x * W (m - r)) * (x * W n) ^ 2 - x * W (n + r) * (x * W (n - r)) * (x * W m) ^ 2) -
      (x ^ 4 * (W (m + n) * W (m - n) * W r ^ 2) -
        x ^ 4 * (W (m + r) * W (m - r) * W n ^ 2 - W (n + r) * W (n - r) * W m ^ 2)) =
    0

tactic: ring1
state_before: case a
R : Type u
S : Type v
inst✝¹ : CommRing R
inst✝ : CommRing S
W : ℤ → R
f : R →+* S
h : IsEllSequence W
x : R
m n r : ℤ
⊢ x * W (m + n) * (x * W (m - n)) * (x * W r) ^ 2 -
        (x * W (m + r) * (x * W (m - r)) * (x * W n) ^ 2 - x * W (n + r) * (x * W (n - r)) * (x * W m) ^ 2) -
      (x ^ 4 * (W (m + n) * W (m - n) * W r ^ 2) -
        x ^ 4 * (W (m + r) * W (m - r) * W n ^ 2 - W (n + r) * W (n - r) * W m ^ 2)) =
    0
state_after: no goals
Theorem: CategoryTheory.ShortComplex.RightHomologyMapData.opcyclesMap_eq
File: Mathlib/Algebra/Homology/ShortComplex/RightHomology.lean

tactic: dsimp [RightHomologyData.opcyclesIso, cyclesMapIso']
state_before: C : Type u_1
inst✝³ : Category.{u_2, u_1} C
inst✝² : HasZeroMorphisms C
S S₁ S₂ S₃ : ShortComplex C
φ : S₁ ⟶ S₂
h₁ : S₁.RightHomologyData
h₂ : S₂.RightHomologyData
γ : RightHomologyMapData φ h₁ h₂
inst✝¹ : S₁.HasRightHomology
inst✝ : S₂.HasRightHomology
⊢ opcyclesMap φ = h₁.opcyclesIso.hom ≫ γ.φQ ≫ h₂.opcyclesIso.inv
state_after: C : Type u_1
inst✝³ : Category.{u_2, u_1} C
inst✝² : HasZeroMorphisms C
S S₁ S₂ S₃ : ShortComplex C
φ : S₁ ⟶ S₂
h₁ : S₁.RightHomologyData
h₂ : S₂.RightHomologyData
γ : RightHomologyMapData φ h₁ h₂
inst✝¹ : S₁.HasRightHomology
inst✝ : S₂.HasRightHomology
⊢ opcyclesMap φ = opcyclesMap' (𝟙 S₁) S₁.rightHomologyData h₁ ≫ γ.φQ ≫ opcyclesMap' (𝟙 S₂) h₂ S₂.rightHomologyData

tactic: rw [← γ.opcyclesMap'_eq, ← opcyclesMap'_comp, ← opcyclesMap'_comp, id_comp, comp_id]
state_before: C : Type u_1
inst✝³ : Category.{u_2, u_1} C
inst✝² : HasZeroMorphisms C
S S₁ S₂ S₃ : ShortComplex C
φ : S₁ ⟶ S₂
h₁ : S₁.RightHomologyData
h₂ : S₂.RightHomologyData
γ : RightHomologyMapData φ h₁ h₂
inst✝¹ : S₁.HasRightHomology
inst✝ : S₂.HasRightHomology
⊢ opcyclesMap φ = opcyclesMap' (𝟙 S₁) S₁.rightHomologyData h₁ ≫ γ.φQ ≫ opcyclesMap' (𝟙 S₂) h₂ S₂.rightHomologyData
state_after: C : Type u_1
inst✝³ : Category.{u_2, u_1} C
inst✝² : HasZeroMorphisms C
S S₁ S₂ S₃ : ShortComplex C
φ : S₁ ⟶ S₂
h₁ : S₁.RightHomologyData
h₂ : S₂.RightHomologyData
γ : RightHomologyMapData φ h₁ h₂
inst✝¹ : S₁.HasRightHomology
inst✝ : S₂.HasRightHomology
⊢ opcyclesMap φ = opcyclesMap' φ S₁.rightHomologyData S₂.rightHomologyData

tactic: rfl
state_before: C : Type u_1
inst✝³ : Category.{u_2, u_1} C
inst✝² : HasZeroMorphisms C
S S₁ S₂ S₃ : ShortComplex C
φ : S₁ ⟶ S₂
h₁ : S₁.RightHomologyData
h₂ : S₂.RightHomologyData
γ : RightHomologyMapData φ h₁ h₂
inst✝¹ : S₁.HasRightHomology
inst✝ : S₂.HasRightHomology
⊢ opcyclesMap φ = opcyclesMap' φ S₁.rightHomologyData S₂.rightHomologyData
state_after: no goals