Skip to content
This repository was archived by the owner on Jul 24, 2024. It is now read-only.

Commit 12a8361

Browse files
committed
feat(data/polynomial): simp lemmas about polynomial derivatives (#5256)
Add simp lemmas derivative_bit0 derivative_bit1 and derivative_X_pow
1 parent c6de6e4 commit 12a8361

File tree

2 files changed

+31
-0
lines changed

2 files changed

+31
-0
lines changed

src/data/polynomial/derivative.lean

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,10 @@ lemma derivative_monomial (a : R) (n : ℕ) : derivative (monomial n a) = monomi
6464
lemma derivative_C_mul_X_pow (a : R) (n : ℕ) : derivative (C a * X ^ n) = C (a * n) * X^(n - 1) :=
6565
by rw [C_mul_X_pow_eq_monomial, C_mul_X_pow_eq_monomial, derivative_monomial]
6666

67+
@[simp] lemma derivative_X_pow (n : ℕ) :
68+
derivative (X ^ n : polynomial R) = (n : polynomial R) * X ^ (n - 1) :=
69+
by convert derivative_C_mul_X_pow (1 : R) n; simp
70+
6771
@[simp] lemma derivative_C {a : R} : derivative (C a) = 0 :=
6872
by simp [derivative_apply]
6973

@@ -73,6 +77,12 @@ by simp [derivative_apply]
7377
@[simp] lemma derivative_one : derivative (1 : polynomial R) = 0 :=
7478
derivative_C
7579

80+
@[simp] lemma derivative_bit0 {a : polynomial R} : derivative (bit0 a) = bit0 (derivative a) :=
81+
by simp [bit0]
82+
83+
@[simp] lemma derivative_bit1 {a : polynomial R} : derivative (bit1 a) = bit0 (derivative a) :=
84+
by simp [bit1]
85+
7686
@[simp] lemma derivative_add {f g : polynomial R} :
7787
derivative (f + g) = derivative f + derivative g :=
7888
derivative.map_add f g

test/differentiable.lean

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,3 +62,24 @@ example : differentiable ℂ (λ x, (sin x) / (exp x)) :=
6262
by simp [exp_ne_zero]
6363

6464
end complex
65+
66+
namespace polynomial
67+
68+
variables {R : Type*} [comm_semiring R]
69+
70+
example : (2 : polynomial R).derivative = 0 :=
71+
by conv_lhs { simp }
72+
73+
example : (3 + X : polynomial R).derivative = 1 :=
74+
by conv_lhs { simp }
75+
76+
example : (2 * X ^ 2 : polynomial R).derivative = 4 * X :=
77+
by conv_lhs { simp, ring, }
78+
79+
example : (X ^ 2 : polynomial R).derivative = 2 * X :=
80+
by conv_lhs { simp }
81+
82+
example : ((C 2 * X ^ 3).derivative : polynomial R) = 6 * X ^ 2 :=
83+
by conv_lhs { simp, ring, }
84+
85+
end polynomial

0 commit comments

Comments
 (0)