]> matita.cs.unibo.it Git - helm.git/blobdiff - helm/software/matita/contribs/limits/Subset/defs.ma
limits: reorganized and attached to nightly tests (cow compiles fully)
[helm.git] / helm / software / matita / contribs / limits / Subset / defs.ma
diff --git a/helm/software/matita/contribs/limits/Subset/defs.ma b/helm/software/matita/contribs/limits/Subset/defs.ma
new file mode 100644 (file)
index 0000000..ed5c8a4
--- /dev/null
@@ -0,0 +1,63 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The HELM team.                                      *)
+(*      ||A||         http://helm.cs.unibo.it                             *)
+(*      \   /                                                             *)
+(*       \ /        This file is distributed under the terms of the       *)
+(*        v         GNU General Public License Version 2                  *)
+(*                                                                        *)
+(**************************************************************************)
+
+include "Domain/defs.ma".
+
+(* SUBSETS
+   - We use predicative subsets coded as propositional functions
+     according to G.Sambin and S.Valentini "Toolbox".
+*)
+
+definition Subset ≝ λD:Domain. D → Prop.
+
+(* subset membership (epsilon) *)
+definition sin : ∀D. Subset D → D → Prop ≝
+   λD:Domain. λU,d. cin D d ∧ U d.
+
+(* subset top (full subset) *)
+definition stop ≝ λD:Domain. true_f D.
+
+(* subset bottom (empty subset) *)
+definition sbot ≝ λD:Domain. false_f D.
+
+(* subset and (binary intersection) *)
+definition sand: ∀D. Subset D → Subset D → Subset D ≝
+   λD,U1,U2,d. U1 d ∧ U2 d. 
+
+(* subset or (binary union) *)
+definition sor: ∀D. Subset D → Subset D → Subset D ≝
+   λD,U1,U2,d. U1 d ∨ U2 d.
+
+(* subset less or equal (inclusion) *) 
+definition sle: ∀D. Subset D → Subset D → Prop ≝
+   λD,U1,U2. \iforall d. U1 d → U2 d. 
+
+(* subset overlap *) 
+definition sover: ∀D. Subset D → Subset D → Prop ≝
+   λD,U1,U2. \iexists d. U1 d ∧ U2 d. 
+
+(* coercions **************************************************************)
+
+(*
+(* the class of the subsets of a domain (not an implicit coercion) *)
+definition class_of_subsets_of \def
+   \lambda D. mk_Class (Subset D) (true_f ?) (sle ?). 
+*)
+
+(* the domain built upon a subset (not an implicit coercion) *)
+definition domain_of_subset: ∀D. Subset D \to Domain ≝
+   λD:Domain. λU. mk_Domain (mk_Class D (sin D U) (ces D)).
+
+(* the full subset of a domain *)
+coercion stop.