This method creates a ring map whose image is the sub-ring of $C^r$ splines expressed in terms of $C^0$ generators. If $\Delta$ is simplicial, $C^0(\Delta)$ is expressed as the Stanley Reisner ring.
i1 : V={{0,0},{0,1},{-1,-1},{1,0}}; |
i2 : F={{0,1,2},{0,2,3},{0,1,3}}; |
i3 : R=QQ[x,y]; |
i4 : phi=stanleyReisnerPresentation(V,F,1,Homogenize=>false,BaseRing=>R) QQ[X ..X ] 0 2 3 2 2 3 2 o4 = map (----------, QQ[Y ..Y ], {- X + X , X - X , - X + 3X X , X X - X + 2X X }) X X X 0 3 1 2 0 1 1 1 2 0 1 1 1 2 0 1 2 QQ[X ..X ] 0 2 o4 : RingMap ---------- <--- QQ[Y ..Y ] X X X 0 3 0 1 2 |
i5 : H=source phi; |
i6 : scan(gens H, g->print phi(g))--see the expression of each generator in the stanley reisner ring - X + X 1 2 X - X 0 1 3 2 - X + 3X X 1 1 2 2 3 2 X X - X + 2X X 0 1 1 1 2 |
The kernel of the map is the same as the kernel of the map returned by ringStructure, but the generators are expressed differently.
i7 : M=splineModule(V,F,1,Homogenize=>false,BaseRing=>R); |
i8 : phi1=ringStructure(M); QQ[e ..e , x..y] 0 2 o8 : RingMap --------------------------------------------- <--- QQ[Y ..Y ] 2 2 2 0 3 (e e , e e , e e , e - e , e - e , e - e ) 0 1 0 2 1 2 0 0 1 1 2 2 |
i9 : H=source phi; H1=source phi1; |
i11 : gens H o11 = {Y , Y , Y , Y } 0 1 2 3 o11 : List |
i12 : gens H1 o12 = {Y , Y , Y , Y } 0 1 2 3 o12 : List |
i13 : psi=map(H,H1,gens H);--phi1 has "same" source as H, but they are viewed as different rings by Macaulay2 o13 : RingMap H <--- H1 |
i14 : scan(gens H1,g->print {g,phi1(g),phi(psi(g))})--phi expresses generators of M in the Stanley Reisner ring, while phi1 expresses generators in the free module R^3 {Y , e x + e x + e x, - X + X } 0 0 1 2 1 2 {Y , e y + e y + e y, X - X } 1 0 1 2 0 1 3 2 3 3 2 {Y , e x + 3e x*y - 2e y , - X + 3X X } 2 0 1 1 1 1 2 2 2 3 2 3 2 {Y , e x y + 2e x*y - e y , X X - X + 2X X } 3 0 1 1 0 1 1 1 2 |
i15 : (ker phi)==psi(ker phi1)--the kernels are the same o15 = true |
The option Trim=>true may be used to get a minimal number of ring generators.
i16 : V={{0,0,0},{1,0,0},{0,1,0},{0,0,1},{-1,0,0},{0,-1,0},{0,0,-1}}; |
i17 : F={{0,1,2,3},{0,1,2,6},{0,2,3,4},{0,2,4,6},{0,1,3,5},{0,3,4,5},{0,4,5,6},{0,1,5,6}};--centrally triangulated octahedron |
i18 : S=QQ[x,y,z]; |
i19 : stanleyReisnerPresentation(V,F,1,Homogenize=>false,BaseRing=>S) QQ[X ..X ] 0 5 2 2 2 2 2 2 2 2 2 2 2 2 o19 = map (------------------, QQ[Y ..Y ], {X - X , X - X , X - X , X , X , X , X X , X X , X X , X X X }) (X X , X X , X X ) 0 9 0 3 1 4 2 5 2 1 3 0 1 1 2 0 2 0 1 2 2 5 1 4 0 3 QQ[X ..X ] 0 5 o19 : RingMap ------------------ <--- QQ[Y ..Y ] (X X , X X , X X ) 0 9 2 5 1 4 0 3 |
i20 : stanleyReisnerPresentation(V,F,1,Homogenize=>false,BaseRing=>S,Trim=>true) QQ[X ..X ] 0 5 2 2 2 o20 = map (------------------, QQ[Y ..Y ], {X - X , X - X , X - X , X , X , X }) (X X , X X , X X ) 0 5 0 3 1 4 2 5 2 1 3 2 5 1 4 0 3 QQ[X ..X ] 0 5 o20 : RingMap ------------------ <--- QQ[Y ..Y ] (X X , X X , X X ) 0 5 2 5 1 4 0 3 |
The geometry effects $C^1$ simplicial splines, although it doesn't effect $C^0$ simplicial splines.
i21 : V'={{0,0,0},{1,0,0},{0,1,0},{1,1,1},{-1,0,0},{0,-1,0},{0,0,-1}}; --centrally triangulated octahedron that has been perturbed |
i22 : F={{0,1,2,3},{0,1,2,6},{0,2,3,4},{0,2,4,6},{0,1,3,5},{0,3,4,5},{0,4,5,6},{0,1,5,6}}; |
i23 : stanleyReisnerPresentation(V',F,1,Homogenize=>false,BaseRing=>S,Trim=>true) QQ[X ..X ] 0 5 2 2 2 3 2 2 3 2 2 2 2 3 2 2 3 2 2 2 2 o23 = map (------------------, QQ[Y ..Y ], {X + X - X , X + X - X , X - X , X , X X - X X , X + 3X X , 2X X + X - 2X X + X X - X X , 3X X + X - 3X X + 3X X - X , X X X - X X X }) (X X , X X , X X ) 0 8 0 2 3 1 2 4 2 5 2 1 2 1 5 1 1 2 0 2 2 2 3 2 3 3 5 0 2 2 2 3 2 3 3 0 1 2 0 1 5 2 5 1 4 0 3 QQ[X ..X ] 0 5 o23 : RingMap ------------------ <--- QQ[Y ..Y ] (X X , X X , X X ) 0 8 2 5 1 4 0 3 |
If $\Delta$ is not simplicial, $C^0(\Delta)$ does not have the same nice structure.
i24 : V={{0,1},{-1,-1},{1,-1},{0,2},{-2,-2},{2,-2}}; |
i25 : F={{0,1,2},{0,1,3,4},{0,2,3,5},{1,2,4,5}}; --symmetric triangular prism-- |
i26 : S=QQ[x,y,z]; |
i27 : stanleyReisnerPresentation(V,F,1,BaseRing=>S,Trim=>true) QQ[X ..X ] 0 3 2 2 2 2 2 2 2 3 3 3 4 2 2 2 2 2 3 3 4 2 2 2 2 2 2 2 3 3 3 4 o27 = map (---------------------------------------------------------------------------------, QQ[Y ..Y ], {X , X , X , 36X X + 36X X X - 6X X + 36X X X + 30X X X - 24X X - 6X X - 10X X + 3X , 12X X - 18X X - 6X X X + 14X X + 2X X - 3X , - 612X X - 36X X X + 966X X - 36X X X + 354X X X + 24X X - 762X X - 118X X + 165X }) 2 3 2 2 2 2 2 2 2 3 3 4 0 5 0 1 2 0 3 0 1 3 1 3 0 2 3 1 2 3 0 3 1 3 2 3 3 0 3 1 3 1 2 3 1 3 2 3 3 0 3 0 1 3 1 3 0 2 3 1 2 3 0 3 1 3 2 3 3 4X X X - 4X X + 4X X X - 4X X X - 4X X + 8X X + 4X X X - 5X X - X X + X 0 1 3 1 3 0 2 3 1 2 3 0 3 1 3 1 2 3 1 3 2 3 3 QQ[X ..X ] 0 3 o27 : RingMap --------------------------------------------------------------------------------- <--- QQ[Y ..Y ] 2 3 2 2 2 2 2 2 2 3 3 4 0 5 4X X X - 4X X + 4X X X - 4X X X - 4X X + 8X X + 4X X X - 5X X - X X + X 0 1 3 1 3 0 2 3 1 2 3 0 3 1 3 1 2 3 1 3 2 3 3 |
The object stanleyReisnerPresentation is a method function with options.