CryptoBook
  • CryptoBook
  • Book Plan
  • Style Guide
    • Sample Page
  • Contributors
  • Fundamentals
    • Mathematical Notation
    • Division and Greatest common divisor
      • Euclidean Algorithm
    • Modular Arithmetic
      • Theorems of Wilson, Euler, and Fermat
        • Fermat's Little Theorem in Detail
        • Euler's Theorem in Detail
      • Quadratic Residues
    • Continued Fractions
  • Number Theory
  • Ideals
  • Polynomials With Shared Roots
  • Integer Factorization
    • Pollard rho
    • Sieves
  • Abstract algebra
    • Groups
      • Another take on groups
      • Discrete Log Problem
    • Rings
    • Fields
    • Polynomials
  • Elliptic Curves
    • Untitled
  • Lattices
    • Introduction
    • LLL reduction
      • Gram-Schmidt Orthogonalization
      • Lagrange's algorithm
      • LLL reduction
    • Lattice reduction
      • Minkowski reduced
      • HKZ reduced
      • LLL reduced
    • Applications
      • Coppersmith algorithm
      • Extensions of Coppersmith algorithm
    • Hard lattice problems
    • Lattices of interest
    • Cryptographic lattice problems
      • Short integer solutions (SIS)
      • Learning with errors (LWE)
      • Ring-LWE
      • NTRU
    • Interactive fun
    • Resources and notations
  • Asymmetric Cryptography
  • RSA
    • Proof of correctness
    • RSA application
    • Low Private Component Attacks
      • Wiener's Attack
      • Boneh-Durfee Attack
    • Common Modulus Attack
    • Recovering the Modulus
  • Diffie-Hellman
    • MITM
  • Elliptic Curve Cryptography
  • Symmetric Cryptography
    • Encryption
    • The One Time Pad
    • AES
      • Rijndael Finite Field
      • Round Transformations
  • Hashes
    • Introduction / overview
    • The Birthday paradox / attack
  • Isogeny Based Cryptography
    • Introduction to Isogeny Cryptography
    • Isogenies
    • Isogeny and Ramanujan Graphs
  • Appendices
    • Sets and Functions
    • Probability Theory
Powered by GitBook
On this page
  • Introduction
  • Mathematical Objects
  • Special Sets
  • Relation operators
  • Logical Notation
  • Operators

Was this helpful?

Export as PDF
  1. Fundamentals

Mathematical Notation

Introduction

Throughout CryptoBook, discussions are made more concise by using various mathematical symbols. For some of you, all of these will feel familiar, while for others, it will feel new and confusing. This chapter is devoted to helping new readers gain insight into the notation used.

If you're reading a page and something is new to you, come here and add the symbol, someone else who understands it can explain its meaning

Mathematical Objects

Special Sets

  • C\mathbb{C}C: denotes the set of complex numbers

  • R\mathbb{R}R: denotes the set of real numbers

  • Z\mathbb{Z}Z: denotes the set of integers

  • Q\mathbb{Q}Q: denotes the set of rational numbers

  • N\mathbb{N}N: denotes the set of natural numbers (non-negative integers)

  • Z/nZ\mathbb{Z}/n\mathbb ZZ/nZ: denotes the set of integers mod nnn

"""
We can call each of these sets with Sage using the 
following commands. Comments are the result of the
input.
"""
CC
# Complex Field with 53 bits of precision
RR
# Real Field with 53 bits of precision
ZZ
# Integer Ring
QQ
# Rational Field
NN
# Non negative integer semiring
Zmod(11) # or `Integers(11)` or `IntegerModRing(11)` 
# Ring of integers modulo 11
  • We refer to unit groups by R×R^\timesR× or R∗R^*R∗. Example: (Z/nZ)×(\mathbb Z/n \mathbb Z)^\times(Z/nZ)×

  • We refer to finite fields with qqq elements by Fq\mathbb{F}_qFq​

  • We refer to a general field by kkk

  • We refer to the algebraic closure of this field by kˉ\bar{k}kˉ

"""
Example of defining a field and then its 
algebraic closure
"""
GF(3)
# Finite Field of size 3 , where GF stands for Galois Field 
GF(3).algebraic_closure()
# Algebraic closure of Finite Field of size 3
"""
If you want to find which field an element belongs to you can use the 
`.parent()` function
"""

x = 7
print(x.parent())
# Integer Ring

y = 3.5
print(y.parent())
# Real Field with 53 bits of precision
"""
If you want to "lift" an element from a quotient ring R/I to the ring R
use the `.lift()` function
"""
R = ZZ
RI = Zmod(11)
x =  RI(5)

print(x.parent())
# Ring of integers modulo 11

y = x.lift()
print(y.parent())
# Integer Ring

print(y in R)
# True

Relation operators

  • ∈\in∈means is an element of (belongs to)

Logical Notation

  • ∀\forall∀means for all

  • ∃\exists∃means there exists. ∃!\exists!∃! means uniquely exists

Operators

  • Pr(A)Pr(A)Pr(A) means the probability of an event AAAto happen. Sometimes denoted as Pr[A]Pr[A]Pr[A]or as P(A)P(A)P(A)

PreviousContributorsNextDivision and Greatest common divisor

Last updated 3 years ago

Was this helpful?