Winding line on a torus 

Description: 

This worksheet illustrates how to use the atlas package to solve problems in elementary differential geometry. As an example we calculate the curvatures  

and moving frame of a winding line on a torus. This line is embedded into the Euclidian space, on the other hand the line is embedded into the torus. We  

assume that the torus is embedded into the Euclidian space and the metric tensor field of the torus is just the induced metric of the embedding. 

 

Plot_2d   Plot_2d 

In the first case we calculate the moving frame: principal normal, binormal and tangent vector fields for the embedded curve. We also calculate first and  

second curvatures of the embedded curve which are known as curvature and torsion of the curve. 

In the second case we calculate the moving frame: principal normal and tangent vector fields for the embedded curve. Besides that we calculate first  

curvature of the embedded curve. As an intermediate result we obtain the first fundamental forms induced by the corresponding embedding on the curves and the torus (metric tensor field for the torus and squared differential of the curve's arc for curves). Additionally we obtain the second fundamental form and mean curvature vector field of the embedded torus. 

   

Solution: 

Load atlas package: 

> restart:
with(atlas):
 

Just for right simplification: 

> `atlas/simp`:=proc(a) factor(simplify(a,trig)) end:
 

Description of the total space `*`(`^`(R, 3)) 

First of all we have to describe the space we are working in. The space is 3-dimensional Euclidean (flat) space. To define the space we declare domain, forms, vectors, coframe, frame, flat metric and calculate connection (it is equal to zero of course). 

Define Euclidean space as a manifold:
Domain(R^3); 

`*`(`^`(R, 3))(2.1.1)
 

Declare 1-forms for the space coframe:
Forms(e[k]=1); 

{e[k]}(2.1.2)
 

Declare vectors for the space frame:
Vectors(E[j]); 

{E[j]}(2.1.3)
 

Declare coframe on the space:
Coframe(e[1]=d(x),e[2]=d(y),e[3]=d(z)); 

[e[1] = d(x), e[2] = d(y), e[3] = d(z)](2.1.4)
 

Declare frame on the space:
Frame(E[k]); 

[E[1] = Diff(``, x), E[2] = Diff(``, y), E[3] = Diff(``, z)](2.1.5)
 

Declare flat metric on the space:
Metric(g[R]=d(x)&.d(x)+d(y)&.d(y)+d(z)&.d(z)); 

g[R] = `+`(`&.`(e[1], e[1]), `&.`(e[2], e[2]), `&.`(e[3], e[3]))(2.1.6)
 

Calculate connection of the metric:
Connection(omega); 

omega[i, j](2.1.7)
 

Description of the curve C (winding line on a torus) 

Define the curve as a manifold:
Domain(C); 

C(2.2.1)
 

Declare constants a, b and m, n:
Constants(a,b,m,n); 

{Catalan, _Z, Pi, I, a, b, n, m, `+`(`-`(I))}(2.2.2)
 

Declare 1-form for curve's coframe
Forms(u[i]=1); 

{e[k], u[i]}(2.2.3)
 

Declare vectors for curve's frame:
Vectors(U[k]); 

{U[k]}(2.2.4)
 

Declare coframe on the curve:
Coframe(u[1]=d(tau)); 

[u[1] = d(tau)](2.2.5)
 

Declare frame of the curve:
Frame(U[l]); 

[U[1] = Diff(``, tau)](2.2.6)
 

Mapping Pi: proc (C) options operator, arrow; `*`(`^`(R, 3)) end proc and its invariants (metric, moving frame, curvature, torsion) 

Declare mapping of the curve into `*`(`^`(R, 3)):
Mapping(pi,C,R^3,x=(a+b*cos(n*tau))*cos(m*tau),
                y=(a+b*cos(n*tau))*sin(m*tau),
                z=b*sin(n*tau));
 

pi(2.3.1)
 

`.`(C, `--->`, `*`(`^`(R, 3)))(2.3.1)
 

One can also calculate metric induced on the curve by the mapping: 

> Metric(g[C] = g[R] &/ pi);
 

g[C] = `*`(`+`(`*`(`^`(m, 2), `*`(`^`(a, 2))), `*`(2, `*`(`^`(m, 2), `*`(a, `*`(b, `*`(cos(`*`(n, `*`(tau)))))))), `*`(`^`(m, 2), `*`(`^`(b, 2), `*`(`^`(cos(`*`(n, `*`(tau))), 2)))), `*`(`^`(b, 2), `*...
g[C] = `*`(`+`(`*`(`^`(m, 2), `*`(`^`(a, 2))), `*`(2, `*`(`^`(m, 2), `*`(a, `*`(b, `*`(cos(`*`(n, `*`(tau)))))))), `*`(`^`(m, 2), `*`(`^`(b, 2), `*`(`^`(cos(`*`(n, `*`(tau))), 2)))), `*`(`^`(b, 2), `*...
(2.3.2)
 

It is obvious that the metric gives squared differential of the curve's arc: `*`(`^`(d(l), 2)) = `*`(`+`(`*`(`^`(m, 2), `*`(`^`(a, 2))), `*`(2, `*`(`^`(m, 2), `*`(a, `*`(b, `*`(cos(`*`(n, `*`(tau)))))))), `*`(`^`(m, 2), `*`(`^`(b, 2), `*`(`^`(cos(`*`(n, `*`(tau))), 2)))), `*`(... 

Calculate invariants of the mapping:
Inv[pi]:=Invariants(pi): 

Extract tangent normalized vector field: 

> T1:=Inv[pi][basis][0];
 

`assign`(T1, `+`(`-`(`/`(`*`(`+`(`*`(sin(`*`(m, `*`(tau))), `*`(m, `*`(b, `*`(cos(`*`(n, `*`(tau))))))), `*`(b, `*`(sin(`*`(n, `*`(tau))), `*`(n, `*`(cos(`*`(m, `*`(tau))))))), `*`(sin(`*`(m, `*`(tau)...
`assign`(T1, `+`(`-`(`/`(`*`(`+`(`*`(sin(`*`(m, `*`(tau))), `*`(m, `*`(b, `*`(cos(`*`(n, `*`(tau))))))), `*`(b, `*`(sin(`*`(n, `*`(tau))), `*`(n, `*`(cos(`*`(m, `*`(tau))))))), `*`(sin(`*`(m, `*`(tau)...
`assign`(T1, `+`(`-`(`/`(`*`(`+`(`*`(sin(`*`(m, `*`(tau))), `*`(m, `*`(b, `*`(cos(`*`(n, `*`(tau))))))), `*`(b, `*`(sin(`*`(n, `*`(tau))), `*`(n, `*`(cos(`*`(m, `*`(tau))))))), `*`(sin(`*`(m, `*`(tau)...
`assign`(T1, `+`(`-`(`/`(`*`(`+`(`*`(sin(`*`(m, `*`(tau))), `*`(m, `*`(b, `*`(cos(`*`(n, `*`(tau))))))), `*`(b, `*`(sin(`*`(n, `*`(tau))), `*`(n, `*`(cos(`*`(m, `*`(tau))))))), `*`(sin(`*`(m, `*`(tau)...
`assign`(T1, `+`(`-`(`/`(`*`(`+`(`*`(sin(`*`(m, `*`(tau))), `*`(m, `*`(b, `*`(cos(`*`(n, `*`(tau))))))), `*`(b, `*`(sin(`*`(n, `*`(tau))), `*`(n, `*`(cos(`*`(m, `*`(tau))))))), `*`(sin(`*`(m, `*`(tau)...
`assign`(T1, `+`(`-`(`/`(`*`(`+`(`*`(sin(`*`(m, `*`(tau))), `*`(m, `*`(b, `*`(cos(`*`(n, `*`(tau))))))), `*`(b, `*`(sin(`*`(n, `*`(tau))), `*`(n, `*`(cos(`*`(m, `*`(tau))))))), `*`(sin(`*`(m, `*`(tau)...
`assign`(T1, `+`(`-`(`/`(`*`(`+`(`*`(sin(`*`(m, `*`(tau))), `*`(m, `*`(b, `*`(cos(`*`(n, `*`(tau))))))), `*`(b, `*`(sin(`*`(n, `*`(tau))), `*`(n, `*`(cos(`*`(m, `*`(tau))))))), `*`(sin(`*`(m, `*`(tau)...
(2.3.3)
 

Extract principal normal normalized vector field: 

> N1:=Inv[pi][basis][1];
 

`assign`(N1, `+`(`-`(`/`(`*`(`+`(`*`(3, `*`(cos(`*`(m, `*`(tau))), `*`(`^`(m, 4), `*`(b, `*`(cos(`*`(n, `*`(tau))), `*`(`^`(a, 2))))))), `*`(3, `*`(cos(`*`(m, `*`(tau))), `*`(`^`(m, 4), `*`(`^`(b, 2),...
`assign`(N1, `+`(`-`(`/`(`*`(`+`(`*`(3, `*`(cos(`*`(m, `*`(tau))), `*`(`^`(m, 4), `*`(b, `*`(cos(`*`(n, `*`(tau))), `*`(`^`(a, 2))))))), `*`(3, `*`(cos(`*`(m, `*`(tau))), `*`(`^`(m, 4), `*`(`^`(b, 2),...
`assign`(N1, `+`(`-`(`/`(`*`(`+`(`*`(3, `*`(cos(`*`(m, `*`(tau))), `*`(`^`(m, 4), `*`(b, `*`(cos(`*`(n, `*`(tau))), `*`(`^`(a, 2))))))), `*`(3, `*`(cos(`*`(m, `*`(tau))), `*`(`^`(m, 4), `*`(`^`(b, 2),...
`assign`(N1, `+`(`-`(`/`(`*`(`+`(`*`(3, `*`(cos(`*`(m, `*`(tau))), `*`(`^`(m, 4), `*`(b, `*`(cos(`*`(n, `*`(tau))), `*`(`^`(a, 2))))))), `*`(3, `*`(cos(`*`(m, `*`(tau))), `*`(`^`(m, 4), `*`(`^`(b, 2),...
`assign`(N1, `+`(`-`(`/`(`*`(`+`(`*`(3, `*`(cos(`*`(m, `*`(tau))), `*`(`^`(m, 4), `*`(b, `*`(cos(`*`(n, `*`(tau))), `*`(`^`(a, 2))))))), `*`(3, `*`(cos(`*`(m, `*`(tau))), `*`(`^`(m, 4), `*`(`^`(b, 2),...
`assign`(N1, `+`(`-`(`/`(`*`(`+`(`*`(3, `*`(cos(`*`(m, `*`(tau))), `*`(`^`(m, 4), `*`(b, `*`(cos(`*`(n, `*`(tau))), `*`(`^`(a, 2))))))), `*`(3, `*`(cos(`*`(m, `*`(tau))), `*`(`^`(m, 4), `*`(`^`(b, 2),...
`assign`(N1, `+`(`-`(`/`(`*`(`+`(`*`(3, `*`(cos(`*`(m, `*`(tau))), `*`(`^`(m, 4), `*`(b, `*`(cos(`*`(n, `*`(tau))), `*`(`^`(a, 2))))))), `*`(3, `*`(cos(`*`(m, `*`(tau))), `*`(`^`(m, 4), `*`(`^`(b, 2),...
`assign`(N1, `+`(`-`(`/`(`*`(`+`(`*`(3, `*`(cos(`*`(m, `*`(tau))), `*`(`^`(m, 4), `*`(b, `*`(cos(`*`(n, `*`(tau))), `*`(`^`(a, 2))))))), `*`(3, `*`(cos(`*`(m, `*`(tau))), `*`(`^`(m, 4), `*`(`^`(b, 2),...
`assign`(N1, `+`(`-`(`/`(`*`(`+`(`*`(3, `*`(cos(`*`(m, `*`(tau))), `*`(`^`(m, 4), `*`(b, `*`(cos(`*`(n, `*`(tau))), `*`(`^`(a, 2))))))), `*`(3, `*`(cos(`*`(m, `*`(tau))), `*`(`^`(m, 4), `*`(`^`(b, 2),...
`assign`(N1, `+`(`-`(`/`(`*`(`+`(`*`(3, `*`(cos(`*`(m, `*`(tau))), `*`(`^`(m, 4), `*`(b, `*`(cos(`*`(n, `*`(tau))), `*`(`^`(a, 2))))))), `*`(3, `*`(cos(`*`(m, `*`(tau))), `*`(`^`(m, 4), `*`(`^`(b, 2),...
`assign`(N1, `+`(`-`(`/`(`*`(`+`(`*`(3, `*`(cos(`*`(m, `*`(tau))), `*`(`^`(m, 4), `*`(b, `*`(cos(`*`(n, `*`(tau))), `*`(`^`(a, 2))))))), `*`(3, `*`(cos(`*`(m, `*`(tau))), `*`(`^`(m, 4), `*`(`^`(b, 2),...
`assign`(N1, `+`(`-`(`/`(`*`(`+`(`*`(3, `*`(cos(`*`(m, `*`(tau))), `*`(`^`(m, 4), `*`(b, `*`(cos(`*`(n, `*`(tau))), `*`(`^`(a, 2))))))), `*`(3, `*`(cos(`*`(m, `*`(tau))), `*`(`^`(m, 4), `*`(`^`(b, 2),...
`assign`(N1, `+`(`-`(`/`(`*`(`+`(`*`(3, `*`(cos(`*`(m, `*`(tau))), `*`(`^`(m, 4), `*`(b, `*`(cos(`*`(n, `*`(tau))), `*`(`^`(a, 2))))))), `*`(3, `*`(cos(`*`(m, `*`(tau))), `*`(`^`(m, 4), `*`(`^`(b, 2),...
`assign`(N1, `+`(`-`(`/`(`*`(`+`(`*`(3, `*`(cos(`*`(m, `*`(tau))), `*`(`^`(m, 4), `*`(b, `*`(cos(`*`(n, `*`(tau))), `*`(`^`(a, 2))))))), `*`(3, `*`(cos(`*`(m, `*`(tau))), `*`(`^`(m, 4), `*`(`^`(b, 2),...
`assign`(N1, `+`(`-`(`/`(`*`(`+`(`*`(3, `*`(cos(`*`(m, `*`(tau))), `*`(`^`(m, 4), `*`(b, `*`(cos(`*`(n, `*`(tau))), `*`(`^`(a, 2))))))), `*`(3, `*`(cos(`*`(m, `*`(tau))), `*`(`^`(m, 4), `*`(`^`(b, 2),...
`assign`(N1, `+`(`-`(`/`(`*`(`+`(`*`(3, `*`(cos(`*`(m, `*`(tau))), `*`(`^`(m, 4), `*`(b, `*`(cos(`*`(n, `*`(tau))), `*`(`^`(a, 2))))))), `*`(3, `*`(cos(`*`(m, `*`(tau))), `*`(`^`(m, 4), `*`(`^`(b, 2),...
`assign`(N1, `+`(`-`(`/`(`*`(`+`(`*`(3, `*`(cos(`*`(m, `*`(tau))), `*`(`^`(m, 4), `*`(b, `*`(cos(`*`(n, `*`(tau))), `*`(`^`(a, 2))))))), `*`(3, `*`(cos(`*`(m, `*`(tau))), `*`(`^`(m, 4), `*`(`^`(b, 2),...
`assign`(N1, `+`(`-`(`/`(`*`(`+`(`*`(3, `*`(cos(`*`(m, `*`(tau))), `*`(`^`(m, 4), `*`(b, `*`(cos(`*`(n, `*`(tau))), `*`(`^`(a, 2))))))), `*`(3, `*`(cos(`*`(m, `*`(tau))), `*`(`^`(m, 4), `*`(`^`(b, 2),...
`assign`(N1, `+`(`-`(`/`(`*`(`+`(`*`(3, `*`(cos(`*`(m, `*`(tau))), `*`(`^`(m, 4), `*`(b, `*`(cos(`*`(n, `*`(tau))), `*`(`^`(a, 2))))))), `*`(3, `*`(cos(`*`(m, `*`(tau))), `*`(`^`(m, 4), `*`(`^`(b, 2),...
`assign`(N1, `+`(`-`(`/`(`*`(`+`(`*`(3, `*`(cos(`*`(m, `*`(tau))), `*`(`^`(m, 4), `*`(b, `*`(cos(`*`(n, `*`(tau))), `*`(`^`(a, 2))))))), `*`(3, `*`(cos(`*`(m, `*`(tau))), `*`(`^`(m, 4), `*`(`^`(b, 2),...
`assign`(N1, `+`(`-`(`/`(`*`(`+`(`*`(3, `*`(cos(`*`(m, `*`(tau))), `*`(`^`(m, 4), `*`(b, `*`(cos(`*`(n, `*`(tau))), `*`(`^`(a, 2))))))), `*`(3, `*`(cos(`*`(m, `*`(tau))), `*`(`^`(m, 4), `*`(`^`(b, 2),...
`assign`(N1, `+`(`-`(`/`(`*`(`+`(`*`(3, `*`(cos(`*`(m, `*`(tau))), `*`(`^`(m, 4), `*`(b, `*`(cos(`*`(n, `*`(tau))), `*`(`^`(a, 2))))))), `*`(3, `*`(cos(`*`(m, `*`(tau))), `*`(`^`(m, 4), `*`(`^`(b, 2),...
`assign`(N1, `+`(`-`(`/`(`*`(`+`(`*`(3, `*`(cos(`*`(m, `*`(tau))), `*`(`^`(m, 4), `*`(b, `*`(cos(`*`(n, `*`(tau))), `*`(`^`(a, 2))))))), `*`(3, `*`(cos(`*`(m, `*`(tau))), `*`(`^`(m, 4), `*`(`^`(b, 2),...
`assign`(N1, `+`(`-`(`/`(`*`(`+`(`*`(3, `*`(cos(`*`(m, `*`(tau))), `*`(`^`(m, 4), `*`(b, `*`(cos(`*`(n, `*`(tau))), `*`(`^`(a, 2))))))), `*`(3, `*`(cos(`*`(m, `*`(tau))), `*`(`^`(m, 4), `*`(`^`(b, 2),...
`assign`(N1, `+`(`-`(`/`(`*`(`+`(`*`(3, `*`(cos(`*`(m, `*`(tau))), `*`(`^`(m, 4), `*`(b, `*`(cos(`*`(n, `*`(tau))), `*`(`^`(a, 2))))))), `*`(3, `*`(cos(`*`(m, `*`(tau))), `*`(`^`(m, 4), `*`(`^`(b, 2),...
`assign`(N1, `+`(`-`(`/`(`*`(`+`(`*`(3, `*`(cos(`*`(m, `*`(tau))), `*`(`^`(m, 4), `*`(b, `*`(cos(`*`(n, `*`(tau))), `*`(`^`(a, 2))))))), `*`(3, `*`(cos(`*`(m, `*`(tau))), `*`(`^`(m, 4), `*`(`^`(b, 2),...
`assign`(N1, `+`(`-`(`/`(`*`(`+`(`*`(3, `*`(cos(`*`(m, `*`(tau))), `*`(`^`(m, 4), `*`(b, `*`(cos(`*`(n, `*`(tau))), `*`(`^`(a, 2))))))), `*`(3, `*`(cos(`*`(m, `*`(tau))), `*`(`^`(m, 4), `*`(`^`(b, 2),...
`assign`(N1, `+`(`-`(`/`(`*`(`+`(`*`(3, `*`(cos(`*`(m, `*`(tau))), `*`(`^`(m, 4), `*`(b, `*`(cos(`*`(n, `*`(tau))), `*`(`^`(a, 2))))))), `*`(3, `*`(cos(`*`(m, `*`(tau))), `*`(`^`(m, 4), `*`(`^`(b, 2),...
`assign`(N1, `+`(`-`(`/`(`*`(`+`(`*`(3, `*`(cos(`*`(m, `*`(tau))), `*`(`^`(m, 4), `*`(b, `*`(cos(`*`(n, `*`(tau))), `*`(`^`(a, 2))))))), `*`(3, `*`(cos(`*`(m, `*`(tau))), `*`(`^`(m, 4), `*`(`^`(b, 2),...
`assign`(N1, `+`(`-`(`/`(`*`(`+`(`*`(3, `*`(cos(`*`(m, `*`(tau))), `*`(`^`(m, 4), `*`(b, `*`(cos(`*`(n, `*`(tau))), `*`(`^`(a, 2))))))), `*`(3, `*`(cos(`*`(m, `*`(tau))), `*`(`^`(m, 4), `*`(`^`(b, 2),...
`assign`(N1, `+`(`-`(`/`(`*`(`+`(`*`(3, `*`(cos(`*`(m, `*`(tau))), `*`(`^`(m, 4), `*`(b, `*`(cos(`*`(n, `*`(tau))), `*`(`^`(a, 2))))))), `*`(3, `*`(cos(`*`(m, `*`(tau))), `*`(`^`(m, 4), `*`(`^`(b, 2),...
`assign`(N1, `+`(`-`(`/`(`*`(`+`(`*`(3, `*`(cos(`*`(m, `*`(tau))), `*`(`^`(m, 4), `*`(b, `*`(cos(`*`(n, `*`(tau))), `*`(`^`(a, 2))))))), `*`(3, `*`(cos(`*`(m, `*`(tau))), `*`(`^`(m, 4), `*`(`^`(b, 2),...
`assign`(N1, `+`(`-`(`/`(`*`(`+`(`*`(3, `*`(cos(`*`(m, `*`(tau))), `*`(`^`(m, 4), `*`(b, `*`(cos(`*`(n, `*`(tau))), `*`(`^`(a, 2))))))), `*`(3, `*`(cos(`*`(m, `*`(tau))), `*`(`^`(m, 4), `*`(`^`(b, 2),...
`assign`(N1, `+`(`-`(`/`(`*`(`+`(`*`(3, `*`(cos(`*`(m, `*`(tau))), `*`(`^`(m, 4), `*`(b, `*`(cos(`*`(n, `*`(tau))), `*`(`^`(a, 2))))))), `*`(3, `*`(cos(`*`(m, `*`(tau))), `*`(`^`(m, 4), `*`(`^`(b, 2),...
`assign`(N1, `+`(`-`(`/`(`*`(`+`(`*`(3, `*`(cos(`*`(m, `*`(tau))), `*`(`^`(m, 4), `*`(b, `*`(cos(`*`(n, `*`(tau))), `*`(`^`(a, 2))))))), `*`(3, `*`(cos(`*`(m, `*`(tau))), `*`(`^`(m, 4), `*`(`^`(b, 2),...
`assign`(N1, `+`(`-`(`/`(`*`(`+`(`*`(3, `*`(cos(`*`(m, `*`(tau))), `*`(`^`(m, 4), `*`(b, `*`(cos(`*`(n, `*`(tau))), `*`(`^`(a, 2))))))), `*`(3, `*`(cos(`*`(m, `*`(tau))), `*`(`^`(m, 4), `*`(`^`(b, 2),...
(2.3.4)
 

Extract binormal normalized vector field: 

> B1:=Inv[pi][basis][2];
 

`assign`(B1, `+`(`/`(`*`(n, `*`(b, `*`(`^`(`+`(`*`(`^`(m, 2), `*`(`^`(a, 2))), `*`(2, `*`(`^`(m, 2), `*`(a, `*`(b, `*`(cos(`*`(n, `*`(tau)))))))), `*`(`^`(m, 2), `*`(`^`(b, 2), `*`(`^`(cos(`*`(n, `*`(...
`assign`(B1, `+`(`/`(`*`(n, `*`(b, `*`(`^`(`+`(`*`(`^`(m, 2), `*`(`^`(a, 2))), `*`(2, `*`(`^`(m, 2), `*`(a, `*`(b, `*`(cos(`*`(n, `*`(tau)))))))), `*`(`^`(m, 2), `*`(`^`(b, 2), `*`(`^`(cos(`*`(n, `*`(...
`assign`(B1, `+`(`/`(`*`(n, `*`(b, `*`(`^`(`+`(`*`(`^`(m, 2), `*`(`^`(a, 2))), `*`(2, `*`(`^`(m, 2), `*`(a, `*`(b, `*`(cos(`*`(n, `*`(tau)))))))), `*`(`^`(m, 2), `*`(`^`(b, 2), `*`(`^`(cos(`*`(n, `*`(...
`assign`(B1, `+`(`/`(`*`(n, `*`(b, `*`(`^`(`+`(`*`(`^`(m, 2), `*`(`^`(a, 2))), `*`(2, `*`(`^`(m, 2), `*`(a, `*`(b, `*`(cos(`*`(n, `*`(tau)))))))), `*`(`^`(m, 2), `*`(`^`(b, 2), `*`(`^`(cos(`*`(n, `*`(...
`assign`(B1, `+`(`/`(`*`(n, `*`(b, `*`(`^`(`+`(`*`(`^`(m, 2), `*`(`^`(a, 2))), `*`(2, `*`(`^`(m, 2), `*`(a, `*`(b, `*`(cos(`*`(n, `*`(tau)))))))), `*`(`^`(m, 2), `*`(`^`(b, 2), `*`(`^`(cos(`*`(n, `*`(...
`assign`(B1, `+`(`/`(`*`(n, `*`(b, `*`(`^`(`+`(`*`(`^`(m, 2), `*`(`^`(a, 2))), `*`(2, `*`(`^`(m, 2), `*`(a, `*`(b, `*`(cos(`*`(n, `*`(tau)))))))), `*`(`^`(m, 2), `*`(`^`(b, 2), `*`(`^`(cos(`*`(n, `*`(...
`assign`(B1, `+`(`/`(`*`(n, `*`(b, `*`(`^`(`+`(`*`(`^`(m, 2), `*`(`^`(a, 2))), `*`(2, `*`(`^`(m, 2), `*`(a, `*`(b, `*`(cos(`*`(n, `*`(tau)))))))), `*`(`^`(m, 2), `*`(`^`(b, 2), `*`(`^`(cos(`*`(n, `*`(...
`assign`(B1, `+`(`/`(`*`(n, `*`(b, `*`(`^`(`+`(`*`(`^`(m, 2), `*`(`^`(a, 2))), `*`(2, `*`(`^`(m, 2), `*`(a, `*`(b, `*`(cos(`*`(n, `*`(tau)))))))), `*`(`^`(m, 2), `*`(`^`(b, 2), `*`(`^`(cos(`*`(n, `*`(...
`assign`(B1, `+`(`/`(`*`(n, `*`(b, `*`(`^`(`+`(`*`(`^`(m, 2), `*`(`^`(a, 2))), `*`(2, `*`(`^`(m, 2), `*`(a, `*`(b, `*`(cos(`*`(n, `*`(tau)))))))), `*`(`^`(m, 2), `*`(`^`(b, 2), `*`(`^`(cos(`*`(n, `*`(...
`assign`(B1, `+`(`/`(`*`(n, `*`(b, `*`(`^`(`+`(`*`(`^`(m, 2), `*`(`^`(a, 2))), `*`(2, `*`(`^`(m, 2), `*`(a, `*`(b, `*`(cos(`*`(n, `*`(tau)))))))), `*`(`^`(m, 2), `*`(`^`(b, 2), `*`(`^`(cos(`*`(n, `*`(...
`assign`(B1, `+`(`/`(`*`(n, `*`(b, `*`(`^`(`+`(`*`(`^`(m, 2), `*`(`^`(a, 2))), `*`(2, `*`(`^`(m, 2), `*`(a, `*`(b, `*`(cos(`*`(n, `*`(tau)))))))), `*`(`^`(m, 2), `*`(`^`(b, 2), `*`(`^`(cos(`*`(n, `*`(...
`assign`(B1, `+`(`/`(`*`(n, `*`(b, `*`(`^`(`+`(`*`(`^`(m, 2), `*`(`^`(a, 2))), `*`(2, `*`(`^`(m, 2), `*`(a, `*`(b, `*`(cos(`*`(n, `*`(tau)))))))), `*`(`^`(m, 2), `*`(`^`(b, 2), `*`(`^`(cos(`*`(n, `*`(...
`assign`(B1, `+`(`/`(`*`(n, `*`(b, `*`(`^`(`+`(`*`(`^`(m, 2), `*`(`^`(a, 2))), `*`(2, `*`(`^`(m, 2), `*`(a, `*`(b, `*`(cos(`*`(n, `*`(tau)))))))), `*`(`^`(m, 2), `*`(`^`(b, 2), `*`(`^`(cos(`*`(n, `*`(...
`assign`(B1, `+`(`/`(`*`(n, `*`(b, `*`(`^`(`+`(`*`(`^`(m, 2), `*`(`^`(a, 2))), `*`(2, `*`(`^`(m, 2), `*`(a, `*`(b, `*`(cos(`*`(n, `*`(tau)))))))), `*`(`^`(m, 2), `*`(`^`(b, 2), `*`(`^`(cos(`*`(n, `*`(...
`assign`(B1, `+`(`/`(`*`(n, `*`(b, `*`(`^`(`+`(`*`(`^`(m, 2), `*`(`^`(a, 2))), `*`(2, `*`(`^`(m, 2), `*`(a, `*`(b, `*`(cos(`*`(n, `*`(tau)))))))), `*`(`^`(m, 2), `*`(`^`(b, 2), `*`(`^`(cos(`*`(n, `*`(...
`assign`(B1, `+`(`/`(`*`(n, `*`(b, `*`(`^`(`+`(`*`(`^`(m, 2), `*`(`^`(a, 2))), `*`(2, `*`(`^`(m, 2), `*`(a, `*`(b, `*`(cos(`*`(n, `*`(tau)))))))), `*`(`^`(m, 2), `*`(`^`(b, 2), `*`(`^`(cos(`*`(n, `*`(...
`assign`(B1, `+`(`/`(`*`(n, `*`(b, `*`(`^`(`+`(`*`(`^`(m, 2), `*`(`^`(a, 2))), `*`(2, `*`(`^`(m, 2), `*`(a, `*`(b, `*`(cos(`*`(n, `*`(tau)))))))), `*`(`^`(m, 2), `*`(`^`(b, 2), `*`(`^`(cos(`*`(n, `*`(...
`assign`(B1, `+`(`/`(`*`(n, `*`(b, `*`(`^`(`+`(`*`(`^`(m, 2), `*`(`^`(a, 2))), `*`(2, `*`(`^`(m, 2), `*`(a, `*`(b, `*`(cos(`*`(n, `*`(tau)))))))), `*`(`^`(m, 2), `*`(`^`(b, 2), `*`(`^`(cos(`*`(n, `*`(...
`assign`(B1, `+`(`/`(`*`(n, `*`(b, `*`(`^`(`+`(`*`(`^`(m, 2), `*`(`^`(a, 2))), `*`(2, `*`(`^`(m, 2), `*`(a, `*`(b, `*`(cos(`*`(n, `*`(tau)))))))), `*`(`^`(m, 2), `*`(`^`(b, 2), `*`(`^`(cos(`*`(n, `*`(...
`assign`(B1, `+`(`/`(`*`(n, `*`(b, `*`(`^`(`+`(`*`(`^`(m, 2), `*`(`^`(a, 2))), `*`(2, `*`(`^`(m, 2), `*`(a, `*`(b, `*`(cos(`*`(n, `*`(tau)))))))), `*`(`^`(m, 2), `*`(`^`(b, 2), `*`(`^`(cos(`*`(n, `*`(...
`assign`(B1, `+`(`/`(`*`(n, `*`(b, `*`(`^`(`+`(`*`(`^`(m, 2), `*`(`^`(a, 2))), `*`(2, `*`(`^`(m, 2), `*`(a, `*`(b, `*`(cos(`*`(n, `*`(tau)))))))), `*`(`^`(m, 2), `*`(`^`(b, 2), `*`(`^`(cos(`*`(n, `*`(...
`assign`(B1, `+`(`/`(`*`(n, `*`(b, `*`(`^`(`+`(`*`(`^`(m, 2), `*`(`^`(a, 2))), `*`(2, `*`(`^`(m, 2), `*`(a, `*`(b, `*`(cos(`*`(n, `*`(tau)))))))), `*`(`^`(m, 2), `*`(`^`(b, 2), `*`(`^`(cos(`*`(n, `*`(...
`assign`(B1, `+`(`/`(`*`(n, `*`(b, `*`(`^`(`+`(`*`(`^`(m, 2), `*`(`^`(a, 2))), `*`(2, `*`(`^`(m, 2), `*`(a, `*`(b, `*`(cos(`*`(n, `*`(tau)))))))), `*`(`^`(m, 2), `*`(`^`(b, 2), `*`(`^`(cos(`*`(n, `*`(...
`assign`(B1, `+`(`/`(`*`(n, `*`(b, `*`(`^`(`+`(`*`(`^`(m, 2), `*`(`^`(a, 2))), `*`(2, `*`(`^`(m, 2), `*`(a, `*`(b, `*`(cos(`*`(n, `*`(tau)))))))), `*`(`^`(m, 2), `*`(`^`(b, 2), `*`(`^`(cos(`*`(n, `*`(...
`assign`(B1, `+`(`/`(`*`(n, `*`(b, `*`(`^`(`+`(`*`(`^`(m, 2), `*`(`^`(a, 2))), `*`(2, `*`(`^`(m, 2), `*`(a, `*`(b, `*`(cos(`*`(n, `*`(tau)))))))), `*`(`^`(m, 2), `*`(`^`(b, 2), `*`(`^`(cos(`*`(n, `*`(...
`assign`(B1, `+`(`/`(`*`(n, `*`(b, `*`(`^`(`+`(`*`(`^`(m, 2), `*`(`^`(a, 2))), `*`(2, `*`(`^`(m, 2), `*`(a, `*`(b, `*`(cos(`*`(n, `*`(tau)))))))), `*`(`^`(m, 2), `*`(`^`(b, 2), `*`(`^`(cos(`*`(n, `*`(...
`assign`(B1, `+`(`/`(`*`(n, `*`(b, `*`(`^`(`+`(`*`(`^`(m, 2), `*`(`^`(a, 2))), `*`(2, `*`(`^`(m, 2), `*`(a, `*`(b, `*`(cos(`*`(n, `*`(tau)))))))), `*`(`^`(m, 2), `*`(`^`(b, 2), `*`(`^`(cos(`*`(n, `*`(...
`assign`(B1, `+`(`/`(`*`(n, `*`(b, `*`(`^`(`+`(`*`(`^`(m, 2), `*`(`^`(a, 2))), `*`(2, `*`(`^`(m, 2), `*`(a, `*`(b, `*`(cos(`*`(n, `*`(tau)))))))), `*`(`^`(m, 2), `*`(`^`(b, 2), `*`(`^`(cos(`*`(n, `*`(...
`assign`(B1, `+`(`/`(`*`(n, `*`(b, `*`(`^`(`+`(`*`(`^`(m, 2), `*`(`^`(a, 2))), `*`(2, `*`(`^`(m, 2), `*`(a, `*`(b, `*`(cos(`*`(n, `*`(tau)))))))), `*`(`^`(m, 2), `*`(`^`(b, 2), `*`(`^`(cos(`*`(n, `*`(...
`assign`(B1, `+`(`/`(`*`(n, `*`(b, `*`(`^`(`+`(`*`(`^`(m, 2), `*`(`^`(a, 2))), `*`(2, `*`(`^`(m, 2), `*`(a, `*`(b, `*`(cos(`*`(n, `*`(tau)))))))), `*`(`^`(m, 2), `*`(`^`(b, 2), `*`(`^`(cos(`*`(n, `*`(...
`assign`(B1, `+`(`/`(`*`(n, `*`(b, `*`(`^`(`+`(`*`(`^`(m, 2), `*`(`^`(a, 2))), `*`(2, `*`(`^`(m, 2), `*`(a, `*`(b, `*`(cos(`*`(n, `*`(tau)))))))), `*`(`^`(m, 2), `*`(`^`(b, 2), `*`(`^`(cos(`*`(n, `*`(...
`assign`(B1, `+`(`/`(`*`(n, `*`(b, `*`(`^`(`+`(`*`(`^`(m, 2), `*`(`^`(a, 2))), `*`(2, `*`(`^`(m, 2), `*`(a, `*`(b, `*`(cos(`*`(n, `*`(tau)))))))), `*`(`^`(m, 2), `*`(`^`(b, 2), `*`(`^`(cos(`*`(n, `*`(...
`assign`(B1, `+`(`/`(`*`(n, `*`(b, `*`(`^`(`+`(`*`(`^`(m, 2), `*`(`^`(a, 2))), `*`(2, `*`(`^`(m, 2), `*`(a, `*`(b, `*`(cos(`*`(n, `*`(tau)))))))), `*`(`^`(m, 2), `*`(`^`(b, 2), `*`(`^`(cos(`*`(n, `*`(...
`assign`(B1, `+`(`/`(`*`(n, `*`(b, `*`(`^`(`+`(`*`(`^`(m, 2), `*`(`^`(a, 2))), `*`(2, `*`(`^`(m, 2), `*`(a, `*`(b, `*`(cos(`*`(n, `*`(tau)))))))), `*`(`^`(m, 2), `*`(`^`(b, 2), `*`(`^`(cos(`*`(n, `*`(...
`assign`(B1, `+`(`/`(`*`(n, `*`(b, `*`(`^`(`+`(`*`(`^`(m, 2), `*`(`^`(a, 2))), `*`(2, `*`(`^`(m, 2), `*`(a, `*`(b, `*`(cos(`*`(n, `*`(tau)))))))), `*`(`^`(m, 2), `*`(`^`(b, 2), `*`(`^`(cos(`*`(n, `*`(...
`assign`(B1, `+`(`/`(`*`(n, `*`(b, `*`(`^`(`+`(`*`(`^`(m, 2), `*`(`^`(a, 2))), `*`(2, `*`(`^`(m, 2), `*`(a, `*`(b, `*`(cos(`*`(n, `*`(tau)))))))), `*`(`^`(m, 2), `*`(`^`(b, 2), `*`(`^`(cos(`*`(n, `*`(...
`assign`(B1, `+`(`/`(`*`(n, `*`(b, `*`(`^`(`+`(`*`(`^`(m, 2), `*`(`^`(a, 2))), `*`(2, `*`(`^`(m, 2), `*`(a, `*`(b, `*`(cos(`*`(n, `*`(tau)))))))), `*`(`^`(m, 2), `*`(`^`(b, 2), `*`(`^`(cos(`*`(n, `*`(...
`assign`(B1, `+`(`/`(`*`(n, `*`(b, `*`(`^`(`+`(`*`(`^`(m, 2), `*`(`^`(a, 2))), `*`(2, `*`(`^`(m, 2), `*`(a, `*`(b, `*`(cos(`*`(n, `*`(tau)))))))), `*`(`^`(m, 2), `*`(`^`(b, 2), `*`(`^`(cos(`*`(n, `*`(...
`assign`(B1, `+`(`/`(`*`(n, `*`(b, `*`(`^`(`+`(`*`(`^`(m, 2), `*`(`^`(a, 2))), `*`(2, `*`(`^`(m, 2), `*`(a, `*`(b, `*`(cos(`*`(n, `*`(tau)))))))), `*`(`^`(m, 2), `*`(`^`(b, 2), `*`(`^`(cos(`*`(n, `*`(...
`assign`(B1, `+`(`/`(`*`(n, `*`(b, `*`(`^`(`+`(`*`(`^`(m, 2), `*`(`^`(a, 2))), `*`(2, `*`(`^`(m, 2), `*`(a, `*`(b, `*`(cos(`*`(n, `*`(tau)))))))), `*`(`^`(m, 2), `*`(`^`(b, 2), `*`(`^`(cos(`*`(n, `*`(...
`assign`(B1, `+`(`/`(`*`(n, `*`(b, `*`(`^`(`+`(`*`(`^`(m, 2), `*`(`^`(a, 2))), `*`(2, `*`(`^`(m, 2), `*`(a, `*`(b, `*`(cos(`*`(n, `*`(tau)))))))), `*`(`^`(m, 2), `*`(`^`(b, 2), `*`(`^`(cos(`*`(n, `*`(...
`assign`(B1, `+`(`/`(`*`(n, `*`(b, `*`(`^`(`+`(`*`(`^`(m, 2), `*`(`^`(a, 2))), `*`(2, `*`(`^`(m, 2), `*`(a, `*`(b, `*`(cos(`*`(n, `*`(tau)))))))), `*`(`^`(m, 2), `*`(`^`(b, 2), `*`(`^`(cos(`*`(n, `*`(...
`assign`(B1, `+`(`/`(`*`(n, `*`(b, `*`(`^`(`+`(`*`(`^`(m, 2), `*`(`^`(a, 2))), `*`(2, `*`(`^`(m, 2), `*`(a, `*`(b, `*`(cos(`*`(n, `*`(tau)))))))), `*`(`^`(m, 2), `*`(`^`(b, 2), `*`(`^`(cos(`*`(n, `*`(...
(2.3.5)
 

Extract curvature of the curve: 

> k1:=Inv[pi][curvatures][1];
 

`assign`(k1, `/`(`*`(`^`(`*`(`+`(`*`(`^`(m, 2), `*`(`^`(a, 2))), `*`(2, `*`(`^`(m, 2), `*`(a, `*`(b, `*`(cos(`*`(n, `*`(tau)))))))), `*`(`^`(m, 2), `*`(`^`(b, 2), `*`(`^`(cos(`*`(n, `*`(tau))), 2)))),...
`assign`(k1, `/`(`*`(`^`(`*`(`+`(`*`(`^`(m, 2), `*`(`^`(a, 2))), `*`(2, `*`(`^`(m, 2), `*`(a, `*`(b, `*`(cos(`*`(n, `*`(tau)))))))), `*`(`^`(m, 2), `*`(`^`(b, 2), `*`(`^`(cos(`*`(n, `*`(tau))), 2)))),...
`assign`(k1, `/`(`*`(`^`(`*`(`+`(`*`(`^`(m, 2), `*`(`^`(a, 2))), `*`(2, `*`(`^`(m, 2), `*`(a, `*`(b, `*`(cos(`*`(n, `*`(tau)))))))), `*`(`^`(m, 2), `*`(`^`(b, 2), `*`(`^`(cos(`*`(n, `*`(tau))), 2)))),...
`assign`(k1, `/`(`*`(`^`(`*`(`+`(`*`(`^`(m, 2), `*`(`^`(a, 2))), `*`(2, `*`(`^`(m, 2), `*`(a, `*`(b, `*`(cos(`*`(n, `*`(tau)))))))), `*`(`^`(m, 2), `*`(`^`(b, 2), `*`(`^`(cos(`*`(n, `*`(tau))), 2)))),...
`assign`(k1, `/`(`*`(`^`(`*`(`+`(`*`(`^`(m, 2), `*`(`^`(a, 2))), `*`(2, `*`(`^`(m, 2), `*`(a, `*`(b, `*`(cos(`*`(n, `*`(tau)))))))), `*`(`^`(m, 2), `*`(`^`(b, 2), `*`(`^`(cos(`*`(n, `*`(tau))), 2)))),...
`assign`(k1, `/`(`*`(`^`(`*`(`+`(`*`(`^`(m, 2), `*`(`^`(a, 2))), `*`(2, `*`(`^`(m, 2), `*`(a, `*`(b, `*`(cos(`*`(n, `*`(tau)))))))), `*`(`^`(m, 2), `*`(`^`(b, 2), `*`(`^`(cos(`*`(n, `*`(tau))), 2)))),...
`assign`(k1, `/`(`*`(`^`(`*`(`+`(`*`(`^`(m, 2), `*`(`^`(a, 2))), `*`(2, `*`(`^`(m, 2), `*`(a, `*`(b, `*`(cos(`*`(n, `*`(tau)))))))), `*`(`^`(m, 2), `*`(`^`(b, 2), `*`(`^`(cos(`*`(n, `*`(tau))), 2)))),...
`assign`(k1, `/`(`*`(`^`(`*`(`+`(`*`(`^`(m, 2), `*`(`^`(a, 2))), `*`(2, `*`(`^`(m, 2), `*`(a, `*`(b, `*`(cos(`*`(n, `*`(tau)))))))), `*`(`^`(m, 2), `*`(`^`(b, 2), `*`(`^`(cos(`*`(n, `*`(tau))), 2)))),...
(2.3.6)
 

Extract torsion of the curve: 

> chi1:=Inv[pi][curvatures][2];
 

`assign`(chi1, `/`(`*`(m, `*`(n, `*`(b, `*`(`+`(`*`(`^`(m, 2), `*`(`^`(cos(`*`(n, `*`(tau))), 3), `*`(`^`(b, 2), `*`(`^`(n, 2))))), `-`(`*`(`^`(m, 4), `*`(`^`(b, 2), `*`(`^`(cos(`*`(n, `*`(tau))), 3))...
`assign`(chi1, `/`(`*`(m, `*`(n, `*`(b, `*`(`+`(`*`(`^`(m, 2), `*`(`^`(cos(`*`(n, `*`(tau))), 3), `*`(`^`(b, 2), `*`(`^`(n, 2))))), `-`(`*`(`^`(m, 4), `*`(`^`(b, 2), `*`(`^`(cos(`*`(n, `*`(tau))), 3))...
`assign`(chi1, `/`(`*`(m, `*`(n, `*`(b, `*`(`+`(`*`(`^`(m, 2), `*`(`^`(cos(`*`(n, `*`(tau))), 3), `*`(`^`(b, 2), `*`(`^`(n, 2))))), `-`(`*`(`^`(m, 4), `*`(`^`(b, 2), `*`(`^`(cos(`*`(n, `*`(tau))), 3))...
`assign`(chi1, `/`(`*`(m, `*`(n, `*`(b, `*`(`+`(`*`(`^`(m, 2), `*`(`^`(cos(`*`(n, `*`(tau))), 3), `*`(`^`(b, 2), `*`(`^`(n, 2))))), `-`(`*`(`^`(m, 4), `*`(`^`(b, 2), `*`(`^`(cos(`*`(n, `*`(tau))), 3))...
`assign`(chi1, `/`(`*`(m, `*`(n, `*`(b, `*`(`+`(`*`(`^`(m, 2), `*`(`^`(cos(`*`(n, `*`(tau))), 3), `*`(`^`(b, 2), `*`(`^`(n, 2))))), `-`(`*`(`^`(m, 4), `*`(`^`(b, 2), `*`(`^`(cos(`*`(n, `*`(tau))), 3))...
`assign`(chi1, `/`(`*`(m, `*`(n, `*`(b, `*`(`+`(`*`(`^`(m, 2), `*`(`^`(cos(`*`(n, `*`(tau))), 3), `*`(`^`(b, 2), `*`(`^`(n, 2))))), `-`(`*`(`^`(m, 4), `*`(`^`(b, 2), `*`(`^`(cos(`*`(n, `*`(tau))), 3))...
`assign`(chi1, `/`(`*`(m, `*`(n, `*`(b, `*`(`+`(`*`(`^`(m, 2), `*`(`^`(cos(`*`(n, `*`(tau))), 3), `*`(`^`(b, 2), `*`(`^`(n, 2))))), `-`(`*`(`^`(m, 4), `*`(`^`(b, 2), `*`(`^`(cos(`*`(n, `*`(tau))), 3))...
`assign`(chi1, `/`(`*`(m, `*`(n, `*`(b, `*`(`+`(`*`(`^`(m, 2), `*`(`^`(cos(`*`(n, `*`(tau))), 3), `*`(`^`(b, 2), `*`(`^`(n, 2))))), `-`(`*`(`^`(m, 4), `*`(`^`(b, 2), `*`(`^`(cos(`*`(n, `*`(tau))), 3))...
`assign`(chi1, `/`(`*`(m, `*`(n, `*`(b, `*`(`+`(`*`(`^`(m, 2), `*`(`^`(cos(`*`(n, `*`(tau))), 3), `*`(`^`(b, 2), `*`(`^`(n, 2))))), `-`(`*`(`^`(m, 4), `*`(`^`(b, 2), `*`(`^`(cos(`*`(n, `*`(tau))), 3))...
`assign`(chi1, `/`(`*`(m, `*`(n, `*`(b, `*`(`+`(`*`(`^`(m, 2), `*`(`^`(cos(`*`(n, `*`(tau))), 3), `*`(`^`(b, 2), `*`(`^`(n, 2))))), `-`(`*`(`^`(m, 4), `*`(`^`(b, 2), `*`(`^`(cos(`*`(n, `*`(tau))), 3))...
(2.3.7)
 

Let us check the "orthonormality" of the moving frame vectors. To do this we use metric tensor field g[R]:   

> 'g[R](T1,T1)'=simplify(g[R](T1,T1));
'g[R](B1,B1)'=simplify(g[R](B1,B1));
'g[R](N1,N1)'=simplify(g[R](N1,N1));
 

g[R](T1, T1) = 1(2.3.8)
 

g[R](B1, B1) = 1(2.3.8)
 

g[R](N1, N1) = 1(2.3.8)
 

> 'g[R](T1,N1)'=simplify(g[R](T1,N1));
'g[R](T1,B1)'=simplify(g[R](T1,B1));
'g[R](B1,N1)'=simplify(g[R](B1,N1));
 

g[R](T1, N1) = 0(2.3.9)
 

g[R](T1, B1) = 0(2.3.9)
 

g[R](B1, N1) = 0(2.3.9)
 

Description of the torus `*`(`^`(T, 2))  

Define the torus  as a manifold:
Domain(T^2); 

`*`(`^`(T, 2))(2.4.1)
 

Declare 1-form for the torus coframe
Forms(phi[i]=1); 

{phi[i], e[k], u[i]}(2.4.2)
 

Declare vectors for the torus frame:
Vectors(Phi[j]); 

{Phi[j]}(2.4.3)
 

Declare coframe on the torus:
Coframe(phi[1]=d(alpha),phi[2]=d(beta)); 

[phi[1] = d(alpha), phi[2] = d(beta)](2.4.4)
 

Declare frame of the torus:
Frame(Phi[l]); 

[Phi[1] = Diff(``, alpha), Phi[2] = Diff(``, beta)](2.4.5)
 

Embedding  f: proc (T) options operator, arrow; `*`(`^`(R, 3)) end proc and induced metric calculation  

Declare mapping of the torus into `*`(`^`(R, 3)):
Mapping(f,T^2,R^3,x=(a+b*cos(beta))*cos(alpha),
                 y=(a+b*cos(beta))*sin(alpha),
                 z=b*sin(beta));
 

f(2.5.1)
 

`.`(`*`(`^`(T, 2)), `--->`, `*`(`^`(R, 3)))(2.5.1)
 

Calculate metric (induced by the embedding) on the torus using `&/` operator:
Metric(g[T] = g[R] &/ f); 

g[T] = `+`(`*`(`^`(b, 2), `*`(`&.`(phi[2], phi[2]))), `*`(`^`(`+`(a, `*`(b, `*`(cos(beta)))), 2), `*`(`&.`(phi[1], phi[1]))))(2.5.2)
 

Calculate connection on the torus
Connection(Gamma); 

Gamma[i, j](2.5.3)
 

Let us see the result:
eval(Gamma); 

TABLE([(2, 2) = 0, (2, 1) = `/`(`*`(`+`(a, `*`(b, `*`(cos(beta)))), `*`(sin(beta), `*`(phi[1]))), `*`(b)), (1, 2) = `+`(`-`(`/`(`*`(b, `*`(sin(beta), `*`(phi[1]))), `*`(`+`(a, `*`(b, `*`(cos(beta)))))...
TABLE([(2, 2) = 0, (2, 1) = `/`(`*`(`+`(a, `*`(b, `*`(cos(beta)))), `*`(sin(beta), `*`(phi[1]))), `*`(b)), (1, 2) = `+`(`-`(`/`(`*`(b, `*`(sin(beta), `*`(phi[1]))), `*`(`+`(a, `*`(b, `*`(cos(beta)))))...
(2.5.4)
 

We can calculate the corresponding invariants of the mapping. The invarians are: second fundamental form and field of mean curvature vectors. We do not need these quantities anyway, but it's hard to keep from the calculation:  

> Inv[f]:=Invariants(f);
 

`assign`(Inv[f], TABLE([secondForm = TABLE(zero, [(2, 2) = [`+`(`-`(`*`(cos(alpha), `*`(b, `*`(cos(beta), `*`(E[1]))))), `-`(`*`(sin(alpha), `*`(b, `*`(cos(beta), `*`(E[2]))))), `-`(`*`(b, `*`(sin(bet...
`assign`(Inv[f], TABLE([secondForm = TABLE(zero, [(2, 2) = [`+`(`-`(`*`(cos(alpha), `*`(b, `*`(cos(beta), `*`(E[1]))))), `-`(`*`(sin(alpha), `*`(b, `*`(cos(beta), `*`(E[2]))))), `-`(`*`(b, `*`(sin(bet...
`assign`(Inv[f], TABLE([secondForm = TABLE(zero, [(2, 2) = [`+`(`-`(`*`(cos(alpha), `*`(b, `*`(cos(beta), `*`(E[1]))))), `-`(`*`(sin(alpha), `*`(b, `*`(cos(beta), `*`(E[2]))))), `-`(`*`(b, `*`(sin(bet...
`assign`(Inv[f], TABLE([secondForm = TABLE(zero, [(2, 2) = [`+`(`-`(`*`(cos(alpha), `*`(b, `*`(cos(beta), `*`(E[1]))))), `-`(`*`(sin(alpha), `*`(b, `*`(cos(beta), `*`(E[2]))))), `-`(`*`(b, `*`(sin(bet...
`assign`(Inv[f], TABLE([secondForm = TABLE(zero, [(2, 2) = [`+`(`-`(`*`(cos(alpha), `*`(b, `*`(cos(beta), `*`(E[1]))))), `-`(`*`(sin(alpha), `*`(b, `*`(cos(beta), `*`(E[2]))))), `-`(`*`(b, `*`(sin(bet...
`assign`(Inv[f], TABLE([secondForm = TABLE(zero, [(2, 2) = [`+`(`-`(`*`(cos(alpha), `*`(b, `*`(cos(beta), `*`(E[1]))))), `-`(`*`(sin(alpha), `*`(b, `*`(cos(beta), `*`(E[2]))))), `-`(`*`(b, `*`(sin(bet...
`assign`(Inv[f], TABLE([secondForm = TABLE(zero, [(2, 2) = [`+`(`-`(`*`(cos(alpha), `*`(b, `*`(cos(beta), `*`(E[1]))))), `-`(`*`(sin(alpha), `*`(b, `*`(cos(beta), `*`(E[2]))))), `-`(`*`(b, `*`(sin(bet...
(2.5.5)
 

Embedding psi: proc (C) options operator, arrow; `*`(`^`(T, 2)) end proc and its invariants (metric, moving frame, curvature) 

Declare mapping of the curve into `*`(`^`(T, 2)):
Mapping(psi,C,T^2,
            alpha=m*tau,
            beta=n*tau);
 

psi(2.6.1)
 

`.`(C, `--->`, `*`(`^`(T, 2)))(2.6.1)
 

Calculate metric (induced by the embedding) on the curve using `&/` operator:
g[T] &/ psi; 

`*`(`+`(`*`(`^`(m, 2), `*`(`^`(a, 2))), `*`(2, `*`(`^`(m, 2), `*`(a, `*`(b, `*`(cos(`*`(n, `*`(tau)))))))), `*`(`^`(m, 2), `*`(`^`(b, 2), `*`(`^`(cos(`*`(n, `*`(tau))), 2)))), `*`(`^`(b, 2), `*`(`^`(n...(2.6.2)
 

Calculate invariants of the mapping:
Inv[psi]:=Invariants(psi); 

`assign`(Inv[psi], TABLE([curvatures = TABLE(zero, [1 = [`/`(`*`(`+`(`*`(`^`(m, 2), `*`(`^`(b, 2), `*`(`^`(cos(`*`(n, `*`(tau))), 2)))), `*`(2, `*`(`^`(m, 2), `*`(a, `*`(b, `*`(cos(`*`(n, `*`(tau)))))...
`assign`(Inv[psi], TABLE([curvatures = TABLE(zero, [1 = [`/`(`*`(`+`(`*`(`^`(m, 2), `*`(`^`(b, 2), `*`(`^`(cos(`*`(n, `*`(tau))), 2)))), `*`(2, `*`(`^`(m, 2), `*`(a, `*`(b, `*`(cos(`*`(n, `*`(tau)))))...
`assign`(Inv[psi], TABLE([curvatures = TABLE(zero, [1 = [`/`(`*`(`+`(`*`(`^`(m, 2), `*`(`^`(b, 2), `*`(`^`(cos(`*`(n, `*`(tau))), 2)))), `*`(2, `*`(`^`(m, 2), `*`(a, `*`(b, `*`(cos(`*`(n, `*`(tau)))))...
`assign`(Inv[psi], TABLE([curvatures = TABLE(zero, [1 = [`/`(`*`(`+`(`*`(`^`(m, 2), `*`(`^`(b, 2), `*`(`^`(cos(`*`(n, `*`(tau))), 2)))), `*`(2, `*`(`^`(m, 2), `*`(a, `*`(b, `*`(cos(`*`(n, `*`(tau)))))...
`assign`(Inv[psi], TABLE([curvatures = TABLE(zero, [1 = [`/`(`*`(`+`(`*`(`^`(m, 2), `*`(`^`(b, 2), `*`(`^`(cos(`*`(n, `*`(tau))), 2)))), `*`(2, `*`(`^`(m, 2), `*`(a, `*`(b, `*`(cos(`*`(n, `*`(tau)))))...
`assign`(Inv[psi], TABLE([curvatures = TABLE(zero, [1 = [`/`(`*`(`+`(`*`(`^`(m, 2), `*`(`^`(b, 2), `*`(`^`(cos(`*`(n, `*`(tau))), 2)))), `*`(2, `*`(`^`(m, 2), `*`(a, `*`(b, `*`(cos(`*`(n, `*`(tau)))))...
`assign`(Inv[psi], TABLE([curvatures = TABLE(zero, [1 = [`/`(`*`(`+`(`*`(`^`(m, 2), `*`(`^`(b, 2), `*`(`^`(cos(`*`(n, `*`(tau))), 2)))), `*`(2, `*`(`^`(m, 2), `*`(a, `*`(b, `*`(cos(`*`(n, `*`(tau)))))...
`assign`(Inv[psi], TABLE([curvatures = TABLE(zero, [1 = [`/`(`*`(`+`(`*`(`^`(m, 2), `*`(`^`(b, 2), `*`(`^`(cos(`*`(n, `*`(tau))), 2)))), `*`(2, `*`(`^`(m, 2), `*`(a, `*`(b, `*`(cos(`*`(n, `*`(tau)))))...
`assign`(Inv[psi], TABLE([curvatures = TABLE(zero, [1 = [`/`(`*`(`+`(`*`(`^`(m, 2), `*`(`^`(b, 2), `*`(`^`(cos(`*`(n, `*`(tau))), 2)))), `*`(2, `*`(`^`(m, 2), `*`(a, `*`(b, `*`(cos(`*`(n, `*`(tau)))))...
`assign`(Inv[psi], TABLE([curvatures = TABLE(zero, [1 = [`/`(`*`(`+`(`*`(`^`(m, 2), `*`(`^`(b, 2), `*`(`^`(cos(`*`(n, `*`(tau))), 2)))), `*`(2, `*`(`^`(m, 2), `*`(a, `*`(b, `*`(cos(`*`(n, `*`(tau)))))...
(2.6.3)
 

Extract tangent normalized vector field: 

> T2:=Inv[psi][basis][0];
 

`assign`(T2, `+`(`/`(`*`(m, `*`(Phi[1])), `*`(`^`(`+`(`*`(`^`(m, 2), `*`(`^`(a, 2))), `*`(2, `*`(`^`(m, 2), `*`(a, `*`(b, `*`(cos(`*`(n, `*`(tau)))))))), `*`(`^`(m, 2), `*`(`^`(b, 2), `*`(`^`(cos(`*`(...
`assign`(T2, `+`(`/`(`*`(m, `*`(Phi[1])), `*`(`^`(`+`(`*`(`^`(m, 2), `*`(`^`(a, 2))), `*`(2, `*`(`^`(m, 2), `*`(a, `*`(b, `*`(cos(`*`(n, `*`(tau)))))))), `*`(`^`(m, 2), `*`(`^`(b, 2), `*`(`^`(cos(`*`(...
(2.6.4)
 

Extract principal normal normalized vector field: 

> N2:=Inv[psi][basis][1];
 

`assign`(N2, `+`(`-`(`/`(`*`(n, `*`(b, `*`(Phi[1]))), `*`(`+`(a, `*`(b, `*`(cos(`*`(n, `*`(tau)))))), `*`(`^`(`+`(`*`(`^`(m, 2), `*`(`^`(a, 2))), `*`(2, `*`(`^`(m, 2), `*`(a, `*`(b, `*`(cos(`*`(n, `*`...
`assign`(N2, `+`(`-`(`/`(`*`(n, `*`(b, `*`(Phi[1]))), `*`(`+`(a, `*`(b, `*`(cos(`*`(n, `*`(tau)))))), `*`(`^`(`+`(`*`(`^`(m, 2), `*`(`^`(a, 2))), `*`(2, `*`(`^`(m, 2), `*`(a, `*`(b, `*`(cos(`*`(n, `*`...
`assign`(N2, `+`(`-`(`/`(`*`(n, `*`(b, `*`(Phi[1]))), `*`(`+`(a, `*`(b, `*`(cos(`*`(n, `*`(tau)))))), `*`(`^`(`+`(`*`(`^`(m, 2), `*`(`^`(a, 2))), `*`(2, `*`(`^`(m, 2), `*`(a, `*`(b, `*`(cos(`*`(n, `*`...
`assign`(N2, `+`(`-`(`/`(`*`(n, `*`(b, `*`(Phi[1]))), `*`(`+`(a, `*`(b, `*`(cos(`*`(n, `*`(tau)))))), `*`(`^`(`+`(`*`(`^`(m, 2), `*`(`^`(a, 2))), `*`(2, `*`(`^`(m, 2), `*`(a, `*`(b, `*`(cos(`*`(n, `*`...
(2.6.5)
 

Extract curvature of the curve: 

> k2:=Inv[psi][curvatures][1];
 

`assign`(k2, `/`(`*`(`+`(`*`(`^`(m, 2), `*`(`^`(b, 2), `*`(`^`(cos(`*`(n, `*`(tau))), 2)))), `*`(2, `*`(`^`(m, 2), `*`(a, `*`(b, `*`(cos(`*`(n, `*`(tau)))))))), `*`(2, `*`(`^`(b, 2), `*`(`^`(n, 2)))),...
`assign`(k2, `/`(`*`(`+`(`*`(`^`(m, 2), `*`(`^`(b, 2), `*`(`^`(cos(`*`(n, `*`(tau))), 2)))), `*`(2, `*`(`^`(m, 2), `*`(a, `*`(b, `*`(cos(`*`(n, `*`(tau)))))))), `*`(2, `*`(`^`(b, 2), `*`(`^`(n, 2)))),...
(2.6.6)
 

Let us check the "orthonormality" of the moving frame vectors. To do this we use metric tensor field g[T] , but in this case the metric is not flat and its components (in any coframe) are verify from one torus point to another:    

> g[T]=ToBasis(g[T]);
 

g[T] = `+`(`*`(`^`(b, 2), `*`(`&.`(phi[2], phi[2]))), `*`(`^`(`+`(a, `*`(b, `*`(cos(beta)))), 2), `*`(`&.`(phi[1], phi[1]))))(2.6.7)
 

Thus we have to make calculations on the curve C: 

> sub:={alpha=m*tau,beta=n*tau};
 

`assign`(sub, {alpha = `*`(m, `*`(tau)), beta = `*`(n, `*`(tau))})(2.6.8)
 

> 'g[T](T2,T2)'=simplify(subs(sub,g[T](T2,T2)));
'g[T](N2,N2)'=simplify(subs(sub,g[T](N2,N2)));
 

g[T](T2, T2) = 1(2.6.9)
 

g[T](N2, N2) = 1(2.6.9)
 

> 'g[T](T2,N2)'=simplify(subs(sub,g[T](T2,N2)));
 

g[T](T2, N2) = 0(2.6.10)
 

>