summaryrefslogtreecommitdiffstats
path: root/content/zettel/3c3f6.md
diff options
context:
space:
mode:
Diffstat (limited to 'content/zettel/3c3f6.md')
-rw-r--r--content/zettel/3c3f6.md33
1 files changed, 33 insertions, 0 deletions
diff --git a/content/zettel/3c3f6.md b/content/zettel/3c3f6.md
new file mode 100644
index 0000000..c4e4a1e
--- /dev/null
+++ b/content/zettel/3c3f6.md
@@ -0,0 +1,33 @@
++++
+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.