레퍼런스 · 33 / 35

용어집

용어 안내

액션(Action)

상태가 어떻게 “진화하는지”를 기술하는 술어(predicate)다. 프라임 연산자가 들어간 불리언(boolean) 식(expression)이라면 무엇이든 액션이다(x' = x처럼). 액션은 다음 상태를 기술하면 참이고, 그렇지 않으면 거짓이다. 예를 들어 두 가지 일이 병렬로 일어나는 경우처럼, 여러 액션이 한꺼번에 참일 수도 있다.

행동(Behavior)

시스템 안에서 상태들이 이어진 시퀀스(sequence), 곧 “타임라인”이다.

활성화된(Enabled)

어떤 액션이 이번 스텝에 “일어날” 수 있다면, 즉 다음 스텝을 기술할 가능성이 있다면 그 액션은 “활성화되었다(enabled)”고 한다.

공정성(Fairness)

시스템이 언젠가는 “진전한다(make progress)”는 보장이다. 약한 공정성(weak fairness)은 주어진 액션이 영구히 활성화되어 있으면 그 액션이 언젠가는 일어난다고 말한다. 강한 공정성(strong fairness)은 그 액션이 영구히 비활성화되어 있지만 않으면 언젠가는 일어난다고 말한다.

정형 기법(Formal Methods)

엄밀하고 검증된 코드를 작성하는 분야다.

정형 명세 언어(Formal Specification Language)

만들고 있는 시스템을 기술해서, 그 안의 오류를 찾아낼 수 있게 해 주는 언어다.

함수(Function)

정의역(domain)이 고정된 수학적 함수다. 프로그래밍에서 말하는 함수는 연산자라고 부른다.

불변식(Invariant)

시스템의 모든 상태에서 참이어야 하는 것이다. 모든 불변식은 안전성 속성이다.

라이브니스(Liveness)

좋은 일이 반드시 일어난다고 보장하는 속성이다. 모든 라이브니스 속성은 시간 속성이다.

모델(Model)

TLA+에서는 명세 + 주입한 매개변수와 요구하는 불변식의 집합을 말한다.

모델 체킹(Model checking)

명세가 그 속성들을 만족하는지 검증하는 가장 흔한 방법이다. 가능한 모든 행동을 생성하고, 그중 하나라도 속성을 깨뜨리는지 빠짐없이 테스트한다. TLA+의 모델 체커(model checker)는 TLC라고 부른다.

연산자(Operator)

프로그래밍의 함수에 해당하는 TLA+의 개념이다. 프라임 변수(primed variable)가 들어 있는 연산자는 액션이라고 부른다.

PlusCal

TLA+ 알고리즘을 작성하기 위한 DSL이다.

술어(Predicate)

불리언 식이다.

속성(Property)

시스템에 대해 참이기를 바라는 것이다. TLA+의 모든 속성은 안전성 속성과 라이브니스 속성으로 나눌 수 있다.

안전성(Safety)

나쁜 일이 일어나지 않는다는 속성이다. 안전성 속성의 대부분은 (전부는 아니지만) 불변식이다. 모든 불변식은 안전성 속성이다.

명세(Specification)
스펙(Spec)

만들고 있는 시스템을 엄밀하게 수학적으로 기술한 것이다.

상태 공간(State space)

한 모델에서 가능한 모든 행동으로 도달할 수 있는, 가능한 모든 상태의 집합이다.

스텝(Step)

시계가 한 번 “째깍”하는 것으로, 스펙의 상태 일부를 바꾼다. 행동은 스텝의 시퀀스로 이루어진다.

스터터 스텝(Stutter Step)

아무것도 바꾸지 않는 상태 전이다. 모든 TLA+ 스펙은 “스터터 불변(stutter-invariant)”이다. 즉 임의의 두 “진짜” 액션 사이에서 언제든 스터터링할 수 있다. 공정성 제약으로 따로 막지 않는 한, 행동은 영원히 스터터링할 수 있다.

시간 속성(Temporal Property)

둘 이상의 상태에 걸치는 속성이다. 예를 들어 “카운터는 절대 줄어들어서는 안 된다” 또는

정리 증명기(Theorem Prover)

명세를 정형 검증하는 또 다른 방법으로, 명세가 원하는 속성을 갖추었음을 수학적으로 증명한다. 모델 체커보다 훨씬 어려워서 이 가이드에서는 다루지 않는다. TLA+의 정리 증명기는 TLAPS라고 부른다.

TLA+

동시적 시스템을 모델링하는 데 쓰이는 “액션의 시간 논리(Temporal Logic of Actions)”다. 정형 명세 언어의 하나다. TLA+로 직접 작성할 수도 있고, PlusCal DSL을 쓸 수도 있다.

TLA+ 툴박스(TLA+ Toolbox)

공식 TLA+ IDE다.

TLC

TLA+ 모델 체커의 이름이다. 이 사이트에서는 “TLC”와 “모델 체커”를 같은 뜻으로 섞어 쓴다.

상태 공간 폭발(State space explosion) 한정자(Quantifier) 모듈(Module) 기계(Machine) 세계(World)