Abstract

We formalize algebraic numbers in Isabelle/HOL. Our development serves as a verified implementation of algebraic operations on real and complex numbers. We moreover provide algorithms that can identify all the real or complex roots of rational polynomials, and two implementations to display algebraic numbers, an approximative version and an injective precise one. We obtain verified Haskell code for these operations via Isabelle’s code generator. The development combines various existing formalizations such as matrices, Sturm’s theorem, and polynomial factorization, and it includes new formalizations about bivariate polynomials, unique factorization domains, resultants and subresultants.

Highlights

  • IntroductionI.e., the numbers that are expressed as roots of non-zero integer (or equivalently rational) polynomials, are an attractive subset of the real or complex numbers

  • Algebraic numbers, i.e., the numbers that are expressed as roots of non-zero integer polynomials, are an attractive subset of the real or complex numbers

  • For Isabelle, Li and Paulson [18] independently implemented algebraic numbers. They did not formalize resultants; instead, they employed an external tool as an oracle to provide polynomials that represent desired algebraic numbers, and provided a method to validate that the polynomials from the oracle are suitable

Read more

Summary

Introduction

I.e., the numbers that are expressed as roots of non-zero integer (or equivalently rational) polynomials, are an attractive subset of the real or complex numbers. Most of the algorithms and proofs of our formalization are based on a textbook by Mishra [20, Chapters 7 and 8]; it contains a detailed implementation of real algebraic numbers, including proofs. When it comes to subresultants, we followed the original papers by Brown and Traub [2,3]. For Isabelle, Li and Paulson [18] independently implemented algebraic numbers They did not formalize resultants; instead, they employed an external tool as an oracle to provide polynomials that represent desired algebraic numbers, and provided a method to validate that the polynomials from the oracle are suitable..

Representation of Algebraic Numbers
Unique Representation
Unique Representation or Not?
Synthesizing Representative Polynomials
Negation and Inverse
Multiplication and Addition with Rational Numbers
Addition and Multiplication of Algebraic Numbers
Resultant has Desired Roots
Resultant is Non-Zero
Computing the Resultant
Real Algebraic Numbers
Datatypes for Real Algebraic Numbers
Comparison and Tightening Intervals
Polynomial Factorization and Root Separation
Implementing Real and Complex Numbers via Real Algebraic Numbers
Displaying Algebraic Numbers
Real and Complex Roots of Rational Polynomials
Real Roots of Integer Polynomials
Root Bounds
Root Separation
Complex Roots of Integer Polynomial
Factorization of Polynomials over C and R
A Verified Implementation of Algebraic Numbers
Conclusion

Talk to us

Join us for a 30 min session where you can share your feedback and ask us any queries you have

Schedule a call

Disclaimer: All third-party content on this website/platform is and will remain the property of their respective owners and is provided on "as is" basis without any warranties, express or implied. Use of third-party content does not indicate any affiliation, sponsorship with or endorsement by them. Any references to third-party content is to identify the corresponding services and shall be considered fair use under The CopyrightLaw.