out ff1;
%-----------------------------------------------------------------
%programm for generation curvature equations of movig curve 27 08 97
%-----------------------------------------------------------------

%off nat;
dim:=3;

%--------------curvature matrix------------------------
%for all ii, jj let k(ii,jj) = - k(jj,ii);

procedure delta(ii,jj);begin if ii eq jj then return 1 else return 0; end;

%--------------frenet frame ------------------------
%noncom f;
operator f;
operator k;


for all ii such that ii<1 or ii>(dim-1) let k(ii)=0;

for all ii,xxx,yyy let f(ii,xxx*yyy) = f(ii,xxx)*yyy + xxx*f(ii,yyy);
for all ii,xxx,yyy let f(ii,xxx + yyy) = f(ii,xxx) + f(ii,yyy);
for all ii,xxx let f(ii,-xxx) = - f(ii,xxx);

f(1,f(2)*k(1));

for all ii let f(1,f(ii,ar)) = k(ii)*f(ii+1,ar) - k(ii-1)*f(ii-1,ar);

for ii:=1:dim do write f(1,f(ii,ar));

%--------------evolution frame ------------------------
operator x;
antisymmetric M;
for ii:=1:dim do for jj:=1:dim do write M(ii,jj);

for all xxx,yyy let XX(xxx*yyy) = XX(xxx)*yyy + xxx*XX(yyy);
for all xxx,yyy let XX(xxx + yyy) = XX(xxx) + XX(yyy);
for all ii,xxx let XX(-xxx) = - XX(xxx);

for ii:=1:dim do XX(f(ii,ar)):=for jj:=1:dim sum M(ii,jj)*f(jj,ar);


for ii:=1:dim do write ("XX(f(",ii,",ar)):=", XX(f(ii,ar)));

%--------------compatibility ------------------------
%factor f;
%for all ii factor f(ii,ar);
for ii:=1:dim do factor f(ii,ar);


XX(f(1,f(1,ar)));
F(1,XX(f(1,ar)));

for ii:=1:dim do write("row", ii,"  ",  XX(f(1,f(ii,ar))) - F(1,XX(f(ii,ar))) );

%----------------- setting of the first row of matrix M 
%                 via condition [XX, f(1,ar)] = ro*f(1,ar)

operator c;
for all ii such that ii<1 or ii>(dim) let c(ii)=0;

vf1:= ro*f(1,ar) 
+ for ii:=1:dim sum (f(1,c(ii)) + c(ii-1)*k(ii-1) - c(ii+1)*k(ii) )*f(ii,ar);

ro:= - f(1,c(1)) + c(2)*k(1);
vf1;
off nat;
for jj:=2:dim do M(1,jj):=coeffn(vf1,f(jj,ar),1);
for ii:=1:dim do for jj:=1:dim do write M(ii,jj);
for ii:=1:dim do <<roww(ii) := XX(f(1,f(ii,ar))) - F(1,XX(f(ii,ar))) 
                               - ro*f(1,f(ii,ar));

			write("roww(", ii,"):=",roww(ii));
                 >>;

for ii:=1:dim do for jj:=1:dim do write(coeffn(roww(ii),f(jj,ar),1));



shut ff1;
bye;
end;