I think the bigger question for me is about what the defaults should be, and making the trivialstate/trivialprocess interface consistent with the randomstate/randomprocess interface. For the sake of consistency, I think in the mixed = true case they should both default to either outputting MPO or LPDO. MPO may be nicer since they are easier to work with, however LPDO is a more efficient representation (especially for trivial states/processes, since the Krauss dimension is 1). Over all I would lean towards defaulting to output an LPDO in both cases, particularly because it is easier to convert from LPDO to MPO and we can always try to make more functions work with LPDO (even if it means just converting to MPO internally).
Also, in the mixed = true case, I think this is a good place to actually not put the Krauss dimensions at all in the LPDO, since they aren't needed. However, then the question is if trivialstate/trivialprocess with mixed = true should output an LPDO{MPS} or an LPDO{MPO}. To me it makes sense to output LPDO{MPS}, which gets interpreted as a "lazy" outer product of two MPS.
Just a few small comments.
I think the bigger question for me is about what the defaults should be, and making the
trivialstate
/trivialprocess
interface consistent with therandomstate
/randomprocess
interface. For the sake of consistency, I think in themixed = true
case they should both default to either outputtingMPO
orLPDO
.MPO
may be nicer since they are easier to work with, howeverLPDO
is a more efficient representation (especially for trivial states/processes, since the Krauss dimension is 1). Over all I would lean towards defaulting to output anLPDO
in both cases, particularly because it is easier to convert fromLPDO
toMPO
and we can always try to make more functions work withLPDO
(even if it means just converting toMPO
internally).Also, in the
mixed = true
case, I think this is a good place to actually not put the Krauss dimensions at all in the LPDO, since they aren't needed. However, then the question is iftrivialstate
/trivialprocess
withmixed = true
should output anLPDO{MPS}
or anLPDO{MPO}
. To me it makes sense to outputLPDO{MPS}
, which gets interpreted as a "lazy" outer product of two MPS.