我们提出了一种自动推断程序初始状态条件的方法,以确保程序中的安全断言不会被违反。约束Horn子句(CHC)用于以统一的方式对程序和断言进行建模,并且我们使用标准的抽象解释来导出不安全的初始状态。然后,先决条件是与该集合的补集相对应的约束,该约束近似于安全的初始状态。这种互补的想法并不新鲜,但以前利用它的尝试已经失去了准确性。在这里,我们开发了一种迭代专门化算法,以提供更精确的,在某些情况下是最优的安全条件。该算法结合了现有的变换,即约束专业化、部分求值和迹消除变换。最后两个变换执行多变量专业化,从而产生析取约束,从而提高精度。该算法在预条件推理和软件验证竞赛文献中的一组基准程序上进行了实现和测试。