tasksource/leandojo huggingface dataset:
Theorem: finprod_emb_domain'
File: Mathlib/Algebra/BigOperators/Finprod.lean

tactic: simp_rw [← finprod_eq_dif]
state_before: α : Type u_1
β : Type u_2
ι : Type ?u.465098
G : Type ?u.465101
M : Type u_3
N : Type ?u.465107
inst✝² : CommMonoid M
inst✝¹ : CommMonoid N
f✝ g✝ : α → M
a b : α
s t : Set α
f : α → β
hf : Injective f
inst✝ : DecidablePred fun x => x ∈ range f
g : α → M
⊢ (∏ᶠ (b : β), if h : b ∈ range f then g (Classical.choose h) else 1) = ∏ᶠ (a : α), g a

tactic: rw [finprod_dmem, finprod_mem_range hf, finprod_congr fun a => _]
state_before: α : Type u_1
β : Type u_2
ι : Type ?u.465098
G : Type ?u.465101
M : Type u_3
N : Type ?u.465107
inst✝² : CommMonoid M
inst✝¹ : CommMonoid N
f✝ g✝ : α → M
a b : α
s t : Set α
f : α → β
hf : Injective f
inst✝ : DecidablePred fun x => x ∈ range f
g : α → M
⊢ (∏ᶠ (b : β) (h : b ∈ range f), g (Classical.choose h)) = ∏ᶠ (a : α), g a

tactic: intro a
state_before: α : Type u_1
β : Type u_2
ι : Type ?u.465098
G : Type ?u.465101
M : Type u_3
N : Type ?u.465107
inst✝² : CommMonoid M
inst✝¹ : CommMonoid N
f✝ g✝ : α → M
a b : α
s t : Set α
f : α → β
hf : Injective f
inst✝ : DecidablePred fun x => x ∈ range f
g : α → M
⊢ ∀ (a : α), (if h' : f a ∈ range f then g (Classical.choose h') else 1) = g a

tactic: rw [dif_pos (Set.mem_range_self a), hf (Classical.choose_spec (Set.mem_range_self a))]
state_before: α : Type u_1
β : Type u_2
ι : Type ?u.465098
G : Type ?u.465101
M : Type u_3
N : Type ?u.465107
inst✝² : CommMonoid M
inst✝¹ : CommMonoid N
f✝ g✝ : α → M
a✝ b : α
s t : Set α
f : α → β
hf : Injective f
inst✝ : DecidablePred fun x => x ∈ range f
g : α → M
a : α
⊢ (if h' : f a ∈ range f then g (Classical.choose h') else 1) = g a
Theorem: Commute.mul_neg_geom_sum₂
File: Mathlib/Algebra/GeomSum.lean

tactic: apply op_injective
state_before: α : Type u
inst✝ : Ring α
x y : α
h : Commute x y
n : ℕ
⊢ (y - x) * ∑ i in range n, x ^ i * y ^ (n - 1 - i) = y ^ n - x ^ n

tactic: simp only [op_mul, op_sub, op_geom_sum₂, op_pow]
state_before: case a
α : Type u
inst✝ : Ring α
x y : α
h : Commute x y
n : ℕ
⊢ MulOpposite.op ((y - x) * ∑ i in range n, x ^ i * y ^ (n - 1 - i)) = MulOpposite.op (y ^ n - x ^ n)

tactic: simp [(Commute.op h.symm).geom_sum₂_mul n]
state_before: case a
α : Type u
inst✝ : Ring α
x y : α
h : Commute x y
n : ℕ
⊢ MulOpposite.op (∑ i in range n, x ^ i * y ^ (n - 1 - i)) * (MulOpposite.op y - MulOpposite.op x) =
    MulOpposite.op y ^ n - MulOpposite.op x ^ n
Theorem: SimpleGraph.adj_incidenceSet_inter
File: Mathlib/Combinatorics/SimpleGraph/Basic.lean

tactic: ext e'
state_before: ι : Sort ?u.138625
𝕜 : Type ?u.138628
V : Type u
W : Type v
X : Type w
G : SimpleGraph V
G' : SimpleGraph W
a b c u v✝ w : V
e✝ : Sym2 V
v : V
e : Sym2 V
he : e ∈ edgeSet G
h : v ∈ e
⊢ incidenceSet G v ∩ incidenceSet G (Sym2.Mem.other h) = {e}

tactic: simp only [incidenceSet, Set.mem_sep_iff, Set.mem_inter_iff, Set.mem_singleton_iff]
state_before: case h
ι : Sort ?u.138625
𝕜 : Type ?u.138628
V : Type u
W : Type v
X : Type w
G : SimpleGraph V
G' : SimpleGraph W
a b c u v✝ w : V
e✝ : Sym2 V
v : V
e : Sym2 V
he : e ∈ edgeSet G
h : v ∈ e
e' : Sym2 V
⊢ e' ∈ incidenceSet G v ∩ incidenceSet G (Sym2.Mem.other h) ↔ e' ∈ {e}

tactic: refine' ⟨fun h' => _, _⟩
state_before: case h
ι : Sort ?u.138625
𝕜 : Type ?u.138628
V : Type u
W : Type v
X : Type w
G : SimpleGraph V
G' : SimpleGraph W
a b c u v✝ w : V
e✝ : Sym2 V
v : V
e : Sym2 V
he : e ∈ edgeSet G
h : v ∈ e
e' : Sym2 V
⊢ (e' ∈ edgeSet G ∧ v ∈ e') ∧ e' ∈ edgeSet G ∧ Sym2.Mem.other h ∈ e' ↔ e' = e

tactic: rw [← Sym2.other_spec h]
state_before: case h.refine'_1
ι : Sort ?u.138625
𝕜 : Type ?u.138628
V : Type u
W : Type v
X : Type w
G : SimpleGraph V
G' : SimpleGraph W
a b c u v✝ w : V
e✝ : Sym2 V
v : V
e : Sym2 V
he : e ∈ edgeSet G
h : v ∈ e
e' : Sym2 V
h' : (e' ∈ edgeSet G ∧ v ∈ e') ∧ e' ∈ edgeSet G ∧ Sym2.Mem.other h ∈ e'
⊢ e' = e

tactic: exact (Sym2.mem_and_mem_iff (edge_other_ne G he h).symm).mp ⟨h'.1.2, h'.2.2⟩
state_before: case h.refine'_1
ι : Sort ?u.138625
𝕜 : Type ?u.138628
V : Type u
W : Type v
X : Type w
G : SimpleGraph V
G' : SimpleGraph W
a b c u v✝ w : V
e✝ : Sym2 V
v : V
e : Sym2 V
he : e ∈ edgeSet G
h : v ∈ e
e' : Sym2 V
h' : (e' ∈ edgeSet G ∧ v ∈ e') ∧ e' ∈ edgeSet G ∧ Sym2.Mem.other h ∈ e'
⊢ e' = Quotient.mk (Sym2.Rel.setoid V) (v, Sym2.Mem.other h)

tactic: rintro rfl
state_before: case h.refine'_2
ι : Sort ?u.138625
𝕜 : Type ?u.138628
V : Type u
W : Type v
X : Type w
G : SimpleGraph V
G' : SimpleGraph W
a b c u v✝ w : V
e✝ : Sym2 V
v : V
e : Sym2 V
he : e ∈ edgeSet G
h : v ∈ e
e' : Sym2 V
⊢ e' = e → (e' ∈ edgeSet G ∧ v ∈ e') ∧ e' ∈ edgeSet G ∧ Sym2.Mem.other h ∈ e'

tactic: exact ⟨⟨he, h⟩, he, Sym2.other_mem _⟩
state_before: case h.refine'_2
ι : Sort ?u.138625
𝕜 : Type ?u.138628
V : Type u
W : Type v
X : Type w
G : SimpleGraph V
G' : SimpleGraph W
a b c u v✝ w : V
e : Sym2 V
v : V
e' : Sym2 V
he : e' ∈ edgeSet G
h : v ∈ e'
⊢ (e' ∈ edgeSet G ∧ v ∈ e') ∧ e' ∈ edgeSet G ∧ Sym2.Mem.other h ∈ e'
Theorem: Polynomial.int_cast_inj
File: Mathlib/Data/Polynomial/Coeff.lean

tactic: constructor
state_before: R✝ : Type u
S : Type v
a b : R✝
n✝ m✝ : ℕ
inst✝² : Semiring R✝
p q r : R✝[X]
m n : ℤ
R : Type u_1
inst✝¹ : Ring R
inst✝ : CharZero R
⊢ ↑m = ↑n ↔ m = n

tactic: intro h
state_before: case mp
R✝ : Type u
S : Type v
a b : R✝
n✝ m✝ : ℕ
inst✝² : Semiring R✝
p q r : R✝[X]
m n : ℤ
R : Type u_1
inst✝¹ : Ring R
inst✝ : CharZero R
⊢ ↑m = ↑n → m = n

tactic: apply_fun fun p => p.coeff 0  at h
state_before: case mp
R✝ : Type u
S : Type v
a b : R✝
n✝ m✝ : ℕ
inst✝² : Semiring R✝
p q r : R✝[X]
m n : ℤ
R : Type u_1
inst✝¹ : Ring R
inst✝ : CharZero R
h : ↑m = ↑n
⊢ m = n

tactic: simpa using h
state_before: case mp
R✝ : Type u
S : Type v
a b : R✝
n✝ m✝ : ℕ
inst✝² : Semiring R✝
p q r : R✝[X]
m n : ℤ
R : Type u_1
inst✝¹ : Ring R
inst✝ : CharZero R
h : coeff (↑m) 0 = coeff (↑n) 0
⊢ m = n

tactic: rintro rfl
state_before: case mpr
R✝ : Type u
S : Type v
a b : R✝
n✝ m✝ : ℕ
inst✝² : Semiring R✝
p q r : R✝[X]
m n : ℤ
R : Type u_1
inst✝¹ : Ring R
inst✝ : CharZero R
⊢ m = n → ↑m = ↑n

tactic: rfl
state_before: case mpr
R✝ : Type u
S : Type v
a b : R✝
n m✝ : ℕ
inst✝² : Semiring R✝
p q r : R✝[X]
m : ℤ
R : Type u_1
inst✝¹ : Ring R
inst✝ : CharZero R
⊢ ↑m = ↑m
Theorem: LinearMap.IsAlt.isRefl
File: Mathlib/LinearAlgebra/SesquilinearForm.lean

tactic: intro x y h
state_before: R : Type u_1
R₁ : Type u_2
R₂ : Type ?u.192555
R₃ : Type ?u.192558
M : Type ?u.192561
M₁ : Type u_3
M₂ : Type ?u.192567
Mₗ₁ : Type ?u.192570
Mₗ₁' : Type ?u.192573
Mₗ₂ : Type ?u.192576
Mₗ₂' : Type ?u.192579
K : Type ?u.192582
K₁ : Type ?u.192585
K₂ : Type ?u.192588
V : Type ?u.192591
V₁ : Type ?u.192594
V₂ : Type ?u.192597
n : Type ?u.192600
inst✝³ : CommRing R
inst✝² : CommSemiring R₁
inst✝¹ : AddCommMonoid M₁
inst✝ : Module R₁ M₁
I₁ I₂ I : R₁ →+* R
B : M₁ →ₛₗ[I₁] M₁ →ₛₗ[I₂] R
H : IsAlt B
⊢ IsRefl B

tactic: rw [← neg H, h, neg_zero]
state_before: R : Type u_1
R₁ : Type u_2
R₂ : Type ?u.192555
R₃ : Type ?u.192558
M : Type ?u.192561
M₁ : Type u_3
M₂ : Type ?u.192567
Mₗ₁ : Type ?u.192570
Mₗ₁' : Type ?u.192573
Mₗ₂ : Type ?u.192576
Mₗ₂' : Type ?u.192579
K : Type ?u.192582
K₁ : Type ?u.192585
K₂ : Type ?u.192588
V : Type ?u.192591
V₁ : Type ?u.192594
V₂ : Type ?u.192597
n : Type ?u.192600
inst✝³ : CommRing R
inst✝² : CommSemiring R₁
inst✝¹ : AddCommMonoid M₁
inst✝ : Module R₁ M₁
I₁ I₂ I : R₁ →+* R
B : M₁ →ₛₗ[I₁] M₁ →ₛₗ[I₂] R
H : IsAlt B
x y : M₁
h : ↑(↑B x) y = 0
⊢ ↑(↑B y) x = 0
Theorem: Finset.Ioc_insert_left
File: Mathlib/Data/Finset/LocallyFinite.lean

tactic: rw [← coe_inj, coe_insert, coe_Ioc, coe_Icc, Set.insert_eq, Set.union_comm, Set.Ioc_union_left h]
state_before: ι : Type ?u.93506
α : Type u_1
inst✝² : PartialOrder α
inst✝¹ : LocallyFiniteOrder α
a b c : α
inst✝ : DecidableEq α
h : a ≤ b
⊢ insert a (Ioc a b) = Icc a b
Theorem: LinearOrderedField.inducedMap_zero
File: Mathlib/Algebra/Order/CompleteField.lean

tactic: exact_mod_cast inducedMap_rat α β 0
state_before: F : Type ?u.17959
α : Type u_2
β : Type u_1
γ : Type ?u.17968
inst✝³ : LinearOrderedField α
inst✝² : ConditionallyCompleteLinearOrderedField β
inst✝¹ : ConditionallyCompleteLinearOrderedField γ
inst✝ : Archimedean α
⊢ inducedMap α β 0 = 0
Theorem: PowerSeries.order_mul
File: Mathlib/RingTheory/PowerSeries/Basic.lean

tactic: simp_rw [order_eq_multiplicity_X]
state_before: R : Type u_1
inst✝¹ : CommRing R
inst✝ : IsDomain R
φ ψ : PowerSeries R
⊢ order (φ * ψ) = order φ + order ψ

tactic: exact multiplicity.mul X_prime
state_before: R : Type u_1
inst✝¹ : CommRing R
inst✝ : IsDomain R
φ ψ : PowerSeries R
⊢ multiplicity X (φ * ψ) = multiplicity X φ + multiplicity X ψ
Theorem: Filter.EventuallyEq.fderiv_eq
File: Mathlib/Analysis/Calculus/FDeriv/Basic.lean

tactic: rw [← fderivWithin_univ, ← fderivWithin_univ, h.fderivWithin_eq_nhds]
state_before: 𝕜 : Type u_3
inst✝⁸ : NontriviallyNormedField 𝕜
E : Type u_1
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace 𝕜 E
F : Type u_2
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
G : Type ?u.557518
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
G' : Type ?u.557613
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
h : f₁ =ᶠ[𝓝 x] f
⊢ fderiv 𝕜 f₁ x = fderiv 𝕜 f x
Theorem: hasSum_geometric_two
File: Mathlib/Analysis/SpecificLimits/Basic.lean

tactic: convert hasSum_geometric_of_lt_1 _ _ <;> norm_num
state_before: α : Type ?u.75182
β : Type ?u.75185
ι : Type ?u.75188
⊢ HasSum (fun n => (1 / 2) ^ n) 2
Theorem: FirstOrder.Language.BoundedFormula.not_ex_isAtomic
File: Mathlib/ModelTheory/Syntax.lean

tactic: cases con
state_before: L : Language
L' : Language
M : Type w
N : Type ?u.110112
P : Type ?u.110115
inst✝² : Structure L M
inst✝¹ : Structure L N
inst✝ : Structure L P
α : Type u'
β : Type v'
γ : Type ?u.110143
n l : ℕ
φ✝ ψ : BoundedFormula L α l
θ : BoundedFormula L α (Nat.succ l)
v : α → M
xs : Fin l → M
φ : BoundedFormula L α (n + 1)
con : IsAtomic (BoundedFormula.ex φ)
⊢ False
Theorem: realPart_apply_coe
File: Mathlib/Data/Complex/Module.lean

tactic: unfold realPart
state_before: A : Type u_1
inst✝³ : AddCommGroup A
inst✝² : Module ℂ A
inst✝¹ : StarAddMonoid A
inst✝ : StarModule ℂ A
a : A
⊢ ↑(↑ℜ a) = 2⁻¹ • (a + star a)

tactic: simp only [selfAdjointPart_apply_coe, invOf_eq_inv]
state_before: A : Type u_1
inst✝³ : AddCommGroup A
inst✝² : Module ℂ A
inst✝¹ : StarAddMonoid A
inst✝ : StarModule ℂ A
a : A
⊢ ↑(↑(selfAdjointPart ℝ) a) = 2⁻¹ • (a + star a)
Theorem: Cardinal.mk_Iio_real
File: Mathlib/Data/Real/Cardinality.lean

tactic: refine' le_antisymm (mk_real ▸ mk_set_le _) _
state_before: c : ℝ
f g : ℕ → Bool
n : ℕ
a : ℝ
⊢ (#↑(Iio a)) = 𝔠

tactic: have h2 : (fun x => a + a - x) '' Iio a = Ioi a := by
  simp only [image_const_sub_Iio, add_sub_cancel]
state_before: c : ℝ
f g : ℕ → Bool
n : ℕ
a : ℝ
⊢ 𝔠 ≤ (#↑(Iio a))

tactic: exact mk_Ioi_real a ▸ h2 ▸ mk_image_le
state_before: c : ℝ
f g : ℕ → Bool
n : ℕ
a : ℝ
h2 : (fun x => a + a - x) '' Iio a = Ioi a
⊢ 𝔠 ≤ (#↑(Iio a))

tactic: simp only [image_const_sub_Iio, add_sub_cancel]
state_before: c : ℝ
f g : ℕ → Bool
n : ℕ
a : ℝ
⊢ (fun x => a + a - x) '' Iio a = Ioi a
Theorem: Polynomial.natDegree_sub_le_iff_left
File: Mathlib/Data/Polynomial/Degree/Lemmas.lean

tactic: rw [← natDegree_neg] at qn
state_before: R : Type u
S : Type v
ι : Type w
a b : R
m n : ℕ
inst✝ : Ring R
p q : R[X]
qn : natDegree q ≤ n
⊢ natDegree (p - q) ≤ n ↔ natDegree p ≤ n

tactic: rw [sub_eq_add_neg, natDegree_add_le_iff_left _ _ qn]
state_before: R : Type u
S : Type v
ι : Type w
a b : R
m n : ℕ
inst✝ : Ring R
p q : R[X]
qn : natDegree (-q) ≤ n
⊢ natDegree (p - q) ≤ n ↔ natDegree p ≤ n
Theorem: CategoryTheory.NatTrans.leftDerived_id
File: Mathlib/CategoryTheory/Functor/LeftDerived.lean

tactic: simp [NatTrans.leftDerived]
state_before: C : Type u
inst✝¹² : Category C
D : Type u_2
inst✝¹¹ : Category D
inst✝¹⁰ : Preadditive C
inst✝⁹ : HasZeroObject C
inst✝⁸ : HasEqualizers C
inst✝⁷ : HasImages C
inst✝⁶ : HasProjectiveResolutions C
inst✝⁵ : Preadditive D
inst✝⁴ : HasEqualizers D
inst✝³ : HasCokernels D
inst✝² : HasImages D
inst✝¹ : HasImageMaps D
F : C ⥤ D
inst✝ : Functor.Additive F
n : ℕ
⊢ leftDerived (𝟙 F) n = 𝟙 (Functor.leftDerived F n)

tactic: rfl
state_before: C : Type u
inst✝¹² : Category C
D : Type u_2
inst✝¹¹ : Category D
inst✝¹⁰ : Preadditive C
inst✝⁹ : HasZeroObject C
inst✝⁸ : HasEqualizers C
inst✝⁷ : HasImages C
inst✝⁶ : HasProjectiveResolutions C
inst✝⁵ : Preadditive D
inst✝⁴ : HasEqualizers D
inst✝³ : HasCokernels D
inst✝² : HasImages D
inst✝¹ : HasImageMaps D
F : C ⥤ D
inst✝ : Functor.Additive F
n : ℕ
⊢ 𝟙
      (projectiveResolutions C ⋙
        Functor.mapHomotopyCategory F (ComplexShape.down ℕ) ⋙
          HomotopyCategory.homologyFunctor D (ComplexShape.down ℕ) n) =
    𝟙 (Functor.leftDerived F n)
Theorem: Subgroup.normalCore_eq_ker
File: Mathlib/GroupTheory/GroupAction/Quotient.lean

tactic: apply le_antisymm
state_before: α : Type u
β : Type v
γ : Type w
G : Type u_1
inst✝ : Group G
H : Subgroup G
⊢ normalCore H = MonoidHom.ker (MulAction.toPermHom G (G ⧸ H))

tactic: intro g hg
state_before: case a
α : Type u
β : Type v
γ : Type w
G : Type u_1
inst✝ : Group G
H : Subgroup G
⊢ normalCore H ≤ MonoidHom.ker (MulAction.toPermHom G (G ⧸ H))

tactic: apply Equiv.Perm.ext
state_before: case a
α : Type u
β : Type v
γ : Type w
G : Type u_1
inst✝ : Group G
H : Subgroup G
g : G
hg : g ∈ normalCore H
⊢ g ∈ MonoidHom.ker (MulAction.toPermHom G (G ⧸ H))

tactic: refine' fun q ↦ QuotientGroup.induction_on q _
state_before: case a.H
α : Type u
β : Type v
γ : Type w
G : Type u_1
inst✝ : Group G
H : Subgroup G
g : G
hg : g ∈ normalCore H
⊢ ∀ (x : G ⧸ H), ↑(↑(MulAction.toPermHom G (G ⧸ H)) g) x = ↑1 x

tactic: refine' fun g' => (MulAction.Quotient.smul_mk H g g').trans (QuotientGroup.eq.mpr _)
state_before: case a.H
α : Type u
β : Type v
γ : Type w
G : Type u_1
inst✝ : Group G
H : Subgroup G
g : G
hg : g ∈ normalCore H
q : G ⧸ H
⊢ ∀ (z : G), ↑(↑(MulAction.toPermHom G (G ⧸ H)) g) ↑z = ↑1 ↑z

tactic: rw [smul_eq_mul, mul_inv_rev, ← inv_inv g', inv_inv]
state_before: case a.H
α : Type u
β : Type v
γ : Type w
G : Type u_1
inst✝ : Group G
H : Subgroup G
g : G
hg : g ∈ normalCore H
q : G ⧸ H
g' : G
⊢ (g • g')⁻¹ * g' ∈ H

tactic: exact H.normalCore.inv_mem hg g'⁻¹
state_before: case a.H
α : Type u
β : Type v
γ : Type w
G : Type u_1
inst✝ : Group G
H : Subgroup G
g : G
hg : g ∈ normalCore H
q : G ⧸ H
g' : G
⊢ g'⁻¹ * g⁻¹ * g'⁻¹⁻¹ ∈ H

tactic: refine' (Subgroup.normal_le_normalCore.mpr fun g hg => _)
state_before: case a
α : Type u
β : Type v
γ : Type w
G : Type u_1
inst✝ : Group G
H : Subgroup G
⊢ MonoidHom.ker (MulAction.toPermHom G (G ⧸ H)) ≤ normalCore H

tactic: rw [← H.inv_mem_iff, ← mul_one g⁻¹, ← QuotientGroup.eq, ← mul_one g]
state_before: case a
α : Type u
β : Type v
γ : Type w
G : Type u_1
inst✝ : Group G
H : Subgroup G
g : G
hg : g ∈ MonoidHom.ker (MulAction.toPermHom G (G ⧸ H))
⊢ g ∈ H

tactic: exact (MulAction.Quotient.smul_mk H g 1).symm.trans (Equiv.Perm.ext_iff.mp hg (1 : G))
state_before: case a
α : Type u
β : Type v
γ : Type w
G : Type u_1
inst✝ : Group G
H : Subgroup G
g : G
hg : g ∈ MonoidHom.ker (MulAction.toPermHom G (G ⧸ H))
⊢ ↑(g * 1) = ↑1
Theorem: CategoryTheory.Limits.pushoutIsoUnopPullback_inl_hom
File: Mathlib/CategoryTheory/Limits/Opposites.lean

tactic: simp
state_before: C : Type u₁
inst✝³ : Category C
J : Type u₂
inst✝² : Category J
X✝ : Type v₂
X Y Z : C
f : X ⟶ Z
g : X ⟶ Y
inst✝¹ : HasPushout f g
inst✝ : HasPullback f.op g.op
⊢ (PullbackCone.unop (limit.cone (cospan f.op g.op))).ι.app WalkingSpan.left = pullback.fst.unop
Theorem: Complex.range_normSq
File: Mathlib/Data/Complex/Basic.lean

tactic: rw [normSq_ofReal, Real.mul_self_sqrt hx]
state_before: x : ℝ
hx : x ∈ Ici 0
⊢ ↑normSq ↑(Real.sqrt x) = x
Theorem: MvPolynomial.degreeOf_mul_X_eq
File: Mathlib/Data/MvPolynomial/Variables.lean

tactic: classical
repeat' rw [degreeOf]
apply (Multiset.count_le_of_le j (degrees_mul f (X j))).trans
simp only [Multiset.count_add, add_le_add_iff_left]
convert Multiset.count_le_of_le j (degrees_X' (R:=R) j)
rw [Multiset.count_singleton_self]
state_before: R : Type u
S : Type v
σ : Type u_1
τ : Type ?u.318009
r : R
e : ℕ
n m : σ
s : σ →₀ ℕ
inst✝ : CommSemiring R
p q : MvPolynomial σ R
j : σ
f : MvPolynomial σ R
⊢ degreeOf j (f * X j) ≤ degreeOf j f + 1

tactic: repeat' rw [degreeOf]
state_before: R : Type u
S : Type v
σ : Type u_1
τ : Type ?u.318009
r : R
e : ℕ
n m : σ
s : σ →₀ ℕ
inst✝ : CommSemiring R
p q : MvPolynomial σ R
j : σ
f : MvPolynomial σ R
⊢ degreeOf j (f * X j) ≤ degreeOf j f + 1

tactic: apply (Multiset.count_le_of_le j (degrees_mul f (X j))).trans
state_before: R : Type u
S : Type v
σ : Type u_1
τ : Type ?u.318009
r : R
e : ℕ
n m : σ
s : σ →₀ ℕ
inst✝ : CommSemiring R
p q : MvPolynomial σ R
j : σ
f : MvPolynomial σ R
⊢ Multiset.count j (degrees (f * X j)) ≤ Multiset.count j (degrees f) + 1

tactic: simp only [Multiset.count_add, add_le_add_iff_left]
state_before: R : Type u
S : Type v
σ : Type u_1
τ : Type ?u.318009
r : R
e : ℕ
n m : σ
s : σ →₀ ℕ
inst✝ : CommSemiring R
p q : MvPolynomial σ R
j : σ
f : MvPolynomial σ R
⊢ Multiset.count j (degrees f + degrees (X j)) ≤ Multiset.count j (degrees f) + 1

tactic: convert Multiset.count_le_of_le j (degrees_X' (R:=R) j)
state_before: R : Type u
S : Type v
σ : Type u_1
τ : Type ?u.318009
r : R
e : ℕ
n m : σ
s : σ →₀ ℕ
inst✝ : CommSemiring R
p q : MvPolynomial σ R
j : σ
f : MvPolynomial σ R
⊢ Multiset.count j (degrees (X j)) ≤ 1

tactic: rw [Multiset.count_singleton_self]
state_before: case h.e'_4
R : Type u
S : Type v
σ : Type u_1
τ : Type ?u.318009
r : R
e : ℕ
n m : σ
s : σ →₀ ℕ
inst✝ : CommSemiring R
p q : MvPolynomial σ R
j : σ
f : MvPolynomial σ R
⊢ 1 = Multiset.count j {j}

tactic: rw [degreeOf]
state_before: R : Type u
S : Type v
σ : Type u_1
τ : Type ?u.318009
r : R
e : ℕ
n m : σ
s : σ →₀ ℕ
inst✝ : CommSemiring R
p q : MvPolynomial σ R
j : σ
f : MvPolynomial σ R
⊢ Multiset.count j (degrees (f * X j)) ≤ Multiset.count j (degrees f) + 1
Theorem: PFunctor.M.dest_corec
File: Mathlib/Data/PFunctor/Univariate/M.lean

tactic: rw [corec_def, dest_mk]
state_before: F : PFunctor
X : Type ?u.72575
f : X → Obj F X
P : PFunctor
α : Type u
g : α → Obj P α
x : α
⊢ dest (M.corec g x) = M.corec g <$> g x
Theorem: Zsqrtd.dmuld
File: Mathlib/NumberTheory/Zsqrtd/Basic.lean

tactic: simp [ext]
state_before: d : ℤ
⊢ sqrtd * sqrtd = ↑d
Theorem: Polynomial.dvd_pow_natDegree_of_eval₂_eq_zero
File: Mathlib/RingTheory/Polynomial/Eisenstein/Basic.lean

tactic: rw [← natDegree_scaleRoots p x, ← Ideal.mem_span_singleton]
state_before: R : Type u
A : Type u_1
inst✝¹ : CommRing R
inst✝ : CommRing A
f : R →+* A
hf : Function.Injective ↑f
p : R[X]
hp : Monic p
x y : R
z : A
h : eval₂ f z p = 0
hz : ↑f x * z = ↑f y
⊢ x ∣ y ^ natDegree p

tactic: refine'
  (scaleRoots.isWeaklyEisensteinAt _
        (Ideal.mem_span_singleton.mpr <| dvd_refl x)).pow_natDegree_le_of_root_of_monic_mem
    _ ((monic_scaleRoots_iff x).mpr hp) _ le_rfl
state_before: R : Type u
A : Type u_1
inst✝¹ : CommRing R
inst✝ : CommRing A
f : R →+* A
hf : Function.Injective ↑f
p : R[X]
hp : Monic p
x y : R
z : A
h : eval₂ f z p = 0
hz : ↑f x * z = ↑f y
⊢ y ^ natDegree (scaleRoots p x) ∈ span {x}

tactic: rw [injective_iff_map_eq_zero'] at hf
state_before: R : Type u
A : Type u_1
inst✝¹ : CommRing R
inst✝ : CommRing A
f : R →+* A
hf : Function.Injective ↑f
p : R[X]
hp : Monic p
x y : R
z : A
h : eval₂ f z p = 0
hz : ↑f x * z = ↑f y
⊢ IsRoot (scaleRoots p x) y

tactic: have : eval₂ _ _ (p.scaleRoots x) = 0 := scaleRoots_eval₂_eq_zero f h
state_before: R : Type u
A : Type u_1
inst✝¹ : CommRing R
inst✝ : CommRing A
f : R →+* A
hf : ∀ (a : R), ↑f a = 0 ↔ a = 0
p : R[X]
hp : Monic p
x y : R
z : A
h : eval₂ f z p = 0
hz : ↑f x * z = ↑f y
⊢ IsRoot (scaleRoots p x) y

tactic: rwa [hz, Polynomial.eval₂_at_apply, hf] at this
state_before: R : Type u
A : Type u_1
inst✝¹ : CommRing R
inst✝ : CommRing A
f : R →+* A
hf : ∀ (a : R), ↑f a = 0 ↔ a = 0
p : R[X]
hp : Monic p
x y : R
z : A
h : eval₂ f z p = 0
hz : ↑f x * z = ↑f y
this : eval₂ f (↑f x * z) (scaleRoots p x) = 0
⊢ IsRoot (scaleRoots p x) y
Theorem: isOpenMap_sigmaMk
File: Mathlib/Topology/Constructions.lean

tactic: intro s hs
state_before: α : Type u
β : Type v
γ : Type ?u.514883
δ : Type ?u.514886
ε : Type ?u.514889
ζ : Type ?u.514892
ι : Type u_2
κ : Type ?u.514898
σ : ι → Type u_1
τ : κ → Type ?u.514908
inst✝² : (i : ι) → TopologicalSpace (σ i)
inst✝¹ : (k : κ) → TopologicalSpace (τ k)
inst✝ : TopologicalSpace α
i : ι
⊢ IsOpenMap (Sigma.mk i)

tactic: rw [isOpen_sigma_iff]
state_before: α : Type u
β : Type v
γ : Type ?u.514883
δ : Type ?u.514886
ε : Type ?u.514889
ζ : Type ?u.514892
ι : Type u_2
κ : Type ?u.514898
σ : ι → Type u_1
τ : κ → Type ?u.514908
inst✝² : (i : ι) → TopologicalSpace (σ i)
inst✝¹ : (k : κ) → TopologicalSpace (τ k)
inst✝ : TopologicalSpace α
i : ι
s : Set (σ i)
hs : IsOpen s
⊢ IsOpen (Sigma.mk i '' s)

tactic: intro j
state_before: α : Type u
β : Type v
γ : Type ?u.514883
δ : Type ?u.514886
ε : Type ?u.514889
ζ : Type ?u.514892
ι : Type u_2
κ : Type ?u.514898
σ : ι → Type u_1
τ : κ → Type ?u.514908
inst✝² : (i : ι) → TopologicalSpace (σ i)
inst✝¹ : (k : κ) → TopologicalSpace (τ k)
inst✝ : TopologicalSpace α
i : ι
s : Set (σ i)
hs : IsOpen s
⊢ ∀ (i_1 : ι), IsOpen (Sigma.mk i_1 ⁻¹' (Sigma.mk i '' s))

tactic: rcases eq_or_ne j i with (rfl | hne)
state_before: α : Type u
β : Type v
γ : Type ?u.514883
δ : Type ?u.514886
ε : Type ?u.514889
ζ : Type ?u.514892
ι : Type u_2
κ : Type ?u.514898
σ : ι → Type u_1
τ : κ → Type ?u.514908
inst✝² : (i : ι) → TopologicalSpace (σ i)
inst✝¹ : (k : κ) → TopologicalSpace (τ k)
inst✝ : TopologicalSpace α
i : ι
s : Set (σ i)
hs : IsOpen s
j : ι
⊢ IsOpen (Sigma.mk j ⁻¹' (Sigma.mk i '' s))

tactic: rwa [Set.preimage_image_eq _ sigma_mk_injective]
state_before: case inl
α : Type u
β : Type v
γ : Type ?u.514883
δ : Type ?u.514886
ε : Type ?u.514889
ζ : Type ?u.514892
ι : Type u_2
κ : Type ?u.514898
σ : ι → Type u_1
τ : κ → Type ?u.514908
inst✝² : (i : ι) → TopologicalSpace (σ i)
inst✝¹ : (k : κ) → TopologicalSpace (τ k)
inst✝ : TopologicalSpace α
j : ι
s : Set (σ j)
hs : IsOpen s
⊢ IsOpen (Sigma.mk j ⁻¹' (Sigma.mk j '' s))

tactic: rw [preimage_image_sigmaMk_of_ne hne]
state_before: case inr
α : Type u
β : Type v
γ : Type ?u.514883
δ : Type ?u.514886
ε : Type ?u.514889
ζ : Type ?u.514892
ι : Type u_2
κ : Type ?u.514898
σ : ι → Type u_1
τ : κ → Type ?u.514908
inst✝² : (i : ι) → TopologicalSpace (σ i)
inst✝¹ : (k : κ) → TopologicalSpace (τ k)
inst✝ : TopologicalSpace α
i : ι
s : Set (σ i)
hs : IsOpen s
j : ι
hne : j ≠ i
⊢ IsOpen (Sigma.mk j ⁻¹' (Sigma.mk i '' s))

tactic: exact isOpen_empty
state_before: case inr
α : Type u
β : Type v
γ : Type ?u.514883
δ : Type ?u.514886
ε : Type ?u.514889
ζ : Type ?u.514892
ι : Type u_2
κ : Type ?u.514898
σ : ι → Type u_1
τ : κ → Type ?u.514908
inst✝² : (i : ι) → TopologicalSpace (σ i)
inst✝¹ : (k : κ) → TopologicalSpace (τ k)
inst✝ : TopologicalSpace α
i : ι
s : Set (σ i)
hs : IsOpen s
j : ι
hne : j ≠ i
⊢ IsOpen ∅
Theorem: LinearMap.mul_toMatrix₂
File: Mathlib/LinearAlgebra/Matrix/SesquilinearForm.lean

tactic: rw [LinearMap.toMatrix₂_comp b₁, toMatrix_toLin, transpose_transpose]
state_before: R : Type u_1
R₁ : Type ?u.1832104
R₂ : Type ?u.1832107
M✝ : Type ?u.1832110
M₁ : Type u_2
M₂ : Type u_3
M₁' : Type u_7
M₂' : Type ?u.1832122
n : Type u_5
m : Type u_6
n' : Type u_4
m' : Type ?u.1832134
ι : Type ?u.1832137
inst✝¹⁶ : CommRing R
inst✝¹⁵ : AddCommMonoid M₁
inst✝¹⁴ : Module R M₁
inst✝¹³ : AddCommMonoid M₂
inst✝¹² : Module R M₂
inst✝¹¹ : DecidableEq n
inst✝¹⁰ : Fintype n
inst✝⁹ : DecidableEq m
inst✝⁸ : Fintype m
b₁ : Basis n R M₁
b₂ : Basis m R M₂
inst✝⁷ : AddCommMonoid M₁'
inst✝⁶ : Module R M₁'
inst✝⁵ : AddCommMonoid M₂'
inst✝⁴ : Module R M₂'
b₁' : Basis n' R M₁'
b₂' : Basis m' R M₂'
inst✝³ : Fintype n'
inst✝² : Fintype m'
inst✝¹ : DecidableEq n'
inst✝ : DecidableEq m'
B : M₁ →ₗ[R] M₂ →ₗ[R] R
M : Matrix n' n R
⊢ M ⬝ ↑(toMatrix₂ b₁ b₂) B = ↑(toMatrix₂ b₁' b₂) (comp B (↑(toLin b₁' b₁) Mᵀ))