prop 0.47.0

Propositional logic with types in Rust
Documentation
use prop::*;
use path_semantics::*;

/// Compose 3 layers of propositions into 2 layers.
pub fn proof<A: LProp, B: LProp, C: LProp, F2: LProp, X2: LProp, Y2: LProp>(
    a_b: Imply<A, B>,
    f2_x2: Imply<F2, X2>,
    b_c: Imply<B, C>,
    x2_y2: Imply<X2, Y2>
) -> PSemNaive<A, F2, C, Y2>
    where A::N: nat::Lt<B::N>,
          B::N: nat::Lt<C::N>,
          F2::N: nat::Lt<X2::N>,
          X2::N: nat::Lt<Y2::N>,
{
    naive_comp(assume_naive(), assume_naive(),
               a_b, f2_x2, b_c, x2_y2)
}

fn main() {}