Dualization of missing combinations + Bugfix#78
Merged
ScriptRaccoon merged 8 commits intomainfrom Apr 14, 2026
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
On the page with missing data
/missingthere is a section with missing combinations of the form "p but not q". Missing means that they are consistent, but not yet witnessed by a category in the database. As of writing this, on themainbranch there are 449 missing pairs.Side note: it does not make sense to list missing combinations of the form "p and q", since the trivial category satisfies all properties, so no combination of this form will be missing
Bug
There was a massive bug in the code: It only checked pairs (p,q) where p < q lexicographically. This is not justified since our requirement "p but not q" is not symmetric. For example, neither (thin, but not generating set) nor its dual had been listed before, even though they are "missing". Actually, this combination is inconsistent, the trivial implication "thin => generating set" is missing! (Will be done in another PR.) A better example: "split abelian, but no generator" should be listed as missing.
After fixing this, many more combinations are displayed, their number has become 938.
Dualization
However, many combinations are already witnessed "up to dualization". For example, even though there is (currently) no category in the db which is complete but not cocomplete, there is one which is cocomplete but not complete (the partial order of ordinals). There is also (currently) no category in the db which has powers but not products, but there are categories which have copowers but not coproducts (poset of natural numbers; walking span). This dualization is also supported by the search feature (example).
Hence, it makes sense to list only those pairs of properties p,q where neither "p but not q" nor "pop but not qop" are witnessed by a category, where pop, qop are the duals of p,q (if they exist). Equivalently: when a combination is already witnessed by the dual of a category in the database, do not mark it as missing.
This brings the number down from 938 to only 465 combinations.
Remark
I have decided to not group or even deduplicate the remaining missing combinations if they are dual to each other. For example, both "cocomplete, but no pullbacks" and "complete, but no pushouts" are listed. The reason is that a user who is interested to add a category that fills this gap can decide which one to pick. But once a category has been added which is complete but has no pushouts, both combinations will disappear from the list.
What else
I have also refactored the code a bit and also added (back) the number of total unknown (category, property)-pairs.
Examples
Here is the list of all 473 combinations (938 = 465 + 473) that are consistent, not witnessed directly, but whose dual is witnessed. These are not shown anymore on the page. The first one of these, "additive but no coreflexive equalizers" is already witnessed by FreeAbop for example.
473 combinations