]> matita.cs.unibo.it Git - helm.git/blob - matita/contribs/PREDICATIVE-TOPOLOGY/subset_defs.ma
tagged 0.5.0-rc1
[helm.git] / matita / contribs / PREDICATIVE-TOPOLOGY / subset_defs.ma
1 (**************************************************************************)
2 (*       ___                                                              *)
3 (*      ||M||                                                             *)
4 (*      ||A||       A project by Andrea Asperti                           *)
5 (*      ||T||                                                             *)
6 (*      ||I||       Developers:                                           *)
7 (*      ||T||         The HELM team.                                      *)
8 (*      ||A||         http://helm.cs.unibo.it                             *)
9 (*      \   /                                                             *)
10 (*       \ /        This file is distributed under the terms of the       *)
11 (*        v         GNU General Public License Version 2                  *)
12 (*                                                                        *)
13 (**************************************************************************)
14
15 (* STATO: NON COMPILA: dev'essere aggiornato *)
16
17 set "baseuri" "cic:/matita/PREDICATIVE-TOPOLOGY/subset_defs".
18
19 include "domain_defs.ma".
20
21 (* SUBSETS
22    - We use predicative subsets coded as propositional functions
23      according to G.Sambin and S.Valentini "Toolbox" 
24 *)
25
26 definition Subset \def \lambda (D:Domain). D \to Prop.
27
28 (* subset membership (epsilon) *)
29 definition sin : \forall D. Subset D \to D \to Prop \def
30    \lambda (D:Domain). \lambda U,d. cin D d \and U d.
31
32 (* subset top (full subset) *)
33 definition stop \def \lambda (D:Domain). true_f D.
34
35 (* subset bottom (empty subset) *)
36 definition sbot \def \lambda (D:Domain). false_f D.
37
38 (* subset and (binary intersection) *)
39 definition sand: \forall D. Subset D \to Subset D \to Subset D \def 
40    \lambda D,U1,U2,d. U1 d \land U2 d. 
41
42 (* subset or (binary union) *)
43 definition sor: \forall D. Subset D \to Subset D \to Subset D \def 
44    \lambda D,U1,U2,d. U1 d \lor U2 d. 
45
46 (* subset less or equal (inclusion) *) 
47 definition sle: \forall D. Subset D \to Subset D \to Prop \def 
48    \lambda D,U1,U2. \iforall d. U1 d \to U2 d. 
49
50 (* subset overlap *) 
51 definition sover: \forall D. Subset D \to Subset D \to Prop \def 
52    \lambda D,U1,U2. \iexists d. U1 d \land U2 d. 
53
54 (* coercions **************************************************************)
55
56 (*
57 (* the class of the subsets of a domain (not an implicit coercion) *)
58 definition class_of_subsets_of \def
59    \lambda D. mk_Class (Subset D) (true_f ?) (sle ?). 
60 *)
61
62 (* the domain built upon a subset (not an implicit coercion) *)
63 definition domain_of_subset: \forall D. Subset D \to Domain \def
64    \lambda (D:Domain). \lambda U. 
65    mk_Domain (mk_Class D (sin D U) (cle1 D)).
66
67 (* the full subset of a domain *)
68 coercion stop.