第14回 前半:ラムダ計算(演習付) 後半:小テスト

Slides:



Advertisements
Similar presentations
プログラミング言語論 第3回 BNF 記法について(演習付き) 篠埜 功. 構文の記述 プログラミング言語の構文はどのように定式化できるか? 例1 : for ループの中に for ループが書ける。 for (i=0; i
Advertisements

0章 数学基礎.
プログラミング言語論 第10回(演習) 情報工学科 木村昌臣   篠埜 功.
基本情報技術概論 I 演習(第5回) 埼玉大学 理工学研究科 堀山 貴史
プログラミング言語論 関数型プログラミング言語 水野嘉明
第1章 数と式 第4節 集合と命題  8  集合 (第3回).
第1章 場合の数と確率 第1節 場合の数  3  順列 (第1回).
第11回 整列 ~ シェルソート,クイックソート ~
確率・統計Ⅰ 第11回 i.i.d.の和と大数の法則 ここです! 確率論とは 確率変数、確率分布 確率変数の独立性 / 確率変数の平均
計算の理論 II 帰納的関数(つづき) 月曜4校時 大月美佳.
計算の理論 I 決定性有限オートマトン(DFA) と 非決定性有限オートマトン(NFA)
プログラミング入門2 第1回 導入 情報工学科 篠埜 功.
計算の理論 I ー DFAとNFAの等価性 ー 月曜3校時 大月 美佳.
プログラミング言語論 第6回 型 情報工学科 篠埜 功.
プログラミング言語論 第4回 式の構文、式の評価
論理式の表現を数学的に取り扱いやすくするために代数学の助けを借りる.
プログラミング言語論 第1回 導入 情報工学科 篠埜 功.
人工知能特論2011 資料No.6 東京工科大学大学院 担当教員 亀田弘之.
データ構造と アルゴリズム 第二回 知能情報学部 新田直也.
情報数理Ⅱ 平成27年9月30日 森田 彦.
情報科学1(G1) 2016年度.
プログラミング言語論 プログラミング言語論 プログラミング言語論 演習1 解答と解説 演習1解答と解説 1 1.
条件式 (Conditional Expressions)
情報教育論 第9回 仮定文の仕組み 政策・メディア研究科 岡田 健.
数理論理学 第1回 茨城大学工学部情報工学科 佐々木 稔.
言語処理系(5) 金子敬一.
計算の理論 I -講義について+αー 月曜3校時 大月美佳.
シミュレーション演習 G. 総合演習 (Mathematica演習) システム創成情報工学科
岩村雅一 知能情報工学演習I 第8回(後半第2回) 岩村雅一
国立情報学研究所 ソフトウェア研究系 助教授/
プログラミング言語論 第3回 BNF記法について(演習付き)
形式言語の理論 5. 文脈依存言語.
計算の理論 II 帰納的関数2 月曜4校時 大月美佳.
計算の理論 I ー 正則表現 ー 月曜3校時 大月 美佳.
数理論理学 第3回 茨城大学工学部情報工学科 佐々木 稔.
第7回 プログラミングⅡ 第7回
国立情報学研究所 ソフトウェア研究系 助教授/
プログラミング言語論 第10回 練習問題解答例 情報工学科 篠埜 功.
アルゴリズムとプログラミング (Algorithms and Programming)
プログラミング言語論 第四回 理工学部 情報システム工学科 新田直也.
計算の理論 II 前期の復習 -有限オートマトン-
計算の理論 I ε-動作を含むNFA 月曜3校時 大月 美佳.
情報処理Ⅱ 第2回:2003年10月14日(火).
プログラミング言語論 第9回 情報工学科 木村昌臣 篠埜 功.
コンパイラ 2011年10月20日
計算の理論 I ー閉包性ー 月曜3校時 大月 美佳.
計算の理論 I ー正則表現とFAの等価性 その1ー
論理回路 第4回
補講:アルゴリズムと漸近的評価.
プログラミング入門2 第13回、14回 総合演習 情報工学科 篠埜 功.
計算の理論 I ー正則表現とFAの等価性ー 月曜3校時 大月 美佳.
論理回路 第5回
プログラミング言語論 第10回 情報工学科 篠埜 功.
計算の理論 I -数学的概念と記法- 月曜3校時 大月 美佳.
述語論理式の構文と意味 一階述語論理式の構文 一階述語論理式の意味 述語,限量記号 自然言語文の述語論理式表現 解釈 妥当,充足不能
計算の理論 I -講義について+αー 月曜3校時 大月美佳 平成31年5月18日 佐賀大学理工学部知能情報システム学科.
2008/7/16(情報コース)2008/7/22(通信コース) 住井
4.プッシュダウンオートマトンと 文脈自由文法の等価性
計算の理論 I NFAとDFAの等価性 火曜3校時 大月 美佳 平成16年5月18日 佐賀大学理工学部知能情報システム学科.
関数型言語の基礎 型なしl計算 型理論 構成的プログラミング GUIにあらわれる関数概念 PBD VL
計算の理論 I ー 正則表現 ー 月曜3校時 大月 美佳.
プログラミング入門2 第6回 関数 情報工学科 篠埜 功.
PROGRAMMING IN HASKELL
計算の理論 I -講義について+αー 火曜3校時 大月美佳 平成31年8月23日 佐賀大学理工学部知能情報システム学科.
計算の理論 I ー ε-動作を含むNFA ー 月曜3校時 大月 美佳.
計算の理論 I プッシュダウンオートマトン 月曜3校時 大月 美佳 平成15年7月7日 佐賀大学知能情報システム学科.
プログラミング基礎a 第5回 C言語によるプログラミング入門 配列と文字列
プログラミング入門2 第5回 配列 変数宣言、初期化について
情報処理Ⅱ 小テスト 2005年2月1日(火).
プログラミング言語論 プログラミング言語論 演習7 解答と解説 演習7 解答と解説 1.
Presentation transcript:

第14回 前半:ラムダ計算(演習付) 後半:小テスト プログラミング言語論 第14回  前半:ラムダ計算(演習付) 後半:小テスト 情報工学科 木村昌臣   篠埜 功

今後のスケジュール 12/24(水)第14回 ラムダ計算(導入) 1/14(水)は月曜日の講義が行われるので無し。 期末試験は試験期間中に行う。日時、場所については掲示を見てください。持ち込み不可。

今日のトピック:ラムダ計算 ラムダ計算とは: プログラミング言語の核となる部分を取り出した言語 計算可能な関数をすべて表現可能。 3

ラムダ式 ラムダ式の定義 <ラムダ式> ::= <定数> | <変数> | (<変数> . <ラムダ式>) | (<ラムダ式> <ラムダ式>) <定数> ::= 0 | 1 | 2 | 3 | … <変数> ::= x | y | z | w | … 4

ラムダ式 ラムダ式の構文木を以下のように定義する。 M ::= c 定数(0, 1, 2, 3,等) | x        変数(x, y, z, w, 等) | (x .M)    ラムダ抽象 | (M M)    関数適用 5

ラムダ式 ラムダ式を表記する場合の約束事項 関数適用は左結合する。 ラムダ抽象x .MにおけるMはできるだけ大きくとる。 括弧を省略した場合、1, 2の約束に従う。 例 x y z は、(x y) zを表す。 例 x. y. z. x y z は、 x. (y. (z. ((x y) z))) を表す。 6

ラムダ式 計算の本質を追究する過程で考えられた言語 ラムダ記法は直感的には関数の表記法。 g ( x ) = x + 1 で定義される関数g : Z  Z を、 g =  x  Z . x + 1 のように表記する。Zが明らかな場合省略して g =  x. x + 1 のように書く。 7

型無しラムダ計算 形式的な式変形(変換、次ページで説明)を行うのが型無しラムダ計算。 8

変換 ラムダ式 M, N, P, 変数xについて、 変換を以下のように再帰的に定義する。 (x. M) N  M [N / x] (x. M)  (x. N) MP  NP PM  PN M [N / x]はラムダ式M中のxをNで置き換えたラムダ式を表す。ただし、束縛変数が自由変数とかぶらないように、束縛変数の名前の付け替えを行う。 9

置換の定義 置換 M [ N / x ] の定義 Mが定数の場合 c [ N / x ] = c Mが変数の場合 x [ N / x ] = N y [ N / x ] = y ( x  y ) Mがラムダ抽象の場合 (y. M) [ N / x ] = y. M (x = y) y. (M [N / x]) (x  y, y  FV (N)) z. ((M [ z / y ]) [N / x] ) ( x  y, z  x, y  FN (N), z  FV (M), z FV(N) ) Mが関数適用の場合 (M1 M2) [N / x] = ( M1 [ N / x ] ) ( M2 [N / x] ) 10

自由変数 ラムダ式 Mの自由変数の集合FV(M)を以下のように定義する。 FV( c ) = { } FV ( x ) = { x } FV ( x. M ) = FV (M) \ { x } (\ は集合の差をとる演算を表すものとする。) FV (M1 M2) = FV (M1)  FV (M2) 11

変換列 ラムダ式M1に変換を有限回(0回以上)繰り返してラムダ式Mnが得られるとき、 M1  M2  …  Mn と表せる。 また、M  N かつ N  M のとき、 M  N と書く。 12

例 ラムダ式 (x. y. x y) z w に対して、以下のは以下の変換列が存在する。 (x. y. x y) z w (y. z y) w z w 13

練習問題 ラムダ式 (x. y. x y) (z. z) w は、何度か変換を行うことによってwに変換できるが、その過程を示せ。 14

解答 黒板で説明。 15

Church-Rosserの定理 M * M1 かつM * M2 ならばあるラムダ式Nが 存在して M1 * N かつM2 * N が成り立つ。 16

小テスト 17