From: Ferruccio Guidi Date: Mon, 6 Apr 2009 12:42:56 +0000 (+0000) Subject: limits: reorganized and attached to nightly tests (cow compiles fully) X-Git-Tag: make_still_working~4119 X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=commitdiff_plain;h=700b170aa9b0377d33f1edd44de8d89129477fb8;p=helm.git limits: reorganized and attached to nightly tests (cow compiles fully) --- diff --git a/helm/software/matita/Makefile b/helm/software/matita/Makefile index 28cc4c24f..8502bc7b8 100644 --- a/helm/software/matita/Makefile +++ b/helm/software/matita/Makefile @@ -181,23 +181,23 @@ distclean: clean $(H)rm -f matita.conf.xml.sample $(H)rm -rf .matita -TEST_DIRS = \ - legacy \ - library \ - contribs/character \ - tests \ - contribs/dama/dama \ - contribs/assembly \ - contribs/CoRN \ - contribs/RELATIONAL \ - contribs/LOGIC \ - contribs/PREDICATIVE-TOPOLOGY \ +TEST_DIRS = \ + legacy \ + library \ + contribs/character \ + tests \ + contribs/dama/dama \ + contribs/assembly \ + contribs/CoRN \ + contribs/RELATIONAL \ + contribs/LOGIC \ + contribs/limits \ $(NULL) # library_auto -TEST_DIRS_OPT = \ - $(TEST_DIRS) \ - contribs/LAMBDA-TYPES \ +TEST_DIRS_OPT = \ + $(TEST_DIRS) \ + contribs/LAMBDA-TYPES \ $(NULL) .PHONY: tests tests.opt cleantests cleantests.opt diff --git a/helm/software/matita/contribs/limits/Class/defs.ma b/helm/software/matita/contribs/limits/Class/defs.ma new file mode 100644 index 000000000..a0b07ccee --- /dev/null +++ b/helm/software/matita/contribs/limits/Class/defs.ma @@ -0,0 +1,82 @@ +(**************************************************************************) +(* ___ *) +(* ||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 "preamble.ma". + +(* ACZEL CATEGORIES: + - We use typoids with a compatible membership relation + - The category is intended to be the domain of the membership relation + - The membership relation is necessary because we need to regard the + domain of a propositional function (ie a predicative subset) as a + quantification domain and therefore as a category, but there is no + type in CIC representing the domain of a propositional function + - We set up a single equality predicate, parametric on the category, + defined as the reflexive, symmetic, transitive and compatible closure + of the "ces" (class equality step) predicate given inside the category. +*) + +record Class: Type ≝ { + class:> Type; + cin: class → Prop; + ces: class → class \to Prop +}. + +(* default inhabitance predicates *) +definition true_f ≝ λ(X:Type). λ(_:X). True. +definition false_f ≝ λ(X:Type). λ(_:X). False. + +(* equality predicate *) +inductive ceq (C:Class): class C → class C → Prop ≝ + | ceq_refl : ∀c. cin ? c → ceq ? c c + | ceq_trans: ∀c1,c,c2. cin ? c1 → ces ? c1 c → ceq ? c c2 → ceq ? c1 c2 + | ceq_conf : ∀c1,c,c2. cin ? c1 → ces ? c c1 → ceq ? c c2 → ceq ? c1 c2 +. +(* +(* external universal quantification *) +inductive call (C:Class) (P:C \to Prop) : Prop ≝ + | call_intro: (\forall c. cin ? c \to P c) \to call C P. + +inductive call2 (C1,C2:Class) (P:C1 \to C2 \to Prop) : Prop \def + | call2_intro: + (\forall c1,c2. cin ? c1 \to cin ? c2 \to P c1 c2) \to call2 C1 C2 P. +*) +(* notations **************************************************************) +(* +(*CSC: the URI must disappear: there is a bug now *) +interpretation "external for all" 'xforall \eta.x = + (cic:/matita/limits/Class/defs/call.ind#xpointer(1/1) _ x). + +notation < "hvbox(\xforall ident i opt (: ty) break . p)" + right associative with precedence 20 +for @{ 'xforall ${default + @{\lambda ${ident i} : $ty. $p} + @{\lambda ${ident i} . $p}}}. + +notation > "\forall list1 ident x sep , opt (: T). term 19 Px" + with precedence 20 + for ${ default + @{ ${ fold right @{$Px} rec acc @{'xforall (λ${ident x}:$T.$acc)} } } + @{ ${ fold right @{$Px} rec acc @{'xforall (λ${ident x}.$acc)} } } + }. + +(*CSC: the URI must disappear: there is a bug now *) +interpretation "external for all 2" 'xforall2 \eta.x \eta.y = + (cic:/matita/limits/Class/defs/call2.ind#xpointer(1/1) _ _ x y). + +notation > "hvbox(\xforall ident i1 opt (: ty1) ident i2 opt (: ty2) break . p)" + with precedence 20 +for @{ 'xforall2 ${default + @{\lambda ${ident i1} : $ty1. \lambda ${ident i2} : $ty2. $p} + @{\lambda ${ident i1}, ${ident i2}. $p}}}. +*) diff --git a/helm/software/matita/contribs/limits/Class/eq.ma b/helm/software/matita/contribs/limits/Class/eq.ma new file mode 100644 index 000000000..69d6836d8 --- /dev/null +++ b/helm/software/matita/contribs/limits/Class/eq.ma @@ -0,0 +1,44 @@ +(**************************************************************************) +(* ___ *) +(* ||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 "Class/defs.ma". + +(* ACZEL CATEGORIES: + - Here we prove the standard properties of the equality. +*) + +theorem ceq_cin_sx: ∀C,c1,c2. ceq C c1 c2 → cin ? c1. +intros; elim H; clear H c1 c2; autobatch. +qed. + +theorem ceq_cin_dx: ∀C,c1,c2. ceq C c1 c2 → cin ? c2. +intros; elim H; clear H c1 c2; autobatch. +qed. + +theorem ceq_trans: ∀C,c1,c2. ceq C c1 c2 → ∀c3. ceq ? c2 c3 → ceq ? c1 c3. +intros 4; elim H; clear H c1 c2; autobatch. +qed. + +theorem ceq_conf: ∀C,c1,c2. ceq C c1 c2 → ∀c3. ceq ? c1 c3 → ceq ? c2 c3. +intros 4; elim H; clear H c1 c2; autobatch depth = 4. +qed. + +theorem ceq_sym: ∀ C,c1,c2. ceq C c1 c2 → ceq ? c2 c1. +intros; autobatch depth = 4. +qed. + +theorem ceq_repl: ∀C,c1,c2. ceq C c1 c2 → + ∀d1. ceq ? c1 d1 → ∀d2. ceq ? c2 d2 → ceq ? d1 d2. +intros; autobatch. +qed. diff --git a/helm/software/matita/contribs/limits/Domain/data.ma b/helm/software/matita/contribs/limits/Domain/data.ma new file mode 100644 index 000000000..f18e43279 --- /dev/null +++ b/helm/software/matita/contribs/limits/Domain/data.ma @@ -0,0 +1,37 @@ +(**************************************************************************) +(* ___ *) +(* ||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". + +(* QUANTIFICATION DOMAINS + - Here we define some useful domains based on data types. +*) + +definition DBool: Domain ≝ + mk_Domain (mk_Class bool (true_f ?) (eq ?)). +(* +definition dbool_ixfam : \forall (C:Class). C \to C \to (DBool \to C) \def + \lambda C,c0,c1,b. + match b in bool with + [ false \Rightarrow c0 + | true \Rightarrow c1 + ]. +*) +definition DVoid: Domain ≝ + mk_Domain (mk_Class void (true_f ?) (eq ?)). +(* +definition dvoid_ixfam : \forall (C:Class). (DVoid \to C) \def + \lambda C,v. + match v in void with []. +*) diff --git a/helm/software/matita/contribs/limits/Domain/defs.ma b/helm/software/matita/contribs/limits/Domain/defs.ma new file mode 100644 index 000000000..2250e811c --- /dev/null +++ b/helm/software/matita/contribs/limits/Domain/defs.ma @@ -0,0 +1,68 @@ +(**************************************************************************) +(* ___ *) +(* ||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 "Class/defs.ma". + +(* QUANTIFICATION DOMAINS + - These are the categories on which we allow quantification. + - We set up single quantifiers, parametric on the domain. +*) + +record Domain: Type ≝ { + domain:> Class +}. + +(* internal universal quantification *) +inductive dall (D:Domain) (P:D → Prop): Prop ≝ + | dall_intro: (∀d. cin ? d → P d) → dall D P. + +(* internal existential quantification *) +inductive dex (D:Domain) (P:D → Prop): Prop ≝ + | dex_intro: ∀d. cin D d → P d → dex D P. + +(* notations **************************************************************) + +(*CSC: the URI must disappear: there is a bug now *) +interpretation "internal for all" 'iforall η.x = + (cic:/matita/limits/Domain/defs/dall.ind#xpointer(1/1) _ x). + +notation < "hvbox(\iforall ident i opt (: ty) break . p)" + right associative with precedence 20 +for @{ 'iforall ${default + @{\lambda ${ident i} : $ty. $p} + @{\lambda ${ident i} . $p}}}. + +notation > "\iforall list1 ident x sep , opt (: T). term 19 Px" + with precedence 20 +for ${ default + @{ ${ fold right @{$Px} rec acc @{'iforall (λ${ident x}:$T.$acc)} } } + @{ ${ fold right @{$Px} rec acc @{'iforall (λ${ident x}.$acc)} } } +}. + +(*CSC: the URI must disappear: there is a bug now *) +interpretation "internal exists" 'iexists η.x = + (cic:/matita/limits/Domain/defs/dex.ind#xpointer(1/1) _ x). + +notation < "hvbox(\iexists ident i opt (: ty) break . p)" + right associative with precedence 20 +for @{ 'iexists ${default + @{\lambda ${ident i} : $ty. $p} + @{\lambda ${ident i} . $p}}}. + +notation > "\iexists list1 ident x sep , opt (: T). term 19 Px" + with precedence 20 +for ${ default + @{ ${ fold right @{$Px} rec acc @{'iexists (λ${ident x}:$T.$acc)} } } + @{ ${ fold right @{$Px} rec acc @{'iexists (λ${ident x}.$acc)} } } +}. diff --git a/helm/software/matita/contribs/limits/Subset/defs.ma b/helm/software/matita/contribs/limits/Subset/defs.ma new file mode 100644 index 000000000..ed5c8a47e --- /dev/null +++ b/helm/software/matita/contribs/limits/Subset/defs.ma @@ -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. diff --git a/helm/software/matita/contribs/limits/class_defs.ma b/helm/software/matita/contribs/limits/class_defs.ma deleted file mode 100644 index f337d8ce5..000000000 --- a/helm/software/matita/contribs/limits/class_defs.ma +++ /dev/null @@ -1,79 +0,0 @@ -(**************************************************************************) -(* ___ *) -(* ||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 *) -(* *) -(**************************************************************************) - -(* STATO: COMPILA *) - -(* Project started Wed Oct 12, 2005 ***************************************) - -set "baseuri" "cic:/matita/PREDICATIVE-TOPOLOGY/class_defs". - -include "logic/connectives.ma". - -(* ACZEL CATEGORIES: - - We use typoids with a compatible membership relation - - The category is intended to be the domain of the membership relation - - The membership relation is necessary because we need to regard the - domain of a propositional function (ie a predicative subset) as a - quantification domain and therefore as a category, but there is no - type in CIC representing the domain of a propositional function - - We set up a single equality predicate, parametric on the category, - defined as the reflexive, symmetic, transitive and compatible closure - of the cle1 predicate given inside the category. Then we prove the - properties of the equality that usually are axiomatized inside the - category structure. This makes categories easier to use -*) - -definition true_f \def \lambda (X:Type). \lambda (_:X). True. - -definition false_f \def \lambda (X:Type). \lambda (_:X). False. - -record Class: Type \def { - class:> Type; - cin: class \to Prop; - ceq: class \to class \to Prop; - cin_repl: \forall c1,c2. cin c1 \to ceq c1 c2 \to cin c2; - ceq_repl: \forall c1,c2,d1,d2. cin c1 \to - ceq c1 c2 \to ceq c1 d1 \to ceq c2 d2 \to ceq d1 d2; - ceq_refl: \forall c. cin c \to ceq c c -}. - -(* external universal quantification *) -inductive call (C:Class) (P:C \to Prop) : Prop \def - | call_intro: (\forall c. cin ? c \to P c) \to call C P. - -inductive call2 (C1,C2:Class) (P:C1 \to C2 \to Prop) : Prop \def - | call2_intro: - (\forall c1,c2. cin ? c1 \to cin ? c2 \to P c1 c2) \to call2 C1 C2 P. - -(* notations **************************************************************) - -(*CSC: the URI must disappear: there is a bug now *) -interpretation "external for all" 'xforall \eta.x = - (cic:/matita/PREDICATIVE-TOPOLOGY/class_defs/call.ind#xpointer(1/1) _ x). - -notation > "hvbox(\xforall ident i opt (: ty) break . p)" - with precedence 20 -for @{ 'xforall ${default - @{\lambda ${ident i} : $ty. $p} - @{\lambda ${ident i} . $p}}}. - -(*CSC: the URI must disappear: there is a bug now *) -interpretation "external for all 2" 'xforall2 \eta.x \eta.y = - (cic:/matita/PREDICATIVE-TOPOLOGY/class_defs/call2.ind#xpointer(1/1) _ _ x y). - -notation > "hvbox(\xforall ident i1 opt (: ty1) ident i2 opt (: ty2) break . p)" - with precedence 20 -for @{ 'xforall2 ${default - @{\lambda ${ident i1} : $ty1. \lambda ${ident i2} : $ty2. $p} - @{\lambda ${ident i1}, ${ident i2}. $p}}}. diff --git a/helm/software/matita/contribs/limits/class_eq.ma b/helm/software/matita/contribs/limits/class_eq.ma deleted file mode 100644 index b86e5f296..000000000 --- a/helm/software/matita/contribs/limits/class_eq.ma +++ /dev/null @@ -1,32 +0,0 @@ -(**************************************************************************) -(* ___ *) -(* ||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 *) -(* *) -(**************************************************************************) - -(* STATO: NON COMPILA: dev'essere aggiornato *) - -set "baseuri" "cic:/matita/PREDICATIVE-TOPOLOGY/class_eq". - -include "class_defs.ma". - -theorem ceq_trans: \forall C. \xforall c1,c2. ceq C c1 c2 \to - \xforall c3. ceq ? c2 c3 \to ceq ? c1 c3. -intros. - -(* -apply ceq_intro; apply cle_trans; [|auto new timeout=100|auto new timeout=100||auto new timeout=100|auto new timeout=100]. -qed. - -theorem ceq_sym: \forall C,c1,c2. ceq C c1 c2 \to ceq C c2 c1. -intros; elim H; clear H.; auto new timeout=100. -qed. -*) diff --git a/helm/software/matita/contribs/limits/coa_defs.ma b/helm/software/matita/contribs/limits/coa_defs.ma deleted file mode 100644 index 1d6c763ab..000000000 --- a/helm/software/matita/contribs/limits/coa_defs.ma +++ /dev/null @@ -1,63 +0,0 @@ -(**************************************************************************) -(* ___ *) -(* ||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 *) -(* *) -(**************************************************************************) - -(* STATO: NON COMPILA: attendo che l'oggetto "pippo" venga accettato *) - -set "baseuri" "cic:/matita/PREDICATIVE-TOPOLOGY/coa_defs". - -include "iff.ma". -include "domain_data.ma". - -(* COMPLETE OVERLAP ALGEBRAS -*) - -record COA: Type \def { - coa:> Class; (* carrier *) - le: coa \to coa \to Prop; (* inclusion *) - ov: coa \to coa \to Prop; (* overlap *) - sup: \forall (D:Domain). (D \to coa) \to coa; (* supremum *) - inf: \forall (D:Domain). (D \to coa) \to coa; (* infimum *) - le_refl: \forall p. le p p; - le_trans: \forall p,r. le p r \to \forall q. le r q \to le p q; - le_antysym: \forall q,p. le q p \to le p q \to ceq ? p q; - ov_sym: \forall q,p. ov q p \to ov p q; - sup_le: \forall D,ps,q. le (sup D ps) q \liff \iforall d. le (ps d) q; - inf_le: \forall D,p,qs. le p (inf D qs) \liff \iforall d. le p (qs d); - sup_ov: \forall D,ps,q. ov (sup D ps) q \liff \iexists d. ov (ps d) q; - density: \forall p,q. (\forall r. ov p r \to ov q r) \to le p q -}. - -definition zero: \forall (P:COA). P \def - \lambda (P:COA). inf P ? (dvoid_ixfam P). - -definition one: \forall (P:COA). P \def - \lambda (P:COA). sup P ? (dvoid_ixfam P). - -definition binf: \forall (P:COA). P \to P \to P \def - \lambda (P:COA). \lambda p0,p1. - inf P ? (dbool_ixfam P p0 p1). - -definition bsup: \forall (P:COA). P \to P \to P \def - \lambda (P:COA). \lambda p0,p1. - sup P ? (dbool_ixfam P p0 p1). - -(* - inf_ov: forall p q, ov p q -> ov p (inf QDBool (bool_family _ p q)) - properness: ov zero zero -> False; - distributivity: forall I p q, id _ (inf QDBool (bool_family _ (sup I p) q)) (sup I (fun i => (inf QDBool (bool_family _ (p i) q)))); -*) - -inductive pippo : Prop \def - | Pippo: let x \def zero in zero = x \to pippo. - diff --git a/helm/software/matita/contribs/limits/coa_props.ma b/helm/software/matita/contribs/limits/coa_props.ma deleted file mode 100644 index da2c1f678..000000000 --- a/helm/software/matita/contribs/limits/coa_props.ma +++ /dev/null @@ -1,31 +0,0 @@ -(**************************************************************************) -(* ___ *) -(* ||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 *) -(* *) -(**************************************************************************) - -(* STATO: NON COMPILA: perche' dipende da coa_defs *) - -set "baseuri" "cic:/matita/PREDICATIVE-TOPOLOGY/coa_props". - -include "coa_defs.ma". - -inductive True:Prop \def T:True. - -theorem zero_le: - \forall (P:COA). \forall (p:P). (le ? (zero P) p) \to True. - intros. - exact T. -qed. - - - - diff --git a/helm/software/matita/contribs/limits/depends b/helm/software/matita/contribs/limits/depends index 13fa00c5a..af2f6349f 100644 --- a/helm/software/matita/contribs/limits/depends +++ b/helm/software/matita/contribs/limits/depends @@ -1,12 +1,9 @@ -class_eq.ma class_defs.ma -domain_defs.ma class_defs.ma -coa_props.ma coa_defs.ma -class_defs.ma logic/connectives.ma -domain_data.ma datatypes/bool.ma datatypes/constructors.ma domain_defs.ma -subset_defs.ma domain_defs.ma -coa_defs.ma domain_data.ma iff.ma -iff.ma ../../library/logic/connectives.ma -../../library/logic/connectives.ma +preamble.ma datatypes/bool.ma datatypes/constructors.ma logic/connectives.ma +Class/eq.ma Class/defs.ma +Domain/defs.ma Class/defs.ma +Domain/data.ma Domain/defs.ma +Subset/defs.ma Domain/defs.ma +Class/defs.ma preamble.ma datatypes/bool.ma datatypes/constructors.ma logic/connectives.ma diff --git a/helm/software/matita/contribs/limits/domain_data.ma b/helm/software/matita/contribs/limits/domain_data.ma deleted file mode 100644 index 5bc9c2a7d..000000000 --- a/helm/software/matita/contribs/limits/domain_data.ma +++ /dev/null @@ -1,42 +0,0 @@ -(**************************************************************************) -(* ___ *) -(* ||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 *) -(* *) -(**************************************************************************) - -(* STATO: NON COMPILA: dev'essere aggiornato *) - -set "baseuri" "cic:/matita/PREDICATIVE-TOPOLOGY/domain_data". - -include "datatypes/constructors.ma". -include "datatypes/bool.ma". -include "domain_defs.ma". - -(* QUANTIFICATION DOMAINS - - Here we define some useful domains based on data types -*) - -definition DBool : Domain \def - mk_Domain (mk_Class bool (true_f ?) (eq ?)). - -definition dbool_ixfam : \forall (C:Class). C \to C \to (DBool \to C) \def - \lambda C,c0,c1,b. - match b in bool with - [ false \Rightarrow c0 - | true \Rightarrow c1 - ]. - -definition DVoid : Domain \def - mk_Domain (mk_Class void (true_f ?) (eq ?)). - -definition dvoid_ixfam : \forall (C:Class). (DVoid \to C) \def - \lambda C,v. - match v in void with []. diff --git a/helm/software/matita/contribs/limits/domain_defs.ma b/helm/software/matita/contribs/limits/domain_defs.ma deleted file mode 100644 index dcdf84644..000000000 --- a/helm/software/matita/contribs/limits/domain_defs.ma +++ /dev/null @@ -1,60 +0,0 @@ -(**************************************************************************) -(* ___ *) -(* ||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 *) -(* *) -(**************************************************************************) - -(* STATO: COMPILA *) - -set "baseuri" "cic:/matita/PREDICATIVE-TOPOLOGY/domain_defs". - -include "class_defs.ma". - -(* QUANTIFICATION DOMAINS - - These are the categories on which we allow quantification - - We set up single quantifiers, parametric on the domain, so they - already have the properties that usually are axiomatized inside the - domain structure. This makes domains easier to use -*) - -record Domain: Type \def { - qd:> Class -}. - -(* internal universal quantification *) -inductive dall (D:Domain) (P:D \to Prop) : Prop \def - | dall_intro: (\forall d:D. cin D d \to P d) \to dall D P. - -(* internal existential quantification *) -inductive dex (D:Domain) (P:D \to Prop) : Prop \def - | dex_intro: \forall d:D. cin D d \land P d \to dex D P. - -(* notations **************************************************************) - -(*CSC: the URI must disappear: there is a bug now *) -interpretation "internal for all" 'iforall \eta.x = - (cic:/matita/PREDICATIVE-TOPOLOGY/domain_defs/dall.ind#xpointer(1/1) _ x). - -notation > "hvbox(\iforall ident i opt (: ty) break . p)" - right associative with precedence 20 -for @{ 'iforall ${default - @{\lambda ${ident i} : $ty. $p)} - @{\lambda ${ident i} . $p}}}. - -(*CSC: the URI must disappear: there is a bug now *) -interpretation "internal exists" 'dexists \eta.x = - (cic:/matita/PREDICATIVE-TOPOLOGY/domain_defs/dex.ind#xpointer(1/1) _ x). - -notation > "hvbox(\iexists ident i opt (: ty) break . p)" - right associative with precedence 20 -for @{ 'dexists ${default - @{\lambda ${ident i} : $ty. $p)} - @{\lambda ${ident i} . $p}}}. diff --git a/helm/software/matita/contribs/limits/iff.ma b/helm/software/matita/contribs/limits/iff.ma deleted file mode 100644 index 0e6205148..000000000 --- a/helm/software/matita/contribs/limits/iff.ma +++ /dev/null @@ -1,33 +0,0 @@ -(**************************************************************************) -(* ___ *) -(* ||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 *) -(* *) -(**************************************************************************) - -(* STATO: COMPILA *) - -set "baseuri" "cic:/matita/logic/iff". - -include "../../library/logic/connectives.ma". - -definition Iff : Prop \to Prop \to Prop \def - \lambda A,B. (A \to B) \land (B \to A). - - (*CSC: the URI must disappear: there is a bug now *) -interpretation "logical iff" 'iff x y = (cic:/matita/logic/iff/Iff.con x y). - -notation > "hvbox(a break \liff b)" - left associative with precedence 25 -for @{ 'iff $a $b }. - -notation < "hvbox(a break \leftrightarrow b)" - left associative with precedence 25 -for @{ 'iff $a $b }. diff --git a/helm/software/matita/contribs/limits/root b/helm/software/matita/contribs/limits/root index cde289d74..86796e6ae 100644 --- a/helm/software/matita/contribs/limits/root +++ b/helm/software/matita/contribs/limits/root @@ -1 +1 @@ -baseuri=cic:/matita/PREDICATIVE-TOPOLOGY +baseuri=cic:/matita/limits diff --git a/helm/software/matita/contribs/limits/subset_defs.ma b/helm/software/matita/contribs/limits/subset_defs.ma deleted file mode 100644 index 7469f08af..000000000 --- a/helm/software/matita/contribs/limits/subset_defs.ma +++ /dev/null @@ -1,68 +0,0 @@ -(**************************************************************************) -(* ___ *) -(* ||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 *) -(* *) -(**************************************************************************) - -(* STATO: NON COMPILA: dev'essere aggiornato *) - -set "baseuri" "cic:/matita/PREDICATIVE-TOPOLOGY/subset_defs". - -include "domain_defs.ma". - -(* SUBSETS - - We use predicative subsets coded as propositional functions - according to G.Sambin and S.Valentini "Toolbox" -*) - -definition Subset \def \lambda (D:Domain). D \to Prop. - -(* subset membership (epsilon) *) -definition sin : \forall D. Subset D \to D \to Prop \def - \lambda (D:Domain). \lambda U,d. cin D d \and U d. - -(* subset top (full subset) *) -definition stop \def \lambda (D:Domain). true_f D. - -(* subset bottom (empty subset) *) -definition sbot \def \lambda (D:Domain). false_f D. - -(* subset and (binary intersection) *) -definition sand: \forall D. Subset D \to Subset D \to Subset D \def - \lambda D,U1,U2,d. U1 d \land U2 d. - -(* subset or (binary union) *) -definition sor: \forall D. Subset D \to Subset D \to Subset D \def - \lambda D,U1,U2,d. U1 d \lor U2 d. - -(* subset less or equal (inclusion) *) -definition sle: \forall D. Subset D \to Subset D \to Prop \def - \lambda D,U1,U2. \iforall d. U1 d \to U2 d. - -(* subset overlap *) -definition sover: \forall D. Subset D \to Subset D \to Prop \def - \lambda D,U1,U2. \iexists d. U1 d \land 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: \forall D. Subset D \to Domain \def - \lambda (D:Domain). \lambda U. - mk_Domain (mk_Class D (sin D U) (cle1 D)). - -(* the full subset of a domain *) -coercion stop.