summaryrefslogtreecommitdiffstats
path: root/content/zettel/2e1c6a.md
diff options
context:
space:
mode:
Diffstat (limited to 'content/zettel/2e1c6a.md')
-rw-r--r--content/zettel/2e1c6a.md25
1 files changed, 25 insertions, 0 deletions
diff --git a/content/zettel/2e1c6a.md b/content/zettel/2e1c6a.md
new file mode 100644
index 0000000..740231f
--- /dev/null
+++ b/content/zettel/2e1c6a.md
@@ -0,0 +1,25 @@
++++
+title = "Using hash-consing with `PTree`"
+author = "Yann Herklotz"
+tags = []
+categories = []
+backlinks = ["3c3g1", "2e1c7", "2e1c6"]
+forwardlinks = ["3c3b", "3a8g5", "3a8g5e", "2e1c6b"]
+zettelid = "2e1c6a"
++++
+
+One solution to the hash-consing problem is to use a `PTree` to store
+the values and to define an equality check between the SAT expressions.
+That way, one can assign a unique ID to each of the predicates, and can
+therefore add them into the SAT expression. Then the logical expression
+can take into account the expressions. This greatly simplifies the
+heuristic algorithm to do the comparison, as instead a single SAT
+expression can be used to do the same thing.
+
+This technique can be used to solve the proof of the scheduling
+algorithm with hyperblocks ([\#3c3b]), as well as the proof of the
+predicates in CompCertGSA ([\#3a8g5], [\#3a8g5e]).
+
+ [\#3c3b]: /zettel/3c3b
+ [\#3a8g5]: /zettel/3a8g5
+ [\#3a8g5e]: /zettel/3a8g5e