# 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]]