My problem, in a nutshell, is this:
What can I do about storing a tuple (or any type with a constraint of \'comparison\') in a C# container that requires an ICom
Definitely some weirdness going on. FWIW, it works if you construct a System.Tuple<_, _> explicitly, so that might be a workaround:
System.Tuple<_, _>
let x (y : IComparable) = y let t = (2, 3) x (Tuple<_,_> t)