prop 0.47.0

Propositional logic with types in Rust
Documentation
//! Traits shows what would happen with alternative axioms for functional programming.

use super::*;
use fun::*;
use hooo::Theory;

/// Shows that raw definition of the identity map is absurd.
pub trait RawIdDef {
    /// `id(a) = a`.
    fn raw_id_def<A: Prop>() -> Eq<App<FId, A>, A>;

    /// `theory(a)`.
    fn theory<A: Prop>() -> Theory<A> {
        hooo::theory_in_arg(app_theory(), tauto!(Self::raw_id_def()))
    }

    /// `false`.
    fn absurd() -> False {Self::theory()(Left(hooo::tr()))}
}