This page covers projects on formal methods of cyber-physical systems (CPS), including timing, safety, and correctness guarantees.
Verified Environment + Verified Learning ๊ธฐ๋ฐ์ ์์ ํ ์ง๋ฅํ ์์คํ ๊ตฌ์ถ
์ฌ์ด๋ฒ-๋ฌผ๋ฆฌ ์์คํ (CPS)๊ณผ ์ง๋ฅํ ์์คํ ์์ ๋จ์ํ ์คํ๋ผ์ธ ๊ฒ์ฆ(Offline Verification)์ด ์๋๋ผ, ํ์ ๊ฒ์ฆ(Formal Verification)์์ ์คํ ์ฝ๋ ์์ฑ(Code Generation) ๋ฐ ๋ฐํ์ ๋ชจ๋ํฐ๋ง(Runtime Monitoring)๊น์ง ์ด์ด์ง๋ "End-to-End Verified System Pipeline"์ ๊ตฌ์ถํ๋ ๊ฒ์ด ์ ์ฒด์ ์ธ ์ฐ๊ตฌ ๋น์ ์ ๋๋ค.
์ด ๋น์ ์ ๋ค์๊ณผ ๊ฐ์ ํต์ฌ ๋ชฉํ๋ฅผ ๊ฐ์ง๋๋ค:
์ง๋ฅํ ์์คํ ์ด ์ํธ์์ฉํ๋ ํ๊ฒฝ์ ์ ๋ฐํ๊ฒ ํ์ํ(Formalize)ํ๊ณ , ๊ฒ์ฆ๋ ํ๊ฒฝ์์๋ง ์์คํ ์ด ์คํ๋๋๋ก ๋ง๋๋ ํต์ฌ ๊ธฐ์ ์ถ์ ๋๋ค. ํ๊ฒฝ์ ์๊ฐยท๋ ผ๋ฆฌ ์ ์ฝ์ ๋ช ํํ๊ฒ ์ ์ํ๊ณ , ์คํ ๋จ๊ณ๊น์ง ์์ ์ฑ์ ๋ณด์ฆํฉ๋๋ค.
ํ์ค ํ๊ฒฝ์ ์๊ฐ, ์์, ์ ์ฝ ์กฐ๊ฑด์ Timed Automata (TA)๋ก ๋ชจ๋ธ๋งํ์ฌ ์์คํ ์ด ์ ๋ ์๋ฐํด์๋ ์ ๋๋ ์์ ๊ฒฝ๊ณ(safety envelope)๋ฅผ ์ ์ํฉ๋๋ค. TA ๋ชจ๋ธ์ UPPAAL ๋ฑ์ ๋ชจ๋ธ์ฒด์ปค๋ฅผ ํตํด safety, liveness, deadline ๋ฑ์ ์๋ ๊ฒ์ฆํฉ๋๋ค.
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๊ฐ ํจ๊ป ์์ฑ๋ฉ๋๋ค.
TA/TADA๋ก ๊ฒ์ฆ๋ ํ๊ฒฝ์ ๊ธฐ๋ฐ์ผ๋ก Vision, LLM, RL, Control ๋ชจ๋์ด ํญ์ ์์ ์ ์ฝ ์๋์์๋ง ํ๋ํ๋๋ก ๊ฐ์ ํ๋ ์คํ ํ๊ฒฝ์ ๊ตฌ์ฑํฉ๋๋ค. ์ํํ ํ๋์ด ๋ฐ์ํ๋ฉด ์ฆ์ ์ฐจ๋จ๋๋ฉฐ, AI๊ฐ ํ์ตยท์ถ๋ก ์ค ์๋ชป๋ ์ ์ฑ ์ ํ์ฑํ๋ ๊ฒ์ ๊ตฌ์กฐ์ ์ผ๋ก ๋ฐฉ์งํฉ๋๋ค.
Embodied AI, World Model, Reinforcement Learning์ด ์๋ชป๋ ์ธ๊ณ๋ฅผ ์์ฑํ๊ฑฐ๋ ์ํํ ์ ์ฑ ์ ํ์ตํ์ง ์๋๋ก ๋ชจ๋ธ์ฒดํน ๊ธฐ๋ฐ ์์ ์ฑ์ ํตํฉํ๋ ์ฐ๊ตฌ ์ถ์ ๋๋ค.
World Model์ด ์์ฑํ๋ ์ํ(state)์ ์ ์ด(transition)๊ฐ ๋ฌผ๋ฆฌ์ ยท๋ ผ๋ฆฌ์ ์ ์ฝ์ ์๋ฐํ์ง ์๋๋ก ๊ฒ์ฆํฉ๋๋ค. ์๋ชป๋ dynamics๋ ๋นํ์ค์ ์๋๋ฆฌ์ค๊ฐ AI์ ์ ์ฑ ํ์ต์ ์ค์ผ์ํค์ง ์๋๋ก ๋ณด์ฅํฉ๋๋ค.
RL์ exploration๊ณผ policy-learning ๊ณผ์ ์์ ๋ฐ์ํ๋ ์ํ ํ๋์ Verified Environment์ Formal Safety Shields๋ฅผ ํตํด ์ฆ์ ์ฐจ๋จํฉ๋๋ค. ์ด๋ก์จ RL์ด ์์ ์ ์ฝ ์์์๋ง ํ์ตํ ์ ์๋ Safe Learning Framework๋ฅผ ์ ๊ณตํฉ๋๋ค.
World Model ๋ฐ Embodied AI๊ฐ ์์ฑํ๋ counterfactual ์๋๋ฆฌ์ค์ ํ์์ ์ ์ฝ์ ๋ถ์ฌํ์ฌ, ํ์ค์ ์ด๊ณ ์์ ํ ์๋ฎฌ๋ ์ด์ ๋ง ์์ฑํ๋๋ก ๋ณด์ฅํฉ๋๋ค. ์ด๋ AI๊ฐ ์๋ชป๋ ๊ฐ์ ์ด๋ ์ํํ ์๋๋ฆฌ์ค๋ฅผ ํ์ตํ๋ ๊ฒ์ ๋ฐฉ์งํฉ๋๋ค.
FM-U1์ ํ๊ฒฝ์ ์ ํ์ ์ผ๋ก ๋ชจ๋ธ๋งํ๊ณ ๊ฒ์ฆํ๋ฉฐ ์คํ๊น์ง ์ฐ๊ฒฐํ๋ ๊ธฐ์ ๋ก, ์์คํ ์ด ์ด๋ค AI ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ๋๋ผ๋ ์์ ํ ํ๊ฒฝ ์์์๋ง ๋์ํ๊ฒ ํฉ๋๋ค.
FM-U2๋ Embodied AI, World Model, RL์ด ์ํํ ์ํ๋ ์ ์ฑ ์ ์์ฑํ์ง ์๋๋ก ํ์ตยท์๋ฎฌ๋ ์ด์ ๋จ๊ณ์์๋ถํฐ ๋ชจ๋ธ์ฒดํน์ ํตํฉํ์ฌ Verified Learning์ ์คํํฉ๋๋ค.
๋ ๊ธฐ์ ์ด ๊ฒฐํฉํ์ฌ, Perception โ Reasoning/Planning โ Control โ Execution โ Learning ์ ์ฒด ๋ฃจํ๊ฐ ์์ ์ฑ์ ๊ฐ์ถ Verified Intelligent System์ ๊ตฌ์ฑํ๊ฒ ๋ฉ๋๋ค.
TAโTADAโtoโGo ํ์ดํ๋ผ์ธ: ํ์ ๊ฒ์ฆ → ์๋ ์ฝ๋ ์์ฑ → ๋ฐํ์ ๋ชจ๋ํฐ๋ง
๋ณธ ์ฐ๊ตฌ๋ ์์จ์ฃผํ, ์ฐ์ ์๋ํ ๋ฑ๊ณผ ๊ฐ์ ์์ ํ์(Critical) ์ฌ์ด๋ฒ-๋ฌผ๋ฆฌ ์์คํ (CPS)์์ ์๊ตฌ๋๋ ์ ํ์ฑยท์์ ์ฑยท์๊ฐ์ ์ ์ฝ ์ค์๋ฅผ ๋ณด์ฅํ๊ธฐ ์ํ ์๋ก์ด ํตํฉ ์ ๊ทผ๋ฒ์ ์ ์ํ๋ค. ๊ธฐ์กด Timed Automata(TA) ๋ฐ UPPAAL ๊ธฐ๋ฐ ์คํ๋ผ์ธ ํ์ ๊ฒ์ฆ์ ์ด๋ก ์ ์ผ๋ก ๊ฐ๋ ฅํ์ง๋ง, ์ด๋ฅผ ์ค์ ์คํ ๊ฐ๋ฅํ ์ฝ๋๋ก ๋ณํํ๋ ๊ณผ์ ์์ ์๋ฏธ ์์ค์ด ๋ฐ์ํ๊ฑฐ๋, ๋ ๊ฑฐ์ ROS ์์คํ ยท์ผ์ ์ง์ฐยท์ค์ผ์ค๋ง ๋ณ๋์ผ๋ก ์ธํด ๋ฐํ์ ์๋ฐ์ด ๋ฐ์ํ ์ํ์ด ๋จ์ ์๋ค.
์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๋ณธ ์ฐ๊ตฌ๋ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด ํ์ ๊ฒ์ฆ(Verification) โ TADA ๊ธฐ๋ฐ ์๋ ์ฝ๋ ์์ฑ(Implementation) โ Go ์คํ ๋ฐ ๋ฐํ์ ๋ชจ๋ํฐ๋ง(Execution)์ผ๋ก ์ด์ด์ง๋ 3๋จ๊ณ ํ์ดํ๋ผ์ธ TAโTADAโtoโGo๋ฅผ ์ ์ํ๋ค.
์ฒซ ๋จ๊ณ์์๋ UPPAAL์ ์ฌ์ฉํด CPS์ ์์ ํ์ ์ปดํฌ๋ํธ๋ฅผ Timed Automata๋ก ๋ชจ๋ธ๋งํ๊ณ , Timed-CTL ๊ธฐ๋ฐ ์์ฑ ๊ฒ์ฆ์ ์ํํ๋ค.
TA ๋ชจ๋ธ์ ์ง์ ์ฝ๋๋ก ๋ณํํ๋ฉด ์๊ฐ ์๋ฏธ(semantics)๊ฐ ๋ชจํธํด์ง๊ธฐ ์ฝ๋ค. ์ด๋ฅผ ํด์ํ๊ธฐ ์ํด ๋ณธ ์ฐ๊ตฌ๋ ์๋ก์ด ํ์ ๋ชจ๋ธ์ธ TADA (Timed Automata with Disjoint Actions)๋ฅผ ๋์ ํ๋ค.
x == n, x > n ๋ฑ ์๊ฐ ๊ฒฝ๊ณ ์กฐ๊ฑด์ ๋ช
์์ ์ผ๋ก ๋ชจ๋ธ๋งํ์ฌ
Go์ select ๋ฌธ, time.After()์ ์์ฐ์ค๋ฝ๊ฒ ๋งคํ
์ด ๊ณผ์ ์ ํตํด TA โ TADA โ Go๋ก ์ด์ด์ง๋ ์์ ์๋ํ ์ฝ๋ ์์ฑ ํ์ดํ๋ผ์ธ์ ๊ตฌ์ถํ์๋ค.
TADA๋ก๋ถํฐ ์์ฑ๋ Go ์ฝ๋๋ ๋ค์ ๋ ๊ฐ์ง ๊ตฌ์ฑ ์์๋ฅผ ํฌํจํ๋ค.
goto๋ฅผ ์ด์ฉํด ์ ์ด ๊ตฌํtime.Now(), time.Since(), time.After()๋ฅผ ์ด์ฉํด
๋
ผ๋ฆฌ์ clock์ ์ค์ ์๊ฐ์ผ๋ก ๋งคํx โค n, x == n ๋ฑ์ ์ ์ฝ ์๋ฐ์ด ๋ฐ์ํ๋ฉด
์๋ฐ ์ฑ๋(violation channel)์ ํตํด ์๋ ์ ์ก์ด์ ๊ฐ์ด ์คํ๋ผ์ธ ํ์ ๊ฒ์ฆ + ์จ๋ผ์ธ ๋ชจ๋ํฐ๋ง์ ๊ฒฐํฉํจ์ผ๋ก์จ, ์์ ๋ชจ๋ธ ๊ฒ์ฆ๋ง์ผ๋ก๋ ์ก๊ธฐ ์ด๋ ค์ด ์คํ ์ ํ์ด๋ฐ ๋ฌธ์ ๊น์ง ํฌ์ฐฉํ ์ ์๋ค.
์ ์ ํ๋ ์์ํฌ๋ฅผ ROS ๊ธฐ๋ฐ ์ฐ์ ์ ์ด ์์คํ ์ ์ ์ฉํ์ฌ ๋ค์๊ณผ ๊ฐ์ ๊ฒฐ๊ณผ๋ฅผ ํ์ธํ์๋ค.
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
๊ทธ๋ฆผ: ๋ ๋จ๊ณ ๋ฐ๊ธฐ ๋จํ(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์ ์๋ฏธํ๋ค.
๊ธฐ์กด Timed Automata(TA)๋ ์๊ฐ ์งํ(time progression)์ด ์๋ฌต์ (implicit)์ด๊ณ , ์์น(location)์ ๋ถ์ invariant์ guard๊ฐ ๋ค์์ฌ ์์ด์ ์ค์ ์ฝ๋๋ก ๋ณํํ ๋ ์๊ฐ ์๋ฏธ๊ฐ ๋ชจํธํด์ง๋ ๋ฌธ์ ๊ฐ ์๋ค.
x โค n)๋ฅผ ์ด๊ฒผ๋์ง ๋ฐํ์์์ ๊ฐ์งํ๊ธฐ ์ด๋ ค์x == n ๋ฑ)์ ์ฝ๋๋ก ์ ํํ ๋งคํํ๊ธฐ ์ด๋ ค์์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๋ ผ๋ฌธ์์๋ TADA๋ผ๋ ์๋ก์ด ์ค๊ฐ ํํ(Intermediate Formalism)์ ๋์ ํ๋ค. TADA์ ๋ชฉ์ ์ ๋ค์ ๋ ๊ฐ์ง์ด๋ค.
๊ฐ 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) |
์ด์ ๊ฐ์ด ๋ถํดํ๋ฉด ์๊ฐ ํ๋ฆ์ด ๋จ๊ณ๋ณ๋ก ๋ช ํํ๊ฒ ๋๋ฌ๋๋ค.
๊ธฐ์กด TA์์๋ ์๊ฐ ์ ์ด์ ๋์ ์ ์ด๊ฐ ํ ์์น์์ ์ฝํ ์์ด ๋ชจํธํ๋ค. TADA์์๋ ๋ค์๊ณผ ๊ฐ์ด ๋ถ๋ฆฌํ๋ค.
ec์ ์ํด ๋ฐ์a(!/?), reset ์งํฉ r์ ์ํด ๋ฐ์์๊ฐ๊ณผ ๋์์ ์ฑ ์์ด ๋ถ๋ฆฌ๋๋ฏ๋ก ๊ตฌํ์ด ๋จ์ํด์ง๊ณ ์๋ฏธ๊ฐ ๋ช ํํด์ง๋ค.
TADA๋ x == n, x > n, x โค n ๋ฑ TA ์กฐ๊ฑด์
๋ช
์์ ์ธ sub-location ๊ฐ ์ ์ด๋ก ๋ณํํ๋ค.
์๋ฅผ ๋ค์ด x == n์ "x๊ฐ ์ ํํ n์ด ๋๋ ๊ทธ ์๊ฐ"์ ๋ํ๋ด๋
๋ณ๋์ sub-location์ผ๋ก ๋ชจ๋ธ๋ง๋๋ค.
TA์์๋ invariant ์๋ฐ์ด "ํ์ฉ๋์ง ์๋ ์ํ"๋ก๋ง ํํ๋์ง๋ง, TADA์์๋ violation sub-location์ ๋ช ์์ ์ผ๋ก ์์ฑํ๋ค. ์คํ ์ค ์ด๊ณณ์ ๋๋ฌํ๋ฉด ์๊ฐ ์ ์ฝ ์๋ฐ์ผ๋ก ์ธ์ํ๊ณ , Go ๋ชจ๋ํฐ๊ฐ ์ด๋ฅผ ๊ฐ์งํ์ฌ ์๋์ ๋ฐ์์ํค๋๋ก ์ค๊ณํ๋ค.
TADA๋ก ๋ณํํ๋๋ผ๋ ์๋ TA์ ๋์ผํ observable trace๋ฅผ ๋ณด์ฅํ๋ค. ๋ฐ๋ผ์ ํ์์ ๊ฒ์ฆ ๊ฒฐ๊ณผ๊ฐ ์ฝ๋ ์์ฑ ํ์๋ ์๋ฏธ๋ฅผ ์์ง ์๋๋ค.
๋ ผ๋ฌธ ์ ์(Definition 2)์ ๋ฐ๋ฅด๋ฉด TADA๋ ๋ค์๊ณผ ๊ฐ์ ํํ๋ก ์ ์๋๋ค.
TADA = โจL, lโ, X, A, Eโฉ
sl โa,rโ l'
sl: sub-locationa: action (ฯ, ch!, ch?)r: reset setl': ๋์ฐฉ locationsl โecโ sl'
sl, sl': ๊ฐ์ ์๋ location์์ ํ์๋ sub-locationec: enabling condition (์: x == n, x > n)๊ฐ sub-location sl์ ๋ค์ ์ ๋ณด๋ฅผ ๊ฐ์ง๋ค.
interval(Low_1) = (5,60))TADA์ ์๋ฏธ๋ก ์ Labeled Transition System(LTS)์ผ๋ก ์ ์๋๋ค (Definition 3). ์ํ๋ ๋ค์๊ณผ ๊ฐ์ ์์ด๋ค.
State = (sl, v)
sl: sub-locationv: clock valuationv(clock(sl))๋ ๋ฐ๋์ interval(sl) ์์ ์์ด์ผ ํ๋ค.(sl, v) โaโ (sl', v')
sl'๋ action์ target location์ ์ํ๋ sub-locationv' = v[r] (reset ์ํ)v'๊ฐ interval(sl') ์์ ์์ด์ผ ํจ(sl, v) โdโ (sl, v + d)
d > 0 ๋์ interval(sl) ์กฐ๊ฑด์ด ์ ์ง๋๋ฉด ์ธ์ ๋ ์๊ฐ์ ํ๋ฅผ ์ ์์(sl, v) โdโ (sl', v') (0 < d < ฮต)
x > n์ธ ๊ฒฝ์ฐ: v(x) = n์ผ ๋ ์ ์ด๊ฐ ๋ฐ์ํ๊ณ , v'(x) = n + dx == n์ธ ๊ฒฝ์ฐ: v(x) + d = n์ด ๋๋ ์๊ฐ ์ ์ด๊ฐ ๋ฐ์
์ด๋ฅผ ํตํด TA์์ ์๋ฌต์ ์ด๋ "x๊ฐ ์ ํํ n์ด ๋๋ ์๊ฐ"์
์ ๋ฐํ๊ฒ ๋ชจ๋ธ๋งํ ์ ์๋ค.
| TA | TADA |
|---|---|
| ์๊ฐ ์งํ์ด ์๋ฌต์ | ์๊ฐ ์งํ์ด sub-location ์ ์ด๋ก ๋ช ์ํ |
| invariant & guard๊ฐ ์์ฌ ์์ | ์๊ฐ ์กฐ๊ฑด๊ณผ ํ๋ ์กฐ๊ฑด์ ์์ ํ ๋ถ๋ฆฌ |
| invariant ์๋ฐ์ ์ฝ๋์์ ๊ฐ์งํ๊ธฐ ์ด๋ ค์ | violation sub-location ์๋ ์์ฑ |
x == n์ ์ ํํ ์์ ์์ ์ฒ๋ฆฌํ๊ธฐ ์ด๋ ค์ |
๊ฐ ๊ฒฝ๊ณ๊ฐ์ sub-location์ผ๋ก ๊ตฌ์กฐํ |
| ์ฝ๋ ์์ฑ ์ ์๋ฏธ์ ๋ชจํธ์ฑ | ์ฝ๋ ์์ฑ์ด ์ง์ ์ ์ด๊ณ deterministic |
TADA๋ ๊ฒฐ๊ตญ ์๊ฐ ๋ชจ๋ธ์ ์ ๊ทํ(normalization)ํ์ฌ Go ์ฝ๋๋ก์ ์๋ ๋ณํ์ ๊ฐ๋ฅํ๊ฒ ๋ง๋๋ ํต์ฌ ๋งค๊ฐ์ฒด์ด๋ค.
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๋ก ์์ฐ์ค๋ฝ๊ฒ ๋งคํ๋๋ฉฐ, ์ต์ข ์ ์ผ๋ก ์๊ฐ ๋ถ๋ณ์ ๋ชจ๋ํฐ๋ง๊น์ง ์๋ ๋ด์ฅ๋๋ค.
TADA๋ ๋ค์์ ๋์์ ๋ง์กฑํ๋ ํ์ ๋ชจ๋ธ์ด๋ค.
์ฆ, TA์ ์ํ์ ๋ชจ๋ธ์ ์ค์ ์คํ ๊ฐ๋ฅํ ์ฝ๋๋ก ์์ ํ๊ฒ ๋ณํํ๊ธฐ ์ํ ์ต์ ์ ์ค๊ฐ ํํ(IR)์ด๋ค.
UPPAAL์ ๋ด๋งํฌ Aalborg University์ ์ค์จ๋ด Uppsala University๊ฐ ๊ฐ๋ฐํ ์ค์๊ฐ ์์คํ ์ฉ Timed Automata ๋ชจ๋ธ๋ง ๋ฐ ๋ชจ๋ธ ์ฒด์ปค์ ๋๋ค. ์๋ฒ ๋๋ ์ ์ด๊ธฐ, ํต์ ํ๋กํ ์ฝ, ์ฌ์ด๋ฒ-๋ฌผ๋ฆฌ ์์คํ (CPS) ๋ฑ์์ ์๊ฐ ์ ์ฝ์ ํฌํจํ ๋์์ ์์ ์ฑยท์๋ต์ฑยท๋ฐ๋๋ก ์ฌ๋ถ๋ฅผ ๋ถ์ํ๋ ๋ฐ ๋๋ฆฌ ์ฌ์ฉ๋ฉ๋๋ค.
๋ณธ ์ฐ๊ตฌ์์๋ CPS์ ์ํํธ์จ์ด ์๊ตฌ์ฌํญ๊ณผ ์ด์ ํ๊ฒฝ์ UPPAAL์์ Timed Automata๋ก ๋ชจ๋ธ๋งํ๊ณ , ์ฌ๊ธฐ์ ๊ฒ์ฆ๋ ๊ฒฐ๊ณผ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก TADA โ Go ์ฝ๋ โ ๋ฐํ์ ๋ชจ๋ํฐ๋ก ์ฐ๊ฒฐํ๋ TAโTADAโtoโGo ํ์ดํ๋ผ์ธ์ ์ถ๋ฐ์ ์ผ๋ก ์ฌ์ฉํฉ๋๋ค.
UPPAAL์์ ํ๋์ ์์คํ ์ Timed Automata ๋คํธ์ํฌ๋ก ํํ๋ฉ๋๋ค. ๊ฐ automaton์ ๋ค์ ์์๋ก ์ด๋ฃจ์ด์ง๋๋ค.
์ ์ด๋ ๋ค์๊ณผ ๊ฐ์ ํ์์ผ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค.
// edge: source --[guard, sync, update]--> target
source -- [ x <= 5, press?, y := 0 ] --> target
x > 5)press?, press!์ ๊ฐ์ ์ฑ๋ ๋๊ธฐํy := 0)UPPAAL์ TCTL์ ๋ถ๋ถ์งํฉ ๊ธฐ๋ฐ ์ฟผ๋ฆฌ ์ธ์ด๋ฅผ ์ฌ์ฉํฉ๋๋ค. ๋ํ์ ์ธ ์ฐ์ฐ์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
๋ณธ ์ฐ๊ตฌ์์๋ ์ด๋ฌํ ์ฟผ๋ฆฌ๋ฅผ ์ด์ฉํด ํ์ด๋ฐ ์ ์ฝ, ๋ฐ๋๋ก ๋ถ์ฌ, ์๋ต ์๊ฐ ๋ฑ CPS ์๊ตฌ์ฌํญ์ TA ๋ชจ๋ธ ์์ค์์ ๋จผ์ ๊ฒ์ฆํฉ๋๋ค.
UPPAAL์ ์๋ฏธ๋ก ์ Timed Automata ๋คํธ์ํฌ์ ๋ํ ์ํ ๊ณต๊ฐ์ผ๋ก ์ ์๋ฉ๋๋ค. ํ๋์ ์ํ๋ ๊ฐ automaton์ ์์น์ clock/๋ณ์ ๊ฐ์ ํฌํจํ๋ ํํ์ ๋๋ค.
loci๋ i๋ฒ์งธ automaton์ location,
โ v๋ ๋ชจ๋ clock๊ณผ ๋ฐ์ดํฐ ๋ณ์์ ๊ฐ.์ด๋ฌํ ์๋ฏธ๋ก ๊ณผ symbolic ๊ธฐ์ ๋๋ถ์, UPPAAL์ ๋ณต์กํ CPS ๋ชจ๋ธ์ ๋ํด์๋ ์๊ฐ ๊ด๋ จ ์์ฑ์ ์๋์ผ๋ก ๊ฒ์ฆํ ์ ์์ต๋๋ค.
TAโTADAโtoโGo ํ๋ ์์ํฌ์์ UPPAAL์ ๋ค์๊ณผ ๊ฐ์ ์ญํ ์ ์ํํฉ๋๋ค.
UPPAAL์ ์ค์๊ฐ ์์คํ ์ ์ ํ ๋ชจ๋ธ๋ง๊ณผ ์๋ ๊ฒ์ฆ์ ์ํ ์ฌ์ค์์ ํ์ค ๋๊ตฌ๋ก, TAโTADAโtoโGo ํ๋ ์์ํฌ์์๋ ํ์๋ ์คํ ๋งํ ๊ธฐ๋ฐ ์๊ตฌ์ฌํญ ๊ฒ์ฆ์ ๊ธฐ๋ฐ์ ์ ๊ณตํ๋ ํต์ฌ ๊ตฌ์ฑ ์์์ ๋๋ค. UPPAAL์์ ๊ฒ์ฆ๋ ๋ชจ๋ธ์ ์ดํ TADA๋ก ์ ๊ทํ๋๊ณ , Go ์ฝ๋์ ๋ฐํ์ ๋ชจ๋ํฐ๋ก ์๋ ๋ณํ๋จ์ผ๋ก์จ ํ์ ๊ฒ์ฆ์์ ์ค์ ์คํ ํ๊ฒฝ๊น์ง ์ผ๊ด๋ ์ ๋ขฐ์ฑ ๋ณด์ฆ์ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค.