# XDistributedPolynomialFunctions(VAR, F)¶

xdpolyf.spad line 5 [edit on github]

VAR: OrderedSet

F: Field

Using the Hankel matrix of a noncommutative polynomial one can determine the rank (Matrices de Hankel by Fliess). The extended Ho-Algorithmus (Fornasini+Marchesini) is used to create a minimal linear representation. Another approach is implemented in NonCommutativeRationalFunctions.

- display: Record(rows: List FreeMonoid VAR, cols: List FreeMonoid VAR, H: Matrix F) -> OutputForm
`display(sys)`

prints the Hankel matrix in an extended form with row-indices as column 0 and column-indices as row 0.

- findNonZeroEntry: (Matrix F, NonNegativeInteger, NonNegativeInteger) -> List NonNegativeInteger
`findNonZeroEntry(A,i,j)`

returns the indices [`k`

,`l`

] with i<=k<=m and j<=l<=n such that A(`k`

,`l`

) is non-zero and [0,0] otherwise. A is of size`m`

`x`

`n`

.

- hankelIndices: XDistributedPolynomial(VAR, F) -> List FreeMonoid VAR
`hankelIndices(p)`

returns a list of all left and right factors of the monomials of a given multivariate noncommutative polynomial. Factorization:`w`

= u*v

- hankelMatrix: (XDistributedPolynomial(VAR, F), VAR) -> Matrix F
`hankelMatrix(p,x)`

returns a matrix with the entries of the coefficients of`p`

at (`u`

,`v`

) where the monomials factorizes through`w`

= u*x*v. This matrix is indexed by all words of the Hankel matrix.

- hankelMatrix: XDistributedPolynomial(VAR, F) -> Matrix F
`hankelMatrix(p)`

returns the Hankel matrix`H`

(`p`

) of given polynomial`p`

, i.e. the entries at (`u`

,`v`

) are the coefficients of the monomials`w`

= u*v. Rows and columns are indexed by words.

- hankelSystem: XDistributedPolynomial(VAR, F) -> Record(rows: List FreeMonoid VAR, cols: List FreeMonoid VAR, H: Matrix F)
`hankelSystem(p)`

creates a Hankel-matrix for the polynomial`p`

with respect to the basis of all factors in`p`

. Row- and column-indices can be different.

- minimalMatrix: (Matrix F, NonNegativeInteger) -> Matrix F
`minimalMatrix(A,r)`

returns the minimal (upper-left) submatrix of A such that the rank corresponds to the given.

- minimalRepresentation: XDistributedPolynomial(VAR, F) -> Record(alpha: Matrix F, mu: List Matrix F, var: List VAR, beta: Matrix F)
`minimalRepresentation(p)`

returns a minimal representation using the generalized Ho algorithm [Fornasini, 1978]`p`

= sum_w alpha*mu(`w`

)*beta*w [Theorem 3.3, Salomaa–Soittola 1978]