1 (**************************************************************************)
4 (* ||A|| A project by Andrea Asperti *)
6 (* ||I|| Developers: *)
7 (* ||T|| The HELM team. *)
8 (* ||A|| http://helm.cs.unibo.it *)
10 (* \ / This file is distributed under the terms of the *)
11 (* v GNU General Public License Version 2 *)
13 (**************************************************************************)
15 set "baseuri" "cic:/matita/PREDICATIVE-TOPOLOGY/domain_defs".
17 include "class_defs.ma".
19 (* QUANTIFICATION DOMAINS
20 - These are the categories on which we allow quantification
21 - We set up single quantifiers, parametric on the domain, so they
22 already have the properties that usually are axiomatized inside the
23 domain structure. This makes domains easier to use
28 record Domain: Type \def {
36 (* internal universal quantification *)
37 inductive iall (D:Domain) (P:D \to Prop) : Prop \def
38 | iall_intro: (\forall d:D. cin D d \to P d) \to iall D P.
40 (*CSC: the URI must disappear: there is a bug now *)
41 interpretation "internal for all" 'iall \eta.x =
42 (cic:/matita/PREDICATIVE-TOPOLOGY/domain_defs/iall.ind#xpointer(1/1) _ x).
44 notation < "hvbox(\iall ident i opt (: ty) break . p)"
45 right associative with precedence 20
46 for @{ 'iall ${default
47 @{\lambda ${ident i} : $ty. $p)}
48 @{\lambda ${ident i} . $p}}}.
52 (* internal existential quantification *)
53 inductive iex (D:Domain) (P:D \to Prop) : Prop \def
54 | iex_intro: \forall d:D. cin D d \land P d \to iex D P.
56 (*CSC: the URI must disappear: there is a bug now *)
57 interpretation "internal exist" 'iexist \eta.x =
58 (cic:/matita/PREDICATIVE-TOPOLOGY/domain_defs/iex.ind#xpointer(1/1) _ x).
60 notation < "hvbox(\iexist ident i opt (: ty) break . p)"
61 right associative with precedence 20
62 for @{ 'iexist ${default
63 @{\lambda ${ident i} : $ty. $p)}
64 @{\lambda ${ident i} . $p}}}.