Skip to content
This repository was archived by the owner on Jun 20, 2024. It is now read-only.

Latest commit

 

History

History
114 lines (79 loc) · 3.43 KB

ch05-02-02-geometry.md

File metadata and controls

114 lines (79 loc) · 3.43 KB

Polynomials

Polynomials have properties that are very useful in ZK proofs. A polynomial is an expression of more than two algebraic terms. The degree of a polynomial is the highest degree of any specific term.

For an example of how Polynomials can be built and expressed in code. Run:

[,bash]

python3 finite_fields/python/polynomial.py ---

Polynomial arithmetic deals with the addition, subtraction, multiplication, and division of polynomials.

We can represent a bit pattern by a polynomial in, say, the variable $x$. Each power of $x$ in the polynomial can stand for a bit position in a bit pattern. For example, we can represent:

  • the pattern $011$ by the polynomial $x + 1$.

Representing bit patterns with polynomials will allow us to create a finite field with bit patterns.

In general, a polynomial is an expression of the form:

poly1

for some non-negative integer $n$ and where the coefficients $a_{0}$, $a_{1}$, $…$, $a_{n}$ are drawn from some designated set $S$. $S$ is called the coefficient set. $n$ marks de degree of the polynomial. A $0$-degree polynomial is called a constant polynomial.

In reality, we do not have intentions of evaluating the value of a polynomial for a certain value of $x$. We will be dealing with finding the point at which these polynomials equal 0.

Polynomial arithmetic is quite simple. The more complex operation is the division which is not in the scope of this tutorial for now.

poly2

We can define several polynomials belonging to the same field. For example, for the $F_2$ field, which only contains $0$ and $1$ as members, we can generate an infinite number of polynomials without caring for their degree. That is, the members of the field only populate the coefficients of the polynomial without caring for the exponents.

poly6

We can follow the same logic for polynomial arithmetic operations when the coefficients belong to finite field. We just need to remember the modular nature of finite fields. As an example, let’s operate with polynomials whose coefficients belong to the $F_7$ field. You will notice that we are simply using field arithmetic within the coefficients.

Addition:

poly3

Subtraction:

poly4

Multiplication:

poly5

Again the division case is out of the scope of this tutorial for now.

A polynomial $f(x)$ over a field $F$ is called prime or irreducible if $f(x)$ cannot be expressed as a product of two polynomials. Both polynomials have to be part of $F$ and of a lower degree than $f(x)$. That is, an irreducible polynomial as a polynomial that cannot be factorized into lower-degree polynomials.

Points, Lines, and Curves

Algebraic Varieties

Divisors

Algebraic Morphisms

Sheaves

The Book is a community-driven effort created for the community.