ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
Theorem: MvPolynomial.comap_eq_id_of_eq_id
File: Mathlib/Algebra/MvPolynomial/Comap.lean

Proof steps:
state_before: σ : Type u_1
τ : Type u_2
υ : Type u_3
R : Type u_4
inst✝ : CommSemiring R
f : MvPolynomial σ R →ₐ[R] MvPolynomial σ R
hf : ∀ (φ : MvPolynomial σ R), f φ = φ
x : σ → R
⊢ comap f x = x
state_after: case h.e'_2.h.e'_5
σ : Type u_1
τ : Type u_2
υ : Type u_3
R : Type u_4
inst✝ : CommSemiring R
f : MvPolynomial σ R →ₐ[R] MvPolynomial σ R
hf : ∀ (φ : MvPolynomial σ R), f φ = φ
x : σ → R
⊢ f = AlgHom.id R (MvPolynomial σ R)
tactic: convert comap_id_apply x
state_before: case h.e'_2.h.e'_5
σ : Type u_1
τ : Type u_2
υ : Type u_3
R : Type u_4
inst✝ : CommSemiring R
f : MvPolynomial σ R →ₐ[R] MvPolynomial σ R
hf : ∀ (φ : MvPolynomial σ R), f φ = φ
x : σ → R
⊢ f = AlgHom.id R (MvPolynomial σ R)
state_after: case h.e'_2.h.e'_5.hf
σ : Type u_1
τ : Type u_2
υ : Type u_3
R : Type u_4
inst✝ : CommSemiring R
f : MvPolynomial σ R →ₐ[R] MvPolynomial σ R
hf : ∀ (φ : MvPolynomial σ R), f φ = φ
x : σ → R
φ : σ
⊢ f (X φ) = (AlgHom.id R (MvPolynomial σ R)) (X φ)
tactic: ext1 φ
state_before: case h.e'_2.h.e'_5.hf
σ : Type u_1
τ : Type u_2
υ : Type u_3
R : Type u_4
inst✝ : CommSemiring R
f : MvPolynomial σ R →ₐ[R] MvPolynomial σ R
hf : ∀ (φ : MvPolynomial σ R), f φ = φ
x : σ → R
φ : σ
⊢ f (X φ) = (AlgHom.id R (MvPolynomial σ R)) (X φ)
state_after: no goals
tactic: simp [hf, AlgHom.id_apply]
Theorem: RCLike.hasSum_iff
File: Mathlib/Analysis/Complex/Basic.lean

Proof steps:
state_before: α : Type u_1
𝕜 : Type u_2
inst✝ : RCLike 𝕜
f : α → 𝕜
c : 𝕜
⊢ HasSum f c ↔ HasSum (fun x => re (f x)) (re c) ∧ HasSum (fun x => im (f x)) (im c)
state_after: α : Type u_1
𝕜 : Type u_2
inst✝ : RCLike 𝕜
f : α → 𝕜
c : 𝕜
⊢ HasSum (fun x => re (f x)) (re c) ∧ HasSum (fun x => im (f x)) (im c) → HasSum f c
tactic: refine ⟨fun h => ⟨hasSum_re _ h, hasSum_im _ h⟩, ?_⟩
state_before: α : Type u_1
𝕜 : Type u_2
inst✝ : RCLike 𝕜
f : α → 𝕜
c : 𝕜
⊢ HasSum (fun x => re (f x)) (re c) ∧ HasSum (fun x => im (f x)) (im c) → HasSum f c
state_after: case intro
α : Type u_1
𝕜 : Type u_2
inst✝ : RCLike 𝕜
f : α → 𝕜
c : 𝕜
h₁ : HasSum (fun x => re (f x)) (re c)
h₂ : HasSum (fun x => im (f x)) (im c)
⊢ HasSum f c
tactic: rintro ⟨h₁, h₂⟩
state_before: case intro
α : Type u_1
𝕜 : Type u_2
inst✝ : RCLike 𝕜
f : α → 𝕜
c : 𝕜
h₁ : HasSum (fun x => re (f x)) (re c)
h₂ : HasSum (fun x => im (f x)) (im c)
⊢ HasSum f c
state_after: no goals
tactic: simpa only [re_add_im] using
    ((hasSum_ofReal 𝕜).mpr h₁).add (((hasSum_ofReal 𝕜).mpr h₂).mul_right I)
Theorem: Polynomial.not_isUnit_X_sub_C
File: Mathlib/Algebra/Polynomial/AlgebraMap.lean

Proof steps:
state_before: R : Type u
S : Type v
T : Type w
A : Type z
A' : Type u_1
B : Type u_2
a b : R
n : ℕ
inst✝¹ : Ring R
inst✝ : Nontrivial R
r : R
x✝ : IsUnit (X - C r)
g : R[X]
_hfg : (X - C r) * g = 1
hgf : g * (X - C r) = 1
⊢ 0 = 1
state_after: no goals
tactic: erw [← eval_mul_X_sub_C, hgf, eval_one]
Theorem: FirstOrder.Language.LHom.comp_id
File: Mathlib/ModelTheory/LanguageMap.lean

Proof steps:
state_before: L : Language
L' : Language
M : Type w
inst✝ : L.Structure M
ϕ : L →ᴸ L'
L'' : Language
F : L →ᴸ L'
⊢ F ∘ᴸ LHom.id L = F
state_after: case mk
L : Language
L' : Language
M : Type w
inst✝ : L.Structure M
ϕ : L →ᴸ L'
L'' : Language
onFunction✝ : ⦃n : ℕ⦄ → L.Functions n → L'.Functions n
onRelation✝ : ⦃n : ℕ⦄ → L.Relations n → L'.Relations n
⊢ { onFunction := onFunction✝, onRelation := onRelation✝ } ∘ᴸ LHom.id L =
    { onFunction := onFunction✝, onRelation := onRelation✝ }
tactic: cases F
state_before: case mk
L : Language
L' : Language
M : Type w
inst✝ : L.Structure M
ϕ : L →ᴸ L'
L'' : Language
onFunction✝ : ⦃n : ℕ⦄ → L.Functions n → L'.Functions n
onRelation✝ : ⦃n : ℕ⦄ → L.Relations n → L'.Relations n
⊢ { onFunction := onFunction✝, onRelation := onRelation✝ } ∘ᴸ LHom.id L =
    { onFunction := onFunction✝, onRelation := onRelation✝ }
state_after: no goals
tactic: rfl
Theorem: Sym.fill_filterNe
File: Mathlib/Data/Sym/Basic.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
n n' m✝ : ℕ
s : Sym α n
a✝ b : α
inst✝ : DecidableEq α
a : α
m : Sym α n
⊢ ↑(fill a (filterNe a m).fst (filterNe a m).snd) = ↑m
state_after: α : Type u_1
β : Type u_2
n n' m✝ : ℕ
s : Sym α n
a✝ b : α
inst✝ : DecidableEq α
a : α
m : Sym α n
⊢ filter (fun x => a ≠ x) ↑m + ↑(replicate (count a ↑m) a) = ↑m
tactic: rw [coe_fill, filterNe, ← val_eq_coe, Subtype.coe_mk, Fin.val_mk]
state_before: α : Type u_1
β : Type u_2
n n' m✝ : ℕ
s : Sym α n
a✝ b : α
inst✝ : DecidableEq α
a : α
m : Sym α n
⊢ filter (fun x => a ≠ x) ↑m + ↑(replicate (count a ↑m) a) = ↑m
state_after: case a
α : Type u_1
β : Type u_2
n n' m✝ : ℕ
s : Sym α n
a✝ b✝ : α
inst✝ : DecidableEq α
a : α
m : Sym α n
b : α
⊢ count b (filter (fun x => a ≠ x) ↑m + ↑(replicate (count a ↑m) a)) = count b ↑m
tactic: ext b
state_before: case a
α : Type u_1
β : Type u_2
n n' m✝ : ℕ
s : Sym α n
a✝ b✝ : α
inst✝ : DecidableEq α
a : α
m : Sym α n
b : α
⊢ count b (filter (fun x => a ≠ x) ↑m + ↑(replicate (count a ↑m) a)) = count b ↑m
state_after: case a
α : Type u_1
β : Type u_2
n n' m✝ : ℕ
s : Sym α n
a✝ b✝ : α
inst✝ : DecidableEq α
a : α
m : Sym α n
b : α
⊢ count b (filter (fun x => ¬a = x) ↑m + ↑(replicate (count a ↑m) a)) = count b ↑m
tactic: dsimp
state_before: case a
α : Type u_1
β : Type u_2
n n' m✝ : ℕ
s : Sym α n
a✝ b✝ : α
inst✝ : DecidableEq α
a : α
m : Sym α n
b : α
⊢ count b (filter (fun x => ¬a = x) ↑m + ↑(replicate (count a ↑m) a)) = count b ↑m
state_after: case a
α : Type u_1
β : Type u_2
n n' m✝ : ℕ
s : Sym α n
a✝ b✝ : α
inst✝ : DecidableEq α
a : α
m : Sym α n
b : α
⊢ ((if ¬a = b then count b ↑m else 0) + if b = a then count a ↑m else 0) = count b ↑m
tactic: rw [count_add, count_filter, Sym.coe_replicate, count_replicate]
state_before: case a
α : Type u_1
β : Type u_2
n n' m✝ : ℕ
s : Sym α n
a✝ b✝ : α
inst✝ : DecidableEq α
a : α
m : Sym α n
b : α
⊢ ((if ¬a = b then count b ↑m else 0) + if b = a then count a ↑m else 0) = count b ↑m
state_after: case a.inl
α : Type u_1
β : Type u_2
n n' m✝ : ℕ
s : Sym α n
a✝ b : α
inst✝ : DecidableEq α
a : α
m : Sym α n
⊢ ((if ¬a = a then count a ↑m else 0) + if a = a then count a ↑m else 0) = count a ↑m

case a.inr
α : Type u_1
β : Type u_2
n n' m✝ : ℕ
s : Sym α n
a✝ b✝ : α
inst✝ : DecidableEq α
a : α
m : Sym α n
b : α
h : a ≠ b
⊢ ((if ¬a = b then count b ↑m else 0) + if b = a then count a ↑m else 0) = count b ↑m
tactic: obtain rfl | h := eq_or_ne a b
Theorem: Set.sep_of_ncard_eq
File: Mathlib/Data/Set/Card.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
s t : Set α
f : α → β
a : α
P : α → Prop
h : {x | x ∈ s ∧ P x}.ncard = s.ncard
ha : a ∈ s
hs : autoParam s.Finite _auto✝
⊢ {x | x ∈ s ∧ P x} ⊆ s
state_after: no goals
tactic: simp
Theorem: Finset.card_div_choose_le_card_shadow_div_choose
File: Mathlib/Combinatorics/SetFamily/LYM.lean

Proof steps:
state_before: 𝕜 : Type u_1
α : Type u_2
inst✝² : LinearOrderedField 𝕜
inst✝¹ : DecidableEq α
inst✝ : Fintype α
𝒜 : Finset (Finset α)
r : ℕ
hr : r ≠ 0
h𝒜 : Set.Sized r ↑𝒜
⊢ ↑𝒜.card / ↑((Fintype.card α).choose r) ≤ ↑(∂ 𝒜).card / ↑((Fintype.card α).choose (r - 1))
state_after: case inl
𝕜 : Type u_1
α : Type u_2
inst✝² : LinearOrderedField 𝕜
inst✝¹ : DecidableEq α
inst✝ : Fintype α
𝒜 : Finset (Finset α)
r : ℕ
hr : r ≠ 0
h𝒜 : Set.Sized r ↑𝒜
hr' : Fintype.card α < r
⊢ ↑𝒜.card / ↑((Fintype.card α).choose r) ≤ ↑(∂ 𝒜).card / ↑((Fintype.card α).choose (r - 1))

case inr
𝕜 : Type u_1
α : Type u_2
inst✝² : LinearOrderedField 𝕜
inst✝¹ : DecidableEq α
inst✝ : Fintype α
𝒜 : Finset (Finset α)
r : ℕ
hr : r ≠ 0
h𝒜 : Set.Sized r ↑𝒜
hr' : r ≤ Fintype.card α
⊢ ↑𝒜.card / ↑((Fintype.card α).choose r) ≤ ↑(∂ 𝒜).card / ↑((Fintype.card α).choose (r - 1))
tactic: obtain hr' | hr' := lt_or_le (Fintype.card α) r
state_before: case inr
𝕜 : Type u_1
α : Type u_2
inst✝² : LinearOrderedField 𝕜
inst✝¹ : DecidableEq α
inst✝ : Fintype α
𝒜 : Finset (Finset α)
r : ℕ
hr : r ≠ 0
h𝒜 : Set.Sized r ↑𝒜
hr' : r ≤ Fintype.card α
⊢ ↑𝒜.card / ↑((Fintype.card α).choose r) ≤ ↑(∂ 𝒜).card / ↑((Fintype.card α).choose (r - 1))
state_after: case inr
𝕜 : Type u_1
α : Type u_2
inst✝² : LinearOrderedField 𝕜
inst✝¹ : DecidableEq α
inst✝ : Fintype α
𝒜 : Finset (Finset α)
r : ℕ
hr : r ≠ 0
hr' : r ≤ Fintype.card α
h𝒜 : 𝒜.card * r ≤ (∂ 𝒜).card * (Fintype.card α - r + 1)
⊢ ↑𝒜.card / ↑((Fintype.card α).choose r) ≤ ↑(∂ 𝒜).card / ↑((Fintype.card α).choose (r - 1))
tactic: replace h𝒜 := card_mul_le_card_shadow_mul h𝒜
state_before: case inr
𝕜 : Type u_1
α : Type u_2
inst✝² : LinearOrderedField 𝕜
inst✝¹ : DecidableEq α
inst✝ : Fintype α
𝒜 : Finset (Finset α)
r : ℕ
hr : r ≠ 0
hr' : r ≤ Fintype.card α
h𝒜 : 𝒜.card * r ≤ (∂ 𝒜).card * (Fintype.card α - r + 1)
⊢ ↑𝒜.card / ↑((Fintype.card α).choose r) ≤ ↑(∂ 𝒜).card / ↑((Fintype.card α).choose (r - 1))
state_after: case inr
𝕜 : Type u_1
α : Type u_2
inst✝² : LinearOrderedField 𝕜
inst✝¹ : DecidableEq α
inst✝ : Fintype α
𝒜 : Finset (Finset α)
r : ℕ
hr : r ≠ 0
hr' : r ≤ Fintype.card α
h𝒜 : 𝒜.card * r ≤ (∂ 𝒜).card * (Fintype.card α - r + 1)
⊢ 𝒜.card * (Fintype.card α).choose (r - 1) ≤ (∂ 𝒜).card * (Fintype.card α).choose r

case inr.b0
𝕜 : Type u_1
α : Type u_2
inst✝² : LinearOrderedField 𝕜
inst✝¹ : DecidableEq α
inst✝ : Fintype α
𝒜 : Finset (Finset α)
r : ℕ
hr : r ≠ 0
hr' : r ≤ Fintype.card α
h𝒜 : 𝒜.card * r ≤ (∂ 𝒜).card * (Fintype.card α - r + 1)
⊢ 0 < (Fintype.card α).choose r

case inr.d0
𝕜 : Type u_1
α : Type u_2
inst✝² : LinearOrderedField 𝕜
inst✝¹ : DecidableEq α
inst✝ : Fintype α
𝒜 : Finset (Finset α)
r : ℕ
hr : r ≠ 0
hr' : r ≤ Fintype.card α
h𝒜 : 𝒜.card * r ≤ (∂ 𝒜).card * (Fintype.card α - r + 1)
⊢ 0 < (Fintype.card α).choose (r - 1)
tactic: rw [div_le_div_iff] <;> norm_cast
Theorem: zpow_nonneg
File: Mathlib/Algebra/Order/Field/Unbundled/Basic.lean

Proof steps:
state_before: α : Type u_1
inst✝⁴ : Semifield α
inst✝³ : LinearOrder α
inst✝² : PosMulReflectLT α
inst✝¹ : ZeroLEOneClass α
a b : α
inst✝ : PosMulMono α
ha : 0 ≤ a
n : ℕ
⊢ 0 ≤ a ^ ↑n
state_after: α : Type u_1
inst✝⁴ : Semifield α
inst✝³ : LinearOrder α
inst✝² : PosMulReflectLT α
inst✝¹ : ZeroLEOneClass α
a b : α
inst✝ : PosMulMono α
ha : 0 ≤ a
n : ℕ
⊢ 0 ≤ a ^ n
tactic: rw [zpow_natCast]
state_before: α : Type u_1
inst✝⁴ : Semifield α
inst✝³ : LinearOrder α
inst✝² : PosMulReflectLT α
inst✝¹ : ZeroLEOneClass α
a b : α
inst✝ : PosMulMono α
ha : 0 ≤ a
n : ℕ
⊢ 0 ≤ a ^ n
state_after: no goals
tactic: exact pow_nonneg ha _
state_before: α : Type u_1
inst✝⁴ : Semifield α
inst✝³ : LinearOrder α
inst✝² : PosMulReflectLT α
inst✝¹ : ZeroLEOneClass α
a b : α
inst✝ : PosMulMono α
ha : 0 ≤ a
n : ℕ
⊢ 0 ≤ a ^ (-↑(n + 1))
state_after: α : Type u_1
inst✝⁴ : Semifield α
inst✝³ : LinearOrder α
inst✝² : PosMulReflectLT α
inst✝¹ : ZeroLEOneClass α
a b : α
inst✝ : PosMulMono α
ha : 0 ≤ a
n : ℕ
⊢ 0 ≤ a ^ (n + 1)
tactic: rw [zpow_neg, inv_nonneg, zpow_natCast]
state_before: α : Type u_1
inst✝⁴ : Semifield α
inst✝³ : LinearOrder α
inst✝² : PosMulReflectLT α
inst✝¹ : ZeroLEOneClass α
a b : α
inst✝ : PosMulMono α
ha : 0 ≤ a
n : ℕ
⊢ 0 ≤ a ^ (n + 1)
state_after: no goals
tactic: exact pow_nonneg ha _
Theorem: Set.centralizer_eq_top_iff_subset
File: Mathlib/Algebra/Group/Center.lean

Proof steps:
state_before: M : Type u_1
S T : Set M
inst✝ : Semigroup M
a b : M
h : ⊤ ≤ S.centralizer
x✝¹ : M
hx : x✝¹ ∈ S
x✝ : M
⊢ x✝ * x✝¹ = x✝¹ * x✝
state_after: no goals
tactic: rw [h trivial _ hx]
Theorem: Composition.sizeUpTo_le
File: Mathlib/Combinatorics/Enumerative/Composition.lean

Proof steps:
state_before: n : ℕ
c : Composition n
i : ℕ
⊢ c.sizeUpTo i ≤ n
state_after: n : ℕ
c : Composition n
i : ℕ
⊢ c.sizeUpTo i ≤ (take i c.blocks).sum + (drop i c.blocks).sum
tactic: conv_rhs => rw [← c.blocks_sum, ← sum_take_add_sum_drop _ i]
state_before: n : ℕ
c : Composition n
i : ℕ
⊢ c.sizeUpTo i ≤ (take i c.blocks).sum + (drop i c.blocks).sum
state_after: no goals
tactic: exact Nat.le_add_right _ _
Theorem: ENat.sInf_eq_zero
File: Mathlib/Data/ENat/Lattice.lean

Proof steps:
state_before: ι : Sort u_1
f✝ : ι → ℕ
s✝ : Set ℕ
f : ι → ℕ∞
s : Set ℕ∞
⊢ sInf s = 0 ↔ 0 ∈ s
state_after: ι : Sort u_1
f✝ : ι → ℕ
s✝ : Set ℕ
f : ι → ℕ∞
s : Set ℕ∞
⊢ sInf s < 1 ↔ 0 ∈ s
tactic: rw [← lt_one_iff_eq_zero]
state_before: ι : Sort u_1
f✝ : ι → ℕ
s✝ : Set ℕ
f : ι → ℕ∞
s : Set ℕ∞
⊢ sInf s < 1 ↔ 0 ∈ s
state_after: no goals
tactic: simp only [sInf_lt_iff, lt_one_iff_eq_zero, exists_eq_right]
Theorem: MvPolynomial.eval_indicator_apply_eq_one
File: Mathlib/FieldTheory/Finite/Polynomial.lean

Proof steps:
state_before: K : Type u_1
σ : Type u_2
inst✝² : Fintype K
inst✝¹ : Fintype σ
inst✝ : CommRing K
a : σ → K
⊢ (eval a) (indicator a) = 1
state_after: K : Type u_1
σ : Type u_2
inst✝² : Fintype K
inst✝¹ : Fintype σ
inst✝ : CommRing K
a : σ → K
a✝ : Nontrivial K
⊢ (eval a) (indicator a) = 1
tactic: nontriviality
state_before: K : Type u_1
σ : Type u_2
inst✝² : Fintype K
inst✝¹ : Fintype σ
inst✝ : CommRing K
a : σ → K
a✝ : Nontrivial K
⊢ (eval a) (indicator a) = 1
state_after: K : Type u_1
σ : Type u_2
inst✝² : Fintype K
inst✝¹ : Fintype σ
inst✝ : CommRing K
a : σ → K
a✝ : Nontrivial K
this : 0 < Fintype.card K - 1
⊢ (eval a) (indicator a) = 1
tactic: have : 0 < Fintype.card K - 1 := tsub_pos_of_lt Fintype.one_lt_card
state_before: K : Type u_1
σ : Type u_2
inst✝² : Fintype K
inst✝¹ : Fintype σ
inst✝ : CommRing K
a : σ → K
a✝ : Nontrivial K
this : 0 < Fintype.card K - 1
⊢ (eval a) (indicator a) = 1
state_after: no goals
tactic: simp only [indicator, map_prod, map_sub, map_one, map_pow, eval_X, eval_C, sub_self,
    zero_pow this.ne', sub_zero, Finset.prod_const_one]
Theorem: AddMonoidHom.noncommPiCoprod_mrange
File: Mathlib/GroupTheory/NoncommPiCoprod.lean

Proof steps:
state_before: M : Type u_1
inst✝³ : Monoid M
ι : Type u_2
inst✝² : DecidableEq ι
inst✝¹ : Fintype ι
N : ι → Type u_3
inst✝ : (i : ι) → Monoid (N i)
ϕ : (i : ι) → N i →* M
hcomm : Pairwise fun i j => ∀ (x : N i) (y : N j), Commute ((ϕ i) x) ((ϕ j) y)
f g : (i : ι) → N i
⊢ mrange (noncommPiCoprod ϕ hcomm) = ⨆ i, mrange (ϕ i)
state_after: M : Type u_1
inst✝³ : Monoid M
ι : Type u_2
inst✝² : DecidableEq ι
inst✝¹ : Fintype ι
N : ι → Type u_3
inst✝ : (i : ι) → Monoid (N i)
ϕ : (i : ι) → N i →* M
hcomm : Pairwise fun i j => ∀ (x : N i) (y : N j), Commute ((ϕ i) x) ((ϕ j) y)
f g : (i : ι) → N i
this : DecidableEq ι := Classical.decEq ι
⊢ mrange (noncommPiCoprod ϕ hcomm) = ⨆ i, mrange (ϕ i)
tactic: letI := Classical.decEq ι
state_before: M : Type u_1
inst✝³ : Monoid M
ι : Type u_2
inst✝² : DecidableEq ι
inst✝¹ : Fintype ι
N : ι → Type u_3
inst✝ : (i : ι) → Monoid (N i)
ϕ : (i : ι) → N i →* M
hcomm : Pairwise fun i j => ∀ (x : N i) (y : N j), Commute ((ϕ i) x) ((ϕ j) y)
f g : (i : ι) → N i
this : DecidableEq ι := Classical.decEq ι
⊢ mrange (noncommPiCoprod ϕ hcomm) = ⨆ i, mrange (ϕ i)
state_after: case a
M : Type u_1
inst✝³ : Monoid M
ι : Type u_2
inst✝² : DecidableEq ι
inst✝¹ : Fintype ι
N : ι → Type u_3
inst✝ : (i : ι) → Monoid (N i)
ϕ : (i : ι) → N i →* M
hcomm : Pairwise fun i j => ∀ (x : N i) (y : N j), Commute ((ϕ i) x) ((ϕ j) y)
f g : (i : ι) → N i
this : DecidableEq ι := Classical.decEq ι
⊢ mrange (noncommPiCoprod ϕ hcomm) ≤ ⨆ i, mrange (ϕ i)

case a
M : Type u_1
inst✝³ : Monoid M
ι : Type u_2
inst✝² : DecidableEq ι
inst✝¹ : Fintype ι
N : ι → Type u_3
inst✝ : (i : ι) → Monoid (N i)
ϕ : (i : ι) → N i →* M
hcomm : Pairwise fun i j => ∀ (x : N i) (y : N j), Commute ((ϕ i) x) ((ϕ j) y)
f g : (i : ι) → N i
this : DecidableEq ι := Classical.decEq ι
⊢ ⨆ i, mrange (ϕ i) ≤ mrange (noncommPiCoprod ϕ hcomm)
tactic: apply le_antisymm
Theorem: nsmul_mem
File: Mathlib/Algebra/Group/Submonoid/Basic.lean

Proof steps:
state_before: M✝ : Type u_1
N : Type u_2
A✝ : Type u_3
inst✝⁴ : MulOneClass M✝
s : Set M✝
inst✝³ : AddZeroClass A✝
t : Set A✝
M : Type u_4
A : Type u_5
inst✝² : Monoid M
inst✝¹ : SetLike A M
inst✝ : SubmonoidClass A M
S : A
x : M
hx : x ∈ S
⊢ x ^ 0 ∈ S
state_after: M✝ : Type u_1
N : Type u_2
A✝ : Type u_3
inst✝⁴ : MulOneClass M✝
s : Set M✝
inst✝³ : AddZeroClass A✝
t : Set A✝
M : Type u_4
A : Type u_5
inst✝² : Monoid M
inst✝¹ : SetLike A M
inst✝ : SubmonoidClass A M
S : A
x : M
hx : x ∈ S
⊢ 1 ∈ S
tactic: rw [pow_zero]
state_before: M✝ : Type u_1
N : Type u_2
A✝ : Type u_3
inst✝⁴ : MulOneClass M✝
s : Set M✝
inst✝³ : AddZeroClass A✝
t : Set A✝
M : Type u_4
A : Type u_5
inst✝² : Monoid M
inst✝¹ : SetLike A M
inst✝ : SubmonoidClass A M
S : A
x : M
hx : x ∈ S
⊢ 1 ∈ S
state_after: no goals
tactic: exact OneMemClass.one_mem S
state_before: M✝ : Type u_1
N : Type u_2
A✝ : Type u_3
inst✝⁴ : MulOneClass M✝
s : Set M✝
inst✝³ : AddZeroClass A✝
t : Set A✝
M : Type u_4
A : Type u_5
inst✝² : Monoid M
inst✝¹ : SetLike A M
inst✝ : SubmonoidClass A M
S : A
x : M
hx : x ∈ S
n : ℕ
⊢ x ^ (n + 1) ∈ S
state_after: M✝ : Type u_1
N : Type u_2
A✝ : Type u_3
inst✝⁴ : MulOneClass M✝
s : Set M✝
inst✝³ : AddZeroClass A✝
t : Set A✝
M : Type u_4
A : Type u_5
inst✝² : Monoid M
inst✝¹ : SetLike A M
inst✝ : SubmonoidClass A M
S : A
x : M
hx : x ∈ S
n : ℕ
⊢ x ^ n * x ∈ S
tactic: rw [pow_succ]
state_before: M✝ : Type u_1
N : Type u_2
A✝ : Type u_3
inst✝⁴ : MulOneClass M✝
s : Set M✝
inst✝³ : AddZeroClass A✝
t : Set A✝
M : Type u_4
A : Type u_5
inst✝² : Monoid M
inst✝¹ : SetLike A M
inst✝ : SubmonoidClass A M
S : A
x : M
hx : x ∈ S
n : ℕ
⊢ x ^ n * x ∈ S
state_after: no goals
tactic: exact mul_mem (pow_mem hx n) hx
Theorem: HasSum.map
File: Mathlib/Topology/Algebra/InfiniteSum/Basic.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝⁵ : CommMonoid α
inst✝⁴ : TopologicalSpace α
f g✝ : β → α
a b : α
s : Finset β
inst✝³ : CommMonoid γ
inst✝² : TopologicalSpace γ
hf : HasProd f a
G : Type u_5
inst✝¹ : FunLike G α γ
inst✝ : MonoidHomClass G α γ
g : G
hg : Continuous ⇑g
⊢ HasProd (⇑g ∘ f) (g a)
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝⁵ : CommMonoid α
inst✝⁴ : TopologicalSpace α
f g✝ : β → α
a b : α
s : Finset β
inst✝³ : CommMonoid γ
inst✝² : TopologicalSpace γ
hf : HasProd f a
G : Type u_5
inst✝¹ : FunLike G α γ
inst✝ : MonoidHomClass G α γ
g : G
hg : Continuous ⇑g
this : (⇑g ∘ fun s => ∏ b ∈ s, f b) = fun s => ∏ b ∈ s, (⇑g ∘ f) b
⊢ HasProd (⇑g ∘ f) (g a)
tactic: have : (g ∘ fun s : Finset β ↦ ∏ b ∈ s, f b) = fun s : Finset β ↦ ∏ b ∈ s, (g ∘ f) b :=
    funext <| map_prod g _
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝⁵ : CommMonoid α
inst✝⁴ : TopologicalSpace α
f g✝ : β → α
a b : α
s : Finset β
inst✝³ : CommMonoid γ
inst✝² : TopologicalSpace γ
hf : HasProd f a
G : Type u_5
inst✝¹ : FunLike G α γ
inst✝ : MonoidHomClass G α γ
g : G
hg : Continuous ⇑g
this : (⇑g ∘ fun s => ∏ b ∈ s, f b) = fun s => ∏ b ∈ s, (⇑g ∘ f) b
⊢ HasProd (⇑g ∘ f) (g a)
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝⁵ : CommMonoid α
inst✝⁴ : TopologicalSpace α
f g✝ : β → α
a b : α
s : Finset β
inst✝³ : CommMonoid γ
inst✝² : TopologicalSpace γ
hf : HasProd f a
G : Type u_5
inst✝¹ : FunLike G α γ
inst✝ : MonoidHomClass G α γ
g : G
hg : Continuous ⇑g
this : (⇑g ∘ fun s => ∏ b ∈ s, f b) = fun s => ∏ b ∈ s, (⇑g ∘ f) b
⊢ Tendsto (fun s => ∏ b ∈ s, (⇑g ∘ f) b) atTop (𝓝 (g a))
tactic: unfold HasProd
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝⁵ : CommMonoid α
inst✝⁴ : TopologicalSpace α
f g✝ : β → α
a b : α
s : Finset β
inst✝³ : CommMonoid γ
inst✝² : TopologicalSpace γ
hf : HasProd f a
G : Type u_5
inst✝¹ : FunLike G α γ
inst✝ : MonoidHomClass G α γ
g : G
hg : Continuous ⇑g
this : (⇑g ∘ fun s => ∏ b ∈ s, f b) = fun s => ∏ b ∈ s, (⇑g ∘ f) b
⊢ Tendsto (fun s => ∏ b ∈ s, (⇑g ∘ f) b) atTop (𝓝 (g a))
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝⁵ : CommMonoid α
inst✝⁴ : TopologicalSpace α
f g✝ : β → α
a b : α
s : Finset β
inst✝³ : CommMonoid γ
inst✝² : TopologicalSpace γ
hf : HasProd f a
G : Type u_5
inst✝¹ : FunLike G α γ
inst✝ : MonoidHomClass G α γ
g : G
hg : Continuous ⇑g
this : (⇑g ∘ fun s => ∏ b ∈ s, f b) = fun s => ∏ b ∈ s, (⇑g ∘ f) b
⊢ Tendsto (⇑g ∘ fun s => ∏ b ∈ s, f b) atTop (𝓝 (g a))
tactic: rw [← this]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝⁵ : CommMonoid α
inst✝⁴ : TopologicalSpace α
f g✝ : β → α
a b : α
s : Finset β
inst✝³ : CommMonoid γ
inst✝² : TopologicalSpace γ
hf : HasProd f a
G : Type u_5
inst✝¹ : FunLike G α γ
inst✝ : MonoidHomClass G α γ
g : G
hg : Continuous ⇑g
this : (⇑g ∘ fun s => ∏ b ∈ s, f b) = fun s => ∏ b ∈ s, (⇑g ∘ f) b
⊢ Tendsto (⇑g ∘ fun s => ∏ b ∈ s, f b) atTop (𝓝 (g a))
state_after: no goals
tactic: exact (hg.tendsto a).comp hf
Theorem: SimpleGraph.edgeFinset_sdiff
File: Mathlib/Combinatorics/SimpleGraph/Finite.lean

Proof steps:
state_before: V : Type u_1
G : SimpleGraph V
e : Sym2 V
G₁ G₂ : SimpleGraph V
inst✝³ : Fintype ↑G.edgeSet
inst✝² : Fintype ↑G₁.edgeSet
inst✝¹ : Fintype ↑G₂.edgeSet
inst✝ : DecidableEq V
⊢ (G₁ \ G₂).edgeFinset = G₁.edgeFinset \ G₂.edgeFinset
state_after: no goals
tactic: simp [edgeFinset]
Theorem: Equiv.piOptionEquivProd_apply
File: Mathlib/Logic/Equiv/Basic.lean

Proof steps:
state_before: α : Type ?u.18869
β : Option α → Type u_1
f : (a : Option α) → β a
a : Option α
⊢ (fun x a => Option.casesOn a x.1 x.2) ((fun f => (f none, fun a => f (some a))) f) a = f a
state_after: no goals
tactic: cases a <;> rfl
state_before: α : Type ?u.18869
β : Option α → Type u_1
x : β none × ((a : α) → β (some a))
⊢ (fun f => (f none, fun a => f (some a))) ((fun x a => Option.casesOn a x.1 x.2) x) = x
state_after: no goals
tactic: simp
Theorem: Real.ball_eq_Ioo
File: Mathlib/Topology/MetricSpace/Pseudo/Defs.lean

Proof steps:
state_before: α : Type u
β : Type v
X : Type u_1
ι : Type u_2
inst✝ : PseudoMetricSpace α
x r y : ℝ
⊢ y ∈ ball x r ↔ y ∈ Ioo (x - r) (x + r)
state_after: no goals
tactic: rw [mem_ball, dist_comm, Real.dist_eq, abs_sub_lt_iff, mem_Ioo, ← sub_lt_iff_lt_add',
      sub_lt_comm]
Theorem: Filter.EventuallyEq.eventuallyConst_iff
File: Mathlib/Order/Filter/EventuallyConst.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
l : Filter α
f g : α → β
h : f =ᶠ[l] g
⊢ EventuallyConst f l ↔ EventuallyConst g l
state_after: no goals
tactic: simp only [EventuallyConst, map_congr h]
Theorem: Finset.Ico_add_Ioc_subset
File: Mathlib/Data/Finset/Pointwise/Interval.lean

Proof steps:
state_before: α : Type u_1
inst✝⁵ : Mul α
inst✝⁴ : PartialOrder α
inst✝³ : DecidableEq α
inst✝² : CovariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x < x_1
inst✝¹ : CovariantClass α α (Function.swap HMul.hMul) LT.lt
inst✝ : LocallyFiniteOrder α
a b c d : α
⊢ ↑(Ico a b * Ioc c d) ⊆ ↑(Ioo (a * c) (b * d))
state_after: no goals
tactic: simpa using Set.Ico_mul_Ioc_subset' _ _ _ _
Theorem: AffineSubspace.parallel_bot_iff_eq_bot
File: Mathlib/LinearAlgebra/AffineSpace/AffineSubspace.lean

Proof steps:
state_before: k : Type u_1
V : Type u_2
P : Type u_3
inst✝³ : Ring k
inst✝² : AddCommGroup V
inst✝¹ : Module k V
inst✝ : AffineSpace V P
s : AffineSubspace k P
⊢ s ∥ ⊥ ↔ s = ⊥
state_after: k : Type u_1
V : Type u_2
P : Type u_3
inst✝³ : Ring k
inst✝² : AddCommGroup V
inst✝¹ : Module k V
inst✝ : AffineSpace V P
s : AffineSubspace k P
h : s ∥ ⊥
⊢ s = ⊥
tactic: refine ⟨fun h => ?_, fun h => h ▸ Parallel.refl _⟩
state_before: k : Type u_1
V : Type u_2
P : Type u_3
inst✝³ : Ring k
inst✝² : AddCommGroup V
inst✝¹ : Module k V
inst✝ : AffineSpace V P
s : AffineSubspace k P
h : s ∥ ⊥
⊢ s = ⊥
state_after: case intro
k : Type u_1
V : Type u_2
P : Type u_3
inst✝³ : Ring k
inst✝² : AddCommGroup V
inst✝¹ : Module k V
inst✝ : AffineSpace V P
s : AffineSubspace k P
v : V
h : ⊥ = map (↑(constVAdd k P v)) s
⊢ s = ⊥
tactic: rcases h with ⟨v, h⟩
state_before: case intro
k : Type u_1
V : Type u_2
P : Type u_3
inst✝³ : Ring k
inst✝² : AddCommGroup V
inst✝¹ : Module k V
inst✝ : AffineSpace V P
s : AffineSubspace k P
v : V
h : ⊥ = map (↑(constVAdd k P v)) s
⊢ s = ⊥
state_after: no goals
tactic: rwa [eq_comm, map_eq_bot_iff] at h
Theorem: Polynomial.content_one
File: Mathlib/RingTheory/Polynomial/Content.lean

Proof steps:
state_before: R : Type u_1
inst✝² : CommRing R
inst✝¹ : IsDomain R
inst✝ : NormalizedGCDMonoid R
⊢ content 1 = 1
state_after: no goals
tactic: rw [← C_1, content_C, normalize_one]