tasksource/leandojo huggingface dataset:
Theorem: polynomialFunctions_separatesPoints
File: Mathlib/Topology/ContinuousFunction/Polynomial.lean

tactic: refine' ⟨_, ⟨⟨_, ⟨⟨Polynomial.X, ⟨Algebra.mem_top, rfl⟩⟩, rfl⟩⟩, _⟩⟩
state_before: R : Type u_1
inst✝² : CommSemiring R
inst✝¹ : TopologicalSpace R
inst✝ : TopologicalSemiring R
X : Set R
x y : ↑X
h : x ≠ y
⊢ ∃ f, f ∈ (fun f => ↑f) '' ↑(polynomialFunctions X) ∧ f x ≠ f y

tactic: dsimp
state_before: R : Type u_1
inst✝² : CommSemiring R
inst✝¹ : TopologicalSpace R
inst✝ : TopologicalSemiring R
X : Set R
x y : ↑X
h : x ≠ y
⊢ (fun f => ↑f) (↑↑(toContinuousMapOnAlgHom X) Polynomial.X) x ≠
    (fun f => ↑f) (↑↑(toContinuousMapOnAlgHom X) Polynomial.X) y

tactic: simp only [Polynomial.eval_X]
state_before: R : Type u_1
inst✝² : CommSemiring R
inst✝¹ : TopologicalSpace R
inst✝ : TopologicalSemiring R
X : Set R
x y : ↑X
h : x ≠ y
⊢ ¬eval (↑x) Polynomial.X = eval (↑y) Polynomial.X

tactic: exact fun h' => h (Subtype.ext h')
state_before: R : Type u_1
inst✝² : CommSemiring R
inst✝¹ : TopologicalSpace R
inst✝ : TopologicalSemiring R
X : Set R
x y : ↑X
h : x ≠ y
⊢ ¬↑x = ↑y
Theorem: Measurable.ennreal_tsum'
File: Mathlib/MeasureTheory/Constructions/BorelSpace/Basic.lean

tactic: convert Measurable.ennreal_tsum h with x
state_before: α : Type u_2
β : Type ?u.2920454
γ : Type ?u.2920457
γ₂ : Type ?u.2920460
δ : Type ?u.2920463
ι✝ : Sort y
s t u : Set α
inst✝¹ : MeasurableSpace α
ι : Type u_1
inst✝ : Countable ι
f : ι → α → ℝ≥0∞
h : ∀ (i : ι), Measurable (f i)
⊢ Measurable (∑' (i : ι), f i)

tactic: exact tsum_apply (Pi.summable.2 fun _ => ENNReal.summable)
state_before: case h.e'_5.h
α : Type u_2
β : Type ?u.2920454
γ : Type ?u.2920457
γ₂ : Type ?u.2920460
δ : Type ?u.2920463
ι✝ : Sort y
s t u : Set α
inst✝¹ : MeasurableSpace α
ι : Type u_1
inst✝ : Countable ι
f : ι → α → ℝ≥0∞
h : ∀ (i : ι), Measurable (f i)
x : α
⊢ tsum (fun i => f i) x = ∑' (i : ι), f i x
Theorem: abs_circleMap_zero
File: Mathlib/MeasureTheory/Integral/CircleIntegral.lean

tactic: simp [circleMap]
state_before: E : Type ?u.5687
inst✝ : NormedAddCommGroup E
R θ : ℝ
⊢ ↑Complex.abs (circleMap 0 R θ) = Abs.abs R
Theorem: Sum.elim_one_mulSingle
File: Mathlib/Data/Pi/Algebra.lean

tactic: simp only [Pi.mulSingle, Sum.elim_update_right, elim_one_one]
state_before: I : Type u
α : Type u_1
β : Type u_2
γ : Type u_3
f : I → Type v₁
g : I → Type v₂
h : I → Type v₃
x y : (i : I) → f i
i✝ : I
a a' : α → γ
b b' : β → γ
inst✝² : DecidableEq α
inst✝¹ : DecidableEq β
inst✝ : One γ
i : β
c : γ
⊢ Sum.elim 1 (Pi.mulSingle i c) = Pi.mulSingle (inr i) c
Theorem: Bool.false_eq_true_eq_False
File: Mathlib/Init/Data/Bool/Lemmas.lean

tactic: decide
state_before: ⊢ ¬false = true
Theorem: CategoryTheory.MonoidalCategory.leftUnitor_inv_naturality
File: Mathlib/CategoryTheory/Monoidal/Category.lean

tactic: simp
state_before: C✝ : Type u
𝒞 : Category C✝
inst✝² : MonoidalCategory C✝
C : Type u
inst✝¹ : Category C
inst✝ : MonoidalCategory C
U V W X✝ Y Z X X' : C
f : X ⟶ X'
⊢ f ≫ (λ_ X').inv = (λ_ X).inv ≫ (𝟙 tensorUnit' ⊗ f)
Theorem: MvPolynomial.degrees_def
File: Mathlib/Data/MvPolynomial/Variables.lean

tactic: rw [degrees]
state_before: R : Type u
S : Type v
σ : Type u_1
τ : Type ?u.655
r : R
e : ℕ
n m : σ
s : σ →₀ ℕ
inst✝¹ : CommSemiring R
p✝ q : MvPolynomial σ R
inst✝ : DecidableEq σ
p : MvPolynomial σ R
⊢ degrees p = Finset.sup (support p) fun s => ↑toMultiset s

tactic: convert rfl
state_before: R : Type u
S : Type v
σ : Type u_1
τ : Type ?u.655
r : R
e : ℕ
n m : σ
s : σ →₀ ℕ
inst✝¹ : CommSemiring R
p✝ q : MvPolynomial σ R
inst✝ : DecidableEq σ
p : MvPolynomial σ R
⊢ (Finset.sup (support p) fun s => ↑toMultiset s) = Finset.sup (support p) fun s => ↑toMultiset s
Theorem: Finset.Nat.prod_antidiagonal_swap
File: Mathlib/Algebra/BigOperators/NatAntidiagonal.lean

tactic: conv_lhs => rw [← map_swap_antidiagonal, Finset.prod_map]
state_before: M : Type u_1
N : Type ?u.4624
inst✝¹ : CommMonoid M
inst✝ : AddCommMonoid N
n : ℕ
f : ℕ × ℕ → M
⊢ ∏ p in antidiagonal n, f (Prod.swap p) = ∏ p in antidiagonal n, f p
Theorem: injective_iff_map_eq_one
File: Mathlib/Algebra/Hom/Group.lean

tactic: rw [map_mul, hxy, ← map_mul, mul_inv_self, map_one]
state_before: α : Type ?u.229687
β : Type ?u.229690
M : Type ?u.229693
N : Type ?u.229696
P : Type ?u.229699
G✝ : Type ?u.229702
H✝ : Type ?u.229705
F : Type u_3
inst✝⁴ : Group G✝
inst✝³ : CommGroup H✝
G : Type u_1
H : Type u_2
inst✝² : Group G
inst✝¹ : MulOneClass H
inst✝ : MonoidHomClass F G H
f : F
h : ∀ (a : G), ↑f a = 1 → a = 1
x y : G
hxy : ↑f x = ↑f y
⊢ ↑f (x * y⁻¹) = 1
Theorem: Equiv.Perm.IsThreeCycle.isThreeCycle_sq
File: Mathlib/GroupTheory/Perm/Cycle/Type.lean

tactic: rw [← pow_two, ← card_support_eq_three_iff, support_pow_coprime, ht.card_support]
state_before: α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
σ g : Perm α
ht : IsThreeCycle g
⊢ IsThreeCycle (g * g)

tactic: rw [ht.orderOf]
state_before: α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
σ g : Perm α
ht : IsThreeCycle g
⊢ Nat.coprime 2 (_root_.orderOf g)

tactic: norm_num
state_before: α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
σ g : Perm α
ht : IsThreeCycle g
⊢ Nat.coprime 2 3
Theorem: HahnSeries.ofPowerSeries_apply_coeff
File: Mathlib/RingTheory/HahnSeries.lean

tactic: simp [ofPowerSeries_apply]
state_before: Γ : Type u_2
R : Type u_1
inst✝¹ : Semiring R
inst✝ : StrictOrderedSemiring Γ
x : PowerSeries R
n : ℕ
⊢ coeff (↑(ofPowerSeries Γ R) x) ↑n = ↑(PowerSeries.coeff R n) x
Theorem: Basis.ext_multilinear
File: Mathlib/LinearAlgebra/Multilinear/Basis.lean

tactic: cases nonempty_fintype ι
state_before: R : Type u_2
ι : Type u_1
n : ℕ
M : Fin n → Type ?u.28551
M₂ : Type u_3
M₃ : Type u_4
inst✝⁷ : CommSemiring R
inst✝⁶ : AddCommMonoid M₂
inst✝⁵ : AddCommMonoid M₃
inst✝⁴ : (i : Fin n) → AddCommMonoid (M i)
inst✝³ : (i : Fin n) → Module R (M i)
inst✝² : Module R M₂
inst✝¹ : Module R M₃
inst✝ : Finite ι
f g : MultilinearMap R (fun x => M₂) M₃
ι₁ : Type u_5
e : Basis ι₁ R M₂
h : ∀ (v : ι → ι₁), (↑f fun i => ↑e (v i)) = ↑g fun i => ↑e (v i)
⊢ f = g

tactic: exact
  (domDomCongr_eq_iff (Fintype.equivFin ι) f g).mp
    (Basis.ext_multilinear_fin (fun _ => e) fun i => h (i ∘ _))
state_before: case intro
R : Type u_2
ι : Type u_1
n : ℕ
M : Fin n → Type ?u.28551
M₂ : Type u_3
M₃ : Type u_4
inst✝⁷ : CommSemiring R
inst✝⁶ : AddCommMonoid M₂
inst✝⁵ : AddCommMonoid M₃
inst✝⁴ : (i : Fin n) → AddCommMonoid (M i)
inst✝³ : (i : Fin n) → Module R (M i)
inst✝² : Module R M₂
inst✝¹ : Module R M₃
inst✝ : Finite ι
f g : MultilinearMap R (fun x => M₂) M₃
ι₁ : Type u_5
e : Basis ι₁ R M₂
h : ∀ (v : ι → ι₁), (↑f fun i => ↑e (v i)) = ↑g fun i => ↑e (v i)
val✝ : Fintype ι
⊢ f = g
Theorem: Ordnode.splitMin_eq
File: Mathlib/Data/Ordmap/Ordset.lean

tactic: rw [splitMin', splitMin_eq ls ll lx lr, findMin', eraseMin]
state_before: α : Type u_1
x✝ ls : ℕ
ll : Ordnode α
lx : α
lr : Ordnode α
x : α
r : Ordnode α
⊢ splitMin' (node ls ll lx lr) x r = (findMin' (node ls ll lx lr) x, eraseMin (node x✝ (node ls ll lx lr) x r))
Theorem: IsLUB.frequently_mem
File: Mathlib/Topology/Order/Basic.lean

tactic: rcases hs with ⟨a', ha'⟩
state_before: α : Type u
β : Type v
γ : Type w
inst✝⁵ : TopologicalSpace α
inst✝⁴ : TopologicalSpace β
inst✝³ : LinearOrder α
inst✝² : LinearOrder β
inst✝¹ : OrderTopology α
inst✝ : OrderTopology β
a : α
s : Set α
ha : IsLUB s a
hs : Set.Nonempty s
⊢ ∃ᶠ (x : α) in 𝓝[Iic a] a, x ∈ s

tactic: intro h
state_before: case intro
α : Type u
β : Type v
γ : Type w
inst✝⁵ : TopologicalSpace α
inst✝⁴ : TopologicalSpace β
inst✝³ : LinearOrder α
inst✝² : LinearOrder β
inst✝¹ : OrderTopology α
inst✝ : OrderTopology β
a : α
s : Set α
ha : IsLUB s a
a' : α
ha' : a' ∈ s
⊢ ∃ᶠ (x : α) in 𝓝[Iic a] a, x ∈ s

tactic: rcases(ha.1 ha').eq_or_lt with (rfl | ha'a)
state_before: case intro
α : Type u
β : Type v
γ : Type w
inst✝⁵ : TopologicalSpace α
inst✝⁴ : TopologicalSpace β
inst✝³ : LinearOrder α
inst✝² : LinearOrder β
inst✝¹ : OrderTopology α
inst✝ : OrderTopology β
a : α
s : Set α
ha : IsLUB s a
a' : α
ha' : a' ∈ s
h : ∀ᶠ (x : α) in 𝓝[Iic a] a, ¬(fun x => x ∈ s) x
⊢ False

tactic: exact h.self_of_nhdsWithin le_rfl ha'
state_before: case intro.inl
α : Type u
β : Type v
γ : Type w
inst✝⁵ : TopologicalSpace α
inst✝⁴ : TopologicalSpace β
inst✝³ : LinearOrder α
inst✝² : LinearOrder β
inst✝¹ : OrderTopology α
inst✝ : OrderTopology β
s : Set α
a' : α
ha' : a' ∈ s
ha : IsLUB s a'
h : ∀ᶠ (x : α) in 𝓝[Iic a'] a', ¬(fun x => x ∈ s) x
⊢ False

tactic: rcases (mem_nhdsWithin_Iic_iff_exists_Ioc_subset' ha'a).1 h with ⟨b, hba, hb⟩
state_before: case intro.inr
α : Type u
β : Type v
γ : Type w
inst✝⁵ : TopologicalSpace α
inst✝⁴ : TopologicalSpace β
inst✝³ : LinearOrder α
inst✝² : LinearOrder β
inst✝¹ : OrderTopology α
inst✝ : OrderTopology β
a : α
s : Set α
ha : IsLUB s a
a' : α
ha' : a' ∈ s
h : ∀ᶠ (x : α) in 𝓝[Iic a] a, ¬(fun x => x ∈ s) x
ha'a : a' < a
⊢ False

tactic: rcases ha.exists_between hba with ⟨b', hb's, hb'⟩
state_before: case intro.inr.intro.intro
α : Type u
β : Type v
γ : Type w
inst✝⁵ : TopologicalSpace α
inst✝⁴ : TopologicalSpace β
inst✝³ : LinearOrder α
inst✝² : LinearOrder β
inst✝¹ : OrderTopology α
inst✝ : OrderTopology β
a : α
s : Set α
ha : IsLUB s a
a' : α
ha' : a' ∈ s
h : ∀ᶠ (x : α) in 𝓝[Iic a] a, ¬(fun x => x ∈ s) x
ha'a : a' < a
b : α
hba : b ∈ Iio a
hb : Ioc b a ⊆ {x | (fun x => ¬(fun x => x ∈ s) x) x}
⊢ False

tactic: exact hb hb' hb's
state_before: case intro.inr.intro.intro.intro.intro
α : Type u
β : Type v
γ : Type w
inst✝⁵ : TopologicalSpace α
inst✝⁴ : TopologicalSpace β
inst✝³ : LinearOrder α
inst✝² : LinearOrder β
inst✝¹ : OrderTopology α
inst✝ : OrderTopology β
a : α
s : Set α
ha : IsLUB s a
a' : α
ha' : a' ∈ s
h : ∀ᶠ (x : α) in 𝓝[Iic a] a, ¬(fun x => x ∈ s) x
ha'a : a' < a
b : α
hba : b ∈ Iio a
hb : Ioc b a ⊆ {x | (fun x => ¬(fun x => x ∈ s) x) x}
b' : α
hb's : b' ∈ s
hb' : b < b' ∧ b' ≤ a
⊢ False
Theorem: one_div_div
File: Mathlib/Algebra/Group/Basic.lean

tactic: simp
state_before: α : Type u_1
β : Type ?u.25306
G : Type ?u.25309
inst✝ : DivisionMonoid α
a b c : α
⊢ 1 / (a / b) = b / a
Theorem: NormedAddGroupHom.ker_le_ker_completion
File: Mathlib/Analysis/Normed/Group/HomCompletion.lean

tactic: rintro _ ⟨⟨g, h₀ : f g = 0⟩, rfl⟩
state_before: G : Type u_1
inst✝² : SeminormedAddCommGroup G
H : Type u_2
inst✝¹ : SeminormedAddCommGroup H
K : Type ?u.15971
inst✝ : SeminormedAddCommGroup K
f : NormedAddGroupHom G H
⊢ range (NormedAddGroupHom.comp toCompl (incl (ker f))) ≤ ker (completion f)

tactic: simp [h₀, mem_ker, Completion.coe_zero]
state_before: case intro.mk
G : Type u_1
inst✝² : SeminormedAddCommGroup G
H : Type u_2
inst✝¹ : SeminormedAddCommGroup H
K : Type ?u.15971
inst✝ : SeminormedAddCommGroup K
f : NormedAddGroupHom G H
g : G
h₀ : ↑f g = 0
⊢ ↑(toAddMonoidHom (NormedAddGroupHom.comp toCompl (incl (ker f)))) { val := g, property := h₀ } ∈ ker (completion f)
Theorem: SimplexCategory.factorThruImage_eq
File: Mathlib/AlgebraicTopology/SimplexCategory.lean

tactic: rw [← cancel_mono i, fac, ← image_ι_eq fac, image.fac]
state_before: Δ Δ'' : SimplexCategory
φ : Δ ⟶ Δ''
e : Δ ⟶ image φ
inst✝¹ : Epi e
i : image φ ⟶ Δ''
inst✝ : Mono i
fac : e ≫ i = φ
⊢ factorThruImage φ = e
Theorem: dist_div_right
File: Mathlib/Topology/MetricSpace/IsometricSMul.lean

tactic: simp only [div_eq_mul_inv, dist_mul_right]
state_before: M : Type u
G : Type v
X : Type w
inst✝² : DivInvMonoid M
inst✝¹ : PseudoMetricSpace M
inst✝ : IsometricSMul Mᵐᵒᵖ M
a b c : M
⊢ dist (a / c) (b / c) = dist a b
Theorem: Polynomial.leadingCoeff_monomial
File: Mathlib/Data/Polynomial/Degree/Definitions.lean

tactic: by_cases ha : a = 0
state_before: R : Type u
S : Type v
a✝ b c d : R
n✝ m : ℕ
inst✝ : Semiring R
p q : R[X]
ι : Type ?u.601563
a : R
n : ℕ
⊢ leadingCoeff (↑(monomial n) a) = a

tactic: simp only [ha, (monomial n).map_zero, leadingCoeff_zero]
state_before: case pos
R : Type u
S : Type v
a✝ b c d : R
n✝ m : ℕ
inst✝ : Semiring R
p q : R[X]
ι : Type ?u.601563
a : R
n : ℕ
ha : a = 0
⊢ leadingCoeff (↑(monomial n) a) = a

tactic: rw [leadingCoeff, natDegree_monomial, if_neg ha, coeff_monomial]
state_before: case neg
R : Type u
S : Type v
a✝ b c d : R
n✝ m : ℕ
inst✝ : Semiring R
p q : R[X]
ι : Type ?u.601563
a : R
n : ℕ
ha : ¬a = 0
⊢ leadingCoeff (↑(monomial n) a) = a

tactic: simp
state_before: case neg
R : Type u
S : Type v
a✝ b c d : R
n✝ m : ℕ
inst✝ : Semiring R
p q : R[X]
ι : Type ?u.601563
a : R
n : ℕ
ha : ¬a = 0
⊢ (if n = n then a else 0) = a
Theorem: irrational_sqrt_of_multiplicity_odd
File: Mathlib/Data/Real/Irrational.lean

tactic: rw [Hpv]
state_before: m : ℤ
hm : 0 < m
p : ℕ
hp : Fact (Nat.Prime p)
Hpv : Part.get (multiplicity (↑p) m) (_ : multiplicity.Finite (↑p) m) % 2 = 1
⊢ Part.get (multiplicity (↑p) m) (_ : multiplicity.Finite (↑p) m) % 2 ≠ 0

tactic: exact one_ne_zero
state_before: m : ℤ
hm : 0 < m
p : ℕ
hp : Fact (Nat.Prime p)
Hpv : Part.get (multiplicity (↑p) m) (_ : multiplicity.Finite (↑p) m) % 2 = 1
⊢ 1 ≠ 0
Theorem: CategoryTheory.Bicategory.whiskerRight_id_symm
File: Mathlib/CategoryTheory/Bicategory/Basic.lean

tactic: simp
state_before: B : Type u
inst✝ : Bicategory B
a b c d e : B
f g : a ⟶ b
η : f ⟶ g
⊢ η = (ρ_ f).inv ≫ η ▷ 𝟙 b ≫ (ρ_ g).hom
Theorem: Finset.union_erase_of_mem
File: Mathlib/Data/Finset/Basic.lean

tactic: rw [← insert_erase (mem_union_left t ha), erase_union_distrib, ← insert_union, insert_erase ha]
state_before: α : Type u_1
β : Type ?u.265932
γ : Type ?u.265935
inst✝ : DecidableEq α
s t✝ u v : Finset α
a b : α
ha : a ∈ s
t : Finset α
⊢ s ∪ erase t a = s ∪ t
Theorem: Real.cos_sq_le_one
File: Mathlib/Data/Complex/Exponential.lean

tactic: rw [← sin_sq_add_cos_sq x]
state_before: x y : ℝ
⊢ cos x ^ 2 ≤ 1

tactic: exact le_add_of_nonneg_left (sq_nonneg _)
state_before: x y : ℝ
⊢ cos x ^ 2 ≤ sin x ^ 2 + cos x ^ 2
Theorem: Complex.abs_exp_eq_iff_re_eq
File: Mathlib/Data/Complex/Exponential.lean

tactic: rw [abs_exp, abs_exp, Real.exp_eq_exp]
state_before: x y : ℂ
⊢ ↑abs (exp x) = ↑abs (exp y) ↔ x.re = y.re
Theorem: Nat.add_mod_add_of_le_add_mod
File: Mathlib/Data/Nat/ModEq.lean

tactic: rw [← add_mod_add_ite, if_pos hc]
state_before: m n a✝ b✝ c✝ d a b c : ℕ
hc : c ≤ a % c + b % c
⊢ (a + b) % c + c = a % c + b % c
Theorem: isLittleO_pow_pow_of_abs_lt_left
File: Mathlib/Analysis/SpecificLimits/Normed.lean

tactic: refine' (IsLittleO.of_norm_left _).of_norm_right
state_before: α : Type ?u.72372
β : Type ?u.72375
ι : Type ?u.72378
r₁ r₂ : ℝ
h : abs r₁ < abs r₂
⊢ (fun n => r₁ ^ n) =o[atTop] fun n => r₂ ^ n

tactic: exact (isLittleO_pow_pow_of_lt_left (abs_nonneg r₁) h).congr (pow_abs r₁) (pow_abs r₂)
state_before: α : Type ?u.72372
β : Type ?u.72375
ι : Type ?u.72378
r₁ r₂ : ℝ
h : abs r₁ < abs r₂
⊢ (fun x => ‖r₁ ^ x‖) =o[atTop] fun x => ‖r₂ ^ x‖
Theorem: Semiquot.blur_eq_blur'
File: Mathlib/Data/Semiquot.lean

tactic: unfold blur
state_before: α : Type u_1
β : Type ?u.2311
q : Semiquot α
s : Set α
h : q.s ⊆ s
⊢ blur s q = blur' q h

tactic: congr
state_before: α : Type u_1
β : Type ?u.2311
q : Semiquot α
s : Set α
h : q.s ⊆ s
⊢ blur' q (_ : q.s ⊆ s ∪ q.s) = blur' q h

tactic: exact Set.union_eq_self_of_subset_right h
state_before: case e_s
α : Type u_1
β : Type ?u.2311
q : Semiquot α
s : Set α
h : q.s ⊆ s
⊢ s ∪ q.s = s
Theorem: Matrix.det_smul_of_tower
File: Mathlib/LinearAlgebra/Matrix/Determinant.lean

tactic: rw [← smul_one_smul R c A, det_smul, smul_pow, one_pow, smul_mul_assoc, one_mul]
state_before: m : Type ?u.1316454
n : Type u_2
inst✝⁸ : DecidableEq n
inst✝⁷ : Fintype n
inst✝⁶ : DecidableEq m
inst✝⁵ : Fintype m
R : Type v
inst✝⁴ : CommRing R
α : Type u_1
inst✝³ : Monoid α
inst✝² : DistribMulAction α R
inst✝¹ : IsScalarTower α R R
inst✝ : SMulCommClass α R R
c : α
A : Matrix n n R
⊢ det (c • A) = c ^ Fintype.card n • det A
Theorem: Ideal.IsHomogeneous.sup
File: Mathlib/RingTheory/GradedAlgebra/HomogeneousIdeal.lean

tactic: rw [iff_exists] at HI HJ⊢
state_before: ι : Type u_2
σ : Type u_3
R : Type ?u.119538
A : Type u_1
inst✝⁵ : Semiring A
inst✝⁴ : DecidableEq ι
inst✝³ : AddMonoid ι
inst✝² : SetLike σ A
inst✝¹ : AddSubmonoidClass σ A
𝒜 : ι → σ
inst✝ : GradedRing 𝒜
I J : Ideal A
HI : IsHomogeneous 𝒜 I
HJ : IsHomogeneous 𝒜 J
⊢ IsHomogeneous 𝒜 (I ⊔ J)

tactic: obtain ⟨⟨s₁, rfl⟩, ⟨s₂, rfl⟩⟩ := HI, HJ
state_before: ι : Type u_2
σ : Type u_3
R : Type ?u.119538
A : Type u_1
inst✝⁵ : Semiring A
inst✝⁴ : DecidableEq ι
inst✝³ : AddMonoid ι
inst✝² : SetLike σ A
inst✝¹ : AddSubmonoidClass σ A
𝒜 : ι → σ
inst✝ : GradedRing 𝒜
I J : Ideal A
HI : ∃ S, I = span (Subtype.val '' S)
HJ : ∃ S, J = span (Subtype.val '' S)
⊢ ∃ S, I ⊔ J = span (Subtype.val '' S)

tactic: refine' ⟨s₁ ∪ s₂, _⟩
state_before: case intro.intro
ι : Type u_2
σ : Type u_3
R : Type ?u.119538
A : Type u_1
inst✝⁵ : Semiring A
inst✝⁴ : DecidableEq ι
inst✝³ : AddMonoid ι
inst✝² : SetLike σ A
inst✝¹ : AddSubmonoidClass σ A
𝒜 : ι → σ
inst✝ : GradedRing 𝒜
s₁ s₂ : Set { x // x ∈ homogeneousSubmonoid 𝒜 }
⊢ ∃ S, span (Subtype.val '' s₁) ⊔ span (Subtype.val '' s₂) = span (Subtype.val '' S)

tactic: rw [Set.image_union]
state_before: case intro.intro
ι : Type u_2
σ : Type u_3
R : Type ?u.119538
A : Type u_1
inst✝⁵ : Semiring A
inst✝⁴ : DecidableEq ι
inst✝³ : AddMonoid ι
inst✝² : SetLike σ A
inst✝¹ : AddSubmonoidClass σ A
𝒜 : ι → σ
inst✝ : GradedRing 𝒜
s₁ s₂ : Set { x // x ∈ homogeneousSubmonoid 𝒜 }
⊢ span (Subtype.val '' s₁) ⊔ span (Subtype.val '' s₂) = span (Subtype.val '' (s₁ ∪ s₂))

tactic: exact (Submodule.span_union _ _).symm
state_before: case intro.intro
ι : Type u_2
σ : Type u_3
R : Type ?u.119538
A : Type u_1
inst✝⁵ : Semiring A
inst✝⁴ : DecidableEq ι
inst✝³ : AddMonoid ι
inst✝² : SetLike σ A
inst✝¹ : AddSubmonoidClass σ A
𝒜 : ι → σ
inst✝ : GradedRing 𝒜
s₁ s₂ : Set { x // x ∈ homogeneousSubmonoid 𝒜 }
⊢ span (Subtype.val '' s₁) ⊔ span (Subtype.val '' s₂) = span (Subtype.val '' s₁ ∪ Subtype.val '' s₂)
Theorem: Finset.Ico_diff_Ico_right
File: Mathlib/Data/Finset/LocallyFinite.lean

tactic: cases le_total b c with
| inl h => rw [Ico_eq_empty_of_le h, sdiff_empty, min_eq_left h]
| inr h =>
  ext x
  rw [mem_sdiff, mem_Ico, mem_Ico, mem_Ico, min_eq_right h, and_assoc, not_and', not_le]
  exact and_congr_right' ⟨fun hx => hx.2 hx.1, fun hx => ⟨hx.trans_le h, fun _ => hx⟩⟩
state_before: ι : Type ?u.158202
α : Type u_1
inst✝¹ : LinearOrder α
inst✝ : LocallyFiniteOrder α
a✝ b✝ a b c : α
⊢ Ico a b \ Ico c b = Ico a (min b c)

tactic: rw [Ico_eq_empty_of_le h, sdiff_empty, min_eq_left h]
state_before: case inl
ι : Type ?u.158202
α : Type u_1
inst✝¹ : LinearOrder α
inst✝ : LocallyFiniteOrder α
a✝ b✝ a b c : α
h : b ≤ c
⊢ Ico a b \ Ico c b = Ico a (min b c)

tactic: ext x
state_before: case inr
ι : Type ?u.158202
α : Type u_1
inst✝¹ : LinearOrder α
inst✝ : LocallyFiniteOrder α
a✝ b✝ a b c : α
h : c ≤ b
⊢ Ico a b \ Ico c b = Ico a (min b c)

tactic: rw [mem_sdiff, mem_Ico, mem_Ico, mem_Ico, min_eq_right h, and_assoc, not_and', not_le]
state_before: case inr.a
ι : Type ?u.158202
α : Type u_1
inst✝¹ : LinearOrder α
inst✝ : LocallyFiniteOrder α
a✝ b✝ a b c : α
h : c ≤ b
x : α
⊢ x ∈ Ico a b \ Ico c b ↔ x ∈ Ico a (min b c)

tactic: exact and_congr_right' ⟨fun hx => hx.2 hx.1, fun hx => ⟨hx.trans_le h, fun _ => hx⟩⟩
state_before: case inr.a
ι : Type ?u.158202
α : Type u_1
inst✝¹ : LinearOrder α
inst✝ : LocallyFiniteOrder α
a✝ b✝ a b c : α
h : c ≤ b
x : α
⊢ a ≤ x ∧ x < b ∧ (x < b → x < c) ↔ a ≤ x ∧ x < c
Theorem: Equiv.comp_swap_eq_update
File: Mathlib/Logic/Equiv/Basic.lean

tactic: rw [swap_eq_update, comp_update, comp_update, comp.right_id]
state_before: α : Sort u_2
inst✝ : DecidableEq α
β : Sort u_1
i j : α
f : α → β
⊢ f ∘ ↑(swap i j) = update (update f j (f i)) i (f j)
Theorem: composition_card
File: Mathlib/Combinatorics/Composition.lean

tactic: rw [← compositionAsSet_card n]
state_before: n✝ n : ℕ
⊢ Fintype.card (Composition n) = 2 ^ (n - 1)

tactic: exact Fintype.card_congr (compositionEquiv n)
state_before: n✝ n : ℕ
⊢ Fintype.card (Composition n) = Fintype.card (CompositionAsSet n)
Theorem: List.alternatingProd_append
File: Mathlib/Data/List/BigOperators/Lemmas.lean

tactic: simp
state_before: ι : Type ?u.13107
α : Type u_1
M : Type ?u.13113
N : Type ?u.13116
P : Type ?u.13119
M₀ : Type ?u.13122
G : Type ?u.13125
R : Type ?u.13128
inst✝ : CommGroup α
l₂ : List α
⊢ alternatingProd ([] ++ l₂) = alternatingProd [] * alternatingProd l₂ ^ (-1) ^ length []

tactic: simp_rw [cons_append, alternatingProd_cons, alternatingProd_append, length_cons, pow_succ,
  neg_mul, one_mul, zpow_neg, ← div_eq_mul_inv, div_div]
state_before: ι : Type ?u.13107
α : Type u_1
M : Type ?u.13113
N : Type ?u.13116
P : Type ?u.13119
M₀ : Type ?u.13122
G : Type ?u.13125
R : Type ?u.13128
inst✝ : CommGroup α
a : α
l₁ l₂ : List α
⊢ alternatingProd (a :: l₁ ++ l₂) = alternatingProd (a :: l₁) * alternatingProd l₂ ^ (-1) ^ length (a :: l₁)
Theorem: BoundedContinuousFunction.Nnreal.upper_bound
File: Mathlib/Topology/ContinuousFunction/Bounded.lean

tactic: have key : nndist (f x) ((0 : α →ᵇ ℝ≥0) x) ≤ nndist f 0 := @dist_coe_le_dist α ℝ≥0 _ _ f 0 x
state_before: F : Type ?u.1563197
α✝ : Type u
β : Type v
γ : Type w
α : Type u_1
inst✝ : TopologicalSpace α
f : α →ᵇ ℝ≥0
x : α
⊢ ↑f x ≤ nndist f 0

tactic: simp only [coe_zero, Pi.zero_apply] at key
state_before: F : Type ?u.1563197
α✝ : Type u
β : Type v
γ : Type w
α : Type u_1
inst✝ : TopologicalSpace α
f : α →ᵇ ℝ≥0
x : α
key : nndist (↑f x) (↑0 x) ≤ nndist f 0
⊢ ↑f x ≤ nndist f 0

tactic: rwa [NNReal.nndist_zero_eq_val' (f x)] at key
state_before: F : Type ?u.1563197
α✝ : Type u
β : Type v
γ : Type w
α : Type u_1
inst✝ : TopologicalSpace α
f : α →ᵇ ℝ≥0
x : α
key : nndist (↑f x) 0 ≤ nndist f 0
⊢ ↑f x ≤ nndist f 0
Theorem: Matrix.IsDiag.neg
File: Mathlib/LinearAlgebra/Matrix/IsDiag.lean

tactic: intro i j h
state_before: α : Type u_1
β : Type ?u.3130
R : Type ?u.3133
n : Type u_2
m : Type ?u.3139
inst✝ : AddGroup α
A : Matrix n n α
ha : IsDiag A
⊢ IsDiag (-A)

tactic: simp [ha h]
state_before: α : Type u_1
β : Type ?u.3130
R : Type ?u.3133
n : Type u_2
m : Type ?u.3139
inst✝ : AddGroup α
A : Matrix n n α
ha : IsDiag A
i j : n
h : i ≠ j
⊢ (-A) i j = 0
Theorem: AffineMap.restrict.surjective
File: Mathlib/LinearAlgebra/AffineSpace/Restrict.lean

tactic: rintro ⟨x, hx : x ∈ F⟩
state_before: k : Type u_1
V₁ : Type u_2
P₁ : Type u_3
V₂ : Type u_4
P₂ : Type u_5
inst✝⁸ : Ring k
inst✝⁷ : AddCommGroup V₁
inst✝⁶ : AddCommGroup V₂
inst✝⁵ : Module k V₁
inst✝⁴ : Module k V₂
inst✝³ : AddTorsor V₁ P₁
inst✝² : AddTorsor V₂ P₂
φ : P₁ →ᵃ[k] P₂
E : AffineSubspace k P₁
F : AffineSubspace k P₂
inst✝¹ : Nonempty { x // x ∈ E }
inst✝ : Nonempty { x // x ∈ F }
h : AffineSubspace.map φ E = F
⊢ Function.Surjective ↑(restrict φ (_ : AffineSubspace.map φ E ≤ F))

tactic: rw [← h, AffineSubspace.mem_map] at hx
state_before: case mk
k : Type u_1
V₁ : Type u_2
P₁ : Type u_3
V₂ : Type u_4
P₂ : Type u_5
inst✝⁸ : Ring k
inst✝⁷ : AddCommGroup V₁
inst✝⁶ : AddCommGroup V₂
inst✝⁵ : Module k V₁
inst✝⁴ : Module k V₂
inst✝³ : AddTorsor V₁ P₁
inst✝² : AddTorsor V₂ P₂
φ : P₁ →ᵃ[k] P₂
E : AffineSubspace k P₁
F : AffineSubspace k P₂
inst✝¹ : Nonempty { x // x ∈ E }
inst✝ : Nonempty { x // x ∈ F }
h : AffineSubspace.map φ E = F
x : P₂
hx : x ∈ F
⊢ ∃ a, ↑(restrict φ (_ : AffineSubspace.map φ E ≤ F)) a = { val := x, property := hx }

tactic: obtain ⟨y, hy, rfl⟩ := hx
state_before: case mk
k : Type u_1
V₁ : Type u_2
P₁ : Type u_3
V₂ : Type u_4
P₂ : Type u_5
inst✝⁸ : Ring k
inst✝⁷ : AddCommGroup V₁
inst✝⁶ : AddCommGroup V₂
inst✝⁵ : Module k V₁
inst✝⁴ : Module k V₂
inst✝³ : AddTorsor V₁ P₁
inst✝² : AddTorsor V₂ P₂
φ : P₁ →ᵃ[k] P₂
E : AffineSubspace k P₁
F : AffineSubspace k P₂
inst✝¹ : Nonempty { x // x ∈ E }
inst✝ : Nonempty { x // x ∈ F }
h : AffineSubspace.map φ E = F
x : P₂
hx✝ : x ∈ F
hx : ∃ y, y ∈ E ∧ ↑φ y = x
⊢ ∃ a, ↑(restrict φ (_ : AffineSubspace.map φ E ≤ F)) a = { val := x, property := hx✝ }

tactic: exact ⟨⟨y, hy⟩, rfl⟩
state_before: case mk.intro.intro
k : Type u_1
V₁ : Type u_2
P₁ : Type u_3
V₂ : Type u_4
P₂ : Type u_5
inst✝⁸ : Ring k
inst✝⁷ : AddCommGroup V₁
inst✝⁶ : AddCommGroup V₂
inst✝⁵ : Module k V₁
inst✝⁴ : Module k V₂
inst✝³ : AddTorsor V₁ P₁
inst✝² : AddTorsor V₂ P₂
φ : P₁ →ᵃ[k] P₂
E : AffineSubspace k P₁
F : AffineSubspace k P₂
inst✝¹ : Nonempty { x // x ∈ E }
inst✝ : Nonempty { x // x ∈ F }
h : AffineSubspace.map φ E = F
y : P₁
hy : y ∈ E
hx : ↑φ y ∈ F
⊢ ∃ a, ↑(restrict φ (_ : AffineSubspace.map φ E ≤ F)) a = { val := ↑φ y, property := hx }