Represent a match as a formula in propositional logic that encodes whether the match matches (abstractly: we only consider types)
Interface with user-defined match monad?
if there's a match
in scope, we use this as the match strategy, assuming it conforms to MatchStrategy as defined below:
(matchOptimization: StringAdd).self
(matchOptimization: StringFormat).self
(matchOptimization: ArrowAssoc[MatchOptimization]).x
(Since version 2.10.0) Use leftOfArrow
instead
(matchOptimization: Ensuring[MatchOptimization]).x
(Since version 2.10.0) Use resultOfEnsuring
instead
Optimize and analyze matches based on their TreeMaker-representation.
The patmat translation doesn't rely on this, so it could be disabled in principle.