Function lambda_calculus::booleans::xor [] [src]

pub fn xor() -> Term

Applied to a Church-encoded boolean it returns its Church-encoded exclusive disjunction.

XOR := λab.a (NOT b) b = λ λ 2 (NOT 1) 1

Examples

use lambda_calculus::booleans::{xor, tru, fls};
use lambda_calculus::reduction::beta_full;

assert_eq!(beta_full(xor().app(tru()).app(tru())), fls());
assert_eq!(beta_full(xor().app(tru()).app(fls())), tru());
assert_eq!(beta_full(xor().app(fls()).app(tru())), tru());
assert_eq!(beta_full(xor().app(fls()).app(fls())), fls());