# Lesson VII
Nothing is painted, yet the stroke is already shaped. The brush will reveal it in time.
## Try
```prolog
% ?- infer([push(quote([dup, add]))], Effect).
% Effect = effect(S, [quote(effect([int|T], [int|T]))|S]).
% ?- run([push(quote([dup, add]))], [], Stack).
% Stack = [quote([dup, add])].
```
## Learn
```prolog
% A quotation is valid when its body has a static stack effect.
lit(quote(Words), quote(effect(In, Out))) :-
infer(Words, effect(In, Out)).
```