1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: CategoryTheory.ComposableArrows.hom_ext₀
File: Mathlib/CategoryTheory/ComposableArrows.lean

tactic: ext i
state_before: C : Type u_1
inst✝ : Category.{u_2, u_1} C
n m : ℕ
F✝ G✝ : ComposableArrows C n
F G : ComposableArrows C 0
φ φ' : F ⟶ G
h : app' φ 0 ⋯ = app' φ' 0 ⋯
⊢ φ = φ'
state_after: case w.h
C : Type u_1
inst✝ : Category.{u_2, u_1} C
n m : ℕ
F✝ G✝ : ComposableArrows C n
F G : ComposableArrows C 0
φ φ' : F ⟶ G
h : app' φ 0 ⋯ = app' φ' 0 ⋯
i : Fin (0 + 1)
⊢ φ.app i = φ'.app i

tactic: fin_cases i
state_before: case w.h
C : Type u_1
inst✝ : Category.{u_2, u_1} C
n m : ℕ
F✝ G✝ : ComposableArrows C n
F G : ComposableArrows C 0
φ φ' : F ⟶ G
h : app' φ 0 ⋯ = app' φ' 0 ⋯
i : Fin (0 + 1)
⊢ φ.app i = φ'.app i
state_after: case w.h.head
C : Type u_1
inst✝ : Category.{u_2, u_1} C
n m : ℕ
F✝ G✝ : ComposableArrows C n
F G : ComposableArrows C 0
φ φ' : F ⟶ G
h : app' φ 0 ⋯ = app' φ' 0 ⋯
⊢ φ.app ⟨0, ⋯⟩ = φ'.app ⟨0, ⋯⟩

tactic: exact h
state_before: case w.h.head
C : Type u_1
inst✝ : Category.{u_2, u_1} C
n m : ℕ
F✝ G✝ : ComposableArrows C n
F G : ComposableArrows C 0
φ φ' : F ⟶ G
h : app' φ 0 ⋯ = app' φ' 0 ⋯
⊢ φ.app ⟨0, ⋯⟩ = φ'.app ⟨0, ⋯⟩
state_after: no goals
Theorem: Ordinal.sup_eq_sup
File: Mathlib/SetTheory/Ordinal/Arithmetic.lean

tactic: simp
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
r✝ : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
ι ι' : Type u
r : ι → ι → Prop
r' : ι' → ι' → Prop
inst✝¹ : IsWellOrder ι r
inst✝ : IsWellOrder ι' r'
o : Ordinal.{u}
ho : type r = o
ho' : type r' = o
f : (a : Ordinal.{u}) → a < o → Ordinal.{max u v}
⊢ range (familyOfBFamily' r ho f) = range (familyOfBFamily' r' ho' f)
state_after: no goals
Theorem: LiouvilleWith.add_int_iff
File: Mathlib/NumberTheory/Liouville/LiouvilleWith.lean

tactic: rw [← Rat.cast_intCast m, add_rat_iff]
state_before: p q x y : ℝ
r : ℚ
m : ℤ
n : ℕ
⊢ LiouvilleWith p (x + ↑m) ↔ LiouvilleWith p x
state_after: no goals
Theorem: intermediate_value_univ₂
File: Mathlib/Topology/Order/IntermediateValue.lean

tactic: obtain ⟨x, _, hfg, hgf⟩ : (univ ∩ { x | f x ≤ g x ∧ g x ≤ f x }).Nonempty :=
  isPreconnected_closed_iff.1 PreconnectedSpace.isPreconnected_univ _ _ (isClosed_le hf hg)
    (isClosed_le hg hf) (fun _ _ => le_total _ _) ⟨a, trivial, ha⟩ ⟨b, trivial, hb⟩
state_before: X : Type u
α : Type v
inst✝⁴ : TopologicalSpace X
inst✝³ : LinearOrder α
inst✝² : TopologicalSpace α
inst✝¹ : OrderClosedTopology α
inst✝ : PreconnectedSpace X
a b : X
f g : X → α
hf : Continuous f
hg : Continuous g
ha : f a ≤ g a
hb : g b ≤ f b
⊢ ∃ x, f x = g x
state_after: case intro.intro.intro
X : Type u
α : Type v
inst✝⁴ : TopologicalSpace X
inst✝³ : LinearOrder α
inst✝² : TopologicalSpace α
inst✝¹ : OrderClosedTopology α
inst✝ : PreconnectedSpace X
a b : X
f g : X → α
hf : Continuous f
hg : Continuous g
ha : f a ≤ g a
hb : g b ≤ f b
x : X
left✝ : x ∈ univ
hfg : f x ≤ g x
hgf : g x ≤ f x
⊢ ∃ x, f x = g x

tactic: exact ⟨x, le_antisymm hfg hgf⟩
state_before: case intro.intro.intro
X : Type u
α : Type v
inst✝⁴ : TopologicalSpace X
inst✝³ : LinearOrder α
inst✝² : TopologicalSpace α
inst✝¹ : OrderClosedTopology α
inst✝ : PreconnectedSpace X
a b : X
f g : X → α
hf : Continuous f
hg : Continuous g
ha : f a ≤ g a
hb : g b ≤ f b
x : X
left✝ : x ∈ univ
hfg : f x ≤ g x
hgf : g x ≤ f x
⊢ ∃ x, f x = g x
state_after: no goals
Theorem: MeasureTheory.snorm'_eq_zero_of_ae_zero
File: Mathlib/MeasureTheory/Function/LpSeminorm/Basic.lean

tactic: rw [snorm'_congr_ae hf_zero, snorm'_zero hq0_lt]
state_before: α : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
m m0 : MeasurableSpace α
p : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedAddCommGroup G
f : α → F
hq0_lt : 0 < q
hf_zero : f =ᶠ[ae μ] 0
⊢ snorm' f q μ = 0
state_after: no goals
Theorem: HurwitzZeta.hurwitzZetaEven_residue_one
File: Mathlib/NumberTheory/LSeries/HurwitzZetaEven.lean

tactic: have : Tendsto (fun s ↦ (s - 1) * completedHurwitzZetaEven a s / Gammaℝ s) (𝓝[≠] 1) (𝓝 1) := by
  simpa only [Gammaℝ_one, inv_one, mul_one] using (completedHurwitzZetaEven_residue_one a).mul
    <| (differentiable_Gammaℝ_inv.continuous.tendsto _).mono_left nhdsWithin_le_nhds
state_before: a : UnitAddCircle
⊢ Tendsto (fun s => (s - 1) * hurwitzZetaEven a s) (𝓝[≠] 1) (𝓝 1)
state_after: a : UnitAddCircle
this : Tendsto (fun s => (s - 1) * completedHurwitzZetaEven a s / s.Gammaℝ) (𝓝[≠] 1) (𝓝 1)
⊢ Tendsto (fun s => (s - 1) * hurwitzZetaEven a s) (𝓝[≠] 1) (𝓝 1)

tactic: refine this.congr' ?_
state_before: a : UnitAddCircle
this : Tendsto (fun s => (s - 1) * completedHurwitzZetaEven a s / s.Gammaℝ) (𝓝[≠] 1) (𝓝 1)
⊢ Tendsto (fun s => (s - 1) * hurwitzZetaEven a s) (𝓝[≠] 1) (𝓝 1)
state_after: a : UnitAddCircle
this : Tendsto (fun s => (s - 1) * completedHurwitzZetaEven a s / s.Gammaℝ) (𝓝[≠] 1) (𝓝 1)
⊢ (fun s => (s - 1) * completedHurwitzZetaEven a s / s.Gammaℝ) =ᶠ[𝓝[≠] 1] fun s => (s - 1) * hurwitzZetaEven a s

tactic: filter_upwards [eventually_ne_nhdsWithin one_ne_zero] with s hs
state_before: a : UnitAddCircle
this : Tendsto (fun s => (s - 1) * completedHurwitzZetaEven a s / s.Gammaℝ) (𝓝[≠] 1) (𝓝 1)
⊢ (fun s => (s - 1) * completedHurwitzZetaEven a s / s.Gammaℝ) =ᶠ[𝓝[≠] 1] fun s => (s - 1) * hurwitzZetaEven a s
state_after: case h
a : UnitAddCircle
this : Tendsto (fun s => (s - 1) * completedHurwitzZetaEven a s / s.Gammaℝ) (𝓝[≠] 1) (𝓝 1)
s : ℂ
hs : s ≠ 0
⊢ (s - 1) * completedHurwitzZetaEven a s / s.Gammaℝ = (s - 1) * hurwitzZetaEven a s

tactic: simp_rw [hurwitzZetaEven_def_of_ne_or_ne (Or.inr hs), mul_div_assoc]
state_before: case h
a : UnitAddCircle
this : Tendsto (fun s => (s - 1) * completedHurwitzZetaEven a s / s.Gammaℝ) (𝓝[≠] 1) (𝓝 1)
s : ℂ
hs : s ≠ 0
⊢ (s - 1) * completedHurwitzZetaEven a s / s.Gammaℝ = (s - 1) * hurwitzZetaEven a s
state_after: no goals

tactic: simpa only [Gammaℝ_one, inv_one, mul_one] using (completedHurwitzZetaEven_residue_one a).mul
  <| (differentiable_Gammaℝ_inv.continuous.tendsto _).mono_left nhdsWithin_le_nhds
state_before: a : UnitAddCircle
⊢ Tendsto (fun s => (s - 1) * completedHurwitzZetaEven a s / s.Gammaℝ) (𝓝[≠] 1) (𝓝 1)
state_after: no goals
Theorem: ArithmeticFunction.cardFactors_multiset_prod
File: Mathlib/NumberTheory/ArithmeticFunction.lean

tactic: induction s using Multiset.induction_on with
| empty => simp
| cons ih => simp_all [cardFactors_mul, not_or]
state_before: R : Type u_1
s : Multiset ℕ
h0 : s.prod ≠ 0
⊢ Ω s.prod = (Multiset.map (⇑Ω) s).sum
state_after: no goals

tactic: simp
state_before: case empty
R : Type u_1
h0 : Multiset.prod 0 ≠ 0
⊢ Ω (Multiset.prod 0) = (Multiset.map (⇑Ω) 0).sum
state_after: no goals

tactic: simp_all [cardFactors_mul, not_or]
state_before: case cons
R : Type u_1
ih : ℕ
s✝ : Multiset ℕ
a✝ : s✝.prod ≠ 0 → Ω s✝.prod = (Multiset.map (⇑Ω) s✝).sum
h0 : (ih ::ₘ s✝).prod ≠ 0
⊢ Ω (ih ::ₘ s✝).prod = (Multiset.map (⇑Ω) (ih ::ₘ s✝)).sum
state_after: no goals
Theorem: AlgebraicGeometry.Polynomial.isOpenMap_comap_C
File: Mathlib/AlgebraicGeometry/PrimeSpectrum/IsOpenComapC.lean

tactic: rintro U ⟨s, z⟩
state_before: R : Type u_1
inst✝ : CommRing R
f : R[X]
⊢ IsOpenMap ⇑(PrimeSpectrum.comap C)
state_after: case intro
R : Type u_1
inst✝ : CommRing R
f : R[X]
U : Set (PrimeSpectrum R[X])
s : Set R[X]
z : zeroLocus s = Uᶜ
⊢ IsOpen (⇑(PrimeSpectrum.comap C) '' U)

tactic: rw [← compl_compl U, ← z, ← iUnion_of_singleton_coe s, zeroLocus_iUnion, compl_iInter,
  image_iUnion]
state_before: case intro
R : Type u_1
inst✝ : CommRing R
f : R[X]
U : Set (PrimeSpectrum R[X])
s : Set R[X]
z : zeroLocus s = Uᶜ
⊢ IsOpen (⇑(PrimeSpectrum.comap C) '' U)
state_after: case intro
R : Type u_1
inst✝ : CommRing R
f : R[X]
U : Set (PrimeSpectrum R[X])
s : Set R[X]
z : zeroLocus s = Uᶜ
⊢ IsOpen (⋃ i, ⇑(PrimeSpectrum.comap C) '' (zeroLocus {↑i})ᶜ)

tactic: simp_rw [← imageOfDf_eq_comap_C_compl_zeroLocus]
state_before: case intro
R : Type u_1
inst✝ : CommRing R
f : R[X]
U : Set (PrimeSpectrum R[X])
s : Set R[X]
z : zeroLocus s = Uᶜ
⊢ IsOpen (⋃ i, ⇑(PrimeSpectrum.comap C) '' (zeroLocus {↑i})ᶜ)
state_after: case intro
R : Type u_1
inst✝ : CommRing R
f : R[X]
U : Set (PrimeSpectrum R[X])
s : Set R[X]
z : zeroLocus s = Uᶜ
⊢ IsOpen (⋃ i, imageOfDf ↑i)

tactic: exact isOpen_iUnion fun f => isOpen_imageOfDf
state_before: case intro
R : Type u_1
inst✝ : CommRing R
f : R[X]
U : Set (PrimeSpectrum R[X])
s : Set R[X]
z : zeroLocus s = Uᶜ
⊢ IsOpen (⋃ i, imageOfDf ↑i)
state_after: no goals
Theorem: Embedding.completelyNormalSpace
File: Mathlib/Topology/Separation.lean

tactic: refine ⟨fun s t hd₁ hd₂ => ?_⟩
state_before: X : Type u_1
Y : Type u_2
inst✝² : TopologicalSpace X
inst✝¹ : TopologicalSpace Y
inst✝ : CompletelyNormalSpace Y
e : X → Y
he : _root_.Embedding e
⊢ CompletelyNormalSpace X
state_after: X : Type u_1
Y : Type u_2
inst✝² : TopologicalSpace X
inst✝¹ : TopologicalSpace Y
inst✝ : CompletelyNormalSpace Y
e : X → Y
he : _root_.Embedding e
s t : Set X
hd₁ : Disjoint (closure s) t
hd₂ : Disjoint s (closure t)
⊢ Disjoint (𝓝ˢ s) (𝓝ˢ t)

tactic: simp only [he.toInducing.nhdsSet_eq_comap]
state_before: X : Type u_1
Y : Type u_2
inst✝² : TopologicalSpace X
inst✝¹ : TopologicalSpace Y
inst✝ : CompletelyNormalSpace Y
e : X → Y
he : _root_.Embedding e
s t : Set X
hd₁ : Disjoint (closure s) t
hd₂ : Disjoint s (closure t)
⊢ Disjoint (𝓝ˢ s) (𝓝ˢ t)
state_after: X : Type u_1
Y : Type u_2
inst✝² : TopologicalSpace X
inst✝¹ : TopologicalSpace Y
inst✝ : CompletelyNormalSpace Y
e : X → Y
he : _root_.Embedding e
s t : Set X
hd₁ : Disjoint (closure s) t
hd₂ : Disjoint s (closure t)
⊢ Disjoint (comap e (𝓝ˢ (e '' s))) (comap e (𝓝ˢ (e '' t)))

tactic: refine disjoint_comap (completely_normal ?_ ?_)
state_before: X : Type u_1
Y : Type u_2
inst✝² : TopologicalSpace X
inst✝¹ : TopologicalSpace Y
inst✝ : CompletelyNormalSpace Y
e : X → Y
he : _root_.Embedding e
s t : Set X
hd₁ : Disjoint (closure s) t
hd₂ : Disjoint s (closure t)
⊢ Disjoint (comap e (𝓝ˢ (e '' s))) (comap e (𝓝ˢ (e '' t)))
state_after: case refine_1
X : Type u_1
Y : Type u_2
inst✝² : TopologicalSpace X
inst✝¹ : TopologicalSpace Y
inst✝ : CompletelyNormalSpace Y
e : X → Y
he : _root_.Embedding e
s t : Set X
hd₁ : Disjoint (closure s) t
hd₂ : Disjoint s (closure t)
⊢ Disjoint (closure (e '' s)) (e '' t)

case refine_2
X : Type u_1
Y : Type u_2
inst✝² : TopologicalSpace X
inst✝¹ : TopologicalSpace Y
inst✝ : CompletelyNormalSpace Y
e : X → Y
he : _root_.Embedding e
s t : Set X
hd₁ : Disjoint (closure s) t
hd₂ : Disjoint s (closure t)
⊢ Disjoint (e '' s) (closure (e '' t))

tactic: rwa [← subset_compl_iff_disjoint_left, image_subset_iff, preimage_compl,
  ← he.closure_eq_preimage_closure_image, subset_compl_iff_disjoint_left]
state_before: case refine_1
X : Type u_1
Y : Type u_2
inst✝² : TopologicalSpace X
inst✝¹ : TopologicalSpace Y
inst✝ : CompletelyNormalSpace Y
e : X → Y
he : _root_.Embedding e
s t : Set X
hd₁ : Disjoint (closure s) t
hd₂ : Disjoint s (closure t)
⊢ Disjoint (closure (e '' s)) (e '' t)
state_after: no goals

tactic: rwa [← subset_compl_iff_disjoint_right, image_subset_iff, preimage_compl,
  ← he.closure_eq_preimage_closure_image, subset_compl_iff_disjoint_right]
state_before: case refine_2
X : Type u_1
Y : Type u_2
inst✝² : TopologicalSpace X
inst✝¹ : TopologicalSpace Y
inst✝ : CompletelyNormalSpace Y
e : X → Y
he : _root_.Embedding e
s t : Set X
hd₁ : Disjoint (closure s) t
hd₂ : Disjoint s (closure t)
⊢ Disjoint (e '' s) (closure (e '' t))
state_after: no goals
Theorem: List.drop_sum_join'
File: Mathlib/Data/List/Join.lean

tactic: induction L generalizing i
state_before: α : Type u_1
β : Type u_2
L : List (List α)
i : ℕ
⊢ drop (Nat.sum (take i (map length L))) L.join = (drop i L).join
state_after: case nil
α : Type u_1
β : Type u_2
i : ℕ
⊢ drop (Nat.sum (take i (map length []))) [].join = (drop i []).join

case cons
α : Type u_1
β : Type u_2
head✝ : List α
tail✝ : List (List α)
tail_ih✝ : ∀ (i : ℕ), drop (Nat.sum (take i (map length tail✝))) tail✝.join = (drop i tail✝).join
i : ℕ
⊢ drop (Nat.sum (take i (map length (head✝ :: tail✝)))) (head✝ :: tail✝).join = (drop i (head✝ :: tail✝)).join

tactic: simp
state_before: case nil
α : Type u_1
β : Type u_2
i : ℕ
⊢ drop (Nat.sum (take i (map length []))) [].join = (drop i []).join
state_after: no goals

tactic: cases i <;> simp [drop_append, *]
state_before: case cons
α : Type u_1
β : Type u_2
head✝ : List α
tail✝ : List (List α)
tail_ih✝ : ∀ (i : ℕ), drop (Nat.sum (take i (map length tail✝))) tail✝.join = (drop i tail✝).join
i : ℕ
⊢ drop (Nat.sum (take i (map length (head✝ :: tail✝)))) (head✝ :: tail✝).join = (drop i (head✝ :: tail✝)).join
state_after: no goals
Theorem: ProbabilityTheory.kernel.sum_fintype
File: Mathlib/Probability/Kernel/Basic.lean

tactic: ext a s hs
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
mα : MeasurableSpace α
mβ : MeasurableSpace β
κ✝ : ↥(kernel α β)
inst✝ : Fintype ι
κ : ι → ↥(kernel α β)
⊢ kernel.sum κ = ∑ i : ι, κ i
state_after: case h.h
α : Type u_1
β : Type u_2
ι : Type u_3
mα : MeasurableSpace α
mβ : MeasurableSpace β
κ✝ : ↥(kernel α β)
inst✝ : Fintype ι
κ : ι → ↥(kernel α β)
a : α
s : Set β
hs : MeasurableSet s
⊢ ((kernel.sum κ) a) s = ((∑ i : ι, κ i) a) s

tactic: simp only [sum_apply' κ a hs, finset_sum_apply' _ κ a s, tsum_fintype]
state_before: case h.h
α : Type u_1
β : Type u_2
ι : Type u_3
mα : MeasurableSpace α
mβ : MeasurableSpace β
κ✝ : ↥(kernel α β)
inst✝ : Fintype ι
κ : ι → ↥(kernel α β)
a : α
s : Set β
hs : MeasurableSet s
⊢ ((kernel.sum κ) a) s = ((∑ i : ι, κ i) a) s
state_after: no goals
Theorem: Finset.dvd_gcd_iff
File: Mathlib/Algebra/GCDMonoid/Finset.lean

tactic: apply Iff.trans Multiset.dvd_gcd
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
inst✝¹ : CancelCommMonoidWithZero α
inst✝ : NormalizedGCDMonoid α
s s₁ s₂ : Finset β
f : β → α
a : α
⊢ a ∣ s.gcd f ↔ ∀ b ∈ s, a ∣ f b
state_after: ι : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
inst✝¹ : CancelCommMonoidWithZero α
inst✝ : NormalizedGCDMonoid α
s s₁ s₂ : Finset β
f : β → α
a : α
⊢ (∀ b ∈ Multiset.map f s.val, a ∣ b) ↔ ∀ b ∈ s, a ∣ f b

tactic: simp only [Multiset.mem_map, and_imp, exists_imp]
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
inst✝¹ : CancelCommMonoidWithZero α
inst✝ : NormalizedGCDMonoid α
s s₁ s₂ : Finset β
f : β → α
a : α
⊢ (∀ b ∈ Multiset.map f s.val, a ∣ b) ↔ ∀ b ∈ s, a ∣ f b
state_after: ι : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
inst✝¹ : CancelCommMonoidWithZero α
inst✝ : NormalizedGCDMonoid α
s s₁ s₂ : Finset β
f : β → α
a : α
⊢ (∀ (b : α), ∀ x ∈ s.val, f x = b → a ∣ b) ↔ ∀ b ∈ s, a ∣ f b

tactic: exact ⟨fun k b hb ↦ k _ _ hb rfl, fun k a' b hb h ↦ h ▸ k _ hb⟩
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
inst✝¹ : CancelCommMonoidWithZero α
inst✝ : NormalizedGCDMonoid α
s s₁ s₂ : Finset β
f : β → α
a : α
⊢ (∀ (b : α), ∀ x ∈ s.val, f x = b → a ∣ b) ↔ ∀ b ∈ s, a ∣ f b
state_after: no goals
Theorem: eq_div_of_mul_eq'
File: Mathlib/Algebra/Group/Basic.lean

tactic: simp [← h]
state_before: α : Type u_1
β : Type u_2
G : Type u_3
M : Type u_4
inst✝ : Group G
a b c d : G
n : ℤ
h : a * c = b
⊢ a = b / c
state_after: no goals
Theorem: CochainComplex.mappingCone.inr_snd
File: Mathlib/Algebra/Homology/HomotopyCategory/MappingCone.lean

tactic: aesop_cat
state_before: C : Type u_1
inst✝² : Category.{u_2, u_1} C
inst✝¹ : Preadditive C
F G : CochainComplex C ℤ
φ : F ⟶ G
inst✝ : HasHomotopyCofiber φ
⊢ (Cochain.ofHom (inr φ)).comp (snd φ) ⋯ = Cochain.ofHom (𝟙 G)
state_after: no goals
Theorem: padicNorm.sum_le'
File: Mathlib/NumberTheory/Padics/PadicNorm.lean

tactic: obtain rfl | hs := Finset.eq_empty_or_nonempty s
state_before: p : ℕ
hp : Fact (Nat.Prime p)
α : Type u_1
F : α → ℚ
t : ℚ
s : Finset α
hF : ∀ i ∈ s, padicNorm p (F i) ≤ t
ht : 0 ≤ t
⊢ padicNorm p (∑ i ∈ s, F i) ≤ t
state_after: case inl
p : ℕ
hp : Fact (Nat.Prime p)
α : Type u_1
F : α → ℚ
t : ℚ
ht : 0 ≤ t
hF : ∀ i ∈ ∅, padicNorm p (F i) ≤ t
⊢ padicNorm p (∑ i ∈ ∅, F i) ≤ t

case inr
p : ℕ
hp : Fact (Nat.Prime p)
α : Type u_1
F : α → ℚ
t : ℚ
s : Finset α
hF : ∀ i ∈ s, padicNorm p (F i) ≤ t
ht : 0 ≤ t
hs : s.Nonempty
⊢ padicNorm p (∑ i ∈ s, F i) ≤ t

tactic: simp [ht]
state_before: case inl
p : ℕ
hp : Fact (Nat.Prime p)
α : Type u_1
F : α → ℚ
t : ℚ
ht : 0 ≤ t
hF : ∀ i ∈ ∅, padicNorm p (F i) ≤ t
⊢ padicNorm p (∑ i ∈ ∅, F i) ≤ t
state_after: no goals

tactic: exact sum_le hs hF
state_before: case inr
p : ℕ
hp : Fact (Nat.Prime p)
α : Type u_1
F : α → ℚ
t : ℚ
s : Finset α
hF : ∀ i ∈ s, padicNorm p (F i) ≤ t
ht : 0 ≤ t
hs : s.Nonempty
⊢ padicNorm p (∑ i ∈ s, F i) ≤ t
state_after: no goals
Theorem: Set.image2_empty_right
File: Mathlib/Data/Set/NAry.lean

tactic: simp
state_before: α : Type u_1
α' : Type u_2
β : Type u_3
β' : Type u_4
γ : Type u_5
γ' : Type u_6
δ : Type u_7
δ' : Type u_8
ε : Type u_9
ε' : Type u_10
ζ : Type u_11
ζ' : Type u_12
ν : Type u_13
f f' : α → β → γ
g g' : α → β → γ → δ
s s' : Set α
t t' : Set β
u u' : Set γ
v : Set δ
a a' : α
b b' : β
c c' : γ
d d' : δ
⊢ ∀ (x : γ), x ∈ image2 f s ∅ ↔ x ∈ ∅
state_after: no goals
Theorem: Polynomial.degree_smul_le
File: Mathlib/Algebra/Polynomial/Degree/Definitions.lean

tactic: refine (degree_le_iff_coeff_zero _ _).2 fun m hm => ?_
state_before: R : Type u
S : Type v
a✝ b c d : R
n m : ℕ
inst✝ : Semiring R
p✝¹ p✝ q : R[X]
ι : Type u_1
a : R
p : R[X]
⊢ (a • p).degree ≤ p.degree
state_after: R : Type u
S : Type v
a✝ b c d : R
n m✝ : ℕ
inst✝ : Semiring R
p✝¹ p✝ q : R[X]
ι : Type u_1
a : R
p : R[X]
m : ℕ
hm : p.degree < ↑m
⊢ (a • p).coeff m = 0

tactic: rw [degree_lt_iff_coeff_zero] at hm
state_before: R : Type u
S : Type v
a✝ b c d : R
n m✝ : ℕ
inst✝ : Semiring R
p✝¹ p✝ q : R[X]
ι : Type u_1
a : R
p : R[X]
m : ℕ
hm : p.degree < ↑m
⊢ (a • p).coeff m = 0
state_after: R : Type u
S : Type v
a✝ b c d : R
n m✝ : ℕ
inst✝ : Semiring R
p✝¹ p✝ q : R[X]
ι : Type u_1
a : R
p : R[X]
m : ℕ
hm : ∀ (m_1 : ℕ), m ≤ m_1 → p.coeff m_1 = 0
⊢ (a • p).coeff m = 0

tactic: simp [hm m le_rfl]
state_before: R : Type u
S : Type v
a✝ b c d : R
n m✝ : ℕ
inst✝ : Semiring R
p✝¹ p✝ q : R[X]
ι : Type u_1
a : R
p : R[X]
m : ℕ
hm : ∀ (m_1 : ℕ), m ≤ m_1 → p.coeff m_1 = 0
⊢ (a • p).coeff m = 0
state_after: no goals
Theorem: CategoryTheory.ShortComplex.homologyπ_naturality
File: Mathlib/Algebra/Homology/ShortComplex/Homology.lean

tactic: simp only [← cancel_mono S₂.leftHomologyIso.inv, assoc, ← leftHomologyIso_inv_naturality φ,
  homologyπ_comp_leftHomologyIso_inv]
state_before: C : Type u
inst✝⁴ : Category.{v, u} C
inst✝³ : HasZeroMorphisms C
S S₁ S₂ S₃ S₄ : ShortComplex C
φ✝ : S₁ ⟶ S₂
h₁ : S₁.HomologyData
h₂ : S₂.HomologyData
A : C
inst✝² : S.HasHomology
φ : S₁ ⟶ S₂
inst✝¹ : S₁.HasHomology
inst✝ : S₂.HasHomology
⊢ S₁.homologyπ ≫ homologyMap φ = cyclesMap φ ≫ S₂.homologyπ
state_after: C : Type u
inst✝⁴ : Category.{v, u} C
inst✝³ : HasZeroMorphisms C
S S₁ S₂ S₃ S₄ : ShortComplex C
φ✝ : S₁ ⟶ S₂
h₁ : S₁.HomologyData
h₂ : S₂.HomologyData
A : C
inst✝² : S.HasHomology
φ : S₁ ⟶ S₂
inst✝¹ : S₁.HasHomology
inst✝ : S₂.HasHomology
⊢ S₁.homologyπ ≫ S₁.leftHomologyIso.inv ≫ leftHomologyMap φ = cyclesMap φ ≫ S₂.leftHomologyπ

tactic: simp only [homologyπ, assoc, Iso.hom_inv_id_assoc, leftHomologyπ_naturality]
state_before: C : Type u
inst✝⁴ : Category.{v, u} C
inst✝³ : HasZeroMorphisms C
S S₁ S₂ S₃ S₄ : ShortComplex C
φ✝ : S₁ ⟶ S₂
h₁ : S₁.HomologyData
h₂ : S₂.HomologyData
A : C
inst✝² : S.HasHomology
φ : S₁ ⟶ S₂
inst✝¹ : S₁.HasHomology
inst✝ : S₂.HasHomology
⊢ S₁.homologyπ ≫ S₁.leftHomologyIso.inv ≫ leftHomologyMap φ = cyclesMap φ ≫ S₂.leftHomologyπ
state_after: no goals
Theorem: Int.log_natCast
File: Mathlib/Data/Int/Log.lean

tactic: cases n
state_before: R : Type u_1
inst✝¹ : LinearOrderedSemifield R
inst✝ : FloorSemiring R
b n : ℕ
⊢ log b ↑n = ↑(Nat.log b n)
state_after: case zero
R : Type u_1
inst✝¹ : LinearOrderedSemifield R
inst✝ : FloorSemiring R
b : ℕ
⊢ log b ↑0 = ↑(Nat.log b 0)

case succ
R : Type u_1
inst✝¹ : LinearOrderedSemifield R
inst✝ : FloorSemiring R
b n✝ : ℕ
⊢ log b ↑(n✝ + 1) = ↑(Nat.log b (n✝ + 1))

tactic: simp [log_of_right_le_one]
state_before: case zero
R : Type u_1
inst✝¹ : LinearOrderedSemifield R
inst✝ : FloorSemiring R
b : ℕ
⊢ log b ↑0 = ↑(Nat.log b 0)
state_after: no goals

tactic: rw [log_of_one_le_right, Nat.floor_natCast]
state_before: case succ
R : Type u_1
inst✝¹ : LinearOrderedSemifield R
inst✝ : FloorSemiring R
b n✝ : ℕ
⊢ log b ↑(n✝ + 1) = ↑(Nat.log b (n✝ + 1))
state_after: case succ.hr
R : Type u_1
inst✝¹ : LinearOrderedSemifield R
inst✝ : FloorSemiring R
b n✝ : ℕ
⊢ 1 ≤ ↑(n✝ + 1)

tactic: simp
state_before: case succ.hr
R : Type u_1
inst✝¹ : LinearOrderedSemifield R
inst✝ : FloorSemiring R
b n✝ : ℕ
⊢ 1 ≤ ↑(n✝ + 1)
state_after: no goals
Theorem: Computation.bind_pure'
File: Mathlib/Data/Seq/Computation.lean

tactic: apply eq_of_bisim fun c₁ c₂ => c₁ = c₂ ∨ ∃ s, c₁ = bind s pure ∧ c₂ = s
state_before: α : Type u
β : Type v
γ : Type w
s : Computation α
⊢ s.bind pure = s
state_after: case bisim
α : Type u
β : Type v
γ : Type w
s : Computation α
⊢ IsBisimulation fun c₁ c₂ => c₁ = c₂ ∨ ∃ s, c₁ = s.bind pure ∧ c₂ = s

case r
α : Type u
β : Type v
γ : Type w
s : Computation α
⊢ s.bind pure = s ∨ ∃ s_1, s.bind pure = s_1.bind pure ∧ s = s_1

tactic: intro c₁ c₂ h
state_before: case bisim
α : Type u
β : Type v
γ : Type w
s : Computation α
⊢ IsBisimulation fun c₁ c₂ => c₁ = c₂ ∨ ∃ s, c₁ = s.bind pure ∧ c₂ = s
state_after: case bisim
α : Type u
β : Type v
γ : Type w
s c₁ c₂ : Computation α
h : c₁ = c₂ ∨ ∃ s, c₁ = s.bind pure ∧ c₂ = s
⊢ BisimO (fun c₁ c₂ => c₁ = c₂ ∨ ∃ s, c₁ = s.bind pure ∧ c₂ = s) c₁.destruct c₂.destruct

tactic: match c₁, c₂, h with
| _, c₂, Or.inl (Eq.refl _) => cases' destruct c₂ with b cb <;> simp
| _, _, Or.inr ⟨s, rfl, rfl⟩ =>
  apply recOn s <;> intro s <;> simp
state_before: case bisim
α : Type u
β : Type v
γ : Type w
s c₁ c₂ : Computation α
h : c₁ = c₂ ∨ ∃ s, c₁ = s.bind pure ∧ c₂ = s
⊢ BisimO (fun c₁ c₂ => c₁ = c₂ ∨ ∃ s, c₁ = s.bind pure ∧ c₂ = s) c₁.destruct c₂.destruct
state_after: no goals

tactic: cases' destruct c₂ with b cb <;> simp
state_before: α : Type u
β : Type v
γ : Type w
s c₁ c₂✝ : Computation α
h : c₁ = c₂✝ ∨ ∃ s, c₁ = s.bind pure ∧ c₂✝ = s
c₂ : Computation α
⊢ BisimO (fun c₁ c₂ => c₁ = c₂ ∨ ∃ s, c₁ = s.bind pure ∧ c₂ = s) c₂.destruct c₂.destruct
state_after: no goals

tactic: apply recOn s <;> intro s <;> simp
state_before: α : Type u
β : Type v
γ : Type w
s✝ c₁ c₂ : Computation α
h : c₁ = c₂ ∨ ∃ s, c₁ = s.bind pure ∧ c₂ = s
s : Computation α
⊢ BisimO (fun c₁ c₂ => c₁ = c₂ ∨ ∃ s, c₁ = s.bind pure ∧ c₂ = s) (s.bind pure).destruct s.destruct
state_after: no goals

tactic: exact Or.inr ⟨s, rfl, rfl⟩
state_before: case r
α : Type u
β : Type v
γ : Type w
s : Computation α
⊢ s.bind pure = s ∨ ∃ s_1, s.bind pure = s_1.bind pure ∧ s = s_1
state_after: no goals
Theorem: Submodule.iSup_eq_span
File: Mathlib/LinearAlgebra/Span.lean

tactic: simp_rw [← iSup_span, span_eq]
state_before: R : Type u_1
R₂ : Type u_2
K : Type u_3
M : Type u_4
M₂ : Type u_5
V : Type u_6
S : Type u_7
inst✝⁷ : Semiring R
inst✝⁶ : AddCommMonoid M
inst✝⁵ : Module R M
x : M
p✝ p' : Submodule R M
inst✝⁴ : Semiring R₂
σ₁₂ : R →+* R₂
inst✝³ : AddCommMonoid M₂
inst✝² : Module R₂ M₂
F : Type u_8
inst✝¹ : FunLike F M M₂
inst✝ : SemilinearMapClass F σ₁₂ M M₂
s t : Set M
ι : Sort u_9
p : ι → Submodule R M
⊢ ⨆ i, p i = span R (⋃ i, ↑(p i))
state_after: no goals
Theorem: ProbabilityTheory.condIndepSet_iff_condIndep
File: Mathlib/Probability/Independence/Conditional.lean

tactic: simp only [CondIndepSet, CondIndep, kernel.IndepSet]
state_before: Ω : Type u_1
ι : Type u_2
m' mΩ : MeasurableSpace Ω
inst✝² : StandardBorelSpace Ω
inst✝¹ : Nonempty Ω
hm' : m' ≤ mΩ
s t : Set Ω
μ : Measure Ω
inst✝ : IsFiniteMeasure μ
⊢ CondIndepSet m' hm' s t μ ↔ CondIndep m' (generateFrom {s}) (generateFrom {t}) hm' μ
state_after: no goals
Theorem: Fin.preimage_insertNth_Icc_of_mem
File: Mathlib/Data/Fin/Tuple/Basic.lean

tactic: simp only [mem_preimage, insertNth_mem_Icc, hx, true_and_iff]
state_before: m n : ℕ
α : Fin (n + 1) → Type u
β : Type v
inst✝ : (i : Fin (n + 1)) → Preorder (α i)
i : Fin (n + 1)
x : α i
q₁ q₂ : (j : Fin (n + 1)) → α j
hx : x ∈ Icc (q₁ i) (q₂ i)
p : (j : Fin n) → α (i.succAbove j)
⊢ p ∈ i.insertNth x ⁻¹' Icc q₁ q₂ ↔ p ∈ Icc (fun j => q₁ (i.succAbove j)) fun j => q₂ (i.succAbove j)
state_after: no goals
Theorem: Multiset.cons_product
File: Mathlib/Data/Multiset/Bind.lean

tactic: simp [SProd.sprod, product]
state_before: α : Type u_1
β : Type v
γ : Type u_2
δ : Type u_3
a : α
b : β
s : Multiset α
t : Multiset β
⊢ (a ::ₘ s) ×ˢ t = map (Prod.mk a) t + s ×ˢ t
state_after: no goals