I know that you can add soft-constraint in z3py and then ask z3 to find a model that satisfies the maximum number of soft-constraints possible by running:
s = Optimize()
s.add_soft(...)
...
s.add_soft(...)
s.check()
My questions is what can you do if you want z3 to return any model that satisfies at least k soft-constraints. My hope is that if z3 managed to satisfy k constraints it will stop the search and return the current model.