I211 数理論理学 (1) Introduction and how to get started; Propositional Logic
Transcription
I211 数理論理学 (1) Introduction and how to get started; Propositional Logic
I211 数理論理学 (1) Introduction and how to get started; Propositional Logic 小川瑞史 2009.12.4(石川) 2009.11.27(田町) www.jaist.ac.jp/~mizuhito Or, “google mizuhito” 自己紹介 • 学歴 – 1985 東京大学大学院(修士、数学) – 2002 東京大学大学院(論文博士、計算機科学) • 職歴 – 1985-2001 NTT 研究所 – 2002.1-2003.5 JST 研究員(東京大学) – 2003.6-現在 JAIST • 専門分野:いろいろ – 計算理論(書換系)・組み合わせ理論 – プログラム解析(モデル検査、充足性検査器) – プログラム検証(定理証明系) Contact • E.mail: [email protected] • Homepage: www.jaist.ac.jp/~mizuhito or, “google mizuhito” • Room: I-51b (情報1棟5F) • Office hour: 火曜 13:30-15:00 (石川 12/8,12/15,12/22,1/26,2/2) 休講・補講・試験・レポートの予定 • 休講 – 1月19日(火)、1月21日(木):石川(国際会議) – 11月28日(土):田町(学校行事) • 補講:1月12日(火)午後(13:30-15:00):石川 • 試験 – 2月9日(火):石川(1限) – 12月20日(日):田町(13:30-15:00) • レポート期限(メールで提出、期限明記のものは除く) – 2月12日(木)正午:石川 – 12月24日(木)正午:田町 • 採点:レポート50点、試験50点 教科書 • 教科書:小野寛晰、情報科学における論理、日本評論社 1章~2章+3章の一部 • 参考書:J.R.Shoenfield, Mathematical Logic, Association for Symbolic Logic (reprint of published in 1967) • Textbook in English: Logic in Computer Science: Modelling and Reasoning About Systems (paperback), by M.Huth, M.Ryan, Cambridge Univ. Press, 2004. Lecture agenda of I211 • Two kinds of standard (classical) logics – Propositional logic (石川12月、田町11/27-12/5) – First order predicate logic (石川1月、田町12/11-29) • Two views on logic: syntax and semantics – Syntax = theory (sequent calculus LK) – Semantics = model (interpretation) • Properties of focus Goedl’s incompleteness th. (Peano arithmetic) – Completeness – Decidability / Cut-elimination / Interpolation – Herbrand theorem / Compactness 講義間の関係 • I211 または同等の知識が必要な科目 – I443 ソフトウェア検証論(青木) – I633 Logic and Languages(東条) – I640 Automated Deduction(小川) – I647 Substructural Logic(小野) • I211 を受講した方がいい人 – ソフトウェア科学(オ)領域の研究室の人、特に 形式手法関連の人には必須 – 哲学、数学の好きな人 – 単に(ア)領域の単位取得が目的ならば、他科 目のI216 等を薦めます 講義形式 • 講義は教科書の内容そのままではありません。基本 的にはスライドは self-contained (のつもり)、質問は 講義中も適宜、割り込んでください。 – スライドは英語、講義は日本語、質問はどちらでも。 – スライドは各回講義前後、ホームページにupload. • 採点:レポート50点、試験50点 – (当然ですが)内容に基づいて採点します。数だけ 出しても、内容が伴わなければ0点です。 – 採点は(上限はそれぞれ50点とした)加点法です。 レポート・試験はすべてを解く必要はありません。 注意 • 講義に出て聞くだけで単位が取れると思わないこと – 出席はとりません(出席点はありません)。出席しない 場合は自分で適当な教科書を最低1冊読み理解する 必要があるでしょう。 – 試験やレポートの前だけ勉強しても、たいがい不合格 でしょう。毎回の講義を確実に理解するように(Office hour の質問を含め)予復習してください。おそらく講義 の同等~2倍以上の時間が予復習に必要なはずです。 • すべての証明の詳細がわからなくても大丈夫ですが、 – 定義、定理の実例を複数考える – 講義の中で紹介したツールを実際に使ってみる などの地に足がついた理解が必要です。 Why logic now? 形式検証への流れ • 現実からの要請 – 古典的なテスト手法だけでは複雑なシステムに対応で きなくなりつつある。形式検証による補完が必要。 – システムが正しいだけでなく、正しさの証拠が社会的要 請となりつつある(セキュリティ, EAL7 ISO/IEC15408) – 人間は間違える! • 形式手法が可能とするサポート – 近年の検証ツール・ライブラリの実用性向上(インタ フェース・実装の改良) – ハードウェアの進化 (2GB以上のメモリ) – 自分の誤りに気づくことが最大の利点! 形式検証とは • システムやプログラム、ならびに満たすべき性質の双 方を形式的に記述(=計算機でチェック可能な形で) – CPUデザイン(Intel,IBM,AMD,…) では当たり前 – 形式的記述の背景は数理論理(推論の規則化) • 論理の表現力と自動化・効率化のトレードオフ 表現力大 – 帰納法:定理証明系・代数仕様記述(自動化困難) – 一階述語論理:充足性検査(実用的には自動化可) – 様相論理:モデル検査(自動化) 自動化 – 命題論理:充足性検査(自動化) 効率的 検証ツール花盛り • 高階論理:型(α set)の導入で Russel の逆理を回避 – PVS, HOL, Isabelle, Misar, NuPrl, Coq, Agda, Twelf • 一階述語論理+帰納法(代数的仕様記述) – Café/OBJ, Maude, Larch 人間がガイドする証明系 (準)自動な充足性検査 • 一階述語論理:特定の帰納法は公理として追加して利用 – Simplify, CVC Lite, E, Vampire, SPASS, Otter CASC競技会参加 – 応用例: ESC/Java2, Caduceus • 様相論理:モデル検査 – SPIN, (Nu)SMV, SLAM/Moped, Weighted PDS – 応用例: Bandera/Boger, Java PathFinder • 命題論理:有界モデルを網羅的探索SAT competition, SMT-COMP – miniSAT, zchaff, sugar, (yices, Z3) – 応用例: Alloy, NuSMV, TTT (停止性検証) 論理の表現力と問題の関係 • プログラム解析でいえば … 命題論理・様相論理 一階述語論理 帰納法 手続内 古典的データフロー解析 (不要コード解析など) アレイ境界検査 (注釈有) アレイ境界検査 (注釈無) 手続間 スタック検査 関連コード解析 Craig interpolationによる自動化 Craig 1952 Ken McMillan, et.al. TACAS08 Voronkov, et.al. CADE09 But do not trust too much … Lots of bug history in tool development • UPPAAL (since 1995): Safeness of timed automata – Zone construction is wrong! (STACS03) • Pep (since 1997): Petrinet coverability – Karp-Miller tree (1969), acceleration (1991) – Acceleration algorithm is wrong! (ATVA07) • HOL-light prover kernel (Ocaml only 400 lines) – 2 soundness bugs found and corrected … • SAT competition 2006: many SAT solvers are buggy (did not work!). Puzzel: SUDOKU (Latin square) Find placing each number (1…9) s.t. precisely once in - each row, - each column, - each 3*3 sub-square. 2 4? 4? DEMO 1? 1? 5 What is SAT? Given a propositional formula in CNF, (±x1 ∨ … ∨ ±xn) ∧(±y1 ∨ … ∨ ±ym) ∧ … find an assignment to Boolean variables that makes the formula true: ωω11==(x(x22∨∨xx33)) ωω22==((¬¬xx11∨∨¬¬xx44)) ωω33==((¬¬xx22∨∨xx44)) SATisfying assignment! AA=={x =0,xx22=1, =1,xx33=0, =0,xx44=1} =1} {x11=0, 3SAT: NP-complete, but practically efficient Killer SUDOKU (killersudokuonline.com) =45-9-11-8-16 1 3 =11+14+16+12+5+15+5+13+3-(45×2) 4 =45-11-11-21 2 5 4 {1, 2, 3} Solved <1.5sec by SMT (yices) Killer SUDOKU (another example) 9 Solved in 4sec by SMT (yices) 1 Killer SUDOKU (combination) Solved in 17sec by SMT (yices) Killer SUDOKU (yet another example) Solved in 5min by SMT (yices) Propositional Logic Propositional logic • Definition. Atomic propositions : A, B, C, … – either True (1) or False (0) will be substituted • Definition. Logical connectives : ∧(and), ∨(or), ¬(not), ⊃(imply) • Definition. A proposition is, – Either a propositional variable, – (Constants Τand ⊥), or – A pair of propositions combined with a logical connective. Caution! : Proposition is syntax • Definition of propositions does not tell anything on its semantics (meaning). • As propositions, A∧B and B∧A are different! How to prove automatically? ~ Two methods : syntax v.s. semantics ~ • Syntax: deduction rules – A, A⊃B ⇒ B (modus ponens) – (A∧B)∨C ⇒ (A∨C) ∧ (B∨C) – (A∨B)∧C ⇒ (A∧C) ∨ (B∨C) – (A⊃B)⇒ ¬A∨B Equivalent (completeness) • Semantics: model (truth table) – A⊃B – ¬A ∨ B For First-order logic, semantics becomes complicated. Model (Semantics) • Def. (Truth) Valuation is a substitution (of boolean value, i.e., true/false) for each propositional variable. • For each logical connective, valuation is propagated as: A 1 1 0 0 B 1 0 1 0 ¬A 0 0 1 1 A∧B 1 0 0 0 A∨B 1 1 1 0 A⊃B 1 0 1 1 Validity • Def. A proposition is valid, if it is always true for each valuation. • Exercise: Are they valid? – A⊃A – A ∨ ¬A – ((A⊃B)⊃A)⊃A (Pierce’s law) Satisfiablity • Def. A proposition is – Satisfiable ⇔ there exists truth valuation such that the proposition becomes true. – Unsatisfiable ⇔ there are no true valuation such that the proposition becomes true (i.e., always false for any substitutions on propositional variables). • Def. A pair of propositions ψ, φ are logically equivalent if, for each valuation, truth values of ψ and φ coincide. • Remark: ψ is unsatisfiable iff ¬ψ is valid.