Por qué all([]) es True: lógica para programadores

Fuentes: Logic for Programmers

En lógica para programadores, definir correctamente las funciones sobre listas vacías es clave para mantener propiedades algebraicas coherentes. El texto parte de la función all de Python, que equivale a aplicar el operador && entre todos los elementos de una lista. A partir de ahí, demuestra que para conservar la propiedad distributiva all(xs ++ ys) == all(xs) && all(ys) en cualquier caso, incluido el de listas vacías, es imprescindible que all([]) tome el valor True. Si valiera False, la ecuación obligaría a que all(xs) fuera False para cualquier lista xs, lo que destruye la utilidad de la función.

El argumento se apoya en la noción de elemento identidad: True es la identidad de &&, porque p && True es siempre igual a p, igual que 0 es la identidad de la suma y False lo es del operador ||. Con ese mismo razonamiento, el artículo justifica por qué la suma de una lista vacía es 0 y por qué any([]) devuelve False, ya que False es la identidad de ||. Se trata, en definitiva, de una pieza didáctica que une programación y lógica formal.