Raw `Max` constructor without simplification. Used by `max()` after all simplification opportunities are exhausted.
(a: KUniv<M>, b: KUniv<M>)
| 193 | { |
| 194 | return b; |
| 195 | } |
| 196 | // max(max(a', b), b) = max(a', b), max(max(b, a'), b) = max(b, a') |
| 197 | if let UnivData::Max(al, ar, _) = a.data() |
| 198 | && (*al == b || *ar == b) |
| 199 | { |
| 200 | return a; |
| 201 | } |
| 202 | // Same base, different offsets: succ^n(x) vs succ^m(x) → take the larger. |
| 203 | let (base_a, off_a) = a.offset(); |
| 204 | let (base_b, off_b) = b.offset(); |