Download

CatDat is built on a SQLite database. You can download a snapshot of it below and inspect the data in your terminal or with any database tool of your choice.

This is intended for advanced users. It is useful if you want to explore the data beyond what is available through the web application.

Download CatDat database

Example Queries

List of tables

.tables

Schema of structures table

.schema structures

Number of categorical structures per type

SELECT type, COUNT(*) AS count
FROM structures
GROUP BY type;

Categories without an nLab link

SELECT id, name
FROM structures
WHERE type = 'category'
AND nlab_link IS NULL;

Structures involving rings

SELECT id, name, type
FROM structures
WHERE name LIKE '%ring%';

Finite categories

SELECT structure_id
FROM property_assignments
WHERE type = 'category'
AND property_id = 'finite'
AND is_satisfied = TRUE;

Categories without a generating set

SELECT structure_id
FROM property_assignments
WHERE type = 'category'
AND property_id = 'generating set'
AND is_satisfied = FALSE;

Abelian categories that are not cocomplete

SELECT a.structure_id
FROM property_assignments a
CROSS JOIN property_assignments b
WHERE a.type = 'category'
AND a.structure_id = b.structure_id
AND a.property_id = 'abelian'
AND a.is_satisfied = TRUE
AND b.property_id = 'cocomplete'
AND b.is_satisfied = FALSE;

Top 20 categories with the most unsatisfied properties

SELECT
    structure_id AS category,
    count(property_id) AS count
FROM property_assignments
WHERE is_satisfied = FALSE
AND type = 'category'
GROUP BY structure_id
ORDER BY count
DESC LIMIT 20;

Categories with unknown regular epimorphisms

SELECT s.id
FROM structures s
WHERE s.type = 'category'
AND NOT EXISTS (
    SELECT 1 FROM special_morphism_assignments a
    WHERE a.category_id = s.id
    AND a.type = 'regular epimorphisms'
);

Number of categories per tag

SELECT
    tag,
    COUNT(structure_id) AS tagged_categories
FROM structure_tag_assignments
WHERE type = 'category'
GROUP BY tag
ORDER BY tagged_categories DESC;

Properties without a dual

SELECT id, type
FROM properties
WHERE dual_property_id IS NULL;

Self-dual properties

SELECT id, type
FROM properties
WHERE id = dual_property_id;

Properties not invariant under equivalences

SELECT id, type
FROM properties
WHERE invariant_under_equivalences = FALSE;

Properties without related properties

SELECT p.id, p.type
FROM properties p
WHERE NOT EXISTS (
   SELECT 1 FROM related_properties r
   WHERE r.property_id = p.id
)
ORDER BY p.type;

Number of non-deduced implications per type

SELECT type, COUNT(*) AS count
FROM implications
WHERE is_deduced = FALSE
GROUP BY type;

Equivalent characterizations for categories

SELECT assumptions, conclusions
FROM implications_view
WHERE type = 'category'
AND is_equivalence = TRUE;

Top 5 implications of categories with the most assumptions

SELECT assumptions, conclusions
FROM implications_view
WHERE type = 'category'
ORDER BY json_array_length(assumptions)
DESC LIMIT 5;

Trivial proofs

SELECT structure_id, type, property_id, is_satisfied, proof
FROM property_assignments
WHERE proof = 'This is trivial.';

Top 10 longest proofs

SELECT structure_id, type, property_id, is_satisfied, length(proof)
FROM property_assignments
ORDER BY length(proof)
DESC LIMIT 10;

Top 10 properties with the most undecided categories

SELECT
    p.id AS property_id,
    COUNT(s.id) AS undecided_categories
FROM properties p
CROSS JOIN structures s
LEFT JOIN property_assignments pa
ON pa.structure_id = s.id
AND pa.property_id = p.id
WHERE p.type = 'category'
AND pa.property_id IS NULL
AND s.type = 'category'
GROUP BY p.id
ORDER BY undecided_categories
DESC LIMIT 10;

Properties which cannot be decided for a given structure

SELECT structure_id, type, property_id, proof
FROM property_assignments
WHERE is_satisfied IS NULL;

Functors with left adjoints

SELECT
    structure_id AS functor,
    associated_structure_id AS left_adjoint
FROM associated_structures
WHERE type = 'functor'
AND label = 'left_adjoint';

Symmetric monoidal categories with their underlying categories

SELECT
    structure_id AS symmetric_monoidal_category,
    associated_structure_id AS category
FROM associated_structures
WHERE type = 'symmetric_monoidal_category'
AND label = 'underlying_category';

Types of epimorphisms

SELECT property_id
FROM property_tag_assignments
WHERE type = 'morphism'
AND tag = 'types of epimorphisms';