1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: SimpleGraph.incMatrix_apply_mul_incMatrix_apply_of_not_adj
File: Mathlib/Combinatorics/SimpleGraph/IncMatrix.lean

tactic: rw [incMatrix_apply_mul_incMatrix_apply, Set.indicator_of_not_mem]
state_before: R : Type u_1
α : Type u_2
G : SimpleGraph α
inst✝ : MulZeroOneClass R
a b : α
e : Sym2 α
hab : a ≠ b
h : ¬G.Adj a b
⊢ incMatrix R G a e * incMatrix R G b e = 0
state_after: case h
R : Type u_1
α : Type u_2
G : SimpleGraph α
inst✝ : MulZeroOneClass R
a b : α
e : Sym2 α
hab : a ≠ b
h : ¬G.Adj a b
⊢ e ∉ G.incidenceSet a ∩ G.incidenceSet b

tactic: rw [G.incidenceSet_inter_incidenceSet_of_not_adj h hab]
state_before: case h
R : Type u_1
α : Type u_2
G : SimpleGraph α
inst✝ : MulZeroOneClass R
a b : α
e : Sym2 α
hab : a ≠ b
h : ¬G.Adj a b
⊢ e ∉ G.incidenceSet a ∩ G.incidenceSet b
state_after: case h
R : Type u_1
α : Type u_2
G : SimpleGraph α
inst✝ : MulZeroOneClass R
a b : α
e : Sym2 α
hab : a ≠ b
h : ¬G.Adj a b
⊢ e ∉ ∅

tactic: exact Set.not_mem_empty e
state_before: case h
R : Type u_1
α : Type u_2
G : SimpleGraph α
inst✝ : MulZeroOneClass R
a b : α
e : Sym2 α
hab : a ≠ b
h : ¬G.Adj a b
⊢ e ∉ ∅
state_after: no goals
Theorem: Grp.SurjectiveOfEpiAuxs.h_apply_infinity
File: Mathlib/Algebra/Category/Grp/EpiMono.lean

tactic: change ((τ).symm.trans (g x)).trans τ _ = _
state_before: A B : Grp
f : A ⟶ B
x : ↑B
hx : x ∈ MonoidHom.range f
⊢ (h x) ∞ = ∞
state_after: A B : Grp
f : A ⟶ B
x : ↑B
hx : x ∈ MonoidHom.range f
⊢ (((Equiv.symm τ).trans (g x)).trans τ) ∞ = ∞

tactic: simp only [MonoidHom.coe_mk, Equiv.toFun_as_coe, Equiv.coe_trans, Function.comp_apply]
state_before: A B : Grp
f : A ⟶ B
x : ↑B
hx : x ∈ MonoidHom.range f
⊢ (((Equiv.symm τ).trans (g x)).trans τ) ∞ = ∞
state_after: A B : Grp
f : A ⟶ B
x : ↑B
hx : x ∈ MonoidHom.range f
⊢ τ ((g x) ((Equiv.symm τ) ∞)) = ∞

tactic: rw [τ_symm_apply_infinity, g_apply_fromCoset]
state_before: A B : Grp
f : A ⟶ B
x : ↑B
hx : x ∈ MonoidHom.range f
⊢ τ ((g x) ((Equiv.symm τ) ∞)) = ∞
state_after: A B : Grp
f : A ⟶ B
x : ↑B
hx : x ∈ MonoidHom.range f
⊢ τ (fromCoset ⟨x • ↑⟨↑(MonoidHom.range f), ⋯⟩, ⋯⟩) = ∞

tactic: simpa only using τ_apply_fromCoset' f x hx
state_before: A B : Grp
f : A ⟶ B
x : ↑B
hx : x ∈ MonoidHom.range f
⊢ τ (fromCoset ⟨x • ↑⟨↑(MonoidHom.range f), ⋯⟩, ⋯⟩) = ∞
state_after: no goals
Theorem: Fin.card_Iic
File: Mathlib/Order/Interval/Finset/Fin.lean

tactic: rw [← Nat.card_Iic b, ← map_valEmbedding_Iic, card_map]
state_before: n : ℕ
a b : Fin n
⊢ (Iic b).card = ↑b + 1
state_after: no goals
Theorem: Stream'.get_interleave_left
File: Mathlib/Data/Stream/Init.lean

tactic: change get (s₁ ⋈ s₂) (succ (succ (2 * n))) = get s₁ (succ n)
state_before: α : Type u
β : Type v
δ : Type w
n : ℕ
s₁ s₂ : Stream' α
⊢ (s₁ ⋈ s₂).get (2 * (n + 1)) = s₁.get (n + 1)
state_after: α : Type u
β : Type v
δ : Type w
n : ℕ
s₁ s₂ : Stream' α
⊢ (s₁ ⋈ s₂).get (2 * n).succ.succ = s₁.get n.succ

tactic: rw [get_succ, get_succ, interleave_eq, tail_cons, tail_cons]
state_before: α : Type u
β : Type v
δ : Type w
n : ℕ
s₁ s₂ : Stream' α
⊢ (s₁ ⋈ s₂).get (2 * n).succ.succ = s₁.get n.succ
state_after: α : Type u
β : Type v
δ : Type w
n : ℕ
s₁ s₂ : Stream' α
⊢ (s₁.tail ⋈ s₂.tail).get (2 * n) = s₁.get n.succ

tactic: rw [get_interleave_left n (tail s₁) (tail s₂)]
state_before: α : Type u
β : Type v
δ : Type w
n : ℕ
s₁ s₂ : Stream' α
⊢ (s₁.tail ⋈ s₂.tail).get (2 * n) = s₁.get n.succ
state_after: α : Type u
β : Type v
δ : Type w
n : ℕ
s₁ s₂ : Stream' α
⊢ s₁.tail.get n = s₁.get n.succ

tactic: rfl
state_before: α : Type u
β : Type v
δ : Type w
n : ℕ
s₁ s₂ : Stream' α
⊢ s₁.tail.get n = s₁.get n.succ
state_after: no goals
Theorem: jacobiSym.zero_right
File: Mathlib/NumberTheory/LegendreSymbol/JacobiSymbol.lean

tactic: simp only [jacobiSym, factors_zero, List.prod_nil, List.pmap]
state_before: a : ℤ
⊢ J(a | 0) = 1
state_after: no goals
Theorem: AlgebraicGeometry.StructureSheaf.toBasicOpen_mk'
File: Mathlib/AlgebraicGeometry/StructureSheaf.lean

tactic: erw [toOpen_eq_const, toOpen_eq_const]
state_before: R : Type u
inst✝ : CommRing R
s f : R
g : ↥(Submonoid.powers s)
⊢ (toOpen R (PrimeSpectrum.basicOpen s)) f =
    (toOpen R (PrimeSpectrum.basicOpen s)) ↑g * const R f (↑g) (PrimeSpectrum.basicOpen s) ⋯
state_after: R : Type u
inst✝ : CommRing R
s f : R
g : ↥(Submonoid.powers s)
⊢ const R f 1 (PrimeSpectrum.basicOpen s) ⋯ =
    const R (↑g) 1 (PrimeSpectrum.basicOpen s) ⋯ * const R f (↑g) (PrimeSpectrum.basicOpen s) ⋯

tactic: rw [const_mul_cancel']
state_before: R : Type u
inst✝ : CommRing R
s f : R
g : ↥(Submonoid.powers s)
⊢ const R f 1 (PrimeSpectrum.basicOpen s) ⋯ =
    const R (↑g) 1 (PrimeSpectrum.basicOpen s) ⋯ * const R f (↑g) (PrimeSpectrum.basicOpen s) ⋯
state_after: no goals
Theorem: SmoothBumpFunction.support_updateRIn
File: Mathlib/Geometry/Manifold/BumpFunction.lean

tactic: simp only [support_eq_inter_preimage, updateRIn_rOut]
state_before: E : Type uE
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace ℝ E
inst✝⁴ : FiniteDimensional ℝ E
H : Type uH
inst✝³ : TopologicalSpace H
I : ModelWithCorners ℝ E H
M : Type uM
inst✝² : TopologicalSpace M
inst✝¹ : ChartedSpace H M
inst✝ : SmoothManifoldWithCorners I M
c : M
f : SmoothBumpFunction I c
x : M
r : ℝ
hr : r ∈ Ioo 0 f.rOut
⊢ support ↑(f.updateRIn r hr) = support ↑f
state_after: no goals
Theorem: List.infix_concat
File: .lake/packages/batteries/Batteries/Data/List/Lemmas.lean

tactic: simp [← h, concat_eq_append, append_assoc]
state_before: α✝ : Type u_1
l₁ l₂ : List α✝
a : α✝
x✝ : l₁ <:+: l₂
L₁ L₂ : List α✝
h : L₁ ++ l₁ ++ L₂ = l₂
⊢ L₁ ++ l₁ ++ L₂.concat a = l₂.concat a
state_after: no goals
Theorem: Int.floor_le_sub_one_iff
File: Mathlib/Algebra/Order/Floor.lean

tactic: rw [← floor_lt, le_sub_one_iff]
state_before: F : Type u_1
α : Type u_2
β : Type u_3
inst✝¹ : LinearOrderedRing α
inst✝ : FloorRing α
z : ℤ
a : α
⊢ ⌊a⌋ ≤ z - 1 ↔ a < ↑z
state_after: no goals
Theorem: mem_span_set
File: Mathlib/LinearAlgebra/Finsupp.lean

tactic: conv_lhs => rw [← Set.image_id s]
state_before: R : Type u_1
M : Type u_2
N : Type u_3
inst✝⁴ : Semiring R
inst✝³ : AddCommMonoid M
inst✝² : Module R M
inst✝¹ : AddCommMonoid N
inst✝ : Module R N
m : M
s : Set M
⊢ m ∈ span R s ↔ ∃ c, ↑c.support ⊆ s ∧ (c.sum fun mi r => r • mi) = m
state_after: R : Type u_1
M : Type u_2
N : Type u_3
inst✝⁴ : Semiring R
inst✝³ : AddCommMonoid M
inst✝² : Module R M
inst✝¹ : AddCommMonoid N
inst✝ : Module R N
m : M
s : Set M
⊢ m ∈ span R (_root_.id '' s) ↔ ∃ c, ↑c.support ⊆ s ∧ (c.sum fun mi r => r • mi) = m

tactic: exact Finsupp.mem_span_image_iff_total R (v := _root_.id (α := M))
state_before: R : Type u_1
M : Type u_2
N : Type u_3
inst✝⁴ : Semiring R
inst✝³ : AddCommMonoid M
inst✝² : Module R M
inst✝¹ : AddCommMonoid N
inst✝ : Module R N
m : M
s : Set M
⊢ m ∈ span R (_root_.id '' s) ↔ ∃ c, ↑c.support ⊆ s ∧ (c.sum fun mi r => r • mi) = m
state_after: no goals
Theorem: Quiver.Path.cons_ne_nil
File: Mathlib/Combinatorics/Quiver/Path.lean

tactic: injection h
state_before: V : Type u
inst✝ : Quiver V
a b c d : V
p : Path a b
e : b ⟶ a
h : p.cons e = nil
⊢ False
state_after: no goals
Theorem: Matrix.zpow_ne_zero_of_isUnit_det
File: Mathlib/LinearAlgebra/Matrix/ZPow.lean

tactic: have := ha.det_zpow z
state_before: n' : Type u_1
inst✝⁴ : DecidableEq n'
inst✝³ : Fintype n'
R : Type u_2
inst✝² : CommRing R
inst✝¹ : Nonempty n'
inst✝ : Nontrivial R
A : M
ha : IsUnit A.det
z : ℤ
⊢ A ^ z ≠ 0
state_after: n' : Type u_1
inst✝⁴ : DecidableEq n'
inst✝³ : Fintype n'
R : Type u_2
inst✝² : CommRing R
inst✝¹ : Nonempty n'
inst✝ : Nontrivial R
A : M
ha : IsUnit A.det
z : ℤ
this : IsUnit (A ^ z).det
⊢ A ^ z ≠ 0

tactic: contrapose! this
state_before: n' : Type u_1
inst✝⁴ : DecidableEq n'
inst✝³ : Fintype n'
R : Type u_2
inst✝² : CommRing R
inst✝¹ : Nonempty n'
inst✝ : Nontrivial R
A : M
ha : IsUnit A.det
z : ℤ
this : IsUnit (A ^ z).det
⊢ A ^ z ≠ 0
state_after: n' : Type u_1
inst✝⁴ : DecidableEq n'
inst✝³ : Fintype n'
R : Type u_2
inst✝² : CommRing R
inst✝¹ : Nonempty n'
inst✝ : Nontrivial R
A : M
ha : IsUnit A.det
z : ℤ
this : A ^ z = 0
⊢ ¬IsUnit (A ^ z).det

tactic: rw [this, det_zero ‹_›]
state_before: n' : Type u_1
inst✝⁴ : DecidableEq n'
inst✝³ : Fintype n'
R : Type u_2
inst✝² : CommRing R
inst✝¹ : Nonempty n'
inst✝ : Nontrivial R
A : M
ha : IsUnit A.det
z : ℤ
this : A ^ z = 0
⊢ ¬IsUnit (A ^ z).det
state_after: n' : Type u_1
inst✝⁴ : DecidableEq n'
inst✝³ : Fintype n'
R : Type u_2
inst✝² : CommRing R
inst✝¹ : Nonempty n'
inst✝ : Nontrivial R
A : M
ha : IsUnit A.det
z : ℤ
this : A ^ z = 0
⊢ ¬IsUnit 0

tactic: exact not_isUnit_zero
state_before: n' : Type u_1
inst✝⁴ : DecidableEq n'
inst✝³ : Fintype n'
R : Type u_2
inst✝² : CommRing R
inst✝¹ : Nonempty n'
inst✝ : Nontrivial R
A : M
ha : IsUnit A.det
z : ℤ
this : A ^ z = 0
⊢ ¬IsUnit 0
state_after: no goals
Theorem: SimpleGraph.chromaticNumber_eq_zero_of_isempty
File: Mathlib/Combinatorics/SimpleGraph/Coloring.lean

tactic: rw [← nonpos_iff_eq_zero, ← Nat.cast_zero, chromaticNumber_le_iff_colorable]
state_before: V : Type u
G✝ : SimpleGraph V
n : ℕ
α : Type u_1
β : Type u_2
C : G✝.Coloring α
G : SimpleGraph V
inst✝ : IsEmpty V
⊢ G.chromaticNumber = 0
state_after: V : Type u
G✝ : SimpleGraph V
n : ℕ
α : Type u_1
β : Type u_2
C : G✝.Coloring α
G : SimpleGraph V
inst✝ : IsEmpty V
⊢ G.Colorable 0

tactic: apply colorable_of_isEmpty
state_before: V : Type u
G✝ : SimpleGraph V
n : ℕ
α : Type u_1
β : Type u_2
C : G✝.Coloring α
G : SimpleGraph V
inst✝ : IsEmpty V
⊢ G.Colorable 0
state_after: no goals
Theorem: Real.cosh_sub
File: Mathlib/Data/Complex/Exponential.lean

tactic: simp [sub_eq_add_neg, cosh_add, sinh_neg, cosh_neg]
state_before: x y : ℝ
⊢ cosh (x - y) = cosh x * cosh y - sinh x * sinh y
state_after: no goals
Theorem: not_small_type
File: Mathlib/Logic/Small/Defs.lean

tactic: dsimp at e
state_before: S : Type u
e✝ : Type (max u v) ≃ S
a b : Set ((α : S) × e✝.symm α)
e :
  (fun a => ⟨e✝.toFun (Set ((α : S) × e✝.symm α)), cast ⋯ a⟩) a =
    (fun a => ⟨e✝.toFun (Set ((α : S) × e✝.symm α)), cast ⋯ a⟩) b
⊢ a = b
state_after: S : Type u
e✝ : Type (max u v) ≃ S
a b : Set ((α : S) × e✝.symm α)
e : ⟨e✝ (Set ((α : S) × e✝.symm α)), cast ⋯ a⟩ = ⟨e✝ (Set ((α : S) × e✝.symm α)), cast ⋯ b⟩
⊢ a = b

tactic: injection e with h₁ h₂
state_before: S : Type u
e✝ : Type (max u v) ≃ S
a b : Set ((α : S) × e✝.symm α)
e : ⟨e✝ (Set ((α : S) × e✝.symm α)), cast ⋯ a⟩ = ⟨e✝ (Set ((α : S) × e✝.symm α)), cast ⋯ b⟩
⊢ a = b
state_after: S : Type u
e : Type (max u v) ≃ S
a b : Set ((α : S) × e.symm α)
h₁ : e (Set ((α : S) × e.symm α)) = e (Set ((α : S) × e.symm α))
h₂ : cast ⋯ a = cast ⋯ b
⊢ a = b

tactic: simpa using h₂
state_before: S : Type u
e : Type (max u v) ≃ S
a b : Set ((α : S) × e.symm α)
h₁ : e (Set ((α : S) × e.symm α)) = e (Set ((α : S) × e.symm α))
h₂ : cast ⋯ a = cast ⋯ b
⊢ a = b
state_after: no goals
Theorem: FreeGroup.norm_eq_zero
File: Mathlib/GroupTheory/FreeGroup/Basic.lean

tactic: simp only [norm, List.length_eq_zero, toWord_eq_nil_iff]
state_before: α : Type u
L L₁ L₂ L₃ L₄ : List (α × Bool)
inst✝ : DecidableEq α
x : FreeGroup α
⊢ x.norm = 0 ↔ x = 1
state_after: no goals
Theorem: CategoryTheory.Presieve.FamilyOfElements.IsAmalgamation.compPresheafMap
File: Mathlib/CategoryTheory/Sites/IsSheafFor.lean

tactic: intro Y g hg
state_before: C : Type u₁
inst✝ : Category.{v₁, u₁} C
P Q U : Cᵒᵖ ⥤ Type w
X Y : C
S : Sieve X
R : Presieve X
x : FamilyOfElements P R
t : P.obj { unop := X }
f : P ⟶ Q
h : x.IsAmalgamation t
⊢ (FamilyOfElements.compPresheafMap f x).IsAmalgamation (f.app { unop := X } t)
state_after: C : Type u₁
inst✝ : Category.{v₁, u₁} C
P Q U : Cᵒᵖ ⥤ Type w
X Y✝ : C
S : Sieve X
R : Presieve X
x : FamilyOfElements P R
t : P.obj { unop := X }
f : P ⟶ Q
h : x.IsAmalgamation t
Y : C
g : Y ⟶ X
hg : R g
⊢ Q.map g.op (f.app { unop := X } t) = FamilyOfElements.compPresheafMap f x g hg

tactic: dsimp [FamilyOfElements.compPresheafMap]
state_before: C : Type u₁
inst✝ : Category.{v₁, u₁} C
P Q U : Cᵒᵖ ⥤ Type w
X Y✝ : C
S : Sieve X
R : Presieve X
x : FamilyOfElements P R
t : P.obj { unop := X }
f : P ⟶ Q
h : x.IsAmalgamation t
Y : C
g : Y ⟶ X
hg : R g
⊢ Q.map g.op (f.app { unop := X } t) = FamilyOfElements.compPresheafMap f x g hg
state_after: C : Type u₁
inst✝ : Category.{v₁, u₁} C
P Q U : Cᵒᵖ ⥤ Type w
X Y✝ : C
S : Sieve X
R : Presieve X
x : FamilyOfElements P R
t : P.obj { unop := X }
f : P ⟶ Q
h : x.IsAmalgamation t
Y : C
g : Y ⟶ X
hg : R g
⊢ Q.map g.op (f.app { unop := X } t) = f.app { unop := Y } (x g hg)

tactic: change (f.app _ ≫ Q.map _) _ = _
state_before: C : Type u₁
inst✝ : Category.{v₁, u₁} C
P Q U : Cᵒᵖ ⥤ Type w
X Y✝ : C
S : Sieve X
R : Presieve X
x : FamilyOfElements P R
t : P.obj { unop := X }
f : P ⟶ Q
h : x.IsAmalgamation t
Y : C
g : Y ⟶ X
hg : R g
⊢ Q.map g.op (f.app { unop := X } t) = f.app { unop := Y } (x g hg)
state_after: C : Type u₁
inst✝ : Category.{v₁, u₁} C
P Q U : Cᵒᵖ ⥤ Type w
X Y✝ : C
S : Sieve X
R : Presieve X
x : FamilyOfElements P R
t : P.obj { unop := X }
f : P ⟶ Q
h : x.IsAmalgamation t
Y : C
g : Y ⟶ X
hg : R g
⊢ (f.app { unop := X } ≫ Q.map g.op) t = f.app { unop := Y } (x g hg)

tactic: rw [← f.naturality, types_comp_apply, h g hg]
state_before: C : Type u₁
inst✝ : Category.{v₁, u₁} C
P Q U : Cᵒᵖ ⥤ Type w
X Y✝ : C
S : Sieve X
R : Presieve X
x : FamilyOfElements P R
t : P.obj { unop := X }
f : P ⟶ Q
h : x.IsAmalgamation t
Y : C
g : Y ⟶ X
hg : R g
⊢ (f.app { unop := X } ≫ Q.map g.op) t = f.app { unop := Y } (x g hg)
state_after: no goals
Theorem: Subgroup.zpowers_eq_bot
File: Mathlib/Algebra/Group/Subgroup/ZPowers.lean

tactic: rw [eq_bot_iff, zpowers_le, mem_bot]
state_before: G : Type u_1
inst✝² : Group G
A : Type u_2
inst✝¹ : AddGroup A
N : Type u_3
inst✝ : Group N
s : Set G
g✝ g : G
⊢ zpowers g = ⊥ ↔ g = 1
state_after: no goals
Theorem: descPochhammer_succ_comp_X_sub_one
File: Mathlib/RingTheory/Polynomial/Pochhammer.lean

tactic: suffices (descPochhammer ℤ (n + 1)).comp (X - 1) =
    descPochhammer ℤ (n + 1) - (n + 1) * (descPochhammer ℤ n).comp (X - 1)
  by simpa [map_comp] using congr_arg (Polynomial.map (Int.castRingHom R)) this
state_before: R : Type u
inst✝ : Ring R
n : ℕ
⊢ (descPochhammer R (n + 1)).comp (X - 1) = descPochhammer R (n + 1) - (↑n + 1) • (descPochhammer R n).comp (X - 1)
state_after: R : Type u
inst✝ : Ring R
n : ℕ
⊢ (descPochhammer ℤ (n + 1)).comp (X - 1) = descPochhammer ℤ (n + 1) - (↑n + 1) * (descPochhammer ℤ n).comp (X - 1)

tactic: nth_rw 2 [descPochhammer_succ_left]
state_before: R : Type u
inst✝ : Ring R
n : ℕ
⊢ (descPochhammer ℤ (n + 1)).comp (X - 1) = descPochhammer ℤ (n + 1) - (↑n + 1) * (descPochhammer ℤ n).comp (X - 1)
state_after: R : Type u
inst✝ : Ring R
n : ℕ
⊢ (descPochhammer ℤ (n + 1)).comp (X - 1) =
    X * (descPochhammer ℤ n).comp (X - 1) - (↑n + 1) * (descPochhammer ℤ n).comp (X - 1)

tactic: rw [← sub_mul, descPochhammer_succ_right ℤ n, mul_comp, mul_comm, sub_comp, X_comp, natCast_comp]
state_before: R : Type u
inst✝ : Ring R
n : ℕ
⊢ (descPochhammer ℤ (n + 1)).comp (X - 1) =
    X * (descPochhammer ℤ n).comp (X - 1) - (↑n + 1) * (descPochhammer ℤ n).comp (X - 1)
state_after: R : Type u
inst✝ : Ring R
n : ℕ
⊢ (X - 1 - ↑n) * (descPochhammer ℤ n).comp (X - 1) = (X - (↑n + 1)) * (descPochhammer ℤ n).comp (X - 1)

tactic: ring
state_before: R : Type u
inst✝ : Ring R
n : ℕ
⊢ (X - 1 - ↑n) * (descPochhammer ℤ n).comp (X - 1) = (X - (↑n + 1)) * (descPochhammer ℤ n).comp (X - 1)
state_after: no goals

tactic: simpa [map_comp] using congr_arg (Polynomial.map (Int.castRingHom R)) this
state_before: R : Type u
inst✝ : Ring R
n : ℕ
this : (descPochhammer ℤ (n + 1)).comp (X - 1) = descPochhammer ℤ (n + 1) - (↑n + 1) * (descPochhammer ℤ n).comp (X - 1)
⊢ (descPochhammer R (n + 1)).comp (X - 1) = descPochhammer R (n + 1) - (↑n + 1) • (descPochhammer R n).comp (X - 1)
state_after: no goals
Theorem: BoundedContinuousFunction.norm_lt_iff_of_nonempty_compact
File: Mathlib/Topology/ContinuousFunction/Bounded.lean

tactic: simp_rw [norm_def, ← dist_zero_right]
state_before: F : Type u_1
α : Type u
β : Type v
γ : Type w
inst✝³ : TopologicalSpace α
inst✝² : SeminormedAddCommGroup β
f✝ g : α →ᵇ β
x : α
C : ℝ
inst✝¹ : Nonempty α
inst✝ : CompactSpace α
f : α →ᵇ β
M : ℝ
⊢ ‖f‖ < M ↔ ∀ (x : α), ‖f x‖ < M
state_after: F : Type u_1
α : Type u
β : Type v
γ : Type w
inst✝³ : TopologicalSpace α
inst✝² : SeminormedAddCommGroup β
f✝ g : α →ᵇ β
x : α
C : ℝ
inst✝¹ : Nonempty α
inst✝ : CompactSpace α
f : α →ᵇ β
M : ℝ
⊢ dist f 0 < M ↔ ∀ (x : α), dist (f x) 0 < M

tactic: exact dist_lt_iff_of_nonempty_compact
state_before: F : Type u_1
α : Type u
β : Type v
γ : Type w
inst✝³ : TopologicalSpace α
inst✝² : SeminormedAddCommGroup β
f✝ g : α →ᵇ β
x : α
C : ℝ
inst✝¹ : Nonempty α
inst✝ : CompactSpace α
f : α →ᵇ β
M : ℝ
⊢ dist f 0 < M ↔ ∀ (x : α), dist (f x) 0 < M
state_after: no goals
Theorem: MeromorphicAt.sub
File: Mathlib/Analysis/Analytic/Meromorphic.lean

tactic: convert hf.add hg.neg using 1
state_before: 𝕜 : Type u_1
inst✝² : NontriviallyNormedField 𝕜
E : Type u_2
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
f g : 𝕜 → E
x : 𝕜
hf : MeromorphicAt f x
hg : MeromorphicAt g x
⊢ MeromorphicAt (f - g) x
state_after: case h.e'_6
𝕜 : Type u_1
inst✝² : NontriviallyNormedField 𝕜
E : Type u_2
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
f g : 𝕜 → E
x : 𝕜
hf : MeromorphicAt f x
hg : MeromorphicAt g x
⊢ f - g = f + -g

tactic: ext1 z
state_before: case h.e'_6
𝕜 : Type u_1
inst✝² : NontriviallyNormedField 𝕜
E : Type u_2
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
f g : 𝕜 → E
x : 𝕜
hf : MeromorphicAt f x
hg : MeromorphicAt g x
⊢ f - g = f + -g
state_after: case h.e'_6.h
𝕜 : Type u_1
inst✝² : NontriviallyNormedField 𝕜
E : Type u_2
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
f g : 𝕜 → E
x : 𝕜
hf : MeromorphicAt f x
hg : MeromorphicAt g x
z : 𝕜
⊢ (f - g) z = (f + -g) z

tactic: simp_rw [Pi.sub_apply, Pi.add_apply, Pi.neg_apply, sub_eq_add_neg]
state_before: case h.e'_6.h
𝕜 : Type u_1
inst✝² : NontriviallyNormedField 𝕜
E : Type u_2
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
f g : 𝕜 → E
x : 𝕜
hf : MeromorphicAt f x
hg : MeromorphicAt g x
z : 𝕜
⊢ (f - g) z = (f + -g) z
state_after: no goals
Theorem: dist_left_midpoint
File: Mathlib/Analysis/NormedSpace/AddTorsor.lean

tactic: rw [midpoint, dist_comm, dist_lineMap_left, invOf_eq_inv, ← norm_inv]
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
inst✝ : Invertible 2
p₁ p₂ : P
⊢ dist p₁ (midpoint 𝕜 p₁ p₂) = ‖2‖⁻¹ * dist p₁ p₂
state_after: no goals
Theorem: List.duplicate_iff_sublist
File: Mathlib/Data/List/Duplicate.lean

tactic: induction' l with y l IH
state_before: α : Type u_1
l : List α
x : α
⊢ x ∈+ l ↔ [x, x] <+ l
state_after: case nil
α : Type u_1
l : List α
x : α
⊢ x ∈+ [] ↔ [x, x] <+ []

case cons
α : Type u_1
l✝ : List α
x y : α
l : List α
IH : x ∈+ l ↔ [x, x] <+ l
⊢ x ∈+ y :: l ↔ [x, x] <+ y :: l

tactic: simp
state_before: case nil
α : Type u_1
l : List α
x : α
⊢ x ∈+ [] ↔ [x, x] <+ []
state_after: no goals

tactic: by_cases hx : x = y
state_before: case cons
α : Type u_1
l✝ : List α
x y : α
l : List α
IH : x ∈+ l ↔ [x, x] <+ l
⊢ x ∈+ y :: l ↔ [x, x] <+ y :: l
state_after: case pos
α : Type u_1
l✝ : List α
x y : α
l : List α
IH : x ∈+ l ↔ [x, x] <+ l
hx : x = y
⊢ x ∈+ y :: l ↔ [x, x] <+ y :: l

case neg
α : Type u_1
l✝ : List α
x y : α
l : List α
IH : x ∈+ l ↔ [x, x] <+ l
hx : ¬x = y
⊢ x ∈+ y :: l ↔ [x, x] <+ y :: l

tactic: simp [hx, cons_sublist_cons, singleton_sublist]
state_before: case pos
α : Type u_1
l✝ : List α
x y : α
l : List α
IH : x ∈+ l ↔ [x, x] <+ l
hx : x = y
⊢ x ∈+ y :: l ↔ [x, x] <+ y :: l
state_after: no goals

tactic: rw [duplicate_cons_iff_of_ne hx, IH]
state_before: case neg
α : Type u_1
l✝ : List α
x y : α
l : List α
IH : x ∈+ l ↔ [x, x] <+ l
hx : ¬x = y
⊢ x ∈+ y :: l ↔ [x, x] <+ y :: l
state_after: case neg
α : Type u_1
l✝ : List α
x y : α
l : List α
IH : x ∈+ l ↔ [x, x] <+ l
hx : ¬x = y
⊢ [x, x] <+ l ↔ [x, x] <+ y :: l

tactic: refine ⟨sublist_cons_of_sublist y, fun h => ?_⟩
state_before: case neg
α : Type u_1
l✝ : List α
x y : α
l : List α
IH : x ∈+ l ↔ [x, x] <+ l
hx : ¬x = y
⊢ [x, x] <+ l ↔ [x, x] <+ y :: l
state_after: case neg
α : Type u_1
l✝ : List α
x y : α
l : List α
IH : x ∈+ l ↔ [x, x] <+ l
hx : ¬x = y
h : [x, x] <+ y :: l
⊢ [x, x] <+ l

tactic: cases h
state_before: case neg
α : Type u_1
l✝ : List α
x y : α
l : List α
IH : x ∈+ l ↔ [x, x] <+ l
hx : ¬x = y
h : [x, x] <+ y :: l
⊢ [x, x] <+ l
state_after: case neg.cons
α : Type u_1
l✝ : List α
x y : α
l : List α
IH : x ∈+ l ↔ [x, x] <+ l
hx : ¬x = y
a✝ : [x, x] <+ l
⊢ [x, x] <+ l

case neg.cons₂
α : Type u_1
l✝ : List α
x : α
l : List α
IH : x ∈+ l ↔ [x, x] <+ l
hx : ¬x = x
a✝ : [x] <+ l
⊢ [x, x] <+ l

tactic: assumption
state_before: case neg.cons
α : Type u_1
l✝ : List α
x y : α
l : List α
IH : x ∈+ l ↔ [x, x] <+ l
hx : ¬x = y
a✝ : [x, x] <+ l
⊢ [x, x] <+ l
state_after: no goals

tactic: contradiction
state_before: case neg.cons₂
α : Type u_1
l✝ : List α
x : α
l : List α
IH : x ∈+ l ↔ [x, x] <+ l
hx : ¬x = x
a✝ : [x] <+ l
⊢ [x, x] <+ l
state_after: no goals
Theorem: RatFunc.coe_coe
File: Mathlib/RingTheory/LaurentSeries.lean

tactic: simp only [coePolynomial, coe_def, AlgHom.commutes, algebraMap_hahnSeries_apply]
state_before: R : Type u_1
F : Type u
inst✝ : Field F
p q : F[X]
f g : RatFunc F
P : F[X]
⊢ (ofPowerSeries ℤ F) ↑P = ↑↑P
state_after: no goals
Theorem: Finset.min'_image
File: Mathlib/Data/Finset/Lattice.lean

tactic: simp only [min', inf'_image]
state_before: F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
ι : Type u_5
κ : Type u_6
inst✝¹ : LinearOrder α
s✝ : Finset α
H : s✝.Nonempty
x : α
inst✝ : LinearOrder β
f : α → β
hf : Monotone f
s : Finset α
h : (image f s).Nonempty
⊢ (image f s).min' h = f (s.min' ⋯)
state_after: F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
ι : Type u_5
κ : Type u_6
inst✝¹ : LinearOrder α
s✝ : Finset α
H : s✝.Nonempty
x : α
inst✝ : LinearOrder β
f : α → β
hf : Monotone f
s : Finset α
h : (image f s).Nonempty
⊢ s.inf' ⋯ (id ∘ f) = f (s.inf' ⋯ id)

tactic: exact .symm <| comp_inf'_eq_inf'_comp _ _ fun _ _ ↦ hf.map_min
state_before: F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
ι : Type u_5
κ : Type u_6
inst✝¹ : LinearOrder α
s✝ : Finset α
H : s✝.Nonempty
x : α
inst✝ : LinearOrder β
f : α → β
hf : Monotone f
s : Finset α
h : (image f s).Nonempty
⊢ s.inf' ⋯ (id ∘ f) = f (s.inf' ⋯ id)
state_after: no goals