アクセスする、それ以外はグローバル変数にはアクセスしない、と、そのまま書きました。これはそれぞれ普通に呼んでいる分には問題ありません。Main;しかし、このままでは多態呼び出しができなくなります。仮定されてしまいます。アクセス同士は衝突しませんので通るようになりました。部分集合である必要があります。全ての上位集合ですので指定しなくても通常は問題ありませんが、例のように並列化の中で多態呼び出しに制限ができてしまいます。その型のオブジェクトが常に満たさなければならない不変条件です。継承されませんが、派生型に埋め込まれている基底型部分では動作します。最後でチェックされます。呼んでいる部分だけですね。呼び出したら何が起きるかを見てみます。していますが不変条件の式中では多態しません。返して不変条件違反で実行時エラーになります。インスタンスを作れてしまうことになります。継承され、派生型の文脈で再解釈されます。指定したのと同じ動作になります。呼ばれることになります。この場合もやはり実行時エラーになります。このように条件内の関数呼び出しは多態せずに両方がチェックされます。型のところだけ飛ばされます。