Module Phantom_algebra.Core

include Interface.S
type +_ dim
val dim_to_int : 'a dim ‑> int
type +_ rank
module Rank : sig ... end
type (+'dim, +'rank) t
val pp : Format.formatter ‑> ('dim'rankt ‑> unit
type +'c scalar = ('a Type_functions.one'b Type_functions.zt constraint 'c = 'a * 'b
type +'c vec2 = ('a Type_functions.two'b Type_functions.onet constraint 'c = 'a * 'b
type +'c vec3 = ('a Type_functions.three'b Type_functions.onet constraint 'c = 'a * 'b
type +'c vec4 = ('a Type_functions.four'b Type_functions.onet constraint 'c = 'a * 'b
type +'c mat2 = ('a Type_functions.two'b Type_functions.twot constraint 'c = 'a * 'b
type +'c mat3 = ('a Type_functions.three'b Type_functions.twot constraint 'c = 'a * 'b
type +'c mat4 = ('a Type_functions.four'b Type_functions.twot constraint 'c = 'a * 'b
val scalar : Interface.k ‑> ('a * 'b) scalar
val (~+) : Interface.k ‑> ('a * 'b) scalar
val vec2 : Interface.k ‑> Interface.k ‑> ('a * 'b) vec2
val vec3 : Interface.k ‑> Interface.k ‑> Interface.k ‑> ('a * 'b) vec3
val vec4 : Interface.k ‑> Interface.k ‑> Interface.k ‑> Interface.k ‑> ('a * 'b) vec4
val mat2 : ('a * 'b) vec2 ‑> ('c * 'd) vec2 ‑> ('e * 'f) mat2
val mat3 : ('a * 'b) vec3 ‑> ('c * 'd) vec3 ‑> ('e * 'f) vec3 ‑> ('g * 'h) mat3
val mat4 : ('a * 'b) vec4 ‑> ('c * 'd) vec4 ‑> ('e * 'f) vec4 ‑> ('g * 'h) vec4 ‑> ('i * 'j) mat4
val vec2' : ([< `one of 'a | `two of 'b ], [< `one of 'c | `zero of 'd ]) t ‑> ('e * 'f) vec2
val vec3' : ([< `one of 'a | `three of 'b | `two of 'c ], [< `one of 'd | `zero of 'e ]) t ‑> ('f * 'g) vec3
val vec4' : ([< `four of 'a | `one of 'b | `three of 'c | `two of 'd ], [< `one of 'e | `zero of 'f ]) t ‑> ('g * 'h) vec4
val (|+|) : (([< `one of 'dim2 * [< `one of 'dim3 * 'a Type_functions.two | `three of 'dim3 * 'a Type_functions.four | `two of 'dim3 * 'a Type_functions.three ] * 'dim2 * [< `one of 'dim3 * 'a Type_functions.two | `three of 'dim3 * 'a Type_functions.four | `two of 'dim3 * 'a Type_functions.three ] | `three of 'dim2 * [< `one of 'dim3 * 'a Type_functions.four ] * 'dim2 * [< `one of 'dim3 * 'a Type_functions.four ] | `two of 'dim2 * [< `one of 'dim3 * 'a Type_functions.three | `two of 'dim3 * 'a Type_functions.four ] * 'dim2 * [< `one of 'dim3 * 'a Type_functions.three | `two of 'dim3 * 'a Type_functions.four ] ], 'dim2'dim3'aType_functions.nat_sum, [< `one of 'b | `zero of 'c ]) t ‑> ('dim2, [< `one of 'd | `zero of 'e ]) t ‑> ('dim3'f Type_functions.onet
val map : (Interface.k ‑> Interface.k) ‑> ('dim'rankt ‑> ('dim'rankt
val map2 : (Interface.k ‑> Interface.k ‑> Interface.k) ‑> ('dim'rankt ‑> ('dim'rankt ‑> ('dim'rankt
val (+) : ('dim1, ([< `one of 'rank2 * [< `one of 'rank3 * 'dim1 * 'dim3 * 'a Type_functions.one * 'dim2 * 'dim2 | `zero of 'rank3 * 'dim3 * 'a Type_functions.one * 'dim1 ] * 'rank2 * [< `one of 'rank3 * 'dim1 * 'dim3 * 'a Type_functions.one * 'dim2 * 'dim2 | `zero of 'rank3 * 'dim3 * 'a Type_functions.one * 'dim1 ] | `two of 'rank2 * [< `two of 'rank3 * 'dim1 * 'dim3 * 'a Type_functions.two * 'dim1 * 'dim3 | `zero of 'rank3 * 'dim3 * 'a Type_functions.two * 'dim1 ] * 'rank2 * [< `two of 'rank3 * 'dim1 * 'dim3 * 'a Type_functions.two * 'dim1 * 'dim3 | `zero of 'rank3 * 'dim3 * 'a Type_functions.two * 'dim1 ] | `zero of 'rank2 * [< `one of 'rank3 * 'dim3 * 'a Type_functions.one * 'dim2 | `two of 'rank3 * 'dim3 * 'a Type_functions.two * 'dim2 | `zero of 'rank3 * 'dim3 * 'a Type_functions.z * 'b Type_functions.one ] * 'rank2 * [< `one of 'rank3 * 'dim3 * 'a Type_functions.one * 'dim2 | `two of 'rank3 * 'dim3 * 'a Type_functions.two * 'dim2 | `zero of 'rank3 * 'dim3 * 'a Type_functions.z * 'b Type_functions.one ] ], 'rank2'rank3'dim1'dim2'dim3'a * 'b * 'cType_functions.sumt ‑> ('dim2'rank2t ‑> ('dim3'rank3t
val (<+>) : ('dim'rankt ‑> ('dim'rankt ‑> ('dim'rankt
val (~-) : ('dim'rankt ‑> ('dim'rankt
val (-) : ('a, ([< `one of 'rank2 * [< `one of 'rank3 * 'dim1 * 'dim3 * 'b Type_functions.one * 'dim2 * 'dim2 | `zero of 'rank3 * 'dim3 * 'b Type_functions.one * 'dim1 ] * 'rank2 * [< `one of 'rank3 * 'dim1 * 'dim3 * 'b Type_functions.one * 'dim2 * 'dim2 | `zero of 'rank3 * 'dim3 * 'b Type_functions.one * 'dim1 ] | `two of 'rank2 * [< `two of 'rank3 * 'dim1 * 'dim3 * 'b Type_functions.two * 'dim1 * 'dim3 | `zero of 'rank3 * 'dim3 * 'b Type_functions.two * 'dim1 ] * 'rank2 * [< `two of 'rank3 * 'dim1 * 'dim3 * 'b Type_functions.two * 'dim1 * 'dim3 | `zero of 'rank3 * 'dim3 * 'b Type_functions.two * 'dim1 ] | `zero of 'rank2 * [< `one of 'rank3 * 'dim3 * 'b Type_functions.one * 'dim2 | `two of 'rank3 * 'dim3 * 'b Type_functions.two * 'dim2 | `zero of 'rank3 * 'dim3 * 'b Type_functions.z * 'c Type_functions.one ] * 'rank2 * [< `one of 'rank3 * 'dim3 * 'b Type_functions.one * 'dim2 | `two of 'rank3 * 'dim3 * 'b Type_functions.two * 'dim2 | `zero of 'rank3 * 'dim3 * 'b Type_functions.z * 'c Type_functions.one ] ], 'rank2'rank3'dim1'dim2'dim3'b * 'c * 'dType_functions.sumt ‑> ('a'rank2t ‑> ('a'rank3t
val (<->) : ('dim'rankt ‑> ('dim'rankt ‑> ('dim'rankt
val (*) : ('dim1, ([< `one of 'rank2 * [< `one of 'rank3 * 'dim2 * 'dim3 * 'a Type_functions.one * 'dim1 * 'dim1 | `two of 'rank3 * 'dim2 * 'dim3 * 'a Type_functions.one * 'dim1 * 'dim1 | `zero of 'rank3 * 'dim3 * 'a Type_functions.one * 'dim2 ] * 'rank2 * [< `one of 'rank3 * 'dim2 * 'dim3 * 'a Type_functions.one * 'dim1 * 'dim1 | `two of 'rank3 * 'dim2 * 'dim3 * 'a Type_functions.one * 'dim1 * 'dim1 | `zero of 'rank3 * 'dim3 * 'a Type_functions.one * 'dim2 ] | `two of 'rank2 * [< `one of 'rank3 * 'dim2 * 'dim3 * 'a Type_functions.one * 'dim1 * 'dim1 | `two of 'rank3 * 'dim2 * 'dim3 * 'a Type_functions.two * 'dim1 * 'dim1 | `zero of 'rank3 * 'dim3 * 'a Type_functions.two * 'dim2 ] * 'rank2 * [< `one of 'rank3 * 'dim2 * 'dim3 * 'a Type_functions.one * 'dim1 * 'dim1 | `two of 'rank3 * 'dim2 * 'dim3 * 'a Type_functions.two * 'dim1 * 'dim1 | `zero of 'rank3 * 'dim3 * 'a Type_functions.two * 'dim2 ] | `zero of 'rank2 * [< `one of 'rank3 * 'dim3 * 'a Type_functions.one * 'dim2 | `two of 'rank3 * 'dim3 * 'a Type_functions.two * 'dim2 | `zero of 'rank3 * 'dim3 * 'a Type_functions.z * 'b Type_functions.one ] * 'rank2 * [< `one of 'rank3 * 'dim3 * 'a Type_functions.one * 'dim2 | `two of 'rank3 * 'dim3 * 'a Type_functions.two * 'dim2 | `zero of 'rank3 * 'dim3 * 'a Type_functions.z * 'b Type_functions.one ] ], 'rank2'rank3'dim1'dim2'dim3'a * 'b * 'cType_functions.productt ‑> ('dim2'rank2t ‑> ('dim3'rank3t
val (/) : ('dim1, ([< `one of 'rank2 * [< `one of 'rank3 * 'dim2 * 'dim3 * 'a Type_functions.one * 'dim1 * 'dim1 | `two of 'rank3 * 'dim2 * 'dim3 * 'a Type_functions.one * 'dim1 * 'dim1 | `zero of 'rank3 * 'dim3 * 'a Type_functions.one * 'dim1 ] * 'rank2 * [< `one of 'rank3 * 'dim2 * 'dim3 * 'a Type_functions.one * 'dim1 * 'dim1 | `two of 'rank3 * 'dim2 * 'dim3 * 'a Type_functions.one * 'dim1 * 'dim1 | `zero of 'rank3 * 'dim3 * 'a Type_functions.one * 'dim1 ] | `two of 'rank2 * [< `two of 'rank3 * 'dim2 * 'dim3 * 'b Type_functions.two * 'dim1 * 'dim1 | `zero of 'rank3 * 'dim3 * 'a Type_functions.two * 'dim1 ] * 'rank2 * [< `two of 'rank3 * 'dim2 * 'dim3 * 'b Type_functions.two * 'dim1 * 'dim1 | `zero of 'rank3 * 'dim3 * 'a Type_functions.two * 'dim1 ] | `zero of 'rank2 * [< `zero of 'rank3 * 'dim3 * 'a Type_functions.z * 'b Type_functions.one ] * 'rank2 * [< `zero of 'rank3 * 'dim3 * 'a Type_functions.z * 'b Type_functions.one ] ], 'rank2'rank3'dim1'dim2'dim3'a * 'b * 'cType_functions.divt ‑> ('dim2'rank2t ‑> ('dim3'rank3t
val (**) : ('dim'rankt ‑> int ‑> ('dim'rankt
val exp : ('dim'rankt ‑> ('dim'rankt
val (|*|) : ('dim'rankt ‑> ('dim'rankt ‑> Interface.k
val norm : ('dim'rankt ‑> Interface.k
val normalize : ('dim'rankt ‑> ('dim'rankt
val orthonormalize : ('dim'a Type_functions.onet list ‑> ('dim'b Type_functions.onet list
val distance : ('dim'rankt ‑> ('dim'rankt ‑> Interface.k
val norm_1 : ('dim'rankt ‑> Interface.k
val norm_q : float ‑> ('dim'rankt ‑> Interface.k
val cross : (([< `three of 'dim2 * 'rank2 * 'b Type_functions.three * 'c Type_functions.one * 'dim2 * 'rank2 * 'b Type_functions.three * 'c Type_functions.one | `two of 'dim2 * 'rank2 * 'b * 'c Type_functions.z * 'dim2 * 'rank2 * 'b * 'c Type_functions.z ] as a, 'dim2 * 'rank2'c * 'bType_functions.cross'd Type_functions.onet ‑> ('a'e Type_functions.onet ‑> ('dim2'rank2t
val (^) : ('dim'a Type_functions.onet ‑> ('dim'b Type_functions.onet ‑> ('dim'c Type_functions.twot
val commutator : ('dim'a Type_functions.twot ‑> ('dim'b Type_functions.twot ‑> ('dim'c Type_functions.twot
val anticommutator : ('dim'a Type_functions.twot ‑> ('dim'b Type_functions.twot ‑> ('dim'c Type_functions.twot
val trace : ('dim'a Type_functions.twot ‑> Interface.k
val det : ('dim'a Type_functions.twot ‑> Interface.k
val transpose : ('dim'a Type_functions.twot ‑> ('dim'b Type_functions.twot
type (+'dim, +'len, +'rank, +'group) index
val (&) : ('dim, ([< `one of 'len2 * [< `one of 'len3 * 'a Type_functions.two | `three of 'len3 * 'a Type_functions.four | `two of 'len3 * 'a Type_functions.three ] * 'len2 * [< `one of 'len3 * 'a Type_functions.two | `three of 'len3 * 'a Type_functions.four | `two of 'len3 * 'a Type_functions.three ] | `three of 'len2 * [< `one of 'len3 * 'a Type_functions.four ] * 'len2 * [< `one of 'len3 * 'a Type_functions.four ] | `two of 'len2 * [< `one of 'len3 * 'a Type_functions.three | `two of 'len3 * 'a Type_functions.four ] * 'len2 * [< `one of 'len3 * 'a Type_functions.three | `two of 'len3 * 'a Type_functions.four ] ], 'len2'len3'aType_functions.simple_sum'rank'groupindex ‑> ('dim'len2'rank'groupindex ‑> ('dim'len3'rank'groupindex
val x' : ([< `four of 'a | `one of 'b | `three of 'c | `two of 'd ], 'e Type_functions.one'f Type_functions.one, [ `xyzw ]) index
val y' : ([< `four of 'a | `three of 'b | `two of 'c ], 'd Type_functions.one'e Type_functions.one, [ `xyzw ]) index
val z' : ([< `four of 'a | `three of 'b ], 'c Type_functions.one'd Type_functions.one, [ `xyzw ]) index
val w' : ([< 'a Type_functions.four ], 'b Type_functions.one'c Type_functions.one, [ `xyzw ]) index
val xx' : ([< `four of 'a | `one of 'b | `three of 'c | `two of 'd ], 'e Type_functions.one'f Type_functions.two, [ `xyzw ]) index
val yx' : ([< `four | `three of 'a | `two of 'b ], 'c Type_functions.one'd Type_functions.two, [ `xyzw ]) index
val zx' : ([< `four | `three of 'a ], 'b Type_functions.one'c Type_functions.two, [ `xyzw ]) index
val wx' : ([< 'a Type_functions.four ], 'b Type_functions.one'c Type_functions.two, [ `xyzw ]) index
val xy' : ([< `four of 'a | `three of 'b | `two of 'c ], 'd Type_functions.one'e Type_functions.two, [ `xyzw ]) index
val yy' : ([< `four of 'a | `three of 'b | `two of 'c ], 'd Type_functions.one'e Type_functions.two, [ `xyzw ]) index
val zy' : ([< `four of 'a | `three of 'b ], 'c Type_functions.one'd Type_functions.two, [ `xyzw ]) index
val wy' : ([< 'a Type_functions.four ], 'b Type_functions.one'c Type_functions.two, [ `xyzw ]) index
val xz' : ([< `four of 'a | `three of 'b ], 'c Type_functions.one'd Type_functions.two, [ `xyzw ]) index
val yz' : ([< `four of 'a | `three of 'b ], 'c Type_functions.one'd Type_functions.two, [ `xyzw ]) index
val zz' : ([< `four of 'a | `three of 'b ], 'c Type_functions.one'd Type_functions.two, [ `xyzw ]) index
val wz' : ([< 'a Type_functions.four ], 'b Type_functions.one'c Type_functions.two, [ `xyzw ]) index
val xw' : ('a Type_functions.four'b Type_functions.one'c Type_functions.two, [ `xyzw ]) index
val yw' : ('a Type_functions.four'b Type_functions.one'c Type_functions.two, [ `xyzw ]) index
val zw' : ('a Type_functions.four'b Type_functions.one'c Type_functions.two, [ `xyzw ]) index
val ww' : ('a Type_functions.four'b Type_functions.one'c Type_functions.two, [ `xyzw ]) index
val r' : ([< `four of 'a | `one of 'b | `three of 'c | `two of 'd ], 'e Type_functions.one'f Type_functions.one, [ `rgba ]) index
val g' : ([< `four of 'a | `three of 'b | `two of 'c ], 'd Type_functions.one'e Type_functions.one, [ `rgba ]) index
val b' : ([< `four of 'a | `three of 'b ], 'c Type_functions.one'd Type_functions.one, [ `rgba ]) index
val a' : ([< 'a Type_functions.four ], 'b Type_functions.one'c Type_functions.one, [ `rgba ]) index
val rr' : ([< `four of 'a | `one of 'b | `three of 'c | `two of 'd ], 'e Type_functions.one'f Type_functions.two, [ `rgba ]) index
val gr' : ([< `four | `three of 'a | `two of 'b ], 'c Type_functions.one'd Type_functions.two, [ `rgba ]) index
val br' : ([< `four | `three of 'a ], 'b Type_functions.one'c Type_functions.two, [ `rgba ]) index
val ar' : ([< 'a Type_functions.four ], 'b Type_functions.one'c Type_functions.two, [ `rgba ]) index
val rg' : ([< `four of 'a | `three of 'b | `two of 'c ], 'd Type_functions.one'e Type_functions.two, [ `rgba ]) index
val gg' : ([< `four of 'a | `three of 'b | `two of 'c ], 'd Type_functions.one'e Type_functions.two, [ `rgba ]) index
val bg' : ([< `four of 'a | `three of 'b ], 'c Type_functions.one'd Type_functions.two, [ `rgba ]) index
val ag' : ([< 'a Type_functions.four ], 'b Type_functions.one'c Type_functions.two, [ `rgba ]) index
val rb' : ([< `four of 'a | `three of 'b ], 'c Type_functions.one'd Type_functions.two, [ `rgba ]) index
val gb' : ([< `four of 'a | `three of 'b ], 'c Type_functions.one'd Type_functions.two, [ `rgba ]) index
val bb' : ([< `four of 'a | `three of 'b ], 'c Type_functions.one'd Type_functions.two, [ `rgba ]) index
val ab' : ([< 'a Type_functions.four ], 'b Type_functions.one'c Type_functions.two, [ `rgba ]) index
val ra' : ('a Type_functions.four'b Type_functions.one'c Type_functions.two, [ `rgba ]) index
val ga' : ('a Type_functions.four'b Type_functions.one'c Type_functions.two, [ `rgba ]) index
val ba' : ('a Type_functions.four'b Type_functions.one'c Type_functions.two, [ `rgba ]) index
val aa' : ('a Type_functions.four'b Type_functions.one'c Type_functions.two, [ `rgba ]) index
val s' : ([< `four of 'a | `one of 'b | `three of 'c | `two of 'd ], 'e Type_functions.one'f Type_functions.one, [ `stpq ]) index
val t' : ([< `four of 'a | `three of 'b | `two of 'c ], 'd Type_functions.one'e Type_functions.one, [ `stpq ]) index
val p' : ([< `four of 'a | `three of 'b ], 'c Type_functions.one'd Type_functions.one, [ `stpq ]) index
val q' : ([< 'a Type_functions.four ], 'b Type_functions.one'c Type_functions.one, [ `stpq ]) index
val ss' : ([< `four of 'a | `one of 'b | `three of 'c | `two of 'd ], 'e Type_functions.one'f Type_functions.two, [ `stpq ]) index
val ts' : ([< `four | `three of 'a | `two of 'b ], 'c Type_functions.one'd Type_functions.two, [ `stpq ]) index
val ps' : ([< `four | `three of 'a ], 'b Type_functions.one'c Type_functions.two, [ `stpq ]) index
val qs' : ([< 'a Type_functions.four ], 'b Type_functions.one'c Type_functions.two, [ `stpq ]) index
val st' : ([< `four of 'a | `three of 'b | `two of 'c ], 'd Type_functions.one'e Type_functions.two, [ `stpq ]) index
val tt' : ([< `four of 'a | `three of 'b | `two of 'c ], 'd Type_functions.one'e Type_functions.two, [ `stpq ]) index
val pt' : ([< `four of 'a | `three of 'b ], 'c Type_functions.one'd Type_functions.two, [ `stpq ]) index
val qt' : ([< 'a Type_functions.four ], 'b Type_functions.one'c Type_functions.two, [ `stpq ]) index
val sp' : ([< `four of 'a | `three of 'b ], 'c Type_functions.one'd Type_functions.two, [ `stpq ]) index
val tp' : ([< `four of 'a | `three of 'b ], 'c Type_functions.one'd Type_functions.two, [ `stpq ]) index
val pp' : ([< `four of 'a | `three of 'b ], 'c Type_functions.one'd Type_functions.two, [ `stpq ]) index
val qp' : ([< 'a Type_functions.four ], 'b Type_functions.one'c Type_functions.two, [ `stpq ]) index
val sq' : ('a Type_functions.four'b Type_functions.one'c Type_functions.two, [ `stpq ]) index
val tq' : ('a Type_functions.four'b Type_functions.one'c Type_functions.two, [ `stpq ]) index
val pq' : ('a Type_functions.four'b Type_functions.one'c Type_functions.two, [ `stpq ]) index
val qq' : ('a Type_functions.four'b Type_functions.one'c Type_functions.two, [ `stpq ]) index
val slice : ('dim1, ([< `one of 'len * [< `four of 'rank3 * 'dim3 * 'a Type_functions.one * 'b Type_functions.four | `one of 'rank3 * 'a Type_functions.z | `three of 'rank3 * 'dim3 * 'a Type_functions.one * 'b Type_functions.three | `two of 'rank3 * 'dim3 * 'a Type_functions.one * 'b Type_functions.two ] * 'len * [< `four of 'rank3 * 'dim3 * 'a Type_functions.one * 'b Type_functions.four | `one of 'rank3 * 'a Type_functions.z | `three of 'rank3 * 'dim3 * 'a Type_functions.one * 'b Type_functions.three | `two of 'rank3 * 'dim3 * 'a Type_functions.one * 'b Type_functions.two ] | `two of 'rank2 * [< `one of 'dim1 * 'len * 'dim3 * [< `four of 'dim1 * 'rank3 * 'a Type_functions.four * 'b Type_functions.two | `one of 'rank3 * 'a Type_functions.one | `three of 'dim1 * 'rank3 * 'a Type_functions.three * 'b Type_functions.two | `two of 'dim1 * 'rank3 * 'a Type_functions.two * 'b Type_functions.two ] | `two of 'len * [< `four of 'dim3 * 'rank3 * 'b Type_functions.four * 'a Type_functions.one | `one of 'rank3 * 'a Type_functions.z | `three of 'dim3 * 'rank3 * 'b Type_functions.three * 'a Type_functions.one | `two of 'dim3 * 'rank3 * 'b Type_functions.two * 'a Type_functions.one ] ] * 'rank2 * [< `one of 'dim1 * 'len * 'dim3 * [< `four of 'dim1 * 'rank3 * 'a Type_functions.four * 'b Type_functions.two | `one of 'rank3 * 'a Type_functions.one | `three of 'dim1 * 'rank3 * 'a Type_functions.three * 'b Type_functions.two | `two of 'dim1 * 'rank3 * 'a Type_functions.two * 'b Type_functions.two ] | `two of 'len * [< `four of 'dim3 * 'rank3 * 'b Type_functions.four * 'a Type_functions.one | `one of 'rank3 * 'a Type_functions.z | `three of 'dim3 * 'rank3 * 'b Type_functions.three * 'a Type_functions.one | `two of 'dim3 * 'rank3 * 'b Type_functions.two * 'a Type_functions.one ] ] ], 'rank2'rank3'dim1'dim3'len'a * 'bType_functions.superindexingt ‑> ('dim1'len'rank2'groupindex ‑> ('dim3'rank3t
val (.%[]) : ('dim1, ([< `one of 'len * [< `four of 'rank3 * 'dim3 * 'a Type_functions.one * 'b Type_functions.four | `one of 'rank3 * 'a Type_functions.z | `three of 'rank3 * 'dim3 * 'a Type_functions.one * 'b Type_functions.three | `two of 'rank3 * 'dim3 * 'a Type_functions.one * 'b Type_functions.two ] * 'len * [< `four of 'rank3 * 'dim3 * 'a Type_functions.one * 'b Type_functions.four | `one of 'rank3 * 'a Type_functions.z | `three of 'rank3 * 'dim3 * 'a Type_functions.one * 'b Type_functions.three | `two of 'rank3 * 'dim3 * 'a Type_functions.one * 'b Type_functions.two ] | `two of 'rank2 * [< `one of 'dim1 * 'len * 'dim3 * [< `four of 'dim1 * 'rank3 * 'a Type_functions.four * 'b Type_functions.two | `one of 'rank3 * 'a Type_functions.one | `three of 'dim1 * 'rank3 * 'a Type_functions.three * 'b Type_functions.two | `two of 'dim1 * 'rank3 * 'a Type_functions.two * 'b Type_functions.two ] | `two of 'len * [< `four of 'dim3 * 'rank3 * 'b Type_functions.four * 'a Type_functions.one | `one of 'rank3 * 'a Type_functions.z | `three of 'dim3 * 'rank3 * 'b Type_functions.three * 'a Type_functions.one | `two of 'dim3 * 'rank3 * 'b Type_functions.two * 'a Type_functions.one ] ] * 'rank2 * [< `one of 'dim1 * 'len * 'dim3 * [< `four of 'dim1 * 'rank3 * 'a Type_functions.four * 'b Type_functions.two | `one of 'rank3 * 'a Type_functions.one | `three of 'dim1 * 'rank3 * 'a Type_functions.three * 'b Type_functions.two | `two of 'dim1 * 'rank3 * 'a Type_functions.two * 'b Type_functions.two ] | `two of 'len * [< `four of 'dim3 * 'rank3 * 'b Type_functions.four * 'a Type_functions.one | `one of 'rank3 * 'a Type_functions.z | `three of 'dim3 * 'rank3 * 'b Type_functions.three * 'a Type_functions.one | `two of 'dim3 * 'rank3 * 'b Type_functions.two * 'a Type_functions.one ] ] ], 'rank2'rank3'dim1'dim3'len'a * 'bType_functions.superindexingt ‑> ('dim1'len'rank2'groupindex ‑> ('dim3'rank3t
val get : ('dim'rankt ‑> ('dim'a Type_functions.one'rank'groupindex ‑> Interface.k
val (.%()) : ('dim'rankt ‑> ('dim'a Type_functions.one'rank'groupindex ‑> Interface.k
val zero : 'dim dim ‑> 'rank rank ‑> ('dim'rankt
val id : 'dim dim ‑> 'rank rank ‑> ('dim'rankt
val eye : 'a dim ‑> ('a'b Type_functions.twot
val diag : ('dim'a Type_functions.onet ‑> ('dim'b Type_functions.twot
val rotation : ('dim'a Type_functions.onet ‑> ('dim'b Type_functions.onet ‑> Interface.k ‑> ('dim'c Type_functions.twot
val rank_match : [< `one of 'b * 'r | `two of 'c * 'r | `zero of 'a * 'r ] rank ‑> ('d Type_functions.z rank ‑> 'a) ‑> ('e Type_functions.one rank ‑> 'b) ‑> ('f Type_functions.two rank ‑> 'c) ‑> 'r
val dim_match : [< `four of 'd * 'r | `one of 'a * 'r | `three of 'c * 'r | `two of 'b * 'r ] dim ‑> ('e Type_functions.one dim ‑> 'a) ‑> ('f Type_functions.two dim ‑> 'b) ‑> ('g Type_functions.three dim ‑> 'c) ‑> ('h Type_functions.four dim ‑> 'd) ‑> 'r
val clone_2 : ([< `four of 'dim1 * 'dim2 * 'a Type_functions.four * 'b Type_functions.four | `one of 'dim1 * 'dim2 * 'c Type_functions.one * 'd Type_functions.one | `three of 'dim1 * 'dim2 * 'e Type_functions.three * 'f Type_functions.three | `two of 'dim1 * 'dim2 * 'g Type_functions.two * 'h Type_functions.two ], [< `one of 'rank1 * 'rank2 * 'i Type_functions.one * 'j Type_functions.one | `two of 'rank1 * 'rank2 * 'k Type_functions.two * 'l Type_functions.two | `zero of 'rank1 * 'rank2 * 'm Type_functions.z * 'n Type_functions.z ]) t ‑> ('dim1'rank1t * ('dim2'rank2t
val clone_3 : ([< `four of 'dim1 * 'dim2 * 'dim3 * 'a Type_functions.four * 'b Type_functions.four * 'c Type_functions.four | `one of 'dim1 * 'dim2 * 'dim3 * 'd Type_functions.one * 'e Type_functions.one * 'f Type_functions.one | `three of 'dim1 * 'dim2 * 'dim3 * 'g Type_functions.three * 'h Type_functions.three * 'i Type_functions.three | `two of 'dim1 * 'dim2 * 'dim3 * 'j Type_functions.two * 'k Type_functions.two * 'l Type_functions.two ], [< `one of 'rank1 * 'rank2 * 'rank3 * 'm Type_functions.one * 'n Type_functions.one * 'o Type_functions.one | `two of 'rank1 * 'rank2 * 'rank3 * 'p Type_functions.two * 'q Type_functions.two * 'r Type_functions.two | `zero of 'rank1 * 'rank2 * 'rank3 * 's Type_functions.z * 't Type_functions.z * 'u Type_functions.z ]) t ‑> ('dim1'rank1t * ('dim2'rank2t * ('dim3'rank3t
val clone_7 : ([< `four of 'dim1 * 'dim2 * 'dim3 * 'dim4 * 'dim5 * 'dim6 * 'dim7 * 'a Type_functions.four * 'b Type_functions.four * 'c Type_functions.four * 'd Type_functions.four * 'e Type_functions.four * 'f Type_functions.four * 'g Type_functions.four | `one of 'dim1 * 'dim2 * 'dim3 * 'dim4 * 'dim5 * 'dim6 * 'dim7 * 'h Type_functions.one * 'i Type_functions.one * 'j Type_functions.one * 'k Type_functions.one * 'l Type_functions.one * 'm Type_functions.one * 'n Type_functions.one | `three of 'dim1 * 'dim2 * 'dim3 * 'dim4 * 'dim5 * 'dim6 * 'dim7 * 'o Type_functions.three * 'p Type_functions.three * 'q Type_functions.three * 'r Type_functions.three * 's Type_functions.three * 't Type_functions.three * 'u Type_functions.three | `two of 'dim1 * 'dim2 * 'dim3 * 'dim4 * 'dim5 * 'dim6 * 'dim7 * 'v Type_functions.two * 'w Type_functions.two * 'x Type_functions.two * 'y Type_functions.two * 'z Type_functions.two * 'a1 Type_functions.two * 'b1 Type_functions.two ], [< `one of 'rank1 * 'rank2 * 'rank3 * 'rank4 * 'rank5 * 'rank6 * 'rank7 * 'c1 Type_functions.one * 'd1 Type_functions.one * 'e1 Type_functions.one * 'f1 Type_functions.one * 'g1 Type_functions.one * 'h1 Type_functions.one * 'i1 Type_functions.one | `two of 'rank1 * 'rank2 * 'rank3 * 'rank4 * 'rank5 * 'rank6 * 'rank7 * 'j1 Type_functions.two * 'k1 Type_functions.two * 'l1 Type_functions.two * 'm1 Type_functions.two * 'n1 Type_functions.two * 'o1 Type_functions.two * 'p1 Type_functions.two | `zero of 'rank1 * 'rank2 * 'rank3 * 'rank4 * 'rank5 * 'rank6 * 'rank7 * 'q1 Type_functions.z * 'r1 Type_functions.z * 's1 Type_functions.z * 't1 Type_functions.z * 'u1 Type_functions.z * 'v1 Type_functions.z * 'w1 Type_functions.z ]) t ‑> ('dim1'rank1t * ('dim2'rank2t * ('dim3'rank3t * ('dim4'rank4t * ('dim5'rank5t * ('dim6'rank6t * ('dim7'rank7t