T}{\partial\theta}(\theta_{c_{2}})\\\
&+\sin(\theta_{c_{2}})\lim_{\theta\rightarrow\theta_{c_{2}}^{-}}\frac{\partial
K}{\partial\theta}(\theta,\xi)-K(\theta_{l_{2}},\xi)\sin(\theta_{l_{1}})\frac{\partial
T}{\partial\theta}(\theta_{l_{2}})\\\
&+T(\theta_{l_{2}})\sin(\theta_{l_{2}})\lim_{\theta\rightarrow\theta_{l_{2}}^{+}}\frac{\partial
K}{\partial\theta}(\theta,\xi)\end{aligned}$ (D.63)
$\displaystyle\begin{aligned}
T(\xi)&=\int_{\theta_{c_{2}}}^{\pi}d\theta\>\sin\theta\>K(\theta,\xi)h_{2}(\theta)-K(\theta_{c_{2}},\xi)\sin(\theta_{c_{2}})\frac{\partial
T}{\partial\theta}(\theta_{c_{2}})\\\
&-\sin(\theta_{c_{2}})\lim_{\theta\rightarrow\theta_{c_{2}}^{+}}\frac{\partial
K}{\partial\theta}(\theta,\xi).\end{aligned}$ (D.64)

The associated BIEs are:

$\displaystyle\begin{aligned}
T(0)&=\int_{0}^{\theta_{c_{1}}}d\theta\>\sin\theta\>K(\theta,0)h_{2}(\theta)+K(\theta_{c_{1}},0)\sin(\theta_{c_{1}})\frac{\partial
T}{\partial\theta}(\theta_{c_{1}})\\\
&+\sin(\theta_{c_{1}})\lim_{\xi\rightarrow
0^{+}}\lim_{\theta\rightarrow\theta_{c_{1}}^{-}}\frac{\partial
K}{\partial\theta}(\theta,\xi)\end{aligned}$ (D.65)
$\displaystyle\begin{aligned}
-1&=\int_{0}^{\theta_{c_{1}}}d\theta\>\sin\theta\>K(\theta,\theta_{c_{1}})h_{2}(\theta)+\lim_{\xi\rightarrow\theta_{c_{1}}^{-}}K(\theta_{c_{1}},\xi)\sin(\theta_{c_{1}})\frac{\partial
T}{\partial\theta}(\theta_{c_{1}})\\\
&+\sin(\theta_{c_{1}})\lim_{\xi\rightarrow\theta_{c_{1}}^{-}}\lim_{\theta\rightarrow\theta_{c_{1}}^{-}}\frac{\partial
K}{\partial\theta}(\theta,\xi)\end{aligned}$ (D.66)
$\displaystyle\begin{aligned}
-1&=\int_{\theta_{c_{1}}}^{\theta_{l_{1}}}d\theta\>\sin\theta\>K(\theta,\theta_{c_{1}})h_{1}(\theta)+K(\theta_{l_{1}},\theta_{c_{1}})\sin(\theta_{l_{1}})\frac{\partial
T}{\partial\theta}(\theta_{l_{1}})\\\
&-T(\theta_{l_{1}})\sin(\theta_{l_{1}})\lim_{\xi\rightarrow\theta_{c_{1}}^{+}}\lim_{\theta\rightarrow\theta_{l_{1}}^{-}}\frac{\partial
K}{\partial\theta}(\theta,\xi)-\lim_{\xi\rightarrow\theta_{c_{1}}^{+}}K(\theta_{c_{1}},\xi)\sin(\theta_{c_{1}})\frac{\partial
T}{\partial\theta}(\theta_{c_{1}})\\\
&-\sin(\theta_{c_{1}})\lim_{\xi\rightarrow\theta_{c_{1}}^{+}}\lim_{\theta\rightarrow\theta_{c_{1}}^{+}}\frac{\partial
K}{\partial\theta}(\theta,\xi)\end{aligned}$ (D.67)
$\displaystyle\begin{aligned}
T(\theta_{l_{1}})&=\int_{\theta_{c_{1}}}^{\theta_{l_{1}}}d\theta\>\sin\theta\>K(\theta,\theta_{l_{1}})h_{1}(\theta)+\lim_{\xi\rightarrow\theta_{l_{1}}^{-}}K(\theta_{l_{1}},\xi)\sin(\theta_{l_{1}})\frac{\partial
T}{\partial\theta}(\theta_{l_{1}})\\\
&-T(\theta_{l_{1}})\sin(\theta_{l_{1}})\lim_{\xi\rightarrow\theta_{l_{1}}^{-}}\lim_{\theta\rightarrow\theta_{l_{1}}^{-}}\frac{\partial
K}{\partial\theta}(\theta,\xi)-K(\theta_{c_{1}},\theta_{l_{1}})\sin(\theta_{c_{1}})\frac{\partial
T}{\partial\theta}(\theta_{c_{1}})\\\
&-\sin(\theta_{c_{1}})\lim_{\xi\rightarrow\theta_{l_{1}}^{-}}\lim_{\theta\rightarrow\theta_{c_{1}}^{+}}\frac{\partial
K}{\partial\theta}(\theta,\xi)\end{aligned}$ (D.68)
$\displaystyle\begin{aligned}
T(\theta_{l_{1}})&=\int_{\theta_{l_{1}}}^{\theta_{l_{2}}}d\theta\>\sin\theta\>K(\theta,\theta_{l_{1}})h_{3}(\theta)+K(\theta_{l_{2}},\theta_{l_{1}})\sin(\theta_{l_{2}})\frac{\partial
T}{\partial\theta}(\theta_{l_{2}})\\\
&-T(\theta_{l_{2}})\sin(\theta_{l_{2}})\lim_{\xi\rightarrow\theta_{l_{1}}^{+}}\lim_{\theta\rightarrow\theta_{l_{2}}^{-}}\frac{\partial
K}{\partial\theta}(\theta,\xi)-\lim_{\xi\rightarrow\theta_{l_{1}}^{+}}K(\theta_{l_{1}},\xi)\sin(\theta_{l_{1}})\frac{\partial
T}{\partial\theta}(\theta_{l_{1}})\\\
&+T(\theta_{l_{1}})\sin(\theta_{l_{1}})\lim_{\xi\rightarrow\theta_{l_{1}}^{+}}\lim_{\theta\rightarrow\theta_{l_{1}}^{+}}\frac{\partial
K}{\partial\theta}(\theta,\xi)\end{aligned}$ (D.69)
$\displaystyle\begin{aligned}
T(\theta_{l_{2}})&=\int_{\theta_{l_{1}}}^{\theta_{l_{2}}}d\theta\>\sin\theta\>K(\theta,\theta_{l_{2}})h_{3}(\theta)+\lim_{\xi\rightarrow\theta_{l_{2}}^{-}}K(\theta_{l_{2}},\xi)\sin(\theta_{l_{2}})\frac{\partial
T}{\partial\theta}(\theta_{l_{2}})\\\
&-T(\theta_{l_{2}})\sin(\theta_{l_{2}})\lim_{\xi\rightarrow\theta_{l_{2}}^{-}}\lim_{\theta\rightarrow\theta_{l_{2}}^{-}}\frac{\partial
K}{\partial\theta}(\theta,\xi)-K(\theta_{l_{1}},\theta_{l_{2}})\sin(\theta_{l_{1}})\frac{\partial
T}{\partial\theta}(\theta_{l_{1}})\\\
&+T(\theta_{l_{1}})\sin(\theta_{l_{1}})\lim_{\xi\rightarrow\theta_{l_{2}}^{-}}\lim_{\theta\rightarrow\theta_{l_{1}}^{+}}\frac{\partial
K}{\partial\theta}(\theta,\xi)\end{aligned}$ (D.70)
$\displaystyle\begin{aligned}
T(\theta_{l_{2}})&=\int_{\theta_{l_{2}}}^{\theta_{c_{2}}}d\theta\>\sin\theta\>K(\theta,\theta_{l_{2}})h_{1}(\theta)+K(\theta_{c_{2}},\theta_{l_{2}})\sin(\theta_{c_{2}})\frac{\partial
T}{\partial\theta}(\theta_{c_{2}})\\\
&+\sin(\theta_{c_{2}})\lim_{\xi\rightarrow\theta_{l_{2}}^{+}}\lim_{\theta\rightarrow\theta_{c_{2}}^{-}}\frac{\partial
K}{\partial\theta}(\theta,\xi)-\lim_{\xi\rightarrow\theta_{l_{2}}^{+}}K(\theta_{l_{2}},\xi)\sin(\theta_{l_{1}})\frac{\partial
T}{\partial\theta}(\theta_{l_{2}})\\\
&+T(\theta_{l_{2}})\sin(\theta_{l_{2}})\lim_{\xi\rightarrow\theta_{l_{2}}^{+}}\lim_{\theta\rightarrow\theta_{l_{2}}^{+}}\frac{\partial
K}{\partial\theta}(\theta,\xi)\end{aligned}$ (D.71)
$\displaystyle\begin{aligned}
-1&=\int_{\theta_{l_{2}}}^{\theta_{c_{2}}}d\theta\>\sin\theta\>K(\theta,\theta_{c_{2}})h_{1}(\theta)+\lim_{\xi\rightarrow\theta_{c_{2}}^{-}}K(\theta_{c_{2}},\xi)\sin(\theta_{c_{2}})\frac{\partial
T}{\partial\theta}(\theta_{c_{2}})\\\
&+\sin(\theta_{c_{2}})\lim_{\xi\rightarrow\theta_{c_{2}}^{-}}\lim_{\theta\rightarrow\theta_{c_{2}}^{-}}\frac{\partial
K}{\partial\theta}(\theta,\xi)-K(\theta_{l_{2}},\theta_{c_{2}})\sin(\theta_{l_{1}})\frac{\partial
T}{\partial\theta}(\theta_{l_{2}})\\\
&+T(\theta_{l_{2}})\sin(\theta_{l_{2}})\lim_{\xi\rightarrow\theta_{c_{2}}^{-}}\lim_{\theta\rightarrow\theta_{l_{2}}^{+}}\frac{\partial
K}{\partial\theta}(\theta,\xi)\end{aligned}$ (D.72)
$\displaystyle\begin{aligned}
-1&=\int_{\theta_{c_{2}}}^{\pi}d\theta\>\sin\theta\>K(\theta,\theta_{c_{2}})h_{2}(\theta)-\lim_{\xi\rightarrow\theta_{c_{2}}^{+}}K(\theta_{c_{2}},\xi)\sin(\theta_{c_{2}})\frac{\partial
T}{\partial\theta}(\theta_{c_{2}})\\\
&-\sin(\theta_{c_{2}})\lim_{\xi\rightarrow\theta_{c_{2}}^{+}}\lim_{\theta\rightarrow\theta_{c_{2}}^{+}}\frac{\partial
K}{\partial\theta}(\theta,\xi)\end{aligned}$ (D.73)
$\displaystyle\begin{aligned}
T(\pi)&=\int_{\theta_{c_{2}}}^{\pi}d\theta\>\sin\theta\>K(\theta,\pi)h_{2}(\theta)-K(\theta_{c_{2}},\pi)\sin(\theta_{c_{2}})\frac{\partial
T}{\partial\theta}(\theta_{c_{2}})\\\
&-\sin(\theta_{c_{2}})\lim_{\xi\rightarrow\pi^{-}}\lim_{\theta\rightarrow\theta_{c_{2}}^{+}}\frac{\partial
K}{\partial\theta}(\theta,\xi)\end{aligned}$ (D.74)

States with two critical latitudes on either ocean are also possible with a
completely ice covered continent. Solutions are found using the equations
above, but the function $h_{3}$ must be changed to $h_{4}$ in region III.
Consequently, the solution is given by (D.60)-(D.64), but changing $h_{3}\to
h_{4}$ in (D.62). BIE are (D.65)-(D.74), changing $h_{3}\to h_{4}$ in (D.69)
and (D.70).

For the asymmetric continent configurations studied, there may be states where
there are two critical latitudes on the southern ocean. The domain is
partitioned into the following sub-domains:

$\theta\in(0,\theta_{l_{1}})$ (I) $\theta\in(\theta_{l_{1}},\theta_{l_{2}})$
(II) $\theta\in(\theta_{l_{2}},\theta_{c_{1}}),$ (III)
$\theta\in(\theta_{c_{1}},\theta_{c_{2}}),$ (IV)
$\theta\in(\theta_{c_{2}},\pi)$ (V)

The solution within these regions are (in order):

$\displaystyle\begin{aligned}
T(\xi)&=\int_{0}^{\theta_{l_{1}}}d\theta\>\sin\theta\>K(\theta,\xi)h_{2}(\theta)+K(\theta_{l_{1}},\xi)\sin(\theta_{l_{1}})\frac{\partial
T}{\partial\theta}(\theta_{l_{1}})\\\
&-T(\theta_{l_{1}})\sin(\theta_{l_{1}})\lim_{\theta\rightarrow\theta_{l_{1}}^{-}}\frac{\partial
K}{\partial\theta}(\theta,\xi),\end{aligned}$ (D.75)
$\displaystyle\begin{aligned}
T(\xi)&=\int_{\theta_{l_{1}}}^{\theta_{l_{2}}}d\theta\>\sin\theta\>K(\theta,\xi)h_{4}(\theta)+K(\theta_{l_{2}},\xi)\sin(\theta_{l_{2}})\frac{\partial
T}{\partial\theta}(\theta_{l_{2}})\\\
&-T(\theta_{l_{2}})\sin(\theta_{l_{2}})\lim_{\theta\rightarrow\theta_{l_{2}}^{-}}\frac{\partial
K}{\partial\theta}(\theta,\xi)-K(\theta_{l_{1}},\xi)\sin(\theta_{l_{1}})\frac{\partial
T}{\partial\theta}(\theta_{l_{1}})\\\
&+T(\theta_{l_{1}})\sin(\theta_{l_{1}})\lim_{\theta\rightarrow\theta_{l_{1}}^{+}}\frac{\partial
K}{\partial\theta}(\theta,\xi)\end{aligned}$ (D.76)
$\displaystyle\begin{aligned}
T(\xi)&=\int_{\theta_{l_{2}}}^{\theta_{c_{1}}}d\theta\>\sin\theta\>K(\theta,\xi)h_{2}(\theta)+K(\theta_{c_{1}},\xi)\sin(\theta_{c_{1}})\frac{\partial
T}{\partial\theta}(\theta_{c_{1}})\\\
&+\sin(\theta_{c_{1}})\lim_{\theta\rightarrow\theta_{c_{1}}^{-}}\frac{\partial
K}{\partial\theta}(\theta,\xi)-K(\theta_{l_{2}},\xi)\sin(\theta_{l_{1}})\frac{\partial
T}{\partial\theta}(\theta_{l_{2}})\\\
&+T(\theta_{l_{2}})\sin(\theta_{l_{2}})\lim_{\theta\rightarrow\theta_{l_{2}}^{+}}\frac{\partial
K}{\partial\theta}(\theta,\xi)\end{aligned}$ (D.77)
$\displaystyle\begin{aligned}
T(\xi)&=\int_{\theta_{c_{1}}}^{\theta_{c_{2}}}d\theta\>\sin\theta\>K(\theta,\xi)h_{1}(\theta)+K(\theta_{c_{2}},\xi)\sin(\theta_{c_{2}})\lim_{\theta_{2}\rightarrow\theta_{c_{2}}^{-}}\frac{\partial
T}{\partial\theta}(\theta_{2})\\\
&+\sin(\theta_{c_{2}})\lim_{\theta_{2}\rightarrow\theta_{c_{2}}^{-}}\frac{\partial
K}{\partial\theta}(\theta_{2},\xi)\\\
&-K(\theta_{c_{1}},\xi)\sin(\theta_{c_{1}})\lim_{\theta_{1}\rightarrow\theta_{c_{1}}^{+}}\frac{\partial
T}{\partial\theta}(\theta_{1})\\\
&-\sin(\theta_{c_{1}})\lim_{\theta_{1}\rightarrow\theta_{c_{1}}^{+}}\frac{\partial
K}{\partial\theta}(\theta_{1},\xi).\end{aligned}$ (D.78)
$\displaystyle\begin{aligned}
T(\xi)&=\int_{\theta_{c_{2}}}^{\pi}d\theta\>\sin\theta\>K(\theta,\xi)h_{2}(\theta)-K(\theta_{c_{2}},\xi)\sin(\theta_{c_{2}})\lim_{\theta_{1}\rightarrow\theta_{c_{2}}^{+}}\frac{\partial
T}{\partial\theta}(\theta_{1})\\\
&-\sin(\theta_{c_{2}})\lim_{\theta_{1}\rightarrow\theta_{c_{2}}^{+}}\frac{\partial
K}{\partial\theta}(\theta_{1},\xi).\end{aligned}$ (D.79)

The associated BIEs are:

$\displaystyle\begin{aligned}
T(0)&=\int_{0}^{\theta_{l_{1}}}d\theta\>\sin\theta\>K(\theta,0)h_{2}(\theta)+K(\theta_{l_{1}},0)\sin(\theta_{l_{1}})\frac{\partial
T}{\partial\theta}(\theta_{l_{1}})\\\
&-T(\theta_{l_{1}})\sin(\theta_{l_{1}})\lim_{\xi\rightarrow
0^{+}}\lim_{\theta\rightarrow\theta_{l_{1}}^{-}}\frac{\partial
K}{\partial\theta}(\theta,\xi)\end{aligned}$ (D.80)
$\displaystyle\begin{aligned}
T(\theta_{l_{1}})&=\int_{0}^{\theta_{l_{1}}}d\theta\>\sin\theta\>K(\theta,\theta_{l_{1}})h_{2}(\theta)+\lim_{\xi\rightarrow\theta_{l_{1}}^{-}}K(\theta_{l_{1}},\xi)\sin(\theta_{l_{1}})\frac{\partial
T}{\partial\theta}(\theta_{l_{1}})\\\
&-T(\theta_{l_{1}})\sin(\theta_{l_{1}})\lim_{\xi\rightarrow\theta_{l_{1}}^{-}}\lim_{\theta\rightarrow\theta_{l_{1}}^{-}}\frac{\partial
K}{\partial\theta}(\theta,\xi)\end{aligned}$ (D.81)
$\displaystyle\begin{aligned}
T(\theta_{l_{1}})&=\int_{\theta_{l_{1}}}^{\theta_{l_{2}}}d\theta\>\sin\theta\>K(\theta,\theta_{l_{1}})h_{4}(\theta)+K(\theta_{l_{2}},\theta_{l_{1}})\sin(\theta_{l_{2}})\frac{\partial
T}{\partial\theta}(\theta_{l_{2}})\\\
&-T(\theta_{l_{2}})\sin(\theta_{l_{2}})\lim_{\xi\rightarrow\theta_{l_{1}}^{+}}\lim_{\theta\rightarrow\theta_{l_{2}}^{-}}\frac{\partial
K}{\partial\theta}(\theta,\xi)-\lim_{\xi\rightarrow\theta_{l_{1}}^{+}}K(\theta_{l_{1}},\xi)\sin(\theta_{l_{1}})\frac{\partial
T}{\partial\theta}(\theta_{l_{1}})\\\
&+T(\theta_{l_{1}})\sin(\theta_{l_{1}})\lim_{\xi\rightarrow\theta_{l_{1}}^{+}}\lim_{\theta\rightarrow\theta_{l_{1}}^{+}}\frac{\partial
K}{\partial\theta}(\theta,\xi)\end{aligned}$ (D.82)
$\displaystyle\begin{aligned}
T(\theta_{l_{2}})&=\int_{\theta_{l_{1}}}^{\theta_{l_{2}}}d\theta\>\sin\theta\>K(\theta,\theta_{l_{2}})h_{4}(\theta)+\lim_{\xi\rightarrow\theta_{l_{2}}^{-}}K(\theta_{l_{2}},\xi)\sin(\theta_{l_{2}})\frac{\partial
T}{\partial\theta}(\theta_{l_{2}})\\\
&-T(\theta_{l_{2}})\sin(\theta_{l_{2}})\lim_{\xi\rightarrow\theta_{l_{2}}^{-}}\lim_{\theta\rightarrow\theta_{l_{2}}^{-}}\frac{\partial
K}{\partial\theta}(\theta,\xi)-K(\theta_{l_{1}},\theta_{l_{2}})\sin(\theta_{l_{1}})\frac{\partial
T}{\partial\theta}(\theta_{l_{1}})\\\
&+T(\theta_{l_{1}})\sin(\theta_{l_{1}})\lim_{\xi\rightarrow\theta_{l_{2}}^{-}}\lim_{\theta\rightarrow\theta_{l_{1}}^{+}}\frac{\partial
K}{\partial\theta}(\theta,\xi)\end{aligned}$ (D.83)
$\displaystyle\begin{aligned}
T(\theta_{l_{2}})&=\int_{\theta_{l_{2}}}^{\theta_{c_{1}}}d\theta\>\sin\theta\>K(\theta,\theta_{l_{2}})h_{2}(\theta)+K(\theta_{c_{1}},\theta_{l_{2}})\sin(\theta_{c_{1}})\frac{\partial
T}{\partial\theta}(\theta_{c_{1}})\\\
&+\sin(\theta_{c_{1}})\lim_{\xi\rightarrow\theta_{l_{2}}^{+}}\lim_{\theta\rightarrow\theta_{c_{1}}^{-}}\frac{\partial
K}{\partial\theta}(\theta,\xi)-\lim_{\xi\rightarrow\theta_{l_{2}}^{+}}K(\theta_{l_{2}},\xi)\sin(\theta_{l_{1}})\frac{\partial
T}{\partial\theta}(\theta_{l_{2}})\\\
&+T(\theta_{l_{2}})\sin(\theta_{l_{2}})\lim_{\xi\rightarrow\theta_{l_{2}}^{+}}\lim_{\theta\rightarrow\theta_{l_{2}}^{+}}\frac{\partial
K}{\partial\theta}(\theta,\xi)\end{aligned}$ (D.84)
$\displaystyle\begin{aligned}
-1&=\int_{\theta_{l_{2}}}^{\theta_{c_{1}}}d\theta\>\sin\theta\>K(\theta,\theta_{c_{1}})h_{2}(\theta)+\lim_{\xi\rightarrow\theta_{c_{1}}^{-}}K(\theta_{c_{1}},\xi)\sin(\theta_{c_{1}})\frac{\partial
T}{\partial\theta}(\theta_{c_{1}})\\\
&+\sin(\theta_{c_{1}})\lim_{\xi\rightarrow\theta_{c_{1}}^{-}}\lim_{\theta\rightarrow\theta_{c_{1}}^{-}}\frac{\partial
K}{\partial\theta}(\theta,\xi)-K(\theta_{l_{2}},\theta_{c_{1}})\sin(\theta_{l_{1}})\frac{\partial
T}{\partial\theta}(\theta_{l_{2}})\\\
&+T(\theta_{l_{2}})\sin(\theta_{l_{2}})\lim_{\xi\rightarrow\theta_{c_{1}}^{-}}\lim_{\theta\rightarrow\theta_{l_{2}}^{+}}\frac{\partial
K}{\partial\theta}(\theta,\xi)\end{aligned}$ (D.85)
$\displaystyle\begin{aligned}
-1&=\int_{\theta_{c_{1}}}^{\theta_{c_{2}}}d\theta\>\sin\theta\>K(\theta,\theta_{c_{1}})h_{1}(\theta)+K(\theta_{c_{2}},\theta_{c_{1}})\sin(\theta_{c_{2}})\frac{\partial
T}{\partial\theta}(\theta_{c_{2}})\\\
&+\sin(\theta_{c_{2}})\lim_{\xi\rightarrow\theta_{c_{1}}^{+}}\lim_{\theta\rightarrow\theta_{c_{2}}^{-}}\frac{\partial
K}{\partial\theta}(\theta,\xi)-K(\theta_{c_{1}},\theta_{c_{1}})\sin(\theta_{c_{1}})\frac{\partial
T}{\partial\theta}(\theta_{c_{1}})\\\
&-\sin(\theta_{c_{1}})\lim_{\xi\rightarrow\theta_{c_{1}}^{+}}\lim_{\theta\rightarrow\theta_{c_{1}}^{+}}\frac{\partial
K}{\partial\theta}(\theta,\xi).\end{aligned}$ (D.86)
$\displaystyle\begin{aligned}
-1&=\int_{\theta_{c_{1}}}^{\theta_{c_{2}}}d\theta\>\sin\theta\>K(\theta,\theta_{c_{2}})h_{1}(\theta)+K(\theta_{c_{2}},\theta_{c_{2}})\sin(\theta_{c_{2}})\frac{\partial
T}{\partial\theta}(\theta_{c_{2}})\\\
&+\sin(\theta_{c_{2}})\lim_{\xi\rightarrow\theta_{c_{2}}^{-}}\lim_{\theta\rightarrow\theta_{c_{2}}^{-}}\frac{\partial
K}{\partial\theta}(\theta,\xi)-K(\theta_{c_{1}},\theta_{c_{2}})\sin(\theta_{c_{1}})\frac{\partial
T}{\partial\theta}(\theta_{c_{1}})\\\
&-\sin(\theta_{c_{1}})\lim_{\xi\rightarrow\theta_{c_{2}}^{-}}\lim_{\theta\rightarrow\theta_{c_{1}}^{+}}\frac{\partial
K}{\partial\theta}(\theta,\xi).\end{aligned}$ (D.87)
$\displaystyle\begin{aligned}
-1&=\int_{\theta_{c_{2}}}^{\pi}d\theta\>\sin\theta\>K(\theta,\theta_{c_{2}})h_{2}(\theta)-K(\theta_{c_{2}},\theta_{c_{2}})\sin(\theta_{c_{2}})\frac{\partial
T}{\partial\theta}(\theta_{c_{2}})\\\
&-\sin(\theta_{c_{2}})\lim_{\xi\rightarrow\theta_{c_{2}}^{+}}\lim_{\theta\rightarrow\theta_{c_{2}}^{+}}\frac{\partial
K}{\partial\theta}(\theta,\xi).\end{aligned}$ (D.88)
$\displaystyle\begin{aligned}
T(\pi)&=\int_{\theta_{c_{2}}}^{\pi}d\theta\>\sin\theta\>K(\theta,\pi)h_{2}(\theta)-K(\theta_{c_{2}},\pi)\sin(\theta_{c_{2}})\frac{\partial
T}{\partial\theta}(\theta_{c_{2}})\\\
&-\sin(\theta_{c_{2}})\lim_{\xi\rightarrow\pi^{-}}\lim_{\theta\rightarrow\theta_{c_{2}}^{+}}\frac{\partial
K}{\partial\theta}(\theta,\xi).\end{aligned}$ (D.89)

For the asymmetrical continent configurations, two critical latitudes are also
realized through one critical latitude on the continent and one critical
latitude the northern ocean. The domain is partitioned into the following sub-
domains:

$\theta\in(0,\theta_{c_{1}}),$ (I) $\theta\in(\theta_{c_{1}},\theta_{l_{1}}),$
(II) $\theta\in(\theta_{l_{1}},\theta_{c_{2}}),$ (III)
$\theta\in(\theta_{c_{2}},\theta_{l_{2}}),$ (IV)
$\theta\in(\theta_{l_{2}},\pi).$ (V)

The solution in each of these regions are given by:

$\displaystyle\begin{aligned}
T(\xi)&=\int_{0}^{\theta_{c_{1}}}d\theta\>\sin\theta\>K(\theta,\xi)h_{2}(\theta)+K(\theta_{c_{1}},\xi)\sin(\theta_{c_{1}})\frac{\partial
T}{\partial\theta}(\theta_{c_{1}})\\\
&+\sin(\theta_{c_{1}})\lim_{\theta\rightarrow\theta_{c_{1}}^{-}}\frac{\partial
K}{\partial\theta}(\theta,\xi)\end{aligned}$ (D.90)
$\displaystyle\begin{aligned}
T(\xi)&=\int_{\theta_{c_{1}}}^{\theta_{l_{1}}}d\theta\>\sin\theta\>K(\theta,\xi)h_{1}(\theta)+K(\theta_{l_{1}},\xi)\sin(\theta_{l_{1}})\frac{\partial
T}{\partial\theta}(\theta_{l_{1}})\\\
&-T(\theta_{l_{1}})\sin(\theta_{l_{1}})\lim_{\theta\rightarrow\theta_{l_{1}}^{-}}\frac{\partial
K}{\partial\theta}(\theta,\xi)-K(\theta_{c_{1}},\xi)\sin(\theta_{c_{1}})\frac{\partial
T}{\partial\theta}(\theta_{c_{1}})\\\
&-\sin(\theta_{c_{1}})\lim_{\theta\rightarrow\theta_{c_{1}}^{+}}\frac{\partial
K}{\partial\theta}(\theta,\xi)\end{aligned}$ (D.91)
$\displaystyle\begin{aligned}
T(\xi)&=\int_{\theta_{l_{1}}}^{\theta_{c_{2}}}d\theta\>\sin\theta\>K(\theta,\xi)h_{4}(\theta)+K(\theta_{c_{2}},\xi)\sin(\theta_{c_{2}})\frac{\partial
T}{\partial\theta}(\theta_{c_{2}})\\\
&+T_{c}\sin(\theta_{c_{2}})\lim_{\theta\rightarrow\theta_{c_{2}}^{-}}\frac{\partial
K}{\partial\theta}(\theta,\xi)-K(\theta_{l_{1}},\xi)\sin(\theta_{l_{1}})\frac{\partial
T}{\partial\theta}(\theta_{l_{1}})\\\
&+T(\theta_{l_{1}})\sin(\theta_{l_{1}})\lim_{\theta\rightarrow\theta_{l_{1}}^{+}}\frac{\partial
K}{\partial\theta}(\theta,\xi)\end{aligned}$ (D.92)
$\displaystyle\begin{aligned}
T(\xi)&=\int_{\theta_{c_{2}}}^{\theta_{l_{2}}}d\theta\>\sin\theta\>K(\theta,\xi)h_{3}(\theta)+K(\theta_{l_{2}},\xi)\sin(\theta_{l_{2}})\frac{\partial
T}{\partial\theta}(\theta_{l_{2}})\\\
&-T(\theta_{l_{2}})\sin(\theta_{l_{2}})\lim_{\theta\rightarrow\theta_{l_{2}}^{-}}\frac{\partial
K}{\partial\theta}(\theta,\xi)-K(\theta_{c_{2}},\xi)\sin(\theta_{c_{2}})\frac{\partial
T}{\partial\theta}(\theta_{c_{2}})\\\
&-T_{c}\sin(\theta_{c_{2}})\lim_{\theta\rightarrow\theta_{c_{2}}^{+}}\frac{\partial
K}{\partial\theta}(\theta,\xi)\end{aligned}$ (D.93)
$\displaystyle\begin{aligned}
T(\xi)&=\int_{\theta_{l_{2}}}^{\pi}d\theta\>\sin\theta\>K(\theta,\xi)h_{1}(\theta)-K(\theta_{l_{2}},\xi)\sin(\theta_{l_{2}})\frac{\partial
T}{\partial\theta}(\theta_{l_{2}})\\\
&+T(\theta_{l_{2}})\sin(\theta_{l_{2}})\lim_{\theta\rightarrow\theta_{l_{2}}^{+}}\frac{\partial
K}{\partial\theta}(\theta,\xi)\end{aligned}$ (D.94)

The associated BIEs are:

$\displaystyle\begin{aligned}
T(0)&=\int_{0}^{\theta_{c_{1}}}d\theta\>\sin\theta\>K(\theta,0)h_{2}(\theta)+K(\theta_{c_{1}},0)\sin(\theta_{c_{1}})\frac{\partial
T}{\partial\theta}(\theta_{c_{1}})\\\
&+\sin(\theta_{c_{1}})\lim_{\xi\rightarrow
0^{+}}\lim_{\theta\rightarrow\theta_{c_{1}}^{-}}\frac{\partial
K}{\partial\theta}(\theta,\xi)\end{aligned}$ (D.95)
$\displaystyle\begin{aligned}
-1&=\int_{0}^{\theta_{c_{1}}}d\theta\>\sin\theta\>K(\theta,\theta_{c_{1}})h_{2}(\theta)+\lim_{\xi\rightarrow\theta_{c_{1}}^{-}}K(\theta_{c_{1}},\xi)\sin(\theta_{c_{1}})\frac{\partial
T}{\partial\theta}(\theta_{c_{1}})\\\
&+\sin(\theta_{c_{1}})\lim_{\xi\rightarrow\theta_{c_{1}}^{-}}\lim_{\theta\rightarrow\theta_{c_{1}}^{-}}\frac{\partial
K}{\partial\theta}(\theta,\xi)\end{aligned}$ (D.96)
$\displaystyle\begin{aligned}
-1&=\int_{\theta_{c_{1}}}^{\theta_{l_{1}}}d\theta\>\sin\theta\>K(\theta,\theta_{c_{1}})h_{1}(\theta)+K(\theta_{l_{1}},\theta_{c_{1}})\sin(\theta_{l_{1}})\frac{\partial
T}{\partial\theta}(\theta_{l_{1}})\\\
&-T(\theta_{l_{1}})\sin(\theta_{l_{1}})\lim_{\xi\rightarrow\theta_{c_{1}}^{+}}\lim_{\theta\rightarrow\theta_{l_{1}}^{-}}\frac{\partial
K}{\partial\theta}(\theta,\xi)-\lim_{\xi\rightarrow\theta_{c_{1}}^{+}}K(\theta_{c_{1}},\xi)\sin(\theta_{c_{1}})\frac{\partial
T}{\partial\theta}(\theta_{c_{1}})\\\
&-\sin(\theta_{c_{1}})\lim_{\xi\rightarrow\theta_{c_{1}}^{+}}\lim_{\theta\rightarrow\theta_{c_{1}}^{+}}\frac{\partial
K}{\partial\theta}(\theta,\xi)\end{aligned}$ (D.97)
$\displaystyle\begin{aligned}
T(\theta_{l_{1}})&=\int_{\theta_{c_{1}}}^{\theta_{l_{1}}}d\theta\>\sin\theta\>K(\theta,\theta_{l_{1}})h_{1}(\theta)+\lim_{\xi\rightarrow\theta_{l_{1}}^{-}}K(\theta_{l_{1}},\xi)\sin(\theta_{l_{1}})\frac{\partial
T}{\partial\theta}(\theta_{l_{1}})\\\
&-T(\theta_{l_{1}})\sin(\theta_{l_{1}})\lim_{\xi\rightarrow\theta_{l_{1}}^{-}}\lim_{\theta\rightarrow\theta_{l_{1}}^{-}}\frac{\partial
K}{\partial\theta}(\theta,\xi)-K(\theta_{c_{1}},\theta_{l_{1}})\sin(\theta_{c_{1}})\frac{\partial
T}{\partial\theta}(\theta_{c_{1}})\\\
&-\sin(\theta_{c_{1}})\lim_{\xi\rightarrow\theta_{l_{1}}^{-}}\lim_{\theta\rightarrow\theta_{c_{1}}^{+}}\frac{\partial
K}{\partial\theta}(\theta,\xi)\end{aligned}$ (D.98)
$\displaystyle\begin{aligned}
T(\theta_{l_{1}})&=\int_{\theta_{l_{1}}}^{\theta_{c_{2}}}d\theta\>\sin\theta\>K(\theta,\theta_{l_{1}})h_{4}(\theta)+K(\theta_{c_{2}},\theta_{l_{1}})\sin(\theta_{c_{2}})\frac{\partial
T}{\partial\theta}(\theta_{c_{2}})\\\
&+T_{c}\sin(\theta_{c_{2}})\lim_{\xi\rightarrow\theta_{l_{1}}^{+}}\lim_{\theta\rightarrow\theta_{l_{2}}^{-}}\frac{\partial
K}{\partial\theta}(\theta,\xi)-\lim_{\xi\rightarrow\theta_{l_{1}}^{+}}K(\theta_{l_{1}},\xi)\sin(\theta_{l_{1}})\frac{\partial
T}{\partial\theta}(\theta_{l_{1}})\\\
&+T(\theta_{l_{1}})\sin(\theta_{l_{1}})\lim_{\xi\rightarrow\theta_{l_{1}}^{+}}\lim_{\theta\rightarrow\theta_{l_{1}}^{+}}\frac{\partial
K}{\partial\theta}(\theta,\xi)\end{aligned}$ (D.99)
$\displaystyle\begin{aligned}
-T_{c}&=\int_{\theta_{l_{1}}}^{\theta_{c_{2}}}d\theta\>\sin\theta\>K(\theta,\theta_{c_{2}})h_{4}(\theta)+\lim_{\xi\rightarrow\theta_{c_{2}}^{-}}K(\theta_{c_{2}},\xi)\sin(\theta_{c_{2}})\frac{\partial
T}{\partial\theta}(\theta_{c_{2}})\\\
&+T_{c}\sin(\theta_{c_{2}})\lim_{\xi\rightarrow\theta_{c_{2}}^{-}}\lim_{\theta\rightarrow\theta_{c_{2}}^{-}}\frac{\partial
K}{\partial\theta}(\theta,\xi)-K(\theta_{l_{1}},\theta_{c_{2}})\sin(\theta_{l_{1}})\frac{\partial
T}{\partial\theta}(\theta_{l_{1}})\\\
&+T(\theta_{l_{1}})\sin(\theta_{l_{1}})\lim_{\xi\rightarrow\theta_{c_{2}}^{-}}\lim_{\theta\rightarrow\theta_{l_{1}}^{+}}\frac{\partial
K}{\partial\theta}(\theta,\xi)\end{aligned}$ (D.100)
$\displaystyle\begin{aligned}
-T_{c}&=\int_{\theta_{c_{2}}}^{\theta_{l_{2}}}d\theta\>\sin\theta\>K(\theta,\theta_{c_{2}})h_{3}(\theta)+K(\theta_{l_{2}},\theta_{c_{2}})\sin(\theta_{l_{2}})\frac{\partial
T}{\partial\theta}(\theta_{l_{2}})\\\
&-T(\theta_{l_{2}})\sin(\theta_{l_{2}})\lim_{\xi\rightarrow\theta_{c_{2}}^{+}}\lim_{\theta\rightarrow\theta_{l_{2}}^{-}}\frac{\partial
K}{\partial\theta}(\theta,\xi)-\lim_{\xi\rightarrow\theta_{c_{2}}^{+}}K(\theta_{c_{2}},\xi)\sin(\theta_{c_{2}})\frac{\partial
T}{\partial\theta}(\theta_{c_{2}})\\\
&-T_{c}\sin(\theta_{c_{2}})\lim_{\xi\rightarrow\theta_{c_{2}}^{+}}\lim_{\theta\rightarrow\theta_{c_{2}}^{+}}\frac{\partial
K}{\partial\theta}(\theta,\xi)\end{aligned}$ (D.101)
$\displaystyle\begin{aligned}
T(\theta_{l_{2}})&=\int_{\theta_{c_{2}}}^{\theta_{l_{2}}}d\theta\>\sin\theta\>K(\theta,\theta_{l_{2}})h_{3}(\theta)+\lim_{\xi\rightarrow\theta_{l_{2}}^{-}}K(\theta_{l_{2}},\xi)\sin(\theta_{l_{2}})\frac{\partial
T}{\partial\theta}(\theta_{l_{2}})\\\
&-T(\theta_{l_{2}})\sin(\theta_{l_{2}})\lim_{\xi\rightarrow\theta_{l_{2}}^{-}}\lim_{\theta\rightarrow\theta_{l_{2}}^{-}}\frac{\partial
K}{\partial\theta}(\theta,\xi)-K(\theta_{c_{2}},\theta_{l_{2}})\sin(\theta_{c_{2}})\frac{\partial
T}{\partial\theta}(\theta_{c_{2}})\\\
&-T_{c}\sin(\theta_{c_{2}})\lim_{\xi\rightarrow\theta_{l_{2}}^{-}}\lim_{\theta\rightarrow\theta_{c_{2}}^{+}}\frac{\partial
K}{\partial\theta}(\theta,\xi)\end{aligned}$ (D.102)
$\displaystyle\begin{aligned}
T(\theta_{l_{2}})&=\int_{\theta_{l_{2}}}^{\pi}d\theta\>\sin\theta\>K(\theta,\theta_{l_{2}})h_{1}(\theta)-\lim_{\xi\rightarrow\theta_{l_{2}}^{+}}K(\theta_{l_{2}},\xi)\sin(\theta_{l_{2}})\frac{\partial
T}{\partial\theta}(\theta_{l_{2}})\\\
&+T(\theta_{l_{2}})\sin(\theta_{l_{2}})\lim_{\xi\rightarrow\theta_{l_{2}}^{+}}\lim_{\theta\rightarrow\theta_{l_{2}}^{+}}\frac{\partial
K}{\partial\theta}(\theta,\xi)\end{aligned}$ (D.103)
$\displaystyle\begin{aligned}
T(\pi)&=\int_{\theta_{l_{2}}}^{\pi}d\theta\>\sin\theta\>K(\theta,\pi)h_{1}(\theta)-K(\theta_{l_{2}},\pi)\sin(\theta_{l_{2}})\frac{\partial
T}{\partial\theta}(\theta_{l_{2}})\\\
&+T(\theta_{l_{2}})\sin(\theta_{l_{2}})\lim_{\xi\rightarrow\pi^{-}}\lim_{\theta\rightarrow\theta_{l_{2}}^{+}}\frac{\partial
K}{\partial\theta}(\theta,\xi)\end{aligned}$ (D.104)

###  D.4 Four Critical Latitudes

States with four critical latitudes are possible for the meridionally
symmetric continent configuration. As states with four critical latitudes only
appear given the meridional symmetry, it is advisable to apply an assumption
of symmetry to save on computational cost. The model’s inherent symmetry
ensures a symmetric temperature profiles around the equator. Consequently, the
BIM is applied on the truncated domain $\theta\in[0,\frac{\pi}{2}]$. A
symmetric solution implies that $T(\theta)=T(\pi-\theta)\implies
T^{\prime}(\theta)=-T^{\prime}(\pi-\theta)$. At $\theta=\frac{\pi}{2}$, it is
evident that $T^{\prime}(\frac{\pi}{2})=0$. Four critical latitudes are
realized by a partial ice cover on the ocean and the continent in both
hemispheres, therefore the truncated domain is partitioned into the four sub-
domains:

$\theta\in(0,\theta_{c_{1}})$ (I) $\theta\in(\theta_{c_{1}},\theta_{l_{1}})$
(II) $\theta\in(\theta_{l_{1}},\theta_{c_{2}})$ (III)
$\theta\in(\theta_{c_{2}},\frac{\pi}{2})$ (IV)

Here the ice cover may be in region (III) and region (IV) is ice free, or vice
versa. Consider the former fist: The solution within the regions are (in
respective order):

$\displaystyle\begin{aligned}
T(\xi)&=\int_{0}^{\theta_{c_{1}}}d\theta\>\sin\theta\>K(\theta,\xi)h_{2}(\theta)+K(\theta_{c_{1}},\xi)\sin(\theta_{c_{1}})\frac{\partial
T}{\partial\theta}(\theta_{c_{1}})\\\
&+\sin(\theta_{c_{1}})\lim_{\theta\rightarrow\theta_{c_{1}}^{-}}\frac{\partial
K}{\partial\theta}(\theta,\xi)\end{aligned}$ (D.105)
$\displaystyle\begin{aligned}
T(\xi)&=\int_{\theta_{c_{1}}}^{\theta_{l_{1}}}d\theta\>\sin\theta\>K(\theta,\xi)h_{1}(\theta)+K(\theta_{l_{1}},\xi)\sin(\theta_{l_{1}})\frac{\partial
T}{\partial\theta}(\theta_{l_{1}})\\\
&-T(\theta_{l_{1}})\sin(\theta_{l_{1}})\lim_{\theta\rightarrow\theta_{l_{1}}^{-}}\frac{\partial
K}{\partial\theta}(\theta,\xi)-K(\theta_{c_{1}},\xi)\sin(\theta_{c_{1}})\frac{\partial
T}{\partial\theta}(\theta_{c_{1}})\\\
&-\sin(\theta_{c_{1}})\lim_{\theta\rightarrow\theta_{c_{1}}^{+}}\frac{\partial
K}{\partial\theta}(\theta,\xi)\end{aligned}$ (D.106)
$\displaystyle\begin{aligned}
T(\xi)&=\int_{\theta_{l_{1}}}^{\theta_{c_{2}}}d\theta\>\sin\theta\>K(\theta,\xi)h_{4}(\theta)+K(\theta_{c_{2}},\xi)\sin(\theta_{c_{2}})\frac{\partial
T}{\partial\theta}(\theta_{c_{2}})\\\
&+T_{c}\sin(\theta_{c_{2}})\lim_{\theta\rightarrow\theta_{c_{2}}^{-}}\frac{\partial
K}{\partial\theta}(\theta,\xi)-K(\theta_{l_{1}},\xi)\sin(\theta_{l_{1}})\frac{\partial
T}{\partial\theta}(\theta_{l_{1}})\\\
&+T(\theta_{l_{1}})\sin(\theta_{l_{1}})\lim_{\theta\rightarrow\theta_{l_{1}}^{+}}\frac{\partial
K}{\partial\theta}(\theta,\xi)\end{aligned}$ (D.107)
$\displaystyle\begin{aligned}
T(\xi)&=\int_{\theta_{c_{2}}}^{\frac{\pi}{2}}d\theta\>\sin\theta\>K(\theta,\xi)h_{3}(\theta)-T(\frac{\pi}{2})\lim_{\theta\rightarrow\frac{\pi}{2}^{-}}\frac{\partial
K}{\partial\theta}(\theta,\xi)\\\
&-K(\theta_{c_{2}},\xi)\sin(\theta_{c_{2}})\frac{\partial
T}{\partial\theta}(\theta_{c_{2}})-T_{c}\sin(\theta_{c_{2}})\lim_{\theta\rightarrow\theta_{c_{2}}^{+}}\frac{\partial
K}{\partial\theta}(\theta,\xi)\end{aligned}$ (D.108)

The associated BIEs are:

$\displaystyle\begin{aligned}
T(0)&=\int_{0}^{\theta_{c_{1}}}d\theta\>\sin\theta\>K(\theta,0)h_{2}(\theta)+K(\theta_{c_{1}},0)\sin(\theta_{c_{1}})\frac{\partial
T}{\partial\theta}(\theta_{c_{1}})\\\
&+\sin(\theta_{c_{1}})\lim_{\xi\rightarrow
0^{+}}\lim_{\theta\rightarrow\theta_{c_{1}}^{-}}\frac{\partial
K}{\partial\theta}(\theta,\xi)\end{aligned}$ (D.109)
$\displaystyle\begin{aligned}
-1&=\int_{0}^{\theta_{c_{1}}}d\theta\>\sin\theta\>K(\theta,\theta_{c_{1}})h_{2}(\theta)+\lim_{\xi\rightarrow\theta_{c_{1}}^{-}}K(\theta_{c_{1}},\xi)\sin(\theta_{c_{1}})\frac{\partial
T}{\partial\theta}(\theta_{c_{1}})\\\
&+\sin(\theta_{c_{1}})\lim_{\xi\rightarrow\theta_{c_{1}}^{-}}\lim_{\theta\rightarrow\theta_{c_{1}}^{-}}\frac{\partial
K}{\partial\theta}(\theta,\xi)\end{aligned}$ (D.110)
$\displaystyle\begin{aligned}
-1&=\int_{\theta_{c_{1}}}^{\theta_{l_{1}}}d\theta\>\sin\theta\>K(\theta,\theta_{c_{1}})h_{1}(\theta)+K(\theta_{l_{1}},\theta_{c_{1}})\sin(\theta_{l_{1}})\frac{\partial
T}{\partial\theta}(\theta_{l_{1}})\\\
&-T(\theta_{l_{1}})\sin(\theta_{l_{1}})\lim_{\xi\rightarrow\theta_{c_{1}}^{+}}\lim_{\theta\rightarrow\theta_{l_{1}}^{-}}\frac{\partial
K}{\partial\theta}(\theta,\xi)-\lim_{\xi\rightarrow\theta_{c_{1}}^{+}}K(\theta_{c_{1}},\xi)\sin(\theta_{c_{1}})\frac{\partial
T}{\partial\theta}(\theta_{c_{1}})\\\
&-\sin(\theta_{c_{1}})\lim_{\xi\rightarrow\theta_{c_{1}}^{+}}\lim_{\theta\rightarrow\theta_{c_{1}}^{+}}\frac{\partial
K}{\partial\theta}(\theta,\xi)\end{aligned}$ (D.111)
$\displaystyle\begin{aligned}
T(\theta_{l_{1}})&=\int_{\theta_{c_{1}}}^{\theta_{l_{1}}}d\theta\>\sin\theta\>K(\theta,\theta_{l_{1}})h_{1}(\theta)+\lim_{\xi\rightarrow\theta_{l_{1}}^{-}}K(\theta_{l_{1}},\xi)\sin(\theta_{l_{1}})\frac{\partial
T}{\partial\theta}(\theta_{l_{1}})\\\
&-T(\theta_{l_{1}})\sin(\theta_{l_{1}})\lim_{\xi\rightarrow\theta_{l_{1}}^{-}}\lim_{\theta\rightarrow\theta_{l_{1}}^{-}}\frac{\partial
K}{\partial\theta}(\theta,\xi)-K(\theta_{c_{1}},\theta_{l_{1}})\sin(\theta_{c_{1}})\frac{\partial
T}{\partial\theta}(\theta_{c_{1}})\\\
&-\sin(\theta_{c_{1}})\lim_{\xi\rightarrow\theta_{l_{1}}^{-}}\lim_{\theta\rightarrow\theta_{c_{1}}^{+}}\frac{\partial
K}{\partial\theta}(\theta,\xi)\end{aligned}$ (D.112)
$\displaystyle\begin{aligned}
T(\theta_{l_{1}})&=\int_{\theta_{l_{1}}}^{\theta_{c_{2}}}d\theta\>\sin\theta\>K(\theta,\theta_{l_{1}})h_{4}(\theta)+K(\theta_{c_{2}},\theta_{l_{1}})\sin(\theta_{c_{2}})\frac{\partial
T}{\partial\theta}(\theta_{c_{2}})\\\
&+T_{c}\sin(\theta_{c_{2}})\lim_{\xi\rightarrow\theta_{l_{1}}^{+}}\lim_{\theta\rightarrow\theta_{l_{2}}^{-}}\frac{\partial
K}{\partial\theta}(\theta,\xi)-\lim_{\xi\rightarrow\theta_{l_{1}}^{+}}K(\theta_{l_{1}},\xi)\sin(\theta_{l_{1}})\frac{\partial
T}{\partial\theta}(\theta_{l_{1}})\\\
&+T(\theta_{l_{1}})\sin(\theta_{l_{1}})\lim_{\xi\rightarrow\theta_{l_{1}}^{+}}\lim_{\theta\rightarrow\theta_{l_{1}}^{+}}\frac{\partial
K}{\partial\theta}(\theta,\xi)\end{aligned}$ (D.113)
$\displaystyle\begin{aligned}
-T_{c}&=\int_{\theta_{l_{1}}}^{\theta_{c_{2}}}d\theta\>\sin\theta\>K(\theta,\theta_{c_{2}})h_{4}(\theta)+\lim_{\xi\rightarrow\theta_{c_{2}}^{-}}K(\theta_{c_{2}},\xi)\sin(\theta_{c_{2}})\frac{\partial
T}{\partial\theta}(\theta_{c_{2}})\\\
&+T_{c}\sin(\theta_{c_{2}})\lim_{\xi\rightarrow\theta_{c_{2}}^{-}}\lim_{\theta\rightarrow\theta_{c_{2}}^{-}}\frac{\partial
K}{\partial\theta}(\theta,\xi)-K(\theta_{l_{1}},\theta_{c_{2}})\sin(\theta_{l_{1}})\frac{\partial
T}{\partial\theta}(\theta_{l_{1}})\\\
&+T(\theta_{l_{1}})\sin(\theta_{l_{1}})\lim_{\xi\rightarrow\theta_{c_{2}}^{-}}\lim_{\theta\rightarrow\theta_{l_{1}}^{+}}\frac{\partial
K}{\partial\theta}(\theta,\xi)\end{aligned}$ (D.114)
$\displaystyle\begin{aligned}
-T_{c}&=\int_{\theta_{c_{2}}}^{\frac{\pi}{2}}d\theta\>\sin\theta\>K(\theta,\theta_{c_{2}})h_{3}(\theta)-T(\frac{\pi}{2})\lim_{\xi\rightarrow\theta_{c_{2}}^{+}}\lim_{\theta\rightarrow\frac{\pi}{2}^{-}}\frac{\partial
K}{\partial\theta}(\theta,\xi)\\\
&-\lim_{\xi\rightarrow\theta_{c_{2}}^{+}}K(\theta_{c_{2}},\xi)\sin(\theta_{c_{2}})\frac{\partial
T}{\partial\theta}(\theta_{c_{2}})-T_{c}\sin(\theta_{c_{2}})\lim_{\xi\rightarrow\theta_{c_{2}}^{+}}\lim_{\theta\rightarrow\theta_{c_{2}}^{+}}\frac{\partial
K}{\partial\theta}(\theta,\xi)\end{aligned}$ (D.115)
$\displaystyle\begin{aligned}
T(\frac{\pi}{2})&=\int_{\theta_{c_{2}}}^{\frac{\pi}{2}}d\theta\>\sin\theta\>K(\theta,\frac{\pi}{2})h_{3}(\theta)-T(\frac{\pi}{2})\lim_{\xi\rightarrow\frac{\pi}{2}^{-}}\lim_{\theta\rightarrow\frac{\pi}{2}^{-}}\frac{\partial
K}{\partial\theta}(\theta,\xi)\\\
&-K(\theta_{c_{2}},\frac{\pi}{2})\sin(\theta_{c_{2}})\frac{\partial
T}{\partial\theta}(\theta_{c_{2}})-T_{c}\sin(\theta_{c_{2}})\lim_{\xi\rightarrow\frac{\pi}{2}^{-}}\lim_{\theta\rightarrow\theta_{c_{2}}^{+}}\frac{\partial
K}{\partial\theta}(\theta,\xi).\end{aligned}$ (D.116)

If region (III) is ice free and region (IV) is ice covered, the equations from
above must be changed accordingly. The solution is given by (D.105)-(D.108),
but changing $h_{4}\to h_{3}$ in (D.107) and $h_{3}\to h_{4}$ in (D.108). BIEs
are (D.109)-(D.116), interchanging $h_{4}\to h_{3}$ in (D.113) and (D.114), as
well as $h_{3}\to h_{4}$ in (D.115) and (D.116).

###  D.5 Six Critical Latitudes

States with six critical latitudes are possible with the meridionally
symmetric continent configuration studied. These states are realized by two
zonal strips of ice cover on the continent, forming four critical latitudes on
the continent and six in total. Again, aa assumption of symmetry is applied
and the truncated domain is partitioned into the five sub-domains:

$\theta\in(0,\theta_{c_{1}})$ (I) $\theta\in(\theta_{c_{1}},\theta_{l_{1}})$
(II) $\theta\in(\theta_{l_{1}},\theta_{c_{2}})$ (III)
$\theta\in(\theta_{c_{2}},\theta_{c_{3}})$ (IV)
$\theta\in(\theta_{c_{3}},\frac{\pi}{2})$ (V)

The ice distribution within the continent may take on two forms: Ice in region
(IV) or ice in region (III) and (V). For the former the solution within the
five regions are given by (in order):

$\displaystyle\begin{aligned}
T(\xi)&=\int_{0}^{\theta_{c_{1}}}d\theta\>\sin\theta\>K(\theta,\xi)h_{2}(\theta)+K(\theta_{c_{1}},\xi)\sin(\theta_{c_{1}})\frac{\partial
T}{\partial\theta}(\theta_{c_{1}})\\\
&+\sin(\theta_{c_{1}})\lim_{\theta\rightarrow\theta_{c_{1}}^{-}}\frac{\partial
K}{\partial\theta}(\theta,\xi)\end{aligned}$ (D.117)
$\displaystyle\begin{aligned}
T(\xi)&=\int_{\theta_{c_{1}}}^{\theta_{l_{1}}}d\theta\>\sin\theta\>K(\theta,\xi)h_{1}(\theta)+K(\theta_{l_{1}},\xi)\sin(\theta_{l_{1}})\frac{\partial
T}{\partial\theta}(\theta_{l_{1}})\\\
&-T(\theta_{l_{1}})\sin(\theta_{l_{1}})\lim_{\theta\rightarrow\theta_{l_{1}}^{-}}\frac{\partial
K}{\partial\theta}(\theta,\xi)-K(\theta_{c_{1}},\xi)\sin(\theta_{c_{1}})\frac{\partial
T}{\partial\theta}(\theta_{c_{1}})\\\
&-\sin(\theta_{c_{1}})\lim_{\theta\rightarrow\theta_{c_{1}}^{+}}\frac{\partial
K}{\partial\theta}(\theta,\xi)\end{aligned}$ (D.118)
$\displaystyle\begin{aligned}
T(\xi)&=\int_{\theta_{l_{1}}}^{\theta_{c_{2}}}d\theta\>\sin\theta\>K(\theta,\xi)h_{3}(\theta)+K(\theta_{c_{2}},\xi)\sin(\theta_{c_{2}})\frac{\partial
T}{\partial\theta}(\theta_{c_{2}})\\\
&+T_{c}\sin(\theta_{c_{2}})\lim_{\theta\rightarrow\theta_{c_{2}}^{-}}\frac{\partial
K}{\partial\theta}(\theta,\xi)-K(\theta_{l_{1}},\xi)\sin(\theta_{l_{1}})\frac{\partial
T}{\partial\theta}(\theta_{l_{1}})\\\
&+T(\theta_{l_{1}})\sin(\theta_{l_{1}})\lim_{\theta\rightarrow\theta_{l_{1}}^{+}}\frac{\partial
K}{\partial\theta}(\theta,\xi)\end{aligned}$ (D.119)
$\displaystyle\begin{aligned}
T(\xi)&=\int_{\theta_{c_{2}}}^{\theta_{c_{3}}}d\theta\>\sin\theta\>K(\theta,\xi)h_{4}(\theta)+K(\theta_{c_{3}},\xi)\sin(\theta_{c_{3}})\frac{\partial
T}{\partial\theta}(\theta_{c_{3}})\\\
&+T_{c}\sin(\theta_{c_{3}})\lim_{\theta\rightarrow\theta_{c_{3}}^{-}}\frac{\partial
K}{\partial\theta}(\theta,\xi)-K(\theta_{c_{2}},\xi)\sin(\theta_{c_{2}})\frac{\partial
T}{\partial\theta}(\theta_{c_{2}})\\\
&-T_{c}\sin(\theta_{c_{2}})\lim_{\theta\rightarrow\theta_{c_{2}}^{+}}\frac{\partial
K}{\partial\theta}(\theta,\xi)\end{aligned}$ (D.120)
$\displaystyle\begin{aligned}
T(\xi)&=\int_{\theta_{c_{3}}}^{\frac{\pi}{2}}d\theta\>\sin\theta\>K(\theta,\xi)h_{3}(\theta)-T(\frac{\pi}{2})\lim_{\theta\rightarrow\frac{\pi}{2}^{-}}\frac{\partial
K}{\partial\theta}(\theta,\xi)\\\
&-K(\theta_{c_{3}},\xi)\sin(\theta_{c_{3}})\frac{\partial
T}{\partial\theta}(\theta_{c_{3}})-T_{c}\sin(\theta_{c_{3}})\lim_{\theta\rightarrow\theta_{c_{3}}^{+}}\frac{\partial
K}{\partial\theta}(\theta,\xi)\end{aligned}$ (D.121)

The associated BIEs are:

$\displaystyle\begin{aligned}
T(0)&=\int_{0}^{\theta_{c_{1}}}d\theta\>\sin\theta\>K(\theta,0)h_{2}(\theta)+K(\theta_{c_{1}},0)\sin(\theta_{c_{1}})\frac{\partial
T}{\partial\theta}(\theta_{c_{1}})\\\
&+\sin(\theta_{c_{1}})\lim_{\xi\rightarrow
0^{+}}\lim_{\theta\rightarrow\theta_{c_{1}}^{-}}\frac{\partial
K}{\partial\theta}(\theta,\xi)\end{aligned}$ (D.122)
$\displaystyle\begin{aligned}
-1&=\int_{0}^{\theta_{c_{1}}}d\theta\>\sin\theta\>K(\theta,\theta_{c_{1}})h_{2}(\theta)+\lim_{\xi\rightarrow\theta_{c_{1}}^{-}}K(\theta_{c_{1}},\xi)\sin(\theta_{c_{1}})\frac{\partial
T}{\partial\theta}(\theta_{c_{1}})\\\
&+\sin(\theta_{c_{1}})\lim_{\xi\rightarrow\theta_{c_{1}}^{-}}\lim_{\theta\rightarrow\theta_{c_{1}}^{-}}\frac{\partial
K}{\partial\theta}(\theta,\xi)\end{aligned}$ (D.123)
$\displaystyle\begin{aligned}
-1&=\int_{\theta_{c_{1}}}^{\theta_{l_{1}}}d\theta\>\sin\theta\>K(\theta,\theta_{c_{1}})h_{1}(\theta)+K(\theta_{l_{1}},\theta_{c_{1}})\sin(\theta_{l_{1}})\frac{\partial
T}{\partial\theta}(\theta_{l_{1}})\\\
&-T(\theta_{l_{1}})\sin(\theta_{l_{1}})\lim_{\xi\rightarrow\theta_{c_{1}}^{+}}\lim_{\theta\rightarrow\theta_{l_{1}}^{-}}\frac{\partial
K}{\partial\theta}(\theta,\xi)-\lim_{\xi\rightarrow\theta_{c_{1}}^{+}}K(\theta_{c_{1}},\xi)\sin(\theta_{c_{1}})\frac{\partial
T}{\partial\theta}(\theta_{c_{1}})\\\
&-\sin(\theta_{c_{1}})\lim_{\xi\rightarrow\theta_{c_{1}}^{+}}\lim_{\theta\rightarrow\theta_{c_{1}}^{+}}\frac{\partial
K}{\partial\theta}(\theta,\xi)\end{aligned}$ (D.124)
$\displaystyle\begin{aligned}
T(\theta_{l_{1}})&=\int_{\theta_{c_{1}}}^{\theta_{l_{1}}}d\theta\>\sin\theta\>K(\theta,\theta_{l_{1}})h_{1}(\theta)+\lim_{\xi\rightarrow\theta_{l_{1}}^{-}}K(\theta_{l_{1}},\xi)\sin(\theta_{l_{1}})\frac{\partial
T}{\partial\theta}(\theta_{l_{1}})\\\
&-T(\theta_{l_{1}})\sin(\theta_{l_{1}})\lim_{\xi\rightarrow\theta_{l_{1}}^{-}}\lim_{\theta\rightarrow\theta_{l_{1}}^{-}}\frac{\partial
K}{\partial\theta}(\theta,\xi)-K(\theta_{c_{1}},\theta_{l_{1}})\sin(\theta_{c_{1}})\frac{\partial
T}{\partial\theta}(\theta_{c_{1}})\\\
&-\sin(\theta_{c_{1}})\lim_{\xi\rightarrow\theta_{l_{1}}^{-}}\lim_{\theta\rightarrow\theta_{c_{1}}^{+}}\frac{\partial
K}{\partial\theta}(\theta,\xi)\end{aligned}$ (D.125)
$\displaystyle\begin{aligned}
T(\theta_{l_{1}})&=\int_{\theta_{l_{1}}}^{\theta_{c_{2}}}d\theta\>\sin\theta\>K(\theta,\theta_{l_{1}})h_{3}(\theta)+K(\theta_{c_{2}},\theta_{l_{1}})\sin(\theta_{c_{2}})\frac{\partial
T}{\partial\theta}(\theta_{c_{2}})\\\
&+T_{c}\sin(\theta_{c_{2}})\lim_{\xi\rightarrow\theta_{l_{1}}^{+}}\lim_{\theta\rightarrow\theta_{l_{2}}^{-}}\frac{\partial
K}{\partial\theta}(\theta,\xi)-\lim_{\xi\rightarrow\theta_{l_{1}}^{+}}K(\theta_{l_{1}},\xi)\sin(\theta_{l_{1}})\frac{\partial
T}{\partial\theta}(\theta_{l_{1}})\\\
&+T(\theta_{l_{1}})\sin(\theta_{l_{1}})\lim_{\xi\rightarrow\theta_{l_{1}}^{+}}\lim_{\theta\rightarrow\theta_{l_{1}}^{+}}\frac{\partial
K}{\partial\theta}(\theta,\xi)\end{aligned}$ (D.126)
$\displaystyle\begin{aligned}
-T_{c}&=\int_{\theta_{l_{1}}}^{\theta_{c_{2}}}d\theta\>\sin\theta\>K(\theta,\theta_{c_{2}})h_{3}(\theta)+\lim_{\xi\rightarrow\theta_{c_{2}}^{-}}K(\theta_{c_{2}},\xi)\sin(\theta_{c_{2}})\frac{\partial
T}{\partial\theta}(\theta_{c_{2}})\\\
&+T_{c}\sin(\theta_{c_{2}})\lim_{\xi\rightarrow\theta_{c_{2}}^{-}}\lim_{\theta\rightarrow\theta_{c_{2}}^{-}}\frac{\partial
K}{\partial\theta}(\theta,\xi)-K(\theta_{l_{1}},\theta_{c_{2}})\sin(\theta_{l_{1}})\frac{\partial
T}{\partial\theta}(\theta_{l_{1}})\\\
&+T(\theta_{l_{1}})\sin(\theta_{l_{1}})\lim_{\xi\rightarrow\theta_{c_{2}}^{-}}\lim_{\theta\rightarrow\theta_{l_{1}}^{+}}\frac{\partial
K}{\partial\theta}(\theta,\xi)\end{aligned}$ (D.127)
$\displaystyle\begin{aligned}
-T_{c}&=\int_{\theta_{c_{2}}}^{\theta_{c_{3}}}d\theta\>\sin\theta\>K(\theta,\theta_{c_{2}})h_{4}(\theta)+K(\theta_{c_{3}},\theta_{c_{2}})\sin(\theta_{c_{3}})\frac{\partial
T}{\partial\theta}(\theta_{c_{3}})\\\
&+T_{c}\sin(\theta_{c_{3}})\lim_{\xi\rightarrow\theta_{c_{2}}^{+}}\lim_{\theta\rightarrow\theta_{c_{3}}^{-}}\frac{\partial
K}{\partial\theta}(\theta,\xi)-\lim_{\xi\rightarrow\theta_{c_{2}}^{+}}K(\theta_{c_{2}},\xi)\sin(\theta_{c_{2}})\frac{\partial
T}{\partial\theta}(\theta_{c_{2}})\\\
&-T_{c}\sin(\theta_{c_{2}})\lim_{\xi\rightarrow\theta_{c_{2}}^{-}}\lim_{\theta\rightarrow\theta_{c_{2}}^{+}}\frac{\partial
K}{\partial\theta}(\theta,\xi)\end{aligned}$ (D.128)
$\displaystyle\begin{aligned}
-T_{c}&=\int_{\theta_{c_{2}}}^{\theta_{c_{3}}}d\theta\>\sin\theta\>K(\theta,\theta_{c_{3}})h_{4}(\theta)+\lim_{\xi\rightarrow\theta_{c_{3}}^{-}}K(\theta_{c_{3}},\xi)\sin(\theta_{c_{3}})\frac{\partial
T}{\partial\theta}(\theta_{c_{3}})\\\
&+T_{c}\sin(\theta_{c_{3}})\lim_{\xi\rightarrow\theta_{c_{2}}^{-}}\lim_{\theta\rightarrow\theta_{c_{3}}^{-}}\frac{\partial
K}{\partial\theta}(\theta,\xi)-K(\theta_{c_{2}},\theta_{c_{3}})\sin(\theta_{c_{2}})\frac{\partial
T}{\partial\theta}(\theta_{c_{2}})\\\
&-T_{c}\sin(\theta_{c_{2}})\lim_{\xi\rightarrow\theta_{c_{2}}^{-}}\lim_{\theta\rightarrow\theta_{c_{2}}^{+}}\frac{\partial
K}{\partial\theta}(\theta,\xi)\end{aligned}$ (D.129)
$\displaystyle\begin{aligned}
-T_{c}&=\int_{\theta_{c_{3}}}^{\frac{\pi}{2}}d\theta\>\sin\theta\>K(\theta,\theta_{c_{3}})h_{3}(\theta)-T(\frac{\pi}{2})\lim_{\xi\rightarrow\theta_{c_{3}}^{+}}\lim_{\theta\rightarrow\frac{\pi}{2}^{-}}\frac{\partial
K}{\partial\theta}(\theta,\xi)\\\
&-\lim_{\xi\rightarrow\theta_{c_{3}}^{+}}K(\theta_{c_{3}},\xi)\sin(\theta_{c_{3}})\frac{\partial
T}{\partial\theta}(\theta_{c_{3}})-T_{c}\sin(\theta_{c_{3}})\lim_{\xi\rightarrow\theta_{c_{3}}^{+}}\lim_{\theta\rightarrow\theta_{c_{3}}^{+}}\frac{\partial
K}{\partial\theta}(\theta,\xi)\end{aligned}$ (D.130)
$\displaystyle\begin{aligned}
T(\frac{\pi}{2})&=\int_{\theta_{c_{3}}}^{\frac{\pi}{2}}d\theta\>\sin\theta\>K(\theta,\frac{\pi}{2})h_{3}(\theta)-T(\frac{\pi}{2})\lim_{\xi\rightarrow\frac{\pi}{2}^{-}}\lim_{\theta\rightarrow\frac{\pi}{2}^{-}}\frac{\partial
K}{\partial\theta}(\theta,\xi)\\\
&-K(\theta_{c_{3}},\frac{\pi}{2})\sin(\theta_{c_{3}})\frac{\partial
T}{\partial\theta}(\theta_{c_{3}})-T_{c}\sin(\theta_{c_{3}})\lim_{\xi\rightarrow\frac{\pi}{2}^{-}}\lim_{\theta\rightarrow\theta_{c_{3}}^{+}}\frac{\partial
K}{\partial\theta}(\theta,\xi)\end{aligned}$ (D.131)

Solutions corresponding to an ice distribution with ice present in region
(III) and (V) are given by (D.117)-(D.117), but changing $h_{3}\to h_{4}$ in
(D.119) and (D.121), as well as $h_{4}\to h_{3}$ in (D.120). BIEs are
(D.122)-(D.131), changing $h_{3}\to h_{4}$ in (D.126), (D.127), (D.130) and
(D.131), and $h_{4}\to h_{3}$ in (D.128) and (D.129).

## References

  * [1] M.. Budyko  “The effect of solar radiation variations on the climate of the Earth”  In _Tellus_ 21, 1969, pp. 611–619
  * [2] Robert F Cahalan and Gerald R North  “A stability theorem for energy-balance climate models”  In _Journal of Atmospheric Sciences_ 36.7, 1979, pp. 1178–1188
  * [3] Martin Claussen et al.  “Earth system models of intermediate complexity: closing the gap in the spectrum of climate system models”  In _Climate dynamics_ 18 Springer, 2002, pp. 579–586
  * [4] Isaac M Held and Max J Suarez  “Simple albedo feedback models of the icecaps”  In _Tellus_ 26.6 Wiley Online Library, 1974, pp. 613–629
  * [5] Paul F Hoffman, Alan J Kaufman, Galen P Halverson and Daniel P Schrag  “A Neoproterozoic snowball earth”  In _science_ 281.5381 American Association for the Advancement of Science, 1998, pp. 1342–1346
  * [6] Hans Kaper and Hans Engler  “Zonal Energy Budget”  In _Mathematics & Climate_ Society for IndustrialApplied Mathematics, 2013, pp. 143–152
  * [7] Richard McGehee and Clarence Lehman  “A paleoclimate model of ice-albedo feedback forced by variations in Earth’s orbit”  In _SIAM Journal on Applied Dynamical Systems_ 11.2 SIAM, 2012, pp. 684–707
  * [8] JG Mengel, DA Short and GR North  “Seasonal snowline instability in an energy balance model”  In _Climate Dynamics_ 2 Springer, 1988, pp. 127–131
  * [9] Gerald R North  “Analytical solution to a simple climate model with diffusive heat transport”  In _Journal of Atmospheric Sciences_ 32.7, 1975, pp. 1301–1307
  * [10] Gerald R North  “Theory of energy-balance climate models”  In _Journal of Atmospheric Sciences_ 32.11, 1975, pp. 2033–2043
  * [11] Gerald R North  “Multiple solutions in energy balance climate models”  In _Global and Planetary Change_ 2.3-4 Elsevier, 1990, pp. 225–235
  * [12] Gerald R North, Robert F Cahalan and James A Coakley Jr  “Energy balance climate models”  In _Reviews of Geophysics_ 19.1 Wiley Online Library, 1981, pp. 91–121
  * [13] Gerald R North and Kwang-Yul Kim  “Energy balance climate models”  John Wiley & Sons, 2017
  * [14] Gerald R North and Kwang-Yul Kim  “Energy balance climate models”  John Wiley & Sons, 2017
  * [15] Aksel Samuelsberg  “On the effects of symmetry in the energy balance on a sphere”, 2022
  * [16] William D Sellers  “A global climatic model based on the energy balance of the earth-atmosphere system”  In _Journal of Applied Meteorology and Climatology_ 8.3, 1969, pp. 392–400
  * [17] SAMUEL Shen and GR North  “A simple proof of the slope stability theorem for energy balance climate models”  In _Can. Appl. Math Quart_ 7, 1999, pp. 203–215
  * [18] Sergei Soldatenko and Robert Colman  “Climate variability from annual to multi-decadal timescales in a two-layer stochastic energy balance model: analytic solutions and implications for general circulation models”  In _Tellus A: Dynamic Meteorology and Oceanography_ 71.1 Taylor & Francis, 2019, pp. 1554421
  * [19] Aiko Voigt and Jochem Marotzke  “The transition from the present-day climate to a modern Snowball Earth”  In _Climate dynamics_ 35 Springer, 2010, pp. 887–905
  * [20] Esther Widiasih  “Dynamics of the Budyko Energy Balance Model”  In _SIAM Journal on Applied Dynamical Systems_ 12, 2011  DOI: 10.1137/100812306


# Splitting source code identifiers using
Bidirectional LSTM Recurrent Neural Network

Vadim Markovtsev<EMAIL_ADDRESS>Waren Long<EMAIL_ADDRESS>Egor
Bulychev<EMAIL_ADDRESS>Romain Keramitas<EMAIL_ADDRESS>Konstantin
Slavnov<EMAIL_ADDRESS>Gabor Markowski<EMAIL_ADDRESS>
###### Abstract

Programmers make rich use of natural language in the source code they write
through identifiers and comments. Source code identifiers are selected from a
pool of tokens which are strongly related to the meaning, naming conventions,
and context. These tokens are often combined to produce more precise and
obvious designations. Such multi-part identifiers count for 97% of all naming
tokens in the _Public Git Archive_ \- the largest dataset of Git repositories
to date. We introduce a bidirectional LSTM recurrent neural network to detect
subtokens in source code identifiers. We trained that network on 34.9 million
distinct splittable identifiers collected from 182,014 open source projects in
Public Git Archive, and show that it outperforms several other machine
learning models. The proposed network can be used to improve the upstream
models which are based on source code identifiers, as well as improving
developer experience allowing writing code without switching the keyboard
case.

source{d}, Madrid, Spain

##  1 Introduction

The descriptiveness of source code identifiers is critical for readability and
maintainability [21]. This property is hard to ensure by using exclusively
single words. Therefore it is common practice to concatenate several multiple
words into a single identifier. Whitespace characters in identifiers are
forbidden by most programming languages, so there are naming conventions [5]
like _CamelCase_ or _snakecase_ which specify the concatenation rules. It is
possible to apply simple heuristics, backtrack those rules and restore the
original words from identifiers. For example, FooBar or foobar are trivially
disassembled into foo and bar. However, if there is a compound identifier
consisting of only lowercase or only uppercase characters, splitting requires
domain knowledge and cannot be easily performed.

According to our estimations, up to 7.5% of the identifiers are not splittable
by style driven heuristics; among the rest, 15% contain further splittable
parts after heuristics. This leads to bigger vocabulary sizes, worse
performance, and reduced quality of upstream investigation in the areas of
source code analysis and Machine Learning on Source Code (MLonCode). A deep
learning-based parser, capable of learning to tokenize identifiers from many
training examples, can enhance the quality of research in topics like
identifier embeddings [27], deduplication [22], topic modeling [25], and
naming suggestions [9].

The main contributions of this paper are:

  * •

We built the biggest dataset of 49.2 million source code identifiers extracted
from _Public Git Archive_ [26] \- The 182,014 most popular GitHub
repositories.

  * •

We are the first to apply a recurrent neural network to split ”unsplittable”
identifiers. We show that the character-level bidirectional LSTM type of
recurrent neural network (RNN) performs better than the character-level
bidirectional GRU, character-level convolutional neural network, the gradient
boosted decision tree, the statistical dynamic programming model, and the
unsmoothed maximum likelihood character-level model.

##  2 Identifier extraction

This section describes the source code identifier extraction pipeline which
was used to generate the train dataset from the _Public Git Archive_.

We processed each Git repository with the  source{d} engine [7] to determine
the main branch and its head revision, took the files from that revision, and
identifed the programming languages of those files. We extracted identifiers
from files according to the identified language with babelfish [3] and
pygments [6]. Babelfish is a self-hosted server for universal source code
parsing, it converts code files into Universal Abstract Syntax Trees. We fall
back to Pygments for those languages which are not supported yet by Babelfish.
Pygments was developed to highlight source code and uses regular expressions,
however it makes mistakes and introduces noise.

We obtained 62.0 million identifiers after removing duplicates. This number
reduced to 49.2 after manual rule-based filtering of noisy output from
Pygments. We then split the identifiers according to the common naming
conventions. For example FooBarBaz becomes foo bar baz, and methodbase turns
into method base. The listing of the function code which implements the
heuristics is provided in appendix A. We left only those which consisted of
more than one part and obtained 36.1 million distinct subtoken sequences. Some
identifiers aliased to the same subtoken sequence. The distribution of
identifier lengths had a long tail as seen on Fig. 1, so we put a threshold of
maximum identifier length to 40 characters. The length threshold further
reduced the dataset to 34.9 million unique subtoken sequences. All the models
we trained used as input the lowercase strings created by merging the subtoken
sequences together and the corresponding indices of subtoken boundaries.
Figure 2 depicts the head of the frequency distribution of the subtokens.

The raw dataset of 49.2 million identifiers is available for download on
GitHub [4]. Currently available datasets of source code identifiers contain
less than a million entities and focus on particular programming languages,
such as Java [12].

Figure 1: Distribution of identifier lengths
Figure 2: Distribution of most frequent subtokens

##  3 Baselines

We now describe the models to which we compare our character-level
bidirectional LSTM recurrent neural network.

### Maximum likelihood character-level model

Probabilistic maximum likelihood language models (ML LM) are typical for
Natural Language Processing [28]. Given the sequence of characters
$a_{\\_}1,\dots,a_{\\_}M$ representing an identifier, we evaluate for each
character $a_{\\_}{i+1}$ the probability that the subsequence
$a_{\\_}1,\dots,a_{\\_}i$ is a prefix, and pick the prefix that maximizes that
probability, assuming
$P(a_{\\_}1,\dots,a_{\\_}i)=\prod_{\\_}{k=1}^{i}P(a_{\\_}k\mid
a_{\\_}{k-1},\dots,a_{\\_}1)$. We repeat this procedure from the character
following the chosen prefix. In the case of prefixes for which we have no
prior knowledge we slide the root forward until the match is found. Similarly
to n-gram models [17], our character-level LM makes the _Markov assumption_
that the sequence of characters is a memoryless stochastic process, so we
assert that $P(a_{\\_}i\mid a_{\\_}{i-1},\dots,a_{\\_}1)=P(a_{\\_}i\mid
a_{\\_}{i-1},\dots,a_{\\_}{i-n+1})$. We estimate these conditional
probabilities using maximum likelihood [23]. We trained two unsmoothed models
independently, corresponding to forward and backward reading direction.
Finally, we combined them via the logical conjunction and disjunction. The
tree depth was 11 due to the technical limitations - bigger depths require too
much operating memory. The implementation was CharStatModel [24].

### Dynamic programming

Inspired by the dynamic programming approach to splitting words [20], we
implemented the similar solution based on word frequencies. By making the
hypothesis that the words are independent from one another, we can model the
probability of a sequence of words using frequencies computed on a corpus. We
trained on the generic Wikipedia corpus and on the unique subtokens in our
identifier dataset, either assuming Zipf prior or the posterior. Our
implementation was based on wordninja [10].

The main limitation of the statistical approaches is their inability to
predict out of vocabulary words, especially method and class names which
represent the substantial portion of identifiers in the validation set. The
only way to compensate this drawback is to increase the length of the context
on which we compute priors, simultaneously worsening the data sparsity problem
[9] and increasing the time and memory requirements.

### Gradient boosting on decision trees

We trained the gradient boosting on decision trees (GBDT)) using XGBoost [13].
The tree input was a 10-character window with ”a”-aligned ASCII codes instead
of one-hot encoding. We didn’t choose a larger window to avoid introducing
noise, given bulk of our identifiers were shorter then the 40 character limit.
The windows were centered at each split point and we also generated 80%
negative samples at random non-split positions. The maximum tree depth was 30,
the number of boosting trees was 50.

### Character-level Convolutional Neural Network

We stacked 3 Inception layers [30], with 1-dimensional ReLU kernels spanning
over 2, 4, 8, and 16 one-hot encoded characters, and 32 dimensionality
reducing ReLU kernels of size 1. Thus the output of each layer was shaped 40
by 32. The last layer was connected to the time-distributed dense layer with
sigmoid activation and binary labels. There was no regularization as the
dataset size was big enough and we used RMSProp optimizer [18].

##  4 Character-level bidirectional recurrent neural network

Character-level bidirectional recurrent neural networks (BiRNNs) [29] are a
family of models that combine two recurrent networks moving through each
character in a sequence in the opposite directions and starting from the
opposite sides. BiRNNs are an effective solution for sequence modeling, so we
tried them for the splitting task. Given that the tokens may be long, we chose
LSTM [16] over vanilla RNNs to overcome the vanishing gradients problem.
Besides, we compared LSTM to GRU [15] as GRU was shown to perform with similar
quality but are faster to train.

Figure 3: BiLSTM network with one layer running on foobar. The vertical dashed
line indicates the separation point.

Fig. 3 demonstrates the architecture of a BiLSTM network to split identifiers.
It processes the characters of each identifier in both directions. The schema
contains a single recurrent layer for simplicity, however, the real network is
built with two stacked layers. The second recurrent layer is connected to the
time-distributed dense layer with binary outputs and sigmoid activation. An
output of 1 means the character is a split point and 0 it is not. Sigmoid
activation was used instead of softmax because there can be more than one
split point per identifier.

We trained our BiLSTM network on two NVIDIA GTX 1080 GPUs using Keras [14]
with a Tensorflow backend [8]. It took approximately 14 hours to complete 10
epochs. Table 4 lists the hyperparameters we chose using Hyperopt [11]. The
training curves are on Figure 4.

RNN sequence length | 40
---|---
Layer sizes | 256, 256
Batch size | 512
Epochs | 10
Optimizer | Adam [19]
Learning rate | 0.001
Table 1: Network train parameters

Figure 4: Training curves for the BiLSTM

##  5 Evaluation

We divided the dataset into 80% train and 20% validation and calculated
precision, recall and $F_{\\_}1$ score for each of the models. Precision is
defined as the ratio of correct splitting predictions and the total number of
predictions, recall as the ratio of correct splitting predictions and the
ground truth number of splits, and $F_{\\_}1$ score is the harmonic average of
precision and recall. The results are shown on Fig. 5 and Table 5. The worst
models are clearly the statistical ones, however, the conjunction of
character-level ML LMs achieved the highest precision among all with 96.6%.
Character-level CNN is close to the top, it has great evaluation speed and can
be chosen if the run time is important. LSTM performed better than GRU and
achieved the highest $F_{\\_}1$ score with 95% precision and 96% recall.

Model | Precision | Recall | $F_{\\_}1$
---|---|---|---
Char. ML LM $\rightarrow\lor\leftarrow$ | 0.563 | 0.936 | 0.703
Char. ML LM $\rightarrow\land\leftarrow$ | 0.966 | 0.573 | 0.719
Stat. dyn. prog., Wiki | 0.741 | 0.912 | 0.818
Stat. dyn. prog., Zipf | 0.937 | 0.783 | 0.853
Stat. dyn. prog., posterior | 0.931 | 0.892 | 0.911
GBDT | 0.931 | 0.924 | 0.928
Char. CNN | 0.922 | 0.938 | 0.930
Char. BiGRU | 0.945 | 0.955 | 0.949
Char. BiLSTM | 0.947 | 0.958 | 0.952
Table 2: Evaluation results

Figure 5: Model comparison, $F_{\\_}1$ isocurves are dashed

##  6 Applications

The presented identifier splitters reduce the number of unique subtokens by
64%. We ran the BiLSTM model on the subtoken sequences from the dataset and
generated refined subtoken sequences. We then measured the new number of
unique identifier parts, which was reduced from 2,940,710to 1,065,153. Samples
of identifiers split by heuristics and our model are listed in appendix B.
Smaller vocabulary size leads to faster training of the upstream models such
as identifier embeddings based on the structural co-occurrence scope as a
context [2] or topic models of files and projects [25].

It is also possible to use our model to automatically split identifiers
written in the same case without whitespace on the keyboard. This simplifies
and speeds up typing the code provided by the number of splitting errors is
low enough. Depending on the naming style, the described algorithm may save
”Shift” or ”Shift + Underscore” keystrokes. The reached quality metrics are
good enough, our network makes an error with 50% probability after
$\log_{\\_}{0.95}{0.5}\approx 14$ identifiers assuming that each identifier
contains a single split point.

##  7 Conclusion

We created and published a dataset with 49.2 million distinct source code
identifiers extracted from Public Git Archive, the largest one to date. We
trained several machine learning models on that dataset and showed that the
character-level bidirectional LSTM recurrent neural network (BiLSTM) performs
best, reaching 95% precision and 96% recall on the validation set. To our
knowledge, it is the first time RNNs were applied to the source code
identifier split problem. BiLSTM significantly (by 2 times) reduces the core
vocabulary size in upstream problems and is good enough to improve the speed
at which people write code.

## References

  * [1]
  * [2] _blog.sourced.tech/post/id2vec_.  blog.sourced.tech/post/id2vec/.
  * [3] _github.com/bblfsh_.  github.com/bblfsh.
  * [4] _github.com/src-d/datasets/tree/master/Identifiers_.  github.com/src-d/datasets/tree/master/Identifiers.
  * [5] _Naming convention (programming)_.  wikiwand.com/en/Namingconvention(programming).
  * [6] _Pygments - generic syntax highlighter_.  pygments.org/.
  * [7] _src-d/engine_.  github.com/src-d/engine.
  * [8] Martín Abadi et al.: _TensorFlow: Large-Scale Machine Learning on Heterogeneous Systems_.  tensorflow.org.
  * [9] Miltiadis Allamanis, Earl T. Barr, Christian Bird & Charles Sutton (2015): _Suggesting Accurate Method and Class Names_.  In: FSE, ACM, pp. 38–49, 10.1145/2786805.2786849.
  * [10] Derek Anderson: _keredson/wordninja_.  github.com/keredson/wordninja.
  * [11] James Bergstra, Dan Yamins & David D. Cox (2012): _Making a Science of Model Search_.  CoRR.  Available at https://arxiv.org/abs/1209.5111.
  * [12] Simon Butler, Michel Wermelinger, Yijun Yu & Helen Sharp (2013): _INVocD: Identifier Name Vocabulary Dataset_.  In: MSR, IEEE, pp. 405–408, 10.1109/MSR.2013.6624056.
  * [13] Tianqi Chen & Carlos Guestrin (2016): _XGBoost: A Scalable Tree Boosting System_.  In: KDD, ACM, pp. 785–794, 10.1145/2939672.2939785.
  * [14] François Chollet et al.: _Keras_.  keras.io.
  * [15] Junyoung Chung, Çaglar Gülçehre, KyungHyun Cho & Yoshua Bengio (2014): _Empirical Evaluation of Gated Recurrent Neural Networks on Sequence Modeling_.  CoRR, 10.1007/978-3-319-67220-53.
  * [16] Alex Graves (2008): _Supervised sequence labelling with recurrent neural networks._ Ph.D. thesis, Technical University Munich, 10.1007/978-3-642-24797-2.
  * [17] Abram Hindle, Earl T. Barr, Zhendong Su, Mark Gabel & Premkumar Devanbu (2012): _On the Naturalness of Software_.  In: ICSE, IEEE, pp. 837–847, 10.1145/2902362.
  * [18] Geoffrey Hinton: _RMSProp_.  www.cs.toronto.edu/~tijmen/csc321/slides/lectureslideslec6.pdf.
  * [19] Diederik P. Kingma & Jimmy Ba (2014): _Adam: A Method for Stochastic Optimization._ CoRR.  Available at https://arxiv.org/abs/1412.6980.
  * [20] Philipp Koehn & Kevin Knight (2003): _Empirical Methods for Compound Splitting_.  In: EACL, pp. 187–193, 10.3115/1067807.1067833.
  * [21] D. Lawrie, C. Morrell, H. Feild & D. Binkley (2006): _What’s in a Name? A Study of Identifiers_.  In: ICPC, IEEE, pp. 3–12, 10.1109/ICPC.2006.51.
  * [22] Cristina V. Lopes, Petr Maj, Pedro Martins, Vaibhav Saini, Di Yang, Jakub Zitny, Hitesh Sajnani & Jan Vitek (2017): _DéJà Vu: A Map of Code Duplicates on GitHub_.  Proc. ACM Program. Lang. 1(OOPSLA), pp. 84:1–84:28, 10.1145/3133908.
  * [23] Christopher D. Manning & Hinrich Schütze (1999): _Foundations of Statistical Natural Language Processing_.  MIT Press, 10.1017/S1351324902212851.
  * [24] Vadim Markovtsev: _vmarkovtsev/CharStatModel_.  github.com/vmarkovtsev/CharStatModel.
  * [25] Vadim Markovtsev & Eiso Kant (2017): _Topic modeling of public repositories at scale using names in source code_.  CoRR.  Available at https://arxiv.org/abs/1704.00135.
  * [26] Vadim Markovtsev & Waren Long (2018): _Public Git Archive: a Big Code dataset for all_.  In: MSR, ACM, 10.1145/3196398.3196464.
  * [27] Trong Duc Nguyen, Anh Tuan Nguyen, Hung Dang Phan & Tien N. Nguyen (2017): _Exploring API Embedding for API Usages and Applications_.  In: ICSE, IEEE, pp. 438–449, 10.1109/ICSE.2017.47.
  * [28] Tung Thanh Nguyen, Anh Tuan Nguyen, Hoan Anh Nguyen & Tien N. Nguyen (2013): _A Statistical Semantic Language Model for Source Code_.  In: FSE, ACM, pp. 532–542, 10.1145/2491411.2491458.
  * [29] M. Schuster & K.K. Paliwal (1997): _Bidirectional Recurrent Neural Networks_.  Trans. Sig. Proc. 45(11), pp. 2673–2681, 10.1109/78.650093.
  * [30] Christian Szegedy, Wei Liu, Yangqing Jia, Pierre Sermanet, Scott Reed, Dragomir Anguelov, Dumitru Erhan, Vincent Vanhoucke & Andrew Rabinovich (2015): _Going Deeper with Convolutions_.  In: CVPR, pp. 1–9, 10.1109/CVPR.2015.7298594.

##  Appendix A Identifier splitting algorithm, Python 3.4+

⬇

NAME_BREAKUP_RE = re.compile(r”[Ëa-zA-Z]+”)

min_split_length = 3

def split(token):

token = token.strip()

prev_p = [””]

def ret(name):

r = name.lower()

if len(name) >= min_split_length:

yield r

if prev_p[0]:

yield prev_p[0] + r

prev_p[0] = ””

else:

prev_p[0] = r

for part in NAME_BREAKUP_RE.split(token):

if not part:

continue

prev = part[0]

pos = 0

for i in range(1, len(part)):

this = part[i]

if prev.islower() and this.isupper():

yield from ret(part[pos:i])

pos = i

elif prev.isupper() and this.islower():

if 0 < i - 1 - pos <= min_split_length:

yield from ret(part[pos:i - 1])

pos = i - 1

elif i - 1 > pos:

yield from ret(part[pos:i])

pos = i

prev = this

last = part[pos:]

if last:

yield from ret(last)

##  Appendix B Examples of identifiers from the dataset processed by
heuristics and the BiLSTM model

Input identifier | Output TokenParser | Output BiLSTM
---|---|---
OMXBUFFERFLAGCODECCONFIG | omx bufferflag codecconfig | omx buffer flag codec config
metamodelength | metamodelength | meta mode length
rESETTOUCHCONTROLS | r esettouchcontrols | reset touch controls
IDREQUESTRESPONSE | id requestresponse | id request response
%afterfor | afterfor | after for
simpleblogsearch | simpleblogsearch | simple blog search
namehashfromuid | namehash from uid | name hash from uid
GPUSHADERDESCGETCACHEID | gpushaderdesc getcacheid | gpu shader desc get cache id
oneditvaluesilence | oneditvaluesilence | on edit value silence
XGMACTXSENDAPPGOODPKTS | xgmac tx sendappgoodpkts | xgmac tx send app good pkts
closenessthreshold | closenessthreshold | closeness threshold
testwritestartdocument | test writestartdocument | test write start document
dspacehash | dspacehash | d space hash
testfiledate | testfiledate | test file date
ASSOCSTRSHELLEXTENSION | assocstr shellextension | assoc str shell extension