Skip to content
Tech News
← Back to articles

Finding a bug in Dummit and Foote's Abstract Algebra

read original get Dummit and Foote Abstract Algebra, 3rd Edition → more articles
Why This Matters

A programmer formalizing a classic abstract algebra textbook in the Rocq proof assistant discovered that its very first exercise is technically false, failing for the empty-domain edge case. It's a small but vivid illustration of why formal verification tools are gaining traction: machines don't skip over corner cases that human readers gloss right past.

Key Takeaways
Worth a Look

Dummit and Foote Abstract Algebra, 3rd Edition — This is the very textbook at the center of the story — the classic Dummit and Foote "Abstract Algebra," a staple for groups, rings, and fields. Having your own copy lets you work through Proposition 1 (and hunt for edge cases like the empty-set counterexample) yourself.

See Dummit and Foote Abstract Algebra, 3rd Edition on Amazon → Affiliate link — we may earn a commission on purchases, at no extra cost to you. Product picked by AI based on this article; it is not a tested recommendation.

Finding a Bug in Dummit and Foote's Abstract Algebra

During my second week at the Recurse Center, I've been trying to formalize Dummit and Foote's abstract algebra textbook (appropriately titled "Abstract Algebra") in Rocq. I had quite a hard time with the first proof exercise in the book because the stated proof goal is not true. This was both frustrating and exciting to figure out :)

Definitions

A function f from a set A to a set B (written "f: A -> B") is a set of pairs such that

The first item in each pair comes from A.

The second item in each pair comes from B.

For each element of A, it is the first item in exactly one of the pairs.

A function is injective if no two distinct inputs map to the same output. For example, f: int -> int by f(x) = x^2 is not injective because f(1) = f(-1).

A function f: A -> B has a left inverse if there exists a function g: B -> A such that forall a in A, g(f(a)) = a. In other words, f's left inverse "undoes" f.

Proposition 1 (1)

... continue reading