A canonical STRUCTURAL key, for deduplicating formulas in a table.
equal is semantic and hash is therefore a constant, which is correct but
useless as a hash key. The exploration driver needs to ask "have I seen this
assumption before?" thousands of times, and answering it semantically would
be a satisfiability query per comparison.
So this is the weaker question, asked cheaply: two formulas share a key when
they are the same up to the commutativity, associativity and idempotence of
and and or, which is what actually varies between assumptions built in
different branch orders. Equal keys imply equivalence; different keys do not
imply inequivalence.
That asymmetry is safe for a dedup set and only there: missing a duplicate
costs one more configuration explored, never a wrong answer. It would not be
safe for anything that treats "not seen" as "not implied".