src/ZF/AC/WO1_WO7.thy
author boehmes
Tue, 07 Dec 2010 14:54:31 +0100
changeset 41061 492f8fd35fc0
parent 32960 69916a850301
child 46822 95f1e700b712
permissions -rw-r--r--
centralized handling of built-in types and constants for bitvectors
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
5464
47d0d906b39a new file AC/WO1_WO7.thy
paulson
parents:
diff changeset
     1
(*  Title:      ZF/AC/WO1_WO7.thy
47d0d906b39a new file AC/WO1_WO7.thy
paulson
parents:
diff changeset
     2
    Author:     Lawrence C Paulson, CU Computer Laboratory
47d0d906b39a new file AC/WO1_WO7.thy
paulson
parents:
diff changeset
     3
    Copyright   1998  University of Cambridge
47d0d906b39a new file AC/WO1_WO7.thy
paulson
parents:
diff changeset
     4
47d0d906b39a new file AC/WO1_WO7.thy
paulson
parents:
diff changeset
     5
WO7 <-> LEMMA <-> WO1 (Rubin & Rubin p. 5)
47d0d906b39a new file AC/WO1_WO7.thy
paulson
parents:
diff changeset
     6
LEMMA is the sentence denoted by (**)
12776
249600a63ba9 Isar version of AC
paulson
parents: 11317
diff changeset
     7
249600a63ba9 Isar version of AC
paulson
parents: 11317
diff changeset
     8
Also, WO1 <-> WO8
5464
47d0d906b39a new file AC/WO1_WO7.thy
paulson
parents:
diff changeset
     9
*)
47d0d906b39a new file AC/WO1_WO7.thy
paulson
parents:
diff changeset
    10
27678
85ea2be46c71 dropped locale (open)
haftmann
parents: 24893
diff changeset
    11
theory WO1_WO7
85ea2be46c71 dropped locale (open)
haftmann
parents: 24893
diff changeset
    12
imports AC_Equiv
85ea2be46c71 dropped locale (open)
haftmann
parents: 24893
diff changeset
    13
begin
5464
47d0d906b39a new file AC/WO1_WO7.thy
paulson
parents:
diff changeset
    14
24893
b8ef7afe3a6b modernized specifications;
wenzelm
parents: 16417
diff changeset
    15
definition
5464
47d0d906b39a new file AC/WO1_WO7.thy
paulson
parents:
diff changeset
    16
    "LEMMA ==
12776
249600a63ba9 Isar version of AC
paulson
parents: 11317
diff changeset
    17
     \<forall>X. ~Finite(X) --> (\<exists>R. well_ord(X,R) & ~well_ord(X,converse(R)))"
249600a63ba9 Isar version of AC
paulson
parents: 11317
diff changeset
    18
249600a63ba9 Isar version of AC
paulson
parents: 11317
diff changeset
    19
(* ********************************************************************** *)
249600a63ba9 Isar version of AC
paulson
parents: 11317
diff changeset
    20
(* It is easy to see that WO7 is equivalent to (**)                       *)
249600a63ba9 Isar version of AC
paulson
parents: 11317
diff changeset
    21
(* ********************************************************************** *)
249600a63ba9 Isar version of AC
paulson
parents: 11317
diff changeset
    22
249600a63ba9 Isar version of AC
paulson
parents: 11317
diff changeset
    23
lemma WO7_iff_LEMMA: "WO7 <-> LEMMA"
249600a63ba9 Isar version of AC
paulson
parents: 11317
diff changeset
    24
apply (unfold WO7_def LEMMA_def)
249600a63ba9 Isar version of AC
paulson
parents: 11317
diff changeset
    25
apply (blast intro: Finite_well_ord_converse)
249600a63ba9 Isar version of AC
paulson
parents: 11317
diff changeset
    26
done
249600a63ba9 Isar version of AC
paulson
parents: 11317
diff changeset
    27
249600a63ba9 Isar version of AC
paulson
parents: 11317
diff changeset
    28
(* ********************************************************************** *)
249600a63ba9 Isar version of AC
paulson
parents: 11317
diff changeset
    29
(* It is also easy to show that LEMMA implies WO1.                        *)
249600a63ba9 Isar version of AC
paulson
parents: 11317
diff changeset
    30
(* ********************************************************************** *)
249600a63ba9 Isar version of AC
paulson
parents: 11317
diff changeset
    31
249600a63ba9 Isar version of AC
paulson
parents: 11317
diff changeset
    32
lemma LEMMA_imp_WO1: "LEMMA ==> WO1"
249600a63ba9 Isar version of AC
paulson
parents: 11317
diff changeset
    33
apply (unfold WO1_def LEMMA_def Finite_def eqpoll_def)
249600a63ba9 Isar version of AC
paulson
parents: 11317
diff changeset
    34
apply (blast intro!: well_ord_rvimage [OF bij_is_inj nat_implies_well_ord])
249600a63ba9 Isar version of AC
paulson
parents: 11317
diff changeset
    35
done
249600a63ba9 Isar version of AC
paulson
parents: 11317
diff changeset
    36
249600a63ba9 Isar version of AC
paulson
parents: 11317
diff changeset
    37
(* ********************************************************************** *)
249600a63ba9 Isar version of AC
paulson
parents: 11317
diff changeset
    38
(* The Rubins' proof of the other implication is contained within the     *)
249600a63ba9 Isar version of AC
paulson
parents: 11317
diff changeset
    39
(* following sentence \<in>                                                   *)
249600a63ba9 Isar version of AC
paulson
parents: 11317
diff changeset
    40
(* "... each infinite ordinal is well ordered by < but not by >."         *)
249600a63ba9 Isar version of AC
paulson
parents: 11317
diff changeset
    41
(* This statement can be proved by the following two theorems.            *)
249600a63ba9 Isar version of AC
paulson
parents: 11317
diff changeset
    42
(* But moreover we need to show similar property for any well ordered     *)
249600a63ba9 Isar version of AC
paulson
parents: 11317
diff changeset
    43
(* infinite set. It is not very difficult thanks to Isabelle order types  *)
249600a63ba9 Isar version of AC
paulson
parents: 11317
diff changeset
    44
(* We show that if a set is well ordered by some relation and by its     *)
249600a63ba9 Isar version of AC
paulson
parents: 11317
diff changeset
    45
(* converse, then apropriate order type is well ordered by the converse   *)
249600a63ba9 Isar version of AC
paulson
parents: 11317
diff changeset
    46
(* of it's membership relation, which in connection with the previous     *)
249600a63ba9 Isar version of AC
paulson
parents: 11317
diff changeset
    47
(* gives the conclusion.                                                  *)
249600a63ba9 Isar version of AC
paulson
parents: 11317
diff changeset
    48
(* ********************************************************************** *)
249600a63ba9 Isar version of AC
paulson
parents: 11317
diff changeset
    49
249600a63ba9 Isar version of AC
paulson
parents: 11317
diff changeset
    50
lemma converse_Memrel_not_wf_on: 
249600a63ba9 Isar version of AC
paulson
parents: 11317
diff changeset
    51
    "[| Ord(a); ~Finite(a) |] ==> ~wf[a](converse(Memrel(a)))"
249600a63ba9 Isar version of AC
paulson
parents: 11317
diff changeset
    52
apply (unfold wf_on_def wf_def)
12820
02e2ff3e4d37 lexical tidying
paulson
parents: 12776
diff changeset
    53
apply (drule nat_le_infinite_Ord [THEN le_imp_subset], assumption)
12776
249600a63ba9 Isar version of AC
paulson
parents: 11317
diff changeset
    54
apply (rule notI)
13339
0f89104dd377 Fixed quantified variable name preservation for ball and bex (bounded quants)
paulson
parents: 12820
diff changeset
    55
apply (erule_tac x = nat in allE, blast)
12776
249600a63ba9 Isar version of AC
paulson
parents: 11317
diff changeset
    56
done
249600a63ba9 Isar version of AC
paulson
parents: 11317
diff changeset
    57
249600a63ba9 Isar version of AC
paulson
parents: 11317
diff changeset
    58
lemma converse_Memrel_not_well_ord: 
249600a63ba9 Isar version of AC
paulson
parents: 11317
diff changeset
    59
    "[| Ord(a); ~Finite(a) |] ==> ~well_ord(a,converse(Memrel(a)))"
249600a63ba9 Isar version of AC
paulson
parents: 11317
diff changeset
    60
apply (unfold well_ord_def)
249600a63ba9 Isar version of AC
paulson
parents: 11317
diff changeset
    61
apply (blast dest: converse_Memrel_not_wf_on)
249600a63ba9 Isar version of AC
paulson
parents: 11317
diff changeset
    62
done
249600a63ba9 Isar version of AC
paulson
parents: 11317
diff changeset
    63
249600a63ba9 Isar version of AC
paulson
parents: 11317
diff changeset
    64
lemma well_ord_rvimage_ordertype:
249600a63ba9 Isar version of AC
paulson
parents: 11317
diff changeset
    65
     "well_ord(A,r) \<Longrightarrow>
249600a63ba9 Isar version of AC
paulson
parents: 11317
diff changeset
    66
       rvimage (ordertype(A,r), converse(ordermap(A,r)),r) =
249600a63ba9 Isar version of AC
paulson
parents: 11317
diff changeset
    67
       Memrel(ordertype(A,r))" 
249600a63ba9 Isar version of AC
paulson
parents: 11317
diff changeset
    68
by (blast intro: ordertype_ord_iso [THEN ord_iso_sym] ord_iso_rvimage_eq
249600a63ba9 Isar version of AC
paulson
parents: 11317
diff changeset
    69
             Memrel_type [THEN subset_Int_iff [THEN iffD1]] trans)
249600a63ba9 Isar version of AC
paulson
parents: 11317
diff changeset
    70
249600a63ba9 Isar version of AC
paulson
parents: 11317
diff changeset
    71
lemma well_ord_converse_Memrel:
249600a63ba9 Isar version of AC
paulson
parents: 11317
diff changeset
    72
     "[| well_ord(A,r); well_ord(A,converse(r)) |]   
249600a63ba9 Isar version of AC
paulson
parents: 11317
diff changeset
    73
      ==> well_ord(ordertype(A,r), converse(Memrel(ordertype(A,r))))" 
249600a63ba9 Isar version of AC
paulson
parents: 11317
diff changeset
    74
apply (subst well_ord_rvimage_ordertype [symmetric], assumption) 
249600a63ba9 Isar version of AC
paulson
parents: 11317
diff changeset
    75
apply (rule rvimage_converse [THEN subst])
249600a63ba9 Isar version of AC
paulson
parents: 11317
diff changeset
    76
apply (blast intro: ordertype_ord_iso ord_iso_sym ord_iso_is_bij
249600a63ba9 Isar version of AC
paulson
parents: 11317
diff changeset
    77
                    bij_is_inj well_ord_rvimage)
249600a63ba9 Isar version of AC
paulson
parents: 11317
diff changeset
    78
done
249600a63ba9 Isar version of AC
paulson
parents: 11317
diff changeset
    79
249600a63ba9 Isar version of AC
paulson
parents: 11317
diff changeset
    80
lemma WO1_imp_LEMMA: "WO1 ==> LEMMA"
249600a63ba9 Isar version of AC
paulson
parents: 11317
diff changeset
    81
apply (unfold WO1_def LEMMA_def, clarify) 
249600a63ba9 Isar version of AC
paulson
parents: 11317
diff changeset
    82
apply (blast dest: well_ord_converse_Memrel
249600a63ba9 Isar version of AC
paulson
parents: 11317
diff changeset
    83
                   Ord_ordertype [THEN converse_Memrel_not_well_ord]
32960
69916a850301 eliminated hard tabulators, guessing at each author's individual tab-width;
wenzelm
parents: 27678
diff changeset
    84
             intro: ordertype_ord_iso ord_iso_is_bij bij_is_inj lepoll_Finite
12776
249600a63ba9 Isar version of AC
paulson
parents: 11317
diff changeset
    85
                    lepoll_def [THEN def_imp_iff, THEN iffD2] )
249600a63ba9 Isar version of AC
paulson
parents: 11317
diff changeset
    86
done
249600a63ba9 Isar version of AC
paulson
parents: 11317
diff changeset
    87
249600a63ba9 Isar version of AC
paulson
parents: 11317
diff changeset
    88
lemma WO1_iff_WO7: "WO1 <-> WO7"
249600a63ba9 Isar version of AC
paulson
parents: 11317
diff changeset
    89
apply (simp add: WO7_iff_LEMMA)
249600a63ba9 Isar version of AC
paulson
parents: 11317
diff changeset
    90
apply (blast intro: LEMMA_imp_WO1 WO1_imp_LEMMA)
249600a63ba9 Isar version of AC
paulson
parents: 11317
diff changeset
    91
done
249600a63ba9 Isar version of AC
paulson
parents: 11317
diff changeset
    92
249600a63ba9 Isar version of AC
paulson
parents: 11317
diff changeset
    93
249600a63ba9 Isar version of AC
paulson
parents: 11317
diff changeset
    94
249600a63ba9 Isar version of AC
paulson
parents: 11317
diff changeset
    95
(* ********************************************************************** *)
249600a63ba9 Isar version of AC
paulson
parents: 11317
diff changeset
    96
(*            The proof of WO8 <-> WO1 (Rubin & Rubin p. 6)               *)
249600a63ba9 Isar version of AC
paulson
parents: 11317
diff changeset
    97
(* ********************************************************************** *)
249600a63ba9 Isar version of AC
paulson
parents: 11317
diff changeset
    98
249600a63ba9 Isar version of AC
paulson
parents: 11317
diff changeset
    99
lemma WO1_WO8: "WO1 ==> WO8"
249600a63ba9 Isar version of AC
paulson
parents: 11317
diff changeset
   100
by (unfold WO1_def WO8_def, fast)
249600a63ba9 Isar version of AC
paulson
parents: 11317
diff changeset
   101
249600a63ba9 Isar version of AC
paulson
parents: 11317
diff changeset
   102
249600a63ba9 Isar version of AC
paulson
parents: 11317
diff changeset
   103
(* The implication "WO8 ==> WO1": a faithful image of Rubin & Rubin's proof*)
249600a63ba9 Isar version of AC
paulson
parents: 11317
diff changeset
   104
lemma WO8_WO1: "WO8 ==> WO1"
249600a63ba9 Isar version of AC
paulson
parents: 11317
diff changeset
   105
apply (unfold WO1_def WO8_def)
249600a63ba9 Isar version of AC
paulson
parents: 11317
diff changeset
   106
apply (rule allI)
249600a63ba9 Isar version of AC
paulson
parents: 11317
diff changeset
   107
apply (erule_tac x = "{{x}. x \<in> A}" in allE)
249600a63ba9 Isar version of AC
paulson
parents: 11317
diff changeset
   108
apply (erule impE)
249600a63ba9 Isar version of AC
paulson
parents: 11317
diff changeset
   109
 apply (rule_tac x = "\<lambda>a \<in> {{x}. x \<in> A}. THE x. a={x}" in exI)
249600a63ba9 Isar version of AC
paulson
parents: 11317
diff changeset
   110
 apply (force intro!: lam_type simp add: singleton_eq_iff the_equality)
249600a63ba9 Isar version of AC
paulson
parents: 11317
diff changeset
   111
apply (blast intro: lam_sing_bij bij_is_inj well_ord_rvimage)
249600a63ba9 Isar version of AC
paulson
parents: 11317
diff changeset
   112
done
5464
47d0d906b39a new file AC/WO1_WO7.thy
paulson
parents:
diff changeset
   113
47d0d906b39a new file AC/WO1_WO7.thy
paulson
parents:
diff changeset
   114
end