# CartanKuranishi(JB, D)¶

CartanKuranishi is a package for the completion of a given differential equation to an involutive equation. Procedures for Cartan characters and Hilbert polynomial are also provided. Based on the Cartan-Kuranishi theorem as it is used in formal theory.

alpha: (NonNegativeInteger, List NonNegativeInteger) -> List NonNegativeInteger

`alpha(q, beta)` computes the Cartan characters for a differential equation of order `q` and with characters `beta`.

alphaHilbert: SparseUnivariatePolynomial Fraction Integer -> List NonNegativeInteger

`alphaHilbert(hp)` computes the Cartan characters for the Hilbert polynomial `hp`.

arbFunctions: (NonNegativeInteger, Integer, List NonNegativeInteger) -> List Integer

`arbFunctions(q, j, cc)` uses the Cartan characters `cc` to compute the number of arbitrary functions of differentiation order `j` in the general solution of a differential equation of order `q`.

bound: (NonNegativeInteger, NonNegativeInteger, NonNegativeInteger) -> NonNegativeInteger

`bound(n, m, q)` computes an upper bound for the number of prolongations needed to make the symbol of an equation of order `q` with `n` independent and `m` dependent variables involutive.

complete2: JetDifferentialEquation(JB, D) -> Record(IDe: JetDifferentialEquation(JB, D), ISys: List D, Order: NonNegativeInteger, NumProj: NonNegativeInteger, Dim: NonNegativeInteger, CarChar: List NonNegativeInteger)

`complete2(de)` is like complete but returns the involutive equation `IDe`, a basis `ISys` for the involutive system without prolongations, its order `Order`, the number `NumProj` of needed projections and the Cartan characters `CarChar`.

complete: JetDifferentialEquation(JB, D) -> Void

`complete(de)` completes `de` to an involutive equation. No result is returned; the display depends of the setting of the output flags with setOutput.

gauge: (NonNegativeInteger, Integer, List NonNegativeInteger) -> List Integer

`gauge(q, j, gamma)` computes the gauge corrections to the number of arbitrary functions of differentiation order `j` for a system of order `q` with `gamma` gauge functions.

gaugeHilbert: (NonNegativeInteger, List NonNegativeInteger) -> SparseUnivariatePolynomial Fraction Integer

`gaugeHilbert(q, gamma)` computes the gauge correction to the Hilbert polynomial for a system of order `q` with `gamma` gauge functions.

hilbert: List NonNegativeInteger -> SparseUnivariatePolynomial Fraction Integer

`hilbert(cc)` computes the Hilbert polynomial to the Cartan characters `cc`.

setOutMode: NonNegativeInteger -> NonNegativeInteger

`setOutput(i)` controls amount of generated output during the completion algorithm: `i = 0` –> no display, `i = 1` –> result is displayed, `i = 2` –> Cartan characters are displayed, `i = 3` –> integrability conditions are traced, `i = 4` –> intermediate dimensions are traced, `i = 5` –> all intermediate systems are traced, `i = 6` –> all intermediate systems and symbols are traced, if `i > 10` then TeX output is produced. Default is 0. The old value is returned.

setRedMode: NonNegativeInteger -> NonNegativeInteger

`setRedMode(i)` sets the flag for the reduction mode. Returns old value. Current values are: `i = 0` –> No reduction of integrability conditions etc. `i = 1` –> Autoreduction of complete system and reduction of all integrability conditions. Default is 0.

setSimpMode: NonNegativeInteger -> NonNegativeInteger

`setSimpMode(i)` sets the simplification mode used in `JetDifferentialEquation`. Returns old value.

stirling: (NonNegativeInteger, NonNegativeInteger, NonNegativeInteger) -> NonNegativeInteger

`stirling(i, k, q)` computes the corresponding modified Stirling number.