aboutsummaryrefslogtreecommitdiffhomepage
path: root/theories/Logic/ChoiceFacts.v
diff options
context:
space:
mode:
authorGravatar herbelin <herbelin@85f007b7-540e-0410-9357-904b9bb8a0f7>2003-10-28 14:43:40 +0000
committerGravatar herbelin <herbelin@85f007b7-540e-0410-9357-904b9bb8a0f7>2003-10-28 14:43:40 +0000
commit7a9940d257b5cd95942df09dd8d16d3dd35b199c (patch)
tree8eae8c3563bf2172a39daa11578fba202fc46bd1 /theories/Logic/ChoiceFacts.v
parenteaa4a54445b816d85dc7fa53acbde3676af1bf73 (diff)
MAJ
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@4725 85f007b7-540e-0410-9357-904b9bb8a0f7
Diffstat (limited to 'theories/Logic/ChoiceFacts.v')
-rw-r--r--theories/Logic/ChoiceFacts.v31
1 files changed, 18 insertions, 13 deletions
diff --git a/theories/Logic/ChoiceFacts.v b/theories/Logic/ChoiceFacts.v
index 2a501eca0..d0798d7a2 100644
--- a/theories/Logic/ChoiceFacts.v
+++ b/theories/Logic/ChoiceFacts.v
@@ -11,28 +11,29 @@
(* We show that the functional formulation of the axiom of Choice
(usual formulation in type theory) is equivalent to its relational
formulation (only formulation of set theory) + the axiom of
- (parametric) finite description (aka as axiom of unique choice) *)
+ (parametric) definite description (aka axiom of unique choice) *)
(* This shows that the axiom of choice can be assumed (under its
relational formulation) without known inconsistency with classical logic,
- though finite description conflicts with classical logic *)
+ though definite description conflicts with classical logic *)
Definition RelationalChoice :=
- (A:Type;B:Set;R: A->B->Prop)
+ (A:Type;B:Type;R: A->B->Prop)
((x:A)(EX y:B|(R x y)))
-> (EXT R':A->B->Prop |
((x:A)(EX y:B|(R x y)/\(R' x y)/\ ((y':B) (R' x y') -> y=y')))).
Definition FunctionalChoice :=
- (A:Type;B:Set;R: A->B->Prop)
+ (A:Type;B:Type;R: A->B->Prop)
((x:A)(EX y:B|(R x y))) -> (EX f:A->B | (x:A)(R x (f x))).
-Definition ParamFiniteDescription :=
- (A:Type;B:Set;R: A->B->Prop)
+Definition ParamDefiniteDescription :=
+ (A:Type;B:Type;R: A->B->Prop)
((x:A)(EX y:B|(R x y)/\ ((y':B)(R x y') -> y=y')))
-> (EX f:A->B | (x:A)(R x (f x))).
-Lemma lem1 : ParamFiniteDescription->RelationalChoice->FunctionalChoice.
+Lemma description_rel_choice_imp_funct_choice :
+ ParamDefiniteDescription->RelationalChoice->FunctionalChoice.
Intros Descr RelCh.
Red; Intros A B R H.
NewDestruct (RelCh A B R H) as [R' H0].
@@ -45,7 +46,8 @@ Rewrite <- (H4 (f x) (H1 x)).
Exact H2.
Qed.
-Lemma lem2 : FunctionalChoice->RelationalChoice.
+Lemma funct_choice_imp_rel_choice :
+ FunctionalChoice->RelationalChoice.
Intros FunCh.
Red; Intros A B R H.
NewDestruct (FunCh A B R H) as [f H0].
@@ -54,7 +56,8 @@ Intro x; Exists (f x);
Split; [Apply H0| Split;[Reflexivity| Intros y H1; Symmetry; Exact H1]].
Qed.
-Lemma lem3 : FunctionalChoice->ParamFiniteDescription.
+Lemma funct_choice_imp_description :
+ FunctionalChoice->ParamDefiniteDescription.
Intros FunCh.
Red; Intros A B R H.
NewDestruct (FunCh A B R) as [f H0].
@@ -66,9 +69,11 @@ Exists y; Exact H0.
Exists f; Exact H0.
Qed.
-Theorem FunChoice_Equiv_RelChoice_and_ParamFinDescr :
- FunctionalChoice <-> RelationalChoice /\ ParamFiniteDescription.
+Theorem FunChoice_Equiv_RelChoice_and_ParamDefinDescr :
+ FunctionalChoice <-> RelationalChoice /\ ParamDefiniteDescription.
Split.
-Intro H; Split; [Exact (lem2 H) | Exact (lem3 H)].
-Intros [H H0]; Exact (lem1 H0 H).
+Intro H; Split; [
+ Exact (funct_choice_imp_rel_choice H)
+ | Exact (funct_choice_imp_description H)].
+Intros [H H0]; Exact (description_rel_choice_imp_funct_choice H0 H).
Qed.