Upgrade to PRO for Only $50/Yearโ€”Limited-Time Offer! ๐Ÿ”ฅ

Symbolic model checker from scratch in Rust

Avatar for r1ru r1ru
August 13, 2024
890

Symbolic model checker from scratch inย Rust

Avatar for r1ru

r1ru

August 13, 2024
Tweet

Transcript

  1. Symbolic model checker from scratch in Rust Riru Oda @ri5255

    Kernel/VMๆŽขๆคœ้šŠ@ๆฑไบฌ No17 1
  2. 4 ใƒขใƒ‡ใƒซๆคœๆŸปใจใฏ? ไพ‹) 2ใคใฎใ‚นใƒฌใƒƒใƒ‰p, qใŒไธ€ใคใฎๅ…ฑๆœ‰ๅค‰ๆ•ฐxใ‚’่ชญใฟๆ›ธใใ™ใ‚‹ While (true) { x =

    x + 1; x = x โ€“ 1; } ไป•ๆง˜: ๐ด๐บ(๐‘ฅ < 2) ๅ…จใฆ(All)ใฎๅฎŸ่กŒใƒ‘ใ‚นใงๅธธใซ(Globally) x < 2ใŒๆˆใ‚Š็ซ‹ใค
  3. 5 ใƒขใƒ‡ใƒซๆคœๆŸปใจใฏ? ไพ‹) 2ใคใฎใ‚นใƒฌใƒƒใƒ‰p, qใŒไธ€ใคใฎๅ…ฑๆœ‰ๅค‰ๆ•ฐxใ‚’่ชญใฟๆ›ธใใ™ใ‚‹ While (true) { x =

    x + 1; x = x โ€“ 1; } ไป•ๆง˜: ๐ด๐บ(๐‘ฅ < 2) ๅ…จใฆ(All)ใฎๅฎŸ่กŒใƒ‘ใ‚นใงๅธธใซ(Globally) x < 2ใŒๆˆใ‚Š็ซ‹ใค
  4. CTL (Computation Tree Logic) โ€ข ๐‘ โˆˆ ๐ด๐‘ƒ ใฏCTL่ซ–็†ๅผ โ€ข

    ๐‘“ ใŒCTL่ซ–็†ๅผใชใ‚‰ใฐยฌ๐‘“, ๐ด๐‘‹ ๐‘“, ๐ธ๐‘‹ ๐‘“, ๐ด๐น ๐‘“, ๐ธ๐น ๐‘“, ๐ด๐บ ๐‘“, ๐ธ๐บ ๐‘“ใฏCTL่ซ–็†ๅผ โ€ข ๐‘“ ใจ ๐‘” ใŒ CTL่ซ–็†ๅผใชใ‚‰ใฐ๐‘“ โˆง ๐‘”, ๐‘“ โˆจ ๐‘”, ๐ด ๐‘“ ๐‘ˆ ๐‘” , ๐ธ ๐‘“ ๐‘ˆ ๐‘” , ๐ด ๐‘“ ๐‘… ๐‘” , ๐ธ (๐‘“ ๐‘…๐‘”) ใฏCTL่ซ–็†ๅผ ๐‘€, ๐‘ 0 โŠจ ๐ธ๐‘‹ ๐‘“ ๐‘€, ๐‘ 0 โŠจ ๐ด๐บ ๐‘“ ๐‘€, ๐‘ 0 โŠจ ๐ธ(๐‘“ ๐‘ˆ ๐‘”) 10
  5. CTL Model Checking via Fixpoint Computation 14 ไพ‹: E(p U

    q)ใ‚’ๆบ€ใŸใ™็Šถๆ…‹ใฏ?
  6. CTL Model Checking via Fixpoint Computation 15 ไพ‹: E(p U

    q)ใ‚’ๆบ€ใŸใ™็Šถๆ…‹ใฏ?
  7. CTL Model Checking via Fixpoint Computation 16 ไพ‹: E(p U

    q)ใ‚’ๆบ€ใŸใ™็Šถๆ…‹ใฏ?
  8. CTL Model Checking via Fixpoint Computation 17 ไพ‹: E(p U

    q)ใ‚’ๆบ€ใŸใ™็Šถๆ…‹ใฏ?
  9. CTL Model Checking via Fixpoint Computation ๅฝขๅผๅŒ– ๐œ ๐‘ =

    ๐‘ž โˆจ (๐‘ โˆง ๐ธ๐‘‹ ๐‘ ) ๐‘†๐‘Ž๐‘ก ๐ธ ๐‘ ๐‘ˆ ๐‘ž = ๐ฟ๐‘“๐‘ ๐œ 18
  10. CTL Model Checking via Fixpoint Computation ๅฝขๅผๅŒ– ๐œ ๐‘ =

    ๐‘ž โˆจ (๐‘ โˆง ๐ธ๐‘‹ ๐‘ ) ๐‘†๐‘Ž๐‘ก ๐ธ ๐‘ ๐‘ˆ ๐‘ž = ๐ฟ๐‘“๐‘ ๐œ 19 ๐œ โˆ… = ๐‘ž โˆจ ๐‘ โˆง ๐ธ๐‘‹ โˆ… = ๐‘ž = {๐‘ 1}
  11. CTL Model Checking via Fixpoint Computation ๅฝขๅผๅŒ– ๐œ ๐‘ =

    ๐‘ž โˆจ (๐‘ โˆง ๐ธ๐‘‹ ๐‘ ) ๐‘†๐‘Ž๐‘ก ๐ธ ๐‘ ๐‘ˆ ๐‘ž = ๐ฟ๐‘“๐‘ ๐œ ๐œ โˆ… = {๐‘ 1} 20 ๐œ(๐œ(โˆ…)) = ๐‘ž โˆจ (๐‘ โˆง ๐ธ๐‘‹ ๐‘ 1 ) = {๐‘ 1, ๐‘ 2}
  12. CTL Model Checking via Fixpoint Computation ๅฝขๅผๅŒ– ๐œ ๐‘ =

    ๐‘ž โˆจ (๐‘ โˆง ๐ธ๐‘‹ ๐‘ ) ๐‘†๐‘Ž๐‘ก ๐ธ ๐‘ ๐‘ˆ ๐‘ž = ๐ฟ๐‘“๐‘ ๐œ ๐œ โˆ… = {๐‘ 1} ๐œ ๐œ โˆ… = {๐‘ 1, ๐‘ 2} ๐œ(๐œ(๐œ(โˆ…))) = {๐‘ 1, ๐‘ 2, ๐‘ 3} 21
  13. CTL Model Checking via Fixpoint Computation Theorem (Tarski-Knaster) Let ๐œ

    be a predicate transformer on ๐‘ƒ ๐‘† . Then if ๐œ is monotonic it has a greatest and least fixpoint. Lemma If ๐œ is monotonic and S is finite, then threre is an integer ๐‘–0 such that ๐บ๐‘“๐‘ ๐œ = ๐œ๐‘–0(๐‘†) and ๐ฟ๐‘“๐‘ ๐œ = ๐œ๐‘–0(โˆ…). Correctness 22
  14. CTL Model Checking via Fixpoint Computation Theorem (Tarski-Knaster) Let ๐œ

    be a predicate transformer on ๐‘ƒ ๐‘† . Then if ๐œ is monotonic it has a greatest and least fixpoint. Lemma If ๐œ is monotonic and S is finite, then threre is an integer ๐‘–0 such that ๐บ๐‘“๐‘ ๐œ = ๐œ๐‘–0(๐‘†) and ๐ฟ๐‘“๐‘ ๐œ = ๐œ๐‘–0(โˆ…). Correctness 23 ๐ธ๐‘‹ใ‚„โˆจ, โˆง ใฏใฉใ†ใ‚„ใฃใฆๅฎŸ่ฃ…ใ™ใ‚‹๏ผŸ ๐œ ๐‘ = ๐‘ž โˆจ (๐‘ โˆง ๐ธ๐‘‹ ๐‘ )
  15. Symbolic Representation of Kripke Structures 25 ๐‘† = ยฌ๐‘ฅ0 โˆจ

    ๐‘ฅ0 ๐‘… = ยฌ๐‘ฅ0 โˆง ๐‘ฅ0โ€ฒ โˆจ ๐‘ฅ0 โˆง ยฌ๐‘ฅ0โ€ฒ ๐‘ž = ยฌ๐‘ฅ0 ๐‘ = ๐‘ฅ0 Symbolic Representation
  16. Symbolic Representation of Kripke Structures 26 ๐‘… = ยฌ๐‘ฅ0 โˆง

    ๐‘ฅ0โ€ฒ โˆจ ๐‘ฅ0 โˆง ยฌ๐‘ฅ0โ€ฒ ๐‘ž = ยฌ๐‘ฅ0 ๐‘ = ๐‘ฅ0 Symbolic Representation โ€ข 2ใคใฎ็Šถๆ…‹ใ‚’่กจใ™ใŸใ‚ใซ1ใคใฎใƒ–ใƒผใƒซๅค‰ๆ•ฐ๐‘ฅ0 ใ‚’ๅฐŽๅ…ฅ โ€ข s0ใ‚’ยฌ๐‘ฅ0, s1ใ‚’๐‘ฅ0ใง่กจ็พใ™ใ‚‹ โ€ข ้ท็งปๅพŒใฎ็Šถๆ…‹ใ‚’่กจ็พใ™ใ‚‹ใŸใ‚ใซๆ–ฐใ—ใ„ใƒ–ใƒผใƒซๅค‰ๆ•ฐ๐‘ฅ0โ€ฒใ‚’ๅฐŽๅ…ฅ Idea ๐‘† = ยฌ๐‘ฅ0 โˆจ ๐‘ฅ0
  17. Symbolic Representation of Kripke Structures 27 ๐‘… = ยฌ๐‘ฅ0 โˆง

    ๐‘ฅ0โ€ฒ โˆจ ๐‘ฅ0 โˆง ยฌ๐‘ฅ0โ€ฒ ๐‘ž = ยฌ๐‘ฅ0 ๐‘ = ๐‘ฅ0 Symbolic Representation โ€ข 2ใคใฎ็Šถๆ…‹ใ‚’่กจใ™ใŸใ‚ใซ1ใคใฎใƒ–ใƒผใƒซๅค‰ๆ•ฐ๐‘ฅ0 ใ‚’ๅฐŽๅ…ฅ โ€ข s0ใ‚’ยฌ๐‘ฅ0, s1ใ‚’๐‘ฅ0ใง่กจ็พใ™ใ‚‹ โ€ข ้ท็งปๅพŒใฎ็Šถๆ…‹ใ‚’่กจ็พใ™ใ‚‹ใŸใ‚ใซๆ–ฐใ—ใ„ใƒ–ใƒผใƒซๅค‰ๆ•ฐ๐‘ฅ0โ€ฒใ‚’ๅฐŽๅ…ฅ Idea ๐ธ๐‘‹,โˆจ,โˆง ใ‚’่ซ–็†ๅผใซๅฏพใ™ใ‚‹ๆ“ไฝœใจใ—ใฆๅฎŸ่ฃ…ใงใใ‚‹ ไพ‹: ๐‘†๐‘Ž๐‘ก(๐ธ๐‘‹ ๐‘“ ) = โˆƒ๐‘ฃโ€ฒ[ ๐‘“ ๐‘ฃโ€ฒ โˆง ๐‘… ๐‘ฃ, ๐‘ฃโ€ฒ ] ๐‘† = ยฌ๐‘ฅ0 โˆจ ๐‘ฅ0
  18. Symbolic Model Checking ไพ‹: E(p U q)ใ‚’ๆบ€ใŸใ™็Šถๆ…‹ใฏ? Note โ€ข ๐‘†๐‘Ž๐‘ก

    ๐ธ ๐‘ ๐‘ˆ ๐‘ž = ๐ฟ๐‘“๐‘ ๐œ where ๐œ ๐‘ = ๐‘ž โˆจ ๐‘ โˆง ๐ธ๐‘‹ ๐‘ โ€ข ๐‘†๐‘Ž๐‘ก(๐ธ๐‘‹ ๐‘“ ) = โˆƒ๐‘ฃโ€ฒ[ ๐‘“ ๐‘ฃโ€ฒ โˆง ๐‘… ๐‘ฃ, ๐‘ฃโ€ฒ ] 28 ๐‘† = ยฌ๐‘ฅ0 โˆจ ๐‘ฅ0 ๐‘… = ยฌ๐‘ฅ0 โˆง ๐‘ฅ0โ€ฒ โˆจ ๐‘ฅ0 โˆง ยฌ๐‘ฅ0โ€ฒ ๐‘ž = ยฌ๐‘ฅ0 ๐‘ = ๐‘ฅ0 Symbolic Representation
  19. Symbolic Model Checking ไพ‹: E(p U q)ใ‚’ๆบ€ใŸใ™็Šถๆ…‹ใฏ? Note โ€ข ๐‘†๐‘Ž๐‘ก

    ๐ธ ๐‘ ๐‘ˆ ๐‘ž = ๐ฟ๐‘“๐‘ ๐œ where ๐œ ๐‘ = ๐‘ž โˆจ ๐‘ โˆง ๐ธ๐‘‹ ๐‘ โ€ข ๐‘†๐‘Ž๐‘ก(๐ธ๐‘‹ ๐‘“ ) = โˆƒ๐‘ฃโ€ฒ[ ๐‘“ ๐‘ฃโ€ฒ โˆง ๐‘… ๐‘ฃ, ๐‘ฃโ€ฒ ] 29 ๐‘… = ยฌ๐‘ฅ0 โˆง ๐‘ฅ0โ€ฒ โˆจ ๐‘ฅ0 โˆง ยฌ๐‘ฅ0โ€ฒ ๐‘ž = ยฌ๐‘ฅ0 ๐‘ = ๐‘ฅ0 Symbolic Representation ๐œ โˆ… = ยฌ๐‘ฅ0 ๐œ(โˆ…) = ยฌ๐‘ฅ0 โˆจ ๐‘ฅ0 โˆง ๐ธ๐‘‹(๐‘“๐‘Ž๐‘™๐‘ ๐‘’ ) = ยฌ๐‘ฅ0 ๐‘† = ยฌ๐‘ฅ0 โˆจ ๐‘ฅ0
  20. Symbolic Model Checking ไพ‹: E(p U q)ใ‚’ๆบ€ใŸใ™็Šถๆ…‹ใฏ? Note โ€ข ๐‘†๐‘Ž๐‘ก

    ๐ธ ๐‘ ๐‘ˆ ๐‘ž = ๐ฟ๐‘“๐‘ ๐œ where ๐œ ๐‘ = ๐‘ž โˆจ ๐‘ โˆง ๐ธ๐‘‹ ๐‘ โ€ข ๐‘†๐‘Ž๐‘ก(๐ธ๐‘‹ ๐‘“ ) = โˆƒ๐‘ฃโ€ฒ[ ๐‘“ ๐‘ฃโ€ฒ โˆง ๐‘… ๐‘ฃ, ๐‘ฃโ€ฒ ] 30 ๐‘… = ยฌ๐‘ฅ0 โˆง ๐‘ฅ0โ€ฒ โˆจ ๐‘ฅ0 โˆง ยฌ๐‘ฅ0โ€ฒ ๐‘ž = ยฌ๐‘ฅ0 ๐‘ = ๐‘ฅ0 Symbolic Representation ๐œ โˆ… = ยฌ๐‘ฅ0 ๐œ(๐œ โˆ… ) = ยฌ๐‘ฅ0 โˆจ ๐‘ฅ0 ๐œ ๐œ โˆ… = ยฌ๐‘ฅ0 โˆจ ๐‘ฅ0 โˆง ๐ธ๐‘‹ ๐œ โˆ… = ยฌ๐‘ฅ0 โˆจ ๐‘ฅ0 โˆง โˆƒ๐‘ฅ0โ€ฒ[ยฌ๐‘ฅ0โ€ฒ โˆง ( ยฌ๐‘ฅ0 โˆง ๐‘ฅ0โ€ฒ โˆจ (๐‘ฅ0 โˆง ยฌ๐‘ฅ0โ€ฒ)] ) = ยฌ๐‘ฅ0 โˆจ ๐‘ฅ0 ๐‘† = ยฌ๐‘ฅ0 โˆจ ๐‘ฅ0
  21. Symbolic Model Checking ไพ‹: E(p U q)ใ‚’ๆบ€ใŸใ™็Šถๆ…‹ใฏ? Note โ€ข ๐‘†๐‘Ž๐‘ก

    ๐ธ ๐‘ ๐‘ˆ ๐‘ž = ๐ฟ๐‘“๐‘ ๐œ where ๐œ ๐‘ = ๐‘ž โˆจ ๐‘ โˆง ๐ธ๐‘‹ ๐‘ โ€ข ๐‘†๐‘Ž๐‘ก(๐ธ๐‘‹ ๐‘“ ) = โˆƒ๐‘ฃโ€ฒ[ ๐‘“ ๐‘ฃโ€ฒ โˆง ๐‘… ๐‘ฃ, ๐‘ฃโ€ฒ ] 31 ๐‘… = ยฌ๐‘ฅ0 โˆง ๐‘ฅ0โ€ฒ โˆจ ๐‘ฅ0 โˆง ยฌ๐‘ฅ0โ€ฒ ๐‘ž = ยฌ๐‘ฅ0 ๐‘ = ๐‘ฅ0 Symbolic Representation ๐œ โˆ… = ยฌ๐‘ฅ0 ๐œ(๐œ โˆ… ) = ยฌ๐‘ฅ0 โˆจ ๐‘ฅ0 ๐‘† = ยฌ๐‘ฅ0 โˆจ ๐‘ฅ0 ่ซ–็†ๅผใ‚’่กจ็พใ™ใ‚‹ใƒ‡ใƒผใ‚ฟๆง‹้€ ใฏ? ๐œ ๐œ โˆ… = ยฌ๐‘ฅ0 โˆจ ๐‘ฅ0 โˆง ๐ธ๐‘‹ ๐œ โˆ… = ยฌ๐‘ฅ0 โˆจ ๐‘ฅ0 โˆง โˆƒ๐‘ฅ0โ€ฒ[ยฌ๐‘ฅ0โ€ฒ โˆง ( ยฌ๐‘ฅ0 โˆง ๐‘ฅ0โ€ฒ โˆจ (๐‘ฅ0 โˆง ยฌ๐‘ฅ0โ€ฒ)] ) = ยฌ๐‘ฅ0 โˆจ ๐‘ฅ0
  22. OBDD(Ordered Binary Decision Diagram) 34 ไพ‹: ๐‘ฅ0 โˆจ ๐‘ฅ1 BDT(Binary

    Decision Tree) OBDD Theorem (Bryant[1]) For any Boolean function ๐‘“ , there is a unique OBDD denoting ๐‘“
  23. OBDD(Ordered Binary Decision Diagram) 35 ไพ‹: ๐‘ฅ0 โˆจ ๐‘ฅ1 BDT(Binary

    Decision Tree) OBDD Theorem (Bryant[1]) For any Boolean function ๐‘“ , there is a unique OBDD denoting ๐‘“
  24. OBDD(Ordered Binary Decision Diagram) 36 ไพ‹: ๐‘ฅ0 โˆจ ๐‘ฅ1 BDT(Binary

    Decision Tree) OBDD Theorem (Bryant[1]) For any Boolean function ๐‘“ , there is a unique OBDD denoting ๐‘“ ๐ธ๐‘‹,โˆจ,โˆงใ‚’OBDDใ‚’็”จใ„ใฆๅฎŸ่ฃ…ใ™ใ‚‹ใ“ใจใŒใงใใ‚‹!
  25. Implementation in Rust 38 ๐œ ๐‘ = ๐‘“2 โˆจ ๐‘“1

    โˆง ๐ธ๐‘‹ ๐‘ ๐‘†๐‘Ž๐‘ก ๐ธ ๐‘“1 ๐‘ˆ ๐‘“2 = ๐ฟ๐‘“๐‘ ๐œ
  26. References 46 1. Bryant, "Graph-Based Algorithms for Boolean Function Manipulation"

    in IEEE Transactions on Computers, vol. C-35, no. 8, pp. 677-691, Aug. 1986, doi: 10.1109/TC.1986.1676819. 2. Clarke, E. M., Jr, Grumberg, O., Kroening, D., Peled, D., & Veith, H. (2018). Model Checking, Second Edition. MIT Press. 3. ใƒใ‚งใ‚ทใƒฃ็Œซ (2024). ใƒขใƒ‡ใƒซๆคœๆŸปๅ™จใ‚’ใคใใ‚‹ Code https://github.com/r1ru/model-checker-from-scratch