기타 자료
학습 자료
- Specifying Systems
TLA+를 포괄적으로 소개하고 정형적인 기초를 다져 주는 책이지만, 모델 체킹(model checking)은 거의 다루지 않는다. 2004년 무렵 이후에 나온 기능, 예컨대 PlusCal이나 재귀 연산자(recursive operator) 같은 것은 다루지 않는다.
- TLA+ Video Course
TLA+ 창시자가 직접 만든 동영상 강좌다.
- Introduction to Formal Pragmatic Modeling
프로덕션 수준의 대형 스펙(specification) 세 개를 깊이 파고드는 환상적인 자료다. TLA+를 어느 정도 안다고 가정한다.
레퍼런스 자료
- TLA+ Language Reference Manual
Apalache 개발자들이 만든 엄밀한 레퍼런스다. 아직 작업 중이다.
- TLA+ Version 2
재귀 연산자와 람다 식(lambda expression)을 다룬다.
- Current Versions of the TLA+ Tools
TLC를 명령줄에서 실행할 때 쓰는 플래그 정보와 함께, (PlusCal을 제외한) 다른 도구들에 대한 정보도 담겨 있다. TLC 모듈의 연산자에 대한 정보도 있다.
- Pluscal Manual
PlusCal의 정형적 정의, 플래그, 명령줄 옵션을 다룬다. 예컨대 스펙에 필요한 레이블(label)을 자동으로 생성해 주는 70쪽의 “label” 옵션을 보라.
- Summary of TLA+
TLA+ 치트 시트다. 액션 합성(action composition)처럼 어떤 도구로도 검사할 수 없는 TLA+ 구문도 일부 들어 있다. ASCII 기호 대신 조판된 기호를 쓴다(그래서 ∈ 기호를 쓰고
\in은 쓰지 않는다).
읽을거리
- How Amazon Web Services uses Formal Methods
대기업들이 처음으로 TLA+ 도입에 관심을 갖게 만든 논문이다. 나도 이 논문을 보고 TLA+를 알게 됐다.
- TLA+ Example Repository
추상적인 알고리즘과 프로토콜을 모아 둔 저장소다.
- TLA+ in Practice and Theory
TLA+의 바탕이 되는 수학 이론을 자세히 분석한 글이다.
- Let’s Prove Leftpad
여러 정형 기법(formal methods)으로 leftpad를 증명한 사례 모음이다. TLA+와 전적으로 관련된 것은 아니지만 <뻔뻔한 자기 홍보 삽입>
강연
- Designing Distributed Systems with TLA+
TLA+를 써 보라고 권할 때 내가 늘 하는 강연이다.
- Weeks of Debugging can save you Hours of TLA+
Markus(툴박스 핵심 개발자)가 TLA+ 사용을 권하는 강연이다.
기타 도구
- TLA+ Community Modules
최소한만 갖춘 TLA+ 표준 라이브러리에 보탤 만한 유용한 모듈(module)을 모아 둔 것이다.
- Apalache
TLA+용 대안 모델 체커(model checker)다. 모든 상태(state)를 열거하는 대신 기호 모델 체킹(symbolic model checking)을 사용한다.
(밝혀 두자면, 나는 현재 Informal Systems의 컨설팅 일을 일부 맡고 있다.)
TLAPS: TLA+를 정리 증명기(theorem prover)로 쓰고 싶을 때를 위한 TLA+ 증명 시스템이다.
- VSCode 플러그인
툴박스 밖에서 TLA+를 실행하고 싶지만 명령줄에서 돌리고 싶지는 않을 때 쓴다.
- TLA2JSON
이름 그대로의 일을 한다. 이 기능을 툴박스에 넣을 계획이 있지만 아직 준비되지 않았다.
- tree-sitter-tlaplus
Treesitter 파서 생성기다.
커뮤니티
- conf.tlapl.us
매년 여는 우리 TLA+ 콘퍼런스 정보를 올리는 공식 사이트다. 보통 Strange Loop와 공동 개최한다.
- TLA+ Google Group
핵심 개발자들이 모두 여기 모여서 사람들의 질문에 답해 준다.
- r/tlaplus
TLA+ 서브레딧이다.