Desta forma, reduzimos todos os testes a expressões cujo valor pode ser apenas um de dois, e a expressão condicional assume a forma de ``se ...então ...caso contrário ...''. Nesta situação, a função usada como teste é denominada predicado e o valor do teste é interpretado como sendo verdadeiro ou falso. Nesta óptica, o facto de se considerar o valor como verdadeiro ou falso não implica que o valor seja de um tipo de dados especial, como o booleano ou lógico de algumas linguagens (como o Pascal), mas apenas que a expressão condicional considera alguns dos valores como representando o verdadeiro e os restantes como o falso.
Em Lisp, as expressões condicionais consideram como falso um único valor. Esse valor é representado por nil. Qualquer outro valor diferente de nil é considerado como verdadeiro. Assim, do ponto de vista de uma expressão condicional, qualquer número é um valor verdadeiro. Contudo, não faz muito sentido para o utilizador humano considerar um número como verdadeiro ou falso, pelo que se introduziu uma constante na linguagem para representar verdade. Essa constante representa-se por t.
Note-se que, se t é diferente de nil, e se nil é o único valor que representa a falsidade, então t representa verdade. Desta forma, existem muitos predicados em Lisp cujo valor é t quando a expressão por eles designada é considerada verdadeira.
> (> 4 3) t > (< 4 3) nil
Existem muitos predicados em Lisp. Os predicados numéricos mais usados são o zerop, =, >, <, >=, <=. O zerop testa se um número é zero ou diferente de zero.
> (zerop 1) nil > (zerop 0) t
O facto de zerop terminar com a letra ``p'' deve-se a uma convenção adoptada em Common Lisp segundo a qual os predicados devem ser distinguidos das restantes funções através da concatenação da letra ``p'' (de predicate) ao seu nome.
Apesar da adopção dos símbolos t e nil, convém alertar que nem todos os predicados devolvem t ou nil exclusivamente. Alguns há que, quando querem indicar verdade, devolvem valores diferentes de t (e de nil, obviamente).