Documentation

Mathlib.Order.Defs.Unbundled

Orders #

Defines classes for preorders, partial orders, and linear orders and proves some basic lemmas about them.

Unbundled classes #

def EmptyRelation {α : Sort u_1} :
ααProp

An empty relation does not relate any elements.

Equations
Instances For
class IsSymm (α : Sort u_1) (r : ααProp) :

IsSymm X r means the binary relation r on X is symmetric.

  • symm (a b : α) : r a br b a
Instances
@[instance 100]
instance IsAsymm.toIsAntisymm {α : Sort u_1} (r : ααProp) [IsAsymm α r] :
instance instTransOfIsTrans {α : Sort u_1} {r : ααProp} [IsTrans α r] :
Trans r r r
Equations
@[instance 100]
instance instIsTransOfTrans {α : Sort u_1} {r : ααProp} [Trans r r r] :
IsTrans α r
class IsTotal (α : Sort u_1) (r : ααProp) :

IsTotal X r means that the binary relation r on X is total, that is, that for any x y : X we have r x y or r y x.

  • total (a b : α) : r a b r b a
Instances
class IsPreorder (α : Sort u_1) (r : ααProp) extends IsRefl α r, IsTrans α r :

IsPreorder X r means that the binary relation r on X is a pre-order, that is, reflexive and transitive.

  • refl (a : α) : r a a
  • trans (a b c : α) : r a br b cr a c
Instances
class IsPartialOrder (α : Sort u_1) (r : ααProp) extends IsPreorder α r, IsAntisymm α r :

IsPartialOrder X r means that the binary relation r on X is a partial order, that is, IsPreorder X r and IsAntisymm X r.

  • refl (a : α) : r a a
  • trans (a b c : α) : r a br b cr a c
  • antisymm (a b : α) : r a br b aa = b
Instances
class IsLinearOrder (α : Sort u_1) (r : ααProp) extends IsPartialOrder α r, IsTotal α r :

IsLinearOrder X r means that the binary relation r on X is a linear order, that is, IsPartialOrder X r and IsTotal X r.

  • refl (a : α) : r a a
  • trans (a b c : α) : r a br b cr a c
  • antisymm (a b : α) : r a br b aa = b
  • total (a b : α) : r a b r b a
Instances
class IsEquiv (α : Sort u_1) (r : ααProp) extends IsPreorder α r, IsSymm α r :

IsEquiv X r means that the binary relation r on X is an equivalence relation, that is, IsPreorder X r and IsSymm X r.

  • refl (a : α) : r a a
  • trans (a b c : α) : r a br b cr a c
  • symm (a b : α) : r a br b a
Instances
class IsStrictOrder (α : Sort u_1) (r : ααProp) extends IsIrrefl α r, IsTrans α r :

IsStrictOrder X r means that the binary relation r on X is a strict order, that is, IsIrrefl X r and IsTrans X r.

  • irrefl (a : α) : ¬r a a
  • trans (a b c : α) : r a br b cr a c
Instances
class IsStrictWeakOrder (α : Sort u_1) (lt : ααProp) extends IsStrictOrder α lt :

IsStrictWeakOrder X lt means that the binary relation lt on X is a strict weak order, that is, IsStrictOrder X lt and ¬lt a b ∧ ¬lt b a → ¬lt b c ∧ ¬lt c b → ¬lt a c ∧ ¬lt c a.

  • irrefl (a : α) : ¬lt a a
  • trans (a b c : α) : lt a blt b clt a c
  • incomp_trans (a b c : α) : ¬lt a b ¬lt b a¬lt b c ¬lt c b¬lt a c ¬lt c a
Instances
class IsTrichotomous (α : Sort u_1) (lt : ααProp) :

IsTrichotomous X lt means that the binary relation lt on X is trichotomous, that is, either lt a b or a = b or lt b a for any a and b.

  • trichotomous (a b : α) : lt a b a = b lt b a
Instances
class IsStrictTotalOrder (α : Sort u_1) (lt : ααProp) extends IsTrichotomous α lt, IsStrictOrder α lt :

IsStrictTotalOrder X lt means that the binary relation lt on X is a strict total order, that is, IsTrichotomous X lt and IsStrictOrder X lt.

Instances
instance eq_isEquiv (α : Sort u_1) :
IsEquiv α fun (x1 x2 : α) => x1 = x2

Equality is an equivalence relation.

Iff is an equivalence relation.

theorem irrefl {α : Sort u_1} {r : ααProp} [IsIrrefl α r] (a : α) :
¬r a a
theorem refl {α : Sort u_1} {r : ααProp} [IsRefl α r] (a : α) :
r a a
theorem trans {α : Sort u_1} {r : ααProp} {a b c : α} [IsTrans α r] :
r a br b cr a c
theorem symm {α : Sort u_1} {r : ααProp} {a b : α} [IsSymm α r] :
r a br b a
theorem antisymm {α : Sort u_1} {r : ααProp} {a b : α} [IsAntisymm α r] :
r a br b aa = b
theorem asymm {α : Sort u_1} {r : ααProp} {a b : α} [IsAsymm α r] :
r a b¬r b a
theorem trichotomous {α : Sort u_1} {r : ααProp} [IsTrichotomous α r] (a b : α) :
r a b a = b r b a
@[instance 90]
instance isAsymm_of_isTrans_of_isIrrefl {α : Sort u_1} {r : ααProp} [IsTrans α r] [IsIrrefl α r] :
IsAsymm α r
instance IsIrrefl.decide {α : Sort u_1} {r : ααProp} [DecidableRel r] [IsIrrefl α r] :
IsIrrefl α fun (a b : α) => Decidable.decide (r a b) = true
instance IsRefl.decide {α : Sort u_1} {r : ααProp} [DecidableRel r] [IsRefl α r] :
IsRefl α fun (a b : α) => Decidable.decide (r a b) = true
instance IsTrans.decide {α : Sort u_1} {r : ααProp} [DecidableRel r] [IsTrans α r] :
IsTrans α fun (a b : α) => Decidable.decide (r a b) = true
instance IsSymm.decide {α : Sort u_1} {r : ααProp} [DecidableRel r] [IsSymm α r] :
IsSymm α fun (a b : α) => Decidable.decide (r a b) = true
instance IsAntisymm.decide {α : Sort u_1} {r : ααProp} [DecidableRel r] [IsAntisymm α r] :
IsAntisymm α fun (a b : α) => Decidable.decide (r a b) = true
instance IsAsymm.decide {α : Sort u_1} {r : ααProp} [DecidableRel r] [IsAsymm α r] :
IsAsymm α fun (a b : α) => Decidable.decide (r a b) = true
instance IsTotal.decide {α : Sort u_1} {r : ααProp} [DecidableRel r] [IsTotal α r] :
IsTotal α fun (a b : α) => Decidable.decide (r a b) = true
instance IsTrichotomous.decide {α : Sort u_1} {r : ααProp} [DecidableRel r] [IsTrichotomous α r] :
IsTrichotomous α fun (a b : α) => Decidable.decide (r a b) = true
@[elab_without_expected_type]
theorem irrefl_of {α : Sort u_1} (r : ααProp) [IsIrrefl α r] (a : α) :
¬r a a
@[elab_without_expected_type]
theorem refl_of {α : Sort u_1} (r : ααProp) [IsRefl α r] (a : α) :
r a a
@[elab_without_expected_type]
theorem trans_of {α : Sort u_1} (r : ααProp) {a b c : α} [IsTrans α r] :
r a br b cr a c
@[elab_without_expected_type]
theorem symm_of {α : Sort u_1} (r : ααProp) {a b : α} [IsSymm α r] :
r a br b a
@[elab_without_expected_type]
theorem asymm_of {α : Sort u_1} (r : ααProp) {a b : α} [IsAsymm α r] :
r a b¬r b a
@[elab_without_expected_type]
theorem total_of {α : Sort u_1} (r : ααProp) [IsTotal α r] (a b : α) :
r a b r b a
@[elab_without_expected_type]
theorem trichotomous_of {α : Sort u_1} (r : ααProp) [IsTrichotomous α r] (a b : α) :
r a b a = b r b a
def Reflexive {α : Sort u_1} (r : ααProp) :

IsRefl as a definition, suitable for use in proofs.

Equations
def Symmetric {α : Sort u_1} (r : ααProp) :

IsSymm as a definition, suitable for use in proofs.

Equations
def Transitive {α : Sort u_1} (r : ααProp) :

IsTrans as a definition, suitable for use in proofs.

Equations
  • Transitive r = ∀ ⦃x y z : α⦄, r x yr y zr x z
def Irreflexive {α : Sort u_1} (r : ααProp) :

IsIrrefl as a definition, suitable for use in proofs.

Equations
def AntiSymmetric {α : Sort u_1} (r : ααProp) :

IsAntisymm as a definition, suitable for use in proofs.

Equations
def Total {α : Sort u_1} (r : ααProp) :

IsTotal as a definition, suitable for use in proofs.

Equations
@[deprecated Equivalence.refl (since := "2024-09-13")]
theorem Equivalence.reflexive {α : Sort u_1} (r : ααProp) (h : Equivalence r) :
@[deprecated Equivalence.symm (since := "2024-09-13")]
theorem Equivalence.symmetric {α : Sort u_1} (r : ααProp) (h : Equivalence r) :
@[deprecated Equivalence.trans (since := "2024-09-13")]
theorem Equivalence.transitive {α : Sort u_1} (r : ααProp) (h : Equivalence r) :
@[deprecated "No deprecation message was provided." (since := "2024-09-13")]
theorem InvImage.trans {α : Sort u_1} {β : Sort u_2} (r : ββProp) (f : αβ) (h : Transitive r) :
@[deprecated "No deprecation message was provided." (since := "2024-09-13")]
theorem InvImage.irreflexive {α : Sort u_1} {β : Sort u_2} (r : ββProp) (f : αβ) (h : Irreflexive r) :

Minimal and maximal #

def Minimal {α : Type u_1} [LE α] (P : αProp) (x : α) :

Minimal P x means that x is a minimal element satisfying P.

Equations
def Maximal {α : Type u_1} [LE α] (P : αProp) (x : α) :

Maximal P x means that x is a maximal element satisfying P.

Equations
theorem Minimal.prop {α : Type u_1} [LE α] {P : αProp} {x : α} (h : Minimal P x) :
P x
theorem Maximal.prop {α : Type u_1} [LE α] {P : αProp} {x : α} (h : Maximal P x) :
P x
theorem Minimal.le_of_le {α : Type u_1} [LE α] {P : αProp} {x y : α} (h : Minimal P x) (hy : P y) (hle : y x) :
x y
theorem Maximal.le_of_ge {α : Type u_1} [LE α] {P : αProp} {x y : α} (h : Maximal P x) (hy : P y) (hge : x y) :
y x

Upper and lower sets #

def IsUpperSet {α : Type u_1} [LE α] (s : Set α) :

An upper set in an order α is a set such that any element greater than one of its members is also a member. Also called up-set, upward-closed set.

Equations
def IsLowerSet {α : Type u_1} [LE α] (s : Set α) :

A lower set in an order α is a set such that any element less than one of its members is also a member. Also called down-set, downward-closed set.

Equations
structure UpperSet (α : Type u_1) [LE α] :
Type u_1

The type of upper sets of an order.

An upper set in an order α is a set such that any element greater than one of its members is also a member. Also called up-set, upward-closed set.

Instances For
structure LowerSet (α : Type u_1) [LE α] :
Type u_1

The type of lower sets of an order.

A lower set in an order α is a set such that any element less than one of its members is also a member. Also called down-set, downward-closed set.

Instances For