Alloy

Alloyでλ計算(完全版)

ついに、Alloy を使って完全な λ計算 (β簡約) を表現できた…。(前回 は中途半端だった。) なかなか面白いのは、Alloy がうまくノードを使って無駄なくβ簡約しているところ(Ω=(λx.xx)(λx.xx) で Ω→Ωなど。後に載せる)。(8/22)フレーム条件のバグを直した…

Alloyでλ計算(β簡約)する

フォロー記事あり前回 (Alloyでλ式をつくる) では、λ式を表現するグラフをAlloyで構築した。 今回は、λ計算の核となるβ簡約の一部をAlloyで記述してみる。 扱えるλ式の制限 面倒だったので、モデルに次の制限を導入した。 このため、正確にはβ簡約とはいいが…

Alloyでλ式をつくる

Alloyでλ式を作ってみた。 フォロー記事あり あまり役に立たない気はするけど、関係の逆(~)を取ったり(反射)推移閉包(*,^)を使う良い練習になった。(バグがみつかり次第、色々修正している。以下のモデル図はソースを修正しながら作っているので、エンバグ…

one限量で複数の変数を宣言する

Alloyの言語仕様をゴリゴリ読み進めていた。 非常に勉強になります。Software Abstractions (1st ed., p.288): So although a quantified constraint with multiple declarations may be regarded, for some quantifiers, as a shorthand for nested constra…

Alloyでパックマン

Alloyを使ってみた。 数年前に使ったときはなんでこんなの使うのと思っていたけど考えが変わったのだ。 ちょっとした規模のプログラムを書くには設計が必要だ。 コードを書く前に、問題の本質的な部分を知っておこう。 本質がわかっていれば、 適切な部分に…