#[macro_export]
macro_rules! quantify {
(forall $x:ident in $xs:expr => $cond:expr) => {
$crate::quantifiers::basic::forall($xs, |$x| $cond)
};
(exists $x:ident in $xs:expr => $cond:expr) => {
$crate::quantifiers::basic::exists($xs, |$x| $cond)
};
(none $x:ident in $xs:expr => $cond:expr) => {
$crate::quantifiers::basic::none($xs, |$x| $cond)
};
(exactly_one $x:ident in $xs:expr => $cond:expr) => {
$crate::quantifiers::basic::exactly_one($xs, |$x| $cond)
};
(exactly_n $count:literal $x:ident in $xs:expr => $cond:expr) => {
$crate::quantifiers::basic::exactly_n($xs, $count, |$x| $cond)
};
(all_equal $x:ident in $xs:expr) => {
$crate::quantifiers::basic::all_equal($xs)
};
(pairwise $x:ident,$y:ident in $xs:expr => $cond:expr) => {
$crate::quantifiers::structured::pairwise($xs, |$x, $y| $cond)
};
(existsforall $a:ident in $as:expr, $b:ident in $bs:expr => $cond:expr) => {
$crate::quantifiers::nested::existsforall($as, $bs, |$a, $b| $cond)
};
(forallexists $a:ident in $as:expr, $b:ident in $bs:expr => $cond:expr) => {
$crate::quantifiers::nested::forallexists($as, $bs, |$a, $b| $cond)
};
($($t:tt)*) => {
compile_error!("Invalid syntax in quantify! macro.");
};
}