flyvy-verifier / flyvy

An experimental framework for temporal verification based on first-order linear-time temporal logic. Our goal is to express transition systems in first-order logic and verify temporal correctness properties, including safety and liveness.
BSD 2-Clause "Simplified" License
14 stars 1 forks source link

Multi cartesian product fix #107

Closed wilcoxjay closed 1 year ago

wilcoxjay commented 1 year ago

This PR implements a corrected wrapper around itertools::multi_cartesian_product.

I added a CI lint that forbids the string multi_cartesian_product (as a standalone word, not a substring, as decided by grep -w) from the code base. Use the wrapper multi_cartesian_product_fixed instead.

I ported all existing call sites to use the fixed version. I considered each call site manually and convinced myself that either the iterator was never empty or that the old code did not correctly handle that case already. I also removed some obvious workarounds that handled the empty iterator case separately to avoid the bug.

Fixes #73