kodept 0.2.3

Simple compiler with dependent types support in mind
Documentation
module Main =>

enum struct Bool { False, True }

fun not(self: Bool) =>
    if self => ::Main::Bool::False
    else => ::Main::Bool::True

fun and(a: Bool, b: Bool) =>
    if a => if b => ::Main::Bool::False
            else => ::Main::Bool::True
    else => ::Main::Bool::True

fun rule110(a: Bool, b: Bool, c: Bool) =>
    if   and(a,      and(b,      c))      => ::Main::Bool::False
    elif and(a,      and(b,      not(c))) => ::Main::Bool::True
    elif and(a,      and(not(b), c))      => ::Main::Bool::True
    elif and(a,      and(not(b), not(c))) => ::Main::Bool::False
    elif and(not(a), and(b,      c))      => ::Main::Bool::True
    elif and(not(a), and(b,      not(c))) => ::Main::Bool::True
    elif and(not(a), and(not(b), c))      => ::Main::Bool::True
    else                                  => ::Main::Bool::False

fun main => rule110(::Main::Bool::True, ::Main::Bool::True, ::Main::Bool::False)