SlideShare a Scribd company logo
1 of 29
レイトン教授で始める
 Alloy Analyzer入門
      2011年8月15日
    有限会社ITプランニング
       小笠原 啓
アジェンダ


Alloy Analyzerのご紹介
Alloyって何ができるの?
レイトン教授の例題
まとめ
Alloy Analyzerのご紹介
Alloy Analyzerとは

Alloy AnalyzerはMITで開発されたオープンソース
(MITライセンス)のJava製GUI付き仕様記述・検
証ツール。
B, Z, VDMのようなツールは仲間。
2006年頃から公開されており、Version 4で解析速
度向上、文法のブラッシュアップ。
2011年8月現在Version 4.1.10が最新(4.2 RCあり)。
          開発者のDaniel Jackson@MIT
Alloy Analyzerの検証は全自動


簡素な言語で仕様を記述すると、その仕様を満た
す状態を検索して図示してくれる(モデルファイ
ンダー)。
検証したい性質を記述すると、その性質が満たさ
れるかどうか全自動でチェックしてくれる。
小スコープ仮説


全自動チェックにはスコープ(チェックする範
囲)があり有限。それでも多くの設計がチェック
できる。(小スコープ仮説)




    探索空間とAlloyのスコープ(イメージ)
デモ:Alloy Analyzer
Alloyって何が嬉しいの?
どういう時に使えるの?
正しいAlloyの使い方


データモデリング
正確なER図の記述と図示。設計書への添付。
ビジネスの仕組みの記述
曖昧性の早期発見。明確な意思疎通。
手続きの検証
アルゴリズム・プロトコルの設計・検証。
今日はAlloyの真の姿を
  ご紹介します。
SATソルバー呼び出し器
satisfiability problem


略してSAT。充足可能性問題。
要するに、特定の組わせが希望の条件を満たすか
どうかを調べる、組合せ問題。
組み合わせて試してみるしか有効な解法が知られ
ていない。NP完全問題。
SATを高速に解いてくれるのがSATソルバー。
SATソルバーを使うのは大変


SATソルバーは強力だが、使うのが面倒だった。
1.   自分の解きたい問題をSATにエンコード。
2.   乗法標準形への変換。
3.   SATソルバーへ。
4.   出てきた充足解をデコード。
5.   デコードされた解の意味を理解。
Alloy Analyzerなら
簡単な言語で問題を記述するだけ
でSATソルバーを呼び出し可能。
  しかも、見つかった解を
   図示までしてくれる。
実演してみましょう
そこでレイトン教授
悪魔の箱、面白かったです
問題No.50


   5頭の牛がいる。うち2頭は本当
   の事しか言わないトンホー種。3
   頭はウソしか言わないソーウ種だ
   という。さて、次の会話からウソ
   つき牛に×印をつけてほしい。
   A「Dはソーウ種だね」
   B「Cはトンホー種じゃないよ」
   C「Aはソーウ種じゃない」
   D「Eはソーウ種です」
   E「Bはトンホー種じゃないぞ」
問題No.39


  Aは赤、Bは青、Cは白のシャツとズ
  ボンを着ていた。彼らに目隠しを
  して服をデタラメに取り替えさせ
  てから目隠しをはずして感想を聞
  いてみた。
  A「3人とも上下の色がバラバラだ
  ね。」
  B「Cだけは自分のものを着てない
  な。」
  C「赤いズボンなんて恥ずかしい
  よ」
問題No.87


   トランプの4種のマーク、ス
   ペード、ハート、クラブ、ダ
   イヤを4枚ずつ、全部で16枚
   並べる。
   図のような縦横4列のカード
   が置かれている。縦の列、横
   の列、対角線のななめの列の
   それぞれに、4種のカードが
   入るように並べてほしい。
   カードをタッチすると、絵柄
   を切り替えることができる。
まとめ


Alloy AnalyzerはMITで作られたオープンソースの仕
様記述・検証ツール。決められたスコープ内での
網羅的全自動チェックが可能。
正確なデータモデリングの支援、仕様記述による
曖昧さの早期発見、複雑な手続きの検証など。正
しい使い方。
Alloyの真価はSATソルバーを簡単に呼べること。応
用方法はアイディア次第。
日本語の情報源も登場!始めるには良い時期。
情報源(1):本家サイト


 http://alloy.mit.edu/alloy4/
情報源(2):コミュニティサ
      イト

 http://alloy.mit.edu/community/
情報源(3):チュートリアル

http://alloy.mit.edu/alloy4/tutorial4/
情報源(4):書籍

        抽象によるソフトウェア設計-Alloyではじめる形式手
法
Daniel Jackson (著), 中島 震 (監訳), 今井 健男 (翻訳), 酒井 政裕 (翻訳),
遠藤 侑介 (翻訳), 片岡 欣夫 (翻訳) オーム社
情報源(5):日本のコミュニ
         ティ
https://groups.google.com/group/alloy-jp?hl=ja/
あなたの脳をソルバーで加速!
ご清聴ありがとうございました。
関数プログラミング・形式手法
     夏のイベント




函数プログラミングの                   Proof Summit             CUFP
集い                           http://partake.in/even   http://cufp.org/confe
http://partake.in/events/a   ts/ac41261d-6026-        rence
c41261d-6026-4d09-8814-      4d09-8814-
5ad3e58446e8                 5ad3e58446e8

More Related Content

Viewers also liked

Alloy ではじめる簡単モデル検査
Alloy ではじめる簡単モデル検査Alloy ではじめる簡単モデル検査
Alloy ではじめる簡単モデル検査y_taka_23
 
Arduino programming of ML-style in ATS
Arduino programming of ML-style in ATSArduino programming of ML-style in ATS
Arduino programming of ML-style in ATSKiwamu Okabe
 
ATS language overview
ATS language overviewATS language overview
ATS language overviewKiwamu Okabe
 
Metasepi team meeting #17: Invariant captured by ATS's API
Metasepi team meeting #17: Invariant captured by ATS's APIMetasepi team meeting #17: Invariant captured by ATS's API
Metasepi team meeting #17: Invariant captured by ATS's APIKiwamu Okabe
 
ATS/LF for Coq users
ATS/LF for Coq usersATS/LF for Coq users
ATS/LF for Coq usersKiwamu Okabe
 
Embedded application designed by ATS language
Embedded application designed by ATS languageEmbedded application designed by ATS language
Embedded application designed by ATS languageKiwamu Okabe
 
Metasepi team meeting #14: ATS programming on MCU
Metasepi team meeting #14: ATS programming on MCUMetasepi team meeting #14: ATS programming on MCU
Metasepi team meeting #14: ATS programming on MCUKiwamu Okabe
 
Start! ATS programming
Start! ATS programmingStart! ATS programming
Start! ATS programmingKiwamu Okabe
 
ATS programming on ESP8266
ATS programming on ESP8266ATS programming on ESP8266
ATS programming on ESP8266Kiwamu Okabe
 
ATSプログラミングチュートリアル
ATSプログラミングチュートリアルATSプログラミングチュートリアル
ATSプログラミングチュートリアルKiwamu Okabe
 
Metasepi team meeting #19: ATS application on Arduino
Metasepi team meeting #19: ATS application on ArduinoMetasepi team meeting #19: ATS application on Arduino
Metasepi team meeting #19: ATS application on ArduinoKiwamu Okabe
 
Metasepi team meeting #16: Safety on ATS language + MCU
Metasepi team meeting #16: Safety on ATS language + MCUMetasepi team meeting #16: Safety on ATS language + MCU
Metasepi team meeting #16: Safety on ATS language + MCUKiwamu Okabe
 
ATS Programming Tutorial
ATS Programming TutorialATS Programming Tutorial
ATS Programming TutorialKiwamu Okabe
 
Real-time OS system state captured by ATS language
Real-time OS system state captured by ATS languageReal-time OS system state captured by ATS language
Real-time OS system state captured by ATS languageKiwamu Okabe
 
Metasepi team meeting #20: Start! ATS programming on MCU
Metasepi team meeting #20: Start! ATS programming on MCUMetasepi team meeting #20: Start! ATS programming on MCU
Metasepi team meeting #20: Start! ATS programming on MCUKiwamu Okabe
 
ATS language overview'
ATS language overview'ATS language overview'
ATS language overview'Kiwamu Okabe
 
Static typing and proof in ATS language
Static typing and proof in ATS languageStatic typing and proof in ATS language
Static typing and proof in ATS languageKiwamu Okabe
 
SAT/SMTソルバの仕組み
SAT/SMTソルバの仕組みSAT/SMTソルバの仕組み
SAT/SMTソルバの仕組みMasahiro Sakai
 
Alloy Analyzer のこと
Alloy Analyzer のことAlloy Analyzer のこと
Alloy Analyzer のことHiromi Ishii
 

Viewers also liked (20)

Alloyへの挑戦
Alloyへの挑戦Alloyへの挑戦
Alloyへの挑戦
 
Alloy ではじめる簡単モデル検査
Alloy ではじめる簡単モデル検査Alloy ではじめる簡単モデル検査
Alloy ではじめる簡単モデル検査
 
Arduino programming of ML-style in ATS
Arduino programming of ML-style in ATSArduino programming of ML-style in ATS
Arduino programming of ML-style in ATS
 
ATS language overview
ATS language overviewATS language overview
ATS language overview
 
Metasepi team meeting #17: Invariant captured by ATS's API
Metasepi team meeting #17: Invariant captured by ATS's APIMetasepi team meeting #17: Invariant captured by ATS's API
Metasepi team meeting #17: Invariant captured by ATS's API
 
ATS/LF for Coq users
ATS/LF for Coq usersATS/LF for Coq users
ATS/LF for Coq users
 
Embedded application designed by ATS language
Embedded application designed by ATS languageEmbedded application designed by ATS language
Embedded application designed by ATS language
 
Metasepi team meeting #14: ATS programming on MCU
Metasepi team meeting #14: ATS programming on MCUMetasepi team meeting #14: ATS programming on MCU
Metasepi team meeting #14: ATS programming on MCU
 
Start! ATS programming
Start! ATS programmingStart! ATS programming
Start! ATS programming
 
ATS programming on ESP8266
ATS programming on ESP8266ATS programming on ESP8266
ATS programming on ESP8266
 
ATSプログラミングチュートリアル
ATSプログラミングチュートリアルATSプログラミングチュートリアル
ATSプログラミングチュートリアル
 
Metasepi team meeting #19: ATS application on Arduino
Metasepi team meeting #19: ATS application on ArduinoMetasepi team meeting #19: ATS application on Arduino
Metasepi team meeting #19: ATS application on Arduino
 
Metasepi team meeting #16: Safety on ATS language + MCU
Metasepi team meeting #16: Safety on ATS language + MCUMetasepi team meeting #16: Safety on ATS language + MCU
Metasepi team meeting #16: Safety on ATS language + MCU
 
ATS Programming Tutorial
ATS Programming TutorialATS Programming Tutorial
ATS Programming Tutorial
 
Real-time OS system state captured by ATS language
Real-time OS system state captured by ATS languageReal-time OS system state captured by ATS language
Real-time OS system state captured by ATS language
 
Metasepi team meeting #20: Start! ATS programming on MCU
Metasepi team meeting #20: Start! ATS programming on MCUMetasepi team meeting #20: Start! ATS programming on MCU
Metasepi team meeting #20: Start! ATS programming on MCU
 
ATS language overview'
ATS language overview'ATS language overview'
ATS language overview'
 
Static typing and proof in ATS language
Static typing and proof in ATS languageStatic typing and proof in ATS language
Static typing and proof in ATS language
 
SAT/SMTソルバの仕組み
SAT/SMTソルバの仕組みSAT/SMTソルバの仕組み
SAT/SMTソルバの仕組み
 
Alloy Analyzer のこと
Alloy Analyzer のことAlloy Analyzer のこと
Alloy Analyzer のこと
 

More from 啓 小笠原

自前言語を仕事に使う話
自前言語を仕事に使う話自前言語を仕事に使う話
自前言語を仕事に使う話啓 小笠原
 
Alloy論理データモデル
Alloy論理データモデルAlloy論理データモデル
Alloy論理データモデル啓 小笠原
 
函数プログラミングの エッセンスと考え方
函数プログラミングのエッセンスと考え方函数プログラミングのエッセンスと考え方
函数プログラミングの エッセンスと考え方啓 小笠原
 
線形型のある言語でLEDを光らせる
線形型のある言語でLEDを光らせる線形型のある言語でLEDを光らせる
線形型のある言語でLEDを光らせる啓 小笠原
 
ぱわわっぷOCaml
ぱわわっぷOCamlぱわわっぷOCaml
ぱわわっぷOCaml啓 小笠原
 
関数型言語&形式的手法セミナー(3)
関数型言語&形式的手法セミナー(3)関数型言語&形式的手法セミナー(3)
関数型言語&形式的手法セミナー(3)啓 小笠原
 
GADTブランチの今
GADTブランチの今GADTブランチの今
GADTブランチの今啓 小笠原
 

More from 啓 小笠原 (9)

自前言語を仕事に使う話
自前言語を仕事に使う話自前言語を仕事に使う話
自前言語を仕事に使う話
 
Alloy論理データモデル
Alloy論理データモデルAlloy論理データモデル
Alloy論理データモデル
 
函数プログラミングの エッセンスと考え方
函数プログラミングのエッセンスと考え方函数プログラミングのエッセンスと考え方
函数プログラミングの エッセンスと考え方
 
線形型のある言語でLEDを光らせる
線形型のある言語でLEDを光らせる線形型のある言語でLEDを光らせる
線形型のある言語でLEDを光らせる
 
Alloy analyzer
Alloy analyzerAlloy analyzer
Alloy analyzer
 
Alloy Analyzer LT
Alloy Analyzer LTAlloy Analyzer LT
Alloy Analyzer LT
 
ぱわわっぷOCaml
ぱわわっぷOCamlぱわわっぷOCaml
ぱわわっぷOCaml
 
関数型言語&形式的手法セミナー(3)
関数型言語&形式的手法セミナー(3)関数型言語&形式的手法セミナー(3)
関数型言語&形式的手法セミナー(3)
 
GADTブランチの今
GADTブランチの今GADTブランチの今
GADTブランチの今
 

Recently uploaded

Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Danieldanielhu54
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A surveyToru Tamaki
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdftaisei2219
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNetToru Tamaki
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...Toru Tamaki
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 

Recently uploaded (9)

Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 

レイトン教授で始める Alloy Analyzer入門