ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
-- Subtype.exists_pi_extension
theorem Subtype.exists_pi_extension {ι : Sort*} {α : ι → Sort*} [ne : ∀ i, Nonempty (α i)]
    {p : ι → Prop} (f : ∀ i : Subtype p, α i) :
    ∃ g : ∀ i : ι, α i, (fun i : Subtype p => g i) = f 
Arguments: {ι : Sort u_1} {α : ι → Sort u_2} [ne : ∀ (i : ι), Nonempty (α i)] {p : ι → Prop} (f : (i : Subtype p) → α i.val)
Goal: ∃ g, (fun i => g i.val) = f
-- Mathlib.Tactic.LinearCombination.pf_add_c
theorem pf_add_c [Add α] (p : a = b) (c : α) : a + c = b + c 
Arguments: {α : Type u_1} {a b : α} [Add α] (p : a = b) (c : α)
Goal: a + c = b + c
-- Mathlib.Tactic.LinearCombination.c_add_pf
theorem c_add_pf [Add α] (p : b = c) (a : α) : a + b = a + c 
Arguments: {α : Type u_1} {b c : α} [Add α] (p : b = c) (a : α)
Goal: a + b = a + c
-- Mathlib.Tactic.LinearCombination.add_pf
theorem add_pf [Add α] (p₁ : (a₁:α) = b₁) (p₂ : a₂ = b₂) : a₁ + a₂ = b₁ + b₂ 
Arguments: {α : Type u_1} {a₁ a₂ b₁ b₂ : α} [Add α] (p₁ : a₁ = b₁) (p₂ : a₂ = b₂)
Goal: a₁ + a₂ = b₁ + b₂
-- Mathlib.Tactic.LinearCombination.pf_sub_c
theorem pf_sub_c [Sub α] (p : a = b) (c : α) : a - c = b - c 
Arguments: {α : Type u_1} {a b : α} [Sub α] (p : a = b) (c : α)
Goal: a - c = b - c
-- Mathlib.Tactic.LinearCombination.c_sub_pf
theorem c_sub_pf [Sub α] (p : b = c) (a : α) : a - b = a - c 
Arguments: {α : Type u_1} {b c : α} [Sub α] (p : b = c) (a : α)
Goal: a - b = a - c
-- Mathlib.Tactic.LinearCombination.sub_pf
theorem sub_pf [Sub α] (p₁ : (a₁:α) = b₁) (p₂ : a₂ = b₂) : a₁ - a₂ = b₁ - b₂ 
Arguments: {α : Type u_1} {a₁ a₂ b₁ b₂ : α} [Sub α] (p₁ : a₁ = b₁) (p₂ : a₂ = b₂)
Goal: a₁ - a₂ = b₁ - b₂
-- Mathlib.Tactic.LinearCombination.neg_pf
theorem neg_pf [Neg α] (p : (a:α) = b) : -a = -b 
Arguments: {α : Type u_1} {a b : α} [Neg α] (p : a = b)
Goal: -a = -b
-- Mathlib.Tactic.LinearCombination.pf_mul_c
theorem pf_mul_c [Mul α] (p : a = b) (c : α) : a * c = b * c 
Arguments: {α : Type u_1} {a b : α} [Mul α] (p : a = b) (c : α)
Goal: a * c = b * c
-- Mathlib.Tactic.LinearCombination.c_mul_pf
theorem c_mul_pf [Mul α] (p : b = c) (a : α) : a * b = a * c 
Arguments: {α : Type u_1} {b c : α} [Mul α] (p : b = c) (a : α)
Goal: a * b = a * c
-- Mathlib.Tactic.LinearCombination.mul_pf
theorem mul_pf [Mul α] (p₁ : (a₁:α) = b₁) (p₂ : a₂ = b₂) : a₁ * a₂ = b₁ * b₂ 
Arguments: {α : Type u_1} {a₁ a₂ b₁ b₂ : α} [Mul α] (p₁ : a₁ = b₁) (p₂ : a₂ = b₂)
Goal: a₁ * a₂ = b₁ * b₂
-- Mathlib.Tactic.LinearCombination.inv_pf
theorem inv_pf [Inv α] (p : (a:α) = b) : a⁻¹ = b⁻¹ 
Arguments: {α : Type u_1} {a b : α} [Inv α] (p : a = b)
Goal: a⁻¹ = b⁻¹
-- Mathlib.Tactic.LinearCombination.pf_div_c
theorem pf_div_c [Div α] (p : a = b) (c : α) : a / c = b / c 
Arguments: {α : Type u_1} {a b : α} [Div α] (p : a = b) (c : α)
Goal: a / c = b / c
-- Mathlib.Tactic.LinearCombination.c_div_pf
theorem c_div_pf [Div α] (p : b = c) (a : α) : a / b = a / c 
Arguments: {α : Type u_1} {b c : α} [Div α] (p : b = c) (a : α)
Goal: a / b = a / c
-- Mathlib.Tactic.LinearCombination.div_pf
theorem div_pf [Div α] (p₁ : (a₁:α) = b₁) (p₂ : a₂ = b₂) : a₁ / a₂ = b₁ / b₂ 
Arguments: {α : Type u_1} {a₁ a₂ b₁ b₂ : α} [Div α] (p₁ : a₁ = b₁) (p₂ : a₂ = b₂)
Goal: a₁ / a₂ = b₁ / b₂
-- Mathlib.Tactic.LinearCombination.eq_trans₃
theorem eq_trans₃ (p : (a:α) = b) (p₁ : a = a') (p₂ : b = b') : a' = b' 
Arguments: {α : Type u_1} {a a' b b' : α} (p : a = b) (p₁ : a = a') (p₂ : b = b')
Goal: a' = b'
-- Mathlib.Tactic.LinearCombination.eq_of_add
theorem eq_of_add [AddGroup α] (p : (a:α) = b) (H : (a' - b') - (a - b) = 0) : a' = b' 
Arguments: {α : Type u_1} {a a' b b' : α} [AddGroup α] (p : a = b) (H : a' - b' - (a - b) = 0)
Goal: a' = b'
-- Mathlib.Tactic.LinearCombination.eq_of_add_pow
theorem eq_of_add_pow [Ring α] [NoZeroDivisors α] (n : ℕ) (p : (a:α) = b)
    (H : (a' - b')^n - (a - b) = 0) : a' = b' 
Arguments: {α : Type u_1} {a a' b b' : α} [Ring α] [NoZeroDivisors α] (n : ℕ) (p : a = b) (H : (a' - b') ^ n - (a - b) = 0)
Goal: a' = b'
-- Linarith.lt_irrefl
theorem lt_irrefl {α : Type u} [Preorder α] {a : α} : ¬a < a 
Arguments: {α : Type u} [Preorder α] {a : α}
Goal: ¬a < a
-- Linarith.eq_of_eq_of_eq
theorem eq_of_eq_of_eq {α} [OrderedSemiring α] {a b : α} (ha : a = 0) (hb : b = 0) : a + b = 0 
Arguments: {α : Type u_1} [OrderedSemiring α] {a b : α} (ha : a = 0) (hb : b = 0)
Goal: a + b = 0
-- Linarith.le_of_eq_of_le
theorem le_of_eq_of_le {α} [OrderedSemiring α] {a b : α} (ha : a = 0) (hb : b ≤ 0) : a + b ≤ 0 
Arguments: {α : Type u_1} [OrderedSemiring α] {a b : α} (ha : a = 0) (hb : b ≤ 0)
Goal: a + b ≤ 0
-- Linarith.lt_of_eq_of_lt
theorem lt_of_eq_of_lt {α} [OrderedSemiring α] {a b : α} (ha : a = 0) (hb : b < 0) : a + b < 0 
Arguments: {α : Type u_1} [OrderedSemiring α] {a b : α} (ha : a = 0) (hb : b < 0)
Goal: a + b < 0
-- Linarith.le_of_le_of_eq
theorem le_of_le_of_eq {α} [OrderedSemiring α] {a b : α} (ha : a ≤ 0) (hb : b = 0) : a + b ≤ 0 
Arguments: {α : Type u_1} [OrderedSemiring α] {a b : α} (ha : a ≤ 0) (hb : b = 0)
Goal: a + b ≤ 0
-- Linarith.lt_of_lt_of_eq
theorem lt_of_lt_of_eq {α} [OrderedSemiring α] {a b : α} (ha : a < 0) (hb : b = 0) : a + b < 0 
Arguments: {α : Type u_1} [OrderedSemiring α] {a b : α} (ha : a < 0) (hb : b = 0)
Goal: a + b < 0
-- Linarith.mul_neg
theorem mul_neg {α} [StrictOrderedRing α] {a b : α} (ha : a < 0) (hb : 0 < b) : b * a < 0 
Arguments: {α : Type u_1} [StrictOrderedRing α] {a b : α} (ha : a < 0) (hb : 0 < b)
Goal: b * a < 0
-- Linarith.mul_nonpos
theorem mul_nonpos {α} [OrderedRing α] {a b : α} (ha : a ≤ 0) (hb : 0 < b) : b * a ≤ 0 
Arguments: {α : Type u_1} [OrderedRing α] {a b : α} (ha : a ≤ 0) (hb : 0 < b)
Goal: b * a ≤ 0
-- Linarith.mul_eq
@[nolint unusedArguments]
theorem mul_eq {α} [OrderedSemiring α] {a b : α} (ha : a = 0) (_ : 0 < b) : b * a = 0 
Arguments: {α : Type u_1} [OrderedSemiring α] {a b : α} (ha : a = 0)
Goal: 0 < b → b * a = 0
-- Linarith.eq_of_not_lt_of_not_gt
lemma eq_of_not_lt_of_not_gt {α} [LinearOrder α] (a b : α) (h1 : ¬ a < b) (h2 : ¬ b < a) : a = b 
Arguments: {α : Type u_1} [LinearOrder α] (a b : α) (h1 : ¬a < b) (h2 : ¬b < a)
Goal: a = b
-- Linarith.mul_zero_eq
@[nolint unusedArguments]
lemma mul_zero_eq {α} {R : α → α → Prop} [Semiring α] {a b : α} (_ : R a 0) (h : b = 0) :
    a * b = 0 
Arguments: {α : Type u_1} {R : α → α → Prop} [Semiring α] {a b : α}
Goal: R a 0 → b = 0 → a * b = 0
-- Linarith.zero_mul_eq
@[nolint unusedArguments]
lemma zero_mul_eq {α} {R : α → α → Prop} [Semiring α] {a b : α} (h : a = 0) (_ : R b 0) :
    a * b = 0 
Arguments: {α : Type u_1} {R : α → α → Prop} [Semiring α] {a b : α} (h : a = 0)
Goal: R b 0 → a * b = 0
-- Linarith.natCast_nonneg
lemma natCast_nonneg (α : Type u) [OrderedSemiring α] (n : ℕ) : (0 : α) ≤ n 
Arguments: (α : Type u) [OrderedSemiring α] (n : ℕ)
Goal: 0 ≤ ↑n
-- lt_zero_of_zero_gt
theorem lt_zero_of_zero_gt {α : Type*} [Zero α] [LT α] {a : α} (h : 0 > a) : a < 0 
Arguments: {α : Type u_1} [Zero α] [LT α] {a : α} (h : 0 > a)
Goal: a < 0
-- le_zero_of_zero_ge
theorem le_zero_of_zero_ge {α : Type*} [Zero α] [LE α] {a : α} (h : 0 ≥ a) : a ≤ 0 
Arguments: {α : Type u_1} [Zero α] [LE α] {a : α} (h : 0 ≥ a)
Goal: a ≤ 0
-- _private.Mathlib.Tactic.Positivity.Basic.0.Mathlib.Meta.Positivity.ite_pos
private lemma ite_pos [LT α] (ha : 0 < a) (hb : 0 < b) : 0 < ite p a b 
Arguments: {α : Type u_1} [Zero α] (p : Prop) [Decidable p] {a b : α} [LT α] (ha : 0 < a) (hb : 0 < b)
Goal: 0 < if p then a else b
-- _private.Mathlib.Tactic.Positivity.Basic.0.Mathlib.Meta.Positivity.ite_nonneg
private lemma ite_nonneg [LE α] (ha : 0 ≤ a) (hb : 0 ≤ b) : 0 ≤ ite p a b 
Arguments: {α : Type u_1} [Zero α] (p : Prop) [Decidable p] {a b : α} [LE α] (ha : 0 ≤ a) (hb : 0 ≤ b)
Goal: 0 ≤ if p then a else b
-- _private.Mathlib.Tactic.Positivity.Basic.0.Mathlib.Meta.Positivity.ite_nonneg_of_pos_of_nonneg
private lemma ite_nonneg_of_pos_of_nonneg [Preorder α] (ha : 0 < a) (hb : 0 ≤ b) : 0 ≤ ite p a b 
Arguments: {α : Type u_1} [Zero α] (p : Prop) [Decidable p] {a b : α} [Preorder α] (ha : 0 < a) (hb : 0 ≤ b)
Goal: 0 ≤ if p then a else b
-- _private.Mathlib.Tactic.Positivity.Basic.0.Mathlib.Meta.Positivity.ite_nonneg_of_nonneg_of_pos
private lemma ite_nonneg_of_nonneg_of_pos [Preorder α] (ha : 0 ≤ a) (hb : 0 < b) : 0 ≤ ite p a b 
Arguments: {α : Type u_1} [Zero α] (p : Prop) [Decidable p] {a b : α} [Preorder α] (ha : 0 ≤ a) (hb : 0 < b)
Goal: 0 ≤ if p then a else b
-- _private.Mathlib.Tactic.Positivity.Basic.0.Mathlib.Meta.Positivity.ite_ne_zero
private lemma ite_ne_zero (ha : a ≠ 0) (hb : b ≠ 0) : ite p a b ≠ 0 
Arguments: {α : Type u_1} [Zero α] (p : Prop) [Decidable p] {a b : α} (ha : a ≠ 0) (hb : b ≠ 0)
Goal: (if p then a else b) ≠ 0
-- _private.Mathlib.Tactic.Positivity.Basic.0.Mathlib.Meta.Positivity.ite_ne_zero_of_pos_of_ne_zero
private lemma ite_ne_zero_of_pos_of_ne_zero [Preorder α] (ha : 0 < a) (hb : b ≠ 0) :
    ite p a b ≠ 0 
Arguments: {α : Type u_1} [Zero α] (p : Prop) [Decidable p] {a b : α} [Preorder α] (ha : 0 < a) (hb : b ≠ 0)
Goal: (if p then a else b) ≠ 0
-- _private.Mathlib.Tactic.Positivity.Basic.0.Mathlib.Meta.Positivity.ite_ne_zero_of_ne_zero_of_pos
private lemma ite_ne_zero_of_ne_zero_of_pos [Preorder α] (ha : a ≠ 0) (hb : 0 < b) :
    ite p a b ≠ 0 
Arguments: {α : Type u_1} [Zero α] (p : Prop) [Decidable p] {a b : α} [Preorder α] (ha : a ≠ 0) (hb : 0 < b)
Goal: (if p then a else b) ≠ 0
-- _private.Mathlib.Tactic.Positivity.Basic.0.Mathlib.Meta.Positivity.le_min_of_lt_of_le
private lemma le_min_of_lt_of_le (ha : a < b) (hb : a ≤ c) : a ≤ min b c 
Arguments: {R : Type u_2} [LinearOrder R] {a b c : R} (ha : a < b) (hb : a ≤ c)
Goal: a ≤ min b c
-- _private.Mathlib.Tactic.Positivity.Basic.0.Mathlib.Meta.Positivity.le_min_of_le_of_lt
private lemma le_min_of_le_of_lt (ha : a ≤ b) (hb : a < c) : a ≤ min b c 
Arguments: {R : Type u_2} [LinearOrder R] {a b c : R} (ha : a ≤ b) (hb : a < c)
Goal: a ≤ min b c
-- _private.Mathlib.Tactic.Positivity.Basic.0.Mathlib.Meta.Positivity.min_ne
private lemma min_ne (ha : a ≠ c) (hb : b ≠ c) : min a b ≠ c 
Arguments: {R : Type u_2} [LinearOrder R] {a b c : R} (ha : a ≠ c) (hb : b ≠ c)
Goal: min a b ≠ c
-- _private.Mathlib.Tactic.Positivity.Basic.0.Mathlib.Meta.Positivity.min_ne_of_ne_of_lt
private lemma min_ne_of_ne_of_lt (ha : a ≠ c) (hb : c < b) : min a b ≠ c 
Arguments: {R : Type u_2} [LinearOrder R] {a b c : R} (ha : a ≠ c) (hb : c < b)
Goal: min a b ≠ c
-- _private.Mathlib.Tactic.Positivity.Basic.0.Mathlib.Meta.Positivity.min_ne_of_lt_of_ne
private lemma min_ne_of_lt_of_ne (ha : c < a) (hb : b ≠ c) : min a b ≠ c 
Arguments: {R : Type u_2} [LinearOrder R] {a b c : R} (ha : c < a) (hb : b ≠ c)
Goal: min a b ≠ c
-- _private.Mathlib.Tactic.Positivity.Basic.0.Mathlib.Meta.Positivity.max_ne
private lemma max_ne (ha : a ≠ c) (hb : b ≠ c) : max a b ≠ c 
Arguments: {R : Type u_2} [LinearOrder R] {a b c : R} (ha : a ≠ c) (hb : b ≠ c)
Goal: max a b ≠ c
-- _private.Mathlib.Tactic.Positivity.Basic.0.Mathlib.Meta.Positivity.mul_nonneg_of_pos_of_nonneg
private theorem mul_nonneg_of_pos_of_nonneg [OrderedSemiring α] {a b : α}
    (ha : 0 < a) (hb : 0 ≤ b) : 0 ≤ a * b 
Arguments: {α : Type u_1} [OrderedSemiring α] {a b : α} (ha : 0 < a) (hb : 0 ≤ b)
Goal: 0 ≤ a * b
-- _private.Mathlib.Tactic.Positivity.Basic.0.Mathlib.Meta.Positivity.mul_nonneg_of_nonneg_of_pos
private theorem mul_nonneg_of_nonneg_of_pos [OrderedSemiring α] {a b : α}
    (ha : 0 ≤ a) (hb : 0 < b) : 0 ≤ a * b 
Arguments: {α : Type u_1} [OrderedSemiring α] {a b : α} (ha : 0 ≤ a) (hb : 0 < b)
Goal: 0 ≤ a * b
-- _private.Mathlib.Tactic.Positivity.Basic.0.Mathlib.Meta.Positivity.mul_ne_zero_of_ne_zero_of_pos
private theorem mul_ne_zero_of_ne_zero_of_pos [OrderedSemiring α] [NoZeroDivisors α]
    {a b : α} (ha : a ≠ 0) (hb : 0 < b) : a * b ≠ 0 
Arguments: {α : Type u_1} [OrderedSemiring α] [NoZeroDivisors α] {a b : α} (ha : a ≠ 0) (hb : 0 < b)
Goal: a * b ≠ 0
-- _private.Mathlib.Tactic.Positivity.Basic.0.Mathlib.Meta.Positivity.mul_ne_zero_of_pos_of_ne_zero
private theorem mul_ne_zero_of_pos_of_ne_zero [OrderedSemiring α] [NoZeroDivisors α]
    {a b : α} (ha : 0 < a) (hb : b ≠ 0) : a * b ≠ 0 
Arguments: {α : Type u_1} [OrderedSemiring α] [NoZeroDivisors α] {a b : α} (ha : 0 < a) (hb : b ≠ 0)
Goal: a * b ≠ 0
-- _private.Mathlib.Tactic.Positivity.Basic.0.Mathlib.Meta.Positivity.int_div_self_pos
private lemma int_div_self_pos {a : ℤ} (ha : 0 < a) : 0 < a / a 
Arguments: {a : ℤ} (ha : 0 < a)
Goal: 0 < a / a
-- _private.Mathlib.Tactic.Positivity.Basic.0.Mathlib.Meta.Positivity.int_div_nonneg_of_pos_of_nonneg
private lemma int_div_nonneg_of_pos_of_nonneg {a b : ℤ} (ha : 0 < a) (hb : 0 ≤ b) : 0 ≤ a / b 
Arguments: {a b : ℤ} (ha : 0 < a) (hb : 0 ≤ b)
Goal: 0 ≤ a / b
-- _private.Mathlib.Tactic.Positivity.Basic.0.Mathlib.Meta.Positivity.int_div_nonneg_of_nonneg_of_pos
private lemma int_div_nonneg_of_nonneg_of_pos {a b : ℤ} (ha : 0 ≤ a) (hb : 0 < b) : 0 ≤ a / b 
Arguments: {a b : ℤ} (ha : 0 ≤ a) (hb : 0 < b)
Goal: 0 ≤ a / b
-- _private.Mathlib.Tactic.Positivity.Basic.0.Mathlib.Meta.Positivity.int_div_nonneg_of_pos_of_pos
private lemma int_div_nonneg_of_pos_of_pos {a b : ℤ} (ha : 0 < a) (hb : 0 < b) : 0 ≤ a / b 
Arguments: {a b : ℤ} (ha : 0 < a) (hb : 0 < b)
Goal: 0 ≤ a / b
-- _private.Mathlib.Tactic.Positivity.Basic.0.Mathlib.Meta.Positivity.pow_zero_pos
private theorem pow_zero_pos [OrderedSemiring α] [Nontrivial α] (a : α) : 0 < a ^ 0 
Arguments: {α : Type u_1} [OrderedSemiring α] [Nontrivial α] (a : α)
Goal: 0 < a ^ 0
-- _private.Mathlib.Tactic.Positivity.Basic.0.Mathlib.Meta.Positivity.abs_pos_of_ne_zero
private theorem abs_pos_of_ne_zero {α : Type*} [AddGroup α] [LinearOrder α]
    [CovariantClass α α (·+·) (·≤·)] {a : α} : a ≠ 0 → 0 < |a| 
Arguments: {α : Type u_2} [AddGroup α] [LinearOrder α] [CovariantClass α α (fun x x_1 => x + x_1) fun x x_1 => x ≤ x_1] {a : α}
Goal: a ≠ 0 → 0 < |a|
-- _private.Mathlib.Tactic.Positivity.Basic.0.Mathlib.Meta.Positivity.int_natAbs_pos
private theorem int_natAbs_pos {n : ℤ} (hn : 0 < n) : 0 < n.natAbs 
Arguments: {n : ℤ} (hn : 0 < n)
Goal: 0 < n.natAbs
-- Mathlib.Tactic.ComputeDegree.natDegree_C_le
theorem natDegree_C_le (a : R) : natDegree (C a) ≤ 0 
Arguments: {R : Type u_1} [Semiring R] (a : R)
Goal: (Polynomial.C a).natDegree ≤ 0
-- Mathlib.Tactic.ComputeDegree.natDegree_natCast_le
theorem natDegree_natCast_le (n : ℕ) : natDegree (n : R[X]) ≤ 0 
Arguments: {R : Type u_1} [Semiring R] (n : ℕ)
Goal: (↑n).natDegree ≤ 0
-- Mathlib.Tactic.ComputeDegree.natDegree_zero_le
theorem natDegree_zero_le : natDegree (0 : R[X]) ≤ 0 
Arguments: {R : Type u_1} [Semiring R]
Goal: Polynomial.natDegree 0 ≤ 0
-- Mathlib.Tactic.ComputeDegree.natDegree_one_le
theorem natDegree_one_le : natDegree (1 : R[X]) ≤ 0 
Arguments: {R : Type u_1} [Semiring R]
Goal: Polynomial.natDegree 1 ≤ 0
-- Mathlib.Tactic.ComputeDegree.coeff_add_of_eq
theorem coeff_add_of_eq {n : ℕ} {a b : R} {f g : R[X]}
    (h_add_left : f.coeff n = a) (h_add_right : g.coeff n = b) :
    (f + g).coeff n = a + b 
Arguments: {R : Type u_1} [Semiring R] {n : ℕ} {a b : R} {f g : R[X]} (h_add_left : f.coeff n = a) (h_add_right : g.coeff n = b)
Goal: (f + g).coeff n = a + b
-- Mathlib.Tactic.ComputeDegree.coeff_mul_add_of_le_natDegree_of_eq_ite
theorem coeff_mul_add_of_le_natDegree_of_eq_ite {d df dg : ℕ} {a b : R} {f g : R[X]}
    (h_mul_left : natDegree f ≤ df) (h_mul_right : natDegree g ≤ dg)
    (h_mul_left : f.coeff df = a) (h_mul_right : g.coeff dg = b) (ddf : df + dg ≤ d) :
    (f * g).coeff d = if d = df + dg then a * b else 0 
Arguments: {R : Type u_1} [Semiring R] {d df dg : ℕ} {a b : R} {f g : R[X]} (h_mul_left : f.natDegree ≤ df) (h_mul_right : g.natDegree ≤ dg)
Goal: f.coeff df = a → g.coeff dg = b → df + dg ≤ d → (f * g).coeff d = if d = df + dg then a * b else 0
-- Mathlib.Tactic.ComputeDegree.coeff_pow_of_natDegree_le_of_eq_ite'
theorem coeff_pow_of_natDegree_le_of_eq_ite' {m n o : ℕ} {a : R} {p : R[X]}
    (h_pow : natDegree p ≤ n) (h_exp : m * n ≤ o) (h_pow_bas : coeff p n = a) :
    coeff (p ^ m) o = if o = m * n then a ^ m else 0 
Arguments: {R : Type u_1} [Semiring R] {m n o : ℕ} {a : R} {p : R[X]} (h_pow : p.natDegree ≤ n) (h_exp : m * n ≤ o) (h_pow_bas : p.coeff n = a)
Goal: (p ^ m).coeff o = if o = m * n then a ^ m else 0
-- Mathlib.Tactic.ComputeDegree.natDegree_smul_le_of_le
theorem natDegree_smul_le_of_le {n : ℕ} {a : R} {f : R[X]} (hf : natDegree f ≤ n) :
    natDegree (a • f) ≤ n 
Arguments: {R : Type u_1} [Semiring R] {n : ℕ} {a : R} {f : R[X]} (hf : f.natDegree ≤ n)
Goal: (a • f).natDegree ≤ n
-- Mathlib.Tactic.ComputeDegree.degree_smul_le_of_le
theorem degree_smul_le_of_le {n : ℕ} {a : R} {f : R[X]} (hf : degree f ≤ n) :
    degree (a • f) ≤ n 
Arguments: {R : Type u_1} [Semiring R] {n : ℕ} {a : R} {f : R[X]} (hf : f.degree ≤ ↑n)
Goal: (a • f).degree ≤ ↑n
-- Mathlib.Tactic.ComputeDegree.coeff_smul
theorem coeff_smul {n : ℕ} {a : R} {f : R[X]} : (a • f).coeff n = a * f.coeff n 
Arguments: {R : Type u_1} [Semiring R] {n : ℕ} {a : R} {f : R[X]}
Goal: (a • f).coeff n = a * f.coeff n
-- Mathlib.Tactic.ComputeDegree.natDegree_eq_of_le_of_coeff_ne_zero'
theorem natDegree_eq_of_le_of_coeff_ne_zero' {deg m o : ℕ} {c : R} {p : R[X]}
    (h_natDeg_le : natDegree p ≤ m) (coeff_eq : coeff p o = c)
    (coeff_ne_zero : c ≠ 0) (deg_eq_deg : m = deg) (coeff_eq_deg : o = deg) :
    natDegree p = deg 
Arguments: {R : Type u_1} [Semiring R] {deg m o : ℕ} {c : R} {p : R[X]} (h_natDeg_le : p.natDegree ≤ m) (coeff_eq : p.coeff o = c) (coeff_ne_zero : c ≠ 0) (deg_eq_deg : m = deg) (coeff_eq_deg : o = deg)
Goal: p.natDegree = deg
-- Mathlib.Tactic.ComputeDegree.degree_eq_of_le_of_coeff_ne_zero'
theorem degree_eq_of_le_of_coeff_ne_zero' {deg m o : WithBot ℕ} {c : R} {p : R[X]}
    (h_deg_le : degree p ≤ m) (coeff_eq : coeff p (WithBot.unbot' 0 deg) = c)
    (coeff_ne_zero : c ≠ 0) (deg_eq_deg : m = deg) (coeff_eq_deg : o = deg) :
    degree p = deg 
Arguments: {R : Type u_1} [Semiring R] {deg m o : WithBot ℕ} {c : R} {p : R[X]} (h_deg_le : p.degree ≤ m) (coeff_eq : p.coeff (WithBot.unbot' 0 deg) = c) (coeff_ne_zero : c ≠ 0) (deg_eq_deg : m = deg) (coeff_eq_deg : o = deg)
Goal: p.degree = deg
-- Mathlib.Tactic.ComputeDegree.coeff_congr_lhs
theorem coeff_congr_lhs : coeff f n = r 
Arguments: {R : Type u_1} [Semiring R] {m n : ℕ} {f : R[X]} {r : R} (h : f.coeff m = r) (natDeg_eq_coeff : m = n)
Goal: f.coeff n = r
-- Mathlib.Tactic.ComputeDegree.coeff_congr
theorem coeff_congr {s : R} (rs : r = s) : coeff f n = s 
Arguments: {R : Type u_1} [Semiring R] {m n : ℕ} {f : R[X]} {r : R} (h : f.coeff m = r) (natDeg_eq_coeff : m = n) {s : R} (rs : r = s)
Goal: f.coeff n = s
-- Mathlib.Tactic.ComputeDegree.natDegree_intCast_le
theorem natDegree_intCast_le (n : ℤ) : natDegree (n : R[X]) ≤ 0 
Arguments: {R : Type u_1} [Ring R] (n : ℤ)
Goal: (↑n).natDegree ≤ 0
-- Mathlib.Tactic.ComputeDegree.coeff_sub_of_eq
theorem coeff_sub_of_eq {n : ℕ} {a b : R} {f g : R[X]} (hf : f.coeff n = a) (hg : g.coeff n = b) :
    (f - g).coeff n = a - b 
Arguments: {R : Type u_1} [Ring R] {n : ℕ} {a b : R} {f g : R[X]} (hf : f.coeff n = a) (hg : g.coeff n = b)
Goal: (f - g).coeff n = a - b
-- Mathlib.Tactic.ComputeDegree.coeff_intCast_ite
theorem coeff_intCast_ite {n : ℕ} {a : ℤ} : (Int.cast a : R[X]).coeff n = ite (n = 0) a 0 
Arguments: {R : Type u_1} [Ring R] {n : ℕ} {a : ℤ}
Goal: (↑a).coeff n = ↑(if n = 0 then a else 0)
-- SeqCompactSpace.isSeqCompact_univ
@[mk_iff]
class SeqCompactSpace : Prop where
  isSeqCompact_univ : IsSeqCompact (univ : Set X)
Arguments: {X : Type u_1} [TopologicalSpace X] [self : SeqCompactSpace X]
Goal: IsSeqCompact Set.univ
-- seqCompactSpace_iff
@[mk_iff]
class SeqCompactSpace : Prop where
  isSeqCompact_univ : IsSeqCompact (univ : Set X)
Arguments: (X : Type u_1) [TopologicalSpace X]
Goal: SeqCompactSpace X ↔ IsSeqCompact Set.univ
-- FrechetUrysohnSpace.closure_subset_seqClosure
class FrechetUrysohnSpace : Prop where
  closure_subset_seqClosure : ∀ s : Set X, closure s ⊆ seqClosure s
Arguments: {X : Type u_1} [TopologicalSpace X] [self : FrechetUrysohnSpace X] (s : Set X)
Goal: closure s ⊆ seqClosure s
-- SequentialSpace.isClosed_of_seq
class SequentialSpace : Prop where
  isClosed_of_seq : ∀ s : Set X, IsSeqClosed s → IsClosed s
Arguments: {X : Type u_1} [TopologicalSpace X] [self : SequentialSpace X] (s : Set X)
Goal: IsSeqClosed s → IsClosed s
-- IsSeqClosed.isClosed
protected theorem IsSeqClosed.isClosed [SequentialSpace X] {s : Set X} (hs : IsSeqClosed s) :
    IsClosed s 
Arguments: {X : Type u_1} [TopologicalSpace X] [SequentialSpace X] {s : Set X} (hs : IsSeqClosed s)
Goal: IsClosed s
-- TopologicalSpace.isOpen_univ
@[to_additive existing TopologicalSpace]
class TopologicalSpace (X : Type u) where
    protected IsOpen : Set X → Prop
    protected isOpen_univ : IsOpen univ
    protected isOpen_inter : ∀ s t, IsOpen s → IsOpen t → IsOpen (s ∩ t)
    protected isOpen_sUnion : ∀ s, (∀ t ∈ s, IsOpen t) → IsOpen (⋃₀ s)
Arguments: {X : Type u} [self : TopologicalSpace X]
Goal: TopologicalSpace.IsOpen Set.univ
-- TopologicalSpace.isOpen_sUnion
@[to_additive existing TopologicalSpace]
class TopologicalSpace (X : Type u) where
    protected IsOpen : Set X → Prop
    protected isOpen_univ : IsOpen univ
    protected isOpen_inter : ∀ s t, IsOpen s → IsOpen t → IsOpen (s ∩ t)
    protected isOpen_sUnion : ∀ s, (∀ t ∈ s, IsOpen t) → IsOpen (⋃₀ s)
Arguments: {X : Type u} [self : TopologicalSpace X] (s : Set (Set X))
Goal: (∀ (t : Set X), t ∈ s → TopologicalSpace.IsOpen t) → TopologicalSpace.IsOpen (⋃₀ s)
-- TopologicalSpace.isOpen_inter
@[to_additive existing TopologicalSpace]
class TopologicalSpace (X : Type u) where
    protected IsOpen : Set X → Prop
    protected isOpen_univ : IsOpen univ
    protected isOpen_inter : ∀ s t, IsOpen s → IsOpen t → IsOpen (s ∩ t)
    protected isOpen_sUnion : ∀ s, (∀ t ∈ s, IsOpen t) → IsOpen (⋃₀ s)
Arguments: {X : Type u} [self : TopologicalSpace X] (s t : Set X)
Goal: TopologicalSpace.IsOpen s → TopologicalSpace.IsOpen t → TopologicalSpace.IsOpen (s ∩ t)
-- isOpen_univ
@[simp] theorem isOpen_univ : IsOpen (univ : Set X) 
Arguments: {X : Type u} [TopologicalSpace X]
Goal: IsOpen Set.univ
-- IsOpen.inter
theorem IsOpen.inter (hs : IsOpen s) (ht : IsOpen t) : IsOpen (s ∩ t) 
Arguments: {X : Type u} [TopologicalSpace X] {s t : Set X} (hs : IsOpen s) (ht : IsOpen t)
Goal: IsOpen (s ∩ t)
-- isOpen_sUnion
theorem isOpen_sUnion {s : Set (Set X)} (h : ∀ t ∈ s, IsOpen t) : IsOpen (⋃₀ s) 
Arguments: {X : Type u} [TopologicalSpace X] {s : Set (Set X)} (h : ∀ (t : Set X), t ∈ s → IsOpen t)
Goal: IsOpen (⋃₀ s)
-- IsClosed.isOpen_compl
class IsClosed (s : Set X) : Prop where
    isOpen_compl : IsOpen sᶜ
Arguments: {X : Type u} [TopologicalSpace X] {s : Set X} [self : IsClosed s]
Goal: IsOpen sᶜ
-- Continuous.isOpen_preimage
@[fun_prop]
structure Continuous (f : X → Y) : Prop where
    isOpen_preimage : ∀ s, IsOpen s → IsOpen (f ⁻¹' s)
Arguments: {X : Type u} {Y : Type v} [TopologicalSpace X] [TopologicalSpace Y] {f : X → Y} (self : Continuous f) (s : Set Y)
Goal: IsOpen s → IsOpen (f ⁻¹' s)
-- BaireSpace.baire_property
class BaireSpace (X : Type*) [TopologicalSpace X] : Prop where
  baire_property : ∀ f : ℕ → Set X, (∀ n, IsOpen (f n)) → (∀ n, Dense (f n)) → Dense (⋂ n, f n)
Arguments: {X : Type u_1} [TopologicalSpace X] [self : BaireSpace X] (f : ℕ → Set X)
Goal: (∀ (n : ℕ), IsOpen (f n)) → (∀ (n : ℕ), Dense (f n)) → Dense (⋂ n, f n)
-- Linarith.without_one_mul
theorem without_one_mul {M : Type*} [MulOneClass M] {a b : M} (h : 1 * a = b) : a = b 
Arguments: {M : Type u_1} [MulOneClass M] {a b : M} (h : 1 * a = b)
Goal: a = b
-- ContinuousOpenMap.map_open'
structure ContinuousOpenMap (α β : Type*) [TopologicalSpace α] [TopologicalSpace β] extends
  ContinuousMap α β where
  map_open' : IsOpenMap toFun
Arguments: {α : Type u_6} {β : Type u_7} [TopologicalSpace α] [TopologicalSpace β] (self : α →CO β)
Goal: IsOpenMap self.toFun
-- ContinuousOpenMapClass.map_open
class ContinuousOpenMapClass (F : Type*) (α β : outParam Type*) [TopologicalSpace α]
  [TopologicalSpace β] [FunLike F α β] extends ContinuousMapClass F α β : Prop where
  map_open (f : F) : IsOpenMap f
Arguments: {F : Type u_6} {α : outParam (Type u_7)} {β : outParam (Type u_8)} [TopologicalSpace α] [TopologicalSpace β] [FunLike F α β] [self : ContinuousOpenMapClass F α β] (f : F)
Goal: IsOpenMap ⇑f
-- ContinuousOpenMap.toFun_eq_coe
theorem toFun_eq_coe {f : α →CO β} : f.toFun = (f : α → β) 
Arguments: {α : Type u_2} {β : Type u_3} [TopologicalSpace α] [TopologicalSpace β] {f : α →CO β}
Goal: f.toFun = ⇑f