(プログラミング)言語設計の基本...

7
Ichiro Satoh 計算モデル特論 プロセス計算の定義 国立情報学研究所 佐藤一郎 E-mail: [email protected] Ichiro Satoh (プログラミング)言語設計の基本 プログラミング言語を扱う上で重要となる項目 構文(syntax) プログラミング言語の文法、表現 意味論(semantics) プログラムがどのような動作・結果を持つかを定式化 語用論(pragmatics) プログラムの書き方 Ichiro Satoh CCS (Calculus of Commucating Systems) CCSの構文 P : | a.P | aP | P | P Q | P|Q P L A = + 0 . . | | ! \ 停止プロセス 同期入力(通信入力aを受信後、Pとなる) 同期出力(通信出力aを送信後、Pとなる) 内部計算(内部計算を実行後、Pとなる) 選択動作(PまたはQとなる) 並行動作(PQが並行に動作できる) 事象制限(Lに含まれる事象名の外部観測禁止) プロセス定義(A=Pとなるとき、APで置換) Ichiro Satoh 帰納的定義(再帰的定義) あるものを定義するにあたってそれ自身を定義に含むもの P := 0 | a.P | a . P | ! . P | P + Q | P | Q 0はプロセス式 Pがプロセス式ならばa.Pはプロセス式 Pがプロセス式ならばa.Pはプロセス式 Pがプロセス式ならばτ.Pはプロセス式 PQがプロセス式ならばP+Qはプロセス式 PQがプロセス式ならばP+Qはプロセス式

Transcript of (プログラミング)言語設計の基本...

Page 1: (プログラミング)言語設計の基本 計算モデル特論ichiro-satoh.jp/lectures/model/2013/process-calculus-definition.pdf(プログラミング)言語設計の基本

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はプロセス式

Page 2: (プログラミング)言語設計の基本 計算モデル特論ichiro-satoh.jp/lectures/model/2013/process-calculus-definition.pdf(プログラミング)言語設計の基本

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  多くの計算モデルはその意味論を操作意味として定義するが、 表示意味や公理意味による定義もありえる

Page 3: (プログラミング)言語設計の基本 計算モデル特論ichiro-satoh.jp/lectures/model/2013/process-calculus-definition.pdf(プログラミング)言語設計の基本

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

Page 4: (プログラミング)言語設計の基本 計算モデル特論ichiro-satoh.jp/lectures/model/2013/process-calculus-definition.pdf(プログラミング)言語設計の基本

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は数字)

Page 5: (プログラミング)言語設計の基本 計算モデル特論ichiro-satoh.jp/lectures/model/2013/process-calculus-definition.pdf(プログラミング)言語設計の基本

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

α アクション

状態 状態

Page 6: (プログラミング)言語設計の基本 計算モデル特論ichiro-satoh.jp/lectures/model/2013/process-calculus-definition.pdf(プログラミング)言語設計の基本

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!"!

!"!#

#

一対一の同期通信

非同期に遷移

Page 7: (プログラミング)言語設計の基本 計算モデル特論ichiro-satoh.jp/lectures/model/2013/process-calculus-definition.pdf(プログラミング)言語設計の基本

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’

→ α

→ α → α

→ α

→ α → α → τ