Hypercube Mathematics  

The hypercube consists of squares of numbers, the amount of numbers along any monagonal is the same in all directions. This is called the order and denoted by 'm', while the dimension is denoted by 'n'. 

^{n}H_{m} : ^{n}[_{k}i]_{m} ε [0..m^{n}1] ;
k ε [0..n1] ; i ε [0..m1] also '==' means equality and '!=' means inequality (as is usual in ctype programming languages) (condition) ? if true : if false (as also in use with ctype programming languages) 

Hypercube modifiers  
Basic operations on a given hypercube defined elsewhere in this encyclopedia, mentioned here to have this article as a future reference to all these operations mathematical descriptions here are preliminary at best and need careful verification 

panrelocation notation: @[_{k}j] 
{^{n}[_{k}i]_{m}}@[_{k}j] : ^{n}[_{k}i]_{m} = [_{k}(i + j) % m]  
This moves [_{k}0] to [_{k}j] in modular space.  
correspondence with circular monagonal permutation: @[_{k}j] = _2^{k}[(_{k}j + i)%m ; i=0..m1] ; k=0..n1 

digit changing permutation notation: =R[perm(0..m1)] 
{^{n}[_{k}i]_{m}}=R[perm(0..m1)] : ^{n}[_{k}i]_{m} = _{k=0}∑^{n1} [{ ((R&2^{k})==2^{k}) ? perm[[_{k}i]\m^{k} % m] : [[_{k}i]\m^{k} % m] } m^{k}]  
The component bitwise mentioned in R changes digit according to the given permutation, the others are left as is. R = _{k digit changed component}∑ 2^{k} 

monagonal permutation notation: _R[perm(0..m1)] reflection ~R = _R[m1,..,0] 
{^{n}[_{k}i]_{m}}_R[perm(0..m1)] : ^{n}[_{k}i]_{m} = [ _{k} ((R&2^{k})==2^{k}) ? perm[i] : i ]  
The axes bitwise mentioned in R are permuted according to the given permutation, the others are left as is. Combining r axes in R is known as an ragonal permutation, the axes are permuted independently of each other R = _{k permuted axis}∑ 2^{k} if R = 2^{n}1 R is ommitted: _[perm(0..m1}] nagonal permutation 

monagonal reversal _R[m1,..,0] (aka reflection ~R) means to describe up to factor 2^{n} aspects.  
"panrelocation" is expressable using monagonal permutation. @[_{k}j] = _2^{k}[(_{k}j + i)%m ; i=0..m1] ; k=0..n1 

axial permutation notation: ^[perm(0..n1)] 
{^{n}[_{k}i]_{m}}^[perm(0..n1)] : ^{n}[_{k}i]_{m} = [ _{perm[k]}i ]  
The axes are permuted acording to the given permutation. 

means to describe up to factor n! aspects.  
component permutation notation: #[perm(0..n1)] 
{^{n}[_{k}i]_{m}}#[perm(0..n1)] : ^{n}[_{k}i]_{m} = _{k=0}∑^{n1} [[_{k}i]\m^{k} % m] m^{perm[k]}]  
The components are permuted acording to the given permutation.  
NOTE: new operation under investigation monagonal shift notation: >>R[perm?(0..m1)] notation: <<R[perm?(0..m1)] 
{^{n}[_{k}i]_{m}}>>R[perm?(0..m1)] :
^{n}[_{k}i]_{m} = [ ((R&2^{k})==2^{k}) ? _{((k+1)%n)}i + perm?[_{k}i] : _{k}i ] {^{n}[_{k}i]_{m}}<<R[perm?(0..m1)] : ^{n}[_{k}i]_{m} = [ ((R&2^{k})==2^{k}) ? _{((k1)%n)}i + perm?[_{k}i] : _{k}i ] 

The shift operator defined on axis k lifts the numbers according to the permutation The shifts are expressed on axis k to express how far the numbers need to be shifted parallel the (k+/1) axis (note: current experience for square (n=2) only, I suppose this works also for higher dimensions) perm? indicates that mostly a permutation is formulated, though not necesairy, as pe [0,..,0] is the neutral in this operation 

square "diagonalrow" (DR) and "diagonalcolumn" (DC) transformation for odd m: DR = >>1[0..m1]_2[2x%m ; x=0..m1]<<2[0,m1..1]. DC = <<2[0..m1]_1[2x%m ; x=0..m1]>>1[0,m1..1]. which relates to DR^{t} = DC_{_2[0,m1..1]} and DR^{2} = I^{t}_1[ 2 x %m ; x=0..m1] _2[(m2) x %m ; x=0..m1 ] DC^{2} = I^{t}_1[ (m2) x %m ; x=0..m1] _2[2 x %m ; x=0..m1 ] more important DC^{4} = DR^{4} = _3[ (m4) x % m ; x=0..m1 ] which tells the grouporder of DR to be: m1 for m = 5,13,17,29,37,53,61,73,89,97,... 4(m1) for m = 7,11,19,23,47,59,67,71,79,83,... 40 for m = 31 ; 20 for m = 41 and 56 for m = 43 estimated up till m = 97 an implementation for a cube showed me the DR definition above holds for the hypercubes also the possibilities of the shift operator are limitles DR<<1[0..m1] maps the cubes triagonal onto the xaxis whether this constitutes a usefull "triagonalrow" transform remains to be seen. 

Basic operations  
The defined below combines the ndimensional hypercube 'H' with 1dimensional number 'x' in a manner I haven't seen before further for this purpose the hypercubes are fully decorated, without decoration indicate the numbers at the position 

basic hypercube constant addition note: H + x == x + H 
^{n}H_{m} + x : ^{n}[_{k}i]_{m} = [_{k}i] + x x + ^{n}H_{m} : ^{n}[_{k}i]_{m} = x + [_{k}i] 

The constant x is added to every number in the hypercube since [_{k}i] + x == x + [_{k}i] so is H + x == x + H 

basic hypercube constant subtraction note: H  x != x  H 
^{n}H_{m}  x : ^{n}[_{k}i]_{m} = [_{k}i]  x x  ^{n}H_{m} : ^{n}[_{k}i]_{m} = x  [_{k}i] 

The constant x is subtracted by/from every number in the hypercube since [_{k}i]  x != x  [_{k}i] so is H  x != x  H 

basic hypercube constant multiplication note: H * x == x * H 
^{n}H_{m} * x : ^{n}[_{k}i]_{m} = [_{k}i] * x x * ^{n}H_{m} : ^{n}[_{k}i]_{m} = x * [_{k}i] 

The constant x is multiplying every number in the hypercube since [_{k}i] * x == x * [_{k}i] so is H * x == x * H 

basic hypercube constant division note: H / x != x / H 
^{n}H_{m} / x : ^{n}[_{k}i]_{m} = [_{k}i] / x x / ^{n}H_{m} : ^{n}[_{k}i]_{m} = x / [_{k}i] 

The constant x is devided by/dividing every number in the hypercube since [_{k}i] / x != x / [_{k}i] so is H / x != x / H note: though this operator is defined, its use has yet to be verified (no experience with this one yet) 

basic hypercube constant modulation note: H % x 
^{n}H_{m} % x : ^{n}[_{k}i]_{m} = [_{k}i] % x 

every number in the hypercube is 'modulated' by te constant  
Hypercube operations  
operators defined in this section are defined for m_{1} * m_{2} current description are preliminary, so check with me in case you plan some implementation 

dynamic numbering note: ^{n}[ { ^{n}N_{m} } ^{n}H_{m} ]_{m} = ^{n}H_{m} 
^{n}[ { ^{n}H1_{m} } ^{n}H2_{m} ]_{m} <= [ _{j}[_{k}i]_{2}\m^{j} % m ]_{1}  
due to limits in C# operator symbols this is actually implemented as ^{n}H1_{m} & ^{n}H2_{m} the odd one out here as result, LHS and RHS are of the same order 

dynamic induction 
^{n}[ ^{n}H1_{m}  ^{n}H2_{m} ]_{m} <= [ _{j}[{_{k}∑ _{k}i m^{k}}]_{2}\m^{j} % m ]_{1}  
formulation not clear yet, [{k}] means locate the value k in the hypercube and place there the value at [_{k}i]_{1} be aware this is prelimminary, having only an Excel square implementation at this moment the odd one out here as result, LHS and RHS are of the same order 

basic hypercube addition note: ^{n}H_{m1m2} + ^{n}H_{m2} != ^{n}H_{m1} + ^{n}H_{m1m2} 
^{n}H_{m1m2} + ^{n}H_{m2} :
^{n}[_{k}i]_{m1m2} =
^{n}[ [_{k}i]_{m1m2} +
[_{k}i % m_{2}]_{m2} ]_{m1m2} ^{n}H_{m1} + ^{n}H_{m1m2} : ^{n}[_{k}i]_{m1m2} = ^{n}[ [_{k}i \ m_{2}]_{m1} + [_{k}i]_{m1m2} ]_{m1m2} 

RHS hypercube is added to LHS subblocks of order m_{2} RHS hypercube is added to LHS enlarged subblocks of order m_{1} the not yet tested implementation returns the LHS if the RHS order doesn't divide the LHS order 

basic hypercube subtraction note: ^{n}H_{m1m2}  ^{n}H_{m2} != ^{n}H_{m1}  ^{n}H_{m1m2} 
^{n}H_{m1m2}  ^{n}H_{m2} :
^{n}[_{k}i]_{m1m2} =
^{n}[ [_{k}i]_{m1m2} 
[_{k}i % m_{2}]_{m2} ]_{m1m2} ^{n}H_{m1}  ^{n}H_{m1m2} : ^{n}[_{k}i]_{m1m2} = ^{n}[ [_{k}i \ m_{2}]_{m1}  [_{k}i]_{m1m2} ]_{m1m2} 

RHS hypercube is subtracted from LHS subblocks of order m_{2} RHS hypercube is subtracted from LHS enlarged subblocks of order m_{1} the not yet tested implementation returns the LHS if the RHS order doesn't divide the LHS order 

basic hypercube multiplication note: ^{n}H_{m1} * ^{n}H_{m2} != ^{n}H_{m2} * ^{n}H_{m1} 
^{n}H_{m1} * ^{n}H_{m2} : ^{n}[_{k}i]_{m1m2} = ^{n}[ [[_{k}i \ m_{2}]_{m1}m_{2}^{n}]_{m2} + [_{k}i % m_{2}]_{m2}]_{m1}_{m2}  
RHS hypercube is added to LHS multiplying an inplace constant [ m^{n} ] hypercube just as matrixmultiplication hypercubemultiplication is not cummutative 

basic hypercube division note: ^{n}H_{m1m2} / ^{n}H_{m2} != ^{n}H_{m1} / ^{n}H_{m1m2} 
^{n}H_{m1m2} / ^{n}H_{m2} :
^{n}H_{m1m2} =
( ^{n}H_{m1m2} / ^{n}H_{m2} ) *
^{n}[_{k}i]_{m2} ^{n}H_{m1} / ^{n}H_{m1m2} : ^{n}H_{m1m2} = ^{n}[_{k}i]_{m1} * ( ^{n}H_{m1} / ^{n}H_{m1m2} ) 

The reverse of hypercube multiplication, result is a hypercube of order m_{1/2} which statifies the multiplication when not successfull result of order m_{1}m_{2} holding the partial result for investigation. The implementation gives result when the lower order divides the higher order operand, result is to be checked by multiplication 

Hypercube normalisation and ordering  
putting hypercubes in a standard / normal position is helpfull in ordering lists of hypercubes  
hypercube normalisation 
^{n}H_{m1} ^{N} : [_{k}0] = min [_{j}0,_{l}(m1) #j+l=n] (using reflection); [_{j}0,_{l}1 #j=n1;#l=1] < [_{j}0,_{(l+1)}1 #j=n1;#l=1] (using axial permutation) 

the means of normalisation depends on the quality of the hypercube, reflection / axialpermutation are possible on all  
hypercube ordering 
^{n}H_{1} == ^{n}H_{2} :
^{n}[_{k}i]_{1} == ^{n}[_{k}i]_{2} ; i=0..m1 ; k=0..n1 ^{n}H_{1} != ^{n}H_{2} : ^{n}[_{k}i]_{1} != ^{n}[_{k}i]_{2} ; i=0..m1 ; k=0..n1 ^{n}H_{1} < ^{n}H_{2} : ^{n}[_{k}i]_{1} < ^{n}[_{k}i]_{2} ; i=0..m1 ; k=0..n1 ^{n}H_{1} > ^{n}H_{2} : ^{n}[_{k}i]_{1} > ^{n}[_{k}i]_{2} ; i=0..m1 ; k=0..n1 

this defines equality inequality and oordering as well, the first inequal element defines whether the hypercube is ordered before '<' or after '>' the other hypercube. 