%%
%% Description: Adams Novikov Spectral Sequence for $S_2$
%%
%%
%% Draws the Adams Spectral Sequence at the prime 2 through the 45 stem.
%% See pages 146 - 147 of Green book
%%
https://mathoverflow.net/questions/102316/differentials-in-the-adams-spectral-sequence-for-spheres-at-the-prime-p-2
%%
https://en.wikipedia.org/wiki/Homotopy_groups_of_spheres#Table_of_stable_homotopy_groups
%%
\documentclass[tooltips]{spectralsequence-example}
\begin{document}
\sseqset{imJ/.sseq style={purple}}
\NewSseqCommand\twoclass{O{}d()}{
\IfNoValueF{#2}{\pushstack(#2)}
\class[#1](\lastx,\lasty+1)
\structline(\lastclass1)(\lastclass)
}
\NewSseqCommand\divtwoclass{O{}d()}{
\IfNoValueF{#2}{\pushstack(#2)}
\class[#1](\lastx,\lasty-1)
\structline(\lastclass1)(\lastclass)
}
\NewSseqCommand\etaclass{O{}d()}{
\IfNoValueF{#2}{\pushstack(#2)}
\class[#1](\lastx+1,\lasty+1)
\structline(\lastclass1)(\lastclass)
}
\NewSseqCommand\divetaclass{O{}d()}{
\IfNoValueF{#2}{\pushstack(#2)}
\class[#1](\lastx-1,\lasty-1)
\structline(\lastclass1)(\lastclass)
}
\NewSseqCommand\etastruct{d()}{
\IfNoValueF{#1}{\pushstack(#1)}
\structline(\lastx-1,\lasty-1,-1)(\lastclass)
}
\NewSseqCommand\nuclass{O{}d()}{
\IfNoValueF{#2}{\pushstack(#2)}
\class[#1](\lastx+3,\lasty+1)
\structline(\lastclass1)(\lastclass)
}
\NewSseqCommand\nustruct{d()}{
\IfNoValueF{#1}{\pushstack(#1)}
\structline(\lastx-3,\lasty-1,-1)(\lastclass)
}
\NewSseqCommand\hznudiamond{d()}{
\IfNoValueF{#1}{\pushstack(#1)}
\savestack
\class(\lastx,\lasty+1)
\structline(\lastclass1)(\lastclass)
\nustruct
\restorestack
}
\NewSseqCommand\etanudiamond{d()}{
\IfNoValueF{#1}{\pushstack(#1)}
\savestack
\class(\lastx+1,\lasty+1)
\structline(\lastclass1)(\lastclass)
\nustruct
\restorestack
}
\NewSseqCommand \czero {O{} r() }{
\savestack
\class[#1](#2)
\etaclass
\restorestack
}
\NewSseqCommand\tower {O{}d()mO{}} {
\begin{scope}[#4]
\IfNoValueF{#2}{\class[#1](#2)}
\savestack
\Do{#3-1}{
\class(\lastx, \lasty+1)
\structline(\lastclass)(\lastclass1)
}
\restorestack
\end{scope}
}
\NewSseqCommand \towergroup {o r() m O{}} {
\tower(#2){#3}[#4]
\IfNoValueF{#1}{\classoptions[#1](#2)}
\etaclass\etaclass\etaclass
\nustruct\divtwoclass\nustruct\divtwoclass
\nustruct\nuclass
}
\protected\def\Psqvphant{\vphantom{P^2}}
\NewSseqGroup \Phone { mm } {
\class["#1h_1#2"](0,0)
\etaclass\etaclass
\divtwoclass\divtwoclass["\Psqvphant#1h_2#2" {below=-4pt}]
}
\NewSseqGroup \Phonegroup {G{}}{
\sseqset{class label handler = \SseqNormalizeMonomial }
\czero["#1c_0" above](-1,-2)
\Phone[imJ]{P#1}{}
\nuclass[imJ]\divtwoclass[imJ]\divtwoclass["#1d_0" left,name=d0]
\etaclass\etaclass\etaclass
\nustruct\divtwoclass\nustruct\divtwoclass\nustruct\divtwoclass["#1e_0" left,name=e0]
\nuclass\hznudiamond
\divtwoclass
\classoptions["#1g" {below=0.3em},page=0-3](\lastclass)
%\etanudiamond
% Have to go back and draw path e0 to g
\savestack
\d2(e0,-1)
\etaclass(e0)\d2(\lastclass,-1)
\divtwoclass[name=f0]\d2(\lastclass,-1)
\nuclass[name=nuf0]
\etastruct % Now we're back at g
\restorestack
\nuclass[name=nug]\hznudiamond\nuclass[name=nu2g]
}
\NewSseqGroup \Phonegroupb {G{}}{
\Phonegroup{P#1}
\divtwoclass["\Psqvphant#1j" {below left=-1pt,yshift=2pt}](f0) \d2(\lastclass,-1)
\divtwoclass(nuf0) \d2(\lastclass,-1)
\nustruct\divtwoclass["\Psqvphant#1k" {below=-1pt}] \d2(\lastclass,-1)
\nuclass\d2(\lastclass,-1)
\hznudiamond
\divtwoclass["\Psqvphant#1l" {below left=-1pt,yshift=2pt}]\d2(\lastclass,-1)
\nuclass\d2(\lastclass,-1)\hznudiamond
\divtwoclass["\Psqvphant#1m" {below left=-3pt},name=m]
\divtwoclass(nug)\structline(\lastclass)(\lastx+1,\lasty+1)
\divtwoclass(nu2g)\nustruct
\divtwoclass\structline(\lastclass)(\lastx+1,\lasty+1)
\d2(m,-1)
}
\begin{sseqdata}[
name = ASS-S_2,
Adams grading,
classes=fill,
class labels={above left=0.2em,black},
x range={0}{46},
y range={0}{23},
differentials = blue,
classes = { tooltip = { (\xcoord,\ycoord) } },
grid = go,
run off = -
]
\towergroup(0,0){\ymax-\ymin+2}
\classoptions["h_2" below](3,1)
\nuclass
\divetaclass\divetaclass["h_3" below]
\tower{4}
\Phonegroup(9,5)
\classoptions["f_0"](f0)
\Phonegroupb(17,9)
\pushstack(d0)
\tower["i" {below left,yshift=2pt}](23,7){6}[imJ]
\structline(\lastclass)(\lastx+3,\lasty+1,-1)
\structline(\lastx,\lasty+1)(\lastx+3,\lasty+2,-1)
\d2(23,7)
\d2(23,8)
\Phonegroupb(25,13){P}
\Phonegroupb(33,17){P^2}
\tower["P^2i" {below left,yshift=2pt}](39,15){6}[imJ]
\structline(\lastclass)(\lastx+3,\lasty+1,-1)
\structline(\lastx,\lasty+1)(\lastx+3,\lasty+2,-1)
\d2(39,15)
\d2(39,16)
\d4(39,12)
\d4(40,13,,1)
\Phonegroup(41,21){P^4}
\tower["P^2i" {below left,yshift=2pt}](47,19){6}[imJ]
\d2(47,19)
\d2(47,20)
\towergroup["h_4" below](15,1){8}[imJ]
\classoptions["h_3^3" below](\lastclass)
\tower["h_3^2" left](14,2){2}
\d2(15,1) % d2(h_4) = h_0h_3^2
\d3(15,2)\d3(15,3) % d2(h_0h_4) = h_0d_0
\class["c_1"](19,3)\nuclass
\czero["h_4c_0"](23,4)
\towergroup["h_5" below](31,1){16}[imJ]
\nuclass
\divetaclass\divetaclass["h_3h_5" {below=-2pt}]
\tower{4}
\class["n"{above=-0.5pt}](31,5)
\nuclass\nuclass
\divetaclass["t"]
\nuclass["c_1g"]
\class["q" {below right=-0.7pt}](32,6)
\etaclass
\class["p"](33,4)
\twoclass\divetaclass["d_1"]
\nuclass\nuclass
\divetaclass["x" below]\tower{6}
\d[bend left=15]4(38,3,,2)
\d[bend left=30]4(38,2)
\tower["h_4^2" below](30,2){4}
\etaclass
\tower["r" left](30,6){6}
\d3(\lastclass)
\d2(31,1)\d2(31,2)\d2(31,3)
\d3(31,4)\d3(31,5)\d3(31,6)\d3(31,7)\d3(31,8,-1)
\d4(31,8,1)\d4(32,9,,1)
\d4(31,9,-1,-1)\d4(31,10,-1,-1)
\d3(34,2)
\class(38,6)\d2(\lastclass,-1)
\twoclass\d2(\lastclass,-1)
\twoclass\nustruct\d2(\lastclass,-1)
\twoclass\nustruct\d4(\lastclass,-1)
\divetaclass["e_0g"]\d4(\lastclass,-1)
\czero[pin distance=3em,pin=below right:h_5c_0"](39,4)
\class["e_1" {below=-1pt}](38,4)
\d3(\lastclass,1)
\etaclass\etaclass\divtwoclass\divtwoclass["f_1" below]
\etaclass
\divtwoclass\d2(\lastclass)
\divtwoclass\d2(\lastclass,-1)
\Phone(40,6){P}{h_5}
\class["u"](39,9)\etaclass\etaclass\divtwoclass
\class["g^2"](40,8)
\class["v"](42,9)
\d2(\lastclass)
\tower["P^2r" {below=-4pt}](46,14){6}
\d3(\lastclass)
\class["Pe_0g" right](45,12)
\d4(\lastclass)
\class["w"](45,9)
\class["d_0r" right](44,10)
\d3(\lastclass)
\class["h_4^3" below](45,3)\twoclass
\tower["h_5d_0" {below right=-2pt}](45,5){3}
\etaclass\etaclass
\nuclass(45,5)\hznudiamond
\nustruct(45,7)
\tower["g_2" below](44,4){3}
\etaclass
\class["N"](46,8)
\class["gj"](46,11)
\tower(47,13){12}
\foreach \y in {13,...,18} { \d2(47,\y)}
\end{sseqdata}
\centering
\begin{sseqpage}[
page=7,
name=ASS-S_2, Adams grading,
class labels={below},
%label distance=-1pt,
below label distance=0pt,
differentials=blue,
x range={0}{40},
y range={0}{10},
xscale=0.7,
yscale=1.7,
grid=go,
right clip padding=2em
]
\structline[dashed,bend right=20](15,4)(16,7,1)
\structline[dashed,bend right=20](23,9,2)(24,11)
\structline[dashed,bend right=20](31,11)(32,15)
\structline[dashed,bend right=20](39,17,2)(40,19)
\structline[dashed](14,2)(15,5,1)
\structline[dashed](21,5)(22,8)
\structline[dashed,bend right=20](20,6)(23,9,1)
\structline[dashed](23,6)(23,9,1)
\structline[dashed,bend right=20](30,2)(33,4)
\structline[dashed,bend left=20](32,6)(35,9)
\structline[dashed](38,4)(39,7)
\structline[dashed](40,8)(40,10)
\structline[dashed](40,8)(41,10)
\structline[dashed,bend left=40](39,9)(42,12)
\structline[dashed](41,10)(42,12)
\classoptions["h_0^2i" right=1pt](23,9)
\classoptions["h_0^{10}h_5" left](31,11)
\classoptions["h_1h_5" below](32,2)
\classoptions["h_0h_2h_5" below](34,3)
\classoptions["h_2^2h_5" below](37,3)
\classoptions["h_0^2h_3h_5" {left=-0.1em}](38,4,1)
\classoptions["h_1h_3h_5" {below=-.4em}](39,3,1)
\classoptions["Ph_3" left](15,5,1)
\classoptions["P^2h_3" left](23,9,1)
%\classoptions["P^3h_3" left](31,13,1)
%\classoptions["P^4h_3" left](39,17,1)
\end{sseqpage}
%\end{document}
\newgeometry{margin = 0.1cm}
\printpage[name=ASS-S_2,page=2,xscale=0.7,yscale=0.8,keep changes]
%\printpage[name=ASS-S_2,page=2]
\printpage[name=ASS-S_2,page=3]
\printpage[name=ASS-S_2,page=4]
\begin{sseqpage}[name=ASS-S_2,page=5]
\structline[dashed,bend right=20](15,4)(16,7,1)
\structline[dashed,bend right=20](23,9,2)(24,11)
\structline[dashed,bend right=20](31,11)(32,15)
\structline[dashed,bend right=20](39,17,2)(40,19)
\structline[dashed](14,2)(15,5,1)
\structline[dashed](21,5)(22,8)
\structline[dashed,bend right=20](20,6)(23,9,1)
\structline[dashed](23,6)(23,9,1)
\structline[dashed,bend right=20](30,2)(33,4)
\structline[dashed,bend left=20](32,6)(35,9)
\structline[dashed](38,4)(39,7)
\structline[dashed](40,8)(40,10)
\structline[dashed](40,8)(41,10)
\structline[dashed,bend left=40](39,9)(42,12)
\structline[dashed](41,10)(42,12)
\classoptions["g" {below=0.3em}](20,4)
\classoptions["{d_0^2=Pg=c_0g}" {xshift=5pt, below=-2.15em}](28,8)
\classoptions["h_0^2i" right=1pt](23,9)
\classoptions["h_0^{10}h_5" left](31,11)
\classoptions["h_1h_5" below](32,2)
\classoptions["h_0h_2h_5" below](34,3)
\classoptions["h_2^2h_5" below](37,3)
\classoptions["h_0^2h_3h_5" {left=-0.1em}](38,4,1)
\classoptions["h_1h_3h_5" {below=-.4em}](39,3,1)
\classoptions["Ph_3" left](15,5,1)
\classoptions["P^2h_3" left](23,9,1)
%\classoptions["P^3h_3" left](31,13,1)
%\classoptions["P^4h_3" left](39,17,1)
\end{sseqpage}
\end{document}