De hecho "Not" e "In" son operadores independientes que se pueden usar juntos
NOT es un operador booleano que niega un valor booleano por ejemplo
NOT ( true ) devuelve false
NOT ( false ) devulve true
IN es un operador relacional que devuelve un valor booleano verdaero si un valor pertenece a un conjunto de valores y falso cuando no pertener al conjunto.
por ejemplo
P:=' K ';
P in [ 'A '.. 'Z' ];
devuelve verdadero ya que P que obviamente es de tipo char, pertenece al conjunto de letras mayusculas, con NOT puedes negar el resultado de IN
Un ejemplo de uso comun
repeat
OP:=readkey;
IF NOT (OP IN ['A'..'Z']) THEN
OP:=#0
else
write(OP);
until OP =#13
Este fragmento de codigo permite escribir solo letras mayusculas
porque si OP ='G' entonces OP IN ['A'..'Z'] devuelve verdadero y al negarlo con NOT se vuelve falso por lo tanto salta al ELSE y escribe la letra G pero si OP ='1' entonces OP IN ['A'..'Z'] devuelve falso y al negarlo con NOT se vuelve verdadero por lo tanto se ejecuta el OP:=#0