1478
|
1 |
(* Title: ZF/Zorn.thy
|
516
|
2 |
ID: $Id$
|
1478
|
3 |
Author: Lawrence C Paulson, Cambridge University Computer Laboratory
|
516
|
4 |
Copyright 1994 University of Cambridge
|
|
5 |
|
|
6 |
Based upon the article
|
|
7 |
Abrial & Laffitte,
|
|
8 |
Towards the Mechanization of the Proofs of Some
|
|
9 |
Classical Theorems of Set Theory.
|
|
10 |
|
|
11 |
Union_in_Pow is proved in ZF.ML
|
|
12 |
*)
|
|
13 |
|
806
|
14 |
Zorn = OrderArith + AC + Inductive +
|
516
|
15 |
|
|
16 |
consts
|
1401
|
17 |
Subset_rel :: i=>i
|
|
18 |
increasing :: i=>i
|
|
19 |
chain, maxchain :: i=>i
|
|
20 |
super :: [i,i]=>i
|
516
|
21 |
|
753
|
22 |
defs
|
516
|
23 |
Subset_rel_def "Subset_rel(A) == {z: A*A . EX x y. z=<x,y> & x<=y & x~=y}"
|
|
24 |
increasing_def "increasing(A) == {f: Pow(A)->Pow(A). ALL x. x<=A --> x<=f`x}"
|
485
|
25 |
|
516
|
26 |
chain_def "chain(A) == {F: Pow(A). ALL X:F. ALL Y:F. X<=Y | Y<=X}"
|
|
27 |
super_def "super(A,c) == {d: chain(A). c<=d & c~=d}"
|
|
28 |
maxchain_def "maxchain(A) == {c: chain(A). super(A,c)=0}"
|
|
29 |
|
|
30 |
|
|
31 |
(** We could make the inductive definition conditional on next: increasing(S)
|
|
32 |
but instead we make this a side-condition of an introduction rule. Thus
|
|
33 |
the induction rule lets us assume that condition! Many inductive proofs
|
|
34 |
are therefore unconditional.
|
|
35 |
**)
|
|
36 |
consts
|
1401
|
37 |
"TFin" :: [i,i]=>i
|
516
|
38 |
|
|
39 |
inductive
|
|
40 |
domains "TFin(S,next)" <= "Pow(S)"
|
|
41 |
intrs
|
1478
|
42 |
nextI "[| x : TFin(S,next); next: increasing(S)
|
1155
|
43 |
|] ==> next`x : TFin(S,next)"
|
516
|
44 |
|
1478
|
45 |
Pow_UnionI "Y : Pow(TFin(S,next)) ==> Union(Y) : TFin(S,next)"
|
516
|
46 |
|
|
47 |
monos "[Pow_mono]"
|
|
48 |
con_defs "[increasing_def]"
|
|
49 |
type_intrs "[CollectD1 RS apply_funtype, Union_in_Pow]"
|
|
50 |
|
|
51 |
end
|