Documentation

Cslib.Foundations.Relation.Euclidean

Relations: Euclidean Relations #

This module proves basic properties about left and right Euclidean relations, which are use in modal logic.

TODO: develop an attribute to dualize theorems to the converse of a relation

References #

theorem Relation.refl_serial {α : Type u_1} (r : ααProp) (h : Std.Refl r) :
instance Relation.instSerialOfRefl {α : Type u_1} {r : ααProp} [instRefl : Std.Refl r] :
theorem Relation.RightEuclidean.refl_cod {α : Type u_1} {r : ααProp} [RightEuclidean r] {a b : α} (ab : r a b) :
r b b

A RightEuclidean relation is reflexive on its range

theorem Relation.RightEuclidean.refl_cod' {α : Type u_1} {r : ααProp} [RightEuclidean r] {b : α} :
b cod rr b b
theorem Relation.RightEuclidean.leftEuclidean_swap {α : Type u_1} {r : ααProp} [RightEuclidean r] :
LeftEuclidean fun (a b : α) => r b a

The converse of a RightEuclidean relation is LeftEuclidean

instance Relation.RightEuclidean.instSymmOfRefl {α : Type u_1} {r : ααProp} [RightEuclidean r] [Std.Refl r] :
theorem Relation.RightEuclidean.rightTotal_equiv {α : Type u_1} {r : ααProp} [RightEuclidean r] (h : Relator.RightTotal r) :
IsEquiv α r
theorem Relation.RightEuclidean.cod_subset_dom {α : Type u_1} {r : ααProp} [RightEuclidean r] :
cod r dom r
instance Relation.RightEuclidean.instElemCodValMemSet {α : Type u_1} {r : ααProp} [RightEuclidean r] :
RightEuclidean fun (a b : (cod r)) => r a b
instance Relation.RightEuclidean.instElemDomValMemSet {α : Type u_1} {r : ααProp} [RightEuclidean r] :
RightEuclidean fun (a b : (dom r)) => r a b
theorem Relation.RightEuclidean.rightTotal_cod {α : Type u_1} {r : ααProp} [RightEuclidean r] :
Relator.RightTotal fun (a b : (cod r)) => r a b
theorem Relation.RightEuclidean.equiv_cod {α : Type u_1} {r : ααProp} [RightEuclidean r] :
IsEquiv (cod r) fun (a b : (cod r)) => r a b
theorem Relation.LeftEuclidean.refl_dom {α : Type u_1} {r : ααProp} [LeftEuclidean r] {a b : α} (ab : r a b) :
r a a

A LeftEuclidean relation is reflexive on its domain

theorem Relation.LeftEuclidean.refl_dom' {α : Type u_1} {r : ααProp} [LeftEuclidean r] {a : α} :
a dom rr a a
theorem Relation.LeftEuclidean.rightEuclidean_swap {α : Type u_1} {r : ααProp} [LeftEuclidean r] :
RightEuclidean fun (a b : α) => r b a

The converse of a LeftEuclidean relation is RightEuclidean

instance Relation.LeftEuclidean.instSymmOfRefl {α : Type u_1} {r : ααProp} [LeftEuclidean r] [Std.Refl r] :
theorem Relation.LeftEuclidean.leftUnique_trans {α : Type u_1} {r : ααProp} [LeftEuclidean r] (h : Relator.LeftUnique r) :
IsTrans α r
theorem Relation.LeftEuclidean.leftTotal_equiv {α : Type u_1} {r : ααProp} [LeftEuclidean r] (h : Relator.LeftTotal r) :
IsEquiv α r
theorem Relation.LeftEuclidean.dom_subset_cod {α : Type u_1} {r : ααProp} [LeftEuclidean r] :
dom r cod r
instance Relation.LeftEuclidean.instElemCodValMemSet {α : Type u_1} {r : ααProp} [LeftEuclidean r] :
LeftEuclidean fun (a b : (cod r)) => r a b
instance Relation.LeftEuclidean.instElemDomValMemSet {α : Type u_1} {r : ααProp} [LeftEuclidean r] :
LeftEuclidean fun (a b : (dom r)) => r a b
theorem Relation.LeftEuclidean.leftTotal_dom {α : Type u_1} {r : ααProp} [LeftEuclidean r] :
Relator.LeftTotal fun (a b : (dom r)) => r a b
theorem Relation.LeftEuclidean.equiv_dom {α : Type u_1} {r : ααProp} [LeftEuclidean r] :
IsEquiv (dom r) fun (a b : (dom r)) => r a b

For a symmetric relation, LeftEuclidean and RightEuclidean are equivalent.

theorem Relation.symm_leftEuclidean_iff_trans {α : Type u_1} {r : ααProp} [Std.Symm r] :

For a symmetric relation, LeftEuclidean and transitivity are equivalent.

theorem Relation.symm_rightEuclidean_iff_trans {α : Type u_1} {r : ααProp} [Std.Symm r] :

For a symmetric relation, RightEuclidean and transitivity are equivalent.

theorem Relation.dom_cod_leftEuclidean {α : Type u_1} {r : ααProp} (eq : dom r = cod r) [equiv_dom : IsEquiv (dom r) fun (a b : (dom r)) => r a b] :
theorem Relation.dom_cod_rightEuclidean {α : Type u_1} {r : ααProp} (eq : dom r = cod r) [equiv_dom : IsEquiv (dom r) fun (a b : (dom r)) => r a b] :
theorem Relation.leftEuclidean_rightEuclidean_iff_dom_cod {α : Type u_1} {r : ααProp} :
LeftEuclidean r RightEuclidean r dom r = cod r IsEquiv (dom r) fun (a b : (dom r)) => r a b

A relation is both left and right Euclidean if and only if the relation is an equivalence on coinciding domain and codomain.