lattices-2.1: Fine-grained library for constructing and manipulating lattices
Copyright (C) 2010-2015 Maximilian Bolingbroke 2015-2019 Oleg Grenrus
License BSD-3-Clause (see the file LICENSE)
Maintainer Oleg Grenrus <oleg.grenrus@iki.fi>
Safe Haskell Safe
Language Haskell2010

Algebra.PartialOrd

Description

Synopsis

Partial orderings

class Eq a => PartialOrd a where Source #

A partial ordering on sets ( http://en.wikipedia.org/wiki/Partially_ordered_set ) is a set equipped with a binary relation, leq , that obeys the following laws

Reflexive:     a `leq` a
Antisymmetric: a `leq` b && b `leq` a ==> a == b
Transitive:    a `leq` b && b `leq` c ==> a `leq` c

Two elements of the set are said to be comparable when they are are ordered with respect to the leq relation. So

comparable a b ==> a `leq` b || b `leq` a

If comparable always returns true then the relation leq defines a total ordering (and an Ord instance may be defined). Any Ord instance is trivially an instance of PartialOrd . Ordered provides a convenient wrapper to satisfy PartialOrd given Ord .

As an example consider the partial ordering on sets induced by set inclusion. Then for sets a and b ,

a `leq` b

is true when a is a subset of b . Two sets are comparable if one is a subset of the other. Concretely

a = {1, 2, 3}
b = {1, 3, 4}
c = {1, 2}

a `leq` a = True
a `leq` b = False
a `leq` c = False
b `leq` a = False
b `leq` b = True
b `leq` c = False
c `leq` a = True
c `leq` b = False
c `leq` c = True

comparable a b = False
comparable a c = True
comparable b c = False

Minimal complete definition

leq

Methods

leq :: a -> a -> Bool Source #

The relation that induces the partial ordering

comparable :: a -> a -> Bool Source #

Whether two elements are ordered with respect to the relation. A default implementation is given by

comparable x y = leq x y || leq y x

Instances

Instances details
PartialOrd Bool Source #

Since: 2

Instance details

Defined in Algebra.PartialOrd

PartialOrd () Source #
Instance details

Defined in Algebra.PartialOrd

PartialOrd Void Source #
Instance details

Defined in Algebra.PartialOrd

PartialOrd All Source #
Instance details

Defined in Algebra.PartialOrd

PartialOrd Any Source #
Instance details

Defined in Algebra.PartialOrd

PartialOrd IntSet Source #
Instance details

Defined in Algebra.PartialOrd

PartialOrd N5 Source #
Instance details

Defined in Algebra.Lattice.N5

PartialOrd M3 Source #
Instance details

Defined in Algebra.Lattice.M3

PartialOrd ZeroHalfOne Source #
Instance details

Defined in Algebra.Lattice.ZeroHalfOne

PartialOrd M2 Source #
Instance details

Defined in Algebra.Lattice.M2

Eq a => PartialOrd [a] Source #

leq = isSequenceOf .

Instance details

Defined in Algebra.PartialOrd

Methods

leq :: [a] -> [a] -> Bool Source #

comparable :: [a] -> [a] -> Bool Source #

( PartialOrd v, Finite v) => PartialOrd ( Endo v) Source #
Instance details

Defined in Algebra.PartialOrd.Instances

PartialOrd v => PartialOrd ( IntMap v) Source #
Instance details

Defined in Algebra.PartialOrd

Ord a => PartialOrd ( Set a) Source #
Instance details

Defined in Algebra.PartialOrd

( Eq k, Hashable k) => PartialOrd ( HashSet k) Source #
Instance details

Defined in Algebra.PartialOrd

( Eq a, Lattice a) => PartialOrd ( Meet a) Source #
Instance details

Defined in Algebra.Lattice

( Eq a, Lattice a) => PartialOrd ( Join a) Source #
Instance details

Defined in Algebra.Lattice

Eq a => PartialOrd ( Wide a) Source #
Instance details

Defined in Algebra.Lattice.Wide

PartialOrd a => PartialOrd ( Op a) Source #
Instance details

Defined in Algebra.Lattice.Op

PartialOrd a => PartialOrd ( Lifted a) Source #
Instance details

Defined in Algebra.Lattice.Lifted

PartialOrd a => PartialOrd ( Levitated a) Source #
Instance details

Defined in Algebra.Lattice.Levitated

Ord a => PartialOrd ( Free a) Source #
Instance details

Defined in Algebra.Lattice.Free

PartialOrd a => PartialOrd ( Dropped a) Source #
Instance details

Defined in Algebra.Lattice.Dropped

( Eq a, Integral a) => PartialOrd ( Divisibility a) Source #
Instance details

Defined in Algebra.Lattice.Divisibility

Ord a => PartialOrd ( Ordered a) Source #
Instance details

Defined in Algebra.Lattice.Ordered

Ord a => PartialOrd ( Free a) Source #
Instance details

Defined in Algebra.Heyting.Free

( PartialOrd v, Finite k) => PartialOrd (k -> v) Source #

Eq (k -> v) is from Eq

Instance details

Defined in Algebra.PartialOrd.Instances

Methods

leq :: (k -> v) -> (k -> v) -> Bool Source #

comparable :: (k -> v) -> (k -> v) -> Bool Source #

( PartialOrd a, PartialOrd b) => PartialOrd ( Either a b) Source #

Ordinal sum.

Since: 2.1

Instance details

Defined in Algebra.PartialOrd

( PartialOrd a, PartialOrd b) => PartialOrd (a, b) Source #
Instance details

Defined in Algebra.PartialOrd

Methods

leq :: (a, b) -> (a, b) -> Bool Source #

comparable :: (a, b) -> (a, b) -> Bool Source #

( Ord k, PartialOrd v) => PartialOrd ( Map k v) Source #
Instance details

Defined in Algebra.PartialOrd

( Eq k, Hashable k, PartialOrd v) => PartialOrd ( HashMap k v) Source #
Instance details

Defined in Algebra.PartialOrd

( PartialOrd k, PartialOrd v) => PartialOrd ( Lexicographic k v) Source #
Instance details

Defined in Algebra.Lattice.Lexicographic

partialOrdEq :: PartialOrd a => a -> a -> Bool Source #

The equality relation induced by the partial-order structure. It satisfies the laws of an equivalence relation: Reflexive: a == a Symmetric: a == b ==> b == a Transitive: a == b && b == c ==> a == c

Fixed points of chains in partial orders

lfpFrom :: PartialOrd a => a -> (a -> a) -> a Source #

Least point of a partially ordered monotone function. Checks that the function is monotone.

unsafeLfpFrom :: Eq a => a -> (a -> a) -> a Source #

Least point of a partially ordered monotone function. Does not checks that the function is monotone.

gfpFrom :: PartialOrd a => a -> (a -> a) -> a Source #

Greatest fixed point of a partially ordered antinone function. Checks that the function is antinone.

unsafeGfpFrom :: Eq a => a -> (a -> a) -> a Source #

Greatest fixed point of a partially ordered antinone function. Does not check that the function is antinone.