Your Code Has Bugs. Lean4 Has Proofs: Formal Verification for Engineers โ Varun Pant, AWS
ํ ์ค ํต์ฌ
์ฝ๋ฉ ์์ด์ ํธ์ ์ถ๋ ฅ์ ํ ์คํธยท๋ฆฌ๋ทฐ๋ง์ผ๋ก๋ ์ ์ ๋ ฅ์ ๋ํ ์ ๋น์ฑ์ ๋ณด์ฅํ ์ ์์ผ๋ฏ๋ก, Lean ๊ฐ์ ํ์ ๊ฒ์ฆ ๋๊ตฌ๋ก ์ฌ์์ ์ฌ๋์ด ์ ์ํ๊ณ ์ฆ๋ช ์ ๊ธฐ๊ณ๊ฐ ๋งก๋ ๋ฐฉ์์ด ๊ฐ์ฅ ๊ฐํ ์์ ์ฅ์น๊ฐ ๋๋ค.
์๊ฐ๋ณ ์์ฝ
-
0:00
์ผ๋ฐ์ ์ธ ์ ๊ฒ์ผ๋ก๋ ์์ด์ ํธ ๊ฒฐ๊ณผ๋ฅผ ๋ค ๊ฒ์ฆํ ์ ์๋ ์ด์ LM ์ฌ์ฌ, ํ ์คํธ, ์ธ๊ฐ ์ฝ๋๋ฆฌ๋ทฐ๋ ๋ชจ๋ ์ผ๋ถ ์ ๋ ฅ๋ง ํ์ธํ ๋ฟ ์ ์ ๋ ฅ์ ๋ํด ์ฝ๋๊ฐ ์ฌ๋ฐ๋ฅด๋ค๊ณ ๋งํด์ฃผ์ง ๋ชปํ๋ค. ํ์ ๊ฒ์ฆ์ ์ฝ๋๊ฐ ๋ฌด์์ ๋ง์กฑํด์ผ ํ๋์ง ์ฌ์์ ์ ํ๊ณ , ๊ทธ ์ฌ์์ ๋ง์กฑํ๋ค๋ ์ํ์ ์ฆ๋ช ์ ํตํด ๋ชจ๋ ์ ๋ ฅ์ ๋ํ ์ ๋น์ฑ์ ์ ๊ณตํ๋ค.
-
1:06
์ฌ์์ ์ฌ๋์ด, ์ฆ๋ช ์ ๊ธฐ๊ณ๊ฐ ๋งก๋ ๊ตฌ์กฐ ์ฌ์์ ๋จผ์ ์ ์ํ ๋ค ์ธ๊ฐ์ด ๊ฒํ ํ๊ฑฐ๋ ์ผ๋ถ ์ ๋ ฅ์ผ๋ก ์ํํด ๊ฒ์ฆํ๊ณ , ๊ทธ ๋ค์ AI coding agent๊ฐ ๊ตฌํ์ ์์ฑํ๋ฉด formal verification tool์ด ๊ตฌํ์ด ์ฌ์๊ณผ ์ผ์นํจ์ ์ฆ๋ช ํ๋ค. ์ฌ์์ ์์์ ์๋ ์ด์ ์๋ ์ฐ์ถ๋ฌผ์ด๊ณ , ๋๋จธ์ง๋ ๊ทธ ์๋์์ ๋ฐ๋ผ์ค๋ ๊ตฌ์กฐ๋ค.
-
2:00
์ฝ๋์ ์ฆ๋ช ์ ํ๋์ ์ธ์ด๋ก ๋ค๋ฃจ๋ Lean Lean์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ด์ proof assistant๋ก, ์ ์์ ์ฆ๋ช ์ ๊ฐ์ ์ธ์ด๋ก ์์ฑํ ์ ์์ด ๋ฒ์ญ์ธต์ด ์๋ค. ์์ trusted kernel์ ๊ฐ๊ณ ์์ด ์ฆ๋ช ์ ๋ด๋ณด๋ธ ๋ค ๋ ๋ฆฝ์ ์ผ๋ก ๋ค์ ๊ฒ์ฌํ ์ ์์ผ๋ฉฐ, ์ฝ๋์ theorem์ด ๊ฐ์ ํ์ผ์ ํจ๊ป ์กด์ฌํ๋ค.
-
3:01
์ ์ , ์ ๋ฆฌ, ๊ทธ๋ฆฌ๊ณ ์ฒด์ค ๋น์ Lean์์๋ tactics๋ก ์ฆ๋ช ๋จ๊ณ๋ฅผ ์งํํ๊ณ kernel์ด ์ต์ข ๊ฒ์ฌ๋ฅผ ๋งก๋๋ค. ์ฆ๋ช ๊ณผ์ ์ ์ฒด์ค์ฒ๋ผ ๋ชฉํ๋ฅผ ํฅํด ์ฌ๋ฌ ์๋ฅผ ๋๋ฉฐ ํ์ํ๊ณ , ๋งํ๋ฉด ๋๋์๊ฐ ๋ค๋ฅธ ๊ฐ์ง๋ฅผ ์๋ํ๋ ํธ๋ฆฌ ํ์์ ๊ฐ๊น๋ค.
-
3:58
๋ ๋ฆฝ์ ์ผ๋ก ๋ค์ ๋ง๋ค ์ ์๋ ์์ ์ปค๋ ์๋ชป๋ ์ฆ๋ช ์ kernel์์ ์ฆ์ ๊ฑฐ์ ๋๋ฏ๋ก, ์ ๋ขฐํด์ผ ํ ๋ฒ์๋ ๋งค์ฐ ์์ ํต์ฌ๋ถ์ ํ์ ๋๋ค. kernel์ C++, Rust, Lean ๋ฑ์ผ๋ก ์ฌ๋ฌ ๊ตฌํ์ ๋ ์ ์๊ณ , ์ด๋ฅผ ์ง์ ๋ค์ ์์ฑํด ๊ฒ์ฆํ ์๋ ์๋ค.
-
4:52
zlib๋ฅผ Lean์ผ๋ก ์ฎ๊ธฐ๊ณ 32,000์ค์ ์ฆ๋ช ์ ๋ง๋ ์ฌ๋ก zlib๋ฅผ Lean์ผ๋ก ์ฎ๊ธด ์ฌ๋ก์์๋ ์์ฐ์ด ์ฌ์์ formal spec์ผ๋ก ๋ง๋ค๊ณ , AI๊ฐ Lean ์ฝ๋์ ๋ณด์กฐ lemma๋ฅผ ์์ฑํ ๋ค tactics๋ก ๊ฐ subgoal์ ํ์ด ์ต์ข theorem์ ์์ฑํ๋ค. ์ด ์์ ์ 32,000 lines of proof ๊ท๋ชจ์๊ณ , ๋ง์ง๋ง ๊ฒ์ฌ๋ ์์ ๋ ๋ฆฝ kernel์ด ์ํํ๋ค.
-
6:44
Cedar: Lean ์๋ฏธ๋ก , Rust ์ด์ ์ฝ๋ Cedar๋ ์ ์ฑ ์ธ์ด์ ์ฌ์์ Lean์ผ๋ก ๋๊ณ ํ๋ก๋์ ์ฝ๋๋ Rust๋ก ์ด์ํ๋ฉฐ, ๋ ๊ตฌํ์ด ๊ฐ์ ์ ๋ ฅ์์ ๊ฐ์ ์ถ๋ ฅ์ ๋ด๋์ง differential random testing์ผ๋ก ๊ฒ์ฆํ๋ค. nightly์ ์ฝ 100 million ํ ์คํธ๋ฅผ ๋๋ฆฌ๊ณ , ๋ง์กฑํ ๋๊น์ง ๋ฒ์ ์ ์ถ์ํ์ง ์๋๋ค.
-
7:40
์๋ฒ, ์ ์ ์กฐ๊ฑด, ๊ทธ๋ฆฌ๊ณ ๋ฐํ์์์ ์ง์์ง๋ ์ฝ๋ solver๋ ์์ ๋ฃ์ผ๋ฉด satisfiable/unsatisfiable ๊ฐ์ ๊ฒฐ๊ณผ๋ฅผ ๋๋ ค์ฃผ๋ ๊ณ์ฐ๊ธฐ์ฒ๋ผ ์๋ํ๋ฉฐ, Verus๋ Z3๋ฅผ ํ์ฉํ๋ค. requires์ ensure๋ก ํํํ๋ precondition๊ณผ postcondition์ ์ ์ ๊ฒ์ฆ๋์ง๋ง ๋ฐํ์์๋ ์ฌ๋ผ์ ธ ์ผ์ข ์ ghost code์ฒ๋ผ ์ทจ๊ธ๋๋ค.
-
8:37
์ด๋ค ์ธ์ด๋ ๊ฐ์ ํต์ฌ์ผ๋ก ๋์ด์ค๋ ๋ฐฉ๋ฒ Strata๋ ์ด๋ค ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ dialect๋ก ๋ฐ์ high-level IR์ Strata core๋ผ๋ low-level IR๋ก ๋ด๋ฆฌ๋ Lean ๊ธฐ๋ฐ ๋๊ตฌ๋ค. ๋ชจ๋ ํ๋ก๊ทธ๋จ์ ๊ฐ์ ํต์ฌ ์ธ์ด๋ก ๋ง์ถ ๋ค Lean proof, SMT solver, model checker ๊ฐ์ ์ฌ๋ฌ ์์ง์ ๋ถ๋ฐฐํด ๊ฒ์ฆํ ์ ์๋ค.
์ค๋ฌด ์ธ์ฌ์ดํธ
- ์ฝ๋ฉ ์์ด์ ํธ์ ์ฐ์ถ๋ฌผ์ ํ ์คํธ๋ณด๋ค ์ฌ์ ํ์ง์ด ๋ ์ค์ํ๋ฏ๋ก, ๋จผ์ ์ฌ๋์ด ๊ฒํ ๊ฐ๋ฅํ ๋ช ์ธ๋ฅผ ๋ง๋๋ ํ๋ฆ์ ํ์ค ํ๋ก์ธ์ค๋ก ๋๋ ๊ฒ์ด ํจ๊ณผ์ ์ด๋ค.
- ์ ์ฌ์ ๋์ ๋ณด๋ค ์ค๋ฅ ๋น์ฉ์ด ํฐ ํต์ฌ ์ฝ๋๋ถํฐ Lean, solver, differential testing์ ๋ถ์ฌ ๊ฒ์ฆ ๊ฐ๋๋ฅผ ๋จ๊ณ์ ์ผ๋ก ๋์ด๋ ํธ์ด ํ์ค์ ์ด๋ค.
- ํ์ ๊ฒ์ฆ์ ๋์ ํ ๋๋ ๋ฐํ์ ์ฑ๋ฅ๋ณด๋ค ์ฌ์ ์กฐ๊ฑดยท์ฌํ ์กฐ๊ฑด, ๋ณด์กฐ ์ ๋ฆฌ, kernel ์ ๋ขฐ ๊ฒฝ๊ณ๋ฅผ ๋จผ์ ์ค๊ณํด์ผ ์ด์ ์ ์ฉ์ด ์ฌ์์ง๋ค.