equal
deleted
inserted
replaced
528 |
528 |
529 text {* |
529 text {* |
530 The set's element type must be wellordered (e.g. the natural numbers). |
530 The set's element type must be wellordered (e.g. the natural numbers). |
531 *} |
531 *} |
532 |
532 |
533 consts |
533 primrec (in wellorder) enumerate :: "'a set \<Rightarrow> nat \<Rightarrow> 'a" where |
534 enumerate :: "'a::wellorder set => (nat => 'a::wellorder)" |
534 enumerate_0: "enumerate S 0 = (LEAST n. n \<in> S)" |
535 primrec |
535 | enumerate_Suc: "enumerate S (Suc n) = enumerate (S - {LEAST n. n \<in> S}) n" |
536 enumerate_0: "enumerate S 0 = (LEAST n. n \<in> S)" |
|
537 enumerate_Suc: "enumerate S (Suc n) = enumerate (S - {LEAST n. n \<in> S}) n" |
|
538 |
536 |
539 lemma enumerate_Suc': |
537 lemma enumerate_Suc': |
540 "enumerate S (Suc n) = enumerate (S - {enumerate S 0}) n" |
538 "enumerate S (Suc n) = enumerate (S - {enumerate S 0}) n" |
541 by simp |
539 by simp |
542 |
540 |