We describe our implementation of downset-manipulating algorithms used to solve the realizability problem for linear temporal logic (LTL). These algorithms were introduced by Filiot et al.~in the 2010s and implemented in the tools Acacia and Acacia+ in C and Python. We identify degrees of freedom in the original algorithms and provide a complete rewriting of Acacia in C++20 articulated around genericity and leveraging modern techniques for better performances. These techniques include compile-time specialization of the algorithms, the use of SIMD registers to store vectors, and several preprocessing steps, some relying on efficient Binary Decision Diagram (BDD) libraries. We also explore different data structures to store downsets. The resulting tool is competitive against comparable modern tools.
翻译:我们描述我们采用下定调算法来解决线性时间逻辑(LTL)的可变性问题。这些算法是由Filiot等人在2010年代引入的,并用Acacia和Acacia+在C和Python的工具加以实施。我们在原始算法中确定了自由程度,并围绕通用性对C+/20中的Acacia进行了全面的重写,并利用现代技术改进了性能。这些技术包括:对算法的汇编-时间专业化,使用SIMD登记册存储矢量,以及若干预处理步骤,其中一些依靠高效的二进制决定图库。我们还探索了不同的数据结构来存储下定。由此产生的工具与可比的现代工具相比具有竞争力。