| author | haftmann |
| Fri, 20 Feb 2009 10:14:32 +0100 | |
| changeset 30008 | 20c194b71bb7 |
| parent 21423 | 6cdd0589aa73 |
| child 35849 | b5522b51cb1e |
| permissions | -rw-r--r-- |
| 7998 | 1 |
(* |
2 |
Factorisation within a factorial domain |
|
3 |
$Id$ |
|
4 |
Author: Clemens Ballarin, started 25 November 1997 |
|
5 |
*) |
|
6 |
||
|
20318
0e0ea63fe768
Restructured algebra library, added ideals and quotient rings.
ballarin
parents:
17479
diff
changeset
|
7 |
theory Factor imports Ring2 begin |
| 7998 | 8 |
|
| 21423 | 9 |
definition |
10 |
Factorisation :: "['a::ring, 'a list, 'a] => bool" where |
|
| 7998 | 11 |
(* factorisation of x into a list of irred factors and a unit u *) |
| 21423 | 12 |
"Factorisation x factors u \<longleftrightarrow> |
| 17479 | 13 |
x = foldr op* factors u & |
14 |
(ALL a : set factors. irred a) & u dvd 1" |
|
| 7998 | 15 |
|
| 21423 | 16 |
lemma irred_dvd_lemma: "!! c::'a::factorial. |
17 |
[| irred c; irred a; irred b; c dvd a*b |] ==> c assoc a | c assoc b" |
|
18 |
apply (unfold assoc_def) |
|
19 |
apply (frule factorial_prime) |
|
20 |
apply (unfold irred_def prime_def) |
|
21 |
apply blast |
|
22 |
done |
|
23 |
||
24 |
lemma irred_dvd_list_lemma: "!! c::'a::factorial. |
|
25 |
[| irred c; a dvd 1 |] ==> |
|
26 |
(ALL b : set factors. irred b) & c dvd foldr op* factors a --> |
|
27 |
(EX d. c assoc d & d : set factors)" |
|
28 |
apply (unfold assoc_def) |
|
29 |
apply (induct_tac factors) |
|
30 |
(* Base case: c dvd a contradicts irred c *) |
|
31 |
apply (simp add: irred_def) |
|
32 |
apply (blast intro: dvd_trans_ring) |
|
33 |
(* Induction step *) |
|
34 |
apply (frule factorial_prime) |
|
35 |
apply (simp add: irred_def prime_def) |
|
36 |
apply blast |
|
37 |
done |
|
38 |
||
39 |
lemma irred_dvd_list: "!! c::'a::factorial. |
|
40 |
[| irred c; ALL b : set factors. irred b; a dvd 1; |
|
41 |
c dvd foldr op* factors a |] ==> |
|
42 |
EX d. c assoc d & d : set factors" |
|
43 |
apply (rule irred_dvd_list_lemma [THEN mp]) |
|
44 |
apply auto |
|
45 |
done |
|
46 |
||
47 |
lemma Factorisation_dvd: "!! c::'a::factorial. |
|
48 |
[| irred c; Factorisation x factors u; c dvd x |] ==> |
|
49 |
EX d. c assoc d & d : set factors" |
|
50 |
apply (unfold Factorisation_def) |
|
51 |
apply (rule irred_dvd_list_lemma [THEN mp]) |
|
52 |
apply auto |
|
53 |
done |
|
54 |
||
55 |
lemma Factorisation_irred: "!! c::'a::factorial. |
|
56 |
[| Factorisation x factors u; a : set factors |] ==> irred a" |
|
57 |
unfolding Factorisation_def by blast |
|
58 |
||
| 7998 | 59 |
end |