Comparability and incomparability relations #
Two values in a preorder are said to be comparable (SymmRel) whenever a ≤ b or b ≤ a. We
define both the comparability and incomparability relations.
In a linear order, SymmGen (· ≤ ·) a b is always true, and IncompRel (· ≤ ·) a b is always
false.
Implementation notes #
Although comparability and incomparability are negations of each other, both relations are
convenient in different contexts, and as such, it's useful to keep them distinct. To move from one
to the other, use not_symmGen_iff and not_incompRel_iff_symmGen.
Main declarations #
CompRel: The comparability relation.CompRel r a bmeans thataandbis related in either direction byr. This is deprecated in favor ofRelation.SymmGen, with naming chosen for consistency withRelation.TransGenin core and other definitions inMathlib.Logic.Relation.IncompRel: The incomparability relation.IncompRel r a bmeans thataandbare related in neither direction byr.
Todo #
These definitions should be linked to IsChain and IsAntichain.
Comparability #
@[instance_reducible]
def
Relation.linearOrderOfSymmGen
{α : Type u_1}
[PartialOrder α]
[decLE : DecidableLE α]
[decLT : DecidableLT α]
[decEq : DecidableEq α]
(h : ∀ (a b : α), SymmGen (fun (x1 x2 : α) => x1 ≤ x2) a b)
:
A partial order where any two elements are comparable is a linear order.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Incomparability relation #
@[simp]
@[simp]
@[simp]
@[simp]
@[instance_reducible]
Equations
- IncompRel.decidableRel x✝¹ x✝ = IncompRel.decidableRel._aux_1 x✝¹ x✝
theorem
IncompRel.not_antisymmRel
{α : Type u_1}
{a b : α}
{r : α → α → Prop}
(h : IncompRel r a b)
:
¬AntisymmRel r a b
theorem
AntisymmRel.not_incompRel
{α : Type u_1}
{a b : α}
{r : α → α → Prop}
(h : AntisymmRel r a b)
:
theorem
incompRel_of_incompRel_of_antisymmRel
{α : Type u_1}
{a b c : α}
[Preorder α]
(h₁ : IncompRel (fun (x1 x2 : α) => x1 ≤ x2) a b)
(h₂ : AntisymmRel (fun (x1 x2 : α) => x1 ≤ x2) b c)
:
theorem
IncompRel.trans_antisymmRel
{α : Type u_1}
{a b c : α}
[Preorder α]
(h₁ : IncompRel (fun (x1 x2 : α) => x1 ≤ x2) a b)
(h₂ : AntisymmRel (fun (x1 x2 : α) => x1 ≤ x2) b c)
:
Alias of incompRel_of_incompRel_of_antisymmRel.
@[instance_reducible]
Equations
- instTransIncompRelLeAntisymmRel = { trans := ⋯ }
theorem
incompRel_of_antisymmRel_of_incompRel
{α : Type u_1}
{a b c : α}
[Preorder α]
(h₁ : AntisymmRel (fun (x1 x2 : α) => x1 ≤ x2) a b)
(h₂ : IncompRel (fun (x1 x2 : α) => x1 ≤ x2) b c)
:
theorem
AntisymmRel.trans_incompRel
{α : Type u_1}
{a b c : α}
[Preorder α]
(h₁ : AntisymmRel (fun (x1 x2 : α) => x1 ≤ x2) a b)
(h₂ : IncompRel (fun (x1 x2 : α) => x1 ≤ x2) b c)
:
Alias of incompRel_of_antisymmRel_of_incompRel.
@[instance_reducible]
Equations
- instTransAntisymmRelLeIncompRel = { trans := ⋯ }
theorem
AntisymmRel.incompRel_congr
{α : Type u_1}
{a b c d : α}
[Preorder α]
(h₁ : AntisymmRel (fun (x1 x2 : α) => x1 ≤ x2) a b)
(h₂ : AntisymmRel (fun (x1 x2 : α) => x1 ≤ x2) c d)
: