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 #
instance Relation.instRightEuclideanElemValMemSet {α : Type u_1} {r : α → α → Prop} [RightEuclidean r] (s : Set α) :
RightEuclidean fun (a b : ↑s) => r ↑a ↑b
instance Relation.instLeftEuclideanElemValMemSet {α : Type u_1} {r : α → α → Prop} [LeftEuclidean r] (s : Set α) :
LeftEuclidean fun (a b : ↑s) => r ↑a ↑b
A RightEuclidean relation is reflexive on its codomain
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] :
Std.Symm r
theorem Relation.RightEuclidean.trichotomous_trans {α : Type u_1} {r : α → α → Prop} [RightEuclidean r] [Std.Trichotomous r] :
IsTrans α r
theorem Relation.RightEuclidean.antisymm_rightUnique {α : Type u_1} {r : α → α → Prop} [RightEuclidean r] [Std.Antisymm r] :
theorem Relation.RightEuclidean.rightUnique_antisymm {α : Type u_1} {r : α → α → Prop} [RightEuclidean r] (h : Relator.RightUnique r) :
theorem Relation.RightEuclidean.rightUnique_trans {α : Type u_1} {r : α → α → Prop} [RightEuclidean r] (h : Relator.RightUnique r) :
IsTrans α r
theorem Relation.RightEuclidean.rightTotal_equiv {α : Type u_1} {r : α → α → Prop} [RightEuclidean r] (h : Relator.RightTotal r) :
IsEquiv α r
theorem Relation.RightEuclidean.leftTotal_rightUnique_trans {α : Type u_1} {r : α → α → Prop} (h₁ : Relator.LeftTotal r) (h₂ : Relator.RightUnique r) [IsTrans α r] :
theorem Relation.RightEuclidean.trichotomous_antisymm_finite {α : Type u_1} {r : α → α → Prop} [RightEuclidean r] [Std.Trichotomous r] [Std.Antisymm r] :
Finite α
theorem Relation.RightEuclidean.trichotomous_antisymm_card {α : Type u_1} {r : α → α → Prop} [RightEuclidean r] [Std.Trichotomous r] [Std.Antisymm r] [Fintype α] :
theorem Relation.RightEuclidean.cod_subset_dom {α : Type u_1} {r : α → α → Prop} [RightEuclidean r] :
theorem Relation.RightEuclidean.rightTotal_cod {α : Type u_1} {r : α → α → Prop} [RightEuclidean r] :
Relator.RightTotal fun (a b : ↑(cod r)) => r ↑a ↑b
A LeftEuclidean relation is reflexive on its domain
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] :
Std.Symm r
theorem Relation.LeftEuclidean.trichotomous_trans {α : Type u_1} {r : α → α → Prop} [LeftEuclidean r] [Std.Trichotomous r] :
IsTrans α r
theorem Relation.LeftEuclidean.antisymm_leftUnique {α : Type u_1} {r : α → α → Prop} [LeftEuclidean r] [Std.Antisymm r] :
theorem Relation.LeftEuclidean.leftUnique_antisymm {α : Type u_1} {r : α → α → Prop} [LeftEuclidean r] (h : Relator.LeftUnique 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.rightTotal_leftUnique_trans {α : Type u_1} {r : α → α → Prop} (h₁ : Relator.RightTotal r) (h₂ : Relator.LeftUnique r) [IsTrans α r] :
theorem Relation.LeftEuclidean.trichotomous_antisymm_finite {α : Type u_1} {r : α → α → Prop} [LeftEuclidean r] [Std.Trichotomous r] [Std.Antisymm r] :
Finite α
theorem Relation.LeftEuclidean.trichotomous_antisymm_card {α : Type u_1} {r : α → α → Prop} [LeftEuclidean r] [Std.Trichotomous r] [Std.Antisymm r] [Fintype α] :
theorem Relation.LeftEuclidean.leftTotal_dom {α : Type u_1} {r : α → α → Prop} [LeftEuclidean r] :
Relator.LeftTotal fun (a b : ↑(dom r)) => r ↑a ↑b
theorem Relation.symm_leftEuclidean_iff_rightEuclidean {α : Type u_1} {r : α → α → Prop} [Std.Symm r] :
For a symmetric relation, LeftEuclidean and RightEuclidean are equivalent.
For a symmetric relation, LeftEuclidean and transitivity are equivalent.
For a symmetric relation, RightEuclidean and transitivity are equivalent.
theorem Relation.leftEuclidean_rightEuclidean_dom_cod_eq {α : Type u_1} {r : α → α → Prop} [LeftEuclidean r] [RightEuclidean r] :
A relation is both left and right Euclidean if and only if the relation is an equivalence on coinciding domain and codomain.