X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=helm%2Fmatita%2Flibrary%2Fnat%2Forders.ma;h=6ec0c9992a68b18e15976e96e74ef853c2fc04eb;hb=4167cea65ca58897d1a3dbb81ff95de5074700cc;hp=4ec4dfc5b11089876cafc3d2802a80f098c3917a;hpb=7bbce6bc163892cfd99cfcda65db42001b86789f;p=helm.git diff --git a/helm/matita/library/nat/orders.ma b/helm/matita/library/nat/orders.ma index 4ec4dfc5b..6ec0c9992 100644 --- a/helm/matita/library/nat/orders.ma +++ b/helm/matita/library/nat/orders.ma @@ -14,7 +14,7 @@ set "baseuri" "cic:/matita/nat/orders". -include "nat/plus.ma". +include "nat/nat.ma". include "higher_order_defs/ordering.ma". (* definitions *) @@ -24,12 +24,19 @@ inductive le (n:nat) : nat \to Prop \def (*CSC: the URI must disappear: there is a bug now *) interpretation "natural 'less or equal to'" 'leq x y = (cic:/matita/nat/orders/le.ind#xpointer(1/1) x y). +(*CSC: the URI must disappear: there is a bug now *) +interpretation "natural 'neither less nor equal to'" 'nleq x y = + (cic:/matita/logic/connectives/Not.con + (cic:/matita/nat/orders/le.ind#xpointer(1/1) x y)). definition lt: nat \to nat \to Prop \def \lambda n,m:nat.(S n) \leq m. (*CSC: the URI must disappear: there is a bug now *) interpretation "natural 'less than'" 'lt x y = (cic:/matita/nat/orders/lt.con x y). +(*CSC: the URI must disappear: there is a bug now *) +interpretation "natural 'not less than'" 'nless x y = + (cic:/matita/logic/connectives/Not.con (cic:/matita/nat/orders/lt.con x y)). definition ge: nat \to nat \to Prop \def \lambda n,m:nat.m \leq n. @@ -42,9 +49,12 @@ definition gt: nat \to nat \to Prop \def (*CSC: the URI must disappear: there is a bug now *) interpretation "natural 'greater than'" 'gt x y = (cic:/matita/nat/orders/gt.con x y). +(*CSC: the URI must disappear: there is a bug now *) +interpretation "natural 'not greater than'" 'ngtr x y = + (cic:/matita/logic/connectives/Not.con (cic:/matita/nat/orders/gt.con x y)). theorem transitive_le : transitive nat le. -simplify.intros.elim H1. +unfold transitive.intros.elim H1. assumption. apply le_S.assumption. qed. @@ -53,7 +63,7 @@ theorem trans_le: \forall n,m,p:nat. n \leq m \to m \leq p \to n \leq p \def transitive_le. theorem transitive_lt: transitive nat lt. -simplify.intros.elim H1. +unfold transitive.unfold lt.intros.elim H1. apply le_S. assumption. apply le_S.assumption. qed. @@ -84,8 +94,8 @@ simplify.apply le_n_Sn. qed. theorem le_S_S_to_le : \forall n,m:nat. S n \leq S m \to n \leq m. -intros.change with pred (S n) \leq pred (S m). -elim H.apply le_n.apply trans_le ? (pred n1).assumption. +intros.change with (pred (S n) \leq pred (S m)). +elim H.apply le_n.apply (trans_le ? (pred n1)).assumption. apply le_pred_n. qed. @@ -94,26 +104,34 @@ intros.elim H.exact I.exact I. qed. (* not le *) -theorem not_le_Sn_O: \forall n:nat. \lnot (S n \leq O). -intros.simplify.intros.apply leS_to_not_zero ? ? H. +theorem not_le_Sn_O: \forall n:nat. S n \nleq O. +intros.unfold Not.simplify.intros.apply (leS_to_not_zero ? ? H). qed. -theorem not_le_Sn_n: \forall n:nat. \lnot (S n \leq n). -intros.elim n.apply not_le_Sn_O.simplify.intros.cut S n1 \leq n1. +theorem not_le_Sn_n: \forall n:nat. S n \nleq n. +intros.elim n.apply not_le_Sn_O.unfold Not.simplify.intros.cut (S n1 \leq n1). apply H.assumption. apply le_S_S_to_le.assumption. qed. +(* le to lt or eq *) +theorem le_to_or_lt_eq : \forall n,m:nat. +n \leq m \to n < m \lor n = m. +intros.elim H. +right.reflexivity. +left.unfold lt.apply le_S_S.assumption. +qed. + (* not eq *) -theorem lt_to_not_eq : \forall n,m:nat. n H7. +apply H. +apply le_to_or_lt_eq.apply H6. qed.