X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=weblib%2Fbasics%2Frelations.ma;h=753ed32332d9e51f4a09f306ac9b929c103e96d3;hb=ccf5878f2a2ec7f952f140e162391708a740517b;hp=b31db23d7ffffa2e8e6888311194c70ce73b3029;hpb=8f08fac33a366b2267b35af1a50ad3a9df8dbb88;p=helm.git diff --git a/weblib/basics/relations.ma b/weblib/basics/relations.ma index b31db23d7..753ed3233 100644 --- a/weblib/basics/relations.ma +++ b/weblib/basics/relations.ma @@ -15,27 +15,27 @@ include "basics/logic.ma". definition relation : Type[0] → Type[0] ≝ λA.A→A→Prop. -definition reflexive: ∀A.∀R :relation A.Prop +definition reflexive: ∀A.∀R :a href="cic:/matita/basics/relations/relation.def(1)"relation/a A.Prop ≝ λA.λR.∀x:A.R x x. -definition symmetric: ∀A.∀R: relation A.Prop +definition symmetric: ∀A.∀R: a href="cic:/matita/basics/relations/relation.def(1)"relation/a A.Prop ≝ λA.λR.∀x,y:A.R x y → R y x. -definition transitive: ∀A.∀R:relation A.Prop +definition transitive: ∀A.∀R:a href="cic:/matita/basics/relations/relation.def(1)"relation/a A.Prop ≝ λA.λR.∀x,y,z:A.R x y → R y z → R x z. -definition irreflexive: ∀A.∀R:relation A.Prop -≝ λA.λR.∀x:A.¬(R x x). +definition irreflexive: ∀A.∀R:a href="cic:/matita/basics/relations/relation.def(1)"relation/a A.Prop +≝ λA.λR.∀x:A.a title="logical not" href="cic:/fakeuri.def(1)"¬/a(R x x). -definition cotransitive: ∀A.∀R:relation A.Prop -≝ λA.λR.∀x,y:A.R x y → ∀z:A. R x z ∨ R z y. +definition cotransitive: ∀A.∀R:a href="cic:/matita/basics/relations/relation.def(1)"relation/a A.Prop +≝ λA.λR.∀x,y:A.R x y → ∀z:A. R x z a title="logical or" href="cic:/fakeuri.def(1)"∨/a R z y. -definition tight_apart: ∀A.∀eq,ap:relation A.Prop -≝ λA.λeq,ap.∀x,y:A. (¬(ap x y) → eq x y) ∧ -(eq x y → ¬(ap x y)). +definition tight_apart: ∀A.∀eq,ap:a href="cic:/matita/basics/relations/relation.def(1)"relation/a A.Prop +≝ λA.λeq,ap.∀x,y:A. (a title="logical not" href="cic:/fakeuri.def(1)"¬/a(ap x y) → eq x y) a title="logical and" href="cic:/fakeuri.def(1)"∧/a +(eq x y → a title="logical not" href="cic:/fakeuri.def(1)"¬/a(ap x y)). -definition antisymmetric: ∀A.∀R:relation A.Prop -≝ λA.λR.∀x,y:A. R x y → ¬(R y x). +definition antisymmetric: ∀A.∀R:a href="cic:/matita/basics/relations/relation.def(1)"relation/a A.Prop +≝ λA.λR.∀x,y:A. R x y → a title="logical not" href="cic:/fakeuri.def(1)"¬/a(R y x). (********** functions **********) @@ -45,19 +45,19 @@ definition compose ≝ interpretation "function composition" 'compose f g = (compose ? ? ? f g). definition injective: ∀A,B:Type[0].∀ f:A→B.Prop -≝ λA,B.λf.∀x,y:A.f x = f y → x=y. +≝ λA,B.λf.∀x,y:A.f x a title="leibnitz's equality" href="cic:/fakeuri.def(1)"=/a f y → xa title="leibnitz's equality" href="cic:/fakeuri.def(1)"=/ay. definition surjective: ∀A,B:Type[0].∀f:A→B.Prop -≝λA,B.λf.∀z:B.∃x:A.z = f x. +≝λA,B.λf.∀z:B.a title="exists" href="cic:/fakeuri.def(1)"∃/ax:Aa title="exists" href="cic:/fakeuri.def(1)"./az a title="leibnitz's equality" href="cic:/fakeuri.def(1)"=/a f x. definition commutative: ∀A:Type[0].∀f:A→A→A.Prop -≝ λA.λf.∀x,y.f x y = f y x. +≝ λA.λf.∀x,y.f x y a title="leibnitz's equality" href="cic:/fakeuri.def(1)"=/a f y x. definition commutative2: ∀A,B:Type[0].∀f:A→A→B.Prop -≝ λA,B.λf.∀x,y.f x y = f y x. +≝ λA,B.λf.∀x,y.f x y a title="leibnitz's equality" href="cic:/fakeuri.def(1)"=/a f y x. definition associative: ∀A:Type[0].∀f:A→A→A.Prop -≝ λA.λf.∀x,y,z.f (f x y) z = f x (f y z). +≝ λA.λf.∀x,y,z.f (f x y) z a title="leibnitz's equality" href="cic:/fakeuri.def(1)"=/a f x (f y z). (* functions and relations *) definition monotonic : ∀A:Type[0].∀R:A→A→Prop. @@ -66,25 +66,25 @@ definition monotonic : ∀A:Type[0].∀R:A→A→Prop. (* functions and functions *) definition distributive: ∀A:Type[0].∀f,g:A→A→A.Prop -≝ λA.λf,g.∀x,y,z:A. f x (g y z) = g (f x y) (f x z). +≝ λA.λf,g.∀x,y,z:A. f x (g y z) a title="leibnitz's equality" href="cic:/fakeuri.def(1)"=/a g (f x y) (f x z). definition distributive2: ∀A,B:Type[0].∀f:A→B→B.∀g:B→B→B.Prop -≝ λA,B.λf,g.∀x:A.∀y,z:B. f x (g y z) = g (f x y) (f x z). +≝ λA,B.λf,g.∀x:A.∀y,z:B. f x (g y z) a title="leibnitz's equality" href="cic:/fakeuri.def(1)"=/a g (f x y) (f x z). lemma injective_compose : ∀A,B,C,f,g. -injective A B f → injective B C g → injective A C (λx.g (f x)). -/3/; qed. +a href="cic:/matita/basics/relations/injective.def(1)"injective/a A B f → a href="cic:/matita/basics/relations/injective.def(1)"injective/a B C g → a href="cic:/matita/basics/relations/injective.def(1)"injective/a A C (λx.g (f x)). +/span class="autotactic"3span class="autotrace" trace /span/span/; qed. (* extensional equality *) definition exteqP: ∀A:Type[0].∀P,Q:A→Prop.Prop ≝ -λA.λP,Q.∀a.iff (P a) (Q a). +λA.λP,Q.∀a.a href="cic:/matita/basics/logic/iff.def(1)"iff/a (P a) (Q a). definition exteqR: ∀A,B:Type[0].∀R,S:A→B→Prop.Prop ≝ -λA,B.λR,S.∀a.∀b.iff (R a b) (S a b). +λA,B.λR,S.∀a.∀b.a href="cic:/matita/basics/logic/iff.def(1)"iff/a (R a b) (S a b). definition exteqF: ∀A,B:Type[0].∀f,g:A→B.Prop ≝ -λA,B.λf,g.∀a.f a = g a. +λA,B.λf,g.∀a.f a a title="leibnitz's equality" href="cic:/fakeuri.def(1)"=/a g a. notation " x \eqP y " non associative with precedence 45 for @{'eqP A $x $y}. @@ -102,5 +102,4 @@ notation " f \eqF g " non associative with precedence 45 for @{'eqF ? ? f g}. interpretation "functional extentional equality" -'eqF A B f g = (exteqF A B f g). - +'eqF A B f g = (exteqF A B f g). \ No newline at end of file