Idris2Doc : TypeAligned

TypeAligned

(source)
Type-aligned sequences.  Transitive closures of (binary) relations that also provide fast reflection / destruction.

Reexports

importpublic Data.Linear.Notation
importpublic TypeAligned.ZeroOne

Definitions

dataTypeAligned1 : Rela->Rela
  1 or more, transitive closure of a relationship.  Name is in the pattern of `List1`.

Totality: total
Visibility: export
Constructors:
One : pxy-@TypeAligned1pxy
Ton : Multiplepxy-@TypeAligned1pxy

Hints:
Reflexiveap=>Reflexivea (TypeAligned1p)
Show (pxy) =>Show (TypeAligned1pxy)
Transitivea (TypeAligned1p)
dataTypeAligned : Rela->Rela
  Reflexive, transition closure of a relationship

Totality: total
Visibility: export
Constructors:
None : (0_ : x=y) ->TypeAlignedpxy
Some : TypeAligned1pxy-@TypeAlignedpxy

Hints:
Reflexivea (TypeAlignedp)
Show (pxy) =>Show (TypeAlignedpxy)
Transitivea (TypeAlignedp)
0.x : TypeAligned1pwz->a
  Synthetic accesssor; second index

Totality: total
Visibility: export
0.y : TypeAligned1pwz->a
  Synthetic accessor; second-last index

Totality: total
Visibility: export
0.x : TypeAlignedpwz->a
  Synthetic accesssor; second index

Totality: total
Visibility: export
0.y : TypeAlignedpwz->a
  Synthetic accessor; second-last index

Totality: total
Visibility: export
.head : (ne : TypeAligned1pwz) ->pw (ne.x)
  Synthetic accessor

Totality: total
Visibility: export
head : (ne : TypeAligned1pwz) ->pw (ne.x)
  Synthetic accessor

Totality: total
Visibility: export
.last : (ne : TypeAligned1pwz) ->p (ne.y) z
  Synthetic accessor

Totality: total
Visibility: export
last : (ne : TypeAligned1pwz) ->p (ne.y) z
  Synthetic accessor

Totality: total
Visibility: export
Nil : TypeAlignedpxx
  List and SnocList empty syntax

Totality: total
Visibility: export
Lin : TypeAlignedpxx
  List and SnocList empty syntax

Totality: total
Visibility: export
nonEmptyOnce : TypeAlignedpxy-@ZeroOne (TypeAligned1p) xy
  Linear `nonEmpty`

Totality: total
Visibility: export
nonEmpty : TypeAlignedpxy->ZeroOne (TypeAligned1p) xy
  Determine if a possibly empty sequence is non-empty.

Totality: total
Visibility: export
fromNonEmptyOnce : TypeAligned1pxy-@TypeAlignedpxy
  Linear `fromNonEmpty`

Totality: total
Visibility: export
fromNonEmpty : TypeAligned1pxy->TypeAlignedpxy
  Treat a non-empty sequence as possibly empty

Totality: total
Visibility: export
singletonce : (1_ : pxy) ->TypeAligned1pxy
  Linear `singleton`

Totality: total
Visibility: export
singletonce : (1_ : pxy) ->TypeAlignedpxy
  Linear `singleton`

Totality: total
Visibility: export
singleton : pxy->TypeAligned1pxy
  Single-relationsip non-empty sequence

Totality: total
Visibility: export
singleton : pxy->TypeAlignedpxy
  Single-relations sequence

Totality: total
Visibility: export
consOnce : pxy-@ (TypeAligned1pyz-@TypeAligned1pxz)
  Linear `cons`

Totality: total
Visibility: export
cons1Once : (1_ : pxy) ->TypeAlignedpyz-@TypeAligned1pxz
  Linear `cons1`

Totality: total
Visibility: export
consOnce : (1_ : pxy) ->TypeAlignedpyz-@TypeAlignedpxz
  Linear `cons`

Totality: total
Visibility: export
cons : pxy->TypeAligned1pyz->TypeAligned1pxz
  Add one relationship to the beginning

Totality: total
Visibility: export
(::) : pxy->TypeAligned1pyz->TypeAligned1pxz
  Add one relationship to the beginning

Totality: total
Visibility: export
Fixity Declaration: infixr operator, level 7
cons1 : pxy->TypeAlignedpyz->TypeAligned1pxz
  cons is non-empty

Totality: total
Visibility: export
cons : pxy->TypeAlignedpyz->TypeAlignedpxz
  Add one relationship to the beginning

Totality: total
Visibility: export
(::) : pxy->TypeAlignedpyz->TypeAlignedpxz
  Add one relationship to the beginning

Totality: total
Visibility: export
Fixity Declaration: infixr operator, level 7
unconsOnce : (1ne : TypeAligned1pwz) ->LPair (pw (ne.x)) (TypeAlignedp (ne.x) z)
  Linear `uncons`

Totality: total
Visibility: export
unconsOnce : (1ta : TypeAlignedpwz) ->LEither (w=z) (LPair (pw (ta.x)) (TypeAlignedp (ta.x) z))
  Instead of Nothing, failure to uncons proves index equality

Totality: total
Visibility: export
uncons : (ne : TypeAligned1pwz) -> (pw (ne.x), TypeAlignedp (ne.x) z)
  View/remove the leftmost (first) primitive

Totality: total
Visibility: export
tail : (ne : TypeAligned1pwz) ->TypeAlignedp (ne.x) z
  Drop the first primitive

Totality: total
Visibility: export
uncons : (ta : TypeAlignedpwz) ->Either (w=z) (pw (ta.x), TypeAlignedp (ta.x) z)
  Instead of Nothing, failure to uncons proves index equality

Totality: total
Visibility: export
head : (ta : TypeAlignedpwz) ->Either (w=z) (pw (ta.x))
  Extract the first primitive, if none prove index equality

Totality: total
Visibility: export
tail : (ta : TypeAlignedpwz) ->Either (w=z) (TypeAlignedp (ta.x) z)
  Drop the first prinitive, if none prove index equality

Totality: total
Visibility: export
heqCons : (pwx->pyz->Bool) ->TypeAligned1pwx->TypeAligned1pyz->Bool
  Equality test like a non-empty list

Totality: total
Visibility: export
heqCons : (pwx->pyz->Bool) ->TypeAlignedpwx->TypeAlignedpyz->Bool
  Equality test like a list

Totality: total
Visibility: export
snocOnce : TypeAligned1pxy-@ (pyz-@TypeAligned1pxz)
  Linear `snoc`

Totality: total
Visibility: export
snoc1Once : TypeAlignedpxy-@ (pyz-@TypeAligned1pxz)
  Linear `snoc1`

Totality: total
Visibility: export
snocOnce : TypeAlignedpxy-@ (pyz-@TypeAlignedpxz)
  Linear `snoc`

Totality: total
Visibility: export
snoc : TypeAligned1pxy->pyz->TypeAligned1pxz
  Add one relationship to the right

Totality: total
Visibility: export
(:<) : TypeAligned1pxy->pyz->TypeAligned1pxz
  Add one relationship to the right

Totality: total
Visibility: export
Fixity Declaration: infixl operator, level 7
snoc1 : TypeAlignedpxy->pyz->TypeAligned1pxz
  snoc guarantees a non-empty result

Totality: total
Visibility: export
snoc : TypeAlignedpxy->pyz->TypeAlignedpxz
  Add one relationship to the right

Totality: total
Visibility: export
(:<) : TypeAlignedpxy->pyz->TypeAlignedpxz
  Add one relationship to the right

Totality: total
Visibility: export
Fixity Declaration: infixl operator, level 7
unsnocOnce : (1ne : TypeAligned1pwz) ->LPair (TypeAlignedpw (ne.y)) (p (ne.y) z)
  Linear `unsnoc`

Totality: total
Visibility: export
unsnocOnce : (1ta : TypeAlignedpwz) ->LEither (w=z) (LPair (TypeAlignedpw (ta.y)) (p (ta.y) z))
  Linear `unsnoc`

Totality: total
Visibility: export
unsnoc : (ne : TypeAligned1pwz) -> (TypeAlignedpw (ne.y), p (ne.y) z)
  View/remove rightmost (last) relationship

Totality: total
Visibility: export
init : (ne : TypeAligned1pwz) ->TypeAlignedpw (ne.y)
  Drop last relationship

Totality: total
Visibility: export
unsnoc : (ta : TypeAlignedpwz) ->Either (w=z) (TypeAlignedpw (ta.y), p (ta.y) z)
  Rather than Nothing, failure to unsnoc proves index equality.

Totality: total
Visibility: export
init : (ta : TypeAlignedpwz) ->Either (w=z) (TypeAlignedpw (ta.y))
  Drop last relationship, if none prove index equality.

Totality: total
Visibility: export
last : (ta : TypeAlignedpwz) ->Either (w=z) (p (ta.y) z)
  Extract last relationship, if none prove index equality.

Totality: total
Visibility: export
heqSnoc : (pwx->pyz->Bool) ->TypeAligned1pwx->TypeAligned1pyz->Bool
  Equality test like a non-empty snoc list

Totality: total
Visibility: export
heqSnoc : (pwx->pyz->Bool) ->TypeAlignedpwx->TypeAlignedpyz->Bool
  Equality test like a snoc list

Totality: total
Visibility: export
appendOnce : TypeAlignedpxy-@ (TypeAlignedpyz-@TypeAlignedpxz)
  Linear `append`

Totality: total
Visibility: export
appendOnce : TypeAligned1pxy-@ (TypeAligned1pyz-@TypeAligned1pxz)
  Linear `append`

Totality: total
Visibility: export
append : TypeAligned1pxy->TypeAligned1pyz->TypeAligned1pxz
  Join two TypeAligned1 sequences

Totality: total
Visibility: export
(++) : TypeAligned1pxy->TypeAligned1pyz->TypeAligned1pxz
  Join two TypeAligned1 sequences

Totality: total
Visibility: export
Fixity Declaration: infixr operator, level 7
append : TypeAlignedpxy->TypeAlignedpyz->TypeAlignedpxz
  Join two TypeAligned sequences

Totality: total
Visibility: export
(++) : TypeAlignedpxy->TypeAlignedpyz->TypeAlignedpxz
  Join two TypeAligned sequences

Totality: total
Visibility: export
Fixity Declaration: infixr operator, level 7
mapReduceOnce : {0f : a->b} -> {0q : Relb} ->pxy-@q (fx) (fy) ->qxy-@ (qyz-@qxz) ->TypeAligned1pxy-@q (fx) (fy)
  Linear `mapReduce`

Totality: total
Visibility: export
mapReduceLOnce : {0f : a->b} -> {0q : Relb} ->pxy-@q (fx) (fy) ->qxy-@ (qyz-@qxz) ->q (fx) (fx) ->TypeAlignedpxy-@q (fx) (fy)
  Linear `mapReduceL`

Totality: total
Visibility: export
mapReduceROnce : {0f : a->b} -> {0q : Relb} ->pxy-@q (fx) (fy) ->qxy-@ (qyz-@qxz) ->q (fy) (fy) ->TypeAlignedpxy-@q (fx) (fy)
  Linear `mapReduceR`

Totality: total
Visibility: export
mapReduce : {0f : a->b} -> {0q : Relb} -> (pxy->q (fx) (fy)) -> (qxy->qyz->qxz) ->TypeAligned1pxy->q (fx) (fy)
  Reduce while transforming to a different primitive.

Totality: total
Visibility: export
mapReduceL : {0f : a->b} -> {0q : Relb} -> (pxy->q (fx) (fy)) -> (qxy->qyz->qxz) ->q (fx) (fx) ->TypeAlignedpxy->q (fx) (fy)
  Reduce from the left while transforming.

Totality: total
Visibility: export
mapReduceR : {0f : a->b} -> {0q : Relb} -> (pxy->q (fx) (fy)) -> (qxy->qyz->qxz) ->q (fy) (fy) ->TypeAlignedpxy->q (fx) (fy)
  Reduce from the right while transforming.

Totality: total
Visibility: export
mapOnce : {0f : a->b} ->pxy-@q (fx) (fy) ->TypeAlignedpxy-@TypeAlignedq (fx) (fy)
  Linear `map`

Totality: total
Visibility: export
mapOnce : {0f : a->b} ->pxy-@q (fx) (fy) ->TypeAligned1pxy-@TypeAligned1q (fx) (fy)
  Linear `map`

Totality: total
Visibility: export
map : {0f : a->b} -> (pxy->q (fx) (fy)) ->TypeAlignedpxy->TypeAlignedq (fx) (fy)
  Change inner relation

Totality: total
Visibility: export
map : {0f : a->b} -> (pxy->q (fx) (fy)) ->TypeAligned1pxy->TypeAligned1q (fx) (fy)
  Change inner relation

Totality: total
Visibility: export
reduceOnce : pxy-@ (pyz-@pxz) ->TypeAligned1pxy-@pxy
  Linear `reduce`

Totality: total
Visibility: export
reduceLOnce : pxy-@ (pyz-@pxz) ->pxx->TypeAlignedpxy-@pxy
  Linear `reduceL`

Totality: total
Visibility: export
reduceROnce : pxy-@ (pyz-@pxz) ->pyy->TypeAlignedpxy-@pxy
  Linear `reduceR`

Totality: total
Visibility: export
reduce : (pxy->pyz->pxz) ->TypeAligned1pxy->pxy
  Reduce to a single primitive.

Totality: total
Visibility: export
reduceL : (pxy->pyz->pxz) ->pxx->TypeAlignedpxy->pxy
  Reduce from the left.

Totality: total
Visibility: export
reduceR : (pxy->pyz->pxz) ->pyy->TypeAlignedpxy->pxy
  Reduce from the right.

Totality: total
Visibility: export