diff --git a/.vscode/settings.json b/.vscode/settings.json
index 8bf28de5..6c561212 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -17,7 +17,8 @@
"Prost",
"SetxSet",
"hilberts",
- "maxage"
+ "maxage",
+ "CVNA"
],
"cSpell.words": [
"abelian",
@@ -130,6 +131,7 @@
"Kashiwara",
"katex",
"Kolmogorov",
+ "Kornell",
"lextensive",
"libsql",
"Lindelöf",
@@ -145,6 +147,7 @@
"morphism",
"morphisms",
"naturality",
+ "Neumann",
"Niefield",
"nilradical",
"nlab",
@@ -155,6 +158,7 @@
"posets",
"preadditive",
"precomposed",
+ "predual",
"preimage",
"preimages",
"preordered",
@@ -174,6 +178,8 @@
"Rosicky",
"saft",
"Schapira",
+ "semigroup",
+ "semigroups",
"semisimple",
"setoid",
"Sheafifiable",
diff --git a/database/data/001_categories/002_analysis.sql b/database/data/001_categories/002_analysis.sql
index d598c8d3..5843f852 100644
--- a/database/data/001_categories/002_analysis.sql
+++ b/database/data/001_categories/002_analysis.sql
@@ -11,7 +11,7 @@ INSERT INTO categories (
VALUES
(
'Ban',
- 'category of Banach spaces with linear contractions',
+ 'category of Banach spaces',
'$\mathbf{Ban}$',
'Banach spaces over $\mathbb{C}$',
'linear contractions, i.e. linear maps of norm $\leq 1$',
@@ -19,6 +19,46 @@ VALUES
'https://ncatlab.org/nlab/show/Banach+space',
NULL
),
+(
+ 'BanAlg_nu',
+ 'category of non-unital Banach algebras',
+ '$\mathbf{BanAlg}_{nu}$',
+ 'non-unital Banach algebras over $\mathbb{C}$',
+ 'non-unital algebra homomorphisms of norm $\leq 1$',
+ 'With "non-unital" we mean "not necessarily unital". This category is the category of semigroup objects in the cocomplete monoidal category $(\mathbf{Ban},\otimes_p)$.',
+ 'https://ncatlab.org/nlab/show/Banach+algebra',
+ NULL
+),
+(
+ 'BanAlg_u',
+ 'category of unital Banach algebras',
+ '$\mathbf{BanAlg}_u$',
+ 'unital Banach algebras over $\mathbb{C}$',
+ 'unital algebra homomorphisms of norm $\leq 1$',
+ 'This category is the category of monoid objects in the cocomplete monoidal category $(\mathbf{Ban},\otimes_p)$.',
+ 'https://ncatlab.org/nlab/show/Banach+algebra',
+ NULL
+),
+(
+ 'C*Alg_nu',
+ 'category of non-unital C*-algebras',
+ '$\mathbf{C^*Alg}_{nu}$',
+ 'non-unital C*-algebras',
+ 'non-unital $*$-algebra homomorphisms',
+ 'With "non-unital" we mean "not necessarily unital".',
+ 'https://ncatlab.org/nlab/show/C-star-algebra',
+ NULL
+),
+(
+ 'C*Alg_u',
+ 'category of unital C*-algebras',
+ '$\mathbf{C^*Alg}_{u}$',
+ 'unital C*-algebras',
+ 'unital $*$-algebra homomorphisms',
+ NULL,
+ 'https://ncatlab.org/nlab/show/C-star-algebra',
+ NULL
+),
(
'Meas',
'category of measurable spaces',
@@ -58,4 +98,14 @@ VALUES
'This category is equivalent to the subcategory of $\mathbf{Top}$ (or $\mathbf{Haus}$) that consists of metrizable topological spaces. Hence, the metrics only play a secondary role here.',
'https://ncatlab.org/nlab/show/metrisable+topological+space',
NULL
+),
+(
+ 'CVNA',
+ 'category of commutative von Neumann algebras',
+ '$\mathbf{CVNA}$',
+ 'commutative von Neumann algebras, i.e. commutative unital $C^*$-algebras that have a predual',
+ 'normal unital $C^*$-morphisms',
+ 'Von Neumann algebras are also called $W^*$-algebras. In Kornell''s paper Quantum Collections this category is denoted $\mathbf{cW}^*$.',
+ 'https://ncatlab.org/nlab/show/von+Neumann+algebra',
+ NULL
);
\ No newline at end of file
diff --git a/database/data/001_categories/100_related-categories.sql b/database/data/001_categories/100_related-categories.sql
index b5370f9f..6b048bab 100644
--- a/database/data/001_categories/100_related-categories.sql
+++ b/database/data/001_categories/100_related-categories.sql
@@ -11,8 +11,18 @@ VALUES
('Alg(R)', 'CAlg(R)'),
('Alg(R)', 'R-Mod'),
('Alg(R)', 'Ring'),
-('Ban','Met'),
('B', 'FI'),
+('Ban','Met'),
+('Ban','CVNA'),
+('Ban','BanAlg_nu'),
+('Ban','BanAlg_u'),
+('BanAlg_u', 'CVNA'),
+('BanAlg_u', 'BanAlg_nu'),
+('BanAlg_u', 'Alg(R)'),
+('BanAlg_u', 'C*Alg_u'),
+('BanAlg_nu', 'BanAlg_u'),
+('BanAlg_nu', 'Rng'),
+('BanAlg_nu', 'C*Alg_nu'),
('B', 'FS'),
('BG', 'BG_f'),
('BG', 'BN'),
@@ -21,6 +31,12 @@ VALUES
('BN', 'BG'),
('BN', 'BOn'),
('BOn', 'BN'),
+('C*Alg_u', 'C*Alg_nu'),
+('C*Alg_u', 'BanAlg_u'),
+('C*Alg_u', 'Alg(R)'),
+('C*Alg_nu', 'C*Alg_u'),
+('C*Alg_nu', 'BanAlg_nu'),
+('C*Alg_nu', 'Rng'),
('CAlg(R)', 'Alg(R)'),
('CAlg(R)', 'CRing'),
('CAlg(R)', 'R-Mod'),
@@ -32,6 +48,8 @@ VALUES
('CRing', 'CAlg(R)'),
('CRing', 'Ring'),
('CRing', 'Rng'),
+('CVNA','BanAlg_u'),
+('CVNA','CAlg(R)'),
('FI', 'B'),
('FI', 'FS'),
('FS', 'B'),
diff --git a/database/data/004_property-assignments/BanAlg_nu.sql b/database/data/004_property-assignments/BanAlg_nu.sql
new file mode 100644
index 00000000..6188c33f
--- /dev/null
+++ b/database/data/004_property-assignments/BanAlg_nu.sql
@@ -0,0 +1,37 @@
+INSERT INTO category_property_assignments (
+ category_id,
+ property_id,
+ is_satisfied,
+ reason
+)
+VALUES
+(
+ 'BanAlg_nu',
+ 'complete',
+ TRUE,
+ 'This is because $\mathbf{Ban}$ is complete and then the algebra operations are defined point-wise.'
+),
+(
+ 'BanAlg_nu',
+ 'cocomplete',
+ TRUE,
+ 'If $(\mathcal{C},\otimes)$ is a cocomplete monoidal category (which includes the requirement that $\otimes$ is cocontinuous in each variable), then its category of semigroup objects is cocomplete: this is a straight forward generalization of the construction of colimits of classical semigroups.'
+),
+(
+ 'BanAlg_nu',
+ 'zero morphisms',
+ TRUE,
+ 'The zero maps provide zero morphisms because we do not assume units here.'
+),
+(
+ 'BanAlg_nu',
+ 'skeletal',
+ FALSE,
+ 'This is trivial.'
+),
+(
+ 'BanAlg_nu',
+ 'balanced',
+ FALSE,
+ 'We can take the same counterexample as in the unital case.'
+);
\ No newline at end of file
diff --git a/database/data/004_property-assignments/BanAlg_u.sql b/database/data/004_property-assignments/BanAlg_u.sql
new file mode 100644
index 00000000..f8601162
--- /dev/null
+++ b/database/data/004_property-assignments/BanAlg_u.sql
@@ -0,0 +1,37 @@
+INSERT INTO category_property_assignments (
+ category_id,
+ property_id,
+ is_satisfied,
+ reason
+)
+VALUES
+(
+ 'BanAlg_u',
+ 'complete',
+ TRUE,
+ 'This is because $\mathbf{Ban}$ is complete and then the algebra operations are defined point-wise.'
+),
+(
+ 'BanAlg_u',
+ 'cocomplete',
+ TRUE,
+ 'If $(\mathcal{C},\otimes)$ is a cocomplete monoidal category (which includes the requirement that $\otimes$ is cocontinuous in each variable), then its category of monoid objects is cocomplete: this is a straight forward generalization of the construction of colimits of classical monoids.'
+),
+(
+ 'BanAlg_u',
+ 'semi-strongly connected',
+ FALSE,
+ 'There is no unital $\mathbb{C}$-algebra homomorphism between $M_2(\mathbb{C})$ and $M_3(\mathbb{C})$.'
+),
+(
+ 'BanAlg_u',
+ 'skeletal',
+ FALSE,
+ 'This is trivial.'
+),
+(
+ 'BanAlg_u',
+ 'balanced',
+ FALSE,
+ 'The inclusion $\alpha : C^1([0,1]) \hookrightarrow C([0,1])$ provides a counterexample, where $C^1([0,1])$ is equipped with the norm $||f||_1 := ||f|| + ||f''||$. Since $\alpha$ is injective, it is a monomorphism. It is also an epimorphism since it has dense image by the Weierstrass approximation theorem. But of course $\alpha$ is no isomorphism.'
+);
\ No newline at end of file
diff --git a/database/data/004_property-assignments/CVNA.sql b/database/data/004_property-assignments/CVNA.sql
new file mode 100644
index 00000000..a8140cb2
--- /dev/null
+++ b/database/data/004_property-assignments/CVNA.sql
@@ -0,0 +1,37 @@
+INSERT INTO category_property_assignments (
+ category_id,
+ property_id,
+ is_satisfied,
+ reason
+)
+VALUES
+(
+ 'CVNA',
+ 'complete',
+ TRUE,
+ 'See Prop. 5.3 and Prop. 6.6 in Quantum Collections.'
+),
+(
+ 'CVNA',
+ 'coproducts',
+ TRUE,
+ 'See Prop. 6.1 in Quantum Collections.'
+),
+(
+ 'CVNA',
+ 'coequalizers',
+ TRUE,
+ 'See Prop. 5.7 in Quantum Collections. Commutativity is preserved.'
+),
+(
+ 'CVNA',
+ 'pointed',
+ FALSE,
+ 'The terminal object $0$ is not the initial object $\mathbb{C}$.'
+),
+(
+ 'CVNA',
+ 'cocartesian coclosed',
+ FALSE,
+ 'See Prop. 6.7 in Quantum Collections.'
+);
diff --git a/database/data/004_property-assignments/CstarAlg_nu.sql b/database/data/004_property-assignments/CstarAlg_nu.sql
new file mode 100644
index 00000000..ce9a8580
--- /dev/null
+++ b/database/data/004_property-assignments/CstarAlg_nu.sql
@@ -0,0 +1,20 @@
+INSERT INTO category_property_assignments (
+ category_id,
+ property_id,
+ is_satisfied,
+ reason
+)
+VALUES
+-- TODO: add properties here
+(
+ 'C*Alg_nu',
+ 'inhabited',
+ TRUE,
+ 'This is clear.'
+),
+(
+ 'C*Alg_nu',
+ 'skeletal',
+ FALSE,
+ 'This is trivial.'
+);
\ No newline at end of file
diff --git a/database/data/004_property-assignments/CstarAlg_u.sql b/database/data/004_property-assignments/CstarAlg_u.sql
new file mode 100644
index 00000000..aa9ec6f2
--- /dev/null
+++ b/database/data/004_property-assignments/CstarAlg_u.sql
@@ -0,0 +1,20 @@
+INSERT INTO category_property_assignments (
+ category_id,
+ property_id,
+ is_satisfied,
+ reason
+)
+VALUES
+-- TODO: add properties here
+(
+ 'C*Alg_u',
+ 'inhabited',
+ TRUE,
+ 'This is clear.'
+),
+(
+ 'C*Alg_u',
+ 'skeletal',
+ FALSE,
+ 'This is trivial.'
+);
\ No newline at end of file
diff --git a/database/data/006_special-objects/002_initial_objects.sql b/database/data/006_special-objects/002_initial_objects.sql
index 9a4713f5..f0c392b4 100644
--- a/database/data/006_special-objects/002_initial_objects.sql
+++ b/database/data/006_special-objects/002_initial_objects.sql
@@ -10,10 +10,13 @@ VALUES
('Ab_fg', 'trivial group'),
('Alg(R)', '$R$'),
('Ban', 'trivial Banach space'),
+('BanAlg_nu', 'zero algebra'),
+('BanAlg_u', '$\mathbb{C}$'),
('CAlg(R)', '$R$'),
('Cat', 'empty category'),
('CMon', 'trivial monoid'),
('CRing', 'ring of integers'),
+('CVNA', '$\mathbb{C}$'),
('FI', 'empty set'),
('FinAb', 'trivial group'),
('FinGrp', 'trivial group'),
diff --git a/database/data/006_special-objects/003_terminal_objects.sql b/database/data/006_special-objects/003_terminal_objects.sql
index c51d167a..ab29bb24 100644
--- a/database/data/006_special-objects/003_terminal_objects.sql
+++ b/database/data/006_special-objects/003_terminal_objects.sql
@@ -10,10 +10,13 @@ VALUES
('Ab_fg', 'trivial group'),
('Alg(R)', 'trivial algebra'),
('Ban', 'trivial Banach space'),
+('BanAlg_nu', 'zero algebra'),
+('BanAlg_u', 'zero algebra'),
('CAlg(R)', 'trivial algebra'),
('Cat', 'trivial category'),
('CMon', 'trivial monoid'),
('CRing', 'zero ring'),
+('CVNA', 'zero algebra'),
('FinAb', 'trivial group'),
('FinGrp', 'trivial group'),
('FinOrd', 'singleton ordered set'),
diff --git a/database/data/006_special-objects/004_coproducts.sql b/database/data/006_special-objects/004_coproducts.sql
index 4406da7e..7f87e16f 100644
--- a/database/data/006_special-objects/004_coproducts.sql
+++ b/database/data/006_special-objects/004_coproducts.sql
@@ -12,6 +12,8 @@ VALUES
('Ab', 'direct sums'),
('Alg(R)', 'see MSE/625874'),
('Ban', 'cocompletion of the direct sum with the $1$-norm'),
+('BanAlg_u', 'The coproduct of $A,B$ is the cocompletion of the normed algebra $A \oplus B \oplus (A \otimes B) \oplus (B \otimes A) \oplus \cdots$ modulo the closed ideal generated by $1_A - 1_B$. The general case is similar.'),
+('BanAlg_nu', 'The coproduct of $A,B$ is the cocompletion of the normed algebra $A \oplus B \oplus (A \otimes B) \oplus (B \otimes A) \oplus \cdots$. The general case is similar.'),
('CAlg(R)', 'tensor products over $R$'),
('Cat', 'disjoint unions'),
('CMon', 'direct sums'),
diff --git a/database/data/006_special-objects/005_products.sql b/database/data/006_special-objects/005_products.sql
index 5829f599..cdcc6e17 100644
--- a/database/data/006_special-objects/005_products.sql
+++ b/database/data/006_special-objects/005_products.sql
@@ -12,6 +12,8 @@ VALUES
('Ab', 'direct products with pointwise operations'),
('Alg(R)', 'direct products with pointwise operations'),
('Ban', 'direct products with the $\sup$-norm'),
+('BanAlg_nu', 'direct products with the $\sup$-norm'),
+('BanAlg_u', 'direct products with the $\sup$-norm'),
('CAlg(R)', 'direct products with pointwise operations'),
('Cat', 'direct products with pointwise operations'),
('CMon', 'direct products with pointwise operations'),
diff --git a/database/data/007_special-morphisms/002_isomorphisms.sql b/database/data/007_special-morphisms/002_isomorphisms.sql
index ad35047e..bfce9ec1 100644
--- a/database/data/007_special-morphisms/002_isomorphisms.sql
+++ b/database/data/007_special-morphisms/002_isomorphisms.sql
@@ -50,6 +50,16 @@ VALUES
'bijective linear isometries',
'This is easy.'
),
+(
+ 'BanAlg_nu',
+ 'isometric bijective algebra homomorphisms',
+ 'This is easy.'
+),
+(
+ 'BanAlg_u',
+ 'isometric bijective algebra homomorphisms',
+ 'This is easy.'
+),
(
'BG',
'every morphism',
@@ -90,6 +100,11 @@ VALUES
'bijective ring homomorphisms',
'This characterization holds in every algebraic category.'
),
+(
+ 'CVNA',
+ 'bijective isometric $*$-homomorphisms',
+ 'This is trivial.'
+),
(
'FI',
'bijective maps',
diff --git a/src/lib/client/utils.ts b/src/lib/client/utils.ts
index 2f0e2253..f40594c8 100644
--- a/src/lib/client/utils.ts
+++ b/src/lib/client/utils.ts
@@ -44,3 +44,7 @@ export const resize_textarea: Attachment = (textarea) => {
textarea.removeEventListener('input', adjust)
}
}
+
+export function strip_html_tags(input: string): string {
+ return input.replace(/<[^>]*>/g, '')
+}
diff --git a/src/routes/category/[id]/+page.svelte b/src/routes/category/[id]/+page.svelte
index 25329ba6..8b556b22 100644
--- a/src/routes/category/[id]/+page.svelte
+++ b/src/routes/category/[id]/+page.svelte
@@ -5,9 +5,9 @@
import Chip from '$components/Chip.svelte'
import { category_detail_level } from '$lib/states/detail_level.svelte'
import TextWithReason from '$components/TextWithReason.svelte'
- import { filter_by_tag, pluralize } from '$lib/client/utils'
+ import { filter_by_tag, pluralize, strip_html_tags } from '$lib/client/utils'
import CategoryList from '$components/CategoryList.svelte'
- import { faQuestion, faQuestionCircle } from '@fortawesome/free-solid-svg-icons'
+ import { faQuestion } from '@fortawesome/free-solid-svg-icons'
import Fa from 'svelte-fa'
import SuggestionForm from '$components/SuggestionForm.svelte'
@@ -16,9 +16,12 @@
let category = $derived(data.category)
-