Computer algebra systems are a great help for mathematical research but sometimes unexpected errors in the software can also badly affect it. As an example, we show how we have detected an error of Mathematica computing determinants of matrices of integer numbers: not only it computes the determinants wrongly, but also it produces different results if one evaluates the same determinant twice.
논문 ID : 1312.3270제목 : Misfortunes of a mathematicians' trio using Computer Algebra Systems: Can we trust?저자 : Antonio J. Durán (Universidad de Sevilla), Mario Pérez (Universidad de Zaragoza), Juan L. Varona (Universidad de La Rioja)분류 : cs.SC (기호 계산), cs.MS (수학 소프트웨어)발표 시간 : 2013년 10월 15일 (arXiv 프리프린트)논문 링크 : https://arxiv.org/abs/1312.3270 컴퓨터 대수 시스템은 수학 연구에 매우 유용하지만, 소프트웨어의 예상치 못한 오류는 때때로 연구에 심각한 영향을 미칠 수 있다. 예시로서, 저자들은 정수 행렬의 행렬식 계산 시 Mathematica의 오류를 어떻게 발견했는지 보여준다: 행렬식을 잘못 계산할 뿐만 아니라 동일한 행렬식을 두 번 계산하면 서로 다른 결과가 나온다.
해결해야 할 문제 : 저자들은 Mathematica를 사용하여 수학 연구를 수행하던 중 대정수 행렬의 행렬식 계산 시 소프트웨어에 심각한 오류가 있음을 발견했다. 여기에는 계산 결과 오류와 동일한 계산이 서로 다른 결과를 생성하는 문제가 포함된다.문제의 중요성 :수학자들은 연구를 위해 컴퓨터 대수 시스템에 점점 더 의존하고 있다 잘못된 계산 결과는 잘못된 수학적 결론으로 이어질 수 있다 대정수 계산은 암호학 등의 분야에서 중요한 응용을 가진다 기존 방법의 한계 :상용 컴퓨터 대수 시스템은 "블랙박스"이며 알고리즘이 불투명하다 알려진 오류는 일반적으로 사용자에게 공개되지 않는다 현대적 소프트웨어 검증 기술을 적용하기 어렵다 연구 동기 : 저자들은 Karlin과 Szegő의 직교 다항식에 관한 결과의 확장을 연구하던 중 Mathematica와 Maple이 서로 다른 계산 결과를 제시했으며, 이를 통해 Mathematica의 체계적 오류를 발견했다.Mathematica의 심각한 계산 오류 발견 및 보고 : 대정수 행렬의 행렬식 계산 시 잘못된 결과 생성재현 가능한 오류 생성 방법 제공 : 오류를 유발하는 행렬을 생성하는 무작위 프로그램 설계오류의 비결정론적 특성 규명 : 동일한 행렬의 행렬식 계산이 서로 다른 결과를 생성할 수 있음을 보여줌컴퓨터 대수 시스템의 신뢰성에 대한 의문 제기 : 이러한 시스템을 어떻게 신뢰할 수 있는지에 관한 중요한 논의 촉발저자들은 직교 다항식의 Casorati 행렬식을 연구할 때:
det ( P f 1 ( a k ) P f 1 ( a k + 1 ) ⋯ P f 1 ( a k + l ) P f 2 ( a k ) P f 2 ( a k + 1 ) ⋯ P f 2 ( a k + l ) ⋮ ⋮ ⋱ ⋮ P f l ( a k ) P f l ( a k + 1 ) ⋯ P f l ( a k + l ) ) \det \begin{pmatrix}
P_{f_1}(a_k) & P_{f_1}(a_{k+1}) & \cdots & P_{f_1}(a_{k+l}) \\
P_{f_2}(a_k) & P_{f_2}(a_{k+1}) & \cdots & P_{f_2}(a_{k+l}) \\
\vdots & \vdots & \ddots & \vdots \\
P_{f_l}(a_k) & P_{f_l}(a_{k+1}) & \cdots & P_{f_l}(a_{k+l})
\end{pmatrix} det P f 1 ( a k ) P f 2 ( a k ) ⋮ P f l ( a k ) P f 1 ( a k + 1 ) P f 2 ( a k + 1 ) ⋮ P f l ( a k + 1 ) ⋯ ⋯ ⋱ ⋯ P f 1 ( a k + l ) P f 2 ( a k + l ) ⋮ P f l ( a k + l )
부동소수점 문제를 피하기 위해 정수를 사용하여 모든 예시를 구성했지만, Mathematica와 Maple이 서로 다른 결과를 제시했다.
계산 문제를 격리하기 위해 저자들은 다음과 같은 방법으로 오류를 유발하는 행렬을 생성했다:
기본 행렬 생성 :basicMatrix = Table[Table[RandomInteger[{-99, 99}], {i, 1, 14}], {j, 1, 14}]
대정수 생성 :powersMatrix = DiagonalMatrix[{10^123, 10^152, 10^185, 10^220, 10^397,
10^449, 10^503, 10^563, 10^979, 10^1059, 10^1143, 10^1229, 10^1319, 10^1412}]
무작위 섭동 추가 :smallMatrix = Table[Table[RandomInteger[{-999, 999}], {i, 1, 14}], {j, 1, 14}]
최종 행렬 구성 :bigMatrix = basicMatrix.powersMatrix + smallMatrix
동일한 행렬의 행렬식을 여러 번 계산하여 오류를 검증했다:
a = Det[bigMatrix];
b = Det[bigMatrix];
결과적으로 a==b가 자주 False를 반환했다.
소프트웨어 버전 : Mathematica 8.0부터 9.0.1까지운영 체제 : Mac 및 Windows비교 소프트웨어 : 검증 도구로 Maple과 Sage 사용행렬 규모 : 14×14수치 범위 : 약 10,000자리의 대정수 포함생성 방식 : 기본 행렬을 무작위로 생성한 후 거듭제곱으로 확대하고 작은 섭동을 추가하여 구성계산 오류 : Mathematica가 계산한 행렬식 값이 완전히 잘못됨비결정론성 : 동일한 행렬의 여러 번 계산이 서로 다른 결과를 생성버전 관련성 : 오류는 버전 8과 9에서 나타나며, 버전 6과 7은 영향을 받지 않는 것으로 보임특정 예시에서:
Mathematica 첫 번째 계산: N[a] = -3.263388173990166 × 10^9768 Mathematica 두 번째 계산: N[b] = -8.158470434975415 × 10^9768 정확한 결과(Maple/Sage): ≈ 1.95124219131987 × 10^9762 저자들은 2013년 10월 7일 Wolfram Research에 이 오류를 보고했다(사례 번호: CASE:303438). 확인 회신을 받았지만 문제는 이후 버전에서도 해결되지 않았다.
역사적 선례 : 1994년 Thomas Nicely가 발견한 펜티엄 나눗셈 오류와 유사소프트웨어 검증 : 오픈소스 컴퓨터 대수 시스템의 검증 기술 연구 언급수학 소프트웨어 성공 사례 :
사색 정리의 증명(Appel과 Haken) 케플러 추측의 증명(Thomas Hales) Kenzo 소프트웨어가 발견한 발표된 정리의 오류 신뢰성 문제 : 기호 계산(정수 연산)이라도 컴퓨터 대수 시스템은 오류를 생성할 수 있다영향 범위 : 대정수 계산 오류는 이론 수학뿐만 아니라 암호학 등의 응용 분야에도 영향을 미친다체계적 문제 : 상용 소프트웨어의 "블랙박스" 특성으로 인해 오류를 예측하고 피하기 어렵다오류 유발 조건 불명확 : 어떤 행렬이 오류를 유발할지 정확히 예측할 수 없다버전 특이성 : 오류는 특정 버전에서만 나타난다플랫폼 의존성 : 서로 다른 운영 체제에서 검증이 필요하다더 나은 소프트웨어 검증 기술 개발 상용 소프트웨어의 투명성 향상 더 완벽한 오류 보고 및 수정 메커니즘 구축 실질적 의의가 큼 : 광범위하게 사용되는 수학 소프트웨어의 심각한 오류를 규명방법이 과학적 : 여러 독립적 시스템을 통한 검증으로 발견의 신뢰성 보장재현성이 강함 : 오류 재현 방법을 상세히 제공작성이 명확함 : 구체적인 수학 연구를 배경으로 문제 발견 과정을 생생하게 제시이론적 분석 제한 : 오류 발생의 근본 원인에 대한 심층 분석 부재해결 방안 부족 : 주로 문제 보고이며, 이러한 오류를 예방하거나 탐지하는 방법 부재테스트 범위 : 주로 특정 유형의 계산(대정수 행렬 행렬식)에 집중학술적 가치 : 컴퓨터 보조 증명의 신뢰성 문제에 대해 연구자들에게 주의 환기실용적 가치 : Mathematica를 사용하여 대정수 계산을 수행하는 사용자에게 중요한 경고소프트웨어 개선 : 소프트웨어 개발사가 이러한 오류를 중시하고 수정하도록 촉구이 연구의 발견은 다음에 적용 가능하다:
Mathematica를 사용하여 대정수 행렬 계산을 수행하는 연구 암호학의 대수 연산 고정밀 기호 계산이 필요한 수학 연구 컴퓨터 대수 시스템의 신뢰성 평가 논문이 인용한 중요 문헌:
Karlin & Szegő (1960/1961) - 직교 다항식 행렬식에 관한 원본 연구 Appel & Haken (1977) - 사색 문제의 컴퓨터 보조 증명 Hales (2005) - 케플러 추측의 증명 Ciaurri & Varona (2006) - 컴퓨터 계산 신뢰성에 관한 초기 연구 이 논문은 비록 분량이 길지 않지만, 중요한 문제를 규명한다: 겉으로는 신뢰할 수 있어 보이는 기호 계산도 체계적 오류를 포함할 수 있다는 것이다. 이는 수학 연구를 위해 컴퓨터에 의존할 때 신중함을 유지해야 하며, 소프트웨어 검증과 투명성의 중요성을 강조한다.