Idris2Doc : Control.Relation.ReflexiveClosure

Control.Relation.ReflexiveClosure

(source)
Utility for describing chains of values linked via
a transitive relation.

Reexports

importpublic Control.Order
importpublic Control.Relation

Definitions

dataReflexiveClosure : (a->a->Type) ->a->a->Type
  The reflexive closure of a (typically transitive) relation.

This converts a transitive relation into a preorder.
For instance, if `(<)` is a transitive relation over the integers,
`ReflexiveClosure (<)` (corresponding to `(<=)` is a transitive,
reflexive relation over the integers.

Totality: total
Visibility: public export
Constructors:
Rel : (0_ : relxy) ->ReflexiveClosurerelxy
Refl : ReflexiveClosurerelxx

Hints:
Trichotomousarel=>Antisymmetrica (ReflexiveClosurerel)
Reflexivea (ReflexiveClosurerel)
Transitivearel=>Transitivea (ReflexiveClosurerel)
fromEq : (0_ : x=y) ->ReflexiveClosurerelxy
Totality: total
Visibility: public export
0strictLeft : Transitivearel=>relxy->ReflexiveClosurerelyz->relxz
Totality: total
Visibility: public export
0strictRight : Transitivearel=>ReflexiveClosurerelxy->relyz->relxz
Totality: total
Visibility: public export
dataChain : (a->a->Type) ->a->a->Type
  A chain of values, linke by relation `ReflexiveClosure rel`.

Totality: total
Visibility: public export
Constructors:
Nil : Chainrelxx
(::) : (0x : a) ->Chainrelyz-> {auto0_ : ReflexiveClosurerelxy} ->Chainrelxz
dataIsStrict : Chainrelxy->Type
  Witness that at least one link in a chain of values
linked via `ReflexiveClosure rel` is string, and
therefore (if `rel` is transitive), `rel x y` holds.

For instance, assume `rel` is `(<)` over the integers.
Then `ReflexiveClosure rel` corresponds to `(<=)`.
If we have the chain `w <= x <= y <= z` and we can
show that one of the inequalities is strict (for instance,
that `y < z`), then we can not only show that `w <= z` but
that `w < z`.

Totality: total
Visibility: public export
Constructors:
Here : IsStrict (x::c)
There : IsStrictc->IsStrict (x::c)
0chain : Preorderarel=>Chainrelxy->relxy
  If `x` and `y` are linked via a preorder `rel` over a chain
of values, then `rel x y` holds.

Totality: total
Visibility: public export
0weak : Transitivearel=>Chainrelxy->ReflexiveClosurerelxy
  If `x` and `y` are linked via `ReflexiveClosure rel` for a transitive
relation `rel` over a chain of values, then `ReflexiveClosure rel x y` holds.

Totality: total
Visibility: public export
0strict : Transitivearel=> (c : Chainrelxy) ->IsStrictc=>relxy
  If `x` and `y` are linked via `ReflexiveClosure rel` for a transitive
relation `rel` over a chain of values, and at least one link ist
strict, the `rel x y` holds.

Totality: total
Visibility: public export