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

Commit b7e20ca

Browse files
committed
feat(data/polynomial/degree/definitions): two more nat_degree_le lemmas (#14098)
This PR is similar to #14095. It proves the `le` version of `nat_degree_X_pow` and `nat_degree_monomial`. These lemmas are analogous to the existing `nat_degree_X_le` and `nat_degree_C_mul_X_pow_le`.
1 parent 6b7fa7a commit b7e20ca

File tree

1 file changed

+16
-2
lines changed

1 file changed

+16
-2
lines changed

src/data/polynomial/degree/definitions.lean

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -214,14 +214,21 @@ nat_degree_eq_of_degree_eq_some (degree_C_mul_X_pow n ha)
214214
@[simp] lemma nat_degree_C_mul_X (a : R) (ha : a ≠ 0) : nat_degree (C a * X) = 1 :=
215215
by simpa only [pow_one] using nat_degree_C_mul_X_pow 1 a ha
216216

217-
@[simp] lemma nat_degree_monomial [decidable_eq R] (i : ℕ) (r : R) :
217+
@[simp] lemma nat_degree_monomial [decidable_eq R] (i : ℕ) (r : R) :
218218
nat_degree (monomial i r) = if r = 0 then 0 else i :=
219219
begin
220220
split_ifs with hr,
221221
{ simp [hr] },
222222
{ rw [← C_mul_X_pow_eq_monomial, nat_degree_C_mul_X_pow i r hr] }
223223
end
224224

225+
lemma nat_degree_monomial_le (a : R) {m : ℕ} : (monomial m a).nat_degree ≤ m :=
226+
begin
227+
rw polynomial.nat_degree_monomial,
228+
split_ifs,
229+
exacts [nat.zero_le _, rfl.le],
230+
end
231+
225232
lemma nat_degree_monomial_eq (i : ℕ) {r : R} (r0 : r ≠ 0) :
226233
(monomial i r).nat_degree = i :=
227234
eq.trans (nat_degree_monomial _ _) (if_neg r0)
@@ -993,7 +1000,6 @@ by rw [add_assoc, add_assoc, ← add_assoc (C b * X ^ 2), add_comm, leading_coef
9931000

9941001
end semiring
9951002

996-
9971003
section nontrivial_semiring
9981004
variables [semiring R] [nontrivial R] {p q : R[X]}
9991005

@@ -1003,6 +1009,14 @@ by rw [X_pow_eq_monomial, degree_monomial _ (@one_ne_zero R _ _)]
10031009
@[simp] lemma nat_degree_X_pow (n : ℕ) : nat_degree ((X : R[X]) ^ n) = n :=
10041010
nat_degree_eq_of_degree_eq_some (degree_X_pow n)
10051011

1012+
/- This lemma explicitly does not require the `nontrivial R` assumption. -/
1013+
lemma nat_degree_X_pow_le {R : Type*} [semiring R] (n : ℕ) :
1014+
(X ^ n : R[X]).nat_degree ≤ n :=
1015+
begin
1016+
nontriviality R,
1017+
rwa polynomial.nat_degree_X_pow,
1018+
end
1019+
10061020
theorem not_is_unit_X : ¬ is_unit (X : R[X]) :=
10071021
λ ⟨⟨_, g, hfg, hgf⟩, rfl⟩, @zero_ne_one R _ _ $
10081022
by { change g * monomial 1 1 = 1 at hgf, rw [← coeff_one_zero, ← hgf], simp }

0 commit comments

Comments
 (0)