Make LFSC printer robust to internal types (#8616)
authorAndrew Reynolds <andrew.j.reynolds@gmail.com>
Thu, 14 Apr 2022 21:13:04 +0000 (16:13 -0500)
committerGitHub <noreply@github.com>
Thu, 14 Apr 2022 21:13:04 +0000 (21:13 +0000)
commit11752f52825ff7f077a25bcb6350bbc9d9c1ba55
tree57bc69e98847e3faecd1decbbf8fe11e4f51669d
parent85fff4428ceaddd25f5c7caf14abc0544d86a59c
Make LFSC printer robust to internal types (#8616)

This makes the LFSC node converter track the "user declared" symbols and types that it encounters.

It furthermore makes the "dry run" phase of proof printing happen before types and symbols are declared, so that all declared symbols are found before the preamble of LFSC proofs are printed.

These changes are specifically to fix cases where a internal type is generated that does not appear in the input. For example, some preprocessing passes may construct auxiliary uninterpreted sorts.

This fixes 6 more LFSC failures from our regressions.
src/proof/lfsc/lfsc_node_converter.cpp
src/proof/lfsc/lfsc_node_converter.h
src/proof/lfsc/lfsc_printer.cpp