X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=matita%2Fcontribs%2FRELATIONAL%2FNLE%2Fprops.ma;h=a6d0ca7a88dbac1fb0b3232c984ffe5a5c0c67c6;hb=b0b69bb764af48d7f022477398f0beff5fb3f3f3;hp=066e056e0435f74c01f0dc43970bbce5a2575994;hpb=648f1521fa36f3c19cca3b3a29bbf3e8146eca4e;p=helm.git diff --git a/matita/contribs/RELATIONAL/NLE/props.ma b/matita/contribs/RELATIONAL/NLE/props.ma index 066e056e0..a6d0ca7a8 100644 --- a/matita/contribs/RELATIONAL/NLE/props.ma +++ b/matita/contribs/RELATIONAL/NLE/props.ma @@ -14,23 +14,65 @@ set "baseuri" "cic:/matita/RELATIONAL/NLE/props". -include "NLE/fwd.ma". +include "NLE/inv.ma". + +theorem nle_zero_1: \forall q. zero <= q. + intros. auto. +qed. + +theorem nle_succ_succ: \forall p,q. p <= q \to succ p <= succ q. + intros. elim H. clear H. auto. +qed. + +theorem nle_ind: \forall P:(Nat \to Nat \to Prop). + (\forall n:Nat.P zero n) \to + (\forall n,n1:Nat. + n <= n1 \to P n n1 \to P (succ n) (succ n1) + ) \to + \forall n,n1:Nat. n <= n1 \to P n n1. + intros 4. elim n; clear n; + [ auto + | lapply linear nle_inv_succ_1 to H3. decompose; subst. + auto + ]. +qed. theorem nle_refl: \forall x. x <= x. - intros 1; elim x; clear x; intros; auto new. + intros 1; elim x; clear x; intros; auto. qed. theorem nle_trans_succ: \forall x,y. x <= y \to x <= succ y. - intros. elim H; clear H x y; intros; auto new. + intros. elim H using nle_ind; clear H x y; auto. +qed. + +theorem nle_false: \forall x,y. x <= y \to y < x \to False. + intros 3; elim H using nle_ind; clear H x y; auto. +qed. + +theorem nle_trans: \forall x,y. x <= y \to + \forall z. y <= z \to x <= z. + intros 3. elim H using nle_ind; clear H x y; + [ auto + | lapply linear nle_inv_succ_1 to H3. decompose. subst. + auto + ]. qed. theorem nle_lt_or_eq: \forall y,x. x <= y \to x < y \lor x = y. - intros 1. elim y; clear y; intros; - [ lapply linear nle_gen_zero_2 to H. auto new - | lapply linear nle_gen_succ_2 to H1. decompose; - [ subst. auto new - | lapply linear H to H3 as H0. decompose; - subst; auto new + intros. elim H using nle_ind; clear H x y; + [ elim n; clear n; auto + | decompose; subst; auto + ]. +qed. + +theorem nle_gt_or_le: \forall x,y. y > x \lor y <= x. + intros 2; elim y; clear y; + [ auto + | decompose; + [ lapply linear nle_inv_succ_1 to H1. decompose. + subst. auto depth=4 + | lapply linear nle_lt_or_eq to H1; decompose; + subst; auto ] ]. qed.