# Lesson XI 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 No existing terms are removed because booleans and comparisons fit the primitive-row design introduced earlier. That is the design lesson: a new concrete value family can be added by extending literals, `pack/3`, `unpack/3`, and kernel rows, while the sequencing, lookup, and projection machinery remains stable. ```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 ). ``` [[10_lesson|Prev]] | [[12_lesson|Next]]