Calculus without limits

Moving along the Symmetry of a Geometry

Here is the proof that $D'=[g(D)^+-g(D)^-,D]$ is solved by $D_t=Q_t^* D_0 Q_t$ with $e^{-t g(D)}=Q_t R_t$, the QR decomposition. Proof. We show that $D'=[g(D)^- - g(D)^+,D]$ is solved $e^{t g(D)}=Q_t R_t$. From $Q'=QB, Q^*$ by \$Q_t\$ with $Q'=QB, Q^*=- BQ^*$, we get $d/dt (Q^* D_0 Q) = -B D+D B$. Look at the differential equations $Q_t' =Q_t(-g(D)^+ + g(D)^-), R_t' = (2g(D)^+ + g(D)^0) R_t$ for Q,R with initial condition $Q(0)=R(0)=1$. The first equation gives the conjugating orthogonal transformation. Then, $d/dt (Q_t R_t) = Q_t' R_t + Q_t R_t' =Q_t (-g(D_t)^+ + g(D_t)^-) R_t +Q_t (g(D_t)^+ + g(D_t)^0) R_t =Q_t (g(D)^- - g(D_t)^+) R_t = Q_t g(D_t) R_t$. But we also have $d/dt e^{t g(D_0)} = g(D_0) Q_t R_t$. Comparing this gives $Q_t g(D_t) R_t = g(D_0) Q_t R_t$. Since $R_t$ is invertible this means $Q_t g(D_t) = g(D_0) Q_t$ or $g(D_t) = Q_t^* g(D_0) Q_t$ which follows from $D'=[g(D)^+-g(D)^-,D]$. This connection verifies the “dark matter lemma” which I mentioned 2 weeks ago (but gave a defective proof): the QR decomposition flow preserves Dirac matrices. It is not obvious at all at first that $Q_t* D_0 Q_t$ is block tri-diagonal, even if $Q_t,D_0$ are. The matrix $Q_t$ is not in the algebra generated by $D_t$ or $D_0$ which can be seen from the fact that $D_0 Q_t$ is not block tridiagonal. Also, the algebra generated by $D_t$ changes with time. Different $D_t,D_s$ do not commute in general. Also, the curve of matrices $O_t$ is not a translation on $SO(n)$, it moves on a geodesic in the isospectral set although.

Update: Here is the write-up for this note. [PDF] (and on the ArXiv) It is a remark of course but very exciting for me as I did not expect the QR story to over to this geometry set-up (I have in the last 10 years not even tried because I thought it would be too far fetched). For me, it is a fundamental insight that we can look at relatively large symmetry sets of rather finite geometries and have time evolutions that produce interesting dynamics. No initial conditions are needed besides the geometry. Discrete mathematics in general suffers from the lack of continuum symmetries. If we look at the automorphism group for example, the this is in general trivial. Most networks or manifolds do not admit any discrete symmetry at all, completely opposite to what we see in the continuum, where the diffeomorphism group is a rich and huge infinite dimensional group. This lack of symmetry in a discrete setting really hurts. But in the quantum world (meaning when looking at operator algebras related to the Dirac matrix defining the geometry), there is lots of symmetry. Given the almost too obvious fact that symmetry is so essential in all the physics we know (physics essentially is the story of symmetries), this is a huge relieve.

Here is the Mathematica code. As usual, I try to keep things as compact (simplicity!) as possible, doing things in one line if possible. Like the Runge-Kutta procedure RK which makes the numerical solution of the ODE more transparent. Mathematica has built in NDSolve routine,s but it is not clear what such implementations actually do under the hood and doing it with NDSolve would make the code even larger. The following code of course contains more than we really need and almost half of it is just formatting so that the Dirac matrix can be plotted in the right Block -Jacobi -Form. We had built the Dirac routines about 12 years ago and had then opted to implement the dimension function R in integrated form. For an octahedron for example (CompleteGraph[{2,2,2}]] we have the integrated dimension vector b=(0,6,18,26) rather than the dimension function R=(6,12,8) for the geometry (G,D,R). As mentioned at various places and also in the talk below, if we have a simplicial complex or start with a finite simple graph, then (G,D,R) are canonically given. But for a delta set, like an open set given by a level surface or co-dimension k manifold in a d-manifold, the dimension function is required as the smallest dimensional “points” are simplices of positive dimension in the Sard story (the theme of last fall, winter and spring) or the finite topology setting, where open sets need also a dimension function (the theme from 2 years ago). In the octahedron case, where G contains 26 sets and one of them is the face x={1,3,6}, then $U=\{ \1,3,6\} \}$ is an open set. As a delta set, it looks like a point, because G has just one element and there is nothing else there. But the dimension of this point is R(x)=2. The object (U,D,R) is a geometric object with cohomology (Betti vector (0,0,1)). Keeping track of dimension is also needed when we look at Cartesian products as the smallest dimensional points like (1,2) are assigned zero dimension. Doing all this in the frame work of delta sets is awkward and we opted early to do things in a computer science point of view way: what is important are the data structure which can be implemented fast and in a poetic way, not the mathematical beauty (presheave), where the set-up is poetic (a functor category) but the implementation is ugly. What counts for me is how elegantly one can implement the structure in full detail and work with it. Simplicity, Clarity and Generality usually go well together. The data structure approach is even much more general than the more abstract pre-sheaf setup, where the exterior derivative is directly tied to the face maps. [Upate August 27, 2024: since mathematica does sometimes get different signs in the diagonal of R (unlike what the theory demands, we rectify this here. Before we just had “corrected” corrected that by ignoring the last row and column].

``````Generate[A_]:=If[A=={},{},Sort[Delete[Union[Sort[Flatten[Map[Subsets,A],1]]],1]]];
Whitney[s_]:=Union[Sort[Map[Sort,Generate[FindClique[s,Infinity,All]]]]]; L=Length;
sig[x_]:=Signature[x];   nu[A_]:=If[A=={},0,L[A]-MatrixRank[A]];  omega[x_]:=(-1)^(L[x]-1);
F[G_]:=Module[{l=Map[L,G]},If[G=={},{},Table[Sum[If[l[[j]]==k,1,0],{j,L[l]}],{k,Max[l]}]]];
sig[x_,y_]:=If[SubsetQ[x,y]&&(L[x]==L[y]+1),sig[Prepend[y,Complement[x,y][[1]]]]*sig[x],0];
Dirac[G_]:=Module[{f=F[G],b,d,n=L[G]},b=Prepend[Table[Sum[f[[l]],{l,k}],{k,L[f]}],0];
d=Table[sig[G[[i]],G[[j]]],{i,n},{j,n}];{d+Transpose[d],b}];
Hodge[G_]:=Module[{Q,b,H},  {Q,b}=Dirac[G];  H=Q.Q;
Table[Table[H[[b[[k]]+i,b[[k]]+j]],{i,b[[k+1]]-b[[k]]},{j,b[[k+1]]-b[[k]]}],{k,L[b]-1}]];
Betti[s_]:=Module[{G},If[GraphQ[s],G=Whitney[s],G=s];Map[nu,Hodge[G]]];
Fvector[A_]:=Delete[BinCounts[Map[L,A]],1];    Euler[A_]:=Sum[omega[A[[k]]],{k,L[A]}];
QRDeformation[B_,t_]:=Module[{Q,R,EE},{Q,R}=QRDecomposition[MatrixExp[-t*B]];
EE=DiagonalMatrix[Table[Sign[R[[k,k]]],{k,Length[R]}]]; Q=EE.Q; R=R.EE; Q.B.Transpose[Q]];
DiracPlot[{B_,b_}]:=Module[{S1,S2,S3},n=L[B];S1=MatrixPlot[B,FrameTicks->None,Frame->False];
S2=Graphics[{Thickness[0.001],Table[Line[{{0,n-b[[k]]},{n,n-b[[k]]}}],{k,L[b]}]}];
S3=Graphics[{Thickness[0.001],Table[Line[{{b[[k]],0},{b[[k]],n}}],{k,L[b]}]}];Show[{S1,S2,S3}]];
LowerT[A_]:=Table[If[i>=j,0,A[[i,j]]],{i,Length[A]},{j,Length[A[[1]]]}];
Str[B_,b_]:=Module[{},Sum[-(-1)^k*Sum[B[[b[[k]]+l,b[[k]]+l]],{l,b[[k+1]]-b[[k]]}],{k,L[b]-1}]];
RK[f_,x_,s_]:=Module[{u,v,w,q},u=s*f[x];v=s*f[x+u/2];w=s*f[x+v/2];q=s*f[x+w];x+(u+2v+2w+q)/6];
DiracDeformation[DD_,tt_]:=Module[{dt=1./10^5,d,e,B,dd=DD,TT}, NN=Floor[tt/dt];
Do[d=LowerT[dd];e=Transpose[d];B=e-d;FF[x_]:=B.x-x.B;dd=RK[FF,1.*dd,dt],{NN}];dd];

s=RandomGraph[{8,20}]; G=Whitney[s];{B,b}=Simplify[Dirac[G]]; n=Length[B];
V[X_]:=Max[Abs[Flatten[Table[X[[k,l]],{k,n},{l,n}]]]];
B2=DiracDeformation[B,0.12]; B1=QRDeformation[B,0.12]; Print["Difference: ",V[B2-B1]];
Print["Supertracetests= ",{Str[B2.B2.B2.B2,b], Str[MatrixExp[-1.0*B1.B1],b]}]
S=GraphicsGrid[{{DiracPlot[{Chop[B],b}],DiracPlot[{Chop[B1],b}]}}]
``````