Files
softwaredesign/wiki/sources/EOS-endnotes-formalism.md
minsung 18b46520b8 feat: EOS 전 챕터 Vision 이미지 분석 삽입 (fig. 1.1–11.5, E.1–E.10)
- 9개 wiki 소스 페이지에 총 69개 JPEG 이미지 Vision 분석 결과 삽입
- fig. 2.1–2.8, 3.1, 3.3–3.5: EOS-part1-motivations (Backblaze·Dropbox 설계 결함)
- fig. 4.1, 4.3, 4.5–4.6: EOS-ch4-concept-structure (개념 5요소·상태 기계)
- fig. 5.1–5.10: EOS-ch5-concept-purposes (목적 기준·미스피트 사례)
- fig. 6.1, 6.4, 6.6, 6.9: EOS-ch6-concept-composition (시너지·동기화 문제)
- fig. 7.1–7.3: EOS-ch7-concept-dependence (의존 다이어그램)
- fig. 8.1–8.5, 8.7, 8.10–8.11: EOS-ch8-concept-mapping (UI 매핑·다크 패턴)
- fig. 9.1, 9.3–9.4, 9.6–9.9, 10.1–10.3, 11.1–11.2, 11.4–11.5: EOS-part3-principles
- fig. E.1–E.5: EOS-endnotes-formalism (상태 기계·관계형 모델·Photoshop layer)
- fig. E.6–E.9: EOS-endnotes-context (Bosch·Gmail·nail clipper·Photoshop crop)
- fig. E.10: EOS-part3-principles (Apple Pages '09 부분 스타일)
- 책 표지·챕터 헤더 이미지는 스킵

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-30 17:18:35 +09:00

7.5 KiB
Raw Blame History

title, tags, source, updated
title tags source updated
EOS 형식 의미론 — 개념의 수학적 기반
source
EOS
formalism
Daniel Jackson (2021), Endnotes 4344, 64 2026-04-30

EOS 형식 의미론 — 개념의 수학적 기반

EOS 본문이 직관적 설명에 집중하는 반면, 엔드노트 4344, 64는 개념의 수학적 의미론을 다룬다. 이 페이지는 그 기술적 보충 내용을 정리한다.

개념의 행동 의미론 (Note 44)

상태 기계로서의 개념

개념의 행동은 **상태 기계(state machine)**로 형식화된다.

  • 상태(State): 개념이 기억해야 하는 것의 집합. 집합과 관계(relation)로 표현
  • 초기 상태: 모든 집합·관계가 비어 있는 상태
  • 액션: 전이 관계(transition relation)로 정의됨
  • 결정론(determinism): 동일한 상태와 인수에 대해 최대 하나의 후속 상태만 존재

트레이스와 상태 함수

트레이스(trace) = 가능한 액션 인스턴스의 유한 히스토리

state: Trace → State

상태 함수는 각 트레이스에 그것이 생성하는 상태를 대응시킨다.

state(<create(i0), delete(i0)>) = {accessible: {}, trashed: {i0}}
state(<create(i0), delete(i0), empty()>) = {accessible: {}, trashed: {}}

fig. E.3 (trash 개념의 부분 상태 기계 다이어그램): 3개 상태 — 초기 {accessible:{}, trashed:{}}, 좌측 {accessible:{i0}, trashed:{}}, 우측 {accessible:{}, trashed:{i0}}. 전이: create(i0) (초기→좌측), delete(i0) (좌측→우측, accessible에서 제거·trashed에 추가), restore(i0) (우측→좌측, trashed에서 accessible로 복원), empty() (우측→초기, trashed 영구 삭제). 동일 상태·입력에 최대 하나의 후속 상태 — 결정론적 상태 기계.

전이 관계, 전제조건, 교착 상태

액션 A (인수 집합 X)의 의미론:

trans(A) ⊆ S × X × S
  • 전제조건(precondition): 액션이 가능한 (s, x) 쌍의 집합
  • 전제조건이 성립하지 않으면 액션은 실행 불가
  • 교착 상태(deadlock): 어떤 상태에서 가능한 액션이 없는 경우 — 설계 결함

Alloy를 이용한 액션 형식화

pred reserve (u: User, r: Resource) {
  r in available
  reservations' = reservations + u -> r
  available' = available - r
}

프라임(')은 Electrum 확장의 약식 표기로 액션 후 값을 나타낸다.

운영 원칙의 형식화 (Note 43, 44)

동적 논리로 표현

기본 형식: [a]p = 액션 a 수행 후 술어 p가 항상 성립

복합 액션 연산자:

  • a;b — 순차 합성
  • a* — 반복 (0회 이상)
  • a or b — 선택
  • not a — a가 아닌 임의 액션

trash 개념의 운영 원칙:

delete(x) {can restore(x)}
delete(x); restore(x) {x in accessible}

reservation 개념:

reserve(u, r); (not cancel(u, r))* {can use(u, r)}

style 개념:

define(s, f); assign(e1, s); assign(e2, s); define(s, f') {e1.format = e2.format = f'}

운영 원칙 vs. 유스케이스/유저 스토리

구분 운영 원칙 유스케이스
역할 개념의 본질 설명 기능 전체 기술
범위 개별 개념 단위 시스템 레벨
수량 핵심 시나리오 12개 수십~수백 개
초점 왜 이 개념인가 무엇을 할 수 있는가

객체 분류 (Note 44)

역할에 의한 분류

역할 정의
자산(asset) 고유 가치를 지닌 객체 사진, 오디오 트랙, 블로그 포스트, 인증서
이름(name) 다른 객체를 식별·위치시키는 객체 이메일 주소, 도메인 이름, 파일 경로
값(value) 다른 객체와의 관계에서만 의미를 갖는 객체 숫자 80 (나이, 온도, 조회수…)

가변성(mutability)에 의한 분류

  • 불변(immutable): 개념 간 통신(동기화) 시 공유되는 객체는 반드시 불변이어야 함
    • 가변 객체가 공유되면 숨겨진 통신 발생 → 앨리어싱 문제
  • 개념 내부에서는 가변 객체 해석 가능

해석 가능성(interpretability)에 의한 분류

비해석(uninterpreted): 동등성(equality)만 인식 — 타입 변수처럼 동작

해석(interpreted): 객체의 내부 구조나 값을 활용

순열 불변성(permutation invariance)으로 형식화: 타입 T가 개념 C에서 비해석적이면, T의 임의 순열 p에 대해 p(t)도 C의 트레이스이고 state(p(t)) = p(state(t)).

fig. E.4 (style 개념(좌)과 Gmail label 개념(우)의 관계형 데이터 모델): 좌: Element --(assigned)--> Style --(defined)--> Format, 점선으로 Element --(format)--> Format 파생 관계. 우: Conversation --(messages)--> Message --(labels)--> Label, 점선으로 Conversation --(displays)--> Label 파생 관계. 파생 상태(derived state)는 두 기본 관계의 합성 경로로 정의됨 — 스타일 개념에서 Element의 실제 format은 Style을 거쳐 결정되며, Gmail에서 대화의 레이블은 메시지를 거쳐 집계됨.

조합의 의미론 (Note 64)

조합 = 트레이스의 인터리빙

개념들의 조합은 개별 개념 트레이스의 **모든 가능한 인터리빙(interleaving)**이다. 동기화는 허용되는 인터리빙을 제한한다.

동기화 형식:

sync action1(x)
     action2(e)

의미: 모든 트레이스에서 trigger action1의 모든 발생 직후 반드시 response action2가 발생.

핵심 정리: 조합은 개념 행동을 보존한다

"Composing concepts never changes the behavior of any of the constituent concepts."

이것이 개념 이해 가능성의 근거다. 개념은 어떤 맥락에서도 동일하게 행동한다. 위반 시 → 개념 무결성(concept integrity) 위반 (Ch11).

안전성(safety) vs. 활성성(liveness):

  • 조합은 안전성 속성은 보존
  • 활성성은 제한 가능 (예: access control 개념이 다른 개념의 액션을 억제)

fig. E.5 (Photoshop에서의 layer + mask 개념): 흑백 사과 이미지 편집 화면. Layers 패널: "Curves 1" 조정 레이어(흰 원 마스크 = 사과 영역만 조정 적용) + "Background" 원본 레이어. 마스크가 Curves 조정을 사과에만 한정 — 원본 픽셀 불변(비파괴 편집). layer 개념 + mask 개념의 시너지 조합: 두 개념 각각의 행동이 조합 후에도 보존되면서 비파괴 로컬 편집이라는 창발적 기능 실현.

CSP와의 관계

개념 조합의 의미론은 Tony Hoare의 CSP(Communicating Sequential Processes)에서 파생.

차이점:

CSP 개념 조합
결정론 비결정론적 가능 항상 결정론적
상태 관찰 없음 동기화 조건에 상태 사용 가능
동기화 공유 액션 trigger/response 쌍

생성 입력 (Note 64)

액션의 입력에는 두 종류:

  1. 생성 입력(generated input): 개념 자체가 생성 — gen 키워드로 표시
  2. 제공 입력: 다른 개념이 제공
add(gen t: Task)           // task는 todo 개념이 생성
affix(i: Item, gen l: Label)  // item은 외부 제공, label은 label 개념이 생성

트레이스 제약: gen이 아닌 입력은 트레이스의 이전 액션에서 생성 또는 출력된 것이어야 한다.

관련 개념