Lógica para Programadores: Diseña, Verifica y Razona Mejor sobre tu Código
Logic for Programmers

Escribí este libro para que los programadores intermedios y avanzados mejoren el diseño y la verificación de software usando lógica booleana. No necesitas conocimientos matemáticos previos, solo experiencia práctica con loops y testing. Explico cómo aplicar técnicas como property testing, contratos y verificación formal con herramientas como Dafny, Alloy y TLA+ para resolver problemas reales desde simplificar condicionales hasta encontrar race conditions.
Si all([]) fuera False, entonces all(xs) sería False sin importar qué sea xs, por lo que tiene más sentido que sea True para preservar la propiedad de identidad.