`type attr = string`
`type set =`

1. `| Solution`
2. `| Changed`
3. `| New`
4. `| Removed`
5. `| Up`
6. `| Down`

`type rematch =`

1. `| ExactMatch of string`
2. `| Regexp of string`

`type crit =`

1. `| Count of set * (string * rematch) option`
2. `| Sum of set * attr`
3. `| Unsatrec of set`
4. `| Aligned of set * attr * attr`
5. `| NotUptodate of set`

`type predicate =`

1. `| Minimize of crit`
2. `| Maximize of crit`

`type criteria = predicate list`