Formal Methods for AI and CPS

This page covers projects on formal methods of cyber-physical systems (CPS), including timing, safety, and correctness guarantees.

AiX Lab โ€“ Formal Methods Research Themes

Verified Environment + Verified Learning ๊ธฐ๋ฐ˜์˜ ์•ˆ์ „ํ•œ ์ง€๋Šฅํ˜• ์‹œ์Šคํ…œ ๊ตฌ์ถ•

1. Core Vision

์‚ฌ์ด๋ฒ„-๋ฌผ๋ฆฌ ์‹œ์Šคํ…œ(CPS)๊ณผ ์ง€๋Šฅํ˜• ์‹œ์Šคํ…œ์—์„œ ๋‹จ์ˆœํ•œ ์˜คํ”„๋ผ์ธ ๊ฒ€์ฆ(Offline Verification)์ด ์•„๋‹ˆ๋ผ, ํ˜•์‹ ๊ฒ€์ฆ(Formal Verification)์—์„œ ์‹คํ–‰ ์ฝ”๋“œ ์ƒ์„ฑ(Code Generation) ๋ฐ ๋Ÿฐํƒ€์ž„ ๋ชจ๋‹ˆํ„ฐ๋ง(Runtime Monitoring)๊นŒ์ง€ ์ด์–ด์ง€๋Š” "End-to-End Verified System Pipeline"์„ ๊ตฌ์ถ•ํ•˜๋Š” ๊ฒƒ์ด ์ „์ฒด์ ์ธ ์—ฐ๊ตฌ ๋น„์ „์ž…๋‹ˆ๋‹ค.

์ด ๋น„์ „์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํ•ต์‹ฌ ๋ชฉํ‘œ๋ฅผ ๊ฐ€์ง‘๋‹ˆ๋‹ค:

  • Timed Automata ๋ชจ๋ธ๋ง โ†’ UPPAAL ๊ธฐ๋ฐ˜ ํ˜•์‹ ๊ฒ€์ฆ โ†’ TADA ์ •๊ทœํ™” โ†’ Go ์ฝ”๋“œ ์ž๋™ ์ƒ์„ฑ
  • ๊ฒ€์ฆ๋œ ๋ชจ๋ธ + ์ž๋™ ์ƒ์„ฑ ์ฝ”๋“œ + Runtime Safety Monitor โ†’ ์‹ค์‹œ๊ฐ„ ์•ˆ์ „์„ฑ ๋ณด์žฅ ์‹œ์Šคํ…œ
  • ์•ˆ์ „์„ฑยท์‹ ๋ขฐ์„ฑ ๊ฐ•ํ™”: ๋ชจ๋ธ ์ฒดํ‚น(Model Checking), ์‹œ๊ฐ„ ์ œ์•ฝ ๊ฒ€์ฆ, ๋Ÿฐํƒ€์ž„ ์œ„๋ฐ˜ ๊ฐ์ง€ยท์ฐจ๋‹จ(shielding)
  • Verified World Models: World Model์ด ์ƒ์„ฑํ•˜๋Š” ์ƒํƒœยท์ „์ด๊ฐ€ ๋ฌผ๋ฆฌ์ ยท๋…ผ๋ฆฌ์  ์ œ์•ฝ์„ ์œ„๋ฐ˜ํ•˜์ง€ ์•Š๋„๋ก ๊ฒ€์ฆ
  • Safe Reinforcement Learning: Verified Environment + Formal Safety Shields๋ฅผ ํ†ตํ•œ ์œ„ํ—˜ ํ–‰๋™ ์ฐจ๋‹จ ๋ฐ ์•ˆ์ „ ํ•™์Šต ํ”„๋ ˆ์ž„์›Œํฌ
  • Counterfactual Simulation under Formal Constraints: ํ˜•์‹์  ์ œ์•ฝ ํ•˜์—์„œ ํ˜„์‹ค์ ์ด๊ณ  ์•ˆ์ „ํ•œ ์‹œ๋ฎฌ๋ ˆ์ด์…˜๋งŒ ์ƒ์„ฑ

FM-U1. Verified Environment Modeling & Execution

์ง€๋Šฅํ˜• ์‹œ์Šคํ…œ์ด ์ƒํ˜ธ์ž‘์šฉํ•˜๋Š” ํ™˜๊ฒฝ์„ ์ •๋ฐ€ํ•˜๊ฒŒ ํ˜•์‹ํ™”(Formalize)ํ•˜๊ณ , ๊ฒ€์ฆ๋œ ํ™˜๊ฒฝ์—์„œ๋งŒ ์‹œ์Šคํ…œ์ด ์‹คํ–‰๋˜๋„๋ก ๋งŒ๋“œ๋Š” ํ•ต์‹ฌ ๊ธฐ์ˆ  ์ถ•์ž…๋‹ˆ๋‹ค. ํ™˜๊ฒฝ์˜ ์‹œ๊ฐ„ยท๋…ผ๋ฆฌ ์ œ์•ฝ์„ ๋ช…ํ™•ํ•˜๊ฒŒ ์ •์˜ํ•˜๊ณ , ์‹คํ–‰ ๋‹จ๊ณ„๊นŒ์ง€ ์•ˆ์ „์„ฑ์„ ๋ณด์ฆํ•ฉ๋‹ˆ๋‹ค.

FM-U1.1. Timed Automata ๊ธฐ๋ฐ˜ Environment & Mission Modeling

ํ˜„์‹ค ํ™˜๊ฒฝ์˜ ์‹œ๊ฐ„, ์ˆœ์„œ, ์ œ์•ฝ ์กฐ๊ฑด์„ Timed Automata (TA)๋กœ ๋ชจ๋ธ๋งํ•˜์—ฌ ์‹œ์Šคํ…œ์ด ์ ˆ๋Œ€ ์œ„๋ฐ˜ํ•ด์„œ๋Š” ์•ˆ ๋˜๋Š” ์•ˆ์ „ ๊ฒฝ๊ณ„(safety envelope)๋ฅผ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. TA ๋ชจ๋ธ์€ UPPAAL ๋“ฑ์˜ ๋ชจ๋ธ์ฒด์ปค๋ฅผ ํ†ตํ•ด safety, liveness, deadline ๋“ฑ์„ ์ž๋™ ๊ฒ€์ฆํ•ฉ๋‹ˆ๋‹ค.

FM-U1.2. TADA ๊ธฐ๋ฐ˜ ์˜๋ฏธ ์ •๊ทœํ™” + ์ž๋™ ์ฝ”๋“œ ์ƒ์„ฑ

TA์˜ ๋ชจํ˜ธํ•œ ์‹œ๊ฐ„ ์˜๋ฏธ๋ฅผ TADA(Timed Automata with Disjoint Actions)๋กœ ์ •๊ทœํ™”ํ•˜์—ฌ ๋ชจ๋ธ ์˜๋ฏธ์™€ ์‹คํ–‰ ์˜๋ฏธ๊ฐ€ 1:1๋กœ ๋Œ€์‘ํ•˜๋„๋ก ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค. TADA๋Š” time-transition๊ณผ action-transition์„ ๋ช…ํ™•ํžˆ ๋ถ„๋ฆฌํ•˜๊ณ , ๊ฒฝ๊ณ„์กฐ๊ฑด(invariant violation, x==n ๋“ฑ)์„ ๋ชจ๋‘ ์ƒํƒœ๋กœ ํ‘œํ˜„ํ•˜์—ฌ ์‹คํ–‰ ์•ˆ์ „์„ฑ์„ ๊ฐ•ํ™”ํ•ฉ๋‹ˆ๋‹ค.

์ •๊ทœํ™”๋œ TADA ๋ชจ๋ธ์€ ์ž๋™์œผ๋กœ Go ์ฝ”๋“œ๋กœ ๋ณ€ํ™˜๋˜๋ฉฐ, ์‹คํ–‰ ์ค‘ safety ์œ„๋ฐ˜์„ ์‹ค์‹œ๊ฐ„์œผ๋กœ ๊ฐ์ง€ยท์ฐจ๋‹จ(shielding)ํ•˜๋Š” Runtime Safety Monitor๊ฐ€ ํ•จ๊ป˜ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.

FM-U1.3. Verified Simulation Environment

TA/TADA๋กœ ๊ฒ€์ฆ๋œ ํ™˜๊ฒฝ์„ ๊ธฐ๋ฐ˜์œผ๋กœ Vision, LLM, RL, Control ๋ชจ๋“ˆ์ด ํ•ญ์ƒ ์•ˆ์ „ ์ œ์•ฝ ์•„๋ž˜์—์„œ๋งŒ ํ–‰๋™ํ•˜๋„๋ก ๊ฐ•์ œํ•˜๋Š” ์‹คํ–‰ ํ™˜๊ฒฝ์„ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์œ„ํ—˜ํ•œ ํ–‰๋™์ด ๋ฐœ์ƒํ•˜๋ฉด ์ฆ‰์‹œ ์ฐจ๋‹จ๋˜๋ฉฐ, AI๊ฐ€ ํ•™์Šตยท์ถ”๋ก  ์ค‘ ์ž˜๋ชป๋œ ์ •์ฑ…์„ ํ˜•์„ฑํ•˜๋Š” ๊ฒƒ์„ ๊ตฌ์กฐ์ ์œผ๋กœ ๋ฐฉ์ง€ํ•ฉ๋‹ˆ๋‹ค.


FM-U2. Verified World Models, Embodied AI, and Safe Reinforcement Learning

Embodied AI, World Model, Reinforcement Learning์ด ์ž˜๋ชป๋œ ์„ธ๊ณ„๋ฅผ ์ƒ์„ฑํ•˜๊ฑฐ๋‚˜ ์œ„ํ—˜ํ•œ ์ •์ฑ…์„ ํ•™์Šตํ•˜์ง€ ์•Š๋„๋ก ๋ชจ๋ธ์ฒดํ‚น ๊ธฐ๋ฐ˜ ์•ˆ์ „์„ฑ์„ ํ†ตํ•ฉํ•˜๋Š” ์—ฐ๊ตฌ ์ถ•์ž…๋‹ˆ๋‹ค.

FM-U2.1. Verified World Models

World Model์ด ์ƒ์„ฑํ•˜๋Š” ์ƒํƒœ(state)์™€ ์ „์ด(transition)๊ฐ€ ๋ฌผ๋ฆฌ์ ยท๋…ผ๋ฆฌ์  ์ œ์•ฝ์„ ์œ„๋ฐ˜ํ•˜์ง€ ์•Š๋„๋ก ๊ฒ€์ฆํ•ฉ๋‹ˆ๋‹ค. ์ž˜๋ชป๋œ dynamics๋‚˜ ๋น„ํ˜„์‹ค์  ์‹œ๋‚˜๋ฆฌ์˜ค๊ฐ€ AI์˜ ์ •์ฑ… ํ•™์Šต์„ ์˜ค์—ผ์‹œํ‚ค์ง€ ์•Š๋„๋ก ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค.

FM-U2.2. Safe RL via Verified Environment + Formal Shields

RL์˜ exploration๊ณผ policy-learning ๊ณผ์ •์—์„œ ๋ฐœ์ƒํ•˜๋Š” ์œ„ํ—˜ ํ–‰๋™์„ Verified Environment์™€ Formal Safety Shields๋ฅผ ํ†ตํ•ด ์ฆ‰์‹œ ์ฐจ๋‹จํ•ฉ๋‹ˆ๋‹ค. ์ด๋กœ์จ RL์ด ์•ˆ์ „ ์ œ์•ฝ ์•ˆ์—์„œ๋งŒ ํ•™์Šตํ•  ์ˆ˜ ์žˆ๋Š” Safe Learning Framework๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

FM-U2.3. Counterfactual Simulation under Formal Constraints

World Model ๋ฐ Embodied AI๊ฐ€ ์ƒ์„ฑํ•˜๋Š” counterfactual ์‹œ๋‚˜๋ฆฌ์˜ค์— ํ˜•์‹์  ์ œ์•ฝ์„ ๋ถ€์—ฌํ•˜์—ฌ, ํ˜„์‹ค์ ์ด๊ณ  ์•ˆ์ „ํ•œ ์‹œ๋ฎฌ๋ ˆ์ด์…˜๋งŒ ์ƒ์„ฑํ•˜๋„๋ก ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” AI๊ฐ€ ์ž˜๋ชป๋œ ๊ฐ€์ •์ด๋‚˜ ์œ„ํ—˜ํ•œ ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ํ•™์Šตํ•˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•ฉ๋‹ˆ๋‹ค.


Executive Summary

FM-U1์€ ํ™˜๊ฒฝ์„ ์ •ํ˜•์ ์œผ๋กœ ๋ชจ๋ธ๋งํ•˜๊ณ  ๊ฒ€์ฆํ•˜๋ฉฐ ์‹คํ–‰๊นŒ์ง€ ์—ฐ๊ฒฐํ•˜๋Š” ๊ธฐ์ˆ ๋กœ, ์‹œ์Šคํ…œ์ด ์–ด๋–ค AI ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•˜๋”๋ผ๋„ ์•ˆ์ „ํ•œ ํ™˜๊ฒฝ ์•ˆ์—์„œ๋งŒ ๋™์ž‘ํ•˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.

FM-U2๋Š” Embodied AI, World Model, RL์ด ์œ„ํ—˜ํ•œ ์ƒํƒœ๋‚˜ ์ •์ฑ…์„ ์ƒ์„ฑํ•˜์ง€ ์•Š๋„๋ก ํ•™์Šตยท์‹œ๋ฎฌ๋ ˆ์ด์…˜ ๋‹จ๊ณ„์—์„œ๋ถ€ํ„ฐ ๋ชจ๋ธ์ฒดํ‚น์„ ํ†ตํ•ฉํ•˜์—ฌ Verified Learning์„ ์‹คํ˜„ํ•ฉ๋‹ˆ๋‹ค.

๋‘ ๊ธฐ์ˆ ์ด ๊ฒฐํ•ฉํ•˜์—ฌ, Perception โ†’ Reasoning/Planning โ†’ Control โ†’ Execution โ†’ Learning ์ „์ฒด ๋ฃจํ”„๊ฐ€ ์•ˆ์ „์„ฑ์„ ๊ฐ–์ถ˜ Verified Intelligent System์„ ๊ตฌ์„ฑํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

ํ˜•์‹ ๊ฒ€์ฆ ๊ธฐ๋ฐ˜ CPS ์‹ ๋ขฐ์„ฑ ํ™•๋ณด: TAโ€“TADAโ€“toโ€“Go ํ”„๋ ˆ์ž„์›Œํฌ

TAโ€“TADAโ€“toโ€“Go: Ensuring CPS Reliability

TAโ€“TADAโ€“toโ€“Go ํŒŒ์ดํ”„๋ผ์ธ: ํ˜•์‹ ๊ฒ€์ฆ → ์ž๋™ ์ฝ”๋“œ ์ƒ์„ฑ → ๋Ÿฐํƒ€์ž„ ๋ชจ๋‹ˆํ„ฐ๋ง

๋ณธ ์—ฐ๊ตฌ๋Š” ์ž์œจ์ฃผํ–‰, ์‚ฐ์—… ์ž๋™ํ™” ๋“ฑ๊ณผ ๊ฐ™์€ ์•ˆ์ „ ํ•„์ˆ˜(Critical) ์‚ฌ์ด๋ฒ„-๋ฌผ๋ฆฌ ์‹œ์Šคํ…œ(CPS)์—์„œ ์š”๊ตฌ๋˜๋Š” ์ •ํ™•์„ฑยท์•ˆ์ „์„ฑยท์‹œ๊ฐ„์  ์ œ์•ฝ ์ค€์ˆ˜๋ฅผ ๋ณด์žฅํ•˜๊ธฐ ์œ„ํ•œ ์ƒˆ๋กœ์šด ํ†ตํ•ฉ ์ ‘๊ทผ๋ฒ•์„ ์ œ์•ˆํ•œ๋‹ค. ๊ธฐ์กด Timed Automata(TA) ๋ฐ UPPAAL ๊ธฐ๋ฐ˜ ์˜คํ”„๋ผ์ธ ํ˜•์‹ ๊ฒ€์ฆ์€ ์ด๋ก ์ ์œผ๋กœ ๊ฐ•๋ ฅํ•˜์ง€๋งŒ, ์ด๋ฅผ ์‹ค์ œ ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ์ฝ”๋“œ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ณผ์ •์—์„œ ์˜๋ฏธ ์†์‹ค์ด ๋ฐœ์ƒํ•˜๊ฑฐ๋‚˜, ๋ ˆ๊ฑฐ์‹œ ROS ์‹œ์Šคํ…œยท์„ผ์„œ ์ง€์—ฐยท์Šค์ผ€์ค„๋ง ๋ณ€๋™์œผ๋กœ ์ธํ•ด ๋Ÿฐํƒ€์ž„ ์œ„๋ฐ˜์ด ๋ฐœ์ƒํ•  ์œ„ํ—˜์ด ๋‚จ์•„ ์žˆ๋‹ค.

์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๋ณธ ์—ฐ๊ตฌ๋Š” ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด ํ˜•์‹ ๊ฒ€์ฆ(Verification) โ†’ TADA ๊ธฐ๋ฐ˜ ์ž๋™ ์ฝ”๋“œ ์ƒ์„ฑ(Implementation) โ†’ Go ์‹คํ–‰ ๋ฐ ๋Ÿฐํƒ€์ž„ ๋ชจ๋‹ˆํ„ฐ๋ง(Execution)์œผ๋กœ ์ด์–ด์ง€๋Š” 3๋‹จ๊ณ„ ํŒŒ์ดํ”„๋ผ์ธ TAโ€“TADAโ€“toโ€“Go๋ฅผ ์ œ์•ˆํ•œ๋‹ค.


1. ํ˜•์‹ ๊ฒ€์ฆ ๋‹จ๊ณ„: Timed Automata ๊ธฐ๋ฐ˜ ์•ˆ์ „์„ฑ ๊ฒ€์ฆ

์ฒซ ๋‹จ๊ณ„์—์„œ๋Š” UPPAAL์„ ์‚ฌ์šฉํ•ด CPS์˜ ์•ˆ์ „ ํ•„์ˆ˜ ์ปดํฌ๋„ŒํŠธ๋ฅผ Timed Automata๋กœ ๋ชจ๋ธ๋งํ•˜๊ณ , Timed-CTL ๊ธฐ๋ฐ˜ ์†์„ฑ ๊ฒ€์ฆ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.

  • ์‹œ๊ฐ„ ์ œ์•ฝ์„ ํฌํ•จํ•œ ์†Œํ”„ํŠธ์›จ์–ด ์š”๊ตฌ์‚ฌํ•ญ, ํ™˜๊ฒฝ ๋ชจ๋ธ, ์ƒํ˜ธ์ž‘์šฉ ๊ตฌ์กฐ๋ฅผ TA๋กœ ๋ชจ๋ธ๋ง
  • ์•ˆ์ „์„ฑ(safety), ๋„๋‹ฌ์„ฑ(reachability), ์‘๋‹ต์„ฑ(bounded response) ๋“ฑ์˜ ์†์„ฑ์„ Timed-CTL๋กœ ๋ช…์„ธ
  • ๋ชจ๋ธ ์ฒดํ‚น์„ ํ†ตํ•ด ์‹œ๊ฐ„์  ๋ฌด๊ฒฐ์„ฑ ๋ฐ ๋…ผ๋ฆฌ์  ์•ˆ์ „์„ฑ์„ ์‚ฌ์ „์— ๋ณด์žฅ

2. TADA ๊ธฐ๋ฐ˜ ์ž๋™ ์ฝ”๋“œ ์ƒ์„ฑ: ์˜๋ฏธ๋ฅผ ์žƒ์ง€ ์•Š๋Š” ์ค‘๊ฐ„ ํ‘œํ˜„

TA ๋ชจ๋ธ์„ ์ง์ ‘ ์ฝ”๋“œ๋กœ ๋ณ€ํ™˜ํ•˜๋ฉด ์‹œ๊ฐ„ ์˜๋ฏธ(semantics)๊ฐ€ ๋ชจํ˜ธํ•ด์ง€๊ธฐ ์‰ฝ๋‹ค. ์ด๋ฅผ ํ•ด์†Œํ•˜๊ธฐ ์œ„ํ•ด ๋ณธ ์—ฐ๊ตฌ๋Š” ์ƒˆ๋กœ์šด ํ˜•์‹ ๋ชจ๋ธ์ธ TADA (Timed Automata with Disjoint Actions)๋ฅผ ๋„์ž…ํ•œ๋‹ค.

  • ๊ฐ TA ์œ„์น˜(location)๋ฅผ ์—ฌ๋Ÿฌ ๊ฐœ์˜ sub-location์œผ๋กœ ๋ถ„ํ•ดํ•˜์—ฌ ์‹œ๊ฐ„ ํ๋ฆ„(time progression)์„ ๋ช…์‹œ์ ์œผ๋กœ ํ‘œํ˜„
  • ์‹œ๊ฐ„ ์ „์ด(time transition)์™€ ๋™์ž‘ ์ „์ด(action transition)๋ฅผ ๋ถ„๋ฆฌํ•ด ์‹คํ–‰ ํƒ€์ด๋ฐ์˜ ๋น„๊ฒฐ์ •์„ฑ์„ ์ œ๊ฑฐํ•˜๊ณ  ๊ตฌํ˜„ ์šฉ์ด์„ฑ์„ ํ™•๋ณด
  • x == n, x > n ๋“ฑ ์‹œ๊ฐ„ ๊ฒฝ๊ณ„ ์กฐ๊ฑด์„ ๋ช…์‹œ์ ์œผ๋กœ ๋ชจ๋ธ๋งํ•˜์—ฌ Go์˜ select ๋ฌธ, time.After()์™€ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ๋งคํ•‘
  • ์›๋ž˜ TA์™€ ์ถ”์ (trace) ๋™๋“ฑ์„ฑ์„ ์œ ์ง€ํ•˜์—ฌ, UPPAAL์—์„œ ๊ฒ€์ฆ๋œ ์˜๋ฏธ๋ฅผ ์†์‹ค ์—†์ด ์‹คํ–‰ ์ฝ”๋“œ ์ˆ˜์ค€์œผ๋กœ ์ „๋‹ฌ

์ด ๊ณผ์ •์„ ํ†ตํ•ด TA โ†’ TADA โ†’ Go๋กœ ์ด์–ด์ง€๋Š” ์™„์ „ ์ž๋™ํ™” ์ฝ”๋“œ ์ƒ์„ฑ ํŒŒ์ดํ”„๋ผ์ธ์„ ๊ตฌ์ถ•ํ•˜์˜€๋‹ค.


3. ์‹คํ–‰ ๋‹จ๊ณ„: Go ๊ธฐ๋ฐ˜ ์‹คํ–‰ ๋ฐ ๋Ÿฐํƒ€์ž„ ์‹œ๊ฐ„์ œ์•ฝ ๋ชจ๋‹ˆํ„ฐ๋ง

TADA๋กœ๋ถ€ํ„ฐ ์ƒ์„ฑ๋œ Go ์ฝ”๋“œ๋Š” ๋‹ค์Œ ๋‘ ๊ฐ€์ง€ ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ํฌํ•จํ•œ๋‹ค.

3-1. ๊ธฐ๋Šฅ์  ์†Œํ”„ํŠธ์›จ์–ด ์ฝ”๋“œ (Behavior Code)

  • ๊ฐ (sub-)location์„ Go์˜ ๋ผ๋ฒจ(label) ๋ธ”๋ก์œผ๋กœ ๊ตฌํ˜„ํ•˜๊ณ  goto๋ฅผ ์ด์šฉํ•ด ์ „์ด ๊ตฌํ˜„
  • goroutine๊ณผ channel์„ ํ™œ์šฉํ•˜์—ฌ TA/TADA์˜ ๋ณ‘๋ ฌ ์‹คํ–‰ semantics๋ฅผ CSP ์Šคํƒ€์ผ๋กœ ์ถฉ์‹คํžˆ ๊ตฌํ˜„
  • time.Now(), time.Since(), time.After()๋ฅผ ์ด์šฉํ•ด ๋…ผ๋ฆฌ์  clock์„ ์‹ค์ œ ์‹œ๊ฐ„์œผ๋กœ ๋งคํ•‘

3-2. ๋‚ด์žฅ ๋Ÿฐํƒ€์ž„ ๋ชจ๋‹ˆํ„ฐ (Time-Invariant Monitors)

  • TA/TADA์—์„œ ์ •์˜๋œ ์‹œ๊ฐ„ ๋ถˆ๋ณ€์‹(time invariant)์„ Go ์ฝ”๋“œ ๋‚ด๋ถ€ ๋ชจ๋‹ˆํ„ฐ๋กœ ํ•จ๊ป˜ ์ƒ์„ฑ
  • ์‹คํ–‰ ์ค‘ x โ‰ค n, x == n ๋“ฑ์˜ ์ œ์•ฝ ์œ„๋ฐ˜์ด ๋ฐœ์ƒํ•˜๋ฉด ์œ„๋ฐ˜ ์ฑ„๋„(violation channel)์„ ํ†ตํ•ด ์•Œ๋žŒ ์ „์†ก
  • ROS, DDS, ์Šค์ผ€์ค„๋ง ์ง€์—ฐ, GC ์ง€์—ฐ ๋“ฑ์œผ๋กœ ์ธํ•œ ์‹ค์ œ ํƒ€์ด๋ฐ ๋ฌธ์ œ๋ฅผ ๋Ÿฐํƒ€์ž„์—์„œ ์ง์ ‘ ๊ฐ์ง€ํ•˜๊ณ  ์•ˆ์ „ ๋ณต๊ท€(safe recovery)๋ฅผ ํŠธ๋ฆฌ๊ฑฐ

์ด์™€ ๊ฐ™์ด ์˜คํ”„๋ผ์ธ ํ˜•์‹ ๊ฒ€์ฆ + ์˜จ๋ผ์ธ ๋ชจ๋‹ˆํ„ฐ๋ง์„ ๊ฒฐํ•ฉํ•จ์œผ๋กœ์จ, ์ˆœ์ˆ˜ ๋ชจ๋ธ ๊ฒ€์ฆ๋งŒ์œผ๋กœ๋Š” ์žก๊ธฐ ์–ด๋ ค์šด ์‹คํ–‰ ์‹œ ํƒ€์ด๋ฐ ๋ฌธ์ œ๊นŒ์ง€ ํฌ์ฐฉํ•  ์ˆ˜ ์žˆ๋‹ค.


4. ์‚ฌ๋ก€ ์—ฐ๊ตฌ: ROS ๊ธฐ๋ฐ˜ ์‚ฐ์—… ์ œ์–ด ์‹œ์Šคํ…œ ์ ์šฉ

์ œ์•ˆ ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ROS ๊ธฐ๋ฐ˜ ์‚ฐ์—… ์ œ์–ด ์‹œ์Šคํ…œ์— ์ ์šฉํ•˜์—ฌ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒฐ๊ณผ๋ฅผ ํ™•์ธํ•˜์˜€๋‹ค.

  • ๋ ˆ๊ฑฐ์‹œ ๋…ธ๋“œ ๋ฐ ํ†ต์‹  ์ง€์—ฐ์œผ๋กœ ์ธํ•ด ๋ฐœ์ƒํ•˜๋Š” ํƒ€์ด๋ฐ ์œ„๋ฐ˜์„ ์ž๋™ ๊ฐ์ง€ ๋ฐ ์ฐจ๋‹จ
  • Jetson TX2์™€ ๊ฐ™์€ ์ž„๋ฒ ๋””๋“œ ํ”Œ๋žซํผ์—์„œ๋„ ๋ชจ๋ธ ๊ธฐ๋ฐ˜ Go ์‹คํ–‰ ํ™˜๊ฒฝ์ด ์‹ค์šฉ์ ์ธ ์„ฑ๋Šฅ์„ ๋ณด์ž„
  • ์ˆœ์ˆ˜ ์˜คํ”„๋ผ์ธ ๊ฒ€์ฆ ๋ฐฉ๋ฒ•์— ๋น„ํ•ด, ํ˜•์‹ ๊ฒ€์ฆ + ๋Ÿฐํƒ€์ž„ ๊ด€์ธก(hybrid approach)์ด ์ „์ฒด ์‹œ์Šคํ…œ์˜ ์•ˆ์ „์„ฑยทํƒ„๋ ฅ์„ฑ์„ ์œ ์˜๋ฏธํ•˜๊ฒŒ ํ–ฅ์ƒ์‹œํ‚ด

5. ๋ณธ ์—ฐ๊ตฌ์˜ ํ•ต์‹ฌ ๊ธฐ์—ฌ

  • ํ˜•์‹ ๊ฒ€์ฆ์—์„œ ์‹ค์ œ ์‹คํ–‰ ์ฝ”๋“œ๊นŒ์ง€ ์ด์–ด์ง€๋Š” ์™„์ „ ์ž๋™ํ™” ํŒŒ์ดํ”„๋ผ์ธ (Verification โ†’ Implementation โ†’ Execution) ์ œ์‹œ
  • ์‹œ๊ฐ„ ์˜๋ฏธ๋ฅผ ๋ช…ํ™•ํžˆ ๋ณด์กดํ•˜๋Š” ์ค‘๊ฐ„ ๋ชจ๋ธ TADA (Timed Automata with Disjoint Actions) ์ œ์•ˆ
  • ์ •ํ˜• ๋ชจ๋ธ ๊ธฐ๋ฐ˜ Go ์ฝ”๋“œ ์ƒ์„ฑ๊ณผ ๋Ÿฐํƒ€์ž„ ์‹œ๊ฐ„์ œ์•ฝ ๋ชจ๋‹ˆํ„ฐ๋ง์„ ๊ฒฐํ•ฉํ•œ CPS ์‹ ๋ขฐ์„ฑ ๊ฐ•ํ™” ๊ธฐ๋ฒ• ์ œ์‹œ
  • ROS ๋“ฑ ๋ ˆ๊ฑฐ์‹œ ํ™˜๊ฒฝ์—์„œ ๋ฐœ์ƒํ•˜๋Š” ์ง€์—ฐยท์ง€ํ„ฐ๋ฅผ ์‹คํ–‰ ์‹œ์ ์—์„œ ๊ฐ์ง€ยท๋Œ€์‘ํ•˜๋Š” ๋ฉ”์ปค๋‹ˆ์ฆ˜ ๊ตฌํ˜„
  • ์‹ค์ œ CPS ์‚ฌ๋ก€ ์—ฐ๊ตฌ๋ฅผ ํ†ตํ•ด ์•ˆ์ „์„ฑ ๋ฐ ์‹ ๋ขฐ์„ฑ ํ–ฅ์ƒ ํšจ๊ณผ๋ฅผ ์ •๋Ÿ‰ยท์ •์„ฑ์ ์œผ๋กœ ์‹ค์ฆ

6. ๋…ผ๋ฌธ ์ธ์šฉ (Citation)

IEEE Access (2025)

Soomin Cho, Inhye Kang, and Jin Hyun Kim,
“From Timed Automata to Go: Formally Verified Code Generation and Runtime Monitoring for Cyber-Physical Systems,”
IEEE Access, vol. 13, pp. 161729โ€“1617xx, 2025.
doi: 10.1109/ACCESS.2025.3608215
[IEEE Xplore]

HTML์šฉ ๊ฐ„๋‹จ ํ‘œ๊ธฐ:
Cho, S., Kang, I., & Kim, J. H. (2025). “From Timed Automata to Go: Formally Verified Code Generation and Runtime Monitoring for Cyber-Physical Systems.” IEEE Access, 13, 161729โ€“1617xx. https://doi.org/10.1109/ACCESS.2025.3608215

TADA: Timed Automata with Disjoint Actions

Lamp example modeled in TADA

๊ทธ๋ฆผ: ๋‘ ๋‹จ๊ณ„ ๋ฐ๊ธฐ ๋žจํ”„(Lamp)๋ฅผ TADA๋กœ ๋ชจ๋ธ๋งํ•œ ์˜ˆ.
Off ์ƒํƒœ์—์„œ ๋ฒ„ํŠผ press? ์ž…๋ ฅ์ด ๋“ค์–ด์˜ค๋ฉด Low ๋ชจ๋“œ์˜ Low_0 โ†’ Low_1 โ†’ Low_2๋กœ ์‹œ๊ฐ„์ด ํ˜๋Ÿฌ๊ฐ€๋ฉฐ, ๊ฐ sub-location์€ y > 5, y == 60, y > 60๊ณผ ๊ฐ™์€ ์‹œ๊ฐ„ ์กฐ๊ฑด์„ ๋ช…์‹œ์ ์œผ๋กœ ๋‚˜ํƒ€๋‚ธ๋‹ค. ์•„๋ž˜์ชฝ์˜ Bright_1, Bright_2๋Š” ๋ฐ๊ธฐ ์ฆ๊ฐ€ ๋ชจ๋“œ๋ฅผ ๋‚˜ํƒ€๋‚ด๋ฉฐ, ๊ฒ€์€ ์ (โ—)์€ y > 60 ๋“ฑ ์‹œ๊ฐ„ ์ œ์•ฝ์„ ์œ„๋ฐ˜ํ–ˆ์„ ๋•Œ ๋„๋‹ฌํ•˜๋Š” violation sub-location์„ ์˜๋ฏธํ•œ๋‹ค.

1. TADA์˜ ๋“ฑ์žฅ ๋ฐฐ๊ฒฝ

๊ธฐ์กด Timed Automata(TA)๋Š” ์‹œ๊ฐ„ ์ง„ํ–‰(time progression)์ด ์•”๋ฌต์ (implicit)์ด๊ณ , ์œ„์น˜(location)์— ๋ถ™์€ invariant์™€ guard๊ฐ€ ๋’ค์„ž์—ฌ ์žˆ์–ด์„œ ์‹ค์ œ ์ฝ”๋“œ๋กœ ๋ณ€ํ™˜ํ•  ๋•Œ ์‹œ๊ฐ„ ์˜๋ฏธ๊ฐ€ ๋ชจํ˜ธํ•ด์ง€๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ๋‹ค.

  • action transition์ด ๊ฐ€๋Šฅํ•œ๋ฐ ์‹œ๊ฐ„๋„ ๋™์‹œ์— ํ๋ฅด๋Š” ์ƒํ™ฉ
  • invariant (์˜ˆ: x โ‰ค n)๋ฅผ ์–ด๊ฒผ๋Š”์ง€ ๋Ÿฐํƒ€์ž„์—์„œ ๊ฐ์ง€ํ•˜๊ธฐ ์–ด๋ ค์›€
  • ์‹œ๊ฐ„ ์กฐ๊ฑด(x == n ๋“ฑ)์„ ์ฝ”๋“œ๋กœ ์ •ํ™•ํžˆ ๋งคํ•‘ํ•˜๊ธฐ ์–ด๋ ค์›€

์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๋…ผ๋ฌธ์—์„œ๋Š” TADA๋ผ๋Š” ์ƒˆ๋กœ์šด ์ค‘๊ฐ„ ํ‘œํ˜„(Intermediate Formalism)์„ ๋„์ž…ํ•œ๋‹ค. TADA์˜ ๋ชฉ์ ์€ ๋‹ค์Œ ๋‘ ๊ฐ€์ง€์ด๋‹ค.

  1. TA์˜ ์‹œ๊ฐ„ ์˜๋ฏธ๋ฅผ ์™„์ „ํžˆ ๋“œ๋Ÿฌ๋‚ด๊ณ (explicit) ๊ตฌ์กฐํ™”ํ•œ๋‹ค.
  2. ์ฝ”๋“œ ์ƒ์„ฑ(ํŠนํžˆ Go๋กœ์˜ ์ž๋™ ๋ณ€ํ™˜)์ด ๊ฐ€๋Šฅํ•œ ํ˜•ํƒœ๋กœ ์ •๊ทœํ™”ํ•œ๋‹ค.

2. TADA์˜ ํ•ต์‹ฌ ํŠน์ง•

2-1. ์œ„์น˜(Location)๋ฅผ Sub-location ๋‹จ์œ„๋กœ ๋ถ„ํ•ด

๊ฐ TA์˜ location์„ ์‹œ๊ฐ„ ์กฐ๊ฑด์— ๋”ฐ๋ผ ์—ฌ๋Ÿฌ ๊ฐœ์˜ sub-location์œผ๋กœ ์ชผ๊ฐ ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด invariant๊ฐ€ x โ‰ค 60์ด๊ณ  guard๊ฐ€ x โ‰ฅ 5์ธ ๊ฒฝ์šฐ:

์›๋ž˜ location TADA sub-location
Low Low_0: 0 โ‰ค x < 5
Low_1: 5 โ‰ค x < 60
Low_2: x = 60
Low_3: x > 60 (violation)

์ด์™€ ๊ฐ™์ด ๋ถ„ํ•ดํ•˜๋ฉด ์‹œ๊ฐ„ ํ๋ฆ„์ด ๋‹จ๊ณ„๋ณ„๋กœ ๋ช…ํ™•ํ•˜๊ฒŒ ๋“œ๋Ÿฌ๋‚œ๋‹ค.

2-2. ์‹œ๊ฐ„ ์ „์ด(Time transitions)์™€ ๋™์ž‘ ์ „์ด(Action transitions)์˜ ์™„์ „ ๋ถ„๋ฆฌ

๊ธฐ์กด TA์—์„œ๋Š” ์‹œ๊ฐ„ ์ „์ด์™€ ๋™์ž‘ ์ „์ด๊ฐ€ ํ•œ ์œ„์น˜์—์„œ ์–ฝํ˜€ ์žˆ์–ด ๋ชจํ˜ธํ•˜๋‹ค. TADA์—์„œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ถ„๋ฆฌํ•œ๋‹ค.

  • Time transition: ์˜ค์ง clock ์กฐ๊ฑด ec์— ์˜ํ•ด ๋ฐœ์ƒ
  • Action transition: channel ๋™์ž‘ a(!/?), reset ์ง‘ํ•ฉ r์— ์˜ํ•ด ๋ฐœ์ƒ

์‹œ๊ฐ„๊ณผ ๋™์ž‘์˜ ์ฑ…์ž„์ด ๋ถ„๋ฆฌ๋˜๋ฏ€๋กœ ๊ตฌํ˜„์ด ๋‹จ์ˆœํ•ด์ง€๊ณ  ์˜๋ฏธ๊ฐ€ ๋ช…ํ™•ํ•ด์ง„๋‹ค.

2-3. ์‹œ๊ฐ„ ๊ฒฝ๊ณ„ ์กฐ๊ฑด์˜ ๋ช…์‹œํ™”

TADA๋Š” x == n, x > n, x โ‰ค n ๋“ฑ TA ์กฐ๊ฑด์„ ๋ช…์‹œ์ ์ธ sub-location ๊ฐ„ ์ „์ด๋กœ ๋ณ€ํ™˜ํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด x == n์€ "x๊ฐ€ ์ •ํ™•ํžˆ n์ด ๋˜๋Š” ๊ทธ ์ˆœ๊ฐ„"์„ ๋‚˜ํƒ€๋‚ด๋Š” ๋ณ„๋„์˜ sub-location์œผ๋กœ ๋ชจ๋ธ๋ง๋œ๋‹ค.

2-4. Invariant ์œ„๋ฐ˜์„ ๋ช…์‹œ์  error state๋กœ ํ‘œํ˜„

TA์—์„œ๋Š” invariant ์œ„๋ฐ˜์ด "ํ—ˆ์šฉ๋˜์ง€ ์•Š๋Š” ์ƒํƒœ"๋กœ๋งŒ ํ‘œํ˜„๋˜์ง€๋งŒ, TADA์—์„œ๋Š” violation sub-location์„ ๋ช…์‹œ์ ์œผ๋กœ ์ƒ์„ฑํ•œ๋‹ค. ์‹คํ–‰ ์ค‘ ์ด๊ณณ์— ๋„๋‹ฌํ•˜๋ฉด ์‹œ๊ฐ„ ์ œ์•ฝ ์œ„๋ฐ˜์œผ๋กœ ์ธ์‹ํ•˜๊ณ , Go ๋ชจ๋‹ˆํ„ฐ๊ฐ€ ์ด๋ฅผ ๊ฐ์ง€ํ•˜์—ฌ ์•Œ๋žŒ์„ ๋ฐœ์ƒ์‹œํ‚ค๋„๋ก ์„ค๊ณ„ํ•œ๋‹ค.

2-5. Trace equivalence ์œ ์ง€

TADA๋กœ ๋ณ€ํ™˜ํ•˜๋”๋ผ๋„ ์›๋ž˜ TA์™€ ๋™์ผํ•œ observable trace๋ฅผ ๋ณด์žฅํ•œ๋‹ค. ๋”ฐ๋ผ์„œ ํ˜•์‹์  ๊ฒ€์ฆ ๊ฒฐ๊ณผ๊ฐ€ ์ฝ”๋“œ ์ƒ์„ฑ ํ›„์—๋„ ์˜๋ฏธ๋ฅผ ์žƒ์ง€ ์•Š๋Š”๋‹ค.


3. TADA์˜ ๋ฌธ๋ฒ• (Syntax)

๋…ผ๋ฌธ ์ •์˜(Definition 2)์— ๋”ฐ๋ฅด๋ฉด TADA๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํŠœํ”Œ๋กœ ์ •์˜๋œ๋‹ค.

TADA = โŸจL, lโ‚€, X, A, EโŸฉ

  • L: location๋“ค์˜ ์ง‘ํ•ฉ (๊ฐ location์€ ์—ฌ๋Ÿฌ sub-location์„ ๊ฐ€์ง„๋‹ค)
  • lโ‚€: ์ดˆ๊ธฐ location
  • X: clocks
  • A: actions
  • E: ์ „์ด ์ง‘ํ•ฉ
    • EA: action transitions
    • ET: time transitions

3-1. Action Transition

sl โ”€a,rโ†’ l'
  • sl: sub-location
  • a: action (ฯ„, ch!, ch?)
  • r: reset set
  • l': ๋„์ฐฉ location

3-2. Time Transition

sl โ”€ecโ†’ sl'
  • sl, sl': ๊ฐ™์€ ์›๋ž˜ location์—์„œ ํŒŒ์ƒ๋œ sub-location
  • ec: enabling condition (์˜ˆ: x == n, x > n)

3-3. Sub-location ๋ฉ”ํƒ€ ์ •๋ณด

๊ฐ sub-location sl์€ ๋‹ค์Œ ์ •๋ณด๋ฅผ ๊ฐ€์ง„๋‹ค.

  • location(sl): ์›๋ž˜ location
  • clock(sl): ์ด sub-location์„ ์ง€๋ฐฐํ•˜๋Š” clock
  • interval(sl): ๋จธ๋ฌด๋ฅผ ์ˆ˜ ์žˆ๋Š” ์‹œ๊ฐ„ ๊ตฌ๊ฐ„ (์˜ˆ: interval(Low_1) = (5,60))

4. TADA ์˜๋ฏธ๋ก  (Semantics)

TADA์˜ ์˜๋ฏธ๋ก ์€ Labeled Transition System(LTS)์œผ๋กœ ์ •์˜๋œ๋‹ค (Definition 3). ์ƒํƒœ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์Œ์ด๋‹ค.

State = (sl, v)
  • sl: sub-location
  • v: clock valuation
  • v(clock(sl))๋Š” ๋ฐ˜๋“œ์‹œ interval(sl) ์•ˆ์— ์žˆ์–ด์•ผ ํ•œ๋‹ค.

4-1. ์•ก์…˜ ์ „์ด (Action Transition Rule)

(sl, v) โ”€aโ†’ (sl', v')
  • sl'๋Š” action์˜ target location์— ์†ํ•˜๋Š” sub-location
  • v' = v[r] (reset ์ˆ˜ํ–‰)
  • v'๊ฐ€ interval(sl') ์•ˆ์— ์žˆ์–ด์•ผ ํ•จ

4-2. ์‹œ๊ฐ„ ์ง„ํ–‰ (Time Progression Rule)

(sl, v) โ”€dโ†’ (sl, v + d)
  • d > 0 ๋™์•ˆ interval(sl) ์กฐ๊ฑด์ด ์œ ์ง€๋˜๋ฉด ์–ธ์ œ๋“  ์‹œ๊ฐ„์€ ํ๋ฅผ ์ˆ˜ ์žˆ์Œ
  • TA์˜ ์‹œ๊ฐ„ ์ง„ํ–‰ semantics๋ฅผ ๋ณด์กด

4-3. ์‹œ๊ฐ„ ๊ฒฝ๊ณ„ ์ „์ด (Time Boundary Transition Rule)

(sl, v) โ”€dโ†’ (sl', v')   (0 < d < ฮต)
  • ec = x > n์ธ ๊ฒฝ์šฐ: v(x) = n์ผ ๋•Œ ์ „์ด๊ฐ€ ๋ฐœ์ƒํ•˜๊ณ , v'(x) = n + d
  • ec = x == n์ธ ๊ฒฝ์šฐ: v(x) + d = n์ด ๋˜๋Š” ์ˆœ๊ฐ„ ์ „์ด๊ฐ€ ๋ฐœ์ƒ

์ด๋ฅผ ํ†ตํ•ด TA์—์„œ ์•”๋ฌต์ ์ด๋˜ "x๊ฐ€ ์ •ํ™•ํžˆ n์ด ๋˜๋Š” ์ˆœ๊ฐ„"์„ ์ •๋ฐ€ํ•˜๊ฒŒ ๋ชจ๋ธ๋งํ•  ์ˆ˜ ์žˆ๋‹ค.


5. TADA์˜ ์žฅ์  (TA ๋Œ€๋น„)

TA TADA
์‹œ๊ฐ„ ์ง„ํ–‰์ด ์•”๋ฌต์  ์‹œ๊ฐ„ ์ง„ํ–‰์ด sub-location ์ „์ด๋กœ ๋ช…์‹œํ™”
invariant & guard๊ฐ€ ์„ž์—ฌ ์žˆ์Œ ์‹œ๊ฐ„ ์กฐ๊ฑด๊ณผ ํ–‰๋™ ์กฐ๊ฑด์„ ์™„์ „ํžˆ ๋ถ„๋ฆฌ
invariant ์œ„๋ฐ˜์„ ์ฝ”๋“œ์—์„œ ๊ฐ์ง€ํ•˜๊ธฐ ์–ด๋ ค์›€ violation sub-location ์ž๋™ ์ƒ์„ฑ
x == n์„ ์ •ํ™•ํ•œ ์‹œ์ ์—์„œ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์–ด๋ ค์›€ ๊ฐ ๊ฒฝ๊ณ„๊ฐ’์„ sub-location์œผ๋กœ ๊ตฌ์กฐํ™”
์ฝ”๋“œ ์ƒ์„ฑ ์‹œ ์˜๋ฏธ์  ๋ชจํ˜ธ์„ฑ ์ฝ”๋“œ ์ƒ์„ฑ์ด ์ง์ ‘์ ์ด๊ณ  deterministic

TADA๋Š” ๊ฒฐ๊ตญ ์‹œ๊ฐ„ ๋ชจ๋ธ์„ ์ •๊ทœํ™”(normalization)ํ•˜์—ฌ Go ์ฝ”๋“œ๋กœ์˜ ์ž๋™ ๋ณ€ํ™˜์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ํ•ต์‹ฌ ๋งค๊ฐœ์ฒด์ด๋‹ค.


6. ์ฝ”๋“œ ์ƒ์„ฑ(Go Translation) ๊ด€์ ์—์„œ TADA์˜ ์˜์˜

TADA๋ฅผ ๊ฑฐ์น˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ณ€ํ™˜์ด ๋งค์šฐ ๋‹จ์ˆœํ•ด์ง„๋‹ค.

TADA Go Code
sub-location Go label ๋ธ”๋ก
time transition (x == n) <- time.After(n*T - cur - ฮต)
time transition (x > n) <- time.After(n*T - cur)
action transition (ch?) <- ch
action transition (ch!) ch <- true
reset r x = time.Now()

์ฆ‰, TADA์˜ ๊ตฌ์กฐ๊ฐ€ ๊ณง Go ์ฝ”๋“œ์˜ ๊ตฌ์กฐ๊ฐ€ ๋œ๋‹ค. ๋…ผ๋ฌธ์—์„œ ์ œ์‹œํ•œ ํŒŒ์ดํ”„๋ผ์ธ์€ TA โ†’ TADA โ†’ Go๋กœ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ๋งคํ•‘๋˜๋ฉฐ, ์ตœ์ข…์ ์œผ๋กœ ์‹œ๊ฐ„ ๋ถˆ๋ณ€์‹ ๋ชจ๋‹ˆํ„ฐ๋ง๊นŒ์ง€ ์ž๋™ ๋‚ด์žฅ๋œ๋‹ค.


7. ๊ฒฐ๋ก : ์ฝ”๋“œ ์ƒ์„ฑ ์ˆ˜์ค€๊นŒ์ง€ ์˜๋ฏธ๋ฅผ ๋ณด์กดํ•˜๋Š” ์ •๊ทœํ™”๋œ ์ค‘๊ฐ„ ๋ชจ๋ธ

TADA๋Š” ๋‹ค์Œ์„ ๋™์‹œ์— ๋งŒ์กฑํ•˜๋Š” ํ˜•์‹ ๋ชจ๋ธ์ด๋‹ค.

  • TA์˜ ์˜๋ฏธ์™€ trace equivalence ์œ ์ง€
  • ์‹œ๊ฐ„ ๊ฒฝ๊ณ„ ์กฐ๊ฑด ๋ฐ invariant๋ฅผ ๋ช…์‹œ์ ์œผ๋กœ ๋ชจ๋ธ๋ง
  • action๊ณผ time์„ ์™„์ „ํžˆ ๋ถ„๋ฆฌ
  • violation state๋ฅผ ํ†ตํ•ด ๋Ÿฐํƒ€์ž„ ๋ชจ๋‹ˆํ„ฐ ๊ฐ€๋Šฅ
  • CSP ์Šคํƒ€์ผ Go ์ฝ”๋“œ์™€ ๋งค๋„๋Ÿฝ๊ฒŒ ๋งคํ•‘

์ฆ‰, TA์˜ ์ˆ˜ํ•™์  ๋ชจ๋ธ์„ ์‹ค์ œ ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ์ฝ”๋“œ๋กœ ์•ˆ์ „ํ•˜๊ฒŒ ๋ณ€ํ™˜ํ•˜๊ธฐ ์œ„ํ•œ ์ตœ์ ์˜ ์ค‘๊ฐ„ ํ‘œํ˜„(IR)์ด๋‹ค.

UPPAAL: Real-Time Timed Automata ๋ชจ๋ธ ๊ฒ€์ฆ ๋„๊ตฌ

1. UPPAAL ๊ฐœ์š”

UPPAAL์€ ๋ด๋งˆํฌ Aalborg University์™€ ์Šค์›จ๋ด Uppsala University๊ฐ€ ๊ฐœ๋ฐœํ•œ ์‹ค์‹œ๊ฐ„ ์‹œ์Šคํ…œ์šฉ Timed Automata ๋ชจ๋ธ๋ง ๋ฐ ๋ชจ๋ธ ์ฒด์ปค์ž…๋‹ˆ๋‹ค. ์ž„๋ฒ ๋””๋“œ ์ œ์–ด๊ธฐ, ํ†ต์‹  ํ”„๋กœํ† ์ฝœ, ์‚ฌ์ด๋ฒ„-๋ฌผ๋ฆฌ ์‹œ์Šคํ…œ(CPS) ๋“ฑ์—์„œ ์‹œ๊ฐ„ ์ œ์•ฝ์„ ํฌํ•จํ•œ ๋™์ž‘์˜ ์•ˆ์ „์„ฑยท์‘๋‹ต์„ฑยท๋ฐ๋“œ๋ก ์—ฌ๋ถ€๋ฅผ ๋ถ„์„ํ•˜๋Š” ๋ฐ ๋„๋ฆฌ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

๋ณธ ์—ฐ๊ตฌ์—์„œ๋Š” CPS์˜ ์†Œํ”„ํŠธ์›จ์–ด ์š”๊ตฌ์‚ฌํ•ญ๊ณผ ์šด์˜ ํ™˜๊ฒฝ์„ UPPAAL์—์„œ Timed Automata๋กœ ๋ชจ๋ธ๋งํ•˜๊ณ , ์—ฌ๊ธฐ์„œ ๊ฒ€์ฆ๋œ ๊ฒฐ๊ณผ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ TADA โ†’ Go ์ฝ”๋“œ โ†’ ๋Ÿฐํƒ€์ž„ ๋ชจ๋‹ˆํ„ฐ๋กœ ์—ฐ๊ฒฐํ•˜๋Š” TAโ€“TADAโ€“toโ€“Go ํŒŒ์ดํ”„๋ผ์ธ์˜ ์ถœ๋ฐœ์ ์œผ๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.


2. UPPAAL์˜ ์ฃผ์š” ํŠน์ง•

  • ๊ทธ๋ž˜ํ”ฝ ๊ธฐ๋ฐ˜ ๋ชจ๋ธ๋ง: ์œ„์น˜(location), ์ „์ด(transition), clock, invariant๋ฅผ GUI์—์„œ ์ง๊ด€์ ์œผ๋กœ ํŽธ์ง‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • Timed Automata ๋„คํŠธ์›Œํฌ ์ง€์›: ์—ฌ๋Ÿฌ automaton ์ธ์Šคํ„ด์Šค๋ฅผ ๋ณ‘๋ ฌ๋กœ ๊ตฌ์„ฑํ•˜๊ณ , ์ฑ„๋„(channel) ๋™๊ธฐํ™”๋ฅผ ํ†ตํ•ด ์ƒํ˜ธ์ž‘์šฉ์„ ๋ชจ๋ธ๋งํ•ฉ๋‹ˆ๋‹ค.
  • ์‹œ๋ฎฌ๋ ˆ์ด์…˜ & ๋””๋ฒ„๊น…: ๋ชจ๋ธ์„ step-by-step์œผ๋กœ ์‹คํ–‰ํ•ด ๋ณด๊ณ , clock ๊ฐ’๊ณผ ๋ณ€์ˆ˜ ๊ฐ’์„ ์ถ”์ ํ•˜๋ฉด์„œ ์„ค๊ณ„ ์˜ค๋ฅ˜๋ฅผ ์กฐ๊ธฐ์— ๋ฐœ๊ฒฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋ชจ๋ธ ์ฒดํ‚น(Verification): TCTL์˜ ๋ถ€๋ถ„์ง‘ํ•ฉ์œผ๋กœ ๊ตฌ์„ฑ๋œ UPPAAL ์ฟผ๋ฆฌ ์–ธ์–ด๋ฅผ ํ†ตํ•ด ๋„๋‹ฌ ๊ฐ€๋Šฅ์„ฑ, ์•ˆ์ „์„ฑ, ์‘๋‹ต์„ฑ, ๋ฐ๋“œ๋ก ๋ถ€์žฌ ๋“ฑ์„ ์ž๋™ ๊ฒ€์ฆํ•ฉ๋‹ˆ๋‹ค.
  • CPS ์‚ฌ๋ก€์— ์ ํ•ฉํ•œ ํ™•์žฅ: integer / bool ๋ณ€์ˆ˜, urgent / committed location, broadcast channel ๋“ฑ ์‹ค์ œ ์‹œ์Šคํ…œ์— ๊ฐ€๊นŒ์šด ๋ชจ๋ธ๋ง์„ ์œ„ํ•œ ๋‹ค์–‘ํ•œ ํ™•์žฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

3. ๋ชจ๋ธ๋ง: Timed Automata ๋„คํŠธ์›Œํฌ ๋ฌธ๋ฒ•

UPPAAL์—์„œ ํ•˜๋‚˜์˜ ์‹œ์Šคํ…œ์€ Timed Automata ๋„คํŠธ์›Œํฌ๋กœ ํ‘œํ˜„๋ฉ๋‹ˆ๋‹ค. ๊ฐ automaton์€ ๋‹ค์Œ ์š”์†Œ๋กœ ์ด๋ฃจ์–ด์ง‘๋‹ˆ๋‹ค.

  • Locations: ์‹œ์Šคํ…œ์˜ ์ถ”์ƒ ์ƒํƒœ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๋…ธ๋“œ
  • Edges (Transitions): guard, synchronisation, update๋ฅผ ํฌํ•จํ•˜๋Š” ์ „์ด
  • Clocks: ์‹ค์‹œ๊ฐ„ ์ œ์•ฝ์„ ํ‘œํ˜„ํ•˜๋Š” ์—ฐ์† ๋ณ€์ˆ˜
  • Invariants: ๊ฐ location์—์„œ ํ—ˆ์šฉ๋˜๋Š” clock ๋ฒ”์œ„
  • Data variables: int, bool ๋“ฑ ์ด์‚ฐ ์ƒํƒœ ๋ณ€์ˆ˜

์ „์ด๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํ˜•์‹์œผ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค.

// edge: source --[guard, sync, update]--> target
source -- [ x <= 5,   press?,   y := 0 ] --> target
  • guard: ์ „์ด๊ฐ€ ํ™œ์„ฑํ™”๋˜๊ธฐ ์œ„ํ•œ clock/๋ณ€์ˆ˜ ์กฐ๊ฑด (์˜ˆ: x > 5)
  • sync: press?, press!์™€ ๊ฐ™์€ ์ฑ„๋„ ๋™๊ธฐํ™”
  • update: clock reset ๋ฐ ๋ณ€์ˆ˜ ๊ฐฑ์‹  (์˜ˆ: y := 0)

4. ๊ฒ€์ฆ ์ฟผ๋ฆฌ ์–ธ์–ด (UPPAAL Query Language)

UPPAAL์€ TCTL์˜ ๋ถ€๋ถ„์ง‘ํ•ฉ ๊ธฐ๋ฐ˜ ์ฟผ๋ฆฌ ์–ธ์–ด๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋Œ€ํ‘œ์ ์ธ ์—ฐ์‚ฐ์ž๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • A[] ฯ• : ๋ชจ๋“  ์‹คํ–‰ ๊ฒฝ๋กœ์—์„œ ํ•ญ์ƒ ฯ•๊ฐ€ ์„ฑ๋ฆฝ (safety)
  • E<> ฯ• : ์–ด๋–ค ์‹คํ–‰ ๊ฒฝ๋กœ์—์„œ๋Š” ์–ธ์  ๊ฐ€ ฯ•์— ๋„๋‹ฌ (reachability)
  • A<> ฯ• : ๋ชจ๋“  ์‹คํ–‰ ๊ฒฝ๋กœ์—์„œ ์–ธ์  ๊ฐ€ ฯ•์— ๋„๋‹ฌ (liveness)
  • E[] ฯ• : ์–ด๋–ค ์‹คํ–‰ ๊ฒฝ๋กœ์—์„œ๋Š” ํ•ญ์ƒ ฯ•๊ฐ€ ์œ ์ง€

๋ณธ ์—ฐ๊ตฌ์—์„œ๋Š” ์ด๋Ÿฌํ•œ ์ฟผ๋ฆฌ๋ฅผ ์ด์šฉํ•ด ํƒ€์ด๋ฐ ์ œ์•ฝ, ๋ฐ๋“œ๋ก ๋ถ€์žฌ, ์‘๋‹ต ์‹œ๊ฐ„ ๋“ฑ CPS ์š”๊ตฌ์‚ฌํ•ญ์„ TA ๋ชจ๋ธ ์ˆ˜์ค€์—์„œ ๋จผ์ € ๊ฒ€์ฆํ•ฉ๋‹ˆ๋‹ค.


5. ์˜๋ฏธ๋ก ๊ณผ ๋ถ„์„ ๊ธฐ๋Šฅ

UPPAAL์˜ ์˜๋ฏธ๋ก ์€ Timed Automata ๋„คํŠธ์›Œํฌ์— ๋Œ€ํ•œ ์ƒํƒœ ๊ณต๊ฐ„์œผ๋กœ ์ •์˜๋ฉ๋‹ˆ๋‹ค. ํ•˜๋‚˜์˜ ์ƒํƒœ๋Š” ๊ฐ automaton์˜ ์œ„์น˜์™€ clock/๋ณ€์ˆ˜ ๊ฐ’์„ ํฌํ•จํ•˜๋Š” ํŠœํ”Œ์ž…๋‹ˆ๋‹ค.

  • ์ƒํƒœ = (loc1, ..., locn, v) โ€“ ๊ฐ loci๋Š” i๋ฒˆ์งธ automaton์˜ location, โ€“ v๋Š” ๋ชจ๋“  clock๊ณผ ๋ฐ์ดํ„ฐ ๋ณ€์ˆ˜์˜ ๊ฐ’.
  • ์‹œ๊ฐ„ ์ง„ํ–‰๊ณผ ์ด์‚ฐ ์ „์ด๊ฐ€ ๊ฒฐํ•ฉ๋œ hybrid transition system์„ ๊ตฌ์„ฑ.
  • ์ƒํƒœ ๊ณต๊ฐ„์„ symbolicํ•˜๊ฒŒ ํ‘œํ˜„ํ•˜๊ธฐ ์œ„ํ•ด zone, DBM์„ ์‚ฌ์šฉํ•˜์—ฌ, ์‹ค์ˆ˜ clock์— ๋Œ€ํ•ด ๋ฌดํ•œํ•œ ์‹œ๊ฐ„ ์˜์—ญ์„ ํšจ์œจ์ ์œผ๋กœ ํƒ์ƒ‰.

์ด๋Ÿฌํ•œ ์˜๋ฏธ๋ก ๊ณผ symbolic ๊ธฐ์ˆ  ๋•๋ถ„์—, UPPAAL์€ ๋ณต์žกํ•œ CPS ๋ชจ๋ธ์— ๋Œ€ํ•ด์„œ๋„ ์‹œ๊ฐ„ ๊ด€๋ จ ์†์„ฑ์„ ์ž๋™์œผ๋กœ ๊ฒ€์ฆํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


6. TAโ€“TADAโ€“toโ€“Go ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ์˜ UPPAAL ์—ญํ• 

TAโ€“TADAโ€“toโ€“Go ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ UPPAAL์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

  • CPS์˜ ์†Œํ”„ํŠธ์›จ์–ด ์š”๊ตฌ์‚ฌํ•ญ๊ณผ ์šด์˜ ํ™˜๊ฒฝ์„ Timed Automata๋กœ ๋ชจ๋ธ๋งํ•˜๋Š” ํ”„๋ŸฐํŠธ์—”๋“œ ๋„๊ตฌ ์—ญํ• 
  • Timed-CTL ๊ธฐ๋ฐ˜ ์ฟผ๋ฆฌ๋ฅผ ํ†ตํ•ด ์•ˆ์ „์„ฑ, ๋ฐ๋“œ๋ก ๋ถ€์žฌ, ์‘๋‹ต ์‹œ๊ฐ„ ๋“ฑ์„ ์‚ฌ์ „์— ๊ฒ€์ฆํ•˜๊ณ , ๋ชจ๋ธ ์ˆ˜์ค€์—์„œ ์˜ค๋ฅ˜๋ฅผ ์ œ๊ฑฐ
  • ๊ฒ€์ฆ์ด ๋๋‚œ TA ๋ชจ๋ธ์„ TADA ๋ณ€ํ™˜๊ธฐ์˜ ์ž…๋ ฅ์œผ๋กœ ์ œ๊ณตํ•˜์—ฌ, ์ดํ›„ TADA โ†’ Go ์ฝ”๋“œ โ†’ ๋Ÿฐํƒ€์ž„ ๋ชจ๋‹ˆํ„ฐ๋กœ ์ด์–ด์ง€๋Š” ์ž๋™ํ™”๋œ ์ฝ”๋”ฉยท๋ชจ๋‹ˆํ„ฐ๋ง ํŒŒ์ดํ”„๋ผ์ธ์˜ ์‹ ๋ขฐ์„ฑ์„ ๋ณด์žฅ

7. ๊ฒฐ๋ก : CPS ์‹ ๋ขฐ์„ฑ ๊ฒ€์ฆ์„ ์œ„ํ•œ ํ‘œ์ค€ ๋„๊ตฌ

UPPAAL์€ ์‹ค์‹œ๊ฐ„ ์‹œ์Šคํ…œ์˜ ์ •ํ˜• ๋ชจ๋ธ๋ง๊ณผ ์ž๋™ ๊ฒ€์ฆ์„ ์œ„ํ•œ ์‚ฌ์‹ค์ƒ์˜ ํ‘œ์ค€ ๋„๊ตฌ๋กœ, TAโ€“TADAโ€“toโ€“Go ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ๋„ ํƒ€์ž„๋“œ ์˜คํ† ๋งˆํƒ€ ๊ธฐ๋ฐ˜ ์š”๊ตฌ์‚ฌํ•ญ ๊ฒ€์ฆ์˜ ๊ธฐ๋ฐ˜์„ ์ œ๊ณตํ•˜๋Š” ํ•ต์‹ฌ ๊ตฌ์„ฑ ์š”์†Œ์ž…๋‹ˆ๋‹ค. UPPAAL์—์„œ ๊ฒ€์ฆ๋œ ๋ชจ๋ธ์€ ์ดํ›„ TADA๋กœ ์ •๊ทœํ™”๋˜๊ณ , Go ์ฝ”๋“œ์™€ ๋Ÿฐํƒ€์ž„ ๋ชจ๋‹ˆํ„ฐ๋กœ ์ž๋™ ๋ณ€ํ™˜๋จ์œผ๋กœ์จ ํ˜•์‹ ๊ฒ€์ฆ์—์„œ ์‹ค์ œ ์‹คํ–‰ ํ™˜๊ฒฝ๊นŒ์ง€ ์ผ๊ด€๋œ ์‹ ๋ขฐ์„ฑ ๋ณด์ฆ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.