"Lectures on Semantics: The initial algebra and final coalgebra perspectives"
1.2 Examples of Syntax and Semantics p.4 のメモ
メモ
syntaxの定義として、expressionのset E
それに対して、structure =(A,...)
と、meaning function []:E -> A
を用意してsemanticsとする。
structureの最初の要素Aは、structure のunderlying set.
数学的なstructureは、形式言語の「実装」となる。
ふたつめ、みっつめの例では、fixed set Kが与えられている。
よっつめの例では、function symbols の set Σにより構成されるsignatureが与えられる。
σ∈Σのそれぞれは、そのarityとして、自然数を持つ。
arityは、関数の引数の数ということでいいのかな。
functionのsetではなくて、function symbolsのset?
function symbolsっていうのはどういうことだろう。
functionのsymbolだけあって、実装はべつってことだろうか。。。
Peano Structures p.5
structure = (A,a,f)
a∈A
f:A→A
e::=□|.(e∈E)
定義はここまで。
Eは再帰的な定義により実際には、
E={}
のようになる。
でこのPeano structure
に対するmeaning functionは、
となる。具体的に適用してみると、
こんなかんじ。
とくにについて、単射であるとかないとか、そういうことは書いてない。
数学的な、集合や関数からのみ定義されたstructureを用意して、
expressionsからstructrueにマップするmeaning functionを決めることで、
semanticsを決定したことにすると、そんなかんじなのかな。
List Structures p.5
こんどは、まずsetが与えられる。で、上のList Structureとして、
を定義する。
syntaxは、
まるでHaskellのリスト。を仮に自然数の集合とすると、
たとえば、こんな感じの式が作れる。
meaning functionは、
となる。
まるでLispのconsみたいだが、Lisp Structuresは、次。
との関係がはっきりわからないのがすこし気持ち悪い。
Lisp Structures p.5
最初、List Structuresのところででてきたやつは、リストで、Lisp構造といえばやっぱりリストだろ?Lisp Structuresって、いったいなんだ?と思ったが、どうやらリストの要素にリストがきたり、整数がきたりする、Lispの動的型付けなリストのことのようだ。上ででたList Structureは、Haskellのリストのように、のみがリストの要素になれる。のリストを要素に含むリストは構成できない。
まず、List Structuresの時と同じように、setが与えられる。で、上のLisp Structureの定義は、
になる。List Structures に比べると、が、KからAへの関数になっている点と
fのソースが、でなくて、になっているところが違う。
nilは特に明示されていないな。
syntaxは、
なので、さっきのようにKを整数の集合にしておくと、
[tex: *1]とか。
とにかく、空リストに相当するものが与えられていないので、Kを整数ってことにしてしまうと、
純リストは構成できなくい。が、まぁいいのか。
今思ったけど、syntaxには、結合の優先順序みたいなものは考慮されていない。というか、本当にテキストファイルにかかれたプログラムというより、パースして木にした後だけのことを考えてるってことか。実際にsyntaxにそってちゃんと書こうとすると、明示的に()をたくさん使うしかないな。
で、meaning functionは、
になる。
ということで例としては、
[tex: \llbracket*2, a(3))]
こんなかんじか。