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&ltrue) == a
assert (a&lfalse).is_f

Property definitions

logic $ LExpr :: &
	# 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&ltrue) == 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