google / google/xls

Use uninterpreted function symbols in Z3 IR translator for unknown pure ops

Open
#747 0 comments 0 reactions 0 assignees View on GitHub
formal
Dominant language
C++
Stars
1.9k
Forks
283
Avg merge
2d 10h
Merged PRs (30d)
135

Description

Currently, whenever we translate an op that we haven't implemented translation for, we turn it into a fresh variable. In the case of effectful unimplemented ops, this is the best we can do, but if the op is not effectful we can turn it into an uninterpreted function symbol applied to each of its operands (translated). Adding UF symbols does potentially negatively impact the runtime (it turns the theory from `QF_BV` to `QF_UFBV` in Z3 parlance), but I think it's probably worthwhile.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.