1 Introduction

In [1], Akbulut and King proved that “All knots are algebraic”. Since the word algebraic carries several different meanings, their title could cause confusion. Besides links that are built from rational tangles as studied by Conway [10] the term “algebraic link” is nowadays usually reserved for links of isolated singularities of complex hypersurfaces. These are known to be unions of certain iterated cables of torus links. So clearly not all knots are algebraic in this sense. If the word “algebraic” is interpreted as “an algebraic set”, then Akbulut’s and King’s title is a true statement, but also a classical and well-known result in algebraic geometry, see for example the Nash–Tognoli theorem [5].

The correct interpretation of Akbulut’s and King’s “algebraic knots” lies somewhere between the notion of the link of an isolated singularity and an algebraic set. Consider a real polynomial map . A critical point of f is a point \(p\in {\mathbb {R}}^4\), where the real Jacobian matrix Df(p) of f does not have full rank. We say that the origin \(O\in {\mathbb {R}}^4\) is a weakly isolated singularity of f, if \(f(O)=0\), \(Df(O)=0\) (i.e., the \(2\hspace{1.111pt}{\times }\hspace{1.111pt}4\)-matrix with zero entries) and there is some neighbourhood U of the origin such that \(U\backslash \{O\}\cap f^{-1}(0)\) contains no critical points of f. Hence f is allowed to have a line of critical points passing through the origin, but the origin should be an isolated intersection point of \(f^{-1}(0)\) and the critical set.

Every weakly isolated singularity can be associated with a link, since the link type of the intersection of \(f^{-1}(0)\) and the 3-sphere \(S_{\rho }^3\) of radius \(\rho \) does not depend on the sufficiently small radius \(\rho >0\). We call \(L_f=f^{-1}(0)\cap S_{\rho }^3\) the link of the singularity.

Akbulut and King prove that every link in the 3-sphere arises as the link of a weakly isolated singularity of a real polynomial map . Thus their interpretation of the term “algebraic” does involve singularities, but of real polynomial maps instead of complex ones, and their definition of an isolated singularity is (as the name suggests) so weak that there is no restriction in the type of links that can be obtained this way.

Note that by composing an inverse stereographic projection with f and clearing the denominator we obtain a real polynomial map on \({\mathbb {R}}^3\) whose variety is isotopic to the link of the singularity \(L_f\) of f, so that Akbulut’s and King’s proof also establishes \(L_f\) as an algebraic set in \({\mathbb {R}}^3\).

In [6], we discuss a construction of weakly isolated singularities for certain links. It produces functions that can be written as polynomials in complex variables uv and the complex conjugate \(\overline{v}\). Hence they are holomorphic with respect to one complex variable, but not necessarily with respect to the other. We call such functions semiholomorphic. They form an interesting family of mixed polynomials [15], lying between the complex and the real setting. However, the construction in [6] only works for links that satisfy certain symmetry constraints, such as being the closure of a 2-periodic braid. This is necessary in order to obtain polynomials with the desired properties rather than more general real analytic maps.

In this paper we offer a constructive proof of Akbulut’s and King’s result, an algorithm that takes a braid word as input and produces a polynomial with a weakly isolated singularity, whose link is ambient isotopic to the closure of the given braid. Furthermore, all of the constructed polynomials are semiholomorphic.

Theorem 1.1

Algorithm 1 (outlined in Sect. 3) constructs for any given braid B on s strands a semiholomorphic polynomial with \({\deg }{}_{\hspace{1.111pt}u}(f)=s\), with a weakly isolated singularity at the origin and \(L_f\) ambient isotopic to the closure of B.

The algorithm is based on trigonometric interpolation, which allows us to prove upper bounds on the polynomial degrees of the constructed functions.

Theorem 1.2

Let B be a braid with s strands, \(\ell \) crossings and let denote the set of components of its closure, which by assumption is not the unknot. Let \(s_C\) denote the number of strands of the component . Then the degree of the polynomial f that Algorithm 1 constructs from the input B is at most

Corollary 1.3

If the closure of B is a non-trivial knot, the degree of the polynomial f constructed by Algorithm 1 is bounded by

$$\begin{aligned} \deg \hspace{0.55542pt}(f)\leqslant 2s\ell (s+1)+1. \end{aligned}$$

We would also like to point out that there is a stronger notion of isolation of singularities of real polynomial maps. We say that the origin is an isolated singularity if \(f(O)=0\), \(Df(O)=0\) and \(U\backslash \{O\}\) contains no critical points of f. Typically the set of critical points of f is 1-dimensional, so that polynomials with isolated singularities are very rare. The links that arise from isolated singularities, the real algebraic links, have not been classified yet and are conjectured to be equal to the set of fibered links [4]. Some constructions of isolated singularities have been put forward to make progress on this conjecture [6, 13, 16], but the family of links that are known to be real algebraic is still comparatively small. A construction similar to Algorithm 1, which produces isolated singularities for large families of fibered links will be the subject of a future paper [7].

Holomorphic polynomials have a weakly isolated singularity if and only if they have an isolated singularity. Therefore, the construction can only result in a holomorphic function if the link in question is a (complex) algebraic link. In particular, the polynomials for quasipositive links are in general not holomorphic, even though the links are transverse \({\mathbb {C}}\)-links [9, 18]. In general, we should not expect the constructed polynomials to be holomorphic even if the corresponding link is complex algebraic.

Our algorithm can be interpreted as a deformation of a Newton degenerate mixed function in the sense of [3] or [15]. Our results can thus be viewed in the broader context of the question: How do deformations of real polynomial mappings affect the topology of their zeros close to singular points? Some work has been done on this question regarding so-called inner Newton non-degenerate mixed functions [3] and complex polynomial mappings [11, 12, 19], but the problem is still wide open in the general setting.

The remainder of this paper is structured as follows. Section 2 reviews some useful background and introduces notation and conventions. In Sect. 3 we give an overview of the algorithm that constructs weakly isolated singularities for any given link. The individual steps of the algorithm are discussed in Sect. 4, where we illustrate that all the steps can indeed be performed algorithmically. We prove our main result Theorem 1.1 in Sect. 5 by showing that the described algorithm constructs weakly isolated singularities for any given link. The bounds on the polynomial degrees are provided in Sect. 6.

2 Background

Semiholomorphic polynomials are a special type of mixed polynomials as introduced by Oka [15]. In the dimensions that we are interested in, the set of mixed polynomials consists of polynomials in two complex variables u and v, and their complex conjugates, \(\overline{u}\) and \(\overline{v}\), so that f takes the form

with all but finitely many equal to zero. Note that every polynomial map from \({\mathbb {R}}^4\) to \({\mathbb {R}}^2\) can be written as a mixed polynomial and vice versa. A mixed polynomial is semiholomorphic if and only if implies \(j=0\). Thus a semiholomorphic polynomial is holomorphic with respect to the variable u, but not necessarily with respect to the variable v.

Semiholomorphic polynomials lend themselves to constructions like the one discussed in this paper for two reasons. First, the holomorphicity in one variable grants us a certain rigidity and control over the behaviour of zeros that is usually associated with complex functions. For instance, we know that for any fixed value of \(v=v_*\) the number of zeros of \(f(\hspace{1.111pt}{\cdot }\hspace{1.111pt},v_*)\) is equal to its degree. The second advantage of working with semiholomorphic polynomials is that it is comparatively easy to prove that a point is a regular point, i.e., that the real Jacobian matrix has full rank, and consequently to prove that a singularity is weakly isolated. It suffices to show that the origin O is the only zero of f where \({\partial f}/{\partial u}\) vanishes.

As for complex polynomials there is the notion of a Newton polyhedron for mixed polynomials [15]. For every weight vector \(P=(p_1,p_2)\in {\mathbb {N}}^2\) we can define the radially weighted degree of a mixed monomial \(M=c_{i,j,k,\ell }\hspace{1.111pt}u^i\hspace{1.111pt}\overline{u}{}^j v^k\hspace{1.111pt}\overline{v}{}^{\hspace{1.111pt}\ell }\) with respect to P as . A mixed polynomial f is radially weighted homogeneous of degree d(Pf) if there is a weight vector P such that all non-zero monomials M in f have the same radially weighted degree \(d(P;M)=d(P;f)\) with respect to P.

Our algorithm is based on braids and the fact that every link is the closure of some braid [2]. A geometric braid on s strands is a collection of s disjoint curves \((u_j(t),t)\subset {\mathbb {C}}\hspace{1.111pt}{\times }\hspace{1.111pt}[0,2\pi ]\), \(j=1,2,\ldots ,s\), parametrized by their height coordinate t going from 0 to \(2\pi \). The functions \(u_j:[0,2\pi ]\rightarrow {\mathbb {C}}\) are assumed to be smooth and to satisfy that for every \(j\in \{1,2,\ldots ,s\}\) there is a unique \(i\in \{1,2,\ldots ,s\}\) such that \(u_j(2\pi )=u_i(0)\).

Identifying the \((t\,{=}\,0)\)- and the \((t\,{=}\,2\pi )\)-plane results in a link in \({\mathbb {C}}\hspace{1.111pt}{\times }\hspace{1.111pt}S^1\), the closed braid. Embedding the open solid torus \({\mathbb {C}}\hspace{1.111pt}{\times }\hspace{1.111pt}S^1\) as an untwisted neighbourhood of the unknot in the 3-sphere \(S^3\) defines a link in \(S^3\), the closure of the braid, whose link type is well defined.

Projecting curves via the map \((u,t)\mapsto (\text {Re}\hspace{0.55542pt}(u),t)\) into \({\mathbb {R}}\hspace{1.111pt}{\times }\hspace{1.111pt}[0,2\pi ]\) results in s intersecting curves. A braid diagram is such a projection where every intersection is transverse and involves exactly two strands. We keep track of the information about the \(\text {Im}\hspace{0.55542pt}(u)\)-coordinate of these two strands at the crossing by deleting the strand with the larger \(\text {Im}\hspace{0.55542pt}(u)\)-coordinate in a neighbourhood of the crossing. The strand with the smaller \(\text {Im}\hspace{0.55542pt}(u)\)-coordinate is thus the overcrossing strand. This is an arbitrary choice and in previous papers we have not been consistent with our choices (although consistent in each individual paper). Changing this convention only means that several signs throughout this paper need to be reversed. Obviously, the results are not affected by this.

If two strands cross at \(t=t_k\) and for all small \(\varepsilon >0\) the overcrossing strand has smaller \(\text {Re}\hspace{0.55542pt}(u)\)-coordinate for all \(t\in (t_k-\varepsilon ,t_k)\), this crossing is a positive crossing. Non-positive crossings are negative.

The braid isotopy classes of braids on s strands form a group generated by the Artin generators \(\sigma _j\), \(j=1,2,\ldots ,s-1\), where \(\sigma _j\) denotes a positive crossing between the strand with the jth smallest \(\text {Re}\hspace{0.55542pt}(u)\)-coordinate (the “jth strand”) and the strand with the next larger \(\text {Re}\hspace{0.55542pt}(u)\)-coordinate (the \((j\,{+}\,1)\)th strand). The square \(B^2\) of a braid B is thus the double repeat of its braid word, two copies of the same braid concatenated.

A braid diagram can be interpreted as a singular braid on s strands, that is, a collection of curves that are allowed to intersect transversely in finitely many points, whose image under the projection map \((u,t)\mapsto (\text {Re}\hspace{0.55542pt}(u),t)\) into \({\mathbb {R}}\hspace{1.111pt}{\times }\hspace{1.111pt}[0,2\pi ]\) results in a braid diagram (see Fig. 1). The singular braid monoid is generated by the Artin generators, their inverses \(\sigma _j^{-1}\) and \(\tau _{j}\), \(j=1,2,\ldots ,s-1\), which correspond to intersection points between the jth strand and the \((j\,{+}\,1)\)th strand. Thus a singular braid in \({\mathbb {R}}\hspace{1.111pt}{\times }\hspace{1.111pt}[0,2\pi ]\) (i.e., it is a braid diagram) is represented by a word that only consists of \(\tau _j\)’s.

The projection map that associates to every geometric braid a braid diagram can thus be understood as a function from the set of braid words to the set of singular braid words mapping a generator \(\sigma _j^{\varepsilon }\), \(\varepsilon \in \{\pm 1\}\), to \(\tau _j\), regardless of the sign \(\varepsilon \).

Fig. 1
figure 1

(a) A braid diagram. (b) The corresponding singular braid

For some given geometric braid its image under the projection map \((u,t)\mapsto (\text {Re}\hspace{0.55542pt}(u),t)\) into \({\mathbb {R}}\hspace{1.111pt}{\times }\hspace{1.111pt}[0,2\pi ]\) might not be a braid diagram. We call a collection of curves \((u_j(t),t)\), \(j=1,2,\ldots ,s\), in \({\mathbb {C}}\hspace{1.111pt}{\times }\hspace{1.111pt}[0,2\pi ]\) a generalized singular braid if for every \(j=1,2,\ldots ,s\), there is a unique \(i\in \{1,2\ldots ,s\}\) with \(u_j(0)=u_i(2\pi )\) and all intersection points between the different strands \((u_j(t),t)\) are isolated points. Hence the intersection points are allowed to be tangential and to involve more than two strands. The condition that the intersections are isolated is always satisfied if the strands are not identical and parametrized by real-analytic functions.

We say that a singular crossing of a generalized singular braid is generic if it is a transverse intersection between exactly two strands. Otherwise we call it non-generic. Non-generic crossings thus consist of more than two strands or are a tangential intersection of at least two strands. We also say that the functions \(u_j\) that parametrize a generalized singular braid are non-generic if it has non-generic singular crossings.

3 An outline of the algorithm

In [8] we describe an algorithm that finds for any given braid a semiholomorphic polynomial whose vanishing set intersects the 3-sphere of unit radius transversely in the closure of the given braid. In [6] this construction is modified so that it produces a semiholomorphic polynomial f with a weakly isolated singularity, whose link is the closure of the square \(B^2\) of the given braid word B.

The first step in both of these constructions is to find (via trigonometric interpolation) a parametrization of the given braid B (up to isotopy) in terms of trigonometric polynomials. Let denote the set of connected components of the closure of B and let \(s_C\) denote the number of strands that make up the component . The first step of the algorithm in [8] finds for every a pair of trigonometric polynomials \(F_C, G_C:[0,2\pi ]\rightarrow {\mathbb {R}}\) such that B is parametrized by

Note that since we use the projection \((u,t)\mapsto (\text {Re}\hspace{0.55542pt}(u),t)\) to obtain braid diagrams and braid words, the real part of the parametrized strands \(F_C(({t+2\pi j})/{s_C})\) determines the crossing pattern (i.e., the braid word without the signs of the crossings) and the imaginary part \(G_C(({t+2\pi j})/{s_C})\) determines the signs of the crossings.

In particular, the first step of the algorithm in [8] yields via trigonometric interpolation a set of trigonometric polynomials \(F_C\) such that the corresponding curves \((F_C(({t+2\pi j})/{s_C}),t)\) parametrize a generalized singular braid.

As in [8] we would like to point out that the braid diagram for the braid parametrized by the \(F_C\)’s and the \(G_C\)’s is not necessarily identical to the braid diagram of B that we started with. However, the braids are guaranteed to be braid isotopic. The functions \(G_C\) are also found via trigonometric interpolation.

Once we have found a parametrization of a braid that is isotopic to B in terms of \(F_C\) and \(G_C\), we define via

Note the factor 2 in front of the variable t in the expression above. It means that as t varies between 0 and \(2\pi \) we are traversing the braid B twice. In other words, the vanishing set of g is (up to isotopy) the closed braid \(B^2\).

Expanding the product above results in a polynomial expression for g with respect to the complex variable u, as well as with respect to \(\textrm{e}^{\textrm{i}2t}\) and \(\textrm{e}^{-\textrm{i}2t}\). We define by

$$\begin{aligned} p_k(u,r\textrm{e}^{\textrm{i}\hspace{1.111pt}t})=r^{2ks}g\biggl (\frac{u}{r^{2k}}\hspace{0.55542pt},\textrm{e}^{\textrm{i}\hspace{1.111pt}t}\biggr ), \end{aligned}$$

where k is a sufficiently large integer. Note that by writing \(v=r\textrm{e}^{\textrm{i}\hspace{1.111pt}t}\) this becomes a mixed polynomial if 2ks is greater than the degree of g with respect to \(\textrm{e}^{\textrm{i}\hspace{1.111pt}t}\) and \(\textrm{e}^{-\textrm{i}\hspace{1.111pt}t}\). Note that all exponents of \(\textrm{e}^{\textrm{i}\hspace{1.111pt}t}\) and \(\textrm{e}^{-\textrm{i}\hspace{1.111pt}t}\) in g are even, so that the term \(\sqrt{v\overline{v}}\) always comes with an even exponent.

The constructed polynomials \(p_k\) are semiholomorphic and radially weighted homogeneous with respect to \(P=(2k,1)\) with degree \(d(P;f)=2ks\).

Since all roots of \(g(\hspace{1.111pt}{\cdot }\hspace{1.111pt},\textrm{e}^{\textrm{i}\hspace{1.111pt}t})\) are simple, the singularity at the origin is weakly isolated. The link of the singularity is the closure of \(B^2\). An explicit isotopy between \(p_k^{-1}(0)\cap S_{\rho }^3\) and a projection of \(p_{k}^{-1}(0)\cap ({\mathbb {C}}\hspace{1.111pt}{\times }\hspace{1.111pt}\rho S^1)\) to \(S_{\rho }^3\), which is known to be the closure of \(B^2\), can be constructed as in [8].

Fig. 2
figure 2

(a) The generalized singular braid parametrized by the \(F_C\)’s is not necessarily a singular braid. (b) We can make the \(F_C\)’s generic. The resulting functions \(\widetilde{F}_C\) parametrize a singular braid \(B_\textrm{sing}\). (c) The braid diagram of a braid \(B'\) that is obtained from an appropriate choice of crossing signs for the singular crossings in \(B_\textrm{sing}\). The braid \(B'\) is braid isotopic to B in Fig. 1 (a). (d) \(B_\textrm{sing}^2\), the vanishing set of g. (e) A resolution of the singular crossings of \(B_\textrm{sing}^2\) that results in \(B'\), whose closure is the link of the singularity of f

Algorithm 1 below, which constructs a weakly isolated singularity for any given link, is based on the same ideas. However, it uses parametrizations of singular braids instead of classical braids. Figure 2 shows the parametrized braids and vanishing sets of functions at various steps throughout the algorithm.

We start with a braid diagram of a braid B that closes to the link that we want to construct, such as shown in Fig. 1 (a). Via the same trigonometric interpolation procedure as in [8] we obtain trigonometric polynomials \(F_C\) that parametrize curves that form a generalized singular braid, see Fig. 2 (a). The functions \(F_C\) are not necessarily generic. Via small modifications we can make the \(F_C\)’s generic and obtain a singular braid \(B_\textrm{sing}\) (Fig. 2 (b)) that has the property that there exists a choice of signs for each of its singular crossings that turns \(B_\textrm{sing}\) into a classical braid that is isotopic to B, see Fig. 2 (c).

As in [8] we define a function \(p_k\). It is a radially weighted homogeneous mixed polynomial with a singularity at the origin. The intersection \(p_k^{-1}(0)\cap S_{\rho }^3\) is the singular braid \(B_\textrm{sing}^2\) for all \(\rho >0\), shown in Fig. 2 (d). In particular, it does not have a weakly isolated singularity, since the singular crossings correspond to lines of critical points of \(p_k\) through the origin. However, we can add a term \(r^m A(\textrm{e}^{\textrm{i}\hspace{1.111pt}t})\), where \(v=r\textrm{e}^{\textrm{i}\hspace{1.111pt}t}\) and A is a finite Fourier series, that makes the singularity weakly isolated. This term has to be constructed in such a way that all singular crossings of \(B_\textrm{sing}^2\) are resolved in such a way that the link of the singularity is the closure of a braid isotopic to B, which is displayed in Fig. 2 (e).

Algorithm 1
figure a

Construction of weakly isolated singularities

The idea behind Algorithm 1 can be understood as a natural consequence of [3], where we introduce certain non-degeneracy conditions of mixed functions and study links of their (weakly) isolated singularities. We show that for such non-degenerate mixed polynomials adding terms above the boundary of the Newton polygon does not change the topology of the link. This seems to suggest that not all links can be obtained as link of weakly isolated singularities of non-degenerate mixed polynomials (and it is an interesting question for which links this is possible). Algorithm 1 thus constructs a degenerate polynomial \(p_k\) and adds an appropriate term above the Newton boundary.

In the following sections we explain the individual steps. In particular, we show that each of the steps can be performed algorithmically. Then we show that the algorithm indeed constructs weakly isolated singularities with the closure of B as the link of the singularity.

4 The individual steps

Step 1 is identical to the corresponding procedure in [8]. Note however that the resulting trigonometric polynomials \(F_C\) are not necessarily generic. This is not a problem for the construction in [8]. For the construction in Algorithm 1 however, we need generic parametrizations. This is done in Step 2, which requires a more detailed explanation, given in Sect. 4.1. Step 3 and 4 are then simply definitions of functions. Step 5 is arguably the most important part of this algorithm. It will be discussed in detail in Sect. 4.2. Step 6 is again simply the definition of a function f. Thus if Step 2 and Step 5 can be performed algorithmically, Algorithm 1 is indeed an algorithm.

4.1 Generic parametrizations of singular braids (Step 2)

The set of trigonometric polynomials \(F_C\) that result in generic parametrizations is dense in the set of trigonometric polynomials. So we should expect that the trigonometric polynomials \(F_C\) found via the method from [8] almost always have this property. However, there is no guarantee. If the \(F_C\)’s are not generic, we have to make some adjustments to make them generic. Again we would like to emphasize that in practice, this is usually not necessary.

Alternative to the method from [8] trigonometric approximation can be used in Step 1 to find a trigonometric parametrisation of the braid. If the approximated original braid parametrisation is generic, i.e., the corresponding projection gives a braid diagram, then a sufficiently close approximation is generic, too. Therefore, Step 2 of the algorithm is not needed if trigonometric approximation is used in Step 1. However, in contrast to the method from [8], trigonometric approximation does not allow us to give bounds on the degrees of the trigonometric polynomials that parametrize the strands.

Let \(F_C\), , be a given set of trigonometric polynomials with given values \(s_C\) and \(a,b\in [0,2\pi ]\), \(a<b\), away from the values of t for which there are intersections between the different \(F_C(({t+2\pi j})/{s_C})\). We call the permutation of the curves parametrized by

the permutation associated to the \(F_C\)’s in the interval [ab]. It is thus an element of the symmetric group on s elements. Note that this is possible, because the \(F_C\)’s are real analytic. This is why even at tangential intersections of strands, we can uniquely determine which incoming arc corresponds to which outgoing arc.

Lemma 4.1

([8]) Let \(F_C\), , be trigonometric polynomials and \(B=\prod _{j=1}^{{\ell }}\sigma _{i_j}^{\varepsilon _j}\) be a braid, whose closure has components. Then there exist trigonometric polynomials \(G_C\), , such that

parametrizes a braid that is braid isotopic to B if there exist values \(t_j\in [0,2\pi ]\), \(j=1,2,\ldots ,\ell +1\), \(t_1=0\), \(t_{\ell +1}=2\pi \), \(t_j<t_{j+1}\), such that the permutation associated to the \(F_C\)’s in the interval \([t_j,t_{j+1}]\) is the transposition \((i_j\,{\leftrightarrow }\, i_j+1)\).

The algorithm in [8] finds trigonometric polynomials \(F_C\) such that the condition in Lemma 4.1 is satisfied. We would like to make the \(F_C\)’s generic, while maintaining this property.

The \(F_C\)’s being non-generic could mean that there are tangential intersections between strands of the corresponding generalized singular braid \(B_\textrm{sing}\) or that there are more than two strands involved in a singular crossing of \(B_\textrm{sing}\).

Having explicit expressions for the functions \(F_C\), we can find all values \(t=t_{k}'\), \(k=1,2,\ldots ,M\), for which there are non-generic crossings. The fact that there are only finitely many of these follows from the real analyticity of the functions. It will simplify our notation if we adopt the convention of updating our variables throughout the modifications outlined below. That is to say, when we change the function \(F_C\) for example by adding a term, the resulting function will again be called \(F_C\). The values \(t_k'\), \(k=1,2,\ldots ,M\), are again defined as the values of t at which the new collection of functions \(F_C\) has non-generic crossings. Note that their number M can change throughout our modification, and will eventually be 0.

A tangential intersection between the strands (Cj) and at \(t=t_k'\) corresponds to a non-simple root of \(F_{C}(({t+2\pi j})/{s_C})-F_{C'}(({t+2\pi j'})/{s_{C'}})\) at \(t=t_k'\) and a singular crossing between more than two strands \((C_i,j_i)\), \(i=1,2,\ldots ,m'\), at \(t=t_k\) corresponds to a common root of at \(t=t_k'\). We can thus check numerically if any given collection of trigonometric parametrizations \(F_C\) is generic or not. Likewise, we can check numerically if the \(F_C\)’s satisfy the condition from Lemma 4.1 for the same values \(t_j\), \(j=1,2,\ldots \), \(\ell +1\), as the original functions \(F_C\).

Fig. 3
figure 3

The elimination of non-generic crossings. (a) A tangential intersection between strands from different components gets eliminated. (b) An intersection between more than two strands from different components gets eliminated. (c) A tangential intersection between strands from the same component gets eliminated. (d) An intersection between more than two strands, all of which are from the same component, is eliminated

We can remove the tangential intersection points between two strands of different components C and \(C'\) by adding small constants \(\varepsilon _{C,1}\) to each \(F_C\). This is displayed in Fig. 3 (a). This requires if \(C\ne C'\). Furthermore, we can choose \(\varepsilon _{C,1}\) sufficiently small so that the resulting trigonometric polynomials \(F_C\) still satisfy the property from Lemma 4.1 for the same values \(t_j\), \(j=1,2,\ldots ,\ell +1\). Furthermore, the addition of \(\varepsilon _{C,1}\) should not introduce any new non-generic crossings. This can be achieved by choosing the values for the different \(\varepsilon _{C,1}\)’s successively, i.e., for an arbitrary ordering of the components \(C_1,C_2,\ldots ,C_{|C|}\) we first choose \(\varepsilon _{C_1,1}\) such that it removes tangential intersection points involving strands from \(C_1\) without introducing new ones, then we choose \(\varepsilon _{C_2,1}\) and so on. We also add a small constant to every \(F_C\) that is constant. Such components only consist of a single vertical strand. Adding a small constant guarantees that none of them are involved in any non-generic crossings.

Note that sufficient values for \(\varepsilon _{C,1}\) can be found explicitly knowing the values of t for which we have generic or non-generic crossings as well as maxima and minima of the functions \(F_{C}(({t+2\pi j})/{s_C})-F_{C'}(({t+2\pi j'})/{s_{C'}})\), , \(j\in \{1,2,\ldots ,s_C\}\), . Alternatively, since we can check numerically if the \(F_C\)’s are generic or not, we can take \(\varepsilon _{C,1}\) to be an element of a non-zero sequence converging to 0 and if the resulting \(F_C\) is non-generic, we redefine \(\varepsilon _{C,1}\) to be the next element in that sequence.

By taking \(F_C(t+\varepsilon _{C,2})\) instead of \(F_C(t)\) as the trigonometric polynomial for the component C with appropriately chosen small \(\varepsilon _{C,2}\), we obtain a parametrization where every singular crossing that involves more than two strands only involves strands from the same component. This is achieved by choosing if \(C\ne C'\) and each \(\varepsilon _{C,2}\) sufficiently small. We do not introduce any new non-generic crossing in doing this, since the intersection is transverse, the curves are real analytic and the intersection does not involve any constant strands. The effect is shown in Fig. 3 (b). How small we have to choose each \(\varepsilon _{C,2}\) can be determined from the values of t for which there are crossings. Note in particular that the \(\varepsilon _{C,2}\)’s can be chosen such that the condition from Lemma 4.1 is still satisfied for the same values \(t_j\), \(j=1,2,\ldots ,\ell +1\), as before. Note that we find the values of \(\varepsilon _{C,2}\) successively. We choose a value for one component C and only then decide on the value for the next component \(C'\) and so on.

Thus the only remaining non-generic crossings are between strands of the same component. Suppose we have a tangential intersection between (Cj) and \((C,j')\) at \(t=t_k'\). Then we add \(\varepsilon \cos \hspace{0.55542pt}(t-({t_k'+2\pi j})/{s_C})\) to \(F_C\), where as usual \(\varepsilon \) is small and its sign is determined by the sign of \(F_{C}(({t+2\pi j})/{s_C})-F_{C}(({t+2\pi j'})/{s_{C}})\) in a neighbourhood of \(t=t_k'\). By adding \(\varepsilon \cos \hspace{0.55542pt}(t-({t_k+2\pi j})/{s_C})\) we know that \(F_{C}(({t+2\pi j})/{s_C})-F_{C}(({t+2\pi j'})/{s_{C}})\) is non-zero in a neighbourhood of \(t=t_k'\) (independent of \(\varepsilon \)) for all \(\varepsilon \) of the correct sign and sufficiently small modulus. We have thus reduced the number of tangential intersections by one, see Fig. 3 (c). Proceeding like this we eliminate all tangential intersections between strands. This includes tangential intersections that are part of non-generic crossings with more than two strands. Again we can choose \(\varepsilon \) sufficiently small, so that Lemma 4.1 is still satisfied for \(t_j\), \(j=1,2,\ldots ,\ell +1\).

Thus the only remaining non-generic crossings are crossings that involve more than two strands and all of them are from the same component. Suppose we have such a crossing at \(t=t_k'\) and two of the strands involved in that crossing are (Cj) and \((C,j')\). Then we add , where \(\varphi =t_k'/s_C-\pi +\pi (j'-j)/s_C\). This value is chosen so that \(\cos \hspace{0.55542pt}(({t_k'+2\pi j})/{s_C}-\varphi )=\cos \hspace{0.55542pt}(({t_k'+2\pi j'})/{s_C}-\varphi )\), while \(\cos \hspace{0.55542pt}(({t_k'+2\pi j})/{s_C}-\varphi )\ne \cos \hspace{0.55542pt}(({t_k'+2\pi j''})/{s_C}-\varphi )\) for all . Thus after adding we still have a crossing at \(t=t_k'\) between (Cj) and \((C,j')\), but no other strand is involved in that crossing. Hence it is a generic crossing. The other strands that used to be part of that crossing have been moved aside and could form other non-generic crossings with more than two strands. Therefore, we have not necessarily reduced the number of non-generic crossings in this step. However, we have reduced the sum of the number of strands involved in a non-generic crossing c, with the sum going over all non-generic crossings c. Thus repeating this step we can eliminate all non-generic crossings and obtain a generic parametrization \(F_C\). This elimination process is illustrated in Fig. 3 (d).

It is more difficult to give an explicit formula for a sufficient value of \(\varepsilon '\). Since we are not particularly concerned with achieving an optimal run-time for our algorithm, we may again resort to the approach of using a non-zero sequence converging to 0 and checking at each value of \(\varepsilon '\) if the resulting parametrisation is generic and satisfies Lemma 4.1.

Let now \(\widetilde{F}_C\), , denote the generic trigonometric polynomials that we obtain from this procedure and let \(B_\textrm{sing}=\prod _{j=1}^{{\ell '}}\tau _{i_j}\) be the singular braid that is parametrized by the \(\widetilde{F}_C\)’s.

Lemma 4.2

There is a choice of signs \(\varepsilon _j\in \{\pm 1\}\) such that the input braid B is braid isotopic to \(\prod _{j=1}^{{\ell '}}\sigma _{i_j}^{\varepsilon _j}\).

Proof

We have selected the values of the different parameters \(\varepsilon _{C,1},\varepsilon _{C,2},\varepsilon \) and \(\varepsilon '\) so that the \(\widetilde{F}_C\)’s still satisfy the condition from Lemma 4.1 for the same values \(t_j\), \(j=1,2,\ldots ,\ell +1\), as the original \(F_C\)’s. Therefore by Lemma 4.1, there exist trigonometric polynomials \(\widetilde{G}_C\), , such that \(\widetilde{F}_C+\textrm{i}\hspace{1.111pt}\widetilde{G}_C\) parametrizes a braid \(B'\) that is braid isotopic to B. Since the \(\widetilde{F}_C\)’s are generic, this is equivalent to \(B_\textrm{sing}\) being obtained from a braid diagram of \(B'\) by forgetting information about signs of crossings, with \(B'\) a braid that is isotopic to B. Thus the value of \(\varepsilon _j\) is the sign of the corresponding crossing in the braid \(B'\). \(\square \)

Note that throughout Step 2 we only add terms of degree 0 or 1 with respect to \(\textrm{e}^{\textrm{i}\hspace{1.111pt}t}\) and \(\textrm{e}^{-\textrm{i}\hspace{1.111pt}t}\) and the degree 1 terms are only necessary for components with more than one strand. Therefore, the degrees of the trigonometric polynomials \(F_C\) are not affected by the procedure above and the degree of \(\widetilde{F}_C\) is equal to the degree of \(F_C\).

4.2 Trigonometric interpolation (Step 5)

For a given generic collection of trigonometric polynomials \(\widetilde{F}_C\) the roots of

(1)

form a singular braid \(B_\textrm{sing}^2\) that is the square of the singular braid \(B_\textrm{sing}\). Both of these singular braids have strands.

Let \(t_k\), \(k=1,2,\ldots ,\ell '\), denote the values of \(t\in [0,2\pi ]\) for which there are singular crossings in \(B_\textrm{sing}\). By a shift of the variable t, we can always guarantee that \(t_k\ne \pi \) for all k. Denote by \((C_1(k),j_1(k))\) and \((C_2(k),j_2(k))\) the two strands that form the crossing at \(t=t_k\). Which of these strands carries which label is not important, but by convention we choose the labels so that \(\widetilde{F}_{C_1(k)}(({t+2\pi j_1(k)})/{s_{C_1(k)}})<\widetilde{F}_{C_2(k)}(({t+2\pi j_2(k)})/{s_{C_2(k)}})\) for all \(t\in (t_k-\varepsilon ,t_k)\) for some small \(\varepsilon >0\).

Note that g from equation (1) has only real roots and is therefore a real polynomial. Since all roots of \(g(\hspace{1.111pt}{\cdot }\hspace{1.111pt},\textrm{e}^{\textrm{i}\hspace{1.111pt}t})\) are simple when \(t\ne t_k\), \(k=1,2,\ldots ,\ell '\), there is a critical point of g between each neighbouring pair of roots of g, i.e., if \(u_1,u_2\in {\mathbb {R}}\) are roots of \(g(\hspace{1.111pt}{\cdot }\hspace{1.111pt},\textrm{e}^{\textrm{i}\hspace{1.111pt}t})\) and there is no root of \(g(\hspace{1.111pt}{\cdot }\hspace{1.111pt},\textrm{e}^{\textrm{i}\hspace{1.111pt}t})\) in the open interval \((u_1,u_2)\), there is a unique critical point \(c\in (u_1,u_2)\). We call \(\textrm{sign}\hspace{0.55542pt}(g(c,\textrm{e}^{\textrm{i}\hspace{1.111pt}t}))\) the sign of the critical point c. As t varies, the critical points of \(g(\hspace{1.111pt}{\cdot }\hspace{1.111pt},\textrm{e}^{\textrm{i}\hspace{1.111pt}t})\) move on the real line, but they remain distinct and maintain their sign for all \(t\ne t_k\), \(k=1,2,\ldots ,\ell '\).

At \(t=t_k\) two roots and their intermediate critical point c collide. We say that c is the critical point associated with the crossing.

Step 5 of Algorithm 1 is to solve the following trigonometric interpolation problem \((*)\): The set of data points takes the form \((t_k,y_k,z_k)\), \(k=1,2,\ldots ,\ell '\), where \(t_k\), \(k=1,2,\ldots ,\ell '\), are as above the values of t for which there are crossings of \(B_\textrm{sing}\). The value \(y_k\) is such that \({y_k}/{\cos \hspace{0.55542pt}({t_k}/{2})}\) is a non-zero real number that has the same sign as the critical point associated with the crossing at \(t=t_k\).

We know from Lemma 4.2 that for every crossing of \(B_\textrm{sing}=\prod _{k=1}^{{\ell '}}\tau _{j_k}\) there is a choice of sign \(\varepsilon _k\in \{\pm 1\}\) such that is braid isotopic to B and thus closes to the desired link. The value of \(z_k\) is set to \(\varepsilon _k\).

The Interpolation Problem \((*)\) Find a trigonometric polynomial such that \(\widetilde{A}(\textrm{e}^{\textrm{i}\hspace{1.111pt}t_k})={y_k}/{\cos \hspace{0.55542pt}({t_k}/{2})}\) and \(\tfrac{\partial \arg \hspace{0.55542pt}(\widetilde{A})}{\partial t}(\textrm{e}^{\textrm{i}\hspace{1.111pt}t_k})=z_k\) for all \(k\in \{1,2,\ldots ,\ell '\}\).

Since

$$\begin{aligned} \frac{\partial \arg \hspace{0.55542pt}(\widetilde{A})}{\partial t}\hspace{1.111pt}(\textrm{e}^{\textrm{i}t_k})=\biggl (\frac{\text {Re}\hspace{0.55542pt}(\widetilde{A})\hspace{1.111pt}{\partial \hspace{1.111pt}\text {Im}\hspace{0.55542pt}(\widetilde{A})}/{\partial t}-\text {Im}\hspace{0.55542pt}(\widetilde{A})\hspace{1.111pt}{\partial \hspace{1.111pt}\text {Re}\hspace{0.55542pt}(\widetilde{A})}/{\partial t}}{|\widetilde{A}|^2}\biggr )\biggr |_{t=t_k}, \end{aligned}$$
(2)

the interpolation problem above can be written as an interpolation where the values of the data points correspond to values of the desired function \(\widetilde{A}\) and its first derivative. Such an interpolation always has a solution that can be found via explicit formulas such as the one in [14]. The degree of the solution is equal to \(\ell '\).

We then define , which satisfies \(A(\textrm{e}^{\textrm{i}\hspace{1.111pt}t_k/2})=y_k\) and \(\tfrac{\partial \arg \hspace{0.55542pt}(A)}{\partial t}(\textrm{e}^{\textrm{i}\hspace{1.111pt}t_k/2})\) has the same sign as \(\varepsilon _k\) for all \(k\in \{1,2,\ldots ,\ell '\}\).

Since A is odd, i.e., \(A(\textrm{e}^{\textrm{i}\hspace{1.111pt}(t+\pi )})=-A(\textrm{e}^{\textrm{i}\hspace{1.111pt}t})\), it automatically also satisfies \(A(\textrm{e}^{\textrm{i}\hspace{1.111pt}(t_{k}/2+\pi )})=-y_k\) and \(\tfrac{\partial \arg \hspace{0.55542pt}(A)}{\partial t}(\textrm{e}^{\textrm{i}\hspace{1.111pt}(t_{k}/2+\pi )})\) also has the same sign as \(\varepsilon _k\) for all \(k\in \{1,2,\ldots ,\ell '\}\).

5 Weakly isolated singularities

In this section we prove that Algorithm 1 does what it is supposed to do: It constructs weakly isolated singularities with the desired link as the link of the singularity. Thereby we establish a proof of Theorem 1.1.

We use the same notation as in the previous sections. \(\widetilde{F}_C\) is a generic trigonometric parametrization of the singular braid \(B_\textrm{sing}=\prod _{k=1}^{{\ell '}}\tau _{j_k}\). Let \(\varepsilon _k\in \{\pm 1\}\), \(k=1,2,\ldots ,\ell '\), and let be the trigonometric polynomial found via the interpolation procedure in Step 5 of Algorithm 1. Let g, \(p_k\) and \(f=p_k+r^mA(\textrm{e}^{\textrm{i}\hspace{1.111pt}t})\) be defined as in the description of Algorithm 1.

Lemma 5.1

For every fixed and sufficiently small \(r_*>0\) the vanishing set of is the closed braid \(\prod _{k=1}^{{\ell '}}\sigma _{j_k}^{\varepsilon _k}\).

Proof

The vanishing set of \(f|_{r=r_*}\) corresponds (up to an overall scaling in the u-coordinate) to the vanishing set of , which equals .

Since \(g_t\) is monic and real and its critical points are distinct for all values of \(t\in [0,2\pi ]\), there is a diffeomorphism that is the identity outside of \(\{(u,\textrm{e}^{\textrm{i}\hspace{1.111pt}t})\,{:}\,|u|<R\}\) for some \(R>0\) and that preserves the fibers of the projection map onto the second factor , and a disk D such that \((g_t(h))^{-1}({\mathbb {R}})\cap D\) is the union of the real line (\(\{(u,\textrm{e}^{\textrm{i}\hspace{1.111pt}t})\,{:}\,\text {Im}\hspace{0.55542pt}(u)=0\}\cap D\)) and \(s-1\) straight, “vertical” lines orthogonal to the real line for every \(t\in [0,2\pi ]\). This is displayed in Fig. 4. Note that the vertical lines intersect the real line in the critical points of \(g_t\). Since the critical points vary with t, so do the vertical lines.

Fig. 4
figure 4

The preimage \((g_t(h))^{-1}({\mathbb {R}})\) in the complex plane for a fixed value of \(t\in [0,2\pi ]\) and the disk D

Let \(t_k\), \(k=1,2,\ldots ,2\ell '\), denote the values of t for which there are crossings of \(B_\textrm{sing}^2\). Note that for \(k\leqslant \ell '\) these differ from the values of \(t_k\) in the previous section, corresponding to the crossings of \(B_\textrm{sing}\), by a factor of 1/2. By symmetry we have \(t_{k+\ell '}=t_k+\pi \). Figure 5 shows subsets of the complex plane in a neighbourhood of a singular crossing at \(t=t_k\), and at \(t=t_k+\pi \). The black lines are the preimage set \((g_t(h))^{-1}({\mathbb {R}})\) with the horizontal line being a segment of the real line. The red points are the roots of \(g_t\) at values \(t=t_k-2\varepsilon \), \(t=t_k-\varepsilon \), \(t=t_k\), \(t=t_k+\varepsilon \) and \(t=t_k+2\varepsilon \). By symmetry the corresponding roots at \(t_{k+\ell '}\) are the same. The blue points indicate the roots of \(g_t(h)+\delta A(\textrm{e}^{\textrm{i}\hspace{1.111pt}t})\), which are the preimage points \((g_t(h))^{-1}(-\delta A(\textrm{e}^{\textrm{i}\hspace{1.111pt}t}))\), for some small \(\delta >0\).

Fig. 5
figure 5

The motion of the roots of \(g_t\) (in red) and of \(g_t+r^{m-2ks}A\) (in blue) in the complex plane in a neighbourhood of singular crossings at \(t=t_k\) and \(t=t_k+\pi \), \(k\in \{1,2,\ldots ,\ell '\}\). For each subfigure the lower part shows the behaviour near \(t=t_k\) and the upper part shows the behaviour near \(t=t_k+\pi \). (a) At \(t=t_k-\varepsilon \) and \(t=t_k+\pi -\varepsilon \). (b) At \(t=t_k-\varepsilon /2\) and \(t=t_k+\pi -\varepsilon /2\). (c) At \(t=t_k\) and \(t=t_k+\pi \). (d) At \(t=t_k+\varepsilon /2\) and \(t=t_k+\pi +\varepsilon /2\). (e) At \(t=t_k+\varepsilon \) and \(t=t_k+\pi +\varepsilon \)

By construction \(A(\textrm{e}^{\textrm{i}\hspace{1.111pt}t_k})\), \(k=1,2,\ldots ,\ell '\), is real and has the same sign as the critical point associated with the crossing at \(t=t_k\). Hence the two preimage points \((g_{t_k}(h))^{-1}(-\delta A(\textrm{e}^{\textrm{i}\hspace{1.111pt}t_k}))\) lie on the real line on opposite sides of the vertical line for all values of \(\delta =r^{m-2ks}>0\) as indicated in the lower part of Fig. 5 (c).

Since the derivative of the argument of A is non-zero at \(t=t_k\), there is a neighbourhood U of \(t_k\) independent of \(\delta \) such that \(t=t_k\) is the only point in the neighbourhood where \(\arg \hspace{0.55542pt}(\delta A)\) is 0 or \(\pi \). Thus \(t=t_k\) is the only point in U, for which the roots of \(g_t+\delta A(\textrm{e}^{\textrm{i}\hspace{1.111pt}t})\) lie on \(g_t^{-1}({\mathbb {R}})\). The two roots (which are the preimage points \((g_{t_k}(h))^{-1}(-\delta A(\textrm{e}^{\textrm{i}\hspace{1.111pt}t_k}))\)) lie on opposite sides of the vertical line at \(t=t_k\) and cannot cross the vertical line while t is in U.

Recall that a crossing only occurs when two strands have the same \(\text {Re}\hspace{0.55542pt}(u)\)-coordinate. Since the two preimage points remain on opposite sides of the vertical line throughout U, there is no crossing between the strands that are formed by the two preimage points \((g_{t}(h))^{-1}(-\delta A(\textrm{e}^{\textrm{i}\hspace{1.111pt}t}))\) in a neighbourhood of the original crossing for all sufficiently small \(\delta >0\).

Thus all crossings at \(t=t_k\), \(k=1,2,\ldots ,\ell '\), are resolved as in Fig. 6 (a), that is, there are no more crossings in the lower half of the braid.

By symmetry \(A(\textrm{e}^{\textrm{i}\hspace{1.111pt}t_{k+\ell '}})=A(\textrm{e}^{\textrm{i}\hspace{1.111pt}(t_k+\pi )})\), \(k=1,2,\ldots ,\ell '\), is real and has the opposite sign as the critical point associated with the crossing at \(t=t_{k+\ell '}\). Therefore, the two preimage points \((g_{t}(h))^{-1}(-\delta A(\textrm{e}^{\textrm{i}\hspace{1.111pt}t}))\) both lie on the vertical line, one “above” (with positive imaginary part) the real line and one “below” (negative imaginary part), see the upper part of Fig. 5 (c). Furthermore, we know that the sign of \({\partial \arg \hspace{0.55542pt}(A)}/{\partial t}\) is the sign of the desired crossing. Suppose that that sign is positive. Then the point above the real line is moving from right to left and the point below is moving from left to right, relative to the motion of the vertical line. That is, there is an \(\varepsilon >0\) such that for all \(t\in (t_{k+\ell '}-\varepsilon ,t_{k+\ell '})\) the point above the real line is in the upper right quadrant and the point below is in the lower left quadrant, while for all \(t\in (t_{k+\ell '},t_{k+\ell '}+\varepsilon )\) the point above the real line is in the upper left quadrant and the point below the real line is in the lower right quadrant.

Recall again that there is a crossing if and only if the two points have the same \(\text {Re}\hspace{0.55542pt}(u)\)-coordinate. This means that in \((t_{k+\ell '}-\varepsilon ,t_{k+\ell '}+\varepsilon )\) there is a unique crossing, which occurs at \(t=t_{k+\ell '}\). By our sign convention the sign of this crossing is positive as the point below the real line passing the point above the real line from left to right.

Fig. 6
figure 6

Resolution of singular crossings. (a) A singular crossing is resolved into two strands without a crossing. (b) A singular crossing is resolved into a classical crossing with sign \(\varepsilon _k\)

Likewise, if the desired sign \(\varepsilon _{k}\) of the crossing is negative, then the point above the real line is moving from left to right and the point below is moving from right to left. That is, there is an \(\varepsilon >0\) such that for all \(t\in (t_{k+\ell '}-\varepsilon ,t_{k+\ell '})\) the point above the real line is in the upper left quadrant and the point below is in the lower right quadrant, while for all \(t\in (t_{k+\ell '},t_{k+\ell '}+\varepsilon )\) the point above the real line is in the upper right quadrant and the point below the real line is in the lower left quadrant. Thus there is a unique crossing at \(t=t_{k+\ell '}\) and it has a negative sign.

In either case we obtain a classical crossing of the required sign as in Fig. 6 (b). Note that the \(\varepsilon \)-neighbourhood can be chosen independently of \(\delta \) and thus independently of r, so that we have the correct crossing for all small values of r. Outside of the discussed neighbourhoods of \(t_k\), \(k=1,2,\ldots ,2\ell '\), we can guarantee that there are no crossings when r is sufficiently small. It follows that the zeros of \(g_t(h)+r^{m-2ks}A(\textrm{e}^{\textrm{i}\hspace{1.111pt}t})\) form a closed braid in \({\mathbb {C}}\hspace{1.111pt}{\times }\hspace{1.111pt}S^1\) as t varies from 0 to \(2\pi \).

Since the singular crossings in the first half of \(B_\textrm{sing}^2\) at \(t=t_k\), \(k=1,2,\ldots ,\ell '\), are all resolved into strands without crossings and the singular crossings in the second half of \(B_\textrm{sing}^2\) at \(t=t_k+\pi \), \(k=1,2,\ldots ,\ell '\), are resolved as desired, i.e., \(\tau _{j_k}\mapsto \sigma _{j_k}^{\varepsilon _k}\), the braid formed by the roots of \(g_t(h)+r^{m-2ks}A(\textrm{e}^{\textrm{i}\hspace{1.111pt}t})\) is represented by the word \(\prod _{k=1}^{\ell '}\sigma _{j_k}^{\varepsilon _k}\), which by construction is braid isotopic to the braid B that we used as input. Since h is a diffeomorphism that preserves the fibers of the projection map onto the second factor , the roots of \(g_t+r^{m-2ks}A(\textrm{e}^{\textrm{i}\hspace{1.111pt}t})\) form a braid that is isotopic to B as a closed braid. \(\square \)

Lemma 5.2

The constructed semiholomorphic polynomial f has a weakly isolated singularity whose link is the closure of the given braid B.

Proof

At \(v=0\) we have that \(f(u,v)=u^s\), so that the origin is the only critical point with \(v=0\).

We have shown that the roots of \(f|_{|v|=r}\) form a braid as t varies from 0 to \(2\pi \) for small values of \(r>0\). In particular, all roots of \(f|_{|v|=r}\) are simple, which means that \({\partial f}/{\partial u}\ne 0\) on \(f^{-1}(0)\backslash \{O\}\). Thus f has a weakly isolated singularity at the origin.

We also have that \(f^{-1}(0)\cap ({\mathbb {C}}\hspace{1.111pt}{\times }\hspace{1.111pt}rS^1)\) is isotopic to the closed braid B for all sufficiently small values of r. As r goes to zero, the u-coordinates of all strands converges to zero. As in [8] we can construct an explicit isotopy between the projection of \(f^{-1}(0)\cap ({\mathbb {C}}\hspace{1.111pt}{\times }\hspace{1.111pt}rS^1)\) to \(S_r^3\) and \(f^{-1}(0)\cap S_r^3\) for small values of r, which shows that the closure of B is the link of the singularity. \(\square \)

6 Upper bounds on the degree

In this section we prove Theorem 1.2 and Corollary 1.3. The proof of the upper bound on the degree of the constructed polynomials is very similar to the one of the bound obtained in [8].

Proof of Theorem 1.2

Since \(F_C\) is found via trigonometric interpolation, its degree (as a trigonometric polynomial) is equal to \(\lfloor {x}/{2}\rfloor \), where x is the number of data points used in the interpolation and \(\lfloor y\rfloor \) is the floor function that maps any real number y to the largest integer less than or equal to y. As in [8] we need \(s_C\ell \) data points for the interpolation for \(F_C\), so that the degree of \(F_C\) is \(\lfloor {s_C\ell }/{2}\rfloor \). (In [8] this was erroneously stated as \(\lfloor ({s_c\ell -1})/{2}\rfloor \).)

We can assume that \(\ell >1\), since the closure of the braid is not an unknot. As observed in Sect. 4.1 the degree of \(\widetilde{F}_C\) is equal to the degree of \(F_C\). The degree of g is . Thus \(k=\lceil \ell /2\rceil \) is a choice that guarantees that \(p_k\) is a polynomial, where \(\lceil y\rceil \) is the smallest integer bigger than or equal to y.

The degree of \(p_k\) is then equal to \(2ks\leqslant s(\ell +1)\).

The trigonometric polynomial \(\widetilde{A}\) is found via trigonometric interpolation, where for every singular crossing of \(B_\textrm{sing}\) there is one data point for the value of \(\widetilde{A}\) and one data point for its derivative. The degree of \(\widetilde{A}\) is then equal to \(\ell '\), where \(\ell '\) is the number of singular crossings of \(B_\textrm{sing}\) [14]. Recall that \(\ell '\) could be strictly greater than \(\ell \).

Singular crossings of \(B_\textrm{sing}\) correspond to intersections of the curves parametrized by \(\widetilde{F}_C\), which correspond to the zeros of certain complex polynomials on the unit circle as in [8]. It was shown in [8] that the number of singular crossings that involve two strands from the same component C is bounded above by \((s_C\,{+}\,1)\hspace{0.55542pt}s_C\ell \). (Following the mistake in [8] mentioned above this bound was originally stated as \((s_C+1)(s_C\ell -1)\).)

It is also shown in [8] that there are at most \(\ell s_Cs_{C'}\) singular crossings with one strand from the component C and the other strand from a component . The total number of singular crossings and the degree of \(\widetilde{A}\) is bounded from above by

We need to choose m, which will equal the degree of f, to be greater than the degree of \(p_k\) and at least the degree of A. The degree of A is \(2\deg \hspace{0.55542pt}(\widetilde{A})+1\) and the degree of \(p_k\) was at most \(s(\ell +1)\). Thus

is a sufficient choice.

Therefore, the degree of f, may be chosen to be

$$\begin{aligned} \deg \hspace{0.55542pt}(f)\leqslant \sum _{C\in \mathscr {C}} s_C^2\ell +s\ell (2+s)+1. \end{aligned}$$

\(\square \)

If the closure of B is a knot, we have that and \(s_C=s\). Corollary 1.3 follows immediately.

In practice, the degree of the constructed polynomials is significantly lower than the proven upper bound. This is mostly because of the part of the proof of Theorem 1.2, where we bound the number of singular crossings of \(B_\textrm{sing}\). This number corresponds to a sum of the number of zeros of certain complex polynomials on the unit circle. The upper bound is obtained by considering the degree of these polynomials, but of course it is extremely rare that a polynomial has all of its roots on the unit circle.

Theorem 1.2 gives a bound on the degree of the polynomials constructed with our algorithm. Polynomials that are obtained using different methods may have higher or significantly lower degree. We may for example compare our degree bound with an example by Lee Rudolph [17]. He found an explicit semiholomorphic polynomial

$$\begin{aligned} f(u,v)=u^3-3v^2\hspace{1.111pt}\overline{v}^{\hspace{0.55542pt}2}(1+v^2-\overline{v}^{\hspace{0.55542pt}2})\hspace{0.55542pt}u-2(v^2+\overline{v}^{\hspace{0.55542pt}2}) \end{aligned}$$

with an isolated singularity and whose link is the closure of 3-strand braid \(\sigma _1\sigma _2^{-1}\sigma _1\sigma _2^{-1}\), the figure-eight knot. As in Theorem 1.1 the degree with respect to the variable u is equal to the number of strands, namely 3. However, its total degree is only 7, which is significantly lower than the bound obtained from Theorem 1.2, which is 97.

We would like to emphasize that this discrepancy is not necessarily a sign of weakness of our algorithm. After all, it does generally produce polynomials of comparatively low degree and not just for the figure-eight knot, but for any link type. The proven upper bound should be understood as a worst case scenario that almost never occurs. Thus Theorem 1.2 is not so much about obtaining an ideal, sharp bound (although that is an interesting question) as it is about obtaining a bound in terms of topological data at all, an improvement on the result by Akbulut and King.