use super::*;
pub trait PowExt<A: Prop, B: Prop>: Sized {
fn trans<C: Prop>(&self, f: Pow<C, B>) -> Pow<C, A>;
fn lift<C: Prop>(&self) -> Pow<Self, C>;
}
impl<A: Prop, B: Prop> PowExt<A, B> for Pow<B, A> {
fn trans<C: Prop>(&self, f: Pow<C, B>) -> Pow<C, A> {pow_transitivity(*self, f)}
fn lift<C: Prop>(&self) -> Pow<Self, C> {pow_lift(*self)}
}