# Lesson XII The brush does not disturb what has already become clear. ## Try ```prolog % ?- E = kernel, run(E, [push(int(3)), push(int(2)), gt], [], Stack). % Stack = [bool(true)]. % ?- E = kernel, infer(E, [push(bool(true)), push(bool(false)), eq], Effect). % Effect = effect([], [bool]). % ?- E = kernel, infer(E, [push(bool(true)), push(bool(false)), add], Effect). % false. ``` ## Lesson ```prolog word(kernel, eq, [A::int, B::int|S] -- [Bool::bool|S], (A == B -> Bool = true ; Bool = false)). word(kernel, eq, [A::bool, B::bool|S] -- [Bool::bool|S], (A == B -> Bool = true ; Bool = false)). word(kernel, lt, [A::int, B::int|S] -- [Bool::bool|S], (B < A -> Bool = true ; Bool = false)). word(kernel, gt, [A::int, B::int|S] -- [Bool::bool|S], (B > A -> Bool = true ; Bool = false)). unpack(bool, bool(Bool), Bool) :- ( Bool == true ; Bool == false ). pack(bool, Payload, bool(Payload)) :- ( Payload == true ; Payload == false ). lit(_Env, bool(Bool), bool) :- ( Bool == true ; Bool == false ). ```