equal
deleted
inserted
replaced
1383 "numeral b * x / numeral c = (numeral b / numeral c * x :: 'a :: field fps)" |
1383 "numeral b * x / numeral c = (numeral b / numeral c * x :: 'a :: field fps)" |
1384 by (cases "numeral c = (0::'a)") (simp_all add: fps_divide_unit numeral_fps_const) |
1384 by (cases "numeral c = (0::'a)") (simp_all add: fps_divide_unit numeral_fps_const) |
1385 |
1385 |
1386 lemmas fps_numeral_simps = |
1386 lemmas fps_numeral_simps = |
1387 fps_numeral_divide_divide fps_numeral_mult_divide inverse_fps_numeral neg_numeral_fps_const |
1387 fps_numeral_divide_divide fps_numeral_mult_divide inverse_fps_numeral neg_numeral_fps_const |
|
1388 |
|
1389 lemma subdegree_div: |
|
1390 assumes "q dvd p" |
|
1391 shows "subdegree ((p :: 'a :: field fps) div q) = subdegree p - subdegree q" |
|
1392 proof (cases "p = 0") |
|
1393 case False |
|
1394 from assms have "p = p div q * q" by simp |
|
1395 also from assms False have "subdegree \<dots> = subdegree (p div q) + subdegree q" |
|
1396 by (intro subdegree_mult) (auto simp: dvd_div_eq_0_iff) |
|
1397 finally show ?thesis by simp |
|
1398 qed simp_all |
|
1399 |
|
1400 lemma subdegree_div_unit: |
|
1401 assumes "q $ 0 \<noteq> 0" |
|
1402 shows "subdegree ((p :: 'a :: field fps) div q) = subdegree p" |
|
1403 using assms by (subst subdegree_div) simp_all |
1388 |
1404 |
1389 |
1405 |
1390 subsection \<open>Formal power series form a Euclidean ring\<close> |
1406 subsection \<open>Formal power series form a Euclidean ring\<close> |
1391 |
1407 |
1392 instantiation fps :: (field) euclidean_ring_cancel |
1408 instantiation fps :: (field) euclidean_ring_cancel |