• 検索結果がありません。

工学部専門科目「計算と論理」配布資料 練習問題集 (2016 年度版 )

N/A
N/A
Protected

Academic year: 2021

シェア "工学部専門科目「計算と論理」配布資料 練習問題集 (2016 年度版 )"

Copied!
7
0
0

読み込み中.... (全文を見る)

全文

(1)

工学部専門科目「計算と論理」配布資料 練習問題集 (2016 年度版 )

五十嵐 淳

京都大学 大学院情報学研究科 通信情報システム専攻 [email protected]

http://www.fos.kuis.kyoto-u.ac.jp/~igarashi/class/cal/

November 8, 2016

11/15()の授業時間を使って演習を行います.演習はもう一度くらい行う予定です.

演習の進め方

0. 予め練習問題を解いておく

1. 練習問題の解答を(問題番号・氏名とともに)白板に書く 2. 教員/TAによる講評

3. 1., 2. を繰り返す.

注意事項

小問単位で答えよ.

問題を解答する順番は問わない.(後の問題を最初に解いてよい.)

問題の解答は早い者勝ちとするが,同時に解答を開始するのは構わない.

正答した場合は成績へ加える.

1 単純型付ラムダ計算

定義 1.1 (正規形) M がこれ以上簡約できない,すなわち,M −→N なる項 N が存在しない

時,項 M は正規形(normal form) である,という.

定義 1.2 (正規化可能) M が正規形に簡約できる,すなわち,M −→ N (ただしN は正規形) であるような N が存在する時,項 M は正規化可能(normalizable) である,または,M は正規形 を持つ,という.

(2)

練習問題 1.1

M =if true then (fun n : nat => plus n n) (S O) else (fun n : nat => n) O とする.M は以下の3つの項

M1 = (fun n : nat => plus n n) (S O)

M2 = if true then plus (S O) (S O) else (fun n : nat => n) O M3 = if true then (fun n : nat => plus n n) (S O) else O に簡約されうる.以下の小問i(ただし i= 1,2,3)に答えよ.

小問i: M −→Mi の導出木を書け.

(この問中のplus は単なる変数である.)

練習問題 1.2 Mfix f (x : nat) : nat := match x with O => O | S y => S (S (f y)) end とする.

M (S (S O))−→M1−→ · · · −→Mn (ただしMn S (S (...O)...) の形) となる Mi を列挙せよ.

練習問題 1.3 Basics.vに登場したplus関数をfixを使った項Mplusで表すと以下のようになる.

Mplus = fix plus(m : nat) : nat := fun (n : nat) =>

match m with O => n | S m’ => S (plus m’ n) end

(Mplus (S O)) (S O)が簡約されてS (S O)になる過程を,Mplus (S O) (S O)−→M1 −→

· · · −→Mn −→S (S O)なる Mi を列挙することで示せ.

練習問題 1.4 前問の Mplus を使った項 Mplus Oについて無限簡約列(Mplus O −→ · · · −→

Mn−→ · · ·)があることを説明せよ.

練習問題 1.5 練習問題1.1の項Mをこれ以上簡約できなくなるまで簡約した結果得られる項をN とするとき,M −→ Nの導出木を書け.(この問中の plusは単なる変数である.)

練習問題 1.6 関係 (fun x : nat => x) (S O)←→(fun x : nat => S O) Oの導出木を書け.

練習問題 1.7

(fun c : nat -> bool -> nat => fun a : nat => (c a)) (fun b : nat => fun a : bool => b) の正規形を求めよ.

練習問題 1.8 以下の小問に答えよ.

1. 練習問題1.1の項M について,型付け関係 M :T が成立するT を見つけ,型付け関係の 導出木を書け.

(3)

i. (ただしi= 2,3,4) 練習問題1.1の項Mi1 について,型付け関係 Mi1 :Ti1 が成立す Ti1 を見つけ,型付け関係の導出木を書け.

練習問題 1.9 練習問題1.1の項M,Mi (ただしi= 1, 2, 3)の型付け関係の導出木をそれぞれ書け.

練習問題 1.10 練習問題1.1の項Mをこれ以上簡約できなくなるまで簡約した結果得られる項をN とするとき,M −→ Nの導出木を書け.

練習問題 1.11 練習問題1.5の項Nの型付け関係の導出木を書け.

練習問題 1.12 plus (S O) (S (S O)) ←→ plus (S (S O)) (S O)が導出できることを説明せ よ.(必ずしも導出木を全て書き下す必要はない.)

2 単純型付ラムダ計算 + ペア

ペアで拡張した単純型付ラムダ計算を考える.

(types) S,T ::= · · · |ST

(terms) M,N ::= · · · |(M1,M2)

| match M with (x, y) => N end

match (M1,M2) with (x, y) => N[x,y] end−→N[M1,M2] (R-PMatch)

Γ M :S Γ N :T

Γ (M, N) :ST (T-Pair) Γ M :T1T2 Γ, x:T1, y:T2 N :S (x,y̸∈dom(Γ))

Γ match M with (x, y) => N end :S (T-PMatch)

練習問題 2.1 Lists.vで定義した fstに相当する項Fst を書き,

1. 関係 Fst(O, S O)−→ Oの導出木を書け.

2. 型付け関係 Fst:natnat ->T が成立するT を見つけ,導出を書け.

練習問題 2.2 以下の単純型付ラムダ計算の型付け関係の判断について,判断が導出できるような項 Mを見つけ,導出を書け.ただし,S,T,U は型とする.

1. M :S->T ->S

(4)

2. M :(S->T ->U)->(S->T)->S->U 3. M :(S->T ->U)->(ST ->U) 4. M :(ST ->U)->(S->T ->U)

3 多相ラムダ計算

idを項 fun X : Type => fun x : X => xとする.

練習問題 3.1

id(nat -> nat) S(idnat O)−→M1 −→ · · · −→Mn (ただしMn S (S (...O)...) の形) となる Mi を列挙せよ.

練習問題 3.2 以下の多相ラムダ計算の型付け関係の判断について,判断が導出できるような型T 見つけ,導出を書け.

1. fun X: Type => fun x:X => fun y:X => x:T 2. id(Y : Type,Y -> Y) id:T

練習問題 3.3 IKSをそれぞれ以下のように定義する.

I = fun X : Type => fun x : X => x

K = fun X : Type => fun Y : Type => fun x : X => fun y : Y => x S = fun X : Type => fun Y : Type => fun Z : Type =>

fun x : X -> Y -> Z => fun y : X -> Y => fun z : X => x z (y z)

このとき,以下の型付け関係の判断について,判断が導出できるような型T1,T2,T3を見つけ,導出 を書け.

1. I :T1 2. K:T2

3. S:T3

練習問題 3.4 以下の型付け関係の判断について,判断が導出できるような型T および,T1,T2を見 つけ,導出を書け.ただし,練習問題3.3で求めた導出と重複する部分は省略して良い.

(5)

fun X: Type => S T1 T2 T1 (K T1 T2) (K T1 T1):T

練習問題 3.5 多相ラムダ計算を使うと,ペアを次のように定義することが出来る.

pair = fun X : Type => fun Y : Type => fun x : X => fun y : Y =>

fun Z : Type => fun Z : X -> Y -> Z => z x y また,このように定義したペアについてのf stsndは次のように定義される.

f st = fun X : Type => fun Y : Type => fun p :Z : Type,(X -> Y -> Z) -> Z =>

p X (fun x : X => fun y : Y => x) snd = fun X : Type => fun Y : Type => fun p :∀Z : Type,(X -> Y -> Z) -> Z =>

p Y (fun x : X => fun y : Y => y) 以下の型付け関係の判断について,判断が導出できるような型 S,T,U を見つけ,導出を書け.

1. pair:S 2. f st:T 3. snd:U

練習問題 3.6 pair,f st,snd を練習問題3.5のように定義し,pを項pair nat bool O true する.このとき,

f stnat boolp −→M1 −→ · · · −→Mn

となるMi (ただし Mn は正規形とする)を列挙せよ.また,

snd nat boolp −→N1 −→ · · · −→Nm

となるNi (ただし Nm は正規形とする)を列挙せよ.

4 命題論理

練習問題 4.1 命題論理の導出規則を使って以下の判断の導出を書け.命題¬P P ->の略記で ある.

1. p->q->p

(6)

2. (p->q->r)->(p->q)->p->r 3. p->¬¬p

4. ¬¬¬p->¬p

5. (p->q)->(¬q->¬p) 6. ¬(pq)->(¬p∧ ¬q) 7. (¬p∧ ¬q)->¬(pq) 8. (p->q->r)->(pq->r) 9. (pq->r)->(p->q->r) 10. ¬¬(p∨ ¬p)

11. (p∨ ¬p)->¬¬p->p

12. (pq)r->(pr)(qr) 13. (pq)r->(pr)(qr) 14. (p->r)(q->r)->(pq->r) 15. ¬(p∧ ¬p)

16. (¬pq)->(p->q)

5 述語論理

練習問題 5.1 単純型付ラムダ計算(+命題論理)に関する論理の導出規則を使って以下の判断の導出 を書け.ただし P,Qnat -> Prop 型の変数,RProp 型の変数とする.(文脈からも省略する.) 途中,出てくる Γ P : Prop の形の判断についての導出は省略してよい.また型宣言( :T) は適 宜省略する.

1. (∀x,P x)->(∃y,P y) 2. (¬∃x,P x)->y,¬P y 3. (∀x,¬P x)->¬∃y,P y

4. (∀x,(P x -> Q x))->((∀y,P y)->∀z,Q z)

(7)

5. (∀x,(P x -> Q x))->((∃y,P y)->∃z,Q z) 6. (x,(P xQ x))->(y,P y)(z,Q z) 7. (∀x,P x∨ ¬P x)∧(¬¬∀y,P y)->∀z,P z 8. (∃x,P xQ x)->(∃y,P y)(∃x,Q x) 9. (x,P x -> R)->(y,P y)-> R

10. ((∃y,P y)-> R)->(∀x,P x -> R)

6 日本語による証明

練習問題 6.1 以下の命題を(日本語で)証明せよ.(ただし,命題や関数の意味はCoq での定義によ るとする.)

1. ∀X : Type,∀x y : list X,length(x ++ y)=length x + length y を示せ.

2. bool上の排他的論理和を計算する関数xorbを定義し,b c : bool,xorb b c=andb b c ->

b = falsec = falseを示せ.

3. x y : nat,ev x -> ev y -> ev (x + y) ev xの導出に関する帰納法で示せ.

4. ∀x : nat,∀y : nat,(x=y∨ ¬(x=y)) xについての帰納法を使って示せ.

参照

関連したドキュメント

(具体例)

・テーマ 「専門学科『情報科』と大学との連携」 ・パネリスト(敬称略) 中森眞理雄 東京農工大学工学部情報工学科 教授

鶴岡工業高等専門学校 以下の自己点検・評価結果を踏まえ、当該観点の内容を満たしているか。 ■ 満たしていると判断する 自己点検・評価結果欄(該当する□欄をチェック■) 自己点検・評価の根拠資料・説明等欄 備考 再掲 1 学校の目的を達成するために、教育研究活動に対して適切な資源配分を決定す る際、明確なプロセスに基づいて行っているか。

NPO 法人 Explat 代表理事 植松侑子 NPO 法人 Accountability for Change 創設理事 五十嵐剛志 NPO 法人サービスグラント 代表理事 嵯峨生馬. Arts

科目番号 科目名 方法 単位数 修年次 実施学期 曜時限 教室 担当教員 授業概要 備考.. W140262 専門語学B(独語) 2 2.0 3 春AB秋AB 月3

五十嵐 茂 IGARASHI Shigeru 1.はじめに 専門課程、制御技術科 2

専門医実績目録 単位については、【麻酔科専門医新規(再認定)申請書類】の「実績目録単位表(2016/11/25 版)」 を参照して下さい。

ここでは,命題の構成要素 ( 論理結合子 (logical connective) という ) として「ならば (->) 」だけを 考える論理から始めて, Induction.v