e
(and).var a = new LVar("a")
var b = new LVar("b")
assert (a|b).to_s == "(a | b)"
true
and false
operands are optimized.
assert (a|ltrue).is_t
assert (a|lfalse) == a
# Disjunction with `e` (and).
#
# ~~~
# var a = new LVar("a")
# var b = new LVar("b")
# assert (a|b).to_s == "(a | b)"
# ~~~
#
# `true` and `false` operands are optimized.
#
# ~~~
# assert (a|ltrue).is_t
# assert (a|lfalse) == a
# ~~~
fun |(e: LExpr): LExpr do
if self.is_f then return e
if self.is_t then return ltrue
if e.is_f then return self
if e.is_t then return ltrue
return new LOr(self, e)
end
lib/logic/lexpr.nit:81,2--101,4