Коллеги,

ежу понятно, что если
## Код:
```
TYPE T = RECORD END; A = T; B = T; VAR a: A; b: B;
```

то переменнаяaи выражениеbсовместимы по присваиванию:
## Код:
```
a := b (* ok *)
```

и компилятор CP2 Того же мнения )

Однако как это строго вывести из Сообщения о языке? Привожу цитату здесь для удобства:

> -- Цитата:
> Assignment compatibleAn expression e of type Te is assignment compatible with a variable v of type Tv if one of the following conditions hold:1.  Te and Tv are  and neither abstract, extensible, or limited record nor open array types;...Equal typesTwo types Ta and Tb are equal if1.  Ta and Tb are the  type,  or...Same typesTwo variables a and b with types Ta and Tb are of the same type ifs1.  Ta and Tb are both denoted by the same type identifier, ors2.  Ta is declared in a type declaration of the form Ta = Tb, ors3.  a and b appear in the same identifier list in a variable, record field, or formal parameter declaration.

Во-первых, понятие same types определяется для двух переменных, а понятие equal types - для типов. Выходит, что только две переменные могут быть same type, а, например, a := b^ несовместимы по присваиванию, поскольку b^ Не переменная, а выражение. Кмк, это огрех.

Но еще хуже с приведенным примером. На каком основании делать (очевидный) вывод, что a и b совместимы по присваиванию? И что типы A и B - это equal types, поскольку они Same types? Не подходит ни один из пунктов s1-s3. Это уже не огрех, а посерьезней.

Что скажете?