KKS2025, Conjecture 23, eq. (10.8)

<<RISC`HolonomicFunctions`;
<<RISC`Guess`;

HolonomicFunctions Package version 1.7.3 (21-Mar-2017)
written by Christoph Koutschan
Copyright Research Institute for Symbolic Computation (RISC),
Johannes Kepler University, Linz, Austria

Package GeneratingFunctions version 0.9 written by Christian Mallinger
Copyright Research Institute for Symbolic Computation (RISC),
Johannes Kepler University, Linz, Austria

Guess Package version 0.52
written by Manuel Kauers
Copyright Research Institute for Symbolic Computation (RISC),
Johannes Kepler University, Linz, Austria

SetDirectory[NotebookDirectory[]];

The following initializing codes are taken from Christoph Koutschan, Christian Krattenthaler and Michael Schlosser’s implementation for their 2025 JSC paper on determinant evaluations.
http://www.koutschan.de/data/det3/

Reference
C. Koutschan, C. Krattenthaler, and M. J. Schlosser, Determinant evaluations inspired by Di Francesco’s determinant for twenty-vertex configurations, J. Symbolic Comput. 127 (2025), Paper No. 102352, 34 pp.
https://doi.org/10.1016/j.jsc.2024.102352

(* Display all relevant information about an annihilator ideal. *)
AnnInfo[ann_]:=With[{vars=First/@OreAlgebra[ann][[1]]},Print[
"ByteCount: ",ByteCount[ann],
"\nSupport: ",Support[ann],
"\ndegree "<>ToString[vars]<>": ",Exponent[#,vars]&/@ann,
"\nStandard Monomials: ",UnderTheStaircase[ann],
"\nHolonomic Rank: ",Length[UnderTheStaircase[ann]]
]];

(* A straight-forward implementation of reduction modulo a left ideal in the shift algebra. *)
(* Reason: the built-in procedure "OreReduce" in the HolonomicFunctions package sometimes
causes Mathematica to crash. *)
SortLex[m1_,m2_]:=With[{f1=First[m1],f2=First[m2]},If[f1=!=f2||Length[m1]===1,f1>f2,SortLex[Rest[m1],Rest[m2]]]];
SortDLex[m1_,m2_]:=With[{w1=Plus@@m1,w2=Plus@@m2},If[w1===w2,SortLex[m1,m2],w1>w2]];
Add[p1_List,p2_List]:=
Module[{p={},c,i1=1,i2=1,l1=Length[p1],l2=Length[p2],e1,e2},
While[i1≤l1&&i2≤l2,
{e1,e2}={p1[[i1,2]],p2[[i2,2]]};
Which[
e1===e2,If[(c=p1[[i1,1]]+p2[[i2,1]])=!=0,AppendTo[p,{c,e1}]];i1++;i2++;
,
SortDLex[e1,e2],AppendTo[p,p1[[i1]]];i1++;
,
SortDLex[e2,e1],AppendTo[p,p2[[i2]]];i2++;
];
];
If[i1≤l1,p=Join[p,Take[p1,{i1,l1}]]];
If[i2≤l2,p=Join[p,Take[p2,{i2,l2}]]];
Return[p];
];
ScalarMult[s_,p_List]:={Expand[Together[s*#1]],#2}&@@@p;
OreReduce1[p_List,g_List]:=OreReduce1[#,g]&/@p;
OreReduce1[p1_OrePolynomial,g1:{(_OrePolynomial)..}]:=
Module[{p=p1,g=g1,v,e,f,f1,r={},k,gk,gcd},
v=First/@OreAlgebra[p][[1]];
{p,g}={First[p],First/@g};
f=PolynomialLCM@@(Denominator[First[#]]&/@p);
p=ScalarMult[f,p];
While[p=!={},
k=1;
While[Min[e=(p[[1,2]]-g[[k,1,2]])]<0,k++];
If[k>Length[g],
AppendTo[r,p[[1]]];
p=Rest[p];
,
gk={Expand[#1/.Thread[v->(v+e)]],#2+e}&@@@g[[k]];
gcd=PolynomialGCD[p[[1,1]],gk[[1,1]]];
f*=(f1=Together[gk[[1,1]]/gcd]);
gk=ScalarMult[Together[-p[[1,1]]/gcd],Rest[gk]];
p=Add[ScalarMult[f1,Rest[p]],gk];
];
];
Return[OrePolynomial[{Together[#1/f],#2}&@@@r,p1[[2]],p1[[3]]]];
];

ClearAll[prod];

prodsimp={prod[a_,{i_,b_}]->prod[a,{i,1,b}],
prod[a_,{i_,b0_,b1_}]/prod[a_,{i_,b0_,b2_}]/;IntegerQ[Expand[b1-b2]]:>If[Expand[b1-b2]≥0,Product[a,{i,b2+1,b1}],1/Product[a,{i,b1+1,b2}]],
prod[a1_,b_]^e1_.*prod[a2_,b_]^e2_.:>prod[FunctionExpand[a1^e1*a2^e2],b]};

Initialization

Set up the determinant (of matrix (Subscript[a, i,j])) in question.

ClearAll[mata,mata1,mata2,matc,datac,prodform];

ClearAll[a,b,c,d,e,f,i,j,n];

Print["We are going to evaluate the determinant:\n",TraditionalForm[HoldForm@@{Subscript[det,0≤i,j<n][e^(i+b)Binomial[f *j+i+c,f*j+a]+Binomial[f*j-i+d,f*j+a]]}],"\n"];

{a,b,c,d}={3,0,3,3};
{e,f}={2,4};

mata1[i_,j_]:=e^(i+b)Binomial[f *j+i+c,f*j+a];
mata2[i_,j_]:=Binomial[f*j-i+d,f*j+a];
mata[i_,j_]:=mata1[i,j]+mata2[i,j];
mata[i_Integer,j_Integer]:=FunctionExpand[mata1[i,j]+mata2[i,j]];

prodform[0]=1;
SetDelayed@@(Hold[prodform[n_],If[IntegerQ[n],FunctionExpand[C/.prod->Product],C]]/.{C->2*prod[((Gamma[6i-1]Gamma[((i+3)/4)])/(Gamma[5i]Gamma[((5i-1)/4)])),{i,1,n}]});

Print[">>> With the following choice of parameters:\n","{a, b, c, d} = ",{a,b,c,d},";\n","{l, m} = ",{e,f},";\n\nWe are going to prove:\n",TraditionalForm[HoldForm@@{Subscript[det,0≤i,j<n][e^(i+b)Binomial[f *j+i+c,f*j+a]+Binomial[f*j-i+d,f*j+a]]==prodform[n]/.prod->Product}],"\n"];

Print["The matrix of ",Subscript["a","i,j"]," begins with:\n",TableForm[Table[mata[i,j],{i,0,5},{j,0,5}]],"\n"];

Print["The determinants begin with:\n",Table[Det[Table[mata[i,j],{i,0,n-1},{j,0,n-1}]],{n,1,6}],"\n"];

Print["The product formula begins with:\n",Table[prodform[n],{n,1,6}]];

Construct the minor-related quantity (Subscript[c, n,j]).

We will generate the data of (Subscript[c, n,j]) in advance. No need to execute the following codes again. Instead, import the data directly.

start=CurrentDate[];

ClearAll[DATAC,MATC];

MAX=70;

DATAC[n_Integer]:=DATAC[n]=
With[{ns=NullSpace[Table[mata[i,j],{i,0,n-2},{j,0,n-1}]][[1]]},Together[ns/Last[ns]]];
MATC[n_Integer,j_Integer]:=Which[n==1&&j==0,1,j≥n,0,True,DATAC[n][[j+1]]];

Export["datac.txt",{Table[MATC[n,j],{n,MAX},{j,0,n-1}]}]

Print["Time used: ",CurrentDate[]-start];

Import the data of (Subscript[c, n,j]).

DATACImported=ToExpression[Import["datac.txt"]];

datac[n_Integer]:=datac[n]=DATACImported[[n]];
matc[n_,j_]:=matc[n,j]=Piecewise[{{datac[n][[j+1]],j<n}},0];

Print["The matrix of ",Subscript["c","n,j"]," begins with:\n",TableForm[Table[matc[n,j],{n,1,6},{j,0,n-1}]]];

Guess the annihilator for (Subscript[c, n,j]).

We will generate the guessed annihilator for (Subscript[c, n,j]) in advance. No need to execute the following codes again. Instead, import the data directly.

start=CurrentDate[];

MAX=60;

ClearAll[cc,n,j];

guess=GuessMultRE[Table[Piecewise[{{matc[n,j],j≤n-1}},0],{n,1,MAX},{j,0,MAX-1}],Flatten[Table[cc[n+l1,j+l2],{l1,0,3},{l2,0,4}]],{n,j},8,StartPoint->{1,0},Constraints->(j<n)];

Print["Time used: ",CurrentDate[]-start];

start=CurrentDate[];

annc=OreGroebnerBasis[NormalizeCoefficients/@ToOrePolynomial[guess,cc[n,j]]];
AnnInfo[annc]
Export["annc.txt",{annc}]

Print["Time used: ",CurrentDate[]-start];

Import the annihilator for (Subscript[c, n,j]).

ClearAll[n,j,cc];

annc=ToExpression[Import["annc.txt"]];

AnnInfo[annc]

Print[];

MAX=6;
Print["Check whether the first values of ",Subscript["c","n,j"]," satisfy the guessed recurrences:\n",Union[Flatten[Table[Together[ApplyOreOperator[annc,cc[n,j]]/.{n->nn,j->jj,cc->matc}],{nn,1,MAX},{jj,0,nn-1}]]]];

Print[];

Print["The values at these indices have to be given as initial conditions, 
in order to uniquely define ",Subscript["c","n,j"]," via the recurrences in annc:\n",AnnihilatorSingularities[annc,First/@OreAlgebra[annc][[1]]/.{n->1,j->0}]];

Proof of (H1)

Compute a recurrence for (Subscript[c, n,n-1]).

start=CurrentDate[];

ClearAll[n,j];
Support[cnn1=DFiniteSubstitute[annc,{j->n-1}][[1]]]

Print["Time used: ",CurrentDate[]-start];

Verify that this recurrence admits a constant sequence as solution.

OreReduce1[cnn1,Annihilator[1,S[n]]]

Look at the integer roots of the leading coefficient.

Select[n/.Solve[LeadingCoefficient[cnn1]==0,n],IntegerQ]

Check the first few initial values.

Table[matc[n,n-1],{n,9}]

Proof of (H2)

Include the variable i into annc.

ClearAll[n,j,i];

annci=ToOrePolynomial[Prepend[annc,S[i]-1],OreAlgebra[S[n],S[j],S[i]]];

Annihilator for  (Subscript[a, i,j])*(Subscript[c, n,j]). Recall that (Subscript[a, i,j]) is split into two parts (Subscript[a1, i,j])+(Subscript[a2, i,j]). No need to execute the following codes again. Instead, import the data directly.

start=CurrentDate[];

annH2Smnd1=DFiniteTimesHyper[annci,mata1[i,j]];
annH2Smnd2=DFiniteTimesHyper[annci,mata2[i,j]];
Export["annH2Smnd1.txt",{annH2Smnd1}]
Export["annH2Smnd2.txt",{annH2Smnd2}]

Print["Time used: ",CurrentDate[]-start];

(Subscript[a1, i,j])*(Subscript[c, n,j])

Import the annihilator for (Subscript[a1, i,j])*(Subscript[c, n,j]).

annH2Smnd1=ToExpression[Import["annH2Smnd1.txt"]];
AnnInfo[annH2Smnd1]

Import the 1st telescoper for (Subscript[a1, i,j])*(Subscript[c, n,j]).

annH2CT1No1=ToExpression[Import["annH2CT1No1.txt"]];

AnnInfo[annH2CT1No1]

deltaH2CT1No1=ToExpression[Import["deltaH2CT1No1.txt"]];

ByteCount[deltaH2CT1No1]

Verify the 1st telescoper for (Subscript[a1, i,j])*(Subscript[c, n,j]). Note that this step is VERY Memory-consuming, so we executed the command on an Amazon AWS cluster. To illustrate the process, we may nonrigorously substitute the parameters with specific values.

Timing[OreReduce[MapThread[(#1+(S[j]-1)**#2)&,{annH2CT1No1,deltaH2CT1No1}],annH2Smnd1]]

subs={n->23,i->135};
{annH2CT1No1subs,deltaH2CT1No1subs}=OrePolynomialSubstitute[#, subs]&/@{annH2CT1No1,deltaH2CT1No1};
Timing[OreReduce[MapThread[(#1+(S[j]-1)**#2)&,{annH2CT1No1subs,deltaH2CT1No1subs}],annH2Smnd1,OrePolynomialSubstitute->subs]]

subs={n->511,i->100};
{annH2CT1No1subs,deltaH2CT1No1subs}=OrePolynomialSubstitute[#, subs]&/@{annH2CT1No1,deltaH2CT1No1};
Timing[OreReduce[MapThread[(#1+(S[j]-1)**#2)&,{annH2CT1No1subs,deltaH2CT1No1subs}],annH2Smnd1,OrePolynomialSubstitute->subs]]

Import the 2nd telescoper for (Subscript[a1, i,j])*(Subscript[c, n,j]).

annH2CT1No2=ToExpression[Import["annH2CT1No2.txt"]];

AnnInfo[annH2CT1No2]

deltaH2CT1No2=ToExpression[Import["deltaH2CT1No2.txt"]];

ByteCount[deltaH2CT1No2]

Verify the 2nd telescoper for (Subscript[a1, i,j])*(Subscript[c, n,j]). Note that this step is VERY Memory-consuming, so we executed the command on an Amazon AWS cluster. To illustrate the process, we may nonrigorously substitute the parameters with specific values.

Timing[OreReduce[MapThread[(#1+(S[j]-1)**#2)&,{annH2CT1No2,deltaH2CT1No2}],annH2Smnd1]]

subs={n->23,i->135};
{annH2CT1No2subs,deltaH2CT1No2subs}=OrePolynomialSubstitute[#, subs]&/@{annH2CT1No2,deltaH2CT1No2};
Timing[OreReduce[MapThread[(#1+(S[j]-1)**#2)&,{annH2CT1No2subs,deltaH2CT1No2subs}],annH2Smnd1,OrePolynomialSubstitute->subs]]

subs={n->511,i->100};
{annH2CT1No2subs,deltaH2CT1No2subs}=OrePolynomialSubstitute[#, subs]&/@{annH2CT1No2,deltaH2CT1No2};
Timing[OreReduce[MapThread[(#1+(S[j]-1)**#2)&,{annH2CT1No2subs,deltaH2CT1No2subs}],annH2Smnd1,OrePolynomialSubstitute->subs]]

(Subscript[a2, i,j])*(Subscript[c, n,j])

Import the annihilator for (Subscript[a2, i,j])*(Subscript[c, n,j]).

annH2Smnd2=ToExpression[Import["annH2Smnd2.txt"]];
AnnInfo[annH2Smnd2]

Import the 1st telescoper for (Subscript[a2, i,j])*(Subscript[c, n,j]).

annH2CT2No1=ToExpression[Import["annH2CT2No1.txt"]];

AnnInfo[annH2CT2No1]

deltaH2CT2No1=ToExpression[Import["deltaH2CT2No1.txt"]];

ByteCount[deltaH2CT2No1]

Verify the 1st telescoper for (Subscript[a2, i,j])*(Subscript[c, n,j]). Note that this step is VERY Memory-consuming, so we executed the command on an Amazon AWS cluster. To illustrate the process, we may nonrigorously substitute the parameters with specific values.

Timing[OreReduce[MapThread[(#1+(S[j]-1)**#2)&,{annH2CT2No1,deltaH2CT2No1}],annH2Smnd2]]

subs={n->23,i->135};
{annH2CT2No1subs,deltaH2CT2No1subs}=OrePolynomialSubstitute[#, subs]&/@{annH2CT2No1,deltaH2CT2No1};
Timing[OreReduce[MapThread[(#1+(S[j]-1)**#2)&,{annH2CT2No1subs,deltaH2CT2No1subs}],annH2Smnd2,OrePolynomialSubstitute->subs]]

subs={n->511,i->100};
{annH2CT2No1subs,deltaH2CT2No1subs}=OrePolynomialSubstitute[#, subs]&/@{annH2CT2No1,deltaH2CT2No1};
Timing[OreReduce[MapThread[(#1+(S[j]-1)**#2)&,{annH2CT2No1subs,deltaH2CT2No1subs}],annH2Smnd2,OrePolynomialSubstitute->subs]]

Import the 2nd telescoper for (Subscript[a2, i,j])*(Subscript[c, n,j]).

annH2CT2No2=ToExpression[Import["annH2CT2No2.txt"]];

AnnInfo[annH2CT2No2]

deltaH2CT2No2=ToExpression[Import["deltaH2CT2No2.txt"]];

ByteCount[deltaH2CT2No2]

Verify the 2nd telescoper for (Subscript[a2, i,j])*(Subscript[c, n,j]). Note that this step is VERY Memory-consuming, so we executed the command on an Amazon AWS cluster. To illustrate the process, we may nonrigorously substitute the parameters with specific values.

Timing[OreReduce[MapThread[(#1+(S[j]-1)**#2)&,{annH2CT2No2,deltaH2CT2No2}],annH2Smnd2]]

subs={n->23,i->135};
{annH2CT2No2subs,deltaH2CT2No2subs}=OrePolynomialSubstitute[#, subs]&/@{annH2CT2No2,deltaH2CT2No2};
Timing[OreReduce[MapThread[(#1+(S[j]-1)**#2)&,{annH2CT2No2subs,deltaH2CT2No2subs}],annH2Smnd2,OrePolynomialSubstitute->subs]]

subs={n->511,i->100};
{annH2CT2No2subs,deltaH2CT2No2subs}=OrePolynomialSubstitute[#, subs]&/@{annH2CT2No2,deltaH2CT2No2};
Timing[OreReduce[MapThread[(#1+(S[j]-1)**#2)&,{annH2CT2No2subs,deltaH2CT2No2subs}],annH2Smnd2,OrePolynomialSubstitute->subs]]

(Subscript[a, i,j])*(Subscript[c, n,j])

Check that annH2CT1No1 and annH2CT2No1 differ by a scalar. So annH2CT1No1 also annihilates (∑_j)(Subscript[a2, i,j])*(Subscript[c, n,j]).

annH2CT1No1LeadingCoefficient=LeadingCoefficient[annH2CT1No1[[1]]];
annH2CT2No1LeadingCoefficient=LeadingCoefficient[annH2CT2No1[[1]]];
ScalarNo1=Factor[annH2CT1No1LeadingCoefficient/annH2CT2No1LeadingCoefficient]

annH2CT1No1CoeffList=OrePolynomialListCoefficients[annH2CT1No1[[1]]];
annH2CT2No1CoeffList=OrePolynomialListCoefficients[annH2CT2No1[[1]]];

Expand[annH2CT1No1CoeffList]==Expand[ScalarNo1*annH2CT2No1CoeffList]

Check that annH2CT1No2 and annH2CT2No2 differ by a scalar. So annH2CT1No2 also annihilates (∑_j)(Subscript[a2, i,j])*(Subscript[c, n,j]).

annH2CT1No2LeadingCoefficient=LeadingCoefficient[annH2CT1No2[[1]]];
annH2CT2No2LeadingCoefficient=LeadingCoefficient[annH2CT2No2[[1]]];
ScalarNo2=Factor[annH2CT1No2LeadingCoefficient/annH2CT2No2LeadingCoefficient]

annH2CT1No2CoeffList=OrePolynomialListCoefficients[annH2CT1No2[[1]]];
annH2CT2No2CoeffList=OrePolynomialListCoefficients[annH2CT2No2[[1]]];

Expand[annH2CT1No2CoeffList]==Expand[ScalarNo2*annH2CT2No2CoeffList]

annH2CTNo1=annH2CT1No1;
annH2CTNo2=annH2CT1No2;

Determine the singularities with i≥5.

LeadingExponent[annH2CTNo1[[1]]]

LeadingExponent[annH2CTNo2[[1]]]

coeff1=LeadingCoefficient[annH2CTNo1[[1]]]/.{i->i-LeadingExponent[annH2CTNo1[[1]]][[1]],n->n-LeadingExponent[annH2CTNo1[[1]]][[2]]};

coeff2=LeadingCoefficient[annH2CTNo2[[1]]]/.{i->i-LeadingExponent[annH2CTNo2[[1]]][[1]],n->n-LeadingExponent[annH2CTNo2[[1]]][[2]]};

Check the singularities at i=5.

Solve[(coeff1/.{i->5})==0&&5<n-1,n,Integers]

Check the singularities at i≥6.

The following code is too Time- and especially Memory-consuming so we finally executed it on an Amazon cluster. The output is empty {  }. (To convince the reader, we also perform some numerical verification.)

Solve[coeff1==0&&coeff2==0&&i≥6&&i<n-1,{n,i},Integers]

sol={};
For[ii=6,ii≤100,ii++,
For[nn=ii+2,nn≤ii+100,nn++,
If[(coeff1/.{n->nn,i->ii})==0&&(coeff2/.{n->nn,i->ii})==0,
AppendTo[sol,{n->nn,i->ii}];
];
];
];
sol

Check values at i=0.

ii=0;

Apply creative telescoping to (Subscript[a1, i,j])*(Subscript[c, n,j]).

annii=DFiniteTimesHyper[annc,mata1[ii,j]];
{anniiCT,deltaiiCT}=FindCreativeTelescoping[annii,S[j]-1];

The telescoper part is 1. We then find that the inhomogeneous part is nonvanishing, and hence the analysis becomes trickier.

anniiCT

Here we note that the delta part is supported on a collection of power products ((S[n])^a)((S[j])^b) with, in particular, 0≤b≤2.

Support[deltaiiCT[[1]]]

deltaiiCT[[1,1]][[1,All,2]]
BB=Max[%[[All,2]]]

We write explicitly the inhomogeneous part by calling (Subscript[c, n,j]) temporarily under the name ff[n,j].

ClearAll[ff];
inhomii=ApplyOreOperator[deltaiiCT[[1]],mata1[ii,j]*ff[n,j]][[1]];

The inhomogeneous part at j=n vanishes by recalling that (Subscript[c, n,n-1])=1 and (Subscript[c, n,j])=0 when j≥n.

sumiin=(inhomii/.{j->n})/.{(ff[a_,b_]/;(SameQ[a-b,1]))->1,(ff[a_,b_]/;(a-b≤0))->0}

The inhomogeneous part at j=0 will be split into parts by collecting (Subscript[c, ?,b]).

sumii=inhomii/.{j->0};

ClearAll[part];
For[bb=0,bb≤BB,bb++,
part[bb]=sumii/.{(ff[a_,b_]/;SameQ[b,bb]==False)->0};
];

We shall see that by combining these parts, our (Subscript[Σ, i,n]^((1))) will be recovered.

MAX=3;
For[bb=0,bb≤BB,bb++,
Print["Part ",bb,":\n",Table[part[bb]/.{n->nn,ff->matc},{nn,ii+2,ii+2+MAX}],"\n=========="];
];
Print["Total:\n",Table[Sum[part[bb]/.{n->nn,ff->matc},{bb,0,BB}],{nn,ii+2,ii+2+MAX}],"\n====================\n","Compare with (∑_j)",Subscript["a1",ToString[ii]<>",j"],"(Subscript[c, n, j]):\n",Table[Sum[mata1[ii,j]*matc[nn,j],{j,0,nn-1}],{nn,ii+2,ii+2+MAX}]];

MAX=10;
Table[Sum[mata1[ii,j]*matc[nn,j],{j,0,nn-1}],{nn,ii+2,ii+MAX}]==Table[Sum[part[bb]/.{n->nn,ff->matc},{bb,0,BB}],{nn,ii+2,ii+MAX}]

Derive separately the annihilating ideal anncii[b] for the univariate sequence (Subscript[c, n,j]) with fixed j=b.

ClearAll[anncii];
For[bb=0,bb≤BB,bb++,
anncii[bb]=DFiniteSubstitute[annc,{j->bb}];
];

In what follows, we show that (Subscript[Σ, i,n]^((1))) is annihilated by the annihilating ideal anncii[0] for (Subscript[c, n,0]).

For each part obtained earlier, we apply the Ore polynomial anncii[0].

Putting them together, the Ore polynomial anncii[0] is indeed applied to (Subscript[Σ, i,n]^((1))); the annihilation is illustrated numerically below.

ClearAll[partunderannc0];
MAX=15;
For[bb=0,bb≤BB,bb++,
partunderannc0[bb]=ApplyOreOperator[anncii[0][[1]],part[bb]];
];
Table[Sum[partunderannc0[bb]/.{n->nn,ff->matc},{bb,0,BB}],{nn,ii+2,ii+MAX}]

Note that the b-th part acted by anncii[0] can be rewritten as the univariate sequence (Subscript[c, n,b]) acted by a certain Ore polynomial (Subscript[O, b]) in the algebra S[n]. Now we derive an annihilating ideal for each (Subscript[O, b])·(Subscript[c, n,b]).

ClearAll[orepolypart,annpart];
For[bb=0,bb≤BB,bb++,
orepolypart[bb]=ToOrePolynomial[partunderannc0[bb],ff[n,bb]];
annpart[bb]=DFiniteOreAction[anncii[bb],orepolypart[bb]];
];

We can indeed check the correctness of these annihilating ideals numerically.

ClearAll[gg];
ClearAll[recpart,valpart];
MAX=15;
For[bb=0,bb≤BB,bb++,
recpart[bb]=ApplyOreOperator[annpart[bb],gg[n]][[1]];
valpart[bb][nn_]:=partunderannc0[bb]/.{n->nn,ff->matc};
Print["Part ",bb,":\n",Table[recpart[bb]/.{n->nn,gg->valpart[bb]},{nn,ii+2,ii+MAX}],"\n=========="];
];

By the closure property, we obtain an annihilating ideal for (∑_b)(Subscript[O, b])·(Subscript[c, n,b])=anncii[0]·(Subscript[Σ, i,n]^((1))). We then compute the singularities.

anntotal=DFinitePlus[Sequence@@Table[annpart[bb],{bb,0,BB}]];

LeadingExponent[anntotal[[1]]][[1]]

Solve[(LeadingCoefficient[anntotal[[1]]]/.{n->n-LeadingExponent[anntotal[[1]]][[1]]})==0,n,Integers]

We check that the initial values for (∑_b)(Subscript[O, b])·(Subscript[c, n,b])=anncii[0]·(Subscript[Σ, i,n]^((1))) are all 0, and hence they vanish for all n≥i+2. This confirms that (Subscript[Σ, i,n]^((1))) is annihilated by anncii[0].

Table[Sum[partunderannc0[bb]/.{n->nn,ff->matc},{bb,0,BB}],{nn,ii+2,ii+2+LeadingExponent[anntotal[[1]]][[1]]}]

ClearAll[sigma1,hh];
sigma[nn_]:=Sum[mata1[ii,j]*matc[nn,j],{j,0,nn-1}];
sigma1underannc0=ApplyOreOperator[anncii[0][[1]],hh[n]];
Table[sigma1underannc0/.{n->nn,hh->sigma},{nn,ii+2,ii+2+LeadingExponent[anntotal[[1]]][[1]]}]

Note that (Subscript[a2, i,j]) equals Binomial[-i+3,3] when j=0, and 0 when j≥1 for our choice of i. Hence, (Subscript[Σ, i,n]^((2)))=(∑_(j=0)^(n-1))(Subscript[a2, i,j])(Subscript[c, n,j])=Binomial[-i+3,3]*(Subscript[c, n,0]) is also annihilated by anncii[0].

Consequently, (Subscript[Σ, i,n]) is annihilated by anncii[0].

Finally, after computing the singularities, we check that (Subscript[Σ, i,n]) vanishes for its initial values and hence for all n≥i+2.

LeadingExponent[anncii[0][[1]]][[1]]

Solve[(LeadingCoefficient[anncii[0][[1]]]/.{n->n-LeadingExponent[anncii[0][[1]]][[1]]})==0,n,Integers]

Table[Sum[mata[ii,j]*matc[n,j],{j,0,n-1}],{n,ii+2,ii+2+LeadingExponent[anncii[0][[1]]][[1]]}]

Check values at i=1.

ii=1;

Apply creative telescoping to (Subscript[a1, i,j])*(Subscript[c, n,j]).

annii=DFiniteTimesHyper[annc,mata1[ii,j]];
{anniiCT,deltaiiCT}=FindCreativeTelescoping[annii,S[j]-1];

The telescoper part is 1. We then find that the inhomogeneous part is nonvanishing, and hence the analysis becomes trickier.

anniiCT

Here we note that the delta part is supported on a collection of power products ((S[n])^a)((S[j])^b) with, in particular, 0≤b≤2.

Support[deltaiiCT[[1]]]

deltaiiCT[[1,1]][[1,All,2]]
BB=Max[%[[All,2]]]

We write explicitly the inhomogeneous part by calling (Subscript[c, n,j]) temporarily under the name ff[n,j].

ClearAll[ff];
inhomii=ApplyOreOperator[deltaiiCT[[1]],mata1[ii,j]*ff[n,j]][[1]];

The inhomogeneous part at j=n vanishes by recalling that (Subscript[c, n,n-1])=1 and (Subscript[c, n,j])=0 when j≥n.

sumiin=(inhomii/.{j->n})/.{(ff[a_,b_]/;(SameQ[a-b,1]))->1,(ff[a_,b_]/;(a-b≤0))->0}

The inhomogeneous part at j=0 will be split into parts by collecting (Subscript[c, ?,b]).

sumii=inhomii/.{j->0};

ClearAll[part];
For[bb=0,bb≤BB,bb++,
part[bb]=sumii/.{(ff[a_,b_]/;SameQ[b,bb]==False)->0};
];

We shall see that by combining these parts, our (Subscript[Σ, i,n]^((1))) will be recovered.

MAX=3;
For[bb=0,bb≤BB,bb++,
Print["Part ",bb,":\n",Table[part[bb]/.{n->nn,ff->matc},{nn,ii+2,ii+2+MAX}],"\n=========="];
];
Print["Total:\n",Table[Sum[part[bb]/.{n->nn,ff->matc},{bb,0,BB}],{nn,ii+2,ii+2+MAX}],"\n====================\n","Compare with (∑_j)",Subscript["a1",ToString[ii]<>",j"],"(Subscript[c, n, j]):\n",Table[Sum[mata1[ii,j]*matc[nn,j],{j,0,nn-1}],{nn,ii+2,ii+2+MAX}]];

MAX=10;
Table[Sum[mata1[ii,j]*matc[nn,j],{j,0,nn-1}],{nn,ii+2,ii+MAX}]==Table[Sum[part[bb]/.{n->nn,ff->matc},{bb,0,BB}],{nn,ii+2,ii+MAX}]

Derive separately the annihilating ideal anncii[b] for the univariate sequence (Subscript[c, n,j]) with fixed j=b.

ClearAll[anncii];
For[bb=0,bb≤BB,bb++,
anncii[bb]=DFiniteSubstitute[annc,{j->bb}];
];

In what follows, we show that (Subscript[Σ, i,n]^((1))) is annihilated by the annihilating ideal anncii[0] for (Subscript[c, n,0]).

For each part obtained earlier, we apply the Ore polynomial anncii[0].

Putting them together, the Ore polynomial anncii[0] is indeed applied to (Subscript[Σ, i,n]^((1))); the annihilation is illustrated numerically below.

ClearAll[partunderannc0];
MAX=15;
For[bb=0,bb≤BB,bb++,
partunderannc0[bb]=ApplyOreOperator[anncii[0][[1]],part[bb]];
];
Table[Sum[partunderannc0[bb]/.{n->nn,ff->matc},{bb,0,BB}],{nn,ii+2,ii+MAX}]

Note that the b-th part acted by anncii[0] can be rewritten as the univariate sequence (Subscript[c, n,b]) acted by a certain Ore polynomial (Subscript[O, b]) in the algebra S[n]. Now we derive an annihilating ideal for each (Subscript[O, b])·(Subscript[c, n,b]).

ClearAll[orepolypart,annpart];
For[bb=0,bb≤BB,bb++,
orepolypart[bb]=ToOrePolynomial[partunderannc0[bb],ff[n,bb]];
annpart[bb]=DFiniteOreAction[anncii[bb],orepolypart[bb]];
];

We can indeed check the correctness of these annihilating ideals numerically.

ClearAll[gg];
ClearAll[recpart,valpart];
MAX=15;
For[bb=0,bb≤BB,bb++,
recpart[bb]=ApplyOreOperator[annpart[bb],gg[n]][[1]];
valpart[bb][nn_]:=partunderannc0[bb]/.{n->nn,ff->matc};
Print["Part ",bb,":\n",Table[recpart[bb]/.{n->nn,gg->valpart[bb]},{nn,ii+2,ii+MAX}],"\n=========="];
];

By the closure property, we obtain an annihilating ideal for (∑_b)(Subscript[O, b])·(Subscript[c, n,b])=anncii[0]·(Subscript[Σ, i,n]^((1))). We then compute the singularities.

anntotal=DFinitePlus[Sequence@@Table[annpart[bb],{bb,0,BB}]];

LeadingExponent[anntotal[[1]]][[1]]

Solve[(LeadingCoefficient[anntotal[[1]]]/.{n->n-LeadingExponent[anntotal[[1]]][[1]]})==0,n,Integers]

We check that the initial values for (∑_b)(Subscript[O, b])·(Subscript[c, n,b])=anncii[0]·(Subscript[Σ, i,n]^((1))) are all 0, and hence they vanish for all n≥i+2. This confirms that (Subscript[Σ, i,n]^((1))) is annihilated by anncii[0].

Table[Sum[partunderannc0[bb]/.{n->nn,ff->matc},{bb,0,BB}],{nn,ii+2,ii+2+LeadingExponent[anntotal[[1]]][[1]]}]

ClearAll[sigma1,hh];
sigma[nn_]:=Sum[mata1[ii,j]*matc[nn,j],{j,0,nn-1}];
sigma1underannc0=ApplyOreOperator[anncii[0][[1]],hh[n]];
Table[sigma1underannc0/.{n->nn,hh->sigma},{nn,ii+2,ii+2+LeadingExponent[anntotal[[1]]][[1]]}]

Note that (Subscript[a2, i,j]) equals Binomial[-i+3,3] when j=0, and 0 when j≥1 for our choice of i. Hence, (Subscript[Σ, i,n]^((2)))=(∑_(j=0)^(n-1))(Subscript[a2, i,j])(Subscript[c, n,j])=Binomial[-i+3,3]*(Subscript[c, n,0]) is also annihilated by anncii[0].

Consequently, (Subscript[Σ, i,n]) is annihilated by anncii[0].

Finally, after computing the singularities, we check that (Subscript[Σ, i,n]) vanishes for its initial values and hence for all n≥i+2.

LeadingExponent[anncii[0][[1]]][[1]]

Solve[(LeadingCoefficient[anncii[0][[1]]]/.{n->n-LeadingExponent[anncii[0][[1]]][[1]]})==0,n,Integers]

Table[Sum[mata[ii,j]*matc[n,j],{j,0,n-1}],{n,ii+2,ii+2+LeadingExponent[anncii[0][[1]]][[1]]}]

Check values at i=2.

ii=2;

Apply creative telescoping to (Subscript[a1, i,j])*(Subscript[c, n,j]).

annii=DFiniteTimesHyper[annc,mata1[ii,j]];
{anniiCT,deltaiiCT}=FindCreativeTelescoping[annii,S[j]-1];

The telescoper part is 1. We then find that the inhomogeneous part is nonvanishing, and hence the analysis becomes trickier.

anniiCT

Here we note that the delta part is supported on a collection of power products ((S[n])^a)((S[j])^b) with, in particular, 0≤b≤2.

Support[deltaiiCT[[1]]]

deltaiiCT[[1,1]][[1,All,2]]
BB=Max[%[[All,2]]]

We write explicitly the inhomogeneous part by calling (Subscript[c, n,j]) temporarily under the name ff[n,j].

ClearAll[ff];
inhomii=ApplyOreOperator[deltaiiCT[[1]],mata1[ii,j]*ff[n,j]][[1]];

The inhomogeneous part at j=n vanishes by recalling that (Subscript[c, n,n-1])=1 and (Subscript[c, n,j])=0 when j≥n.

sumiin=(inhomii/.{j->n})/.{(ff[a_,b_]/;(SameQ[a-b,1]))->1,(ff[a_,b_]/;(a-b≤0))->0}

The inhomogeneous part at j=0 will be split into parts by collecting (Subscript[c, ?,b]).

sumii=inhomii/.{j->0};

ClearAll[part];
For[bb=0,bb≤BB,bb++,
part[bb]=sumii/.{(ff[a_,b_]/;SameQ[b,bb]==False)->0};
];

We shall see that by combining these parts, our (Subscript[Σ, i,n]^((1))) will be recovered.

MAX=3;
For[bb=0,bb≤BB,bb++,
Print["Part ",bb,":\n",Table[part[bb]/.{n->nn,ff->matc},{nn,ii+2,ii+2+MAX}],"\n=========="];
];
Print["Total:\n",Table[Sum[part[bb]/.{n->nn,ff->matc},{bb,0,BB}],{nn,ii+2,ii+2+MAX}],"\n====================\n","Compare with (∑_j)",Subscript["a1",ToString[ii]<>",j"],"(Subscript[c, n, j]):\n",Table[Sum[mata1[ii,j]*matc[nn,j],{j,0,nn-1}],{nn,ii+2,ii+2+MAX}]];

MAX=10;
Table[Sum[mata1[ii,j]*matc[nn,j],{j,0,nn-1}],{nn,ii+2,ii+MAX}]==Table[Sum[part[bb]/.{n->nn,ff->matc},{bb,0,BB}],{nn,ii+2,ii+MAX}]

Derive separately the annihilating ideal anncii[b] for the univariate sequence (Subscript[c, n,j]) with fixed j=b.

ClearAll[anncii];
For[bb=0,bb≤BB,bb++,
anncii[bb]=DFiniteSubstitute[annc,{j->bb}];
];

In what follows, we show that (Subscript[Σ, i,n]^((1))) is annihilated by the annihilating ideal anncii[0] for (Subscript[c, n,0]).

For each part obtained earlier, we apply the Ore polynomial anncii[0].

Putting them together, the Ore polynomial anncii[0] is indeed applied to (Subscript[Σ, i,n]^((1))); the annihilation is illustrated numerically below.

ClearAll[partunderannc0];
MAX=15;
For[bb=0,bb≤BB,bb++,
partunderannc0[bb]=ApplyOreOperator[anncii[0][[1]],part[bb]];
];
Table[Sum[partunderannc0[bb]/.{n->nn,ff->matc},{bb,0,BB}],{nn,ii+2,ii+MAX}]

Note that the b-th part acted by anncii[0] can be rewritten as the univariate sequence (Subscript[c, n,b]) acted by a certain Ore polynomial (Subscript[O, b]) in the algebra S[n]. Now we derive an annihilating ideal for each (Subscript[O, b])·(Subscript[c, n,b]).

ClearAll[orepolypart,annpart];
For[bb=0,bb≤BB,bb++,
orepolypart[bb]=ToOrePolynomial[partunderannc0[bb],ff[n,bb]];
annpart[bb]=DFiniteOreAction[anncii[bb],orepolypart[bb]];
];

We can indeed check the correctness of these annihilating ideals numerically.

ClearAll[gg];
ClearAll[recpart,valpart];
MAX=15;
For[bb=0,bb≤BB,bb++,
recpart[bb]=ApplyOreOperator[annpart[bb],gg[n]][[1]];
valpart[bb][nn_]:=partunderannc0[bb]/.{n->nn,ff->matc};
Print["Part ",bb,":\n",Table[recpart[bb]/.{n->nn,gg->valpart[bb]},{nn,ii+2,ii+MAX}],"\n=========="];
];

By the closure property, we obtain an annihilating ideal for (∑_b)(Subscript[O, b])·(Subscript[c, n,b])=anncii[0]·(Subscript[Σ, i,n]^((1))). We then compute the singularities.

anntotal=DFinitePlus[Sequence@@Table[annpart[bb],{bb,0,BB}]];

LeadingExponent[anntotal[[1]]][[1]]

Solve[(LeadingCoefficient[anntotal[[1]]]/.{n->n-LeadingExponent[anntotal[[1]]][[1]]})==0,n,Integers]

We check that the initial values for (∑_b)(Subscript[O, b])·(Subscript[c, n,b])=anncii[0]·(Subscript[Σ, i,n]^((1))) are all 0, and hence they vanish for all n≥i+2. This confirms that (Subscript[Σ, i,n]^((1))) is annihilated by anncii[0].

Table[Sum[partunderannc0[bb]/.{n->nn,ff->matc},{bb,0,BB}],{nn,ii+2,ii+2+LeadingExponent[anntotal[[1]]][[1]]}]

ClearAll[sigma1,hh];
sigma[nn_]:=Sum[mata1[ii,j]*matc[nn,j],{j,0,nn-1}];
sigma1underannc0=ApplyOreOperator[anncii[0][[1]],hh[n]];
Table[sigma1underannc0/.{n->nn,hh->sigma},{nn,ii+2,ii+2+LeadingExponent[anntotal[[1]]][[1]]}]

Note that (Subscript[a2, i,j]) equals Binomial[-i+3,3] when j=0, and 0 when j≥1 for our choice of i. Hence, (Subscript[Σ, i,n]^((2)))=(∑_(j=0)^(n-1))(Subscript[a2, i,j])(Subscript[c, n,j])=Binomial[-i+3,3]*(Subscript[c, n,0]) is also annihilated by anncii[0].

Consequently, (Subscript[Σ, i,n]) is annihilated by anncii[0].

Finally, after computing the singularities, we check that (Subscript[Σ, i,n]) vanishes for its initial values and hence for all n≥i+2.

LeadingExponent[anncii[0][[1]]][[1]]

Solve[(LeadingCoefficient[anncii[0][[1]]]/.{n->n-LeadingExponent[anncii[0][[1]]][[1]]})==0,n,Integers]

Table[Sum[mata[ii,j]*matc[n,j],{j,0,n-1}],{n,ii+2,ii+2+LeadingExponent[anncii[0][[1]]][[1]]}]

Check values at i=3.

ii=3;

Apply creative telescoping to (Subscript[a1, i,j])*(Subscript[c, n,j]).

annii=DFiniteTimesHyper[annc,mata1[ii,j]];
{anniiCT,deltaiiCT}=FindCreativeTelescoping[annii,S[j]-1];

The telescoper part is 1. We then find that the inhomogeneous part is nonvanishing, and hence the analysis becomes trickier.

anniiCT

Here we note that the delta part is supported on a collection of power products ((S[n])^a)((S[j])^b) with, in particular, 0≤b≤2.

Support[deltaiiCT[[1]]]

deltaiiCT[[1,1]][[1,All,2]]
BB=Max[%[[All,2]]]

We write explicitly the inhomogeneous part by calling (Subscript[c, n,j]) temporarily under the name ff[n,j].

ClearAll[ff];
inhomii=ApplyOreOperator[deltaiiCT[[1]],mata1[ii,j]*ff[n,j]][[1]];

The inhomogeneous part at j=n vanishes by recalling that (Subscript[c, n,n-1])=1 and (Subscript[c, n,j])=0 when j≥n.

sumiin=(inhomii/.{j->n})/.{(ff[a_,b_]/;(SameQ[a-b,1]))->1,(ff[a_,b_]/;(a-b≤0))->0}

The inhomogeneous part at j=0 will be split into parts by collecting (Subscript[c, ?,b]).

sumii=inhomii/.{j->0};

ClearAll[part];
For[bb=0,bb≤BB,bb++,
part[bb]=sumii/.{(ff[a_,b_]/;SameQ[b,bb]==False)->0};
];

We shall see that by combining these parts, our (Subscript[Σ, i,n]^((1))) will be recovered.

MAX=3;
For[bb=0,bb≤BB,bb++,
Print["Part ",bb,":\n",Table[part[bb]/.{n->nn,ff->matc},{nn,ii+2,ii+2+MAX}],"\n=========="];
];
Print["Total:\n",Table[Sum[part[bb]/.{n->nn,ff->matc},{bb,0,BB}],{nn,ii+2,ii+2+MAX}],"\n====================\n","Compare with (∑_j)",Subscript["a1",ToString[ii]<>",j"],"(Subscript[c, n, j]):\n",Table[Sum[mata1[ii,j]*matc[nn,j],{j,0,nn-1}],{nn,ii+2,ii+2+MAX}]];

MAX=10;
Table[Sum[mata1[ii,j]*matc[nn,j],{j,0,nn-1}],{nn,ii+2,ii+MAX}]==Table[Sum[part[bb]/.{n->nn,ff->matc},{bb,0,BB}],{nn,ii+2,ii+MAX}]

Derive separately the annihilating ideal anncii[b] for the univariate sequence (Subscript[c, n,j]) with fixed j=b.

ClearAll[anncii];
For[bb=0,bb≤BB,bb++,
anncii[bb]=DFiniteSubstitute[annc,{j->bb}];
];

In what follows, we show that (Subscript[Σ, i,n]^((1))) is annihilated by the annihilating ideal anncii[0] for (Subscript[c, n,0]).

For each part obtained earlier, we apply the Ore polynomial anncii[0].

Putting them together, the Ore polynomial anncii[0] is indeed applied to (Subscript[Σ, i,n]^((1))); the annihilation is illustrated numerically below.

ClearAll[partunderannc0];
MAX=15;
For[bb=0,bb≤BB,bb++,
partunderannc0[bb]=ApplyOreOperator[anncii[0][[1]],part[bb]];
];
Table[Sum[partunderannc0[bb]/.{n->nn,ff->matc},{bb,0,BB}],{nn,ii+2,ii+MAX}]

Note that the b-th part acted by anncii[0] can be rewritten as the univariate sequence (Subscript[c, n,b]) acted by a certain Ore polynomial (Subscript[O, b]) in the algebra S[n]. Now we derive an annihilating ideal for each (Subscript[O, b])·(Subscript[c, n,b]).

ClearAll[orepolypart,annpart];
For[bb=0,bb≤BB,bb++,
orepolypart[bb]=ToOrePolynomial[partunderannc0[bb],ff[n,bb]];
annpart[bb]=DFiniteOreAction[anncii[bb],orepolypart[bb]];
];

We can indeed check the correctness of these annihilating ideals numerically.

ClearAll[gg];
ClearAll[recpart,valpart];
MAX=15;
For[bb=0,bb≤BB,bb++,
recpart[bb]=ApplyOreOperator[annpart[bb],gg[n]][[1]];
valpart[bb][nn_]:=partunderannc0[bb]/.{n->nn,ff->matc};
Print["Part ",bb,":\n",Table[recpart[bb]/.{n->nn,gg->valpart[bb]},{nn,ii+2,ii+MAX}],"\n=========="];
];

By the closure property, we obtain an annihilating ideal for (∑_b)(Subscript[O, b])·(Subscript[c, n,b])=anncii[0]·(Subscript[Σ, i,n]^((1))). We then compute the singularities.

anntotal=DFinitePlus[Sequence@@Table[annpart[bb],{bb,0,BB}]];

LeadingExponent[anntotal[[1]]][[1]]

Solve[(LeadingCoefficient[anntotal[[1]]]/.{n->n-LeadingExponent[anntotal[[1]]][[1]]})==0,n,Integers]

We check that the initial values for (∑_b)(Subscript[O, b])·(Subscript[c, n,b])=anncii[0]·(Subscript[Σ, i,n]^((1))) are all 0, and hence they vanish for all n≥i+2. This confirms that (Subscript[Σ, i,n]^((1))) is annihilated by anncii[0].

Table[Sum[partunderannc0[bb]/.{n->nn,ff->matc},{bb,0,BB}],{nn,ii+2,ii+2+LeadingExponent[anntotal[[1]]][[1]]}]

ClearAll[sigma1,hh];
sigma[nn_]:=Sum[mata1[ii,j]*matc[nn,j],{j,0,nn-1}];
sigma1underannc0=ApplyOreOperator[anncii[0][[1]],hh[n]];
Table[sigma1underannc0/.{n->nn,hh->sigma},{nn,ii+2,ii+2+LeadingExponent[anntotal[[1]]][[1]]}]

Note that (Subscript[a2, i,j]) equals Binomial[-i+3,3] when j=0, and 0 when j≥1 for our choice of i. Hence, (Subscript[Σ, i,n]^((2)))=(∑_(j=0)^(n-1))(Subscript[a2, i,j])(Subscript[c, n,j])=Binomial[-i+3,3]*(Subscript[c, n,0]) is also annihilated by anncii[0].

Consequently, (Subscript[Σ, i,n]) is annihilated by anncii[0].

Finally, after computing the singularities, we check that (Subscript[Σ, i,n]) vanishes for its initial values and hence for all n≥i+2.

LeadingExponent[anncii[0][[1]]][[1]]

Solve[(LeadingCoefficient[anncii[0][[1]]]/.{n->n-LeadingExponent[anncii[0][[1]]][[1]]})==0,n,Integers]

Table[Sum[mata[ii,j]*matc[n,j],{j,0,n-1}],{n,ii+2,ii+2+LeadingExponent[anncii[0][[1]]][[1]]}]

Check values at i=4.

ii=4;

Apply creative telescoping to (Subscript[a1, i,j])*(Subscript[c, n,j]).

annii=DFiniteTimesHyper[annc,mata1[ii,j]];
{anniiCT,deltaiiCT}=FindCreativeTelescoping[annii,S[j]-1];

The telescoper part is 1. We then find that the inhomogeneous part is nonvanishing, and hence the analysis becomes trickier.

anniiCT

Here we note that the delta part is supported on a collection of power products ((S[n])^a)((S[j])^b) with, in particular, 0≤b≤2.

Support[deltaiiCT[[1]]]

deltaiiCT[[1,1]][[1,All,2]]
BB=Max[%[[All,2]]]

We write explicitly the inhomogeneous part by calling (Subscript[c, n,j]) temporarily under the name ff[n,j].

ClearAll[ff];
inhomii=ApplyOreOperator[deltaiiCT[[1]],mata1[ii,j]*ff[n,j]][[1]];

The inhomogeneous part at j=n vanishes by recalling that (Subscript[c, n,n-1])=1 and (Subscript[c, n,j])=0 when j≥n.

sumiin=(inhomii/.{j->n})/.{(ff[a_,b_]/;(SameQ[a-b,1]))->1,(ff[a_,b_]/;(a-b≤0))->0}

The inhomogeneous part at j=0 will be split into parts by collecting (Subscript[c, ?,b]).

sumii=inhomii/.{j->0};

ClearAll[part];
For[bb=0,bb≤BB,bb++,
part[bb]=sumii/.{(ff[a_,b_]/;SameQ[b,bb]==False)->0};
];

We shall see that by combining these parts, our (Subscript[Σ, i,n]^((1))) will be recovered.

MAX=3;
For[bb=0,bb≤BB,bb++,
Print["Part ",bb,":\n",Table[part[bb]/.{n->nn,ff->matc},{nn,ii+2,ii+2+MAX}],"\n=========="];
];
Print["Total:\n",Table[Sum[part[bb]/.{n->nn,ff->matc},{bb,0,BB}],{nn,ii+2,ii+2+MAX}],"\n====================\n","Compare with (∑_j)",Subscript["a1",ToString[ii]<>",j"],"(Subscript[c, n, j]):\n",Table[Sum[mata1[ii,j]*matc[nn,j],{j,0,nn-1}],{nn,ii+2,ii+2+MAX}]];

MAX=10;
Table[Sum[mata1[ii,j]*matc[nn,j],{j,0,nn-1}],{nn,ii+2,ii+MAX}]==Table[Sum[part[bb]/.{n->nn,ff->matc},{bb,0,BB}],{nn,ii+2,ii+MAX}]

Derive separately the annihilating ideal anncii[b] for the univariate sequence (Subscript[c, n,j]) with fixed j=b.

ClearAll[anncii];
For[bb=0,bb≤BB,bb++,
anncii[bb]=DFiniteSubstitute[annc,{j->bb}];
];

In what follows, we show that (Subscript[Σ, i,n]^((1))) is annihilated by the annihilating ideal anncii[0] for (Subscript[c, n,0]).

For each part obtained earlier, we apply the Ore polynomial anncii[0].

Putting them together, the Ore polynomial anncii[0] is indeed applied to (Subscript[Σ, i,n]^((1))); the annihilation is illustrated numerically below.

ClearAll[partunderannc0];
MAX=15;
For[bb=0,bb≤BB,bb++,
partunderannc0[bb]=ApplyOreOperator[anncii[0][[1]],part[bb]];
];
Table[Sum[partunderannc0[bb]/.{n->nn,ff->matc},{bb,0,BB}],{nn,ii+2,ii+MAX}]

Note that the b-th part acted by anncii[0] can be rewritten as the univariate sequence (Subscript[c, n,b]) acted by a certain Ore polynomial (Subscript[O, b]) in the algebra S[n]. Now we derive an annihilating ideal for each (Subscript[O, b])·(Subscript[c, n,b]).

ClearAll[orepolypart,annpart];
For[bb=0,bb≤BB,bb++,
orepolypart[bb]=ToOrePolynomial[partunderannc0[bb],ff[n,bb]];
annpart[bb]=DFiniteOreAction[anncii[bb],orepolypart[bb]];
];

We can indeed check the correctness of these annihilating ideals numerically.

ClearAll[gg];
ClearAll[recpart,valpart];
MAX=15;
For[bb=0,bb≤BB,bb++,
recpart[bb]=ApplyOreOperator[annpart[bb],gg[n]][[1]];
valpart[bb][nn_]:=partunderannc0[bb]/.{n->nn,ff->matc};
Print["Part ",bb,":\n",Table[recpart[bb]/.{n->nn,gg->valpart[bb]},{nn,ii+2,ii+MAX}],"\n=========="];
];

By the closure property, we obtain an annihilating ideal for (∑_b)(Subscript[O, b])·(Subscript[c, n,b])=anncii[0]·(Subscript[Σ, i,n]^((1))). We then compute the singularities.

anntotal=DFinitePlus[Sequence@@Table[annpart[bb],{bb,0,BB}]];

LeadingExponent[anntotal[[1]]][[1]]

Solve[(LeadingCoefficient[anntotal[[1]]]/.{n->n-LeadingExponent[anntotal[[1]]][[1]]})==0,n,Integers]

We check that the initial values for (∑_b)(Subscript[O, b])·(Subscript[c, n,b])=anncii[0]·(Subscript[Σ, i,n]^((1))) are all 0, and hence they vanish for all n≥i+2. This confirms that (Subscript[Σ, i,n]^((1))) is annihilated by anncii[0].

Table[Sum[partunderannc0[bb]/.{n->nn,ff->matc},{bb,0,BB}],{nn,ii+2,ii+2+LeadingExponent[anntotal[[1]]][[1]]}]

ClearAll[sigma1,hh];
sigma[nn_]:=Sum[mata1[ii,j]*matc[nn,j],{j,0,nn-1}];
sigma1underannc0=ApplyOreOperator[anncii[0][[1]],hh[n]];
Table[sigma1underannc0/.{n->nn,hh->sigma},{nn,ii+2,ii+2+LeadingExponent[anntotal[[1]]][[1]]}]

Note that (Subscript[a2, i,j]) equals Binomial[-i+3,3] when j=0, and 0 when j≥1 for our choice of i. Hence, (Subscript[Σ, i,n]^((2)))=(∑_(j=0)^(n-1))(Subscript[a2, i,j])(Subscript[c, n,j])=Binomial[-i+3,3]*(Subscript[c, n,0]) is also annihilated by anncii[0].

Consequently, (Subscript[Σ, i,n]) is annihilated by anncii[0].

Finally, after computing the singularities, we check that (Subscript[Σ, i,n]) vanishes for its initial values and hence for all n≥i+2.

LeadingExponent[anncii[0][[1]]][[1]]

Solve[(LeadingCoefficient[anncii[0][[1]]]/.{n->n-LeadingExponent[anncii[0][[1]]][[1]]})==0,n,Integers]

Table[Sum[mata[ii,j]*matc[n,j],{j,0,n-1}],{n,ii+2,ii+2+LeadingExponent[anncii[0][[1]]][[1]]}]

Proof of (H3)

Annihilator for  (Subscript[a, n-1,j])*(Subscript[c, n,j]). Recall that (Subscript[a, n-1,j]) is split into two parts (Subscript[a1, n-1,j])+(Subscript[a2, n-1,j]). No need to execute the following codes again. Instead, import the data directly.

start=CurrentDate[];

ClearAll[n,j];

annH3Smnd1=DFiniteTimesHyper[annc,mata1[n-1,j]];
annH3Smnd2=DFiniteTimesHyper[annc,mata2[n-1,j]];
Export["annH3Smnd1.txt",{annH3Smnd1}]
Export["annH3Smnd2.txt",{annH3Smnd2}]

Print["Time used: ",CurrentDate[]-start];

(Subscript[a1, n-1,j])*(Subscript[c, n,j])

Import the annihilator for (Subscript[a1, n-1,j])*(Subscript[c, n,j]).

annH3Smnd1=ToExpression[Import["annH3Smnd1.txt"]];
AnnInfo[annH3Smnd1]

Import the telescoper for (Subscript[a1, n-1,j])*(Subscript[c, n,j]).

annH3CT1=ToExpression[Import["annH3CT1.txt"]];

AnnInfo[annH3CT1]

deltaH3CT1=ToExpression[Import["deltaH3CT1.txt"]];

ByteCount[deltaH3CT1]

Longest digits of the coefficients in the annihilator.

Table[Max[IntegerLength[CoefficientList[annH3CT1[[1]][[1]][[jj]][[1]],n]]],{jj,1,LeadingExponent[annH3CT1[[1]]][[1]]}]
Max[%]

Verify the telescopers for (Subscript[a1, n-1,j])*(Subscript[c, n,j]). Note that this step is VERY Memory-consuming, so we executed the command on an Amazon AWS cluster. To illustrate the process, we may nonrigorously substitute the parameters with specific values.

Timing[OreReduce[MapThread[(#1+(S[j]-1)**#2)&,{annH3CT1,deltaH3CT1}],annH3Smnd1]]

subs={n->10};
{annH3CT1subs,deltaH3CT1subs}=OrePolynomialSubstitute[#, subs]&/@{annH3CT1,deltaH3CT1};
Timing[OreReduce[MapThread[(#1+(S[j]-1)**#2)&,{annH3CT1subs,deltaH3CT1subs}],annH3Smnd1,OrePolynomialSubstitute->subs]]

subs={n->357};
{annH3CT1subs,deltaH3CT1subs}=OrePolynomialSubstitute[#, subs]&/@{annH3CT1,deltaH3CT1};
Timing[OreReduce[MapThread[(#1+(S[j]-1)**#2)&,{annH3CT1subs,deltaH3CT1subs}],annH3Smnd1,OrePolynomialSubstitute->subs]]

(Subscript[a2, n-1,j])*(Subscript[c, n,j])

Import the annihilator for (Subscript[a2, n-1,j])*(Subscript[c, n,j]).

annH3Smnd2=ToExpression[Import["annH3Smnd2.txt"]];
AnnInfo[annH3Smnd2]

Import the telescoper for (Subscript[a2, n-1,j])*(Subscript[c, n,j]).

annH3CT2=ToExpression[Import["annH3CT2.txt"]];

AnnInfo[annH3CT2]

deltaH3CT2=ToExpression[Import["deltaH3CT2.txt"]];

ByteCount[deltaH3CT2]

Longest digits of the coefficients in the annihilator.

Table[Max[IntegerLength[CoefficientList[annH3CT2[[1]][[1]][[jj]][[1]],n]]],{jj,1,LeadingExponent[annH3CT2[[1]]][[1]]}]
Max[%]

Verify the telescopers for (Subscript[a2, n-1,j])*(Subscript[c, n,j]). Note that this step is VERY Memory-consuming, so we executed the command on an Amazon AWS cluster. To illustrate the process, we may nonrigorously substitute the parameters with specific values.

Timing[OreReduce[MapThread[(#1+(S[j]-1)**#2)&,{annH3CT2,deltaH3CT2}],annH3Smnd2]]

subs={n->10};
{annH3CT2subs,deltaH3CT2subs}=OrePolynomialSubstitute[#, subs]&/@{annH3CT2,deltaH3CT2};
Timing[OreReduce[MapThread[(#1+(S[j]-1)**#2)&,{annH3CT2subs,deltaH3CT2subs}],annH3Smnd2,OrePolynomialSubstitute->subs]]

subs={n->357};
{annH3CT2subs,deltaH3CT2subs}=OrePolynomialSubstitute[#, subs]&/@{annH3CT2,deltaH3CT2};
Timing[OreReduce[MapThread[(#1+(S[j]-1)**#2)&,{annH3CT2subs,deltaH3CT2subs}],annH3Smnd2,OrePolynomialSubstitute->subs]]

(Subscript[a, n-1,j])*(Subscript[c, n,j])

Check that annH3CT1 and annH3CT2 differ by a scalar. So annH3CT1 also annihilates (∑_j)(Subscript[a2, n-1,j])*(Subscript[c, n,j]).

annH3CT1LeadingCoefficient=LeadingCoefficient[annH3CT1[[1]]];
annH3CT2LeadingCoefficient=LeadingCoefficient[annH3CT2[[1]]];
Scalar=Factor[annH3CT1LeadingCoefficient/annH3CT2LeadingCoefficient]

annH3CT1CoeffList=OrePolynomialListCoefficients[annH3CT1[[1]]];
annH3CT2CoeffList=OrePolynomialListCoefficients[annH3CT2[[1]]];

Expand[annH3CT1CoeffList]==Expand[Scalar*annH3CT2CoeffList]

annH3CT=annH3CT1;

Check initial values.

Check the integer roots of the leading coefficient.

Order of the recurrence for (∑_j)(Subscript[a, n-1,j])*(Subscript[c, n,j]).

LeadingExponent[annH3CT[[1]]][[1]]

Solve[(LeadingCoefficient[annH3CT[[1]]]/.{n->n-LeadingExponent[annH3CT[[1]]][[1]]})==0,n,Integers]

Simplify the quotient prodform[n]/prodform[n-1].

quot=prodform[n]/prodform[n-1]/.prod[f_,{i,a_,n}]:>(f/.i->n)*prod[f,{i,a,n-1}];
quot=FunctionExpand[quot/.prodsimp/.prod->Product]

Verify the quotient prodform[n]/prodform[n-1] also satisfies the recurrence for (∑_j)(Subscript[a, n-1,j])*(Subscript[c, n,j]).

Timing[OreReduce[annH3CT[[1]],Annihilator[quot,S[n]]]]

Check the first few (more than necessary) initial values.

Table[Sum[mata[n-1,j]*matc[n,j],{j,0,n-1}]==prodform[n]/prodform[n-1],{n,1,LeadingExponent[annH3CT[[1]]][[1]]+10}]