e
(or).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<rue) == a
assert (a&lfalse).is_f
# Conjunction with `e` (or).
#
# ~~~
# 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<rue) == a
# assert (a&lfalse).is_f
# ~~~
fun &(e: LExpr): LExpr do
if self.is_f then return lfalse
if self.is_t then return e
if e.is_f then return lfalse
if e.is_t then return self
return new LAnd(self, e)
end
lib/logic/lexpr.nit:103,2--123,4