Коллеги,

из определения понятия Array compatible в Language Report я делаю вывод, что при следующих определениях:
## Код:
```
TYPE
  A = POINTER TO RECORD END;
  B = POINTER TO RECORD (A) END;
VAR b: POINTER TO ARRAY OF B;
PROCEDURE P (a: POINTER TO ARRAY OF A);
```

является некорректным выражение
## Код:
```
P(b)
```

Штатный компилятор со мной соглашается и признает такое выражение некорректным.

Но ведь ∀i: b[i] IS A, и этот факт гарантируется проверкой типов при компиляции (т.е. не зависит от фактических типов переменных b[i]). И, кмк, передав b процедуре P мы "оправдаем" все ее ожидания.

Как вам кажется,чем продиктовано такое ограничение?