Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
introducing-formal-methods
Search
rrreeeyyy
June 09, 2016
Technology
270
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
introducing-formal-methods
hbstyle-2016-06-09
rrreeeyyy
June 09, 2016
More Decks by rrreeeyyy
See All by rrreeeyyy
Reliability in the Age of AI: Engineering for AI Velocity
rrreeeyyy
0
160
Rethinking Incident Response: Context-Aware AI in Practice - Incident Buddy Edition -
rrreeeyyy
0
250
Rethinking Incident Response: Context-Aware AI in Practice
rrreeeyyy
3
2.5k
Incident Response Practices: Waroom's Features and Future Challenges
rrreeeyyy
0
310
An Efficient Incident Response Training with AI / SRE NEXT 2024 Sponsor Session
rrreeeyyy
1
6.2k
カンファレンスから見る SRE トレンド 2024 / SRE Trends from Conferences in 2024 #SRE_Findy
rrreeeyyy
4
2.6k
信頼性の育て方 / mackerel-meetup-15
rrreeeyyy
10
3k
SRE の歩き方・進め方 / sre-walk-through-procedure
rrreeeyyy
0
9k
「信頼性」を保ちつつ大規模サービスをリニューアルする / cookpad-tech-kitchen-service-embedded-sres
rrreeeyyy
11
13k
Other Decks in Technology
See All in Technology
デジタル・デザイン構想 by Sayaka Ishizuka
y150saya
0
200
AWS Blocks を触ってみた/first-tach-aws-blocks
fossamagna
2
150
知らん間に、回ってる
ming_ayami
0
310
地域 SRE コミュニティ最前線 / SRE NEXT 2026 Discussion Night Track C
muziyoshiz
0
150
Claude Codeとハーネスについて考えてみる
oikon48
18
8.7k
記録をかんたんに、提案をパーソナルに ── AIであすけんが目指すもの
oprstchn
0
170
生成AI活用によるODC欠陥分析の分類高速化の実践と導入効果 / 20260703 Suguru Ishii
shift_evolve
PRO
2
100
AWS Summit の片隅で、体育座りしながらコミュニティがにぎわう理由を考えた
k_adachi_01
2
360
Baseline対応のDOMの型定義を作った
uhyo
3
720
AI時代のエンジニアキャリアについて今一度考える
sakamoto_582
2
1.3k
実装だけじゃない! CCA-F取得エンジニアが教えるClaude Code開発プロセス活用術
diggymo
2
430
AI駆動開発におけるQAエンジニアの役割事例 〜AI駆動開発の現場から〜
kobayashiyorimitsu
0
390
Featured
See All Featured
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
1
270
End of SEO as We Know It (SMX Advanced Version)
ipullrank
3
4.3k
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.6k
Utilizing Notion as your number one productivity tool
mfonobong
4
340
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
1
1.5k
How GitHub (no longer) Works
holman
316
150k
Code Review Best Practice
trishagee
74
20k
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
1
1.9k
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
65
56k
Reflections from 52 weeks, 52 projects
jeffersonlam
356
21k
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
3
890
Build your cross-platform service in a week with App Engine
jlugia
234
18k
Transcript
ܗࣜख๏(formal-methods)ೖ hbstyle 2016/06/09 - Yoshikawa Ryota ( @rrreeeyyy ) 1
ܗࣜख๏(formal-methods) • ֶΛج൫ͱͨ͠ιϑτΣΞͷ༷هड़ɾ։ൃɾݕূͷٕज़ • ଞͷֶ(ػցֶͱ͔Ͷ)ಉ༷ʹֶతղੳΛใֶͰग़དྷΔʁ • ઃܭͷ৴པੑɾݎ࿚ੑͷ্Λతͱ͍ͯ͠Δ • ܗࣜݴޠɾཧཧֶɾܕγεςϜɾతσʔλܕͳͲΛ༻ •
͜ͷลͷ͜ͱʹڵຯ͕͋Δ • ֶ෦࣌ʹ TaPL 1 ͱ͍͏ຊΛྠಡͨ͠ܦݧΑΓ • ݎ࿚Ͱґଘੑͷඇৗʹߴ͍γεςϜ(ۜߦͱ͔ߤۭػͱ͔ϩέοτͱ͔)ͰΑ͘༻͍ΒΕΔ • NASA/AWS/FeliCa/TradeOne(ূ݊)/SHOLIS(ߤۭ) [^2] • ۙͳͱ͜ΖͰݴ͑ CCS Injection(OpenSSL) ͷ੬ऑੑͳΜ͔ 1 https://www.cis.upenn.edu/~bcpierce/tapl/ [^2]: http://www.ipa.go.jp/files/000026875.pdf hbstyle 2016/06/09 - Yoshikawa Ryota ( @rrreeeyyy ) 2
ܗࣜख๏ͷछྨ • Ͳͷਫ४ͰΔ͔ɺͱ͍͏ͷ͕େ͖͚ͯ͘ 3 ͭ • ܗ༷ࣜهड़ (Formal specification) •
ܗࣜత։ൃ͓Αͼݕূ (Formal development and formal verification) • ࣗಈݕূ (Theorem provers) • Ξϓϩʔν͕େ͖͚ͯ͘ 2 ͭ • ఆཧূ໌ (Explicit Model Checker) • Ϟσϧݕࠪ (Symbolic Model Checker) hbstyle 2016/06/09 - Yoshikawa Ryota ( @rrreeeyyy ) 3
ܗࣜख๏ͷਫ४ • ܗ༷ࣜهड़ (Formal specification) • ܗࣜख๏Λ༻͍༷ͯΛهड़͢Δ • ϓϩάϥϜͷ։ൃࣗମܗࣜख๏ͱরΒ͠߹Θͤͳ͕Βߦ͏ •
ܗࣜత։ൃ͓Αͼݕূ (Formal development and formal verification) • ܗࣜख๏Λ༻͍༷ͯΛهड़͢Δ(B-method3 ͳͲ) • هड़༷ͨ͠ΛߋʹৄࡉԽ͍͖ͯ͠ϓϩάϥϜΛ࡞͢ΔͳͲ • ࣗಈݕূ (Theorem provers) • ࣗಈఆཧূ໌ʹͯػցతͳূ໌Λߦ͏ • ఆཧΛ༩͑ΔͱϓϩάϥϜ͕ؤுͬͯূ໌ͯ͘͠ΕΔΑ͏ͳͷ 3 ύϦͷϝτϩ 14 ߸ઢͳͲͰΘΕ͍ͯΔΒ͍͠ hbstyle 2016/06/09 - Yoshikawa Ryota ( @rrreeeyyy ) 4
ܗࣜख๏ͷΞϓϩʔν • ఆཧূ໌ • γεςϜΛཧࣜͷू߹ͱͯ͠هड़͢Δ • ཧࣜΛެཧͱਪنଇʹͱ͍ͮͯূ໌͍ͯ͘͠ • େମͷ߹ͰࣗಈͰূ໌Ͱ͖ͳ͍ͷͰਓ͕ؒࢧԉ͠ͳ͕Βূ໌͢Δ •
B-method ͳͲ͕༗໊ • Ϟσϧݕࠪ • ରͱ͢ΔγεςϜΛঢ়ଶભҠਤͰϞσϧԽ • ࣌૬ཧࣜ4ͱݺΕΔࣜͰੑ࣭Λهड़ • ঢ়ଶભҠͷঢ়ଶΛཏ୳ࡧͯ࣌͠૬ཧࣜΛຬ͔ͨ͢ݕࠪ͢Δ • SPIN ͳͲ͕༗໊ 4 ࣌ؒͱͷؔͰมԽ͢Δঢ়ଶΛهड़͢Δཧࣜͷ͜ͱ hbstyle 2016/06/09 - Yoshikawa Ryota ( @rrreeeyyy ) 5
ܰྔͳܗࣜख๏ • ܗࣜख๏͍͠ • ϞσϧݕࠪΈ߹Θͤരൃ͕ى͖Δ • ఆཧূ໌େମͷ߹ͰࣗಈͰূ໌Ͱ͖ͳ͍ • ιϑτΣΞͷҰ෦ͷঢ়ଶΛཏతʹݕࠪ͢Δ •
΄ͱΜͲͷܽؕɺখ͍͞୳ࡧൣғͰ͋ͬͯྫͱͯ͠ൃݟ͞ΕΔ (Small Scope Hypothesis) • ࠷ܽؕͷى͖ͦ͏ͳॴΛूதతʹݕࠪ͢Δͷ͕ྑ͍ͩΖ͏ͱ͍͏ൃ (Daniel Jackson) • Alloy Analyzer ͳͲ͕༗໊ • ΠϯϑϥߏͰܗࣜख๏ΛऔΓೖΕΑ͏ͱ͢Δਓ͍Δ 5 5 http://ccvanishing.hateblo.jp/entry/2016/06/06/051120 hbstyle 2016/06/09 - Yoshikawa Ryota ( @rrreeeyyy ) 6
AWS ͷྫ • AWS Ͱ 2011 ͔Βܗࣜख๏Λ࠾༻͍ͯ͠Δ 6 • ࢄγεςϜͷΞϧΰϦζϜઃܭͳͲ
• DynamoDB/S3/EBS ͳͲ • AWS Ͱ TLA+ ͱ͍͏ͷΛͬͯܗࣜख๏Λѻ͍ͬͯΔ • ࠷ॳʹ༗༻ੑ͕࣮ূ͞Εͨͷ DynamoDB • େମೋि͙ؒΒ͍Ͱ TLA+ ͰΞϧΰϦζϜ͕ॻ͚ͨΒ͍͠ • ݕূ༷ͯ͠ʑͳোύλʔϯͷચ͍ग़͠ʹޭ • DynamoDB ͷޭΛड͚ͯ S3/EBS ͳͲͰܗࣜख๏͕औΓೖΕΒΕΔ 6 How Amazon web services uses formal methods: http://dl.acm.org/citation.cfm?id=2749359.2699417 hbstyle 2016/06/09 - Yoshikawa Ryota ( @rrreeeyyy ) 7
Raft Λ TLA+ Ͱهड़ͨ͠ྫ • https://github.com/ongardie/raft.tla/blob/master/raft.tla CONSTANTS RequestVoteRequest, RequestVoteResponse, AppendEntriesRequest,
AppendEntriesResponse Quorum == {i \in SUBSET(Server) : Cardinality(i) * 2 > Cardinality(Server)} InitHistoryVars == /\ elections = {} /\ allLogs = {} /\ voterLog = [i \in Server |-> [j \in {} |-> <<>>]] InitServerVars == /\ currentTerm = [i \in Server |-> 1] /\ state = [i \in Server |-> Follower] /\ votedFor = [i \in Server |-> Nil] InitCandidateVars == /\ votesResponded = [i \in Server |-> {}] /\ votesGranted = [i \in Server |-> {}] hbstyle 2016/06/09 - Yoshikawa Ryota ( @rrreeeyyy ) 8
ܕγεςϜฒྻॲཧͱ͔ͷྫ • ܕγεςϜ: ू߹ͱͯ͠ߟ͑Δ • ܕ(Int ͱ͔)ू߹ɾͦͷܕʹॴଐ͢Δมू߹ཁૉ • ܭࢉϞσϧ: ϥϜμܭࢉͱ͍͏ܭࢉܕΛ͏
• (͜Ε Python ͷ lambda x: x ͷҙຯ) • ฒߦܭࢉϞσϧ: πܭࢉͳͲͷܭࢉܕΛ͏ • (͜Ενϟωϧ x ʹ ΛૹΔͱ͍͏ҙຯ) hbstyle 2016/06/09 - Yoshikawa Ryota ( @rrreeeyyy ) 9
·ͱΊ • ܗࣜख๏ʹೖͨ͠ • ΑΓ҆શͰݎ࿚ͳιϑτΣΞΛ࡞Δʹܗࣜख๏͕༗ޮͰ͋Δ • ݱঢ়͗͢͠Δ͕ʑͷۀͳͲʹద༻Ͱ͖ΔͷͰʁ • ιϑτΣΞςετͰঢ়ଶΛͯ͢ཏ͢Δͷ͍͠ •
ܕγεςϜϥϜμܭࢉπܭࢉීஈͷϓϩάϥϛϯάͱؔ࿈͍ͯͯ͠໘ന͍ • ͳͥ Rust ܕ҆શͱ͞Ε͍ͯΔͷ͔ʁͳͥ C ܕ҆શͰͳ͍ͷ͔ʁ • ͬͱܗࣜख๏͕؆୯ʹͳΕ͍͍ͳ͋ͱࢥ͍ͬͯΔ hbstyle 2016/06/09 - Yoshikawa Ryota ( @rrreeeyyy ) 10
ࢀߟࢿྉ • http://dl.acm.org/citation.cfm?id=2749359.2699417 • http://research.microsoft.com/en-us/um/people/lamport/tla/ amazon.html • https://brooker.co.za/blog/2014/08/09/formal-methods.html • http://brooker.co.za/blog/2015/03/29/formal.html
• https://www.infoq.com/presentations/aws-testing-tla • http://perspectives.mvdirona.com/2014/07/challenges-in-designing- at-scale-formal-methods-in-building-robust-distributed-systems/ hbstyle 2016/06/09 - Yoshikawa Ryota ( @rrreeeyyy ) 11