vj      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ portable provisionaltodd.w.wegner@gmail.comNone&Represents the color of a cubie face. Sides of a cube. #Defines an axis for slab movement. $Defines direction of slab movement. "/Defines a rotation of an arbitrary cube slice. %DUsed by Template to map logical structure of cube to display views. ) Left and right 3D view of cube. ,4Used for simplistic processing of console commands. 37Matrices in hcube are constructed from column vectors. H The third vector is often chosen as the cross product of the first two 1 such that the determinate of the matrix is one. 5-Type used to specify state of physical cube. 7EString with each character representing a color of a physical cubie. 90Vector which orientation group matrices act on. 0 Also used for calculating new cubie positions. :GPoint is used in transformations of cubies in a two dimensional plane. ;OPhysical size of cube. For example a value of 3 refers to original 3x3x3 Rubik's cube. <Integer type used in hcube. ?YRepresents the color white. Modify if the physical cube uses a different coloring scheme F#Gives inverse of a cube operation. G Reverses direction of rotation. H/Associates a side of a solved cube to a color. IInverse of sideToColor K  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJ  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJ=><;:9876534,210/.-)+*%('&"$#!  ?@ABCDEFGHI ! "$#%('&)+*,210/.-3456789:;<=>?@ABCDEFGHINoneJKLMNOPJKLMNOPJKLMNOPJKLMNOPportable provisionaltodd.w.wegner@gmail.comNoneQ0Multiple a matrix on the left side of a vector. RMultiple two matrices. SMultiple a matrix by a scalar. TThe cofactor of a matrix. UTranspose of a matrix. VInverse of a matrix. WDisplay a matrix. ^A safe form of read. _1Applies a function on the domain of Side x Side. `List of the sides. aList of the vectors. bMultiple a vector by a scalar. cQConvert a function with two vector arguments to one accepting a list of vectors. dThe determinate of a matrix. eKCalculate the determinate of a matrix constructed by three column vectors. fMultiple a matrix by a scalar. g"The cross product of two vectors. hVector multipled by scalar -1. i@Vectors we are interested in only have one non zero component. j'Position of non-zero vector component. k The dot product of two vectors. QRSTUVWXYZ[\]^_`abcdefghijklmnQRSTUVWXYZ[\]^_`abcdefghijklmnQRSTUVWXYZ[\]^_`abcdefghijklmnQRSTUVWXYZ[\]^_`abcdefghijklmnportable provisionaltodd.w.wegner@gmail.comNoneo%Representation of Cubie orientation. q(Logical extension of Monoid to a group. s5List of names for elements of the orientation group. t*Two vector representation of orientation. u6Maps an element of the orientation group to a matrix. d Orient tranformation matrix is determined by specifing, (1,0,0) goes to v1 and (0,1,0) goes to v2. GMaps a matrix representation of an element of the orientation group to  | a two vector representation. v7Gives the name of an element of the orientation group. w>Constructs an element of the orientation group from the name. xInverse of sideToVec. yAssociates a side to a vector. zIGives the color of the side identified by the vector, in a solved state. {Inverse of colorToVec. |>Raw number is an intermediate step in associating two vectors N to an orientation. The orientation number 1 corresponds to an orientation of ''a'' and so on. }Inverse of rawToOrientNumber ~3Maps a function of orientation over orient domain. 8Converts the orientation to the raw orientation number. opqrstuvwxyz{|}~opqrstuvwxyz{|}~qropwuvtxy|}~{zsopqrstuvwxyz{|}~portable provisionaltodd.w.wegner@gmail.comNoneIndividual cube of Rubik's cube, known as a Cubie.  Vitrual Rubik's cube. Loads cube from a file. Saves cube to a file. +Performs a cube operation on virtual cube. q Conceptually this corresponds to multiplying the cube state by an appropriate element of the permutation group. * However a vector approach is used here. (Color of cube id on a face is returned. + This function is important for rendering. 'Returns the cubie at a given position. 'Creates a virtual cube in solved state YGenerates a tuple of cube ids corresponding to (corners, edges, centers, hidden cubies). %CubeSurf representing a solved cube. ?Converts from a surface view of cube to a cubie view of cube. ?Maps a face id defined with respect to a side, to the cube id. 6Converts a pseudo-vector representation to a cube id. 6Converts a cube id to a pseudo-vector representation. ( portable provisionaltodd.w.wegner@gmail.comNone=Map a cube operation to an element of the permutation group. portable provisionaltodd.w.wegner@gmail.comNone##portable provisionaltodd.w.wegner@gmail.comNone portable provisionaltodd.w.wegner@gmail.comNone?Constructs a virtual cube from a physical cube using CubeSurf. IConstructs the orientaion of a cubie from the color of two of its faces.  portable provisionaltodd.w.wegner@gmail.comNone /Show mapping of cube face to vector and color. ATwo vectors are required to uniquely determine cube orientation. C Orientation is defined as an operation from identity orientation. 2 Right face goes to face represented by vector 1. 1 Back gace goes to face represented by vector 2. TCube orientation can be viewed as a transformation of faces from identity position. *Matrix representation of oriention group. A Right handed coordinate system implies determinate must be one. 8Shows how colors on a cubie are mapped to orientation. )Displays inverses for orientation group. 5Displays multiplication table for orientation group. EDisplays how coloring of cubie is used to determine cube id of cube. ? Cube id represents position of cubie in solved configuration. (Displays mapping of face id to cube id. B Face ids are useful when specifing the state of a physical cube.      !"#$%&'()*+,-,./0123456789:;<<=;>?@ABCDDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuuvwxyz{|}~  hcube-0.1.0 HCube.Data HCube.Common HCube.UtilityHCube.OrientGroup HCube.LibHCube.PermutationHCube.Template HCube.Test HCube.Cons HCube.Theory ActualCubeupfrontdownbackleftrightColorNoColorGreenBlueRedOrangeYellowWhiteSideNoSideRightSLeftSBackSFrontSDownSUpSSlabNoSlabVSliceHSliceLayer DirectionNoDirTwiceCounter ClockwiseRotation RotateCubeViewAssociationOriIdeSurViewRightVLeftVCommand NoCommandQuitHelpUndo Operation ProjectionMatrixCubeSurfColorTagFormatVecPointSizeNumbTestNumbwhiteCyellowCorangeCredCblueCgreenCnoCinvOppinvDir sideToColor colorToSidegetLine2 twoPagesOnOnefourPagesOnOnepadRpadLprShowplShow|*||**| multMatrix cofactors transposeMinverseshowMdoM~>~|<* concatMapM listToMaybe maybeRead spanFacessidesvecsmultVecmapVecdetvecDet matrixMultcrossminusvcompvposdot gateMinusmodMinusmodNotOrientGroupinvorientChrDomaingetVectoeidcons vecToSide sideToVec colorToVec vecToColorrawToOrientNumberorientNumberToRaw spanDomain rawOrientNumCubeposoricidRubikncrnedgcnthidloopviewhisloadCubesaveCube doCubeOps getFaceColorgetCubeFromPosinitCube cubeTypes solvedSurf consCubeInfo cubeIdsOfFaceposToIdgetPosgenPermrenderrunTests realToVirtual consOrient displayColorsdisplayOrientVecMappingdisplayOrientTransformsdisplayOrientMatricesdisplayColorToOrientdisplayOrientIdisplayOrientPdisplayColorTagsdisplayFaceIds $fShowColorfrom orientMap signDiscrim $fGroupOrient$fMonoidOrienttwistgetCuberotatehumanDirgetTwistOrientorientmoveCubeapplygetFaceOrientation transformgetAxis nullActCubefromFilerenderInternal renderLeft3D renderRight3D project3DjoinprojectD viewToStringcbLayout cbInternallProj2x2rProj2x2lProj3x3rProj3x3lProj4x4rProj4x4lProj5x5rProj5x5dProj2x2dProj3x3dProj4x4dProj5x5lTemp2x2rTemp2x2lTemp3x3rTemp3x3lTemp4x4rTemp4x4lTemp5x5rTemp5x5dTemp2x2dTemp3x3dTemp4x4dTemp5x5pad idPropertyorientIdorientPropertyargsargs2 arbitraryNumb$fArbitraryTestNumbextractOrientInfocolorTagToCubeIdorientFromVecsorientFromSides vecsToTran vecToMxElem missingVecsideColorDomaindispLis