1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: WithSeminorms.continuous_seminorm
File: Mathlib/Analysis/LocallyConvex/WithSeminorms.lean

tactic: have := hp.topologicalAddGroup
state_before: 𝕜 : Type u_1
𝕜₂ : Type u_2
𝕝 : Type u_3
𝕝₂ : Type u_4
E : Type u_5
F : Type u_6
G : Type u_7
ι : Type u_8
ι' : Type u_9
inst✝³ : NormedField 𝕜
inst✝² : AddCommGroup E
inst✝¹ : Module 𝕜 E
inst✝ : Nonempty ι
t : TopologicalSpace E
p : SeminormFamily 𝕜 E ι
hp : WithSeminorms p
i : ι
⊢ Continuous ⇑(p i)
state_after: 𝕜 : Type u_1
𝕜₂ : Type u_2
𝕝 : Type u_3
𝕝₂ : Type u_4
E : Type u_5
F : Type u_6
G : Type u_7
ι : Type u_8
ι' : Type u_9
inst✝³ : NormedField 𝕜
inst✝² : AddCommGroup E
inst✝¹ : Module 𝕜 E
inst✝ : Nonempty ι
t : TopologicalSpace E
p : SeminormFamily 𝕜 E ι
hp : WithSeminorms p
i : ι
this : TopologicalAddGroup E
⊢ Continuous ⇑(p i)

tactic: exact continuous_iInf_dom (@continuous_norm _ (p i).toSeminormedAddGroup)
state_before: 𝕜 : Type u_1
𝕜₂ : Type u_2
𝕝 : Type u_3
𝕝₂ : Type u_4
E : Type u_5
F : Type u_6
G : Type u_7
ι : Type u_8
ι' : Type u_9
inst✝³ : NormedField 𝕜
inst✝² : AddCommGroup E
inst✝¹ : Module 𝕜 E
inst✝ : Nonempty ι
t : TopologicalSpace E
p : SeminormFamily 𝕜 E ι
hp : WithSeminorms p
i : ι
this : TopologicalAddGroup E
⊢ Continuous ⇑(p i)
state_after: no goals
Theorem: CategoryTheory.Limits.Types.FilteredColimit.rel_of_quot_rel
File: Mathlib/CategoryTheory/Limits/TypesFiltered.lean

tactic: rw [← h, FunctorToTypes.map_id_apply]
state_before: J : Type v
inst✝¹ : Category.{w, v} J
F : J ⥤ Type u
inst✝ : HasColimit F
x y : (j : J) × F.obj j
x✝ : Quot.Rel F x y
f : x.fst ⟶ y.fst
h : y.snd = F.map f x.snd
⊢ F.map f x.snd = F.map (𝟙 y.fst) y.snd
state_after: no goals
Theorem: Polynomial.natCast_coeff_zero
File: Mathlib/Algebra/Polynomial/Coeff.lean

tactic: simp only [coeff_natCast_ite, ite_true]
state_before: R✝ : Type u
S : Type v
a b : R✝
n✝ m : ℕ
inst✝¹ : Semiring R✝
p q r : R✝[X]
n : ℕ
R : Type u_1
inst✝ : Semiring R
⊢ (↑n).coeff 0 = ↑n
state_after: no goals
Theorem: Ultrafilter.comap_pure
File: Mathlib/Order/Filter/Ultrafilter.lean

tactic: rw [coe_pure, ← principal_singleton, ← image_singleton, preimage_image_eq _ inj]
state_before: α : Type u
β : Type v
γ : Type u_1
f g : Ultrafilter α
s t : Set α
p q : α → Prop
m : α → β
a : α
inj : Injective m
large : range m ∈ pure (m a)
⊢ 𝓟 (m ⁻¹' {m a}) = ↑(pure a)
state_after: no goals
Theorem: Polynomial.natTrailingDegree_le_natDegree
File: Mathlib/Algebra/Polynomial/Degree/TrailingDegree.lean

tactic: by_cases hp : p = 0
state_before: R : Type u
S : Type v
a b : R
n m : ℕ
inst✝ : Semiring R
p✝ q r p : R[X]
⊢ p.natTrailingDegree ≤ p.natDegree
state_after: case pos
R : Type u
S : Type v
a b : R
n m : ℕ
inst✝ : Semiring R
p✝ q r p : R[X]
hp : p = 0
⊢ p.natTrailingDegree ≤ p.natDegree

case neg
R : Type u
S : Type v
a b : R
n m : ℕ
inst✝ : Semiring R
p✝ q r p : R[X]
hp : ¬p = 0
⊢ p.natTrailingDegree ≤ p.natDegree

tactic: rw [hp, natDegree_zero, natTrailingDegree_zero]
state_before: case pos
R : Type u
S : Type v
a b : R
n m : ℕ
inst✝ : Semiring R
p✝ q r p : R[X]
hp : p = 0
⊢ p.natTrailingDegree ≤ p.natDegree
state_after: no goals

tactic: exact le_natDegree_of_ne_zero (mt trailingCoeff_eq_zero.mp hp)
state_before: case neg
R : Type u
S : Type v
a b : R
n m : ℕ
inst✝ : Semiring R
p✝ q r p : R[X]
hp : ¬p = 0
⊢ p.natTrailingDegree ≤ p.natDegree
state_after: no goals
Theorem: List.ofFn_eq_map
File: Mathlib/Data/List/FinRange.lean

tactic: rw [← ofFn_id, map_ofFn, Function.comp_id]
state_before: α : Type u
n : ℕ
f : Fin n → α
⊢ ofFn f = map f (finRange n)
state_after: no goals
Theorem: FiniteDimensional.finrank_mul_finrank
File: Mathlib/LinearAlgebra/Dimension/Free.lean

tactic: simp_rw [finrank]
state_before: F : Type u
K : Type v
A : Type w
inst✝¹⁰ : Ring F
inst✝⁹ : Ring K
inst✝⁸ : AddCommGroup A
inst✝⁷ : Module F K
inst✝⁶ : Module K A
inst✝⁵ : Module F A
inst✝⁴ : IsScalarTower F K A
inst✝³ : StrongRankCondition F
inst✝² : StrongRankCondition K
inst✝¹ : Module.Free F K
inst✝ : Module.Free K A
⊢ finrank F K * finrank K A = finrank F A
state_after: F : Type u
K : Type v
A : Type w
inst✝¹⁰ : Ring F
inst✝⁹ : Ring K
inst✝⁸ : AddCommGroup A
inst✝⁷ : Module F K
inst✝⁶ : Module K A
inst✝⁵ : Module F A
inst✝⁴ : IsScalarTower F K A
inst✝³ : StrongRankCondition F
inst✝² : StrongRankCondition K
inst✝¹ : Module.Free F K
inst✝ : Module.Free K A
⊢ toNat (Module.rank F K) * toNat (Module.rank K A) = toNat (Module.rank F A)

tactic: rw [← toNat_lift.{w} (Module.rank F K), ← toNat_lift.{v} (Module.rank K A), ← toNat_mul,
  lift_rank_mul_lift_rank, toNat_lift]
state_before: F : Type u
K : Type v
A : Type w
inst✝¹⁰ : Ring F
inst✝⁹ : Ring K
inst✝⁸ : AddCommGroup A
inst✝⁷ : Module F K
inst✝⁶ : Module K A
inst✝⁵ : Module F A
inst✝⁴ : IsScalarTower F K A
inst✝³ : StrongRankCondition F
inst✝² : StrongRankCondition K
inst✝¹ : Module.Free F K
inst✝ : Module.Free K A
⊢ toNat (Module.rank F K) * toNat (Module.rank K A) = toNat (Module.rank F A)
state_after: no goals
Theorem: Matrix.isHermitian_diagonal_iff
File: Mathlib/LinearAlgebra/Matrix/Hermitian.lean

tactic: simp [isSelfAdjoint_iff, IsHermitian, conjTranspose, diagonal_transpose, diagonal_map]
state_before: α : Type u_1
β : Type u_2
m : Type u_3
n : Type u_4
A : Matrix n n α
inst✝⁴ : AddMonoid α
inst✝³ : StarAddMonoid α
inst✝² : AddMonoid β
inst✝¹ : StarAddMonoid β
inst✝ : DecidableEq n
d : n → α
⊢ (diagonal d).IsHermitian ↔ ∀ (i : n), IsSelfAdjoint (d i)
state_after: no goals
Theorem: Traversable.foldlm_toList
File: Mathlib/Control/Fold.lean

tactic: simp only [foldlm, toList_spec, foldMap_hom_free (foldlM.ofFreeMonoid f),
  foldlm.ofFreeMonoid_comp_of, foldlM.get, FreeMonoid.ofList_toList]
state_before: α β γ : Type u
t : Type u → Type u
inst✝³ : Traversable t
inst✝² : LawfulTraversable t
m : Type u → Type u
inst✝¹ : Monad m
inst✝ : LawfulMonad m
f : α → β → m α
x : α
xs : t β
⊢ foldlm f x xs = unop ((foldlM.ofFreeMonoid f) (FreeMonoid.ofList (toList xs))) x
state_after: no goals

tactic: simp [foldlM.ofFreeMonoid, unop_op, flip]
state_before: α β γ : Type u
t : Type u → Type u
inst✝³ : Traversable t
inst✝² : LawfulTraversable t
m : Type u → Type u
inst✝¹ : Monad m
inst✝ : LawfulMonad m
f : α → β → m α
x : α
xs : t β
⊢ unop ((foldlM.ofFreeMonoid f) (FreeMonoid.ofList (toList xs))) x = List.foldlM f x (toList xs)
state_after: no goals
Theorem: Finset.inv_inter
File: Mathlib/Data/Finset/Pointwise.lean

tactic: simp
state_before: F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
inst✝¹ : DecidableEq α
inst✝ : InvolutiveInv α
s✝ : Finset α
a : α
s t : Finset α
⊢ ↑(s ∩ t)⁻¹ = ↑(s⁻¹ ∩ t⁻¹)
state_after: no goals
Theorem: MeasureTheory.mem_measurableCylinders
File: Mathlib/MeasureTheory/Constructions/Cylinders.lean

tactic: simp_rw [measurableCylinders, mem_iUnion, exists_prop, mem_singleton_iff]
state_before: ι : Type u_1
α : ι → Type u_2
inst✝ : (i : ι) → MeasurableSpace (α i)
s t✝ t : Set ((i : ι) → α i)
⊢ t ∈ measurableCylinders α ↔ ∃ s S, MeasurableSet S ∧ t = cylinder s S
state_after: no goals
Theorem: circleMap_sub_center
File: Mathlib/MeasureTheory/Integral/CircleIntegral.lean

tactic: simp [circleMap]
state_before: E : Type u_1
inst✝ : NormedAddCommGroup E
c : ℂ
R θ : ℝ
⊢ circleMap c R θ - c = circleMap 0 R θ
state_after: no goals
Theorem: Nat.preimage_Ioo
File: Mathlib/Algebra/Order/Floor.lean

tactic: ext
state_before: F : Type u_1
α : Type u_2
β : Type u_3
inst✝¹ : LinearOrderedSemiring α
inst✝ : FloorSemiring α
a✝ : α
n : ℕ
a b : α
ha : 0 ≤ a
⊢ Nat.cast ⁻¹' Ioo a b = Ioo ⌊a⌋₊ ⌈b⌉₊
state_after: case h
F : Type u_1
α : Type u_2
β : Type u_3
inst✝¹ : LinearOrderedSemiring α
inst✝ : FloorSemiring α
a✝ : α
n : ℕ
a b : α
ha : 0 ≤ a
x✝ : ℕ
⊢ x✝ ∈ Nat.cast ⁻¹' Ioo a b ↔ x✝ ∈ Ioo ⌊a⌋₊ ⌈b⌉₊

tactic: simp [floor_lt, lt_ceil, ha]
state_before: case h
F : Type u_1
α : Type u_2
β : Type u_3
inst✝¹ : LinearOrderedSemiring α
inst✝ : FloorSemiring α
a✝ : α
n : ℕ
a b : α
ha : 0 ≤ a
x✝ : ℕ
⊢ x✝ ∈ Nat.cast ⁻¹' Ioo a b ↔ x✝ ∈ Ioo ⌊a⌋₊ ⌈b⌉₊
state_after: no goals
Theorem: Ultrafilter.compl_mem_iff_not_mem
File: Mathlib/Order/Filter/Ultrafilter.lean

tactic: rw [← compl_not_mem_iff, compl_compl]
state_before: α : Type u
β : Type v
γ : Type u_1
f g : Ultrafilter α
s t : Set α
p q : α → Prop
⊢ sᶜ ∈ f ↔ s ∉ f
state_after: no goals
Theorem: GeneralizedContinuedFraction.le_of_succ_get?_denom
File: Mathlib/Algebra/ContinuedFractions/Computation/Approximations.lean

tactic: rw [denom_eq_conts_b, nth_cont_eq_succ_nth_cont_aux]
state_before: K : Type u_1
v : K
n : ℕ
inst✝¹ : LinearOrderedField K
inst✝ : FloorRing K
b : K
nth_part_denom_eq : (of v).partialDenominators.get? n = some b
⊢ b * (of v).denominators n ≤ (of v).denominators (n + 1)
state_after: K : Type u_1
v : K
n : ℕ
inst✝¹ : LinearOrderedField K
inst✝ : FloorRing K
b : K
nth_part_denom_eq : (of v).partialDenominators.get? n = some b
⊢ b * ((of v).continuantsAux (n + 1)).b ≤ (of v).denominators (n + 1)

tactic: exact le_of_succ_succ_get?_continuantsAux_b nth_part_denom_eq
state_before: K : Type u_1
v : K
n : ℕ
inst✝¹ : LinearOrderedField K
inst✝ : FloorRing K
b : K
nth_part_denom_eq : (of v).partialDenominators.get? n = some b
⊢ b * ((of v).continuantsAux (n + 1)).b ≤ (of v).denominators (n + 1)
state_after: no goals
Theorem: Cardinal.mk_sUnion_le
File: Mathlib/SetTheory/Cardinal/Basic.lean

tactic: rw [sUnion_eq_iUnion]
state_before: α✝ β : Type u
c : Cardinal.{?u.203067}
α : Type u
A : Set (Set α)
⊢ #↑(⋃₀ A) ≤ #↑A * ⨆ s, #↑↑s
state_after: α✝ β : Type u
c : Cardinal.{?u.203067}
α : Type u
A : Set (Set α)
⊢ #↑(⋃ i, ↑i) ≤ #↑A * ⨆ s, #↑↑s

tactic: apply mk_iUnion_le
state_before: α✝ β : Type u
c : Cardinal.{?u.203067}
α : Type u
A : Set (Set α)
⊢ #↑(⋃ i, ↑i) ≤ #↑A * ⨆ s, #↑↑s
state_after: no goals
Theorem: Function.Surjective.valuationRing
File: Mathlib/RingTheory/Valuation/ValuationRing.lean

tactic: obtain ⟨⟨a, rfl⟩, ⟨b, rfl⟩⟩ := hf a, hf b
state_before: R : Type u_1
S : Type u_2
inst✝⁴ : CommRing R
inst✝³ : IsDomain R
inst✝² : ValuationRing R
inst✝¹ : CommRing S
inst✝ : IsDomain S
f : R →+* S
hf : Function.Surjective ⇑f
a b : S
⊢ ∃ c, a * c = b ∨ b * c = a
state_after: case intro.intro
R : Type u_1
S : Type u_2
inst✝⁴ : CommRing R
inst✝³ : IsDomain R
inst✝² : ValuationRing R
inst✝¹ : CommRing S
inst✝ : IsDomain S
f : R →+* S
hf : Function.Surjective ⇑f
a b : R
⊢ ∃ c, f a * c = f b ∨ f b * c = f a

tactic: obtain ⟨c, rfl | rfl⟩ := ValuationRing.cond a b
state_before: case intro.intro
R : Type u_1
S : Type u_2
inst✝⁴ : CommRing R
inst✝³ : IsDomain R
inst✝² : ValuationRing R
inst✝¹ : CommRing S
inst✝ : IsDomain S
f : R →+* S
hf : Function.Surjective ⇑f
a b : R
⊢ ∃ c, f a * c = f b ∨ f b * c = f a
state_after: case intro.intro.intro.inl
R : Type u_1
S : Type u_2
inst✝⁴ : CommRing R
inst✝³ : IsDomain R
inst✝² : ValuationRing R
inst✝¹ : CommRing S
inst✝ : IsDomain S
f : R →+* S
hf : Function.Surjective ⇑f
a c : R
⊢ ∃ c_1, f a * c_1 = f (a * c) ∨ f (a * c) * c_1 = f a

case intro.intro.intro.inr
R : Type u_1
S : Type u_2
inst✝⁴ : CommRing R
inst✝³ : IsDomain R
inst✝² : ValuationRing R
inst✝¹ : CommRing S
inst✝ : IsDomain S
f : R →+* S
hf : Function.Surjective ⇑f
b c : R
⊢ ∃ c_1, f (b * c) * c_1 = f b ∨ f b * c_1 = f (b * c)

tactic: exacts [⟨f c, Or.inl <| (map_mul _ _ _).symm⟩, ⟨f c, Or.inr <| (map_mul _ _ _).symm⟩]
state_before: case intro.intro.intro.inl
R : Type u_1
S : Type u_2
inst✝⁴ : CommRing R
inst✝³ : IsDomain R
inst✝² : ValuationRing R
inst✝¹ : CommRing S
inst✝ : IsDomain S
f : R →+* S
hf : Function.Surjective ⇑f
a c : R
⊢ ∃ c_1, f a * c_1 = f (a * c) ∨ f (a * c) * c_1 = f a

case intro.intro.intro.inr
R : Type u_1
S : Type u_2
inst✝⁴ : CommRing R
inst✝³ : IsDomain R
inst✝² : ValuationRing R
inst✝¹ : CommRing S
inst✝ : IsDomain S
f : R →+* S
hf : Function.Surjective ⇑f
b c : R
⊢ ∃ c_1, f (b * c) * c_1 = f b ∨ f b * c_1 = f (b * c)
state_after: no goals
Theorem: WittVector.zmodEquivTrunc_compat
File: Mathlib/RingTheory/WittVector/Compare.lean

tactic: rw [← RingHom.comp_assoc, commutes, RingHom.comp_assoc,
  PadicInt.zmod_cast_comp_toZModPow _ _ hk]
state_before: p : ℕ
hp : Fact (Nat.Prime p)
k₁ k₂ : ℕ
hk : k₁ ≤ k₂
⊢ (TruncatedWittVector.truncate hk).comp ((zmodEquivTrunc p k₂).toRingHom.comp (PadicInt.toZModPow k₂)) =
    (zmodEquivTrunc p k₁).toRingHom.comp (PadicInt.toZModPow k₁)
state_after: no goals
Theorem: SimpleGraph.ConnectedComponent.iso_inv_image_comp_eq_iff_eq_map
File: Mathlib/Combinatorics/SimpleGraph/Connectivity.lean

tactic: refine C.ind fun u => ?_
state_before: V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
φ : G ≃g G'
v : V
v' : V'
C : G.ConnectedComponent
⊢ G.connectedComponentMk (φ.symm v') = C ↔ G'.connectedComponentMk v' = map (RelIso.toRelEmbedding φ).toRelHom C
state_after: V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
φ : G ≃g G'
v : V
v' : V'
C : G.ConnectedComponent
u : V
⊢ G.connectedComponentMk (φ.symm v') = G.connectedComponentMk u ↔
    G'.connectedComponentMk v' = map (RelIso.toRelEmbedding φ).toRelHom (G.connectedComponentMk u)

tactic: simp only [Iso.symm_apply_reachable, ConnectedComponent.eq, ConnectedComponent.map_mk,
  RelEmbedding.coe_toRelHom, RelIso.coe_toRelEmbedding]
state_before: V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
φ : G ≃g G'
v : V
v' : V'
C : G.ConnectedComponent
u : V
⊢ G.connectedComponentMk (φ.symm v') = G.connectedComponentMk u ↔
    G'.connectedComponentMk v' = map (RelIso.toRelEmbedding φ).toRelHom (G.connectedComponentMk u)
state_after: no goals
Theorem: GeneralizedContinuedFraction.second_continuant_aux_eq
File: Mathlib/Algebra/ContinuedFractions/Translations.lean

tactic: simp [zeroth_s_eq, continuantsAux, nextContinuants, nextDenominator, nextNumerator]
state_before: K : Type u_1
g : GeneralizedContinuedFraction K
n : ℕ
inst✝ : DivisionRing K
gp : Pair K
zeroth_s_eq : g.s.get? 0 = some gp
⊢ g.continuantsAux 2 = { a := gp.b * g.h + gp.a, b := gp.b }
state_after: no goals
Theorem: Set.inclusion_right
File: Mathlib/Data/Set/Basic.lean

tactic: cases x
state_before: α : Type u_1
s t u : Set α
h : s ⊆ t
x : ↑t
m : ↑x ∈ s
⊢ inclusion h ⟨↑x, m⟩ = x
state_after: case mk
α : Type u_1
s t u : Set α
h : s ⊆ t
val✝ : α
property✝ : val✝ ∈ t
m : ↑⟨val✝, property✝⟩ ∈ s
⊢ inclusion h ⟨↑⟨val✝, property✝⟩, m⟩ = ⟨val✝, property✝⟩

tactic: rfl
state_before: case mk
α : Type u_1
s t u : Set α
h : s ⊆ t
val✝ : α
property✝ : val✝ ∈ t
m : ↑⟨val✝, property✝⟩ ∈ s
⊢ inclusion h ⟨↑⟨val✝, property✝⟩, m⟩ = ⟨val✝, property✝⟩
state_after: no goals
Theorem: Basis.reindexRange_apply
File: Mathlib/LinearAlgebra/Basis.lean

tactic: rcases x with ⟨bi, ⟨i, rfl⟩⟩
state_before: ι : Type u_1
ι' : Type u_2
R : Type u_3
R₂ : Type u_4
K : Type u_5
M : Type u_6
M' : Type u_7
M'' : Type u_8
V : Type u
V' : Type u_9
inst✝⁴ : Semiring R
inst✝³ : AddCommMonoid M
inst✝² : Module R M
inst✝¹ : AddCommMonoid M'
inst✝ : Module R M'
b b₁ : Basis ι R M
i : ι
c : R
x✝ : M
b' : Basis ι' R M'
e : ι ≃ ι'
x : ↑(range ⇑b)
⊢ b.reindexRange x = ↑x
state_after: case mk.intro
ι : Type u_1
ι' : Type u_2
R : Type u_3
R₂ : Type u_4
K : Type u_5
M : Type u_6
M' : Type u_7
M'' : Type u_8
V : Type u
V' : Type u_9
inst✝⁴ : Semiring R
inst✝³ : AddCommMonoid M
inst✝² : Module R M
inst✝¹ : AddCommMonoid M'
inst✝ : Module R M'
b b₁ : Basis ι R M
i✝ : ι
c : R
x : M
b' : Basis ι' R M'
e : ι ≃ ι'
i : ι
⊢ b.reindexRange ⟨b i, ⋯⟩ = ↑⟨b i, ⋯⟩

tactic: exact b.reindexRange_self i
state_before: case mk.intro
ι : Type u_1
ι' : Type u_2
R : Type u_3
R₂ : Type u_4
K : Type u_5
M : Type u_6
M' : Type u_7
M'' : Type u_8
V : Type u
V' : Type u_9
inst✝⁴ : Semiring R
inst✝³ : AddCommMonoid M
inst✝² : Module R M
inst✝¹ : AddCommMonoid M'
inst✝ : Module R M'
b b₁ : Basis ι R M
i✝ : ι
c : R
x : M
b' : Basis ι' R M'
e : ι ≃ ι'
i : ι
⊢ b.reindexRange ⟨b i, ⋯⟩ = ↑⟨b i, ⋯⟩
state_after: no goals
Theorem: Left.inv_lt_one_iff
File: Mathlib/Algebra/Order/Group/Defs.lean

tactic: rw [← mul_lt_mul_iff_left a, mul_inv_self, mul_one]
state_before: α : Type u
inst✝² : Group α
inst✝¹ : LT α
inst✝ : CovariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x < x_1
a b c : α
⊢ a⁻¹ < 1 ↔ 1 < a
state_after: no goals
Theorem: Lagrange.eval_basisDivisor_left_of_ne
File: Mathlib/LinearAlgebra/Lagrange.lean

tactic: simp only [basisDivisor, eval_mul, eval_C, eval_sub, eval_X]
state_before: F : Type u_1
inst✝ : Field F
x y : F
hxy : x ≠ y
⊢ eval x (basisDivisor x y) = 1
state_after: F : Type u_1
inst✝ : Field F
x y : F
hxy : x ≠ y
⊢ (x - y)⁻¹ * (x - y) = 1

tactic: exact inv_mul_cancel (sub_ne_zero_of_ne hxy)
state_before: F : Type u_1
inst✝ : Field F
x y : F
hxy : x ≠ y
⊢ (x - y)⁻¹ * (x - y) = 1
state_after: no goals
Theorem: multiplicity.finite_int_iff_natAbs_finite
File: Mathlib/RingTheory/Multiplicity.lean

tactic: simp only [finite_def, ← Int.natAbs_dvd_natAbs, Int.natAbs_pow]
state_before: α : Type u_1
β : Type u_2
a b : ℤ
⊢ Finite a b ↔ Finite a.natAbs b.natAbs
state_after: no goals
Theorem: NumberField.mixedEmbedding.normAtPlace_real
File: Mathlib/NumberTheory/NumberField/CanonicalEmbedding/Basic.lean

tactic: rw [show ((fun _ ↦ c, fun _ ↦ c) : (E K)) = c • 1 by ext <;> simp, normAtPlace_smul, map_one,
  mul_one]
state_before: K : Type u_1
inst✝ : Field K
w : InfinitePlace K
c : ℝ
⊢ (normAtPlace w) (fun x => c, fun x => ↑c) = |c|
state_after: no goals

tactic: ext <;> simp
state_before: K : Type u_1
inst✝ : Field K
w : InfinitePlace K
c : ℝ
⊢ (fun x => c, fun x => ↑c) = c • 1
state_after: no goals
Theorem: Ideal.quotEquivOfEq_symm
File: Mathlib/RingTheory/Ideal/Quotient.lean

tactic: ext
state_before: R✝ : Type u
inst✝¹ : CommRing R✝
I✝ : Ideal R✝
a b : R✝
S : Type v
R : Type u_1
inst✝ : CommRing R
I J : Ideal R
h : I = J
⊢ (quotEquivOfEq h).symm = quotEquivOfEq ⋯
state_after: case h
R✝ : Type u
inst✝¹ : CommRing R✝
I✝ : Ideal R✝
a b : R✝
S : Type v
R : Type u_1
inst✝ : CommRing R
I J : Ideal R
h : I = J
x✝ : R ⧸ J
⊢ (quotEquivOfEq h).symm x✝ = (quotEquivOfEq ⋯) x✝

tactic: rfl
state_before: case h
R✝ : Type u
inst✝¹ : CommRing R✝
I✝ : Ideal R✝
a b : R✝
S : Type v
R : Type u_1
inst✝ : CommRing R
I J : Ideal R
h : I = J
x✝ : R ⧸ J
⊢ (quotEquivOfEq h).symm x✝ = (quotEquivOfEq ⋯) x✝
state_after: no goals
Theorem: SimpleGraph.Walk.isPath_copy
File: Mathlib/Combinatorics/SimpleGraph/Connectivity.lean

tactic: subst_vars
state_before: V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
u✝ v✝ w x y u v u' v' : V
p : G.Walk u v
hu : u = u'
hv : v = v'
⊢ (p.copy hu hv).IsPath ↔ p.IsPath
state_after: V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
u v w x y u' v' : V
p : G.Walk u' v'
⊢ (p.copy ⋯ ⋯).IsPath ↔ p.IsPath

tactic: rfl
state_before: V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
u v w x y u' v' : V
p : G.Walk u' v'
⊢ (p.copy ⋯ ⋯).IsPath ↔ p.IsPath
state_after: no goals
Theorem: Polynomial.degree_multiset_prod_le
File: Mathlib/Algebra/Polynomial/BigOperators.lean

tactic: simpa using degree_list_prod_le
state_before: R : Type u
ι : Type w
s : Finset ι
inst✝ : CommSemiring R
f : ι → R[X]
t : Multiset R[X]
⊢ ∀ (a : List R[X]), (prod ⟦a⟧).degree ≤ (Multiset.map degree ⟦a⟧).sum
state_after: no goals
Theorem: Set.not_unbounded_iff
File: Mathlib/Order/RelClasses.lean

tactic: rw [not_iff_comm, not_bounded_iff]
state_before: α : Type u
β : Type v
r✝ : α → α → Prop
s✝ : β → β → Prop
r : α → α → Prop
s : Set α
⊢ ¬Unbounded r s ↔ Bounded r s
state_after: no goals
Theorem: Finset.filter_inter
File: Mathlib/Data/Finset/Basic.lean

tactic: ext
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
p q : α → Prop
inst✝² : DecidablePred p
inst✝¹ : DecidablePred q
s✝ : Finset α
inst✝ : DecidableEq α
s t : Finset α
⊢ filter p s ∩ t = filter p (s ∩ t)
state_after: case a
α : Type u_1
β : Type u_2
γ : Type u_3
p q : α → Prop
inst✝² : DecidablePred p
inst✝¹ : DecidablePred q
s✝ : Finset α
inst✝ : DecidableEq α
s t : Finset α
a✝ : α
⊢ a✝ ∈ filter p s ∩ t ↔ a✝ ∈ filter p (s ∩ t)

tactic: simp only [mem_inter, mem_filter, and_right_comm]
state_before: case a
α : Type u_1
β : Type u_2
γ : Type u_3
p q : α → Prop
inst✝² : DecidablePred p
inst✝¹ : DecidablePred q
s✝ : Finset α
inst✝ : DecidableEq α
s t : Finset α
a✝ : α
⊢ a✝ ∈ filter p s ∩ t ↔ a✝ ∈ filter p (s ∩ t)
state_after: no goals
Theorem: CategoryTheory.Bicategory.leftUnitor_inv_whiskerRight
File: Mathlib/CategoryTheory/Bicategory/Basic.lean

tactic: simp
state_before: B : Type u
inst✝ : Bicategory B
a b c d e : B
f : a ⟶ b
g : b ⟶ c
⊢ inv ((λ_ f).inv ▷ g) = inv ((λ_ (f ≫ g)).inv ≫ (α_ (𝟙 a) f g).inv)
state_after: no goals
Theorem: Euclidean.nhds_basis_ball
File: Mathlib/Analysis/InnerProductSpace/EuclideanDist.lean

tactic: rw [toEuclidean.toHomeomorph.nhds_eq_comap x]
state_before: E : Type u_1
inst✝⁶ : AddCommGroup E
inst✝⁵ : TopologicalSpace E
inst✝⁴ : TopologicalAddGroup E
inst✝³ : T2Space E
inst✝² : Module ℝ E
inst✝¹ : ContinuousSMul ℝ E
inst✝ : FiniteDimensional ℝ E
x : E
⊢ (𝓝 x).HasBasis (fun r => 0 < r) (ball x)
state_after: E : Type u_1
inst✝⁶ : AddCommGroup E
inst✝⁵ : TopologicalSpace E
inst✝⁴ : TopologicalAddGroup E
inst✝³ : T2Space E
inst✝² : Module ℝ E
inst✝¹ : ContinuousSMul ℝ E
inst✝ : FiniteDimensional ℝ E
x : E
⊢ (Filter.comap (⇑toEuclidean.toHomeomorph) (𝓝 (toEuclidean.toHomeomorph x))).HasBasis (fun r => 0 < r) (ball x)

tactic: exact Metric.nhds_basis_ball.comap _
state_before: E : Type u_1
inst✝⁶ : AddCommGroup E
inst✝⁵ : TopologicalSpace E
inst✝⁴ : TopologicalAddGroup E
inst✝³ : T2Space E
inst✝² : Module ℝ E
inst✝¹ : ContinuousSMul ℝ E
inst✝ : FiniteDimensional ℝ E
x : E
⊢ (Filter.comap (⇑toEuclidean.toHomeomorph) (𝓝 (toEuclidean.toHomeomorph x))).HasBasis (fun r => 0 < r) (ball x)
state_after: no goals
Theorem: surjOn_Ioc_of_monotone_surjective
File: Mathlib/Order/Interval/Set/SurjOn.lean

tactic: simpa using surjOn_Ico_of_monotone_surjective h_mono.dual h_surj (toDual b) (toDual a)
state_before: α : Type u_1
β : Type u_2
inst✝¹ : LinearOrder α
inst✝ : PartialOrder β
f : α → β
h_mono : Monotone f
h_surj : Surjective f
a b : α
⊢ SurjOn f (Ioc a b) (Ioc (f a) (f b))
state_after: no goals
Theorem: ArithmeticFunction.abs_moebius
File: Mathlib/NumberTheory/ArithmeticFunction.lean

tactic: split_ifs with h
state_before: R : Type u_1
n : ℕ
⊢ |μ n| = if Squarefree n then 1 else 0
state_after: case pos
R : Type u_1
n : ℕ
h : Squarefree n
⊢ |μ n| = 1

case neg
R : Type u_1
n : ℕ
h : ¬Squarefree n
⊢ |μ n| = 0

tactic: exact abs_moebius_eq_one_of_squarefree h
state_before: case pos
R : Type u_1
n : ℕ
h : Squarefree n
⊢ |μ n| = 1
state_after: no goals

tactic: simp only [moebius_eq_zero_of_not_squarefree h, abs_zero]
state_before: case neg
R : Type u_1
n : ℕ
h : ¬Squarefree n
⊢ |μ n| = 0
state_after: no goals