use super::*;
pub type _And<L, R> = If<L, R, crate::lit!(0)>;
pub type _Or<L, R> = If<L, crate::lit!(1), R>;
pub type _Xor<L, R> = crate::Eval<If<L, IsZero<R>, R>>;
pub type _Xnor<L, R> = crate::Eval<If<L, R, IsZero<R>>>;
pub type _Xor3<A, B, C> = crate::Eval<If<A, _Xnor<B, C>, _Xor<B, C>>>;
pub type _H<N> = crate::Eval<PopBit<N>>;
pub type _P<N> = crate::Eval<LastBit<N>>;
#[apply(nat_expr)]
pub type _DecUnchecked<N: NatExpr> = If<
_P<N>,
PushBit<_H<N>, crate::lit!(0)>,
PushBit<_DecUnchecked<_H<N>>, crate::lit!(1)>,
>;