The Magic Encyclopedia ™

The HyperCube Language
(by Aale de Winkel)

NOTE the ascii format described below is superseeded by the xml-based format XmlHypercubes
Text maintained for reference purposes only, please devert to the XmlHypercubes format which comes with an appropriate reader.



NOTE: The described "language" started out as a language for computer programs, however currently especially the modifiers gets more and more in use as a means of describing actual hypercubes or hypercube operation. Some of them used as a sub- others as super-script, when a permutation is listed as a superscript it intents to depict a transpostion, subscripted permutations are main n-agonal permutations as it is te meaning of normal positioned ^[...] and _[...]. However more importantly is the position, since intercanging them depicts seperate hypercubes

NOTE: Most of the described is already implemented in my program "MagicFigures", some of it isn't implemented there yet. The described however will be the reference for future programs, which will decide also the way to include colorised / augmented patterns.

Bridging the gap between man and machine The Hypercube Language this author designed as an ascii file format, to be used by his programs, wherein most hypercube productions can be put, the thus defined format can be used in interpreters such as written onto the third tab of my program MagicFigures downloadable from the Adworks download directory future versions of which also will hold interpreters with more features. Programmers are invited to write interpreters also. In case you add a feature check it in with me so I can augment this description accordingly
NOTICE: also that this is currently a format only used by my programs, unless I get notified of it's use by others, given implementation onto future programs descriptions given below might change. So programmers in case you start using this format notify me thus, just to keep upon using the same language format.
Currently in use extensions are: '.hypercube' and '.hyperlatin' the first to depict hypercubes and the second for include purposes depicting latin hypercubes, I suggest when thins are added onto the language other '.hyper<object>' extensions be added where <object> stands for the object (even though things might not go onto higher dimensions) pe. '.hyperstar' extension for simular descriptions on stars.

The Hypercube Language
The keywords below define the voriuos sections of the files, each section is expected
to end with an END keyword line, both these lines are supposed to be a whole line
In principle any number of lines can be put in between (program limits this however)
keyword description
AUTHOR section to identify the files author
date and versioning of the hypercube file can be written down here
as are email addressses to enable discussions with the files author
DEFINING this sections defines the entire figure
currently only figure defined is HYPERCUBE(dim,order)
written on the line just after the keyword with
dim and order numbers defining the figures dimension and order
ALIAS in this section used shorthand can be combined
with their definition in another file (for now)
name #INCLUDE definition file
name (production) not yet implemented but possible
SUBJECT in this section the files author enters special remarks
about the defined hypercabe, these remarks will be output
PRESCRIPTIONS after this keyword the program expect a list of named productions
name production
the name identifies the production and is selectable by tat name
(intended for use in include files for one line production)
PRESCRIPTION [name] this keyword does the same as the previous keyword but is intended
for more elaborate productions. The optional name calling allows for
combining simular hypercubes within one file, the inface generate a
dropdownlist to enabel selection by the user
DESCRIPTION [name] This keyword allows for an explicit listing of an hypercube
in numeric format.
REPRESENTATION [name] This keyword allows for representing a hypercube by letters
The optional name calling allows for combining simular hypercubes
within one file, the interface generate a dropdownlist to enable
selection by the user
LAYER [list] Both descriptions and representation can consist of
long list of lines with numbers, the program expects
these to be in sequence, the layer keyword can make
the file readable for humans. list consists of dim-2
',' seperated number, denoting the squares layer.
ASSOCIATIONS This keyword combines the reprentation with user selectable association
repr --> assoc
where repr is a ',' seperated list of latters and assoc a list of
corresponding ',' seperated numbers. The '-->' is part of the language
QUALIFICATION This keyword allows to state the qualification of the given hypercube
in a notation as is depicted in the qualifications article.
(currently not yet implemented)
not yet implemented but already reserved are the keyword CARPET an COLORISATION
which allows to define grogono's carpets and colorisation, these keywords will
become active once I refind the code for this production method.
Although some sections can do without, currently it is good practice to end all
sections with an "END KEYWORD" line
PATTERN along simular lines as prescritions named patterns might be defined which the
program needs to test in one liners (currently not yet implemented)
PATTERN [name] defining a pattern to test in full layout using characters '0' and '1',
where '1' defines the pattern element (currently not yet implemented)


Hypercube Productions
basic Productions (by name)
name dimension orders remark
Skew_Matrix 2 odd these methods are solidly defined but limited
to squares of mentioned order type
Stracheys_Method 2 doubly odd
Pan_Transform all doubly even gives (Hollerenshaws "Most_Perfect") hypercubes
BiPan_Transform all doubly even currrent implemetation seem to give
bipanmagic figures when dimension is odd(??)
Parametrized Productions
name dimension orders notation / remark
KnightJump all odd <[pos],{v1},..,{vn}>
pos and v's sequence of n ',' seperated numbers
denoting position of '1' and needed vectors
digit equations
latin presciption
1-digital equations
all all <{lp1},..,{lpn}>
lp's sequence of n+1 ',' seperated numbers
denoting component latin hypercubes
change sequence of n seperated numbers
denoting the used digit cange applied
lpi multipled by mn-i i=1..n
p-digital equations all powered
(mp)
<{{lp1},..,{lpm}}1,..,{{lp1},..,{lpm}}p>
simular to above, lp sequences denoting order n hypercubes
modifiers
The modifiers are used to depict alterations of the object produced by a production
Digit changing is quite commonly applied onto a latin hypercube
The other modifiers can be used to depict a (grand-)parential hypercube exactly
or one of it's family members (see Isomorphisms article)
component
permutation
all all #[permutation]
Permutation depicts a permutation of components
The components needs be defined prior to this use such
the permutation can be defined precisely
digit changing all all =[change]
change some permutation of the 'digit' 0 .. n-1
which are substituted for the poduced digits
mostly applied to all component latin hypercubes
procuced by LP's (esp. for doubly even order)
transposition all all ^[permutation]
permutation a sequence n ',' seperated digits
denoting the permutation of the axes
main n-agonal
permutation
all all _[permutation]
permutation a sequence m ',' seperated numbers
denoting the permutation of the main n-agonal numbers
reflection all all ~[reflection]
reflection a number in the range 0 .. 2n-1
each bit denotes a reflection
pan relocaton all all @[location]
location a sequence of n ',' seperated numbers
denoting the position to panrelocate the number at
position '0' of the described hypercube
Compound Parametrized Productions
The productions stated below are curently only defined and must be viewed as preliminairy,
subject to change as the language gets implemented in furture programs
name dimension orders notation / remark
multiplication all multiplicative
m1*m2
{prod-1} * {prod-2}
This (currently only defined) production rule is probably trivial, might however need
to have named productions within the same file or need the ALIAS section stated
doubling method all even {0-prod}<{{prod}0..{prod}k}>[=[change]0,..,=[change]k]
This (currently only defined) production rule is probably only one of the possibilities
the Hendricks/Trenkler doubling method can take, the digit changes are applied onto the
hyperquadrant copies of the 0-hyperagonal latin hypercube obtained by it;s production
here depicted as {0-prod}. Onto each hyperquadrant the above suggest the use if complete
different (doubled order) hypercubes at each hyperquadrant depicted by its own production.

The mentioned modifiers can (in principle) be attached to each notational part, with these it is possible to bring a given hypercube into "normalized position".
The "component permutation" I listed as a modifier because of its syntax, but might be seen as a production tool also.
The modifiers are applied sequentially, interchanging the modifiers therefore depict different hypercubes

Of course things can be combined, currently in use are 'odel' and 'otel' named latin hypercubes which are defined in seperate files, to automate and generalize this some inclusion need to be implemented for files wherein used names are defined
#include "filename"
simular as is used in high level programming languages.
besides "hypercube productions" an include file fight also hold other kinds of component data, such as bimagic permutations.

Besides the above it's very well possible to denote a given (lp/knightjump) matrix by a single number (provisions for handling these might also be implemented, (currently I only use this in actual iterations))