diff options
author | Hugo Herbelin <Hugo.Herbelin@inria.fr> | 2016-10-02 22:02:52 +0200 |
---|---|---|
committer | Hugo Herbelin <Hugo.Herbelin@inria.fr> | 2017-03-03 14:41:33 +0100 |
commit | 9c21392c7957a0a1a66e5269022d5991649a38b5 (patch) | |
tree | 38359fe4336efa99979d3f9a0f85678a7ec3d05e /theories/Logic/ExtensionalFunctionRepresentative.v | |
parent | 62ed11de4c528a496e0ece70a07062a1b6d4f7d8 (diff) |
Adding a file providing extensional choice (i.e. choice over setoids).
Also integrating suggestions from Théo.
Diffstat (limited to 'theories/Logic/ExtensionalFunctionRepresentative.v')
-rw-r--r-- | theories/Logic/ExtensionalFunctionRepresentative.v | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/theories/Logic/ExtensionalFunctionRepresentative.v b/theories/Logic/ExtensionalFunctionRepresentative.v new file mode 100644 index 000000000..a9da68e16 --- /dev/null +++ b/theories/Logic/ExtensionalFunctionRepresentative.v @@ -0,0 +1,24 @@ +(************************************************************************) +(* v * The Coq Proof Assistant / The Coq Development Team *) +(* <O___,, * INRIA - CNRS - LIX - LRI - PPS - Copyright 1999-2016 *) +(* \VV/ **************************************************************) +(* // * This file is distributed under the terms of the *) +(* * GNU Lesser General Public License Version 2.1 *) +(************************************************************************) + +(** This module states a limited form axiom of functional + extensionality which selects a canonical representative in each + class of extensional functions *) + +(** Its main interest is that it is the needed ingredient to provide + axiom of choice on setoids (a.k.a. axiom of extensional choice) + when combined with classical logic and axiom of (intensonal) + choice *) + +(** It provides extensionality of functions while still supporting (a + priori) an intensional interpretation of equality *) + +Axiom extensional_function_representative : + forall A B, exists repr, forall (f : A -> B), + (forall x, f x = repr f x) /\ + (forall g, (forall x, f x = g x) -> repr f = repr g). |