+++ title = "Abstract Predicates being Unevaluable" date = "2022-11-17" author = "Yann Herklotz" tags = [] categories = [] backlinks = ["3c3g6"] forwardlinks = ["3a8g5g"] zettelid = "3c3g6a" +++ One issue with having abstract predicates is that they could just not be evaluable, because the semantics of abstract predicates is so much more rich than standard predicates. For example, one must assume that one can evaluate the whole predicate, which means that one must show that all the computations will terminate and not get stuck. Another solution would be to use three-valued logic to perform the equivalence check, which would be able to reason about cases that are unevaluable. This would be possible because a three-valued logic checker has now been implemented in CompCertGSA ([\#3a8g5g]). However, the main problem that I am anticipating is that when doing the reverse proof, one has to be able to show that the original program that generated the symbolic state is also evaluable, which would require reasoning about the evaluability explicitly anyways. If that is the case, then using three-valued logic only adds complexity to the proof. [\#3a8g5g]: /zettel/3a8g5g