| author | bulwahn | 
| Tue, 04 Aug 2009 08:34:56 +0200 | |
| changeset 32317 | b4b871808223 | 
| 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: 
17479diff
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 |