Verificación formal · SMT

No detectamos fallos.
Los demostramos.

Con los valores exactos que los provocan. Antes de que lleguen a producción.

def transferir(emisor, receptor, importe):
    if emisor.premium:
        emisor.saldo -= importe
        receptor.saldo += importe
        return True
    if emisor.saldo >= importe:
        emisor.saldo -= importe
        receptor.saldo += importe
        return True
    return False
z3 · sat · brecha demostrada

El saldo puede quedar por debajo de cero.

emisor.premium
emisor.saldo50 €
importe80 €
emisor.saldo (final)−30 €

No es una sospecha: con esas cuatro entradas ocurre. Puedes reproducirlo antes de creerte nada.

z3 · unsat · sin brechas

No existe ninguna ejecución que lo rompa.

caminos exploradostodos
contraejemplono existe

Esto no es «no he encontrado nada»: es una demostración de que no hay nada que encontrar.

Construido sobre Z3 · Theorem Prover de Microsoft Research Python · JavaScript · TypeScript · Go SMT · Verificación formal
0 falsos positivos banco de pruebas público
100 % de lo que avisa es real precisión medida
4 lenguajes python · js · ts · go
<3 s en tu portátil antes del git push

Comprueba si tu código
aguanta una demostración.

Pega una función en la demo y ve el veredicto del solver. Sin cuenta, sin tarjeta, sin instalar nada.