(プログラミング)言語設計の基本...
TRANSCRIPT
1
Ichiro Satoh
計算モデル特論
プロセス計算の定義
国立情報学研究所
佐藤一郎 E-mail: [email protected]
Ichiro Satoh
(プログラミング)言語設計の基本
n プログラミング言語を扱う上で重要となる項目 n 構文(syntax)
n プログラミング言語の文法、表現
n 意味論(semantics) n プログラムがどのような動作・結果を持つかを定式化
n 語用論(pragmatics) n プログラムの書き方
Ichiro Satoh
CCS (Calculus of Commucating Systems) CCSの構文
P :| a.P| a P| P| P Q| P|Q
P LA
=
+
0
.
.
||
!
\
停止プロセス
同期入力(通信入力aを受信後、Pとなる)
同期出力(通信出力aを送信後、Pとなる)
内部計算(内部計算を実行後、Pとなる)
選択動作(PまたはQとなる)
並行動作(PとQが並行に動作できる)
事象制限(Lに含まれる事象名の外部観測禁止)
プロセス定義(A=Pとなるとき、AをPで置換)
Ichiro Satoh
帰納的定義(再帰的定義)
n あるものを定義するにあたってそれ自身を定義に含むもの
P := 0| a.P| a.P| ! .P| P +Q
| P |Q
n 0はプロセス式
n Pがプロセス式ならばa.Pはプロセス式
n Pがプロセス式ならばa.Pはプロセス式
n Pがプロセス式ならばτ.Pはプロセス式
n PとQがプロセス式ならばP+Qはプロセス式
n PとQがプロセス式ならばP+Qはプロセス式
2
Ichiro Satoh
帰納的定義(再帰的定義)
n ある定義をその定義を使って定義する n 定義の中にその定義があらわれる
n 例: Aとは、0 または αA のことである
n 計算モデルは文法以外にも帰納的定義を多用 n コンパクトに定義できる n 定義に関わる証明がしやすい
n 例:「Aは性質Pをもつ」の証明は、 0 が性質Pをもつことと、 Aが性質Pを持つことを仮定したときに、αAが性質Pをもつことを示せばよい
Ichiro Satoh
文法定義
n 表示規則を帰納的に定義 n プログラミング言語や計算モデルのほとんどは文脈自由文法を用いる
例: A ::= c A d | e B f B ::= g この言語による文字列例: egf, cegfd, ccefgdd, cccefgddd, ...
Ichiro Satoh
意味論
���表現(記号)と表現の意味を分けて考える 例:プログラムとは n ある文法で書かれた字面 n その字面はコンピュータにより実行される n プログラミング言語は、字面の文法と、字面の実行方法を定義
n 構文(Syntax) n 表現の規則
n 意味(Semantics) n 表現が表す意味
Ichiro Satoh
意味論
n プログラミング言語意味論 n 操作意味論(Operational semantics)
n どう計算するか(表示の変形)
n 表示意味論(Denotational semantics) n どんな結果(表示)が出るか
n 公理意味論(Axiomatic semantics) n 論理式で計算前と計算後の条件・状態を表現
n 多くの計算モデルはその意味論を操作意味として定義するが、 表示意味や公理意味による定義もありえる
3
Ichiro Satoh
表示的意味論
n プログラム/表記を数学的構造に写像 n 集合や関数などの数学的概念を用いて 構文上の対象の意味を記述
プログラム 数学的構造
Ichiro Satoh
表示意味論
構文構成要素ごとに意味を定義 S ::= if E then S else S
| while E do S od | S;S | E:=E
《》c: M →(M→M) ここでcは環境(変数の中身を定義) 《if E then S1 else S2》c = 《S1》c (《E》c=trueのとき)
= 《S2》c (《E》c=falseのとき) 《while E do S od》c = 《while E do S od》c
(《S》c) (《E》c=trueのとき) = 《》
《S1;S2》c = 《S2》c(《S1》c) 《E1:=E2》c = c[《E2》c/《E1》c]
Ichiro Satoh
公理意味論
n プログラムの前提条件(Precondition)と後置条件(Postcondition)を満たすかどうかで考える
{ precondition } construct { postcondition }
で表される 例:Hoare論理
n 備考
n 前提・後置条件をassertionと呼ぶことがある n 例:JavaなどのAssertion
Ichiro Satoh
Hoare論理
n プログラムの事前条件と事後条件を論理式により定式化
P{Q}R
n プログラムQを実行直前に論理式Pが成立して、もしQの実行が終了すれば、その直後に論理式Rが成立する
Q
P
R
4
Ichiro Satoh
Hoare論理
n Hoare論理によるプログラミング意味論
null
assignment
sequence
if-statement
while-statement Ichiro Satoh
操作的意味論
n 抽象的な計算機を定義し、プログラミング言語の意味を抽象的計算機の動作(状態遷移)として記述する
n 抽象機械の例 n 有限状態機械(オートマトン) n チューリングマシン n ランダムアクセス機械 n ラムダ計算
n プログラミング言語の構文に基づく意味論定義 n 構造操作的意味論 (G.Plotkin)
Ichiro Satoh
構造的操作意味論
Structural Operational Semantics (SOS):構文要素に応じて変換規則を定める
n プログラミング言語や計算モデルは表示規則を決める文法と、表示規則の意味を定める意味論に分かれる
n 計算モデルやプログラミング言語の意味論: n 操作的意味論 計算動作を数学的に定式化 n 代数的意味論 表現(プログラム)を代数構造に写像 n 公理的意味論 論理式で計算前と計算後の状態を表現
P → P’ P op Q → P’ op Q P ::= P op P
構文定義 構文に対する意味定義
Ichiro Satoh
操作的意味
n 数式の操作的意味
n 遷移関係
n 推論規則 (Rule 1)
(Rule 2)
(Rule 3)
(mは数字)
5
Ichiro Satoh
操作的意味の例
n 例:
rule 1 rule 2
rule 3
Ichiro Satoh
構造的操作意味論の例
例:
if Condition then Statement-1 else Statement-2 endif → Statement-1
Statement ::= Statement ; Statement | if Condition then Statement else Statement endif | while Condition do Statement od Condition ::= true | false
Condition = true
if Condition then Statement-1 else Statement-2 endif → Statement-2
Condition = false
while Condition do Statement od → Statement ; while Condition do Statement od
Statement-1 ; Statement-2 → Statement-1’ ; Statement-2 Statement-1 → Statement-1’
Condition = true
while Condition do Statement od → ε Condition = false
Ichiro Satoh
CCSの構文
n 構造的操作意味論と構文定義は対応
P := 0| a.P| a.P| ! .P| P +Q
| P |Q
n 0はプロセス式
n Pがプロセス式ならばa.Pはプロセス式
n Pがプロセス式ならばa.Pはプロセス式
n Pがプロセス式ならばτ.Pはプロセス式
n PとQがプロセス式ならばP+Qはプロセス式
n PとQがプロセス式ならばP+Qはプロセス式
Ichiro Satoh
ラベル付き遷移システム
CCSはラベル付き遷移システムとして構造的意味論を定義 Labeled Transition System (LTS)
n オートマトンと同様にアクションは通信(出力、入力、内部計算)にはラベルがつく
S1 S0
α アクション
状態 状態
6
Ichiro Satoh
PP ⎯→⎯αα.'
'PQP
PP⎯→⎯+
⎯→⎯α
α
''PPQ
PP⎯→⎯+
⎯→⎯α
α
QPQPPP|'|'
⎯→⎯
⎯→⎯α
α
'||'PQPQ
PP⎯→⎯
⎯→⎯α
α
'|'|','
QPQPQQPP
⎯→⎯
⎯→⎯⎯→⎯τ
αα
APAPPP
a
a
'\\'
⎯→⎯
⎯→⎯if Aa∉
τは特別な動作を表す aa =
[CCSの場合]
Structural Operational Semantics
Ichiro Satoh
ラベル付き状態遷移システム
基本式の操作意味論
PPa a!"!.
''PQP
PP!"!+
!"!#
#
QP.P
:P
+
=
||
0!
''QQP
QQ!"!+
!"!#
#
P '
Q'
a
b P + Q
Ichiro Satoh
CCSの遷移
ラベル付き遷移システム(構造的操作意味論)
''QQP
QQ!"!+
!"!#
#
P PP Q P
!
!
" #"
+ " #"
''
! !.P P" #" a P. Pa!"!
P Pa! "! 'P '
Q'
a
b P + Q
a = b のときは非決定的選択
Q Qa! "! '
となる遷移が可能なとき
となる遷移が可能なとき
P PP L P L
L L!
! !" #"
" #"$ %
''
( ( ))\ \
Ichiro Satoh
CCSの遷移
ラベル付き遷移システム(構造的操作意味論)
P P Q QP Q P Q
a a!"! !"!
!"!
' '| ' | '#
P PP Q P Q
!
!
" #"
" #"
'| ' |
P | Q
P’ | Q’
τ a a
P | Q
P’ | Q’
P | Q
P’ | Q
a
P | Q
P’ | Q
a
'||'QPQP
QQ!"!
!"!#
#
一対一の同期通信
非同期に遷移
7
Ichiro Satoh
CCSの動作式例
動作式の例
a P b Q a R P R. . | . |+ ! "!#
a P b Q a R Q a Rb. . | . | .+ ! "!
a.P + b.Q | a.R a! "! a.P + b.Q | R
a P b Q a R P a Ra. . | . | .+ ! "!
( . . | . ) { , } ( | ) { , }a P b Q a R a b P R a b+ ! "!\ \#
Ichiro Satoh
並列処理(Parallel Composition)
n もし P と Q がプロセス式ならば, (P | Q) もプロセス式
n 1. If M M’, and N cannot perform α, then M | N M’ | N n 2. If N N’ and M cannot perform α, then M | N M | N’ n 3. If M M’, and N N’, then M | N M’ | N’
→ α
→ α → α
→ α
→ α → α → τ