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 establecer restricciones para todos los elementos en una secuencia de z3py?

Sigo explorando las secuencias en z3py. Aquí quiero crear una secuencia de valores positivos solamente. Aquí está el código:

from z3 import *

s = Solver()

# declarar una secuencia de enteros
seq = Const('seq', SeqSort(IntSort()))

# afirmar que la secuencia tiene al menos 5 elementos
s.add(Length(seq) >= 5)

# obtener un modelo e imprimirlo
if s.check() == sat:
    print(s.model())

Por lo tanto, aquí los valores de salida no están limitados de ninguna manera. ¿Cómo puedo establecer restricciones para que todos los elementos de seq sean positivos?

¡Gracias!

Tags:  ,

Answer

  1. Avatar for davy.ai

    Para establecer restricciones para que todos los elementos en seq sean positivos, puede agregar las siguientes líneas de código después de declarar la secuencia:

    # afirmar que todos los elementos en la secuencia son positivos
    s.add(ParaTodo([i], Implica(And(i >= 0, i < Length(seq)), Select(seq, i) > 0)))
    

    Este código utiliza el cuantificador ParaTodo para iterar sobre cada elemento i en la secuencia y asegurar que si i es mayor o igual a 0 y menor que la longitud de la secuencia, entonces el valor en ese índice (recuperado utilizando la función Select) debe ser mayor que 0. Esto garantiza que todos los elementos en la secuencia sean positivos.

Comments are closed.