+static struct value_node *
+lookup_value (const struct hmap *map, const union value *val, unsigned int hash, int width)
+{
+ struct value_node *vn = NULL;
+ HMAP_FOR_EACH_WITH_HASH (vn, struct value_node, node, hash, map)
+ {
+ if (value_equal (&vn->val, val, width))
+ break;
+ }
+
+ return vn;
+}
+
+struct variable_node
+{
+ struct hmap_node node; /* Node in hash map. */
+ const struct variable *var; /* The variable */
+
+ struct hmap valmap; /* A map of value nodes */
+};
+
+static void
+dump_interaction (const struct interaction *iact)
+{
+ struct string str = DS_EMPTY_INITIALIZER;
+ interaction_to_string (iact, &str);
+ printf ("Interaction: %s\n", ds_cstr (&str));
+ ds_destroy (&str);
+}
+
+
+static struct variable_node *
+lookup_variable (const struct hmap *map, const struct variable *var, unsigned int hash)
+{
+ struct variable_node *vn = NULL;
+ HMAP_FOR_EACH_WITH_HASH (vn, struct variable_node, node, hash, map)
+ {
+ if (vn->var == var)
+ break;
+
+ fprintf (stderr, "Warning: Hash table collision\n");
+ }
+
+ return vn;
+}
+
+