use std::fmt::Debug;
pub mod impl_;
pub mod list;
pub trait Proposition<Subject>: Send + Sync + Debug + Clone {}
pub trait Evaluable<S>: Proposition<S> {
type EvalError: Into<Box<dyn std::error::Error + Send + Sync + 'static>> + Send + 'static;
fn evaluate_for(sub: &S) -> Result<(), Self::EvalError>;
}