Table of Contents

The **LqRS** (Linear q-Recurrence Systems) package implements in Maple 2017 a family of algorithms to solve a full-rank q-recurrence system.

We consider an arbitrary order linear system **S** of q-recurrence equations with polynomial coefficients:

**An(x) y(x q^n) + … + A1(x) y(x q) + A0(x) y(x) = b(x)**,

where

**Ai(x)**are matrices whose entries are polynomial of**x**;**b(x)**is 0 or a vector whose entries are polynomial of**x**;**y(x)**is a column vector of unknown functions;**q**is a name.

The **LqRS** package is useful for solving the following types of problems:

- Transform
**S**into an embracing system with a non-singular leading or trailing matrix. These constructions are performed by using the EG-elimination algorithm (The procedure EG). - Find Laurent series solutions of
**S**(The procedure LaurentSolution). - Find polynomial solutions of
**S**(The procedure PolynomialSolution). - Find the universal denominator of the rational solutions of
**S**(The procedure UniversalDenominator). - Find rational solutions of
**S**(The procedure RationalSolution). - Construct a resolving sequence of
**S**, which is homogeneous (The procedure ResolvingSequence). - Find hypergeometric solutions of
**S**, which is homogeneous (The procedure HypergeometricSolution).

The details can be found in the preliminary version of the paper С.А. Абрамов, А.А. Рябенко, Д.Е. Хмельнов. Лорановы, рациональные и гипергеометрические решения линейных q-разностных систем произвольного порядка с полиномиальными коэффициентами.

The **LqRS** package works with systems which coefficients and right-hand sides are rational functions of one variable, for example **x**, over **ℚ(q)**. (It's simple to transform them to systems with polynomial coefficients and polynomial right-hand sides). **ℚ(q)** is an algebraic extension of the rational number field by **q**. The system **S** can be given in one of two alternative forms:

* the matrix-form:

- a q-recurrence equation for one unknown with matrix coefficients and a vector right-hand side,
- an unknown, for example
**y(x)**;

* the list-form:

- a list (or a set) of q-recurrence equations for several unknowns with rational functions coefficients and righ-hand sides,
- a list of unknowns, for example
**[y1(x),…, ym(x)]**.

The procedure **EG** has the following arguments:

- the word
**'lead'**or the word**'trail'**, - a system
**S**(see System representations).

If the first argument is **'lead'**, the procedure **EG** constructs an l-embracing system, whose the leading matrix coefficient being invertible, and with the set of solutions containing all the solutions of **S**. If the first argument is **'trail'**, it constructs a t-embracing system, whose the trail matrix coefficient being invertible, and with the set of solutions containing all the solutions of **S**.

The output is a pair:

- the system in the same form as the given
**S**, **true**if**S**has a full rank, and**false**otherwise.

The procedure **LaurentSolution** has the following arguments:

- a system
**S**(see System representations), - (optional argument) an order
**d**of the initial terms of the solution series to calculate.

The procedure **LaurentSolution** constructs the initial terms of the Laurent series solutions of **S**. The order of the initial terms may be greater than **d** if it is needed to reveal the full solution space dimension.

The output is a vector column which involves arbitrary constants of the form **_c[1]**, **_c[2]**, etc.

The procedure **PolynomialSolution** has the following arguments:

- a system
**S**(see System representations).

The procedure **PolynomialSolution** constructs the polynomial solutions of **S**.
The output is a vector column which involves arbitrary constants of the form **_c[1]**, **_c[2]**, etc.

The procedure **UniversalDenominator** has the following arguments:

- a system
**S**(see System representations).

The procedure **UniversalDenominator** returns a universal denominator of **S**.

The procedure **RationalSolution** has the following arguments:

- a system
**S**(see System representations).

The procedure **RationalSolution** constructs the rational solutions of **S**.
The output is a vector column which involves arbitrary constants of the form **_c[1]**, **_c[2]**, etc.

The procedure **ResolvingSequence** has the following arguments:

- a homogeneous system
**S**(see System representations), - (optional argument) 'select_indicator' = i where i is a number of an unknown function which have to be first in a constructed resolving sequence.

The procedure **ResolvingSequence** constructs a resolving sequence of **S**. See details in ResolvingSequence procedure. The output is a list of q-recurrence equations.

The procedure **HypergeometricSolution** has the following arguments:

- a system
**S**(see System representations), - a name
**k**to construct hypergeometric solutions.

The procedure **HypergeometricSolution** constructs the hypergeometric solutions of **S**. They are a finite linear combination of hypergeometric terms. A hypergeometric term **h(x)** is that the ratio of **h(q x)** and **h(x)** is a rational function in **x**.

The output is a vector column which involves arbitrary constants of the form **_c[1]**, **_c[2]**, etc.

lqrs.zip - the archive with two files lqrs.ind and lqrs.lib which are a Maple library. Put these files to some directory, for example, to ”/usr/userlib”. Assign libname := ”/usr/userlib”, libname in the Maple session. Then use the **LqRS** package.

paper_examples_lqrs.mw - the Maple session file with examples from the preliminary version of the paper.

paper_examples_lqrs.pdf - the pdf copy of that Maple session.