Обычно что-то одно используют, либо IS и потом вручную приводят тип в скобках, раз он уже проверен, либо WITH.

## Код:
```
IF a IS Body THEN a(Body).x := 0 ELSE HALT(0) END;

WITH a: Body DO a.x := 0 ELSE HALT(0) END;
```


А сначала проверять с помощью IS, а потом ещё приводить с помощью WITH - это двойная работа.