SaaS & Software·Jul 21, 2026

A digestion of the Jacobian conjecture counterexample

The notorious Jacobian conjecture can be formulated concretely over the complex numbers as follows. Conjecture 1 (Jacobian Conjecture) Let be a polynomial map in complex variables, whose Jacobian is a non-zero constant. Then is invertible (

Hacker News11 min readSingle source
A digestion of the Jacobian conjecture counterexample
Image · Hacker News
The gist
5-point summary · 1 min

The notorious Jacobian conjecture can be formulated concretely over the complex numbers as follows. Conjecture 1 (Jacobian Conjecture) Let be a polynomial map in complex variables, whose Jacobian is a non-zero constant. Then is invertible (

  • Conjecture 1 (Jacobian Conjecture) Let be a polynomial map in complex variables, whose Jacobian is a non-zero constant.
  • So the Jacobian conjecture can be viewed as an assertion that local invertibility implies global invertibility.
  • The complex numbers can be easily replaced with other fields of characteristic zero by the Lefschetz principle, but I prefer to work in the concrete setting of the complex numbers.
  • But even if one quotients out by this symmetry (3) to cut the dimension of the domain down to four, the map is still not surjective for the following basic reason.
  • I do not have a completely satisfactory geometric explanation for this miracle, but one can verify it by the following coordinate computation.
In this article

The notorious Jacobian conjecture can be formulated concretely over the complex numbers as follows. Conjecture 1 (Jacobian Conjecture) Let be a polynomial map in complex variables, whose Jacobian is a non-zero constant. Then is invertible (with polynomial inverse). The condition that the Jacobian is non-zero is equivalent to being locally invertible. (The implication of local invertibility from non-vanishing Jacobian follows from the inverse function theorem; the converse implication can be derived from the Weierstrass preparation theorem, but is omitted here.) Also, from the fundamental theorem of algebra, once the Jacobian polynomial is non-zero, it must be constant. So the hypothesis “Jacobian is a non-zero constant” can be replaced with “ is locally invertible”. So the Jacobian conjecture can be viewed as an assertion that local invertibility implies global invertibility. The complex numbers can be easily replaced with other fields of characteristic zero by the Lefschetz principle, but I prefer to work in the concrete setting of the complex numbers. Recently, it was recently shown (using the Fable AI) that the conjecture is false in three dimensions (and thus in higher dimensions as well): Theorem 2 (Counterexample to conjecture) There exists a polynomial which has non-zero constant Jacobian, but is not invertible. The conjecture remains open in two dimensions, and is easy to establish in one dimension. The example can be stated completely explicitly: one can take and one can verify by a brief calculation that and While this is an extremely quick verification, the construction presented in this fashion appears like a massive miracle. The polynomial has degree seven, so a priori the Jacobian ought to be a polynomial in three variables of degree as large as, so the fact that all non-constant coefficients of this polynomial vanish looks like a massive cancellation involving coefficients, which is much larger than the degrees of freedom for a generic degree seven polynomial of three variables. So finding such a polynomial looks highly unlikely to be located by brute force. The example has since been retroactively explained in more geometric terms. As a “digestion” exercise to myself, I sought to write this explanation with relatively little use of algebraic geometry, in a manner that minimizes the amount of “miracles” required, although there are still a few places were some remarkable phenomena occur. It is convenient to use the local injectivity formulation, and to generalize the domain to an equivalent affine variety. Namely, we will show Theorem 3 (Counterexample, reformulated) There exists an affine variety that is isomorphic to by polynomial changes of variable, and a polynomial map which is locally injective, but not globally injective. Clearly one can get from Theorem 3 to Theorem 2 by composing with the isomorphism and using the previously mentioned fact that local injectivity implies non-zero constant Jacobian. Our objective is now to find data, that obeys three separate properties: The advantage of splitting the problem in to these three components is that we can build towards each of them separately. It turns out that and can be built out of the operation of multiplication of low degree polynomials. Namely, consider the following three simple affine spaces: (The notation here refers to the symmetric power of a vector space.) Clearly these spaces are isomorphic to respectively. Furthermore, we have a multiplication map, mapping a pair of a linear polynomial and a quadratic polynomial to a cubic polynomial (Right now, the domain and range of this map is larger dimensional than the target of three; we will cut the dimensions down to three as the argument progresses.) The map, essentially a map from to, is clearly polynomial; in coordinates it is given explicitly in coordinates as The map also enjoys two basic (and commuting) symmetries: So this map enjoys a huge amount of equivariance, basically with respect to an action of the five-dimensional group. The five-dimensional domain is of course larger than the four-dimensional range, so the map clearly cannot be injective. This can already be seen from the scaling symmetry, as the specific scalings for modify the linear and quadratic polynomials but not their product. But even if one quotients out by this symmetry (3) to cut the dimension of the domain down to four, the map is still not surjective for the following basic reason. A generically chosen cubic polynomial will split into the product of three independent linear polynomials. Then there are three pairs which all map to the same cubic polynomial under the multiplication map, but are not related to each other by scaling symmetry (3). Thus, we see that even after quotienting out by the scaling symmetry (3), the multiplication map is generically non-injective in a three-to-one fashion. Thus we already have achieved something resembling goal (b)! It will be convenient to “spend” the scaling symmetry to obtain a useful normalization. If is a linear polynomial and is a quadratic polynomial, the resultant can be defined by the determinant If we have a factoring then the resultant can also be described as Thus the resultant measures whether the linear polynomial and the quadratic polynomial share a common root. A fundamental fact about resultants is that they are -invariant: for any, we have One way to see this is to check it first for translations (which translate the roots by while leaving unchanged) and for inversions (which map to while mapping to and respectively), and then noting that these transformations generate all of. They also interact very nicely with scaling: In particular, the scaling symmetry (3) multiplies by: Thus, we can (generically) normalize away this scaling symmetry by imposing the condition We now have a restricted multiplication map (which by abuse of notation we will continue to call ) from the four-dimensional variety to the four-dimensional space. This map is still not globally injective, as we can take the three pairs in (4) from before and apply the scaling (3) separately to each of the three pairs to obtain the normalization (7). So we have kept property (b). Furthermore, this map retains the -equivariance (and also one remaining scaling symmetry, though we will not make much further use of that symmetry). But we now also have property (a)! Suppose we want to show the local injectivity of in the neighborhood of a pair with. As the resultant is non-vanishing, the root of (which exists in the Riemann sphere, or projective line if you prefer) is distinct from the two roots of (though the latter two roots could be equal to each other). Applying the action (which performs Möbius transforms on the roots), one can assume without loss of generality that is the point at infinity (or equivalently ), thus for some complex number and for some complex numbers, with the resultant condition (7) simplifies to (so in particular are also non-zero). It is then clear that if one perturbs and by a small amount (say, modifying each coefficient by ), then the root of will perturb to something large (), while the roots of stay bounded. Thus, just from knowledge of the product, one can reconstruct which of the three roots of this cubic polynomial will be the perturbed root of, and which two will be the perturbed roots of; from this and (6), (7) we can also reconstruct the leading coefficient of, and this completely determines both and. This establishes the local injectivity property (a). (In fact it is étale, but we will not need the machinery of étale maps here.) Unfortunately, (the four-dimensional analogue of) condition (c) fails: the quadric hypersurface (8) is not isomorphic to the affine space. But we can try to get around this by passing to a three-dimensional slice. Let be some three-dimensional affine plane of (which we will take to avoid the origin for technical reasons), then we can restrict as a map from the set to. The latter is clearly identifiable (by linear changes of coordinate) to. As was already locally invertible, it remains locally invertible under restriction; and because generic cubic polynomials had three preimages under in (8), this continues to be the case after restricting to (9) (unless was somehow so degenerate that it had no generic elements, but this turns out to be impossible). So we have retained properties (a) and (b). The miracle is that, with a good choice of, we can also obtain (c) and obtain the desired counterexample to the Jacobian conjecture: despite appearances, the variety (9) is in fact equivalent to the affine space by polynomial changes of variable! Let’s see how. The affine hyperplanes in avoiding the origin are parameterized by the dual space of avoiding the origin, which one can think of as the non-zero third order homogeneous differential operators in two variables. Indeed, every such operator generates affine hyperplane that avoids the origin, and conversely by duality every affine hyperplane avoiding the origin arises in this form uniquely. Just as the cubic polynomials in can be factored into three linear polynomials, the differential operators in the dual space can also be factored into three linear differential operators, e.g., in the case that is non-zero. The action moves the roots around the Riemann sphere by Möbius transformations. As these transformations are -transitive, the actual selection of such roots is not too important (and the scaling symmetry similarly makes the choice of leading coefficient unimportant); the only thing to keep track of is whether the roots repeat. Up to the symmetries, there are in fact just three different equivalence classes of differential operator (and thus of affine hyperplane ) to consider: It turns out that the affine miracle for (9) occurs precisely in the second case, when has two identical roots. I do not have a completely satisfactory geometric explanation for this miracle, but one can verify it by the following coordinate computation. By applying the action, we can normalize so that, thus is now the affine hyperplane of cubic polynomials with. Using (2) and (5), the variety (9) can now be described explicitly in coordinates as At first glance this seems to be a generic-looking variety cut out by a cubic equation and a quadratic equation – hardly a candidate to be affine! But observe that if is non-zero, then the second equation can be solved for, and the first equation can be solved for, Putting these two equations together, we see that as long as one removes the case, the quintuple is uniquely determined by by a change of variables which is Laurent in and polynomial in. Thus we have a nice birational equivalence Thus we have already almost established property (c): the variety (9) becomes birationally equivalent to after cutting out the subvariety. In particular, for each fixed non-zero value of, the corresponding fiber of (10) is equivalent to by polynomial changes of variable, since we can reconstruct from the coordinates by the polynomial formulae So we just need to glue back in the fiber. Indeed, from (10) we see that the fiber at is just Now we observe a key miracle: the cubic equation and quadratic equation have a unique affine solution (as opposed to the six possible solutions that Bezout’s theorem might suggest). So the fiber here is also affine: This is extremely encouraging for the purposes of establishing property (c), as it strongly suggests that the variety (10) has the structure of an -bundle over, which is already extremely close to being isomorphic to the affine space. The main remaining task is to make sure that nothing singular happens in the limit, and that a global polynomial coordinate chart for (10) that covers both the and fibers can be constructed. The standard way to proceed here is to manipulate various tangent spaces using the modern machinery of algebraic geometry and commutative algebra, but given my own background, I prefer to adopt the language of analysis, and in particular big-O notation (in place of the ideals used in algebraic geometry), in order to investigate the limit by hand. On the variety (10), let us use to denote any multiple of by a polynomial expression in. Thus, for instance, the equation implies that while the equation implies that as well as the more refined estimate In the case we could conclude that. Now we perturb this observation. Multiplying (13) by we have, which on substitution into (14) gives; substituting this back into either (13) or (14) also gives. We can get some more precise asymptotics by also taking advantage of (15). Substituting into (15), we obtain after some algebra So if we write more explicitly as, then we have and thus Substituting this back into (11) gives an asymptotic for: Finally, one can insert these estimates into (12), although one only gets a trivial bound in this case: Expanding the error term in (16) as, and doing a little more algebra, we thus have a polynomial change of variables which completely parameterizes the variety (10) by polynomial combinations of three coordinates. This already gives (a) and thus completes the proof of Theorem 3. The previous computations, when expanded out, also gives polynomial inverse maps: The map from to the coefficients of (dropping the coefficient which is constrained to equal ), we obtain a polynomial map with which theory predicts to have a constant Jacobian, and indeed one can calculate that the Jacobian is. This is essentially the original example up to trivial changes of variable; indeed, one can check that the map is exactly the map given in (1). AI disclosure: I used an AI chatbot to discuss various aspects of this problem and to confirm several of the calculations made here.

Integrity note  ·  Xela does not rewrite or paraphrase article content. The excerpt above is the source publication's own words, sanitized for display. For the full piece — including any quotes, charts, or images — read it at Hacker News. Xela's rewritten version is off for this story, so there's no editorial angle attached — you're getting the source's reporting unfiltered. When the rewrite is on, we add a What this means block underneath with the operator/trader takeaway.

What people are saying

Discussion

Hot takes

0/280

Loading takes…

Comments

Discussion · 0

Sign in to comment, like, and save articles.

Sign in

Loading comments…

Keep readingSaaS & Software desk
See all in SaaS
Show HN: Computable – Buy, sell, and redeem GPU for the exact weeks you want
·

Show HN: Computable – Buy, sell, and redeem GPU for the exact weeks you want

Hey we are Computable. We spent years building trading infrastructure at Jump Trading and Coinbase. From that point of view, compute looks like energy markets before 2000: everything trades through private bilateral leases, there’s no visible price, and nothing can be resold. The same H100 rents at a 2x spread depending on who’s asking, and once you sign a 24-month lease, it can never change hands. So we built a market for GPU nodes, sold by the calendar week. Here are three things you can do on it that you can’t do anywhere else: - Buy exactly the weeks you need. Three nodes for the last two weeks of October means you pay for those two weeks and walk away when the run is done. You don't have to commit to 6-24 months, and there's no flexibility premium. - Sell back what you don’t use. If your plans change, unused weeks turn back into cash: we keep a market quote posted on every position, so there’s always a price to hit. - Buy (or sell) the future. Lock January in July at a price you set, so the cost of a future run is known before another 40% H100 rate jump makes it not. The first auction is live now at : a block of nodes, August through the end of January. Bidding closes July 31. The bids are sealed. You bid how many nodes, which weeks, and your price. Every clearing price gets published after settlement, because nobody knows what a GPU week is worth and we want the prints to exist in public. Happy to go deep in the comments on anything, including the clearing mechanism, which is a packing problem and was fun to design! Comments URL: Points: 3 # Comments: 1

Hacker NewsSingle source
Show HN: Browser Tools SDK – an optimal browser harness for agents
·

Show HN: Browser Tools SDK – an optimal browser harness for agents

We’re open-sourcing Browser Tools SDK: a small TypeScript package to give any AI agent a reliable way to control a real browser. With just a few lines of code, you can give any agent a production-ready browser harness import { createAiSdkBrowserTools } from "libretto-browser-tools/ai-sdk"; import { LocalBrowserProvider } from "libretto-browser-tools"; const { tools } = createAiSdkBrowserTools(new LocalBrowserProvider()); const result = await generateText({ model: anthropic("claude-sonnet-4-5"), tools, prompt: "Go to Hacker News and tell me the top story", }); We built the Browser Tools SDK because access to a browser is one of the most important tools of a productive agent, but we found many of the existing tools lacking. Using the insights we gained building Libretto, we were able to build the SDK so that it’s significantly more context and cost-efficient than other tools: We compared Browser Tools SDK against agent-browser, playwright-cli, and dev-browser on 26 live-site tasks with GPT 5.6 Sol (best results from 3 runs). Browser Tools tied for the best pass rate at 24/26 and came in about 55% cheaper per successful task than the next alternative ($0.106 vs $0.235) while also using far fewer tokens (1.45M vs 2.29M+). Benchmark methodology is in the repo. The Browser Tools SDK only exposes 6 tools, of which only 2 are really important: ` ` and ` `. The snapshot tool was designed from the ground up to be extremely context-efficient and provide agents the overview they need to know what to try next. The exec tool takes and executes raw Playwright code, of which the models have been trained on heaps of, and know how to use without much direction. Works with AI SDK and Pi out of the box, plus a custom path for anything else. More frameworks are coming soon. You can also use any browser infra provider (Libretto Cloud, Kernel, Browserbase, etc.) or use `LocalBrowserProvider` to run Chromium locally (although that will have less anti-bot protections). MIT licensed. Check out the docs: and join the Discord: . We’d love any and all feedback.

Hacker NewsSingle source
Newsletter

Track saas & software every morning.

Daily digest tuned to this beat. The 5 stories most worth your time. Unsubscribe anytime.