es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo cambiar el signo de las desigualdades negadas en z3py

Digamos que tengo la siguiente expresión z3py:

import z3
x, y = z3.Ints(“x y”)
z3_expression = z3.Not(x<y)

Esta expresión se guarda y se imprime con str() como Not(x < y). Quiero saber si hay alguna forma de aplicar ese operador Not() a la expresión y cambiar el signo de la desigualdad, es decir, quiero eliminar ese operador de negación y hacer que la expresión parezca así: z3_expression = (x >= y), los paréntesis no son necesarios, solo los puse para que sea más claro.

¿Hay alguna forma de hacerlo preferiblemente utilizando z3py?

EDICIÓN:
La primera respuesta resuelve este problema concreto, pero si cambio la expresión a:

z3_expression = z3.Not(x<=y)
z3_simplified_expression = z3.simplify(z3_expression)
print(z3_simplified_expression)

Esto imprime:

Not(x <= y)

En lugar de:

x > y

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Sí, hay una manera de hacerlo usando z3py. Puede utilizar la función simplify() para simplificar la expresión y eliminar el operador de negación. Por ejemplo, para la expresión z3_expression = z3.Not(x, puede utilizar el siguiente código:

    import z3
    x, y = z3.Ints('x y')
    z3_expression = z3.Not(x < y)
    z3_simplified_expression = z3.simplify(z3_expression)
    print(z3_simplified_expression)
    

    Esto imprimirá la expresión x > y, que es lo mismo que (x >= y).

Comments are closed.