X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=matita%2Fmatita%2Flib%2Fbasics%2Frelations.ma;h=84dd7c362bf7a86e590fc474130372bbc5e703f7;hb=3a9c3c16e7c7e3a35640a0afa53f044a4f87ed65;hp=d74380de43938650d6de559ba8e3e67384251f70;hpb=9c09a0b1f8801e40612eef429b82fc6dbae01b85;p=helm.git diff --git a/matita/matita/lib/basics/relations.ma b/matita/matita/lib/basics/relations.ma index d74380de4..84dd7c362 100644 --- a/matita/matita/lib/basics/relations.ma +++ b/matita/matita/lib/basics/relations.ma @@ -48,6 +48,24 @@ definition tight_apart: ∀A.∀eq,ap:relation A.Prop definition antisymmetric: ∀A.∀R:relation A.Prop ≝ λA.λR.∀x,y:A. R x y → ¬(R y x). +definition singlevalued: ∀A,B. predicate (relation2 A B) ≝ λA,B,R. + ∀a,b1. R a b1 → ∀b2. R a b2 → b1 = b2. + +definition confluent1: ∀A. relation A → predicate A ≝ λA,R,a0. + ∀a1. R a0 a1 → ∀a2. R a0 a2 → + ∃∃a. R a1 a & R a2 a. + +definition confluent: ∀A. predicate (relation A) ≝ λA,R. + ∀a0. confluent1 … R a0. + +(* Reflexive closure ************) + +definition RC: ∀A:Type[0]. relation A → relation A ≝ + λA,R,x,y. R … x y ∨ x = y. + +lemma RC_reflexive: ∀A,R. reflexive A (RC … R). +/2 width=1/ qed. + (********** operations **********) definition Rcomp ≝ λA.λR1,R2:relation A.λa1,a2. ∃am.R1 a1 am ∧ R2 am a2. @@ -167,6 +185,9 @@ definition bi_relation: Type[0] → Type[0] → Type[0] definition bi_reflexive: ∀A,B. ∀R:bi_relation A B. Prop ≝ λA,B,R. ∀x,y. R x y x y. +definition bi_symmetric: ∀A,B. ∀R: bi_relation A B. Prop ≝ λA,B,R. + ∀a1,a2,b1,b2. R a2 b2 a1 b1 → R a1 b1 a2 b2. + definition bi_transitive: ∀A,B. ∀R: bi_relation A B. Prop ≝ λA,B,R. ∀a1,a,b1,b. R a1 b1 a b → ∀a2,b2. R a b a2 b2 → R a1 b1 a2 b2.