use thiserror::Error;
#[derive(Debug, Error, Clone, PartialEq, Eq)]
pub enum ValidationError {
#[error("exponentials require products: cannot have function types without pair types")]
ExponentialsRequireProducts,
#[error("linear hom (⊸) requires tensor (⊗): cannot have linear functions without tensor product")]
LinearHomRequiresTensor,
#[error("cartesian structure requires terminal object")]
CartesianRequiresTerminal,
#[error("cartesian structure requires products")]
CartesianRequiresProducts,
#[error("invalid structural rule combination: {0}")]
InvalidStructuralRules(String),
#[error("category name cannot be empty")]
EmptyName,
#[error("duplicate base type: {0}")]
DuplicateBaseType(String),
}