And I guess I’m asking for help in thinking through how much of this can already be accomplished with current type hint tools, and what specific tools would need to be added in order to be able to write this kind of thing.

I’m pretty sure the most important bit is the `Sorted[]`

bit. But I think there are probably others missing too.

If these tools existed… I wonder if writing `DimMultiply`

and `DimDivide`

might look something like this (some of this syntax is made up!!):

```
DimMultiply = Tuple[
*Join[DIVIDE,
*Sorted[
*Split[DIVIDE, *tuple_a][0],
*Split[DIVIDE, *tuple_b][0]
],
*Sorted[
*Split[DIVIDE, *tuple_a][1],
*Split[DIVIDE, *tuple_b][1]
]]
]
DimDivide = Tuple[
*Join[DIVIDE,
*Sorted[
*Split[DIVIDE, *tuple_a][0],
*Split[DIVIDE, *tuple_b][1]
],
*Sorted[
*Split[DIVIDE, *tuple_a][1],
*Split[DIVIDE, *tuple_b][0]
]]
]
```

But there are lots of bugs in there.