1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: DFinsupp.card_Iio
File: Mathlib/Data/DFinsupp/Interval.lean

tactic: rw [card_Iio_eq_card_Iic_sub_one, card_Iic]
state_before: ι : Type u_1
α : ι → Type u_2
inst✝³ : DecidableEq ι
inst✝² : (i : ι) → DecidableEq (α i)
inst✝¹ : (i : ι) → CanonicallyOrderedAddCommMonoid (α i)
inst✝ : (i : ι) → LocallyFiniteOrder (α i)
f : Π₀ (i : ι), α i
⊢ (Iio f).card = ∏ i ∈ f.support, (Iic (f i)).card - 1
state_after: no goals
Theorem: Fintype.piFinset_nonempty
File: Mathlib/Data/Fintype/Pi.lean

tactic: simp [Finset.Nonempty, Classical.skolem]
state_before: α : Type u_1
inst✝¹ : DecidableEq α
inst✝ : Fintype α
γ : α → Type u_2
δ : α → Type u_3
s : (a : α) → Finset (γ a)
⊢ (piFinset s).Nonempty ↔ ∀ (a : α), (s a).Nonempty
state_after: no goals
Theorem: Holor.cprankMax_mul
File: Mathlib/Data/Holor.lean

tactic: simp [mul_zero x, CPRankMax.zero]
state_before: α : Type
d : ℕ
ds ds₁ ds₂ ds₃ : List ℕ
inst✝ : Ring α
x : Holor α [d]
⊢ CPRankMax 0 (x ⊗ 0)
state_after: no goals

tactic: rw [mul_left_distrib]
state_before: α : Type
d : ℕ
ds ds₁ ds₂ ds₃ : List ℕ
inst✝ : Ring α
n : ℕ
x : Holor α [d]
y₁ y₂ : Holor α ds
hy₁ : y₁.CPRankMax1
hy₂ : CPRankMax n y₂
⊢ CPRankMax (n + 1) (x ⊗ (y₁ + y₂))
state_after: α : Type
d : ℕ
ds ds₁ ds₂ ds₃ : List ℕ
inst✝ : Ring α
n : ℕ
x : Holor α [d]
y₁ y₂ : Holor α ds
hy₁ : y₁.CPRankMax1
hy₂ : CPRankMax n y₂
⊢ CPRankMax (n + 1) (x ⊗ y₁ + x ⊗ y₂)

tactic: rw [Nat.add_comm]
state_before: α : Type
d : ℕ
ds ds₁ ds₂ ds₃ : List ℕ
inst✝ : Ring α
n : ℕ
x : Holor α [d]
y₁ y₂ : Holor α ds
hy₁ : y₁.CPRankMax1
hy₂ : CPRankMax n y₂
⊢ CPRankMax (n + 1) (x ⊗ y₁ + x ⊗ y₂)
state_after: α : Type
d : ℕ
ds ds₁ ds₂ ds₃ : List ℕ
inst✝ : Ring α
n : ℕ
x : Holor α [d]
y₁ y₂ : Holor α ds
hy₁ : y₁.CPRankMax1
hy₂ : CPRankMax n y₂
⊢ CPRankMax (1 + n) (x ⊗ y₁ + x ⊗ y₂)

tactic: apply cprankMax_add
state_before: α : Type
d : ℕ
ds ds₁ ds₂ ds₃ : List ℕ
inst✝ : Ring α
n : ℕ
x : Holor α [d]
y₁ y₂ : Holor α ds
hy₁ : y₁.CPRankMax1
hy₂ : CPRankMax n y₂
⊢ CPRankMax (1 + n) (x ⊗ y₁ + x ⊗ y₂)
state_after: case a
α : Type
d : ℕ
ds ds₁ ds₂ ds₃ : List ℕ
inst✝ : Ring α
n : ℕ
x : Holor α [d]
y₁ y₂ : Holor α ds
hy₁ : y₁.CPRankMax1
hy₂ : CPRankMax n y₂
⊢ CPRankMax 1 (x ⊗ y₁)

case a
α : Type
d : ℕ
ds ds₁ ds₂ ds₃ : List ℕ
inst✝ : Ring α
n : ℕ
x : Holor α [d]
y₁ y₂ : Holor α ds
hy₁ : y₁.CPRankMax1
hy₂ : CPRankMax n y₂
⊢ CPRankMax n (x ⊗ y₂)

tactic: exact cprankMax_1 (CPRankMax1.cons _ _ hy₁)
state_before: case a
α : Type
d : ℕ
ds ds₁ ds₂ ds₃ : List ℕ
inst✝ : Ring α
n : ℕ
x : Holor α [d]
y₁ y₂ : Holor α ds
hy₁ : y₁.CPRankMax1
hy₂ : CPRankMax n y₂
⊢ CPRankMax 1 (x ⊗ y₁)
state_after: no goals

tactic: exact cprankMax_mul _ x y₂ hy₂
state_before: case a
α : Type
d : ℕ
ds ds₁ ds₂ ds₃ : List ℕ
inst✝ : Ring α
n : ℕ
x : Holor α [d]
y₁ y₂ : Holor α ds
hy₁ : y₁.CPRankMax1
hy₂ : CPRankMax n y₂
⊢ CPRankMax n (x ⊗ y₂)
state_after: no goals
Theorem: MeasureTheory.setLIntegral_subtype
File: Mathlib/MeasureTheory/Integral/Lebesgue.lean

tactic: rw [(MeasurableEmbedding.subtype_coe hs).restrict_comap, lintegral_subtype_comap hs,
  restrict_restrict hs, inter_eq_right.2 (Subtype.coe_image_subset _ _)]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
s : Set α
hs : MeasurableSet s
t : Set ↑s
f : α → ℝ≥0∞
⊢ ∫⁻ (x : ↑s) in t, f ↑x ∂Measure.comap Subtype.val μ = ∫⁻ (x : α) in Subtype.val '' t, f x ∂μ
state_after: no goals
Theorem: RatFunc.liftMonoidWithZeroHom_apply_div'
File: Mathlib/FieldTheory/RatFunc/Basic.lean

tactic: rw [← map_div₀, liftMonoidWithZeroHom_apply_div]
state_before: K : Type u
inst✝² : CommRing K
inst✝¹ : IsDomain K
L : Type u_1
inst✝ : CommGroupWithZero L
φ : K[X] →*₀ L
hφ : K[X]⁰ ≤ Submonoid.comap φ L⁰
p q : K[X]
⊢ (liftMonoidWithZeroHom φ hφ) ((algebraMap K[X] (RatFunc K)) p) /
      (liftMonoidWithZeroHom φ hφ) ((algebraMap K[X] (RatFunc K)) q) =
    φ p / φ q
state_after: no goals
Theorem: Fin.foldl_succ_last
File: .lake/packages/batteries/Batteries/Data/Fin/Lemmas.lean

tactic: rw [foldl_succ]
state_before: α : Sort u_1
n : Nat
f : α → Fin (n + 1) → α
x : α
⊢ foldl (n + 1) f x = f (foldl n (fun x x_1 => f x x_1.castSucc) x) (last n)
state_after: α : Sort u_1
n : Nat
f : α → Fin (n + 1) → α
x : α
⊢ foldl n (fun x i => f x i.succ) (f x 0) = f (foldl n (fun x x_1 => f x x_1.castSucc) x) (last n)

tactic: simp [foldl_succ, Fin.last]
state_before: case zero
α : Sort u_1
f : α → Fin (0 + 1) → α
x : α
⊢ foldl 0 (fun x i => f x i.succ) (f x 0) = f (foldl 0 (fun x x_1 => f x x_1.castSucc) x) (last 0)
state_after: no goals

tactic: simp [succ_castSucc]
state_before: case succ
α : Sort u_1
n : Nat
ih :
  ∀ (f : α → Fin (n + 1) → α) (x : α),
    foldl n (fun x i => f x i.succ) (f x 0) = f (foldl n (fun x x_1 => f x x_1.castSucc) x) (last n)
f : α → Fin (n + 1 + 1) → α
x : α
⊢ f (foldl n (fun x x_1 => f x x_1.castSucc.succ) (f x 0)) (last n).succ =
    f (foldl n (fun x i => f x i.succ.castSucc) (f x (castSucc 0))) (last (n + 1))
state_after: no goals
Theorem: Algebra.left_comm
File: Mathlib/Algebra/Algebra/Defs.lean

tactic: rw [← mul_assoc, ← commutes, mul_assoc]
state_before: R : Type u
S : Type v
A : Type w
B : Type u_1
inst✝⁵ : CommSemiring R
inst✝⁴ : CommSemiring S
inst✝³ : Semiring A
inst✝² : Algebra R A
inst✝¹ : Semiring B
inst✝ : Algebra R B
x : A
r : R
y : A
⊢ x * ((algebraMap R A) r * y) = (algebraMap R A) r * (x * y)
state_after: no goals
Theorem: Submonoid.closure_eq_mrange
File: Mathlib/Algebra/Group/Submonoid/Membership.lean

tactic: rw [FreeMonoid.mrange_lift, Subtype.range_coe]
state_before: M : Type u_1
A : Type u_2
B : Type u_3
inst✝ : Monoid M
a : M
s : Set M
⊢ closure s = mrange (FreeMonoid.lift Subtype.val)
state_after: no goals
Theorem: IsOfFinOrder.prod_mk
File: Mathlib/GroupTheory/OrderOfElement.lean

tactic: simpa only [← orderOf_pos_iff, Prod.orderOf] using Nat.lcm_pos
state_before: G : Type u_1
H : Type u_2
A : Type u_3
α : Type u_4
β : Type u_5
inst✝¹ : Monoid α
inst✝ : Monoid β
x : α × β
a : α
b : β
⊢ IsOfFinOrder a → IsOfFinOrder b → IsOfFinOrder (a, b)
state_after: no goals
Theorem: TensorProduct.congr_pow
File: Mathlib/LinearAlgebra/TensorProduct/Basic.lean

tactic: induction n with
| zero => exact congr_refl_refl.symm
| succ n ih => simp_rw [pow_succ, ih, congr_mul]
state_before: R : Type u_1
inst✝¹⁶ : CommSemiring R
R' : Type u_2
inst✝¹⁵ : Monoid R'
R'' : Type u_3
inst✝¹⁴ : Semiring R''
M : Type u_4
N : Type u_5
P : Type u_6
Q : Type u_7
S : Type u_8
T : Type u_9
inst✝¹³ : AddCommMonoid M
inst✝¹² : AddCommMonoid N
inst✝¹¹ : AddCommMonoid P
inst✝¹⁰ : AddCommMonoid Q
inst✝⁹ : AddCommMonoid S
inst✝⁸ : AddCommMonoid T
inst✝⁷ : Module R M
inst✝⁶ : Module R N
inst✝⁵ : Module R P
inst✝⁴ : Module R Q
inst✝³ : Module R S
inst✝² : Module R T
inst✝¹ : DistribMulAction R' M
inst✝ : Module R'' M
f : M ≃ₗ[R] M
g : N ≃ₗ[R] N
n : ℕ
⊢ congr f g ^ n = congr (f ^ n) (g ^ n)
state_after: no goals

tactic: exact congr_refl_refl.symm
state_before: case zero
R : Type u_1
inst✝¹⁶ : CommSemiring R
R' : Type u_2
inst✝¹⁵ : Monoid R'
R'' : Type u_3
inst✝¹⁴ : Semiring R''
M : Type u_4
N : Type u_5
P : Type u_6
Q : Type u_7
S : Type u_8
T : Type u_9
inst✝¹³ : AddCommMonoid M
inst✝¹² : AddCommMonoid N
inst✝¹¹ : AddCommMonoid P
inst✝¹⁰ : AddCommMonoid Q
inst✝⁹ : AddCommMonoid S
inst✝⁸ : AddCommMonoid T
inst✝⁷ : Module R M
inst✝⁶ : Module R N
inst✝⁵ : Module R P
inst✝⁴ : Module R Q
inst✝³ : Module R S
inst✝² : Module R T
inst✝¹ : DistribMulAction R' M
inst✝ : Module R'' M
f : M ≃ₗ[R] M
g : N ≃ₗ[R] N
⊢ congr f g ^ 0 = congr (f ^ 0) (g ^ 0)
state_after: no goals

tactic: simp_rw [pow_succ, ih, congr_mul]
state_before: case succ
R : Type u_1
inst✝¹⁶ : CommSemiring R
R' : Type u_2
inst✝¹⁵ : Monoid R'
R'' : Type u_3
inst✝¹⁴ : Semiring R''
M : Type u_4
N : Type u_5
P : Type u_6
Q : Type u_7
S : Type u_8
T : Type u_9
inst✝¹³ : AddCommMonoid M
inst✝¹² : AddCommMonoid N
inst✝¹¹ : AddCommMonoid P
inst✝¹⁰ : AddCommMonoid Q
inst✝⁹ : AddCommMonoid S
inst✝⁸ : AddCommMonoid T
inst✝⁷ : Module R M
inst✝⁶ : Module R N
inst✝⁵ : Module R P
inst✝⁴ : Module R Q
inst✝³ : Module R S
inst✝² : Module R T
inst✝¹ : DistribMulAction R' M
inst✝ : Module R'' M
f : M ≃ₗ[R] M
g : N ≃ₗ[R] N
n : ℕ
ih : congr f g ^ n = congr (f ^ n) (g ^ n)
⊢ congr f g ^ (n + 1) = congr (f ^ (n + 1)) (g ^ (n + 1))
state_after: no goals
Theorem: Pretrivialization.apply_mk_symm
File: Mathlib/Topology/FiberBundle/Trivialization.lean

tactic: rw [e.mk_symm hb, e.apply_symm_apply (e.mk_mem_target.mpr hb)]
state_before: ι : Type u_1
B : Type u_2
F : Type u_3
E : B → Type u_4
Z : Type u_5
inst✝² : TopologicalSpace B
inst✝¹ : TopologicalSpace F
proj : Z → B
e✝ : Pretrivialization F proj
x : Z
e' : Pretrivialization F TotalSpace.proj
x' : TotalSpace F E
b✝ : B
y✝ : E b✝
inst✝ : (x : B) → Zero (E x)
e : Pretrivialization F TotalSpace.proj
b : B
hb : b ∈ e.baseSet
y : F
⊢ ↑e { proj := b, snd := e.symm b y } = (b, y)
state_after: no goals
Theorem: MeasureTheory.SimpleFunc.restrict_empty
File: Mathlib/MeasureTheory/Function/SimpleFunc.lean

tactic: simp [restrict]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝¹ : MeasurableSpace α
K : Type u_5
inst✝ : Zero β
f : α →ₛ β
⊢ f.restrict ∅ = 0
state_after: no goals
Theorem: Polynomial.degree_le_iff_coeff_zero
File: Mathlib/Algebra/Polynomial/Degree/Definitions.lean

tactic: simp only [degree, Finset.max, Finset.sup_le_iff, mem_support_iff, Ne, ← not_le,
  not_imp_comm, Nat.cast_withBot]
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
f : R[X]
n : WithBot ℕ
⊢ f.degree ≤ n ↔ ∀ (m : ℕ), n < ↑m → f.coeff m = 0
state_after: no goals
Theorem: SimpleGraph.Subgraph.deleteVerts_inter_verts_left_eq
File: Mathlib/Combinatorics/SimpleGraph/Subgraph.lean

tactic: ext <;> simp (config := { contextual := true }) [imp_false]
state_before: ι : Sort u_1
V : Type u
W : Type v
G : SimpleGraph V
G' : G.Subgraph
s : Set V
⊢ G'.deleteVerts (G'.verts ∩ s) = G'.deleteVerts s
state_after: no goals
Theorem: Int.natAbs_eq_iff_sq_eq
File: Mathlib/Data/Int/Lemmas.lean

tactic: rw [sq, sq]
state_before: a✝ b✝ : ℤ
n : ℕ
a b : ℤ
⊢ a.natAbs = b.natAbs ↔ a ^ 2 = b ^ 2
state_after: a✝ b✝ : ℤ
n : ℕ
a b : ℤ
⊢ a.natAbs = b.natAbs ↔ a * a = b * b

tactic: exact natAbs_eq_iff_mul_self_eq
state_before: a✝ b✝ : ℤ
n : ℕ
a b : ℤ
⊢ a.natAbs = b.natAbs ↔ a * a = b * b
state_after: no goals
Theorem: Finset.val_toFinset
File: Mathlib/Data/Finset/Basic.lean

tactic: ext
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : DecidableEq α
s : Finset α
⊢ s.val.toFinset = s
state_after: case a
α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : DecidableEq α
s : Finset α
a✝ : α
⊢ a✝ ∈ s.val.toFinset ↔ a✝ ∈ s

tactic: rw [Multiset.mem_toFinset, ← mem_def]
state_before: case a
α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : DecidableEq α
s : Finset α
a✝ : α
⊢ a✝ ∈ s.val.toFinset ↔ a✝ ∈ s
state_after: no goals
Theorem: CategoryTheory.Presieve.isAmalgamation_sieveExtend
File: Mathlib/CategoryTheory/Sites/IsSheafFor.lean

tactic: intro Y f hf
state_before: C : Type u₁
inst✝ : Category.{v₁, u₁} C
P Q U : Cᵒᵖ ⥤ Type w
X Y : C
S : Sieve X
R✝ R : Presieve X
x : FamilyOfElements P R
t : P.obj { unop := X }
ht : x.IsAmalgamation t
⊢ x.sieveExtend.IsAmalgamation t
state_after: C : Type u₁
inst✝ : Category.{v₁, u₁} C
P Q U : Cᵒᵖ ⥤ Type w
X Y✝ : C
S : Sieve X
R✝ R : Presieve X
x : FamilyOfElements P R
t : P.obj { unop := X }
ht : x.IsAmalgamation t
Y : C
f : Y ⟶ X
hf : (generate R).arrows f
⊢ P.map f.op t = x.sieveExtend f hf

tactic: dsimp [FamilyOfElements.sieveExtend]
state_before: C : Type u₁
inst✝ : Category.{v₁, u₁} C
P Q U : Cᵒᵖ ⥤ Type w
X Y✝ : C
S : Sieve X
R✝ R : Presieve X
x : FamilyOfElements P R
t : P.obj { unop := X }
ht : x.IsAmalgamation t
Y : C
f : Y ⟶ X
hf : (generate R).arrows f
⊢ P.map f.op t = x.sieveExtend f hf
state_after: C : Type u₁
inst✝ : Category.{v₁, u₁} C
P Q U : Cᵒᵖ ⥤ Type w
X Y✝ : C
S : Sieve X
R✝ R : Presieve X
x : FamilyOfElements P R
t : P.obj { unop := X }
ht : x.IsAmalgamation t
Y : C
f : Y ⟶ X
hf : (generate R).arrows f
⊢ P.map f.op t = P.map ⋯.choose.op (x ⋯.choose ⋯)

tactic: rw [← ht _, ← FunctorToTypes.map_comp_apply, ← op_comp, hf.choose_spec.choose_spec.choose_spec.2]
state_before: C : Type u₁
inst✝ : Category.{v₁, u₁} C
P Q U : Cᵒᵖ ⥤ Type w
X Y✝ : C
S : Sieve X
R✝ R : Presieve X
x : FamilyOfElements P R
t : P.obj { unop := X }
ht : x.IsAmalgamation t
Y : C
f : Y ⟶ X
hf : (generate R).arrows f
⊢ P.map f.op t = P.map ⋯.choose.op (x ⋯.choose ⋯)
state_after: no goals
Theorem: ContinuousLinearMap.sum_apply
File: Mathlib/Topology/Algebra/Module/Basic.lean

tactic: simp only [coe_sum', Finset.sum_apply]
state_before: R₁ : Type u_1
R₂ : Type u_2
R₃ : Type u_3
inst✝¹⁷ : Semiring R₁
inst✝¹⁶ : Semiring R₂
inst✝¹⁵ : Semiring R₃
σ₁₂ : R₁ →+* R₂
σ₂₃ : R₂ →+* R₃
σ₁₃ : R₁ →+* R₃
M₁ : Type u_4
inst✝¹⁴ : TopologicalSpace M₁
inst✝¹³ : AddCommMonoid M₁
M'₁ : Type u_5
inst✝¹² : TopologicalSpace M'₁
inst✝¹¹ : AddCommMonoid M'₁
M₂ : Type u_6
inst✝¹⁰ : TopologicalSpace M₂
inst✝⁹ : AddCommMonoid M₂
M₃ : Type u_7
inst✝⁸ : TopologicalSpace M₃
inst✝⁷ : AddCommMonoid M₃
M₄ : Type u_8
inst✝⁶ : TopologicalSpace M₄
inst✝⁵ : AddCommMonoid M₄
inst✝⁴ : Module R₁ M₁
inst✝³ : Module R₁ M'₁
inst✝² : Module R₂ M₂
inst✝¹ : Module R₃ M₃
inst✝ : ContinuousAdd M₂
ι : Type u_9
t : Finset ι
f : ι → M₁ →SL[σ₁₂] M₂
b : M₁
⊢ (∑ d ∈ t, f d) b = ∑ d ∈ t, (f d) b
state_after: no goals
Theorem: NormedCommGroup.tendsto_nhds_nhds
File: Mathlib/Analysis/Normed/Group/Basic.lean

tactic: simp_rw [Metric.tendsto_nhds_nhds, dist_eq_norm_div]
state_before: 𝓕 : Type u_1
𝕜 : Type u_2
α : Type u_3
ι : Type u_4
κ : Type u_5
E : Type u_6
F : Type u_7
G : Type u_8
inst✝² : SeminormedGroup E
inst✝¹ : SeminormedGroup F
inst✝ : SeminormedGroup G
s : Set E
a a₁ a₂ b b₁ b₂ : E
r r₁ r₂ : ℝ
f : E → F
x : E
y : F
⊢ Tendsto f (𝓝 x) (𝓝 y) ↔ ∀ ε > 0, ∃ δ > 0, ∀ (x' : E), ‖x' / x‖ < δ → ‖f x' / y‖ < ε
state_after: no goals
Theorem: Ideal.IsHomogeneous.toIdeal_homogeneousCore_eq_self
File: Mathlib/RingTheory/GradedAlgebra/HomogeneousIdeal.lean

tactic: apply le_antisymm (I.homogeneousCore'_le 𝒜) _
state_before: ι : Type u_1
σ : Type u_2
R : Type u_3
A : Type u_4
inst✝⁵ : Semiring A
inst✝⁴ : SetLike σ A
inst✝³ : AddSubmonoidClass σ A
𝒜 : ι → σ
inst✝² : DecidableEq ι
inst✝¹ : AddMonoid ι
inst✝ : GradedRing 𝒜
I : Ideal A
h : IsHomogeneous 𝒜 I
⊢ (homogeneousCore 𝒜 I).toIdeal = I
state_after: ι : Type u_1
σ : Type u_2
R : Type u_3
A : Type u_4
inst✝⁵ : Semiring A
inst✝⁴ : SetLike σ A
inst✝³ : AddSubmonoidClass σ A
𝒜 : ι → σ
inst✝² : DecidableEq ι
inst✝¹ : AddMonoid ι
inst✝ : GradedRing 𝒜
I : Ideal A
h : IsHomogeneous 𝒜 I
⊢ I ≤ homogeneousCore' 𝒜 I

tactic: intro x hx
state_before: ι : Type u_1
σ : Type u_2
R : Type u_3
A : Type u_4
inst✝⁵ : Semiring A
inst✝⁴ : SetLike σ A
inst✝³ : AddSubmonoidClass σ A
𝒜 : ι → σ
inst✝² : DecidableEq ι
inst✝¹ : AddMonoid ι
inst✝ : GradedRing 𝒜
I : Ideal A
h : IsHomogeneous 𝒜 I
⊢ I ≤ homogeneousCore' 𝒜 I
state_after: ι : Type u_1
σ : Type u_2
R : Type u_3
A : Type u_4
inst✝⁵ : Semiring A
inst✝⁴ : SetLike σ A
inst✝³ : AddSubmonoidClass σ A
𝒜 : ι → σ
inst✝² : DecidableEq ι
inst✝¹ : AddMonoid ι
inst✝ : GradedRing 𝒜
I : Ideal A
h : IsHomogeneous 𝒜 I
x : A
hx : x ∈ I
⊢ x ∈ homogeneousCore' 𝒜 I

tactic: classical
rw [← DirectSum.sum_support_decompose 𝒜 x]
exact Ideal.sum_mem _ fun j _ => Ideal.subset_span ⟨⟨_, homogeneous_coe _⟩, h _ hx, rfl⟩
state_before: ι : Type u_1
σ : Type u_2
R : Type u_3
A : Type u_4
inst✝⁵ : Semiring A
inst✝⁴ : SetLike σ A
inst✝³ : AddSubmonoidClass σ A
𝒜 : ι → σ
inst✝² : DecidableEq ι
inst✝¹ : AddMonoid ι
inst✝ : GradedRing 𝒜
I : Ideal A
h : IsHomogeneous 𝒜 I
x : A
hx : x ∈ I
⊢ x ∈ homogeneousCore' 𝒜 I
state_after: no goals

tactic: rw [← DirectSum.sum_support_decompose 𝒜 x]
state_before: ι : Type u_1
σ : Type u_2
R : Type u_3
A : Type u_4
inst✝⁵ : Semiring A
inst✝⁴ : SetLike σ A
inst✝³ : AddSubmonoidClass σ A
𝒜 : ι → σ
inst✝² : DecidableEq ι
inst✝¹ : AddMonoid ι
inst✝ : GradedRing 𝒜
I : Ideal A
h : IsHomogeneous 𝒜 I
x : A
hx : x ∈ I
⊢ x ∈ homogeneousCore' 𝒜 I
state_after: ι : Type u_1
σ : Type u_2
R : Type u_3
A : Type u_4
inst✝⁵ : Semiring A
inst✝⁴ : SetLike σ A
inst✝³ : AddSubmonoidClass σ A
𝒜 : ι → σ
inst✝² : DecidableEq ι
inst✝¹ : AddMonoid ι
inst✝ : GradedRing 𝒜
I : Ideal A
h : IsHomogeneous 𝒜 I
x : A
hx : x ∈ I
⊢ ∑ i ∈ DFinsupp.support ((decompose 𝒜) x), ↑(((decompose 𝒜) x) i) ∈ homogeneousCore' 𝒜 I

tactic: exact Ideal.sum_mem _ fun j _ => Ideal.subset_span ⟨⟨_, homogeneous_coe _⟩, h _ hx, rfl⟩
state_before: ι : Type u_1
σ : Type u_2
R : Type u_3
A : Type u_4
inst✝⁵ : Semiring A
inst✝⁴ : SetLike σ A
inst✝³ : AddSubmonoidClass σ A
𝒜 : ι → σ
inst✝² : DecidableEq ι
inst✝¹ : AddMonoid ι
inst✝ : GradedRing 𝒜
I : Ideal A
h : IsHomogeneous 𝒜 I
x : A
hx : x ∈ I
⊢ ∑ i ∈ DFinsupp.support ((decompose 𝒜) x), ↑(((decompose 𝒜) x) i) ∈ homogeneousCore' 𝒜 I
state_after: no goals
Theorem: mem_vadd_const_affineSegment
File: Mathlib/Analysis/Convex/Between.lean

tactic: rw [← affineSegment_vadd_const_image, (vadd_right_injective p).mem_set_image]
state_before: R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁶ : OrderedRing R
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module R V
inst✝³ : AddTorsor V P
inst✝² : AddCommGroup V'
inst✝¹ : Module R V'
inst✝ : AddTorsor V' P'
x y z : V
p : P
⊢ z +ᵥ p ∈ affineSegment R (x +ᵥ p) (y +ᵥ p) ↔ z ∈ affineSegment R x y
state_after: no goals
Theorem: WeierstrassCurve.Jacobian.dblY_of_Z_eq_zero
File: Mathlib/AlgebraicGeometry/EllipticCurve/Jacobian.lean

tactic: erw [dblY, negDblY_of_Z_eq_zero hP hPz, dblZ_of_Z_eq_zero hPz, negY_of_Z_eq_zero rfl, neg_neg]
state_before: R : Type u
inst✝¹ : CommRing R
W' : Jacobian R
F : Type v
inst✝ : Field F
W : Jacobian F
P : Fin 3 → R
hP : W'.Equation P
hPz : P z = 0
⊢ W'.dblY P = (P x ^ 2) ^ 3
state_after: no goals
Theorem: Nat.div_dvd_iff_dvd_mul
File: Mathlib/Data/Nat/Defs.lean

tactic: have := Nat.dvd_trans (Nat.dvd_mul_left _ d) (Nat.mul_dvd_mul_left d h)
state_before: a b c d✝ m n k : ℕ
p q : ℕ → Prop
h : b ∣ a
hb : b ≠ 0
d : ℕ
⊢ c = a / b * d ↔ b * c = a * d
state_after: a b c d✝ m n k : ℕ
p q : ℕ → Prop
h : b ∣ a
hb : b ≠ 0
d : ℕ
this : b ∣ d * a
⊢ c = a / b * d ↔ b * c = a * d

tactic: rw [eq_comm, Nat.mul_comm, ← Nat.mul_div_assoc d h,
  Nat.div_eq_iff_eq_mul_right (Nat.pos_of_ne_zero hb) this, Nat.mul_comm, eq_comm]
state_before: a b c d✝ m n k : ℕ
p q : ℕ → Prop
h : b ∣ a
hb : b ≠ 0
d : ℕ
this : b ∣ d * a
⊢ c = a / b * d ↔ b * c = a * d
state_after: no goals
Theorem: Finset.Ico_eq_empty_iff
File: Mathlib/Order/Interval/Finset/Basic.lean

tactic: rw [← coe_eq_empty, coe_Ico, Set.Ico_eq_empty_iff]
state_before: ι : Type u_1
α : Type u_2
inst✝¹ : Preorder α
inst✝ : LocallyFiniteOrder α
a a₁ a₂ b b₁ b₂ c x : α
⊢ Ico a b = ∅ ↔ ¬a < b
state_after: no goals
Theorem: Quotient.subsingleton_iff
File: Mathlib/Data/Setoid/Basic.lean

tactic: simp only [_root_.subsingleton_iff, eq_top_iff, Setoid.le_def, Setoid.top_def, Pi.top_apply,
  forall_const]
state_before: α : Type u_1
β : Type u_2
s : Setoid α
⊢ Subsingleton (Quotient s) ↔ s = ⊤
state_after: α : Type u_1
β : Type u_2
s : Setoid α
⊢ (∀ (x y : Quotient s), x = y) ↔ ∀ {x y : α}, ⊤ → s.Rel x y

tactic: refine (surjective_quotient_mk' _).forall.trans (forall_congr' fun a => ?_)
state_before: α : Type u_1
β : Type u_2
s : Setoid α
⊢ (∀ (x y : Quotient s), x = y) ↔ ∀ {x y : α}, ⊤ → s.Rel x y
state_after: α : Type u_1
β : Type u_2
s : Setoid α
a : α
⊢ (∀ (y : Quotient s), Quotient.mk' a = y) ↔ ∀ {y : α}, ⊤ → s.Rel a y

tactic: refine (surjective_quotient_mk' _).forall.trans (forall_congr' fun b => ?_)
state_before: α : Type u_1
β : Type u_2
s : Setoid α
a : α
⊢ (∀ (y : Quotient s), Quotient.mk' a = y) ↔ ∀ {y : α}, ⊤ → s.Rel a y
state_after: α : Type u_1
β : Type u_2
s : Setoid α
a b : α
⊢ Quotient.mk' a = Quotient.mk' b ↔ ⊤ → s.Rel a b

tactic: simp_rw [Prop.top_eq_true, true_implies, Quotient.eq']
state_before: α : Type u_1
β : Type u_2
s : Setoid α
a b : α
⊢ Quotient.mk' a = Quotient.mk' b ↔ ⊤ → s.Rel a b
state_after: α : Type u_1
β : Type u_2
s : Setoid α
a b : α
⊢ Setoid.r a b ↔ s.Rel a b

tactic: rfl
state_before: α : Type u_1
β : Type u_2
s : Setoid α
a b : α
⊢ Setoid.r a b ↔ s.Rel a b
state_after: no goals
Theorem: Stream'.WSeq.bind_congr
File: Mathlib/Data/Seq/WSeq.lean

tactic: rw [h]
state_before: α : Type u
β : Type v
γ : Type w
s1 s2 : WSeq α
f1 f2 : α → WSeq β
h1 : s1 ~ʷ s2
h2 : ∀ (a : α), f1 a ~ʷ f2 a
a b : α
h : a = b
⊢ LiftRel (fun x x_1 => x = x_1) (f1 a) (f2 b)
state_after: α : Type u
β : Type v
γ : Type w
s1 s2 : WSeq α
f1 f2 : α → WSeq β
h1 : s1 ~ʷ s2
h2 : ∀ (a : α), f1 a ~ʷ f2 a
a b : α
h : a = b
⊢ LiftRel (fun x x_1 => x = x_1) (f1 b) (f2 b)

tactic: apply h2
state_before: α : Type u
β : Type v
γ : Type w
s1 s2 : WSeq α
f1 f2 : α → WSeq β
h1 : s1 ~ʷ s2
h2 : ∀ (a : α), f1 a ~ʷ f2 a
a b : α
h : a = b
⊢ LiftRel (fun x x_1 => x = x_1) (f1 b) (f2 b)
state_after: no goals
Theorem: Set.ncard_union_eq
File: Mathlib/Data/Set/Card.lean

tactic: to_encard_tac
state_before: α : Type u_1
β : Type u_2
s t : Set α
f : α → β
h : Disjoint s t
hs : autoParam s.Finite _auto✝
ht : autoParam t.Finite _auto✝
⊢ (s ∪ t).ncard = s.ncard + t.ncard
state_after: α : Type u_1
β : Type u_2
s t : Set α
f : α → β
h : Disjoint s t
hs : autoParam s.Finite _auto✝
ht : autoParam t.Finite _auto✝
⊢ ↑(s ∪ t).ncard = ↑s.ncard + ↑t.ncard

tactic: rw [hs.cast_ncard_eq, ht.cast_ncard_eq, (hs.union ht).cast_ncard_eq, encard_union_eq h]
state_before: α : Type u_1
β : Type u_2
s t : Set α
f : α → β
h : Disjoint s t
hs : autoParam s.Finite _auto✝
ht : autoParam t.Finite _auto✝
⊢ ↑(s ∪ t).ncard = ↑s.ncard + ↑t.ncard
state_after: no goals
Theorem: Real.tendsto_eulerMascheroniSeq
File: Mathlib/NumberTheory/Harmonic/EulerMascheroni.lean

tactic: have := tendsto_atTop_ciSup strictMono_eulerMascheroniSeq.monotone ?_
state_before: ⊢ Tendsto eulerMascheroniSeq atTop (𝓝 eulerMascheroniConstant)
state_after: case refine_2
this : Tendsto eulerMascheroniSeq atTop (𝓝 (⨆ i, eulerMascheroniSeq i))
⊢ Tendsto eulerMascheroniSeq atTop (𝓝 eulerMascheroniConstant)

case refine_1

⊢ BddAbove (Set.range eulerMascheroniSeq)

tactic: rwa [eulerMascheroniConstant, this.limUnder_eq]
state_before: case refine_2
this : Tendsto eulerMascheroniSeq atTop (𝓝 (⨆ i, eulerMascheroniSeq i))
⊢ Tendsto eulerMascheroniSeq atTop (𝓝 eulerMascheroniConstant)
state_after: no goals

tactic: exact ⟨_, fun _ ⟨_, hn⟩ ↦ hn ▸ (eulerMascheroniSeq_lt_eulerMascheroniSeq' _ 1).le⟩
state_before: case refine_1

⊢ BddAbove (Set.range eulerMascheroniSeq)
state_after: no goals
Theorem: Sym2.ball
File: Mathlib/Data/Sym/Sym2.lean

tactic: refine ⟨fun h => ⟨h _ <| mem_mk_left _ _, h _ <| mem_mk_right _ _⟩, fun h c hc => ?_⟩
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
p : α → Prop
a b : α
⊢ (∀ c ∈ s(a, b), p c) ↔ p a ∧ p b
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
p : α → Prop
a b : α
h : p a ∧ p b
c : α
hc : c ∈ s(a, b)
⊢ p c

tactic: obtain rfl | rfl := Sym2.mem_iff.1 hc
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
p : α → Prop
a b : α
h : p a ∧ p b
c : α
hc : c ∈ s(a, b)
⊢ p c
state_after: case inl
α : Type u_1
β : Type u_2
γ : Type u_3
p : α → Prop
b c : α
h : p c ∧ p b
hc : c ∈ s(c, b)
⊢ p c

case inr
α : Type u_1
β : Type u_2
γ : Type u_3
p : α → Prop
a c : α
h : p a ∧ p c
hc : c ∈ s(a, c)
⊢ p c

tactic: exact h.1
state_before: case inl
α : Type u_1
β : Type u_2
γ : Type u_3
p : α → Prop
b c : α
h : p c ∧ p b
hc : c ∈ s(c, b)
⊢ p c
state_after: no goals

tactic: exact h.2
state_before: case inr
α : Type u_1
β : Type u_2
γ : Type u_3
p : α → Prop
a c : α
h : p a ∧ p c
hc : c ∈ s(a, c)
⊢ p c
state_after: no goals