-
Notifications
You must be signed in to change notification settings - Fork 1
/
zorn.v
64 lines (43 loc) · 1.29 KB
/
zorn.v
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
Set Implicit Arguments.
Unset Strict Implicit.
Require Export ordinals.
Module AC.
Export Function. Export Map.
Definition is_choice_function x f := A (Function.axioms f)
(A (Function.domain f = Z (powerset x) (fun y => y<>emptyset))
(forall y, sub y x -> nonempty y -> inc (ev f y) y)).
Lemma ex_choice : forall x, ex (is_choice_function x).
Proof.
ir. exists (create (Z (powerset x) (fun y => y<>emptyset)) (fun a => rep a)).
uhg;ee. ap create_axioms. ap create_domain.
ir.
rw create_ev.
ap rep_inc. am.
ap Z_inc. ap powerset_inc. am.
uhg;ir. nin H0. apply emptyset_empty with x0.
wr H1;am.
Qed.
End AC.
Module Zorn.
Export AC. Export Order.
Definition is_inductive r a := A (is_order r a)
(forall b, sub b a -> is_total r b -> ex (is_upper_bound a r b)).
Definition is_preinductive r a := A (is_order r a)
(forall b, sub b a -> is_well_order r b -> ex (is_upper_bound a r b)).
Lemma inductive_preinductive : forall r a, is_inductive r a -> is_preinductive r a.
Proof.
uhg;ir;ee;au.
ir.
ap H. am. ap well_order_total. am.
Qed.
Section VarSec.
Variables (r : E2P) (a : E).
Hypothesis (Hi : is_preinductive r a).
Definition prechain b := A (sub b a)
(is_well_order r b).
Lemma prechain_upper : forall b, prechain b -> ex (is_upper_bound a r b).
Proof.
ir. ap Hi. am. am.
Qed.
End VarSec.
End Zorn.