src/HOL/Library/Zorn.thy
changeset 13652 172600c40793
parent 13551 b7f64ee8da84
child 14706 71590b7733b7
equal deleted inserted replaced
13651:ac80e101306a 13652:172600c40793
     1 (*  Title       \<in> Zorn.thy
     1 (*  Title       : Zorn.thy
     2     ID          \<in> $Id$
     2     ID          : $Id$
     3     Author      \<in> Jacques D. Fleuriot
     3     Author      : Jacques D. Fleuriot
     4     Copyright   \<in> 1998  University of Cambridge
     4     Description : Zorn's Lemma -- See Larry Paulson's Zorn.thy in ZF
     5     Description \<in> Zorn's Lemma -- See Larry Paulson's Zorn.thy in ZF
       
     6 *) 
     5 *) 
     7 
     6 
     8 header {*Zorn's Lemma*}
     7 header {*Zorn's Lemma*}
     9 
     8 
    10 theory Zorn = Main:
     9 theory Zorn = Main:
    12 text{*The lemma and section numbers refer to an unpublished article ``Towards
    11 text{*The lemma and section numbers refer to an unpublished article ``Towards
    13 the Mechanization of the Proofs of Some Classical Theorems of Set Theory,'' by
    12 the Mechanization of the Proofs of Some Classical Theorems of Set Theory,'' by
    14 Abrial and Laffitte.  *}
    13 Abrial and Laffitte.  *}
    15 
    14 
    16 constdefs
    15 constdefs
    17   chain     ::  "'a::ord set => 'a set set"
    16   chain     ::  "'a set set => 'a set set set"
    18     "chain S  == {F. F \<subseteq> S & (\<forall>x \<in> F. \<forall>y \<in> F. x \<subseteq> y | y \<subseteq> x)}" 
    17     "chain S  == {F. F \<subseteq> S & (\<forall>x \<in> F. \<forall>y \<in> F. x \<subseteq> y | y \<subseteq> x)}" 
    19 
    18 
    20   super     ::  "['a::ord set,'a set] => 'a set set"
    19   super     ::  "['a set set,'a set set] => 'a set set set"
    21     "super S c == {d. d \<in> chain(S) & c < d}"
    20     "super S c == {d. d \<in> chain(S) & c < d}"
    22 
    21 
    23   maxchain  ::  "'a::ord set => 'a set set"
    22   maxchain  ::  "'a set set => 'a set set set"
    24     "maxchain S == {c. c \<in> chain S & super S c = {}}"
    23     "maxchain S == {c. c \<in> chain S & super S c = {}}"
    25 
    24 
    26   succ      ::  "['a::ord set,'a set] => 'a set"
    25   succ      ::  "['a set set,'a set set] => 'a set set"
    27     "succ S c == if (c \<notin> chain S| c \<in> maxchain S) 
    26     "succ S c == if (c \<notin> chain S| c \<in> maxchain S) 
    28                  then c else (@c'. c': (super S c))" 
    27                  then c else (@c'. c': (super S c))" 
    29 
    28 
    30 consts 
    29 consts 
    31   "TFin" ::  "'a::ord set => 'a set set"
    30   "TFin" ::  "'a set set => 'a set set set"
    32 
    31 
    33 inductive "TFin(S)"
    32 inductive "TFin(S)"
    34   intros
    33   intros
    35     succI:        "x \<in> TFin S ==> succ S x \<in> TFin S"
    34     succI:        "x \<in> TFin S ==> succ S x \<in> TFin S"
    36     Pow_UnionI:   "Y \<in> Pow(TFin S) ==> Union(Y) \<in> TFin S"
    35     Pow_UnionI:   "Y \<in> Pow(TFin S) ==> Union(Y) \<in> TFin S"