In this other OOPSLA '22 paper, we demonstrate that the Dependent Object Type calculus (DOT) with a `case` construct can generalize GADT-style reasoning, basing it on subtyping instead of type equality. This formally justifies Scala 3's implementation!
arxiv.org/abs/2209.07427