tasksource/leandojo huggingface dataset:
Theorem: UniqueFactorizationMonoid.dvd_of_mem_normalizedFactors
File: Mathlib/RingTheory/UniqueFactorizationDomain.lean

tactic: by_cases hcases : a = 0
state_before: α : Type u_1
inst✝³ : CancelCommMonoidWithZero α
inst✝² : DecidableEq α
inst✝¹ : NormalizationMonoid α
inst✝ : UniqueFactorizationMonoid α
a p : α
H : p ∈ normalizedFactors a
⊢ p ∣ a

tactic: rw [hcases]
state_before: case pos
α : Type u_1
inst✝³ : CancelCommMonoidWithZero α
inst✝² : DecidableEq α
inst✝¹ : NormalizationMonoid α
inst✝ : UniqueFactorizationMonoid α
a p : α
H : p ∈ normalizedFactors a
hcases : a = 0
⊢ p ∣ a

tactic: exact dvd_zero p
state_before: case pos
α : Type u_1
inst✝³ : CancelCommMonoidWithZero α
inst✝² : DecidableEq α
inst✝¹ : NormalizationMonoid α
inst✝ : UniqueFactorizationMonoid α
a p : α
H : p ∈ normalizedFactors a
hcases : a = 0
⊢ p ∣ 0

tactic: exact dvd_trans (Multiset.dvd_prod H) (Associated.dvd (normalizedFactors_prod hcases))
state_before: case neg
α : Type u_1
inst✝³ : CancelCommMonoidWithZero α
inst✝² : DecidableEq α
inst✝¹ : NormalizationMonoid α
inst✝ : UniqueFactorizationMonoid α
a p : α
H : p ∈ normalizedFactors a
hcases : ¬a = 0
⊢ p ∣ a
Theorem: SimpleGraph.Walk.length_transfer
File: Mathlib/Combinatorics/SimpleGraph/Connectivity.lean

tactic: induction p <;> simp [*]
state_before: V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
u v : V
p : Walk G u v
H : SimpleGraph V
hp : ∀ (e : Sym2 V), e ∈ edges p → e ∈ edgeSet H
⊢ length (Walk.transfer p H hp) = length p
Theorem: ContDiff.pow
File: Mathlib/Analysis/Calculus/ContDiff.lean

tactic: simpa using contDiff_const
state_before: 𝕜 : Type u_1
inst✝¹⁶ : NontriviallyNormedField 𝕜
D : Type uD
inst✝¹⁵ : NormedAddCommGroup D
inst✝¹⁴ : NormedSpace 𝕜 D
E : Type uE
inst✝¹³ : NormedAddCommGroup E
inst✝¹² : NormedSpace 𝕜 E
F : Type uF
inst✝¹¹ : NormedAddCommGroup F
inst✝¹⁰ : NormedSpace 𝕜 F
G : Type uG
inst✝⁹ : NormedAddCommGroup G
inst✝⁸ : NormedSpace 𝕜 G
X : Type ?u.1965996
inst✝⁷ : NormedAddCommGroup X
inst✝⁶ : NormedSpace 𝕜 X
s s₁ t u : Set E
f✝ f₁ : E → F
g : F → G
x x₀ : E
c : F
b : E × F → G
m n : ℕ∞
p : E → FormalMultilinearSeries 𝕜 E F
𝔸 : Type u_2
𝔸' : Type ?u.1969477
ι : Type ?u.1969480
𝕜' : Type ?u.1969483
inst✝⁵ : NormedRing 𝔸
inst✝⁴ : NormedAlgebra 𝕜 𝔸
inst✝³ : NormedCommRing 𝔸'
inst✝² : NormedAlgebra 𝕜 𝔸'
inst✝¹ : NormedField 𝕜'
inst✝ : NormedAlgebra 𝕜 𝕜'
f : E → 𝔸
hf : ContDiff 𝕜 n f
⊢ ContDiff 𝕜 n fun x => f x ^ 0

tactic: simpa [pow_succ] using hf.mul (hf.pow m)
state_before: 𝕜 : Type u_1
inst✝¹⁶ : NontriviallyNormedField 𝕜
D : Type uD
inst✝¹⁵ : NormedAddCommGroup D
inst✝¹⁴ : NormedSpace 𝕜 D
E : Type uE
inst✝¹³ : NormedAddCommGroup E
inst✝¹² : NormedSpace 𝕜 E
F : Type uF
inst✝¹¹ : NormedAddCommGroup F
inst✝¹⁰ : NormedSpace 𝕜 F
G : Type uG
inst✝⁹ : NormedAddCommGroup G
inst✝⁸ : NormedSpace 𝕜 G
X : Type ?u.1965996
inst✝⁷ : NormedAddCommGroup X
inst✝⁶ : NormedSpace 𝕜 X
s s₁ t u : Set E
f✝ f₁ : E → F
g : F → G
x x₀ : E
c : F
b : E × F → G
m✝ n : ℕ∞
p : E → FormalMultilinearSeries 𝕜 E F
𝔸 : Type u_2
𝔸' : Type ?u.1969477
ι : Type ?u.1969480
𝕜' : Type ?u.1969483
inst✝⁵ : NormedRing 𝔸
inst✝⁴ : NormedAlgebra 𝕜 𝔸
inst✝³ : NormedCommRing 𝔸'
inst✝² : NormedAlgebra 𝕜 𝔸'
inst✝¹ : NormedField 𝕜'
inst✝ : NormedAlgebra 𝕜 𝕜'
f : E → 𝔸
hf : ContDiff 𝕜 n f
m : ℕ
⊢ ContDiff 𝕜 n fun x => f x ^ (m + 1)
Theorem: borel_eq_generateFrom_Ico
File: Mathlib/MeasureTheory/Constructions/BorelSpace/Basic.lean

tactic: simpa only [exists_prop, mem_univ, true_and_iff] using
  (@dense_univ α _).borel_eq_generateFrom_Ico_mem_aux (fun _ _ => mem_univ _) fun _ _ _ _ =>
    mem_univ _
state_before: α✝ : Type ?u.658802
β : Type ?u.658805
γ : Type ?u.658808
γ₂ : Type ?u.658811
δ : Type ?u.658814
ι : Sort y
s t u : Set α✝
inst✝²⁰ : TopologicalSpace α✝
inst✝¹⁹ : MeasurableSpace α✝
inst✝¹⁸ : OpensMeasurableSpace α✝
inst✝¹⁷ : TopologicalSpace β
inst✝¹⁶ : MeasurableSpace β
inst✝¹⁵ : OpensMeasurableSpace β
inst✝¹⁴ : TopologicalSpace γ
inst✝¹³ : MeasurableSpace γ
inst✝¹² : BorelSpace γ
inst✝¹¹ : TopologicalSpace γ₂
inst✝¹⁰ : MeasurableSpace γ₂
inst✝⁹ : BorelSpace γ₂
inst✝⁸ : MeasurableSpace δ
α' : Type ?u.658907
inst✝⁷ : TopologicalSpace α'
inst✝⁶ : MeasurableSpace α'
inst✝⁵ : LinearOrder α✝
inst✝⁴ : OrderClosedTopology α✝
a b x : α✝
α : Type u_1
inst✝³ : TopologicalSpace α
inst✝² : SecondCountableTopology α
inst✝¹ : LinearOrder α
inst✝ : OrderTopology α
⊢ borel α = MeasurableSpace.generateFrom {S | ∃ l u, l < u ∧ Ico l u = S}
Theorem: IsCompact.inv
File: Mathlib/Topology/Algebra/Group/Basic.lean

tactic: rw [← image_inv]
state_before: α : Type u
β : Type v
G : Type w
H : Type x
inst✝² : TopologicalSpace G
inst✝¹ : InvolutiveInv G
inst✝ : ContinuousInv G
s : Set G
hs : IsCompact s
⊢ IsCompact s⁻¹

tactic: exact hs.image continuous_inv
state_before: α : Type u
β : Type v
G : Type w
H : Type x
inst✝² : TopologicalSpace G
inst✝¹ : InvolutiveInv G
inst✝ : ContinuousInv G
s : Set G
hs : IsCompact s
⊢ IsCompact (Inv.inv '' s)
Theorem: SetLike.nat_cast_mem_graded
File: Mathlib/Algebra/DirectSum/Internal.lean

tactic: induction' n with _ n_ih
state_before: ι : Type u_1
σ : Type u_3
S : Type ?u.25931
R : Type u_2
inst✝⁴ : Zero ι
inst✝³ : AddMonoidWithOne R
inst✝² : SetLike σ R
inst✝¹ : AddSubmonoidClass σ R
A : ι → σ
inst✝ : GradedOne A
n : ℕ
⊢ ↑n ∈ A 0

tactic: rw [Nat.cast_zero]
state_before: case zero
ι : Type u_1
σ : Type u_3
S : Type ?u.25931
R : Type u_2
inst✝⁴ : Zero ι
inst✝³ : AddMonoidWithOne R
inst✝² : SetLike σ R
inst✝¹ : AddSubmonoidClass σ R
A : ι → σ
inst✝ : GradedOne A
⊢ ↑Nat.zero ∈ A 0

tactic: exact zero_mem (A 0)
state_before: case zero
ι : Type u_1
σ : Type u_3
S : Type ?u.25931
R : Type u_2
inst✝⁴ : Zero ι
inst✝³ : AddMonoidWithOne R
inst✝² : SetLike σ R
inst✝¹ : AddSubmonoidClass σ R
A : ι → σ
inst✝ : GradedOne A
⊢ 0 ∈ A 0

tactic: rw [Nat.cast_succ]
state_before: case succ
ι : Type u_1
σ : Type u_3
S : Type ?u.25931
R : Type u_2
inst✝⁴ : Zero ι
inst✝³ : AddMonoidWithOne R
inst✝² : SetLike σ R
inst✝¹ : AddSubmonoidClass σ R
A : ι → σ
inst✝ : GradedOne A
n✝ : ℕ
n_ih : ↑n✝ ∈ A 0
⊢ ↑(Nat.succ n✝) ∈ A 0

tactic: exact add_mem n_ih (SetLike.one_mem_graded _)
state_before: case succ
ι : Type u_1
σ : Type u_3
S : Type ?u.25931
R : Type u_2
inst✝⁴ : Zero ι
inst✝³ : AddMonoidWithOne R
inst✝² : SetLike σ R
inst✝¹ : AddSubmonoidClass σ R
A : ι → σ
inst✝ : GradedOne A
n✝ : ℕ
n_ih : ↑n✝ ∈ A 0
⊢ ↑n✝ + 1 ∈ A 0
Theorem: Cardinal.le_mul_left
File: Mathlib/SetTheory/Cardinal/Ordinal.lean

tactic: convert mul_le_mul_right' (one_le_iff_ne_zero.mpr h) a
state_before: a b : Cardinal
h : b ≠ 0
⊢ a ≤ b * a

tactic: rw [one_mul]
state_before: case h.e'_3
a b : Cardinal
h : b ≠ 0
⊢ a = 1 * a
Theorem: NonUnitalSubsemiring.mem_sSup_of_directedOn
File: Mathlib/RingTheory/NonUnitalSubsemiring/Basic.lean

tactic: haveI : Nonempty S := Sne.to_subtype
state_before: R : Type u
S✝ : Type v
T : Type w
inst✝³ : NonUnitalNonAssocSemiring R
M : Subsemigroup R
inst✝² : NonUnitalNonAssocSemiring S✝
inst✝¹ : NonUnitalNonAssocSemiring T
F : Type ?u.283475
inst✝ : NonUnitalRingHomClass F R S✝
S : Set (NonUnitalSubsemiring R)
Sne : Set.Nonempty S
hS : DirectedOn (fun x x_1 => x ≤ x_1) S
x : R
⊢ x ∈ sSup S ↔ ∃ s, s ∈ S ∧ x ∈ s

tactic: simp only [sSup_eq_iSup', mem_iSup_of_directed hS.directed_val, Subtype.exists, exists_prop]
state_before: R : Type u
S✝ : Type v
T : Type w
inst✝³ : NonUnitalNonAssocSemiring R
M : Subsemigroup R
inst✝² : NonUnitalNonAssocSemiring S✝
inst✝¹ : NonUnitalNonAssocSemiring T
F : Type ?u.283475
inst✝ : NonUnitalRingHomClass F R S✝
S : Set (NonUnitalSubsemiring R)
Sne : Set.Nonempty S
hS : DirectedOn (fun x x_1 => x ≤ x_1) S
x : R
this : Nonempty ↑S
⊢ x ∈ sSup S ↔ ∃ s, s ∈ S ∧ x ∈ s
Theorem: Finset.card_inter_add_card_union
File: Mathlib/Data/Finset/Card.lean

tactic: rw [add_comm, card_union_add_card_inter]
state_before: α : Type u_1
β : Type ?u.33374
s✝ t✝ : Finset α
f : α → β
n : ℕ
inst✝ : DecidableEq α
s t : Finset α
⊢ card (s ∩ t) + card (s ∪ t) = card s + card t
Theorem: Set.Ioc_subset_Ioc_iff
File: Mathlib/Data/Set/Intervals/Basic.lean

tactic: convert @Ico_subset_Ico_iff αᵒᵈ _ b₁ b₂ a₁ a₂ h₁ using 2 <;> exact (@dual_Ico α _ _ _).symm
state_before: α : Type u_1
β : Type ?u.65577
inst✝ : LinearOrder α
a a₁ a₂ b b₁ b₂ c d : α
h₁ : a₁ < b₁
⊢ Ioc a₁ b₁ ⊆ Ioc a₂ b₂ ↔ b₁ ≤ b₂ ∧ a₂ ≤ a₁
Theorem: Fin.min_val
File: Mathlib/Data/Fin/Basic.lean

tactic: simp
state_before: n m : ℕ
a : Fin n
⊢ min (↑a) n = ↑a
Theorem: norm_smul_le
File: Mathlib/Analysis/Normed/MulAction.lean

tactic: simpa [smul_zero] using dist_smul_pair r 0 x
state_before: α : Type u_2
β : Type u_1
inst✝³ : SeminormedAddGroup α
inst✝² : SeminormedAddGroup β
inst✝¹ : SMulZeroClass α β
inst✝ : BoundedSMul α β
r : α
x : β
⊢ ‖r • x‖ ≤ ‖r‖ * ‖x‖
Theorem: Nat.floor_one
File: Mathlib/Algebra/Order/Floor.lean

tactic: rw [← Nat.cast_one, floor_coe]
state_before: F : Type ?u.26362
α : Type u_1
β : Type ?u.26368
inst✝¹ : LinearOrderedSemiring α
inst✝ : FloorSemiring α
a : α
n : ℕ
⊢ ⌊1⌋₊ = 1
Theorem: Partrec.bind
File: Mathlib/Computability/Partrec.lean

tactic: simp [Seq.seq]
state_before: α : Type u_1
β : Type u_2
γ : Type ?u.52270
σ : Type u_3
inst✝³ : Primcodable α
inst✝² : Primcodable β
inst✝¹ : Primcodable γ
inst✝ : Primcodable σ
f : α →. β
g : α → β →. σ
hf : Partrec f
hg : Partrec₂ g
n : ℕ
⊢ (do
      let n ← Seq.seq (Nat.pair <$> Part.some n) fun x => Part.bind ↑(decode n) fun a => map encode (f a)
      Part.bind ↑(decode n) fun a => map encode ((fun p => g p.fst p.snd) a)) =
    Part.bind ↑(decode n) fun a => map encode ((fun a => Part.bind (f a) (g a)) a)

tactic: cases' e : decode (α := α) n with a <;> simp [e, encodek]
state_before: α : Type u_1
β : Type u_2
γ : Type ?u.52270
σ : Type u_3
inst✝³ : Primcodable α
inst✝² : Primcodable β
inst✝¹ : Primcodable γ
inst✝ : Primcodable σ
f : α →. β
g : α → β →. σ
hf : Partrec f
hg : Partrec₂ g
n : ℕ
⊢ (Part.bind (Part.bind ↑(decode n) fun y => map (Nat.pair n) (map encode (f y))) fun n =>
      Part.bind ↑(Option.bind (decode (Nat.unpair n).fst) fun a => Option.map (Prod.mk a) (decode (Nat.unpair n).snd))
        fun a => map encode (g a.fst a.snd)) =
    Part.bind ↑(decode n) fun a => Part.bind (f a) fun y => map encode (g a y)
Theorem: Filter.tendsto_nhds_atTop_iff
File: Mathlib/Topology/Filter.lean

tactic: simp only [nhds_atTop, tendsto_iInf, tendsto_principal, mem_Iic, le_principal_iff]
state_before: ι : Sort ?u.20384
α : Type u_2
β : Type u_1
X : Type ?u.20393
Y : Type ?u.20396
inst✝ : Preorder β
l : Filter α
f : α → Filter β
⊢ Tendsto f l (𝓝 atTop) ↔ ∀ (y : β), ∀ᶠ (a : α) in l, Ici y ∈ f a
Theorem: Ordinal.type_fin
File: Mathlib/SetTheory/Ordinal/Basic.lean

tactic: simp
state_before: α : Type ?u.240894
β : Type ?u.240897
γ : Type ?u.240900
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
n : ℕ
⊢ (type fun x x_1 => x < x_1) = ↑n
Theorem: Units.coe_dvd
File: Mathlib/Algebra/Divisibility/Units.lean

tactic: simp
state_before: α : Type u_1
inst✝ : Monoid α
a b : α
u : αˣ
⊢ a = ↑u * (↑u⁻¹ * a)
Theorem: EReal.toReal_sub
File: Mathlib/Data/Real/EReal.lean

tactic: lift x to ℝ using ⟨hx, h'x⟩
state_before: x y : EReal
hx : x ≠ ⊤
h'x : x ≠ ⊥
hy : y ≠ ⊤
h'y : y ≠ ⊥
⊢ toReal (x - y) = toReal x - toReal y

tactic: lift y to ℝ using ⟨hy, h'y⟩
state_before: case intro
y : EReal
hy : y ≠ ⊤
h'y : y ≠ ⊥
x : ℝ
hx : ↑x ≠ ⊤
h'x : ↑x ≠ ⊥
⊢ toReal (↑x - y) = toReal ↑x - toReal y

tactic: rfl
state_before: case intro.intro
x : ℝ
hx : ↑x ≠ ⊤
h'x : ↑x ≠ ⊥
y : ℝ
hy : ↑y ≠ ⊤
h'y : ↑y ≠ ⊥
⊢ toReal (↑x - ↑y) = toReal ↑x - toReal ↑y
Theorem: Real.sin_arctan
File: Mathlib/Analysis/SpecialFunctions/Trigonometric/Arctan.lean

tactic: rw_mod_cast [← tan_div_sqrt_one_add_tan_sq (cos_arctan_pos x), tan_arctan]
state_before: x : ℝ
⊢ sin (arctan x) = x / sqrt (↑1 + x ^ 2)
Theorem: CategoryTheory.Limits.biproduct.fromSubtype_π_subtype
File: Mathlib/CategoryTheory/Limits/Shapes/Biproducts.lean

tactic: apply biproduct.hom_ext'
state_before: J : Type w
C : Type u
inst✝³ : Category C
inst✝² : HasZeroMorphisms C
f : J → C
inst✝¹ : HasBiproduct f
p : J → Prop
inst✝ : HasBiproduct (Subtype.restrict p f)
j : Subtype p
⊢ fromSubtype f p ≫ π f ↑j = π (Subtype.restrict p f) j

tactic: intro i
state_before: case w
J : Type w
C : Type u
inst✝³ : Category C
inst✝² : HasZeroMorphisms C
f : J → C
inst✝¹ : HasBiproduct f
p : J → Prop
inst✝ : HasBiproduct (Subtype.restrict p f)
j : Subtype p
⊢ ∀ (j_1 : Subtype p),
    ι (Subtype.restrict p f) j_1 ≫ fromSubtype f p ≫ π f ↑j = ι (Subtype.restrict p f) j_1 ≫ π (Subtype.restrict p f) j

tactic: rw [biproduct.fromSubtype, biproduct.ι_desc_assoc, biproduct.ι_π, biproduct.ι_π]
state_before: case w
J : Type w
C : Type u
inst✝³ : Category C
inst✝² : HasZeroMorphisms C
f : J → C
inst✝¹ : HasBiproduct f
p : J → Prop
inst✝ : HasBiproduct (Subtype.restrict p f)
j i : Subtype p
⊢ ι (Subtype.restrict p f) i ≫ fromSubtype f p ≫ π f ↑j = ι (Subtype.restrict p f) i ≫ π (Subtype.restrict p f) j

tactic: split_ifs with h₁ h₂ h₂
state_before: case w
J : Type w
C : Type u
inst✝³ : Category C
inst✝² : HasZeroMorphisms C
f : J → C
inst✝¹ : HasBiproduct f
p : J → Prop
inst✝ : HasBiproduct (Subtype.restrict p f)
j i : Subtype p
⊢ (if h : ↑i = ↑j then eqToHom (_ : f ↑i = f ↑j) else 0) =
    if h : i = j then eqToHom (_ : Subtype.restrict p f i = Subtype.restrict p f j) else 0

tactic: exacts [rfl, False.elim (h₂ (Subtype.ext h₁)), False.elim (h₁ (congr_arg Subtype.val h₂)), rfl]
state_before: case w.inl.inl
J : Type w
C : Type u
inst✝³ : Category C
inst✝² : HasZeroMorphisms C
f : J → C
inst✝¹ : HasBiproduct f
p : J → Prop
inst✝ : HasBiproduct (Subtype.restrict p f)
j i : Subtype p
h₁ : ↑i = ↑j
h₂ : i = j
⊢ eqToHom (_ : f ↑i = f ↑j) = eqToHom (_ : Subtype.restrict p f i = Subtype.restrict p f j)

case w.inl.inr
J : Type w
C : Type u
inst✝³ : Category C
inst✝² : HasZeroMorphisms C
f : J → C
inst✝¹ : HasBiproduct f
p : J → Prop
inst✝ : HasBiproduct (Subtype.restrict p f)
j i : Subtype p
h₁ : ↑i = ↑j
h₂ : ¬i = j
⊢ eqToHom (_ : f ↑i = f ↑j) = 0

case w.inr.inl
J : Type w
C : Type u
inst✝³ : Category C
inst✝² : HasZeroMorphisms C
f : J → C
inst✝¹ : HasBiproduct f
p : J → Prop
inst✝ : HasBiproduct (Subtype.restrict p f)
j i : Subtype p
h₁ : ¬↑i = ↑j
h₂ : i = j
⊢ 0 = eqToHom (_ : Subtype.restrict p f i = Subtype.restrict p f j)

case w.inr.inr
J : Type w
C : Type u
inst✝³ : Category C
inst✝² : HasZeroMorphisms C
f : J → C
inst✝¹ : HasBiproduct f
p : J → Prop
inst✝ : HasBiproduct (Subtype.restrict p f)
j i : Subtype p
h₁ : ¬↑i = ↑j
h₂ : ¬i = j
⊢ 0 = 0
Theorem: ENNReal.tendsto_sum_nat_add
File: Mathlib/Topology/Instances/ENNReal.lean

tactic: lift f to ℕ → ℝ≥0 using ENNReal.ne_top_of_tsum_ne_top hf
state_before: α : Type ?u.333832
β : Type ?u.333835
γ : Type ?u.333838
f : ℕ → ℝ≥0∞
hf : (∑' (i : ℕ), f i) ≠ ⊤
⊢ Tendsto (fun i => ∑' (k : ℕ), f (k + i)) atTop (𝓝 0)

tactic: replace hf : Summable f := tsum_coe_ne_top_iff_summable.1 hf
state_before: case intro
α : Type ?u.333832
β : Type ?u.333835
γ : Type ?u.333838
f : ℕ → ℝ≥0
hf : (∑' (i : ℕ), (fun i => ↑(f i)) i) ≠ ⊤
⊢ Tendsto (fun i => ∑' (k : ℕ), (fun i => ↑(f i)) (k + i)) atTop (𝓝 0)

tactic: simp only [← ENNReal.coe_tsum, NNReal.summable_nat_add _ hf, ← ENNReal.coe_zero]
state_before: case intro
α : Type ?u.333832
β : Type ?u.333835
γ : Type ?u.333838
f : ℕ → ℝ≥0
hf : Summable f
⊢ Tendsto (fun i => ∑' (k : ℕ), (fun i => ↑(f i)) (k + i)) atTop (𝓝 0)

tactic: exact_mod_cast NNReal.tendsto_sum_nat_add f
state_before: case intro
α : Type ?u.333832
β : Type ?u.333835
γ : Type ?u.333838
f : ℕ → ℝ≥0
hf : Summable f
⊢ Tendsto (fun i => ↑(∑' (a : ℕ), f (a + i))) atTop (𝓝 ↑0)
Theorem: CategoryTheory.projective_of_preservesFiniteColimits_preadditiveCoyonedaObj
File: Mathlib/CategoryTheory/Abelian/Projective.lean

tactic: rw [projective_iff_preservesEpimorphisms_preadditiveCoyoneda_obj']
state_before: C : Type u
inst✝¹ : Category C
inst✝ : Abelian C
P : C
hP : PreservesFiniteColimits (preadditiveCoyonedaObj P.op)
⊢ Projective P

tactic: dsimp only [preadditiveCoyoneda]
state_before: C : Type u
inst✝¹ : Category C
inst✝ : Abelian C
P : C
hP : PreservesFiniteColimits (preadditiveCoyonedaObj P.op)
⊢ Functor.PreservesEpimorphisms (preadditiveCoyoneda.obj P.op)

tactic: infer_instance
state_before: C : Type u
inst✝¹ : Category C
inst✝ : Abelian C
P : C
hP : PreservesFiniteColimits (preadditiveCoyonedaObj P.op)
⊢ Functor.PreservesEpimorphisms (preadditiveCoyonedaObj P.op ⋙ forget₂ (ModuleCat (End P.op)) AddCommGroupCat)
Theorem: image2_lowerBounds_upperBounds_subset_upperBounds_image2
File: Mathlib/Order/Bounds/Basic.lean

tactic: rintro _ ⟨a, b, ha, hb, rfl⟩
state_before: α : Type u
β : Type v
γ : Type w
ι : Sort x
inst✝² : Preorder α
inst✝¹ : Preorder β
inst✝ : Preorder γ
f : α → β → γ
s : Set α
t : Set β
a : α
b : β
h₀ : ∀ (b : β), Antitone (swap f b)
h₁ : ∀ (a : α), Monotone (f a)
⊢ image2 f (lowerBounds s) (upperBounds t) ⊆ upperBounds (image2 f s t)

tactic: exact mem_upperBounds_image2_of_mem_upperBounds_of_mem_upperBounds h₀ h₁ ha hb
state_before: case intro.intro.intro.intro
α : Type u
β : Type v
γ : Type w
ι : Sort x
inst✝² : Preorder α
inst✝¹ : Preorder β
inst✝ : Preorder γ
f : α → β → γ
s : Set α
t : Set β
a✝ : α
b✝ : β
h₀ : ∀ (b : β), Antitone (swap f b)
h₁ : ∀ (a : α), Monotone (f a)
a : α
b : β
ha : a ∈ lowerBounds s
hb : b ∈ upperBounds t
⊢ f a b ∈ upperBounds (image2 f s t)
Theorem: Rat.cast_eq_zero
File: Mathlib/Data/Rat/Cast.lean

tactic: rw [← cast_zero, cast_inj]
state_before: F : Type ?u.44490
ι : Type ?u.44493
α : Type u_1
β : Type ?u.44499
inst✝¹ : DivisionRing α
inst✝ : CharZero α
n : ℚ
⊢ ↑n = 0 ↔ n = 0
Theorem: NNReal.mul_eq_mul_left
File: Mathlib/Data/Real/NNReal.lean

tactic: rw [mul_eq_mul_left_iff, or_iff_left h]
state_before: a b c : ℝ≥0
h : a ≠ 0
⊢ a * b = a * c ↔ b = c
Theorem: Module.Finite.trans
File: Mathlib/RingTheory/Finiteness.lean

tactic: erw [Set.image2_smul, Submodule.span_smul_of_span_eq_top hs (↑t : Set M), ht,
  Submodule.restrictScalars_top]
state_before: R✝ : Type ?u.404363
A✝ : Type ?u.404366
B : Type ?u.404369
M✝ : Type ?u.404372
N : Type ?u.404375
inst✝¹¹ : Semiring R✝
inst✝¹⁰ : AddCommMonoid M✝
inst✝⁹ : Module R✝ M✝
inst✝⁸ : AddCommMonoid N
inst✝⁷ : Module R✝ N
R : Type u_1
A : Type u_2
M : Type u_3
inst✝⁶ : CommSemiring R
inst✝⁵ : Semiring A
inst✝⁴ : Algebra R A
inst✝³ : AddCommMonoid M
inst✝² : Module R M
inst✝¹ : Module A M
inst✝ : IsScalarTower R A M
s : Finset A
hs : Submodule.span R ↑s = ⊤
t : Finset M
ht : Submodule.span A ↑t = ⊤
⊢ Submodule.span R (image2 (fun x x_1 => x • x_1) ↑s ↑t) = ⊤
Theorem: CategoryTheory.Limits.equalizerSubobject_factors
File: Mathlib/CategoryTheory/Subobject/Limits.lean

tactic: simp
state_before: C : Type u
inst✝¹ : Category C
X Y Z : C
f g : X ⟶ Y
inst✝ : HasEqualizer f g
W : C
h : W ⟶ X
w : h ≫ f = h ≫ g
⊢ equalizer.lift h w ≫ MonoOver.arrow (MonoOver.mk' (equalizer.ι f g)) = h
Theorem: Rel.edgeDensity_add_edgeDensity_compl
File: Mathlib/Combinatorics/SimpleGraph/Density.lean

tactic: rw [edgeDensity, edgeDensity, div_add_div_same, div_eq_one_iff_eq]
state_before: 𝕜 : Type ?u.18447
ι : Type ?u.18450
κ : Type ?u.18453
α : Type u_1
β : Type u_2
inst✝¹ : LinearOrderedField 𝕜
r : α → β → Prop
inst✝ : (a : α) → DecidablePred (r a)
s s₁ s₂ : Finset α
t t₁ t₂ : Finset β
a : α
b : β
δ : 𝕜
hs : Finset.Nonempty s
ht : Finset.Nonempty t
⊢ edgeDensity r s t + edgeDensity (fun x y => ¬r x y) s t = 1

tactic: exact_mod_cast card_interedges_add_card_interedges_compl r s t
state_before: 𝕜 : Type ?u.18447
ι : Type ?u.18450
κ : Type ?u.18453
α : Type u_1
β : Type u_2
inst✝¹ : LinearOrderedField 𝕜
r : α → β → Prop
inst✝ : (a : α) → DecidablePred (r a)
s s₁ s₂ : Finset α
t t₁ t₂ : Finset β
a : α
b : β
δ : 𝕜
hs : Finset.Nonempty s
ht : Finset.Nonempty t
⊢ ↑(card (interedges r s t)) + ↑(card (interedges (fun x y => ¬r x y) s t)) = ↑(card s) * ↑(card t)

tactic: exact_mod_cast (mul_pos hs.card_pos ht.card_pos).ne'
state_before: 𝕜 : Type ?u.18447
ι : Type ?u.18450
κ : Type ?u.18453
α : Type u_1
β : Type u_2
inst✝¹ : LinearOrderedField 𝕜
r : α → β → Prop
inst✝ : (a : α) → DecidablePred (r a)
s s₁ s₂ : Finset α
t t₁ t₂ : Finset β
a : α
b : β
δ : 𝕜
hs : Finset.Nonempty s
ht : Finset.Nonempty t
⊢ ↑(card s) * ↑(card t) ≠ 0
Theorem: MvPolynomial.eval_polynomial_eval_finSuccEquiv
File: Mathlib/Data/MvPolynomial/Polynomial.lean

tactic: simp only [finSuccEquiv_apply, coe_eval₂Hom, polynomial_eval_eval₂, eval_eval₂]
state_before: R : Type u_1
n : ℕ
x : Fin n → R
inst✝ : CommSemiring R
f : MvPolynomial (Fin (n + 1)) R
q : MvPolynomial (Fin n) R
⊢ ↑(eval x) (Polynomial.eval q (↑(finSuccEquiv R n) f)) = ↑(eval fun i => Fin.cases (↑(eval x) q) x i) f

tactic: conv in RingHom.comp _ _ =>
{ refine @RingHom.ext _ _ _ _ _ (RingHom.id _) fun r => ?_
  simp }
state_before: R : Type u_1
n : ℕ
x : Fin n → R
inst✝ : CommSemiring R
f : MvPolynomial (Fin (n + 1)) R
q : MvPolynomial (Fin n) R
⊢ eval₂ (RingHom.comp (eval x) (RingHom.comp (Polynomial.evalRingHom q) (RingHom.comp Polynomial.C C)))
      (fun s => ↑(eval x) (Polynomial.eval q (Fin.cases Polynomial.X (fun k => ↑Polynomial.C (X k)) s))) f =
    ↑(eval fun i => Fin.cases (↑(eval x) q) x i) f

tactic: simp only [eval₂_id]
state_before: R : Type u_1
n : ℕ
x : Fin n → R
inst✝ : CommSemiring R
f : MvPolynomial (Fin (n + 1)) R
q : MvPolynomial (Fin n) R
⊢ eval₂ (RingHom.id R)
      (fun s => ↑(eval x) (Polynomial.eval q (Fin.cases Polynomial.X (fun k => ↑Polynomial.C (X k)) s))) f =
    ↑(eval fun i => Fin.cases (↑(eval x) q) x i) f

tactic: congr
state_before: R : Type u_1
n : ℕ
x : Fin n → R
inst✝ : CommSemiring R
f : MvPolynomial (Fin (n + 1)) R
q : MvPolynomial (Fin n) R
⊢ ↑(eval fun s => ↑(eval x) (Polynomial.eval q (Fin.cases Polynomial.X (fun k => ↑Polynomial.C (X k)) s))) f =
    ↑(eval fun i => Fin.cases (↑(eval x) q) x i) f

tactic: funext i
state_before: case e_a.e_f
R : Type u_1
n : ℕ
x : Fin n → R
inst✝ : CommSemiring R
f : MvPolynomial (Fin (n + 1)) R
q : MvPolynomial (Fin n) R
⊢ (fun s => ↑(eval x) (Polynomial.eval q (Fin.cases Polynomial.X (fun k => ↑Polynomial.C (X k)) s))) = fun i =>
    Fin.cases (↑(eval x) q) x i

tactic: refine Fin.cases (by simp) (by simp) i
state_before: case e_a.e_f.h
R : Type u_1
n : ℕ
x : Fin n → R
inst✝ : CommSemiring R
f : MvPolynomial (Fin (n + 1)) R
q : MvPolynomial (Fin n) R
i : Fin (n + 1)
⊢ ↑(eval x) (Polynomial.eval q (Fin.cases Polynomial.X (fun k => ↑Polynomial.C (X k)) i)) = Fin.cases (↑(eval x) q) x i

tactic: simp
state_before: R : Type u_1
n : ℕ
x : Fin n → R
inst✝ : CommSemiring R
f : MvPolynomial (Fin (n + 1)) R
q : MvPolynomial (Fin n) R
i : Fin (n + 1)
⊢ ↑(eval x) (Polynomial.eval q (Fin.cases Polynomial.X (fun k => ↑Polynomial.C (X k)) 0)) = Fin.cases (↑(eval x) q) x 0

tactic: simp
state_before: R : Type u_1
n : ℕ
x : Fin n → R
inst✝ : CommSemiring R
f : MvPolynomial (Fin (n + 1)) R
q : MvPolynomial (Fin n) R
i : Fin (n + 1)
⊢ ∀ (i : Fin n),
    ↑(eval x) (Polynomial.eval q (Fin.cases Polynomial.X (fun k => ↑Polynomial.C (X k)) (Fin.succ i))) =
      Fin.cases (↑(eval x) q) x (Fin.succ i)
Theorem: String.extract_zero_endPos
File: Std/Data/String/Lemmas.lean

tactic: simp [extract, Nat.ne_of_gt add_csize_pos]
state_before: c : Char
cs : List Char
⊢ extract { data := c :: cs } 0 (endPos { data := c :: cs }) = { data := c :: cs }

tactic: congr
state_before: c : Char
cs : List Char
⊢ { data := extract.go₁ (c :: cs) 0 0 { byteIdx := utf8Len cs + csize c } } = { data := c :: cs }

tactic: apply extract.go₁_zero_utf8Len
state_before: case e_data
c : Char
cs : List Char
⊢ extract.go₁ (c :: cs) 0 0 { byteIdx := utf8Len cs + csize c } = c :: cs
Theorem: HolorIndex.take_take
File: Mathlib/Data/Holor.lean

tactic: simp [assocRight, take, cast_type, List.take_take, Nat.le_add_right, min_eq_left]
state_before: ds₁ ds₂ ds₃ is : List ℕ
h : Forall₂ (fun x x_1 => x < x_1) is (ds₁ ++ ds₂ ++ ds₃)
⊢ ↑(take (assocRight { val := is, property := h })) = ↑(take (take { val := is, property := h }))
Theorem: add_pow_char_pow_of_commute
File: Mathlib/Algebra/CharP/Basic.lean

tactic: let ⟨r, hr⟩ := h.exists_add_pow_prime_pow_eq hp.out n
state_before: R : Type u_1
inst✝¹ : Semiring R
p n : ℕ
hp : Fact (Nat.Prime p)
inst✝ : CharP R p
x y : R
h : Commute x y
⊢ (x + y) ^ p ^ n = x ^ p ^ n + y ^ p ^ n

tactic: simp [hr]
state_before: R : Type u_1
inst✝¹ : Semiring R
p n : ℕ
hp : Fact (Nat.Prime p)
inst✝ : CharP R p
x y : R
h : Commute x y
r : R
hr : (x + y) ^ p ^ n = x ^ p ^ n + y ^ p ^ n + ↑p * r
⊢ (x + y) ^ p ^ n = x ^ p ^ n + y ^ p ^ n