Idris2Doc : TypeAligned.Trio

TypeAligned.Trio

(source)
Trio because they are NOT three-of-a-kind ("triple", "triad") since the indexes may differ.

Definitions

recordTrio : Rela->a->a->Type
  Three relationships / proofs that link up

Totality: total
Visibility: public export
Constructor: 
MkTrio : (1_ : pwx) -> (1_ : pxy) -> (1_ : pyz) ->Triopwz

Projections:
.fst3 : ({rec:0} : Triopwz) ->pw ({rec:0}.x)
.snd3 : ({rec:0} : Triopwz) ->p ({rec:0}.x) ({rec:0}.y)
.thrd : ({rec:0} : Triopwz) ->p ({rec:0}.y) z
0.x : Triopwz->a
0.y : Triopwz->a

Hint: 
Show (pxy) =>Show (Triopxy)
0.y : Triopwz->a
Totality: total
Visibility: public export
0.x : Triopwz->a
Totality: total
Visibility: public export
.fst3 : ({rec:0} : Triopwz) ->pw ({rec:0}.x)
Totality: total
Visibility: public export
.snd3 : ({rec:0} : Triopwz) ->p ({rec:0}.x) ({rec:0}.y)
Totality: total
Visibility: public export
.thrd : ({rec:0} : Triopwz) ->p ({rec:0}.y) z
Totality: total
Visibility: public export
head : (three : Triopwz) ->pw (three.x)
  Explicit prefix record projection

Totality: total
Visibility: export
fst3 : (three : Triopwz) ->pw (three.x)
  Explicit prefix record projection

Totality: total
Visibility: export
snd3 : (three : Triopwz) ->p (three.x) (three.y)
  Explicit prefix record projection

Totality: total
Visibility: export
thrd : (three : Triopwz) ->p (three.y) z
  Explicit prefix record projection

Totality: total
Visibility: export
last : (three : Triopwz) ->p (three.y) z
  Explicit prefix record projection

Totality: total
Visibility: export
tail : (three : Triopwz) ->Duop (three.x) z
  Drop first relationship

Totality: total
Visibility: export
init : (three : Triopwz) ->Duopw (three.y)
  Drop last relationship

Totality: total
Visibility: export
eqMeetOnce : pxy-@ (pxy-@Bool) -> (1l : Triopwz) -> (1r : Triopwz) -> (0_ : l.x=r.x) -> (0_ : l.y=r.y) ->Bool
  Linear 'eqMeet'

Totality: total
Visibility: export
eqMeet : (pxy->pxy->Bool) -> (l : Triopwz) -> (r : Triopwz) -> (0_ : l.x=r.x) -> (0_ : l.y=r.y) ->Bool
  Something like "Eq", but I'm not sure it's useful

Totality: total
Visibility: export
mapReduceOnce : {0f : a->b} -> {0q : Relb} ->pxy-@q (fx) (fy) ->qxy-@ (qyz-@qxz) ->Triopxy-@q (fx) (fy)
  Linear 'mapReduce'

Totality: total
Visibility: export
mapOnce : {0f : a->b} ->pxy-@q (fx) (fy) ->Triopxy-@Trioq (fx) (fy)
  Linear 'map'

Totality: total
Visibility: export
mapReduce : {0f : a->b} -> {0q : Relb} -> (pxy->q (fx) (fy)) -> (qxy->qyz->qxz) ->Triopxy->q (fx) (fy)
  Reduce while changing inner relation

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

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

Totality: total
Visibility: export
reduce : (pxy->pyz->pxz) ->Triopxy->pxy
  Reduce to inner relation

Totality: total
Visibility: export