Need Guidance: Implementing Dims for Multivariate distributions

I’m a new guy here. I’m trying to implement dims for multivariate distributions, starting with MvStudentT, but I can’t exactly understand how to write the dist() and xrv_op() functions. I have a slight understanding of what these functions are for, but I don’t understand the unique requirements that each distribution has for these functions.

Can someone explain the requirements that MvStudentT has from dist() and xrv_op()?

The dist method is just syntactic sugar, so we can offer different parametrizations / optional arguments for the distribution. In the end we always use the same set (say mu/sigma), even if user provided (mu/tau). We return those to the base class with super().dist(list_of_arguments], **kwargs). That list has a specific order, which is the order of parameters in the underlying random operator. We don’t want to ask the user to know this order, that’s also part of what dist does.

The xrv_op, is the random dim-aware version of rv_op in regular distributions. For your case it will probably look very similar to the multivariate_normal.xrv_op. You just have an extra nu argument, that doesn’t have any core dims. Check the source code to see if it starts clearing the picture.