+++ title = "Forest evaluable not needed in the end" date = "2023-02-14" author = "Yann Herklotz" tags = [] categories = [] backlinks = ["3c3f5"] forwardlinks = ["3c3f7", "3c3f6a"] zettelid = "3c3f6" +++ At first I had a definition of `forest_evaluable` which said that the whole tree of predicate expressions could always be evaluated. However, in addition to that I had strict semantics of predicates, which is why to evaluate a predicate I had to know that I could evaluate both sides of the predicate before actually giving it a value. There were two problems: 1. With the strict evaluation of predicates, the evaluability of the predicates was actually not right, because there were some cases where the predicates would not be evaluable by design. For example, when we have a predicate assignment that itself is gated: `if (p) p2 = c`. In this case, when the predicate `p` evaluates to `false`, then one cannot know if the condition `c` can be evaluated. This means that one cannot actually evaluate the predicate $p \implies p_2 := c$. Strict semantics dictate that one has to be able to get a value for $p_2 := c$ though. 2. Many problems go away when one does not have strict evaluation anymore, because one will always be able to evaluate on of the predicates and therefore know the result of predicate. This also solves the previous problem, which is actually quite subtle, that when a predicate is maybe not evaluable, it is hidden behind an implication.