wyrm-math: 조건부-음향 심볼릭 대수 엔진
wyrm-math: 조건부-음향 심볼릭 대수 엔진
wyrm-math는 정확하고 조작 가능한 수학 인터페이스를 가능하게 합니다
wyrm-math는 사용자가 항을 끌어 등호를 넘기거나 거듭 제곱을 전개하는 등 항을 조작하여 방정식을 푸는 인터랙티브 수학 인터페이스를 구축하기 위해 설계된 조건부-음향 심볼릭 대수 엔진입니다. 최종 답을 검증하는 전통적인 풀이기와 달리, wyrm-math는 모든 도달 가능한 상태가 구조적으로 음향임을 보장하므로, 불법적인 움직임은 설계상 불가능합니다.
핵심 아키텍처: 구조적 음향성
엔진은 방정식이 절대 검증되지 않고, 오직 재작성 규칙을 통해서만 변형된다는 원칙에 따라 동작합니다. 이는 사용자가 도달하는 모든 상태가 수학적으로 유효함을 보장합니다.
조건부 음향성과 가정
일부 대수적 움직임은 특정 조건 하에서만 유효하기 때문에, wyrm-math는 이러한 조건을 가정(Assumptions) 으로 일급 객체처럼 취급합니다. 이러한 가정은 방정식과 함께 이동하여 수학적 무결성을 유지합니다:
- 제한: 해를 잃을 가능성이 있는 움직임(예: 변수
b로 나누려면b ≠ 0라는 가정이 필요). - 확장: 외부 해를 도입할 수 있는 움직임(예: 양변을 제곱), 이는
checkSolution프로세스로 해결해야 하는 의무를 가집니다. - 고정 가정: 사용자가 정의한 "what‑if" 시나리오(예:
x = 0고정).
정확한 산술
부동소수점 연산에서 발생하는 정밀도 오류를 피하기 위해, wyrm-math는 모든 연산에 bigint 유리수를 사용합니다. √2와 같은 무리근은 근사값이 아니라 정의되지 않은 점으로 취급되어, "양쪽이 정의된 경우에만 진실"이라는 엔진 전역 음향 계약을 엄격히 따릅니다.
기술 구현
순수 TypeScript로 작성되었으며 의존성이 전혀 없고 DOM 요구사항도 없습니다. 따라서 Node.js, 브라우저, 웹 워커, 네이티브 웹뷰 등 모든 환경에서 실행될 수 있도록 설계되었습니다.
표현식 트리와 AST
엔진은 불변의 추상 구문 트리(AST)를 사용하며, 안정적인 노드 ID를 제공합니다. N-ary Sum 및 Product 노드를 활용하고, 뺄셈은 음수 항의 합으로 표현합니다. 구조적 불변성을 유지하기 위해 스마트 생성자를 사용합니다.
움직임 열거와 레이아웃
엔진의 주요 기능 중 하나는 enumerateMoves(judgment) 로, 현재 상태에서 가능한 모든 합법적인 대수적 동작을 식별합니다. 이를 통해 UI 개발자는 제스처 앵커(핸들 및 드롭 타깃)를 정확히 합법적인 움직임이 가능한 위치에 배치할 수 있습니다.
부드러운 애니메이션을 지원하기 위해 엔진은 layoutNode 를 제공하며, 이는 트리를 정적 메트릭 테이블을 사용해 위치가 지정된 ID‑키 박스와 글리프로 매핑합니다. 서브트리 기하학이 컨텍스트에 독립적이기 때문에, 렌더러는 재작성 간에 노드를 매칭하고 강체처럼 애니메이션할 수 있습니다.
기능 집합 및 규칙 라이브러리
wyrm-math는 약 25개의 내장 규칙을 포함하고 있으며, 다양한 대수 연산을 포괄합니다:
- 선형 방정식: 기본 항 이동 및 동류항 정리.
- 분배법칙 및 분수: 괄호 전개와 분수식 처리.
- 지수 법칙: 거듭 제곱 및 근호 규칙.
- 부등식: 음수로 곱하거나 나눌 때 관계를 뒤집는 부호 인식 규칙.
- 이차 방정식: 영곱법칙 및 분기 처리(예:
x² = 9는x = 3혹은x = -3로 분기).
커뮤니티 관점 및 활용 사례
커뮤니티 토론에서는 wyrm-math가 대수를 "풀어야 할 문제"에서 "조작해야 할 퍼즐"로 전환시킬 수 있는 잠재력을 강조합니다.
"이것이 대수를 문제 대신 퍼즐처럼 보여주는 점이 마음에 들어요 :)"
다른 개발자들은 엔진의 활용을 정리 증명 및 함수형 프로그래밍을 위한 등식 추론으로 확장할 것을 제안했으며, 규칙 적용을 위한 시각적 인터페이스가 수동 방정식과 형식 정리 증명기 사이의 격차를 메울 수 있다고 언급했습니다. 또한 현재 Python 기반 도구인 SymPy를 Pyodide를 통해 사용하고 있는 일부 개발자는 브라우저 기반 Python의 제한과 wyrm-math와 같은 네이티브 TypeScript 구현의 잠재적 가치를 지적했습니다.
요약:
wyrm-math는 오픈소스 TypeScript 엔진으로, 재작성 규칙과 일급 가정 시스템을 통해 수학적으로 음향한 변환만 가능하도록 보장함으로써 제스처 기반 대수 인터페이스를 가능하게 합니다.
제목:
wyrm-math: 조건부-음향 심볼릭 대수 엔진