ATen IR and mutation/in-place

This is regarding IRs — PyTorch master documentation.

I found it somewhat contradicting that the doc states

Core aten IR is fully functional, and there is no inplace or _out variants in this opset.

However, in the list of ops, there are still a few annotated with aliasing, naming a few

aten.alias | alias(Tensor(a) self) → Tensor(a)
aten.permute | permute(Tensor(a) self, int[] dims) → Tensor(a)
aten.expand | expand(Tensor(a) self, SymInt[] size, *, bool implicit=False) → Tensor(a)

So which statement is more accurate?

I think aliasing ops are still considered part of “core aten IR” (maybe this is just a nomenclature issue, where you read “functional” IR as “non-aliasing”?

Core aten IR doesn’t include mutations, as you pointed out.