1use thiserror::Error;
4
5#[derive(Debug, Error, Clone, PartialEq, Eq)]
7pub enum ValidationError {
8 #[error("exponentials require products: cannot have function types without pair types")]
10 ExponentialsRequireProducts,
11
12 #[error("linear hom (⊸) requires tensor (⊗): cannot have linear functions without tensor product")]
14 LinearHomRequiresTensor,
15
16 #[error("cartesian structure requires terminal object")]
18 CartesianRequiresTerminal,
19
20 #[error("cartesian structure requires products")]
22 CartesianRequiresProducts,
23
24 #[error("invalid structural rule combination: {0}")]
26 InvalidStructuralRules(String),
27
28 #[error("category name cannot be empty")]
30 EmptyName,
31
32 #[error("duplicate base type: {0}")]
34 DuplicateBaseType(String),
35}