1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: subset_interior_iff_mem_nhdsSet
File: Mathlib/Topology/NhdsSet.lean

tactic: simp_rw [mem_nhdsSet_iff_forall, subset_interior_iff_nhds]
state_before: X : Type u_1
Y : Type u_2
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
f : Filter X
s t s₁ s₂ t₁ t₂ : Set X
x : X
⊢ s ⊆ interior t ↔ t ∈ 𝓝ˢ s
state_after: no goals
Theorem: AlgebraicGeometry.PresheafedSpace.stalkMap.congr_hom
File: Mathlib/Geometry/RingedSpace/Stalks.lean

tactic: rw [h]
state_before: C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : HasColimits C
X Y : PresheafedSpace C
α β : X ⟶ Y
h : α = β
x : ↑↑X
⊢ Y.stalk (α.base x) = Y.stalk (β.base x)
state_after: no goals

tactic: rw [← stalkMap.congr α β h x x rfl, eqToHom_refl, Category.comp_id]
state_before: C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : HasColimits C
X Y : PresheafedSpace C
α β : X ⟶ Y
h : α = β
x : ↑↑X
⊢ stalkMap α x = eqToHom ⋯ ≫ stalkMap β x
state_after: no goals
Theorem: IsCyclotomicExtension.splitting_field_cyclotomic
File: Mathlib/NumberTheory/Cyclotomic/Basic.lean

tactic: rw [← ((iff_adjoin_eq_top {n} K L).1 inferInstance).2]
state_before: n : ℕ+
S T : Set ℕ+
A : Type u
B : Type v
K : Type w
L : Type z
inst✝⁶ : CommRing A
inst✝⁵ : CommRing B
inst✝⁴ : Algebra A B
inst✝³ : Field K
inst✝² : Field L
inst✝¹ : Algebra K L
inst✝ : IsCyclotomicExtension {n} K L
⊢ adjoin K ((cyclotomic (↑n) K).rootSet L) = ⊤
state_after: n : ℕ+
S T : Set ℕ+
A : Type u
B : Type v
K : Type w
L : Type z
inst✝⁶ : CommRing A
inst✝⁵ : CommRing B
inst✝⁴ : Algebra A B
inst✝³ : Field K
inst✝² : Field L
inst✝¹ : Algebra K L
inst✝ : IsCyclotomicExtension {n} K L
⊢ adjoin K ((cyclotomic (↑n) K).rootSet L) = adjoin K {b | ∃ n_1 ∈ {n}, b ^ ↑n_1 = 1}

tactic: letI := Classical.decEq L
state_before: n : ℕ+
S T : Set ℕ+
A : Type u
B : Type v
K : Type w
L : Type z
inst✝⁶ : CommRing A
inst✝⁵ : CommRing B
inst✝⁴ : Algebra A B
inst✝³ : Field K
inst✝² : Field L
inst✝¹ : Algebra K L
inst✝ : IsCyclotomicExtension {n} K L
⊢ adjoin K ((cyclotomic (↑n) K).rootSet L) = adjoin K {b | ∃ n_1 ∈ {n}, b ^ ↑n_1 = 1}
state_after: n : ℕ+
S T : Set ℕ+
A : Type u
B : Type v
K : Type w
L : Type z
inst✝⁶ : CommRing A
inst✝⁵ : CommRing B
inst✝⁴ : Algebra A B
inst✝³ : Field K
inst✝² : Field L
inst✝¹ : Algebra K L
inst✝ : IsCyclotomicExtension {n} K L
this : DecidableEq L := Classical.decEq L
⊢ adjoin K ((cyclotomic (↑n) K).rootSet L) = adjoin K {b | ∃ n_1 ∈ {n}, b ^ ↑n_1 = 1}

tactic: obtain ⟨ζ : L, hζ⟩ := IsCyclotomicExtension.exists_prim_root K (B := L) (mem_singleton n)
state_before: n : ℕ+
S T : Set ℕ+
A : Type u
B : Type v
K : Type w
L : Type z
inst✝⁶ : CommRing A
inst✝⁵ : CommRing B
inst✝⁴ : Algebra A B
inst✝³ : Field K
inst✝² : Field L
inst✝¹ : Algebra K L
inst✝ : IsCyclotomicExtension {n} K L
this : DecidableEq L := Classical.decEq L
⊢ adjoin K ((cyclotomic (↑n) K).rootSet L) = adjoin K {b | ∃ n_1 ∈ {n}, b ^ ↑n_1 = 1}
state_after: case intro
n : ℕ+
S T : Set ℕ+
A : Type u
B : Type v
K : Type w
L : Type z
inst✝⁶ : CommRing A
inst✝⁵ : CommRing B
inst✝⁴ : Algebra A B
inst✝³ : Field K
inst✝² : Field L
inst✝¹ : Algebra K L
inst✝ : IsCyclotomicExtension {n} K L
this : DecidableEq L := Classical.decEq L
ζ : L
hζ : IsPrimitiveRoot ζ ↑n
⊢ adjoin K ((cyclotomic (↑n) K).rootSet L) = adjoin K {b | ∃ n_1 ∈ {n}, b ^ ↑n_1 = 1}

tactic: exact adjoin_roots_cyclotomic_eq_adjoin_nth_roots hζ
state_before: case intro
n : ℕ+
S T : Set ℕ+
A : Type u
B : Type v
K : Type w
L : Type z
inst✝⁶ : CommRing A
inst✝⁵ : CommRing B
inst✝⁴ : Algebra A B
inst✝³ : Field K
inst✝² : Field L
inst✝¹ : Algebra K L
inst✝ : IsCyclotomicExtension {n} K L
this : DecidableEq L := Classical.decEq L
ζ : L
hζ : IsPrimitiveRoot ζ ↑n
⊢ adjoin K ((cyclotomic (↑n) K).rootSet L) = adjoin K {b | ∃ n_1 ∈ {n}, b ^ ↑n_1 = 1}
state_after: no goals
Theorem: Int.ModEq.pow
File: Mathlib/Data/Int/ModEq.lean

tactic: induction' m with d hd
state_before: m✝ n a b c d : ℤ
m : ℕ
h : a ≡ b [ZMOD n]
⊢ a ^ m ≡ b ^ m [ZMOD n]
state_after: case zero
m n a b c d : ℤ
h : a ≡ b [ZMOD n]
⊢ a ^ 0 ≡ b ^ 0 [ZMOD n]

case succ
m n a b c d✝ : ℤ
h : a ≡ b [ZMOD n]
d : ℕ
hd : a ^ d ≡ b ^ d [ZMOD n]
⊢ a ^ (d + 1) ≡ b ^ (d + 1) [ZMOD n]

tactic: rw [pow_succ, pow_succ]
state_before: case succ
m n a b c d✝ : ℤ
h : a ≡ b [ZMOD n]
d : ℕ
hd : a ^ d ≡ b ^ d [ZMOD n]
⊢ a ^ (d + 1) ≡ b ^ (d + 1) [ZMOD n]
state_after: case succ
m n a b c d✝ : ℤ
h : a ≡ b [ZMOD n]
d : ℕ
hd : a ^ d ≡ b ^ d [ZMOD n]
⊢ a ^ d * a ≡ b ^ d * b [ZMOD n]

tactic: exact hd.mul h
state_before: case succ
m n a b c d✝ : ℤ
h : a ≡ b [ZMOD n]
d : ℕ
hd : a ^ d ≡ b ^ d [ZMOD n]
⊢ a ^ d * a ≡ b ^ d * b [ZMOD n]
state_after: no goals

tactic: rfl
state_before: case zero
m n a b c d : ℤ
h : a ≡ b [ZMOD n]
⊢ a ^ 0 ≡ b ^ 0 [ZMOD n]
state_after: no goals
Theorem: Real.lt_log_iff_exp_lt
File: Mathlib/Analysis/SpecialFunctions/Log/Basic.lean

tactic: rw [← exp_lt_exp, exp_log hy]
state_before: x y : ℝ
hy : 0 < y
⊢ x < log y ↔ rexp x < y
state_after: no goals
Theorem: WeierstrassCurve.Jacobian.equation_some
File: Mathlib/AlgebraicGeometry/EllipticCurve/Jacobian.lean

tactic: simp only [equation_iff, Affine.equation_iff', fin3_def_ext, one_pow, mul_one]
state_before: R : Type u
inst✝¹ : CommRing R
W' : Jacobian R
F : Type v
inst✝ : Field F
W : Jacobian F
X Y : R
⊢ W'.Equation ![X, Y, 1] ↔ W'.toAffine.Equation X Y
state_after: no goals
Theorem: List.takeD_nil
File: .lake/packages/batteries/Batteries/Data/List/Basic.lean

tactic: induction n <;> simp [*, replicate_succ]
state_before: α : Type u_1
n : Nat
a : α
⊢ takeD n [] a = replicate n a
state_after: no goals
Theorem: TopologicalSpace.countable_cover_nhdsWithin
File: Mathlib/Topology/Bases.lean

tactic: have : ∀ x : s, (↑) ⁻¹' f x ∈ 𝓝 x := fun x => preimage_coe_mem_nhds_subtype.2 (hf x x.2)
state_before: α : Type u
t : TopologicalSpace α
inst✝ : SecondCountableTopology α
f : α → Set α
s : Set α
hf : ∀ x ∈ s, f x ∈ 𝓝[s] x
⊢ ∃ t ⊆ s, t.Countable ∧ s ⊆ ⋃ x ∈ t, f x
state_after: α : Type u
t : TopologicalSpace α
inst✝ : SecondCountableTopology α
f : α → Set α
s : Set α
hf : ∀ x ∈ s, f x ∈ 𝓝[s] x
this : ∀ (x : ↑s), Subtype.val ⁻¹' f ↑x ∈ 𝓝 x
⊢ ∃ t ⊆ s, t.Countable ∧ s ⊆ ⋃ x ∈ t, f x

tactic: rcases countable_cover_nhds this with ⟨t, htc, htU⟩
state_before: α : Type u
t : TopologicalSpace α
inst✝ : SecondCountableTopology α
f : α → Set α
s : Set α
hf : ∀ x ∈ s, f x ∈ 𝓝[s] x
this : ∀ (x : ↑s), Subtype.val ⁻¹' f ↑x ∈ 𝓝 x
⊢ ∃ t ⊆ s, t.Countable ∧ s ⊆ ⋃ x ∈ t, f x
state_after: case intro.intro
α : Type u
t✝ : TopologicalSpace α
inst✝ : SecondCountableTopology α
f : α → Set α
s : Set α
hf : ∀ x ∈ s, f x ∈ 𝓝[s] x
this : ∀ (x : ↑s), Subtype.val ⁻¹' f ↑x ∈ 𝓝 x
t : Set ↑s
htc : t.Countable
htU : ⋃ x ∈ t, Subtype.val ⁻¹' f ↑x = univ
⊢ ∃ t ⊆ s, t.Countable ∧ s ⊆ ⋃ x ∈ t, f x

tactic: refine ⟨(↑) '' t, Subtype.coe_image_subset _ _, htc.image _, fun x hx => ?_⟩
state_before: case intro.intro
α : Type u
t✝ : TopologicalSpace α
inst✝ : SecondCountableTopology α
f : α → Set α
s : Set α
hf : ∀ x ∈ s, f x ∈ 𝓝[s] x
this : ∀ (x : ↑s), Subtype.val ⁻¹' f ↑x ∈ 𝓝 x
t : Set ↑s
htc : t.Countable
htU : ⋃ x ∈ t, Subtype.val ⁻¹' f ↑x = univ
⊢ ∃ t ⊆ s, t.Countable ∧ s ⊆ ⋃ x ∈ t, f x
state_after: case intro.intro
α : Type u
t✝ : TopologicalSpace α
inst✝ : SecondCountableTopology α
f : α → Set α
s : Set α
hf : ∀ x ∈ s, f x ∈ 𝓝[s] x
this : ∀ (x : ↑s), Subtype.val ⁻¹' f ↑x ∈ 𝓝 x
t : Set ↑s
htc : t.Countable
htU : ⋃ x ∈ t, Subtype.val ⁻¹' f ↑x = univ
x : α
hx : x ∈ s
⊢ x ∈ ⋃ x ∈ Subtype.val '' t, f x

tactic: simp only [biUnion_image, eq_univ_iff_forall, ← preimage_iUnion, mem_preimage] at htU ⊢
state_before: case intro.intro
α : Type u
t✝ : TopologicalSpace α
inst✝ : SecondCountableTopology α
f : α → Set α
s : Set α
hf : ∀ x ∈ s, f x ∈ 𝓝[s] x
this : ∀ (x : ↑s), Subtype.val ⁻¹' f ↑x ∈ 𝓝 x
t : Set ↑s
htc : t.Countable
htU : ⋃ x ∈ t, Subtype.val ⁻¹' f ↑x = univ
x : α
hx : x ∈ s
⊢ x ∈ ⋃ x ∈ Subtype.val '' t, f x
state_after: case intro.intro
α : Type u
t✝ : TopologicalSpace α
inst✝ : SecondCountableTopology α
f : α → Set α
s : Set α
hf : ∀ x ∈ s, f x ∈ 𝓝[s] x
this : ∀ (x : ↑s), Subtype.val ⁻¹' f ↑x ∈ 𝓝 x
t : Set ↑s
htc : t.Countable
x : α
hx : x ∈ s
htU : ∀ (x : ↑s), ↑x ∈ ⋃ i ∈ t, f ↑i
⊢ x ∈ ⋃ y ∈ t, f ↑y

tactic: exact htU ⟨x, hx⟩
state_before: case intro.intro
α : Type u
t✝ : TopologicalSpace α
inst✝ : SecondCountableTopology α
f : α → Set α
s : Set α
hf : ∀ x ∈ s, f x ∈ 𝓝[s] x
this : ∀ (x : ↑s), Subtype.val ⁻¹' f ↑x ∈ 𝓝 x
t : Set ↑s
htc : t.Countable
x : α
hx : x ∈ s
htU : ∀ (x : ↑s), ↑x ∈ ⋃ i ∈ t, f ↑i
⊢ x ∈ ⋃ y ∈ t, f ↑y
state_after: no goals
Theorem: openEmbedding_of_continuous_injective_open
File: Mathlib/Topology/Maps.lean

tactic: simp only [openEmbedding_iff_embedding_open, embedding_iff, inducing_iff_nhds, *, and_true_iff]
state_before: X : Type u_1
Y : Type u_2
Z : Type u_3
ι : Type u_4
f : X → Y
g : Y → Z
inst✝² : TopologicalSpace X
inst✝¹ : TopologicalSpace Y
inst✝ : TopologicalSpace Z
h₁ : Continuous f
h₂ : Injective f
h₃ : IsOpenMap f
⊢ OpenEmbedding f
state_after: X : Type u_1
Y : Type u_2
Z : Type u_3
ι : Type u_4
f : X → Y
g : Y → Z
inst✝² : TopologicalSpace X
inst✝¹ : TopologicalSpace Y
inst✝ : TopologicalSpace Z
h₁ : Continuous f
h₂ : Injective f
h₃ : IsOpenMap f
⊢ ∀ (x : X), 𝓝 x = comap f (𝓝 (f x))

tactic: exact fun x =>
  le_antisymm (h₁.tendsto _).le_comap (@comap_map _ _ (𝓝 x) _ h₂ ▸ comap_mono (h₃.nhds_le _))
state_before: X : Type u_1
Y : Type u_2
Z : Type u_3
ι : Type u_4
f : X → Y
g : Y → Z
inst✝² : TopologicalSpace X
inst✝¹ : TopologicalSpace Y
inst✝ : TopologicalSpace Z
h₁ : Continuous f
h₂ : Injective f
h₃ : IsOpenMap f
⊢ ∀ (x : X), 𝓝 x = comap f (𝓝 (f x))
state_after: no goals
Theorem: Set.subset_insert_iff
File: Mathlib/Data/Set/Basic.lean

tactic: rw [← diff_singleton_subset_iff]
state_before: α : Type u
β : Type v
γ : Type w
ι : Sort x
a b : α
s✝ s₁ s₂ t✝ t₁ t₂ u s t : Set α
x : α
⊢ s ⊆ insert x t ↔ s ⊆ t ∨ x ∈ s ∧ s \ {x} ⊆ t
state_after: α : Type u
β : Type v
γ : Type w
ι : Sort x
a b : α
s✝ s₁ s₂ t✝ t₁ t₂ u s t : Set α
x : α
⊢ s \ {x} ⊆ t ↔ s ⊆ t ∨ x ∈ s ∧ s \ {x} ⊆ t

tactic: by_cases hx : x ∈ s
state_before: α : Type u
β : Type v
γ : Type w
ι : Sort x
a b : α
s✝ s₁ s₂ t✝ t₁ t₂ u s t : Set α
x : α
⊢ s \ {x} ⊆ t ↔ s ⊆ t ∨ x ∈ s ∧ s \ {x} ⊆ t
state_after: case pos
α : Type u
β : Type v
γ : Type w
ι : Sort x
a b : α
s✝ s₁ s₂ t✝ t₁ t₂ u s t : Set α
x : α
hx : x ∈ s
⊢ s \ {x} ⊆ t ↔ s ⊆ t ∨ x ∈ s ∧ s \ {x} ⊆ t

case neg
α : Type u
β : Type v
γ : Type w
ι : Sort x
a b : α
s✝ s₁ s₂ t✝ t₁ t₂ u s t : Set α
x : α
hx : x ∉ s
⊢ s \ {x} ⊆ t ↔ s ⊆ t ∨ x ∈ s ∧ s \ {x} ⊆ t

tactic: rw [diff_singleton_eq_self hx, or_iff_left_of_imp And.right]
state_before: case neg
α : Type u
β : Type v
γ : Type w
ι : Sort x
a b : α
s✝ s₁ s₂ t✝ t₁ t₂ u s t : Set α
x : α
hx : x ∉ s
⊢ s \ {x} ⊆ t ↔ s ⊆ t ∨ x ∈ s ∧ s \ {x} ⊆ t
state_after: no goals

tactic: rw [and_iff_right hx, or_iff_right_of_imp diff_subset.trans]
state_before: case pos
α : Type u
β : Type v
γ : Type w
ι : Sort x
a b : α
s✝ s₁ s₂ t✝ t₁ t₂ u s t : Set α
x : α
hx : x ∈ s
⊢ s \ {x} ⊆ t ↔ s ⊆ t ∨ x ∈ s ∧ s \ {x} ⊆ t
state_after: no goals
Theorem: List.split_cons_of_eq
File: Mathlib/Data/List/Sort.lean

tactic: rw [split, h]
state_before: α : Type u
r : α → α → Prop
inst✝ : DecidableRel r
a : α
l l₁ l₂ : List α
h : l.split = (l₁, l₂)
⊢ (a :: l).split = (a :: l₂, l₁)
state_after: no goals
Theorem: Batteries.RBNode.exists_insert_toList_zoom_nil
File: .lake/packages/batteries/Batteries/Data/RBMap/Lemmas.lean

tactic: simp [← zoom_toList e, insert_toList_zoom_nil ht e]
state_before: α : Type u_1
c : RBColor
n : Nat
cmp : α → α → Ordering
p : Path α
v : α
t : RBNode α
ht : t.Balanced c n
e : zoom (cmp v) t = (nil, p)
⊢ t.toList = p.listL ++ p.listR ∧ (insert cmp t v).toList = p.listL ++ v :: p.listR
state_after: no goals
Theorem: UniformSpace.mem_closure_iff_ball
File: Mathlib/Topology/UniformSpace/Basic.lean

tactic: simp [mem_closure_iff_nhds_basis' (nhds_basis_uniformity' (𝓤 α).basis_sets)]
state_before: α : Type ua
β : Type ub
γ : Type uc
δ : Type ud
ι : Sort u_1
inst✝ : UniformSpace α
s : Set α
x : α
⊢ x ∈ closure s ↔ ∀ {V : Set (α × α)}, V ∈ 𝓤 α → (ball x V ∩ s).Nonempty
state_after: no goals
Theorem: IsCompl.sup_inf
File: Mathlib/Order/Disjoint.lean

tactic: rw [inf_sup_right, ← inf_assoc, h.inf_eq_bot, bot_inf_eq, bot_sup_eq, inf_left_comm,
h'.inf_eq_bot, inf_bot_eq]
state_before: α : Type u_1
inst✝¹ : DistribLattice α
inst✝ : BoundedOrder α
a b x y z x' y' : α
h : IsCompl x y
h' : IsCompl x' y'
⊢ (x ⊔ x') ⊓ (y ⊓ y') = ⊥
state_after: no goals

tactic: rw [sup_inf_left, sup_comm x, sup_assoc, h.sup_eq_top, sup_top_eq, top_inf_eq,
sup_assoc, sup_left_comm, h'.sup_eq_top, sup_top_eq]
state_before: α : Type u_1
inst✝¹ : DistribLattice α
inst✝ : BoundedOrder α
a b x y z x' y' : α
h : IsCompl x y
h' : IsCompl x' y'
⊢ x ⊔ x' ⊔ y ⊓ y' = ⊤
state_after: no goals
Theorem: CategoryTheory.isCodetector_op_iff
File: Mathlib/CategoryTheory/Generator.lean

tactic: rw [IsDetector, IsCodetector, ← isCodetecting_op_iff, Set.singleton_op]
state_before: C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
D : Type u₂
inst✝ : Category.{v₂, u₂} D
G : C
⊢ IsCodetector { unop := G } ↔ IsDetector G
state_after: no goals
Theorem: nat_mul_inj'
File: Mathlib/Algebra/CharZero/Lemmas.lean

tactic: simpa [w] using nat_mul_inj h
state_before: R : Type u_1
inst✝² : NonAssocRing R
inst✝¹ : NoZeroDivisors R
inst✝ : CharZero R
n : ℕ
a b : R
h : ↑n * a = ↑n * b
w : n ≠ 0
⊢ a = b
state_after: no goals
Theorem: PowerSeries.derivativeFun_one
File: Mathlib/RingTheory/PowerSeries/Derivative.lean

tactic: rw [← map_one (C R), derivativeFun_C (1 : R)]
state_before: R : Type u_1
inst✝ : CommSemiring R
⊢ derivativeFun 1 = 0
state_after: no goals
Theorem: Ideal.Filtration.stable_iff_exists_pow_smul_eq_of_ge
File: Mathlib/RingTheory/Filtration.lean

tactic: refine ⟨Stable.exists_pow_smul_eq_of_ge, fun h => ⟨h.choose, fun n hn => ?_⟩⟩
state_before: R M : Type u
inst✝² : CommRing R
inst✝¹ : AddCommGroup M
inst✝ : Module R M
I : Ideal R
F F' : I.Filtration M
h : F.Stable
⊢ F.Stable ↔ ∃ n₀, ∀ n ≥ n₀, F.N n = I ^ (n - n₀) • F.N n₀
state_after: R M : Type u
inst✝² : CommRing R
inst✝¹ : AddCommGroup M
inst✝ : Module R M
I : Ideal R
F F' : I.Filtration M
h✝ : F.Stable
h : ∃ n₀, ∀ n ≥ n₀, F.N n = I ^ (n - n₀) • F.N n₀
n : ℕ
hn : n ≥ h.choose
⊢ I • F.N n = F.N (n + 1)

tactic: rw [h.choose_spec n hn, h.choose_spec (n + 1) (by omega), smul_smul, ← pow_succ',
  tsub_add_eq_add_tsub hn]
state_before: R M : Type u
inst✝² : CommRing R
inst✝¹ : AddCommGroup M
inst✝ : Module R M
I : Ideal R
F F' : I.Filtration M
h✝ : F.Stable
h : ∃ n₀, ∀ n ≥ n₀, F.N n = I ^ (n - n₀) • F.N n₀
n : ℕ
hn : n ≥ h.choose
⊢ I • F.N n = F.N (n + 1)
state_after: no goals

tactic: omega
state_before: R M : Type u
inst✝² : CommRing R
inst✝¹ : AddCommGroup M
inst✝ : Module R M
I : Ideal R
F F' : I.Filtration M
h✝ : F.Stable
h : ∃ n₀, ∀ n ≥ n₀, F.N n = I ^ (n - n₀) • F.N n₀
n : ℕ
hn : n ≥ h.choose
⊢ n + 1 ≥ h.choose
state_after: no goals
Theorem: Nat.choose_pos
File: Mathlib/Data/Nat/Choose/Basic.lean

tactic: rw [Nat.eq_zero_of_le_zero hk]
state_before: x✝ : ℕ
hk : x✝ ≤ 0
⊢ 0 < choose 0 x✝
state_after: x✝ : ℕ
hk : x✝ ≤ 0
⊢ 0 < choose 0 0

tactic: decide
state_before: x✝ : ℕ
hk : x✝ ≤ 0
⊢ 0 < choose 0 0
state_after: no goals

tactic: simp
state_before: n : ℕ
x✝ : 0 ≤ n + 1
⊢ 0 < (n + 1).choose 0
state_after: no goals
Theorem: PowerSeries.coeff_X_pow
File: Mathlib/RingTheory/PowerSeries/Basic.lean

tactic: rw [X_pow_eq, coeff_monomial]
state_before: R : Type u_1
inst✝ : Semiring R
m n : ℕ
⊢ (coeff R m) (X ^ n) = if m = n then 1 else 0
state_after: no goals
Theorem: ProbabilityTheory.kernel.sum_zero
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✝ : Countable ι
⊢ (kernel.sum fun x => 0) = 0
state_after: case h.h
α : Type u_1
β : Type u_2
ι : Type u_3
mα : MeasurableSpace α
mβ : MeasurableSpace β
κ : ↥(kernel α β)
inst✝ : Countable ι
a : α
s : Set β
hs : MeasurableSet s
⊢ ((kernel.sum fun x => 0) a) s = (0 a) s

tactic: rw [sum_apply' _ a hs]
state_before: case h.h
α : Type u_1
β : Type u_2
ι : Type u_3
mα : MeasurableSpace α
mβ : MeasurableSpace β
κ : ↥(kernel α β)
inst✝ : Countable ι
a : α
s : Set β
hs : MeasurableSet s
⊢ ((kernel.sum fun x => 0) a) s = (0 a) s
state_after: case h.h
α : Type u_1
β : Type u_2
ι : Type u_3
mα : MeasurableSpace α
mβ : MeasurableSpace β
κ : ↥(kernel α β)
inst✝ : Countable ι
a : α
s : Set β
hs : MeasurableSet s
⊢ ∑' (n : ι), (0 a) s = (0 a) s

tactic: simp only [zero_apply, Measure.coe_zero, Pi.zero_apply, tsum_zero]
state_before: case h.h
α : Type u_1
β : Type u_2
ι : Type u_3
mα : MeasurableSpace α
mβ : MeasurableSpace β
κ : ↥(kernel α β)
inst✝ : Countable ι
a : α
s : Set β
hs : MeasurableSet s
⊢ ∑' (n : ι), (0 a) s = (0 a) s
state_after: no goals
Theorem: Set.preimage_const_add_Ico
File: Mathlib/Data/Set/Pointwise/Interval.lean

tactic: simp [← Ici_inter_Iio]
state_before: α : Type u_1
inst✝ : OrderedAddCommGroup α
a b c : α
⊢ (fun x => a + x) ⁻¹' Ico b c = Ico (b - a) (c - a)
state_after: no goals
Theorem: Matroid.eq_emptyOn_or_nonempty
File: Mathlib/Data/Matroid/Constructions.lean

tactic: rw [← ground_eq_empty_iff]
state_before: α : Type u_1
M✝ : Matroid α
E B I X R J : Set α
M : Matroid α
⊢ M = emptyOn α ∨ M.Nonempty
state_after: α : Type u_1
M✝ : Matroid α
E B I X R J : Set α
M : Matroid α
⊢ M.E = ∅ ∨ M.Nonempty

tactic: exact M.E.eq_empty_or_nonempty.elim Or.inl (fun h ↦ Or.inr ⟨h⟩)
state_before: α : Type u_1
M✝ : Matroid α
E B I X R J : Set α
M : Matroid α
⊢ M.E = ∅ ∨ M.Nonempty
state_after: no goals
Theorem: ENNReal.tsum_fiberwise
File: Mathlib/Topology/Instances/ENNReal.lean

tactic: apply HasSum.tsum_eq
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
a b c d : ℝ≥0∞
r p q : ℝ≥0
x y z ε ε₁ ε₂ : ℝ≥0∞
s : Set ℝ≥0∞
f✝ g✝ : α → ℝ≥0∞
f : β → ℝ≥0∞
g : β → γ
⊢ ∑' (x : γ) (b : ↑(g ⁻¹' {x})), f ↑b = ∑' (i : β), f i
state_after: case ha
α : Type u_1
β : Type u_2
γ : Type u_3
a b c d : ℝ≥0∞
r p q : ℝ≥0
x y z ε ε₁ ε₂ : ℝ≥0∞
s : Set ℝ≥0∞
f✝ g✝ : α → ℝ≥0∞
f : β → ℝ≥0∞
g : β → γ
⊢ HasSum (fun b => ∑' (b_1 : ↑(g ⁻¹' {b})), f ↑b_1) (∑' (i : β), f i)

tactic: let equiv := Equiv.sigmaFiberEquiv g
state_before: case ha
α : Type u_1
β : Type u_2
γ : Type u_3
a b c d : ℝ≥0∞
r p q : ℝ≥0
x y z ε ε₁ ε₂ : ℝ≥0∞
s : Set ℝ≥0∞
f✝ g✝ : α → ℝ≥0∞
f : β → ℝ≥0∞
g : β → γ
⊢ HasSum (fun b => ∑' (b_1 : ↑(g ⁻¹' {b})), f ↑b_1) (∑' (i : β), f i)
state_after: case ha
α : Type u_1
β : Type u_2
γ : Type u_3
a b c d : ℝ≥0∞
r p q : ℝ≥0
x y z ε ε₁ ε₂ : ℝ≥0∞
s : Set ℝ≥0∞
f✝ g✝ : α → ℝ≥0∞
f : β → ℝ≥0∞
g : β → γ
equiv : (y : γ) × { x // g x = y } ≃ β := Equiv.sigmaFiberEquiv g
⊢ HasSum (fun b => ∑' (b_1 : ↑(g ⁻¹' {b})), f ↑b_1) (∑' (i : β), f i)

tactic: apply (equiv.hasSum_iff.mpr ENNReal.summable.hasSum).sigma
state_before: case ha
α : Type u_1
β : Type u_2
γ : Type u_3
a b c d : ℝ≥0∞
r p q : ℝ≥0
x y z ε ε₁ ε₂ : ℝ≥0∞
s : Set ℝ≥0∞
f✝ g✝ : α → ℝ≥0∞
f : β → ℝ≥0∞
g : β → γ
equiv : (y : γ) × { x // g x = y } ≃ β := Equiv.sigmaFiberEquiv g
⊢ HasSum (fun b => ∑' (b_1 : ↑(g ⁻¹' {b})), f ↑b_1) (∑' (i : β), f i)
state_after: case ha
α : Type u_1
β : Type u_2
γ : Type u_3
a b c d : ℝ≥0∞
r p q : ℝ≥0
x y z ε ε₁ ε₂ : ℝ≥0∞
s : Set ℝ≥0∞
f✝ g✝ : α → ℝ≥0∞
f : β → ℝ≥0∞
g : β → γ
equiv : (y : γ) × { x // g x = y } ≃ β := Equiv.sigmaFiberEquiv g
⊢ ∀ (b : γ), HasSum (fun c => (f ∘ ⇑equiv) ⟨b, c⟩) (∑' (b_1 : ↑(g ⁻¹' {b})), f ↑b_1)

tactic: exact fun _ ↦ ENNReal.summable.hasSum_iff.mpr rfl
state_before: case ha
α : Type u_1
β : Type u_2
γ : Type u_3
a b c d : ℝ≥0∞
r p q : ℝ≥0
x y z ε ε₁ ε₂ : ℝ≥0∞
s : Set ℝ≥0∞
f✝ g✝ : α → ℝ≥0∞
f : β → ℝ≥0∞
g : β → γ
equiv : (y : γ) × { x // g x = y } ≃ β := Equiv.sigmaFiberEquiv g
⊢ ∀ (b : γ), HasSum (fun c => (f ∘ ⇑equiv) ⟨b, c⟩) (∑' (b_1 : ↑(g ⁻¹' {b})), f ↑b_1)
state_after: no goals
Theorem: Fin.heq_fun₂_iff
File: Mathlib/Data/Fin/Basic.lean

tactic: subst h
state_before: n m : ℕ
α : Sort u_1
k l k' l' : ℕ
h : k = l
h' : k' = l'
f : Fin k → Fin k' → α
g : Fin l → Fin l' → α
⊢ HEq f g ↔ ∀ (i : Fin k) (j : Fin k'), f i j = g ⟨↑i, ⋯⟩ ⟨↑j, ⋯⟩
state_after: n m : ℕ
α : Sort u_1
k k' l' : ℕ
h' : k' = l'
f : Fin k → Fin k' → α
g : Fin k → Fin l' → α
⊢ HEq f g ↔ ∀ (i : Fin k) (j : Fin k'), f i j = g ⟨↑i, ⋯⟩ ⟨↑j, ⋯⟩

tactic: subst h'
state_before: n m : ℕ
α : Sort u_1
k k' l' : ℕ
h' : k' = l'
f : Fin k → Fin k' → α
g : Fin k → Fin l' → α
⊢ HEq f g ↔ ∀ (i : Fin k) (j : Fin k'), f i j = g ⟨↑i, ⋯⟩ ⟨↑j, ⋯⟩
state_after: n m : ℕ
α : Sort u_1
k k' : ℕ
f g : Fin k → Fin k' → α
⊢ HEq f g ↔ ∀ (i : Fin k) (j : Fin k'), f i j = g ⟨↑i, ⋯⟩ ⟨↑j, ⋯⟩

tactic: simp [Function.funext_iff]
state_before: n m : ℕ
α : Sort u_1
k k' : ℕ
f g : Fin k → Fin k' → α
⊢ HEq f g ↔ ∀ (i : Fin k) (j : Fin k'), f i j = g ⟨↑i, ⋯⟩ ⟨↑j, ⋯⟩
state_after: no goals
Theorem: Finset.covBy_iff_exists_erase
File: Mathlib/Data/Finset/Grade.lean

tactic: simp only [← coe_covBy_coe, Set.covBy_iff_exists_sdiff_singleton, ← coe_inj, coe_erase, mem_coe]
state_before: α : Type u_1
s t : Finset α
a : α
inst✝ : DecidableEq α
⊢ s ⋖ t ↔ ∃ a ∈ t, t.erase a = s
state_after: no goals
Theorem: FreeRing.coe_sub
File: Mathlib/RingTheory/FreeCommRing.lean

tactic: rw [castFreeCommRing, map_sub]
state_before: α : Type u
x y : FreeRing α
⊢ ↑(x - y) = ↑x - ↑y
state_after: no goals
Theorem: BoxIntegral.Box.splitUpper_le
File: Mathlib/Analysis/BoxIntegral/Partition/Split.lean

tactic: simp
state_before: ι : Type u_1
M : Type u_2
n : ℕ
I : Box ι
i : ι
x : ℝ
y : ι → ℝ
⊢ ↑(I.splitUpper i x) ⊆ ↑↑I
state_after: no goals
Theorem: Ordinal.lt_mul_succ_div
File: Mathlib/SetTheory/Ordinal/Arithmetic.lean

tactic: rw [div_def a h]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
a b : Ordinal.{u_4}
h : b ≠ 0
⊢ a < b * succ (a / b)
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
a b : Ordinal.{u_4}
h : b ≠ 0
⊢ a < b * succ (sInf {o | a < b * succ o})

tactic: exact csInf_mem (div_nonempty h)
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
a b : Ordinal.{u_4}
h : b ≠ 0
⊢ a < b * succ (sInf {o | a < b * succ o})
state_after: no goals
Theorem: Matrix.right_inv_eq_left_inv
File: Mathlib/LinearAlgebra/Matrix/NonsingularInverse.lean

tactic: rw [← inv_eq_right_inv h, ← inv_eq_left_inv g]
state_before: l : Type u_1
m : Type u
n : Type u'
α : Type v
inst✝² : Fintype n
inst✝¹ : DecidableEq n
inst✝ : CommRing α
A B C : Matrix n n α
h : A * B = 1
g : C * A = 1
⊢ B = C
state_after: no goals