¿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!
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:Este código utiliza el cuantificador
ParaTodo
para iterar sobre cada elementoi
en la secuencia y asegurar que sii
es mayor o igual a 0 y menor que la longitud de la secuencia, entonces el valor en ese índice (recuperado utilizando la funciónSelect
) debe ser mayor que 0. Esto garantiza que todos los elementos en la secuencia sean positivos.