notes mizzy.org

静的段階の全域性は構文制限だけでは得られない

確認済み 出典: explorations/2026-06-10-carina-type-system-type-theory/type-system-analysis.md §1 / totality-comparison.md §1 作成

「静的段階の評価が必ず停止する」という性質は、一般再帰を禁じてループを有限に限るだけでは出てこない。構文制限と参照グラフの非循環性強制という二本の柱で初めて成り立つ。

一本目の柱は構文制限である。CarinaのDSLに一般再帰はなく、forは有限コレクション上の展開しかできない。ここまでは言語仕様を小さく保てば得られる。

静的段階の全域性(必ず停止する) 柱1 — 構文制限 一般再帰なし / forは有限展開のみ 言語仕様を小さく保てば得られる 柱2 — 参照グラフの非循環性強制 値の流れの循環を塞ぐ 構文では塞げないもう一つの発散源
構文制限だけでは停止しない。値の流れというグラフ上の制約が必ずもう一本要る。

しかし構文制限だけでは停止は出ない。値の流れの循環という、構文では塞げないもう一つの発散源があるからである。相互に参照し合う束縛やリソースがそれで、二本目の柱である参照グラフの非循環性強制で塞ぐ。具体的には:

全域性に加えて、評価結果がソースとstateだけの関数であるという純粋性も同時に立っている。この二つが言語の性質として成り立っているために、「プログラムを完全評価してから、出てきた値を全数検査する」が完全な決定手続きになる。

つまり全域性は言語を制限することでしか得られず、その制限は構文の形をしたものだけではない。値の流れというグラフ上の制約が必ず要る。

#全域性 #dsl #型システム