)      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  Safe-Inferred=Transform the position indicated by an index array inside an D array of given dimensions into the position inside a linear array, B starting at 0. For example, in an array of 3 rows and 4 columns,  the position [2,2]/ becomes 5. The indices in the dimension array > must be >= 1, the index array must have the same size of the E dimension array, and each index in the index array must be >= 1 and  <7= then the corresponding index in the dimension array.  Inverse of : ( ds) . ( ds)  == , ( ds) . ( ds) == . Dimension array  Index array Dimension array &Linearized position (starting from 0)   Safe-Inferred Safe-Inferred Slices the   t by dropping i at the beginning of its    and j! at the end. The result has type  i j t.  Extracts the  of t! for the given initial and final  indices i and j. A   is a map from an   type (which should be a   MultiIndex) to an  ent type. dims returns the dimensions of the   . In any  instance of   dims should be independent of its  argument and work on .  | Returns the ent of t corresponding to   t.  Generates a  " according to the given function.  Generates a   consisting of the same ent  repeated.  f t applies f to every ent of t. In  f t, the ent corresponding to the    i is the  ent that t assignes to the    f i.           Safe-InferredProduct of types. The product of an element of a and an element of b is an  element in the type a  b. Sum of types. The sum of an element of a and an element of b is an  element in the type a  b.  Safe-Inferred,The cardinality of a type is defined by its   type   a. 4Cardinal number as a type. The associated data type ! a - provides the next cardinal type. The method " E provides a numeric representation of the cardinal number; it should , be independent on the argument and work on . /#The numeric cardinality of a type. / is independent on its  argument. " !"#$%&'()*+,-./ !"#$%&'()*+,-./. !"-,+*)('&%$#/ !"#$%&'()*+,-./ Safe-Inferred0AClass of ordered sets with n elements. The methods in this class A provide a convenient way to convert to and from a numeric type. <If n is a set with n elements, < n is a set with n+1 elements. = The last n elements. >The first element of the type. ?A set with one element. %0123456789:;<=>?@0123456789:;<=>?@?@<>=;:9876543012 0123456789:;<>=?@ Safe-Inferred AExtend the list l to l'# by adding the necessary extension  B l l'. DJoin together `s l and l' where the last n types  of l coincide with the first n types of l'. The result has a  the common n types eliminated. G Reverse the ` l , and get H l. JReverse l and append it in front of l'. MThis is does for P what    does for  ordinary lists. PThis is does for P what  does for  ordinary lists. SA class for appending two `s. The result of appending  l and l' has type l T l'. V Extracts the n-th component of the list l XThe second argument of X should always be   :: n. Y9Applies the given function to one component of the list. `Every ` has a a. The a is actually a  type, and should be a   (see  Data.Cardinal). %ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ab"ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ab"`abZ[\]^_VWXYSTUPQRMNOJKLGHIDEFABC ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ab Safe-Inferrede1Class for types having multiple dimensions, like ges  or Tensors. f=Returns the dimensions list. It should always be independent  on its argument and work on . j?This is the constructor for heterogeneous lists, equivalent to  : for standard lists. l is used to end the lists, just  like '[]'. +cdefghijklmnE0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmn lmjkghinefcd%cdefghijklmn Safe-InferredpIndentity matrix. q0Inverts, if the matrix is invertible, otherwise . rTrace of the matrix. s:Computes the coefficient of the polynomial p(z)=det(A+zI)  using the method of closed ordered walks (clow) illustrated  in the paper of G. Rote   Hhttp://page.mi.fu-berlin.de/rote/Papers/pdf/Division-free+algorithms.pdf. A The number of operations for the whole process is O(n^4), where A n is the number of rows of the matrix. The first coefficient is ? the known term and equals the determinant, while the last one 9 is the coefficient of z^(n-1) and equals the trace. The 8 coefficient of z^n equals 1 and is not included in the 8 resulting list. The k-th coefficient is the sum of all " principal minors of order n-k+1. t7Minimal polynomial. The algorithm follows the paper of  S. Bialas and M. Bialas   $http://bulletin.pan.pl/(56-4)391.pdf. The number of < operations is O(n^4), where n is the number of rows of the  matrix. uDeterminant of the matrix. v#Evaluate a polynomial on a matrix. wSolves linear systems AX=B; t1 is the type of A, t2 is  the type of B, and x t1 t2 is the type of the solution  X. y6Performs row operations on the augmented matrix [t1,t2] until ; t1 is in reduced row echelon form, then slits the result. zReturns  if the system AX=B has no solution, A otherwise returns a solution for the system and a list of basis  vectors for the kernel of A. {A matrix with i rows and j columns. |Switch two rows. }Multiply a row by a number. ~~ i1 a i2 t adds a times the row i2 to the  row i1 ot t. Switch two columns. Multiply a column by a number.  j1 a j2 t adds a times the column j2 to  the column j1 ot t. (Reduced row echelon form of the matrix. AA general form of product between two tensors, in which the last  n dimensions of t1 are contracted with the first n dimensions  of t2,. The resulting tensor belongs to the space  n  t1 t2. The operators  and " below are particular cases  where n# is equal to 1 and 0 respectively. +It is the product of the last dimension of t1 with the first  dimension of t2. In the case where t1 and t2 are matrices this , coincide with the ordinary matrix product. Tensor product of t1 and t2. !opqrstuvwxyz{|}~!opqrstuvwxyz{|}~!{|}~wxyzopqrstuv opqrstuvwxyz{|}~ Safe-Inferred_ 0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnNone )Makes one more step in the clow sequence  Checks if i-th row of x is zero CReturns the position of the first non-zero element in the n-th row 7 of a matrix, or zero if the row is made of all zeroes 9Returns the position of the first element satisfying the 2 predicate, in the row i, starting from column j. 9Returns the position of the first element satisfying the 2 predicate, in the column j, starting from row i. 'rowEchelonOnAugmented a b'" runs elementary row operation on  the augmented matrix '[a|b]' until a is in reduced row echelon * form. The result is ((c,d),n), where [c|d] is the resulting matrix,  and n is the rank of a. ;Find the firt non-zero element in the part of the column j E starting from the element (i,j) going down, and switch the row with  it. AFind the firt non-zero element in the part of the row i starting D from the element (i,j) going right, and switch the column with it. >By adding multiples of rows to each other, makes zero all the  elements above (i,j). >By adding multiples of rows to each other, makes zero all the  elements below (i,j). ABy adding multiples of columns to each other, makes zero all the  elements to the left of (i,j).  ABy adding multiples of columns to each other, makes zero all the ! elements to the right of (i,j). I     !Number of rows (or columns) $Vector representation of the matrix " Input matrix Matrix of length 2 clows  Input matrix Input clow nodes of length l  Output clow nodes of length l+1 # Input matrix Input clow nodes of length l $ %&'()*+,-./0123456789:;<7     !"#$ %&'()*F     !"#$ %&'()*+,-./0123456789:;< Noned 0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmn = !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJ00KLLMNOPQRSTUVWXYZ [\]^_`abcdefghijklmnopqrstuuvvwxyz{|}~ ]      !"#$%&'()*+,-./0123456789:;<= tensor-0.3.0 Data.TensorData.TypeAlgebra Data.Cardinal Data.Ordinal Data.TypeListData.TypeList.MultiIndexData.Tensor.LinearAlgebraData.Tensor.PureData.Tensor.Vector!Data.TypeList.MultiIndex.InternalData.Tensor.ExamplesPreludedropData.Tensor.Vector.Internal SliceableSliceslice TransposeTransposeSpace transpose DirectSumSumSpace directSumsplitFromListfromListTensorIndexElem!generate generateM replicate replicateMelemMapindexMapProd:*:<*>Sum:+:<+> GCardinalityGCard CardinalityCardCardinalSucc fromCardinalC10C9C8C7C6C5C4C3C2C1C0ZerocardOrdinal fromOrdinal toOrdinalTenNineEightSevenSixFiveFourThreeTwoFirstOneExtendExtextendJoinListJoinjoin ReverseListReversereverse TailRevListTailRevrevDropListDropTakeListTaketake AppendList:++:<++> Component:!!:!! partialMapHeadTailHeadTailheadtail.|.TypeListLengthlengthMultiIndexConcatConcat Dimensions dimensions MultiIndexfromMultiIndex toMultiIndex:|:NilmultiIndex2Linear SquareMatrixunitinversetrcharPolyminPolydetpolyEval LinearSystemSolSpacetriangularSolveparametricSolveMatrix rowSwitchrowMultrowAdd colSwitchcolMultcolAddrowEchelonForm DotProductdot:⊗:MatrixProductSpaceProduct ProdSpaceprod VectorSpacezero*..+..*.⊗Vector RowVector ColumnVectorvector2ColumnVectorcolumnVector2Vectorvector2RowVectorrowVector2Vector fromVector linearize unlinearizebaseGHC.BaseidGHC.Err undefined$fGCardinality:*:$fGCardinality:+:$fGCardinalityM1$fGCardinalityK1$fGCardinalityU1$fGCardinalityV1 $fProdaSucc $fProdaZero $fSumaSucc $fSumaZero $fShowSucc $fShowZero$fCardinalSucc$fCardinalZero $fProdmSucc $fProdmOne $fSummSucc $fSummOne$fCardinalitySucc$fCardinalityOne $fMonadSucc $fFunctorSucc $fEnumSucc $fRandomSucc $fOrdinalSucc $fOrdSucc $fBoundedSucc $fRandomOne $fShowOne $fEnumOne $fOrdinalOne$fOrdOne $fBoundedOneGHC.List$fJoinListnll'$fComponentlSucc$fComponentlZero$fExtend:|::|: $fExtendNill' $fRandom:|: $fBounded:|: $fRandomNil $fBoundedNil$fMultiIndexConcatSucc:|::|:$fMultiIndexConcatZero:|::|:$fDimensions:|:$fDimensionsNil $fShow:|:$fMultiIndex:|: $fShowNil$fMultiIndexNil$fReverseList:|:$fReverseListNil$fTailRevList:|:l'$fTailRevListNill$fDropListSucc:|:$fDropListZero:|:$fDropListZeroNil$fTakeListSucc:|:$fTakeListZero:|:$fTakeListZeroNil$fAppendList:|:l'$fAppendListNill $fHeadTail:|: $fTypeList:|: $fTypeListNil$fCardinality:|:$fCardinalityNil Data.MaybeNothing$fTensorTensor $fShowTensor$fApplicativeTensor$fFunctorTensor$fFromListTensor$fDimensionsTensor $fEqTensor$fTensorTensor0 $fShowTensor0$fApplicativeTensor0$fFunctorTensor0$fFromListTensor0$fDimensionsTensor0 $fEqTensor0$fTensorTensor1 $fShowTensor1$fApplicativeTensor1$fFunctorTensor1$fFromListTensor1$fDimensionsTensor1:!:T1T0clowStep isZeroRowfirstNonZeroInRow findInRow findInColrowEchelonOnAugmentedgaussSwitchToNonZeroRowgaussSwitchToNonZeroColgaussClearColUpgaussClearColDowngaussClearRowLeftgaussClearRowRightformcontent randomListRrandomsWithLengthmUndunsafeTensorGetunsafeTensorGenunsafeVectorGetunsafeVectorGenunsafeMatrixGetunsafeMatrixGenunsafeMatrixGetRowunsafeMatrixRowSwitchunsafeMatrixColSwitchunsafeMatrixRowMultunsafeMatrixColMultunsafeMatrixRowDivunsafeMatrixColDivunsafeMatrixRowAddunsafeMatrixColAddunsafeMatrixRowSubunsafeMatrixColSub traceOnVecinitClowendClowpartialRowEchelonaddFreeVarsKer addEntryKeraddFreeVarsSol addFreeVarsbigMatr gaussBigMatr$fLinearSystemTensorTensor$fLinearSystemTensorTensor0$fSquareMatrixTensor$fMatrixijTensor$fDotProductTensor$fProductnTensorTensor$fVectorSpaceTensor$fSliceableijTensor$fTransposeTensor$fDirectSumnTensorTensor$fBoundedTensor$fRandomTensor