use crate::prop::conn as conn_laws;
macro_rules! prove_uint_widen {
($mod_name:ident, $CONN:path, $A:ty, $B:ty) => {
mod $mod_name {
use super::*;
#[kani::proof]
fn galois_l() {
let a: $A = kani::any();
let b: $B = kani::any();
assert!(conn_laws::galois_l(&$CONN, a, b));
}
#[kani::proof]
fn monotone_l() {
let a1: $A = kani::any();
let a2: $A = kani::any();
assert!(conn_laws::monotone_l(&$CONN, a1, a2));
}
#[kani::proof]
fn closure_l() {
let a: $A = kani::any();
assert!(conn_laws::closure_l(&$CONN, a));
}
#[kani::proof]
fn kernel_l() {
let b: $B = kani::any();
assert!(conn_laws::kernel_l(&$CONN, b));
}
#[kani::proof]
fn idempotent_l() {
let a: $A = kani::any();
assert!(conn_laws::idempotent_l(&$CONN, a));
}
}
};
}
use crate::core::i008 as ci008;
use crate::core::i016 as ci016;
use crate::core::i032 as ci032;
use crate::core::i064 as ci064;
use crate::core::i128 as ci128;
use crate::core::u008 as cu008;
use crate::core::u016 as cu016;
use crate::core::u032 as cu032;
use crate::core::u064 as cu064;
prove_uint_widen!(uu_u008u016, cu008::U008U016, u8, u16);
prove_uint_widen!(uu_u008u032, cu008::U008U032, u8, u32);
prove_uint_widen!(uu_u008u064, cu008::U008U064, u8, u64);
prove_uint_widen!(uu_u008u128, cu008::U008U128, u8, u128);
prove_uint_widen!(uu_u016u032, cu016::U016U032, u16, u32);
prove_uint_widen!(uu_u016u064, cu016::U016U064, u16, u64);
prove_uint_widen!(uu_u016u128, cu016::U016U128, u16, u128);
prove_uint_widen!(uu_u032u064, cu032::U032U064, u32, u64);
prove_uint_widen!(uu_u032u128, cu032::U032U128, u32, u128);
prove_uint_widen!(uu_u064u128, cu064::U064U128, u64, u128);
prove_uint_widen!(iu_i008u008, ci008::I008U008, i8, u8);
prove_uint_widen!(iu_i008u016, ci008::I008U016, i8, u16);
prove_uint_widen!(iu_i008u032, ci008::I008U032, i8, u32);
prove_uint_widen!(iu_i008u064, ci008::I008U064, i8, u64);
prove_uint_widen!(iu_i008u128, ci008::I008U128, i8, u128);
prove_uint_widen!(iu_i016u016, ci016::I016U016, i16, u16);
prove_uint_widen!(iu_i016u032, ci016::I016U032, i16, u32);
prove_uint_widen!(iu_i016u064, ci016::I016U064, i16, u64);
prove_uint_widen!(iu_i016u128, ci016::I016U128, i16, u128);
prove_uint_widen!(iu_i032u032, ci032::I032U032, i32, u32);
prove_uint_widen!(iu_i032u064, ci032::I032U064, i32, u64);
prove_uint_widen!(iu_i032u128, ci032::I032U128, i32, u128);
prove_uint_widen!(iu_i064u064, ci064::I064U064, i64, u64);
prove_uint_widen!(iu_i064u128, ci064::I064U128, i64, u128);
prove_uint_widen!(iu_i128u128, ci128::I128U128, i128, u128);