# 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)). ```