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

Property definitions

logic $ LExpr :: |
	# 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