- High level overviews
- Associations
- Universities
- Notation and terminology
- Problem hardness and complexity
- P, NP, NP-complete, NP-hard - non-deterministic polynomial time solvable/verifiable
- IP provable in interactive polynomial time
- Computational complexity
- Circuit complexity
- Lattices complexity
- Learning With Errors complexity
- Famous solved problems
- Proofs
- Arithmetic
- Basics - counting, log, exp
- Modular arithmethic - p-adic numbers, ...
- P-adic numbers
- Calculus - differential, integral, ...
- Linear algebra - concerns linear equations and linear maps, and their representations (vector/matrix)
- Abstract algebra - generalisation of arithmetic, using set, group, ring, field, polynomial, elliptic curve, pairing, ...
- Polynomials
- Sets
- Magmas
- Groups
- Basics
- Features of a single group e.g. abelian
- Features of groups e.g. homomorphism
- Bilinear groups
- Isogeny groups
- Rings
- Basics
- Examples of rings
- Characteristics of a ring
- Ideal
- Principal ideal
- Divisability
- Zero divisors
- Polynomial rings
- Fields
- Basics
- Selective fields as illustration
- Creation of finite fields using polynomials and polynomial operations
- Order (number of elements)
- Characteristic (number of time the multiplicative identity must be added to the the additive identity)
- Fields and polynomials
- Extension and subfield
- Splitting fields
- Cyclotomic fields
- Fields of p-adic numbers
- Roots and roots of unity
- Quadratic Residue, Lagrange and Jacobi Symbols
- Elliptic Curves
- EC Pairings
- Isogenous EC
- Representation theory
- Logic
- Finite State Machines
- Proposition logic - SMT, SAT
- FOL
- Subjective logic
- Deontic logic
- Number theory
- Graphs
- Transformations
- Information and computation
- Tools
- Humour

- Arithmetic (Egypt - numbers), geometry (Greece - shape), calculus (Europe - 17th century - motion, change, space).
- Counting (arithmetic - number theory - primes), reasoning and communication (logic, Venn diagrams, set theory, grammar), motion and change (series, functions, calculus, differentials, integration, analytic number theory), shape (geometry), symmetry (symmetry groups, sphere packing), position (topology, surfaces, knots, elliptic curves)
- mathematica (...)

- Abstract algebra (how to specify sets, groups, rings, fields, how to compute with their elements)
- Abstract Algebra - great overview + Sage exercises, covering:
- The Integers
- Groups
- Cyclic Groups
- Permutation Groups
- Cosets and Lagrange’s Theorem
- Introduction to Cryptography
- Algebraic Coding Theory
- Isomorphisms
- Normal Subgroups and Factor Groups
- Homomorphisms
- Matrix Groups and Symmetry
- The Structure of Groups
- Group Actions
- The Sylow Theorems
- Rings
- Polynomials
- Integral Domains
- Lattices and Boolean Algebras
- Vector Spaces
- Fields
- Finite Fields
- Galois Theory

- Encyclopedia of Mathematics
- Karl Popper -
- 'The logic of scientific discovery'
- Also: 'We should therefore claim, in the name of tolerance, the right not to tolerate the intolerant.'

- Tricki.org - a Wiki-style site that is intended to develop into a large store of useful mathematical problem-solving techniques
- US NIST DLMF - Digital Library of Mathematical Functions
- US NIST DADS - Dictionary of Algorithms and Data Structures
- Encyclopedia-of-math (Springer, in cooperation with the European Mathematical Society)
- European Mathematical Society
- zbMath (Zentralblatt MATH) - books, authors, classification, (related to European Mathematical Society)
- Wikipedia's Mathematics portal
- Turing awards - Wikipedia - like Nobel prize for math

- UK - IMA - Institute of Mathematics and its Applications
- UK - Royal Society - journals/collections/books eg Newton
- EU - EMIS - European Mathemathical Information Service
- US - MAA
- US - AMS

- Be - Ugent
- Be - KU-Leuven
- DE - Mannheim
- NL - EIDMA - Euler Institute for Discrete Mathematics and its Applications - Henk van Tilborg, Lenstra, ...
- US - Number Theory Web
- US - Berkeley Math
- US - Stanford - Statistics
- IL - Haifa - robotics
- IL - Weizmann
- IL - Weizmann's links to Ben-Gurion, Technion, Haifa, ...

- The square root √ may be specified as an inverse exponent, i.e. x
^{1/2}, the n^{th}root as x^{1/n}. - Negative exponent: n
^{-1}= 1/n - Strong DH: given a sequence g, g
^{x}, g^{x2}, ..., g^{xq}for a group G of prime order p, output a pair (c, g^{(x+c)-1}) with c in Z_{p}. Written otherwise, g^{(x+c)-1}= g^{1/(x+c)}= the (x+c)^{th}root of g. Where you can select c but don't know x.

- Affine - Wikipedia
- Affine Coordinate System, a coordinate system that can be viewed as a Cartesian coordinate system where the axes have been placed so that they are not necessarily orthogonal to each other. See Tensor - Wikipedia.
- A tensor is an algebraic object that describes a multilinear relationship between sets of algebraic objects related to a vector space. Tensors may map between different objects such as vectors, scalars, and even other tensors. There are many types of tensors, including scalars and vectors (which are the simplest tensors), dual vectors, multilinear maps between vector spaces, and even some operations such as the dot product. Tensors are defined independent of any basis, although they are often referred to by their components in a basis related to a particular coordinate system; those components form an array, which can be thought of as a high-dimensional matrix.
- Affine combination - Wikipedia
- An affine combination of x
_{1}, ..., x_{n}is a linear combination a_{1}x_{1}+ a_{2}x_{2}+ ... + a_{n}x_{n}. Here, x_{1}, ..., x_{n}can be elements (vectors) of a vector space over a field K, and the coefficients a_{i}are elements of K. - The elements x
_{1}, ..., x_{n}can also be points of a Euclidean space, and, more generally, of an affine space over a field K. In this case the a_{i}are elements of K (or R for a Euclidean space), and the affine combination is also a point. - Affine transformations - Wikipedia
- Affine transformations - brilliant.org
- An affine transformation is a type of geometric transformation which preserves collinearity (if a collection of points sits on a line before the transformation, they all sit on a line afterwards) and the ratios of distances between points on a line. Types of affine transformations include translation (moving a figure), scaling (increasing or decreasing the size of a figure), and rotation (turning a figure about a point).
- Note that affine transformations can be done Rn, for n GE 1, although some of the transformations do not make sense for n=1. Matrix algebra will be used to unify the presentation. To get an unique affine transformation matrix, one more point is needed than the n of the Rn space. It also is assumed that the points do not share a common Rn−1 space. For example, in R2 space, 3 points are required and they must not all in in the same R1 space, that is, must not be collinear.

- Z/NZ = {0, ..., N-1}, Z/NZ is the set of remainders modulo N
- An alternative notation for Z/NZ is Z
_{N} - The set of intervertable elements in Z/NZ are (Z/NZ)
^{*}= { x ∈ Z/NZ: gcd(x,N)=1} - In case N is a prime p we have (Z/pZ)
^{*}= {1, ..., p-1} - F
_{p}= Z/pZ = {0, ..., p-1}, which is a finite field of characteristic p - alternative notation: Z_{p} - F
_{p}^{*}= (Z/pZ)^{*}= {1, ..., p-1}

- Oded Goldreich - Weizman - complexity, proofs, cryptography
- Computational complexity theory - Wikipedia

- P versus NP - Wikipedia
- The P versus NP problem is a major unsolved problem in theoretical computer science. In informal terms, it asks whether every problem whose solution can be quickly verified can also be quickly solved.

- Polynomial time - Wikipedia
- An algorithm is said to be of polynomial time if its running time is upper bounded by a polynomial expression in the size of the input for the algorithm, that is, T(n) = O(n^k) for some positive constant k.
- Problems for which a deterministic polynomial-time algorithm exists belong to the complexity class P.
- Cobham's thesis states that polynomial time is a synonym for "tractable", "feasible", "efficient", or "fast".

- Non-deterministic Polynomial time - Wikipedia
- Have
**proofs verifiable in polynomial time**. - It is easy to see that the complexity class P (all problems solvable, deterministically, in polynomial time) is contained in NP (problems where solutions can be verified in polynomial time), because if a problem is solvable in polynomial time, then a solution is also verifiable in polynomial time by simply solving the problem.
- A ZKP is constructed on top of an NP problem. In ZKP, a prover intends to prove to a verifier that he knows the solution (witness) of some published NP-problem, without revealing this solution.
- Illustrations of NP problems include
- 'The Boolean circuit foo is satisfiable by some input qux.' - Given qux, you could plug it in the circuit and determine if foo is satisfied or not in poly-time. But finding such a qux which satisfies foo will be difficult.
- NP-completeness - short for "nondeterministic polynomial-time complete - Wikipedia
- Although a solution to an NP-complete problem can be verified "quickly", there is
**no known way to find a solution quickly**. - The SAT problem is the first problem that was proven to be NP-complete; see Cook–Levin theorem.
- This means that all problems in the complexity class NP are at most as difficult to solve as SAT. There is no known algorithm that efficiently solves each SAT problem, and it is generally believed that no such algorithm exists; yet this belief has not been proved mathematically, and resolving the question of whether SAT has a polynomial-time algorithm is equivalent to the P versus NP problem, which is a famous open problem in the theory of computing.
- List of NP complete problems - Wikipedia
- Karp's list of NP complete problems - Wikipedia
- NP-hardness - short for "nondeterministic polynomial-time complete - Wikipedia
- is the defining property of a class of problems that are informally "at least as hard as the hardest problems in NP".
- A simple example of an NP-hard problem is the subset sum problem.
- Subset Sum Problem - Wikipedia
- There is a multiset S of integers and a target-sum T, and the question is to decide whether any subset of the integers sum to precisely T.
- The problem is known to be NP-hard. Moreover, some restricted variants of it are NP-complete.

- Lund, Karloff, Fortnow, and Nisan showed that co-NP had multiple prover interactive proofs
- Shamir established that IP=PSPACE - where PSPACE is the set of all decision problems that can be solved by a Turing machine using a polynomial amount of space.

- Computational complexity - Wikipedia
- Computational complexity theory - Wikipedia
- Complexity classes
- Deterministic time/space: f(n), log(n), poly(n), exponential i.e. 2^poly(n)
- Non-deterministic time/space: non-deterministic version of f(n), log(n), poly(n), exponential i.e. 2^poly(n)
- Complexity classes - overview - Wikipedia
- Computational complexity of mathematical operations - Wikipedia

- Time complexity - Wikipedia
- Describes the amount of computer time it takes to run an algorithm.
- Commonly estimated by counting the number of elementary operations performed by the algorithm, supposing that each elementary operation takes a fixed amount of time to perform.
- Thus, the amount of time taken and the number of elementary operations performed by the algorithm are taken to be related by a constant factor.
- Since an algorithm's running time may vary among different inputs of the same size, one commonly considers the worst-case time complexity, which is the maximum amount of time required for inputs of a given size.

- One needs to determine how long the algorithm takes, in terms of the size of its input.
- Also, one needs to consider how fast a function grows with the input size, the rate of growth of the running time.

- Asymptotic notation - Khan Academy
*big-Θ*(big-theta) notation expresses that a running time, once n gets large enough, the running time is at least k_{1}⋅n and at most k_{2}⋅n for some constants k_{1}and k_{2}.*big-Ω*(big-omega) notation expresses that an algorithm takes at least a certain amount of time, without providing an upper bound.- Big-Ω notation is used for asymptotic lower bounds, it bounds the growth of the running time from below for large enough input sizes.
*big-O*notation, typically O(n), O(log n), O(n^a), etc., where*n*is the size in units of bits needed to represent the input.- Algorithmic complexities can be classified according to the type of function appearing in the big O notation. For example, an algorithm with time complexity O(n) is a linear time algorithm and an algorithm with time complexity O(n^a) for some constant a > 1 is a polynomial time algorithm.
- Big O notation - Wikipedia

- Circuit complexity - Wikipedia
- branch of computational complexity theory in which Boolean functions are classified according to the size or depth of the Boolean circuits that compute them.
- A related notion is the circuit complexity of a recursive language that is decided by a uniform family of circuits

- Lattice - Wikipedia
- Lattice problems
*Shortest Vector Problem (SVP), gapSVP, Closest Vector Problem (CVP), ...*- Wikipedia

- LWE - Wikipedia

- Fermat's last theorem - Wikipedia
- Wiles proof of Fermat's last theorem - Wikipedia

- Proof - an overloaded term - Wikipedia
- Propositional proof - 'truth' - Wikipedia
- Formal proof - Wikipedia - a finite sequence of sentences (called well-formed formulas in the case of a formal language), each of which is an axiom, an assumption, or follows from the preceding sentences in the sequence by a rule of inference.
- Proof complexity - Wikipedia - concerned with proving proof-length lower and upper bounds in various propositional proof systems - connects to SAT solvers

- that the verifier accepts a correct proof, and
- rejects an incorrect assertion with a probability of at least 2/3.
- ... however, one usually tries to obtain a probability less than 2
^{-k}where k is the security parameter... - ...a way to achieve this 'security amplification' is to take a protocol with 1/3 error probability, run it
*O(k)*times and accept/reject by majority vote

- IPS - Wikipedia

- NP
- Arthur-Merlin and Merlin-Arthur protocols
- Public coin protocol versus private coin protocols
- IP
- QIP - for quantum interactive proof system, and the corresponding complexity class QIP. A series of results culminated in a 2010 breakthrough that QIP = PSPACE
- ZK
- MIP
- Probabilistically Checkable Proofs (PCP)

- PCP - Wikipedia
- A type of proof that can be checked by a randomized algorithm using a bounded amount of randomness and reading a bounded number of bits of the proof. The algorithm is then required to accept correct proofs and reject incorrect proofs with very high probability.
- A standard proof (or certificate), as used in the verifier-based definition of the complexity class NP, also satisfies these requirements, since the checking procedure deterministically reads the whole proof, always accepts correct proofs and rejects incorrect proofs.
- However, what makes them interesting is the existence of probabilistically checkable proofs that can be checked by reading only a few bits of the proof using randomness in an essential way.

- Arithmetic - Wikipedia

- Logarithm - Wikipedia
- Logarithm with e as base - Wikipedia
- The natural logarithm of x is the power to which e would have to be raised to equal x.
- For example, ln 7.5 is 2.0149..., because e
^{2.0149...}= 7.5 - Euler's number e - Wikipedia
- is approximately equal to 2.71828
- is the base of natural logarithms
- Exponentiation - Wikipedia

- Modular arithmetic developed by Carl Friedrich Gauss in his book
*Disquisitiones Arithmeticae*, 1801 - Given an integer n > 1, called a modulus, two integers a and b are said to be congruent modulo n, if n is a divisor of their difference (that is, if there is an integer k such that a − b = kn).
**The modulo operation:**the notation*b mod n*(without parentheses) refers to the**modulo operation**. Indeed,*b mod n*denotes the unique integer a such that 0 ≤ a < n and a ≡ b (mod n)(that is, the remainder of b when divided by n**The congruence equation:**the notation*a ≡ b (mod n)*, where the parentheses mean that (mod n) applies to the entire equation, not just to the right-hand side (here, b).- Given an integer n > 1, called a modulus,
**a ≡ b (mod n)**if n is a divisor of their difference (if there is an integer k such that a − b = k.n) - Reduction: 9 (mod 2) ≡ 1 (mod 2) (there is an integer k(=4) such that 9-1 = k.2
- Reduction: 9 (mod 2) ≡ 1 (mod 2) (there is an integer k(=4) such that 9-1 = k.2
- Reduction: 8 (mod 2) ≡ 0 (mod 2) (there is an integer k(=4) such that 8-0 = k.2
- Planetcalc - all kinds of calculators including for modular arithmethic
- Observation: 7-5=2, 5-7=-2 7 ≡ 5 (mod 2) because 7-5=2, (2 mod 2) = -4 | 2
- In modulus 12, one can assert that 38 ≡ 14 (mod 12) because 38 − 14 = 24 (a multiple of 12, with k=2). Alternatively, 14 ≡ 38 (mod 12) because 14 − 38 = -24 (also a multiple of 12, with k=-2).
- Another way to express this is to say that both 38 and 14 have the same remainder 2, when divided by 12.
- More examples: 8 mod 4 ≡ 0, 7 mod 2 ≡ 1
- The definition of congruence also applies to negative values. For example:
- 2 ≡ − 3 (mod 5) because -3 -2 | 5 (the notation (mod 5) at the end of the expression means mod 5 applies to both sides of the equation)
- − 8 ≡ 7 (mod 5) because 7 - (-8) = 15 | 5
- − 3 ≡ − 8 (mod 5) because -8 - (-3) = 5 | 5
- 1 ≡ − 3 (mod 2) because -3 -1 = -4 | 2
- 330 ≡ -1 (mod 331) because -1 - 330 = -331 | 331
- Fermat's little theorem
- If p is a prime number, then for any integer a, the number a
^{p − a}is an integer multiple of p. - Expressed otherwise: a
^{p}≡ a mod p - Also, if a is not divisible by p, Fermat's little theorem is equivalent to the statement that a
^{p − 1}− 1 is an integer multiple of p. - Expressed otherwise: a
^{p-1}≡ 1 mod p - Root of unity modulo n - Wikipedia and quite a few other calculators
- A k
^{th}root of unity modulo n for positive integers k, n ≥ 2, is a root of unity in the ring of integers modulo n; that is, a solution x to the equation (or congruence) x k ≡ 1 ( mod n ). - If k is the smallest such exponent for x, then x is called a primitive k
^{th}root of unity modulo n. - Modular arithmetic calculator and quite a few other calculators

- p-adic number - Wikipedia
- the p-adic number system for any prime number p extends the ordinary arithmetic of the rational numbers in a different way from the extension of the rational number system to the real and complex number systems.
- The extension is achieved by an alternative interpretation of the concept of "closeness" or absolute value. In particular, two p-adic numbers are considered to be close when their difference is divisible by a high power of p: the higher the power, the closer they are.
- This property enables p-adic numbers to encode congruence information in a way that turns out to have powerful applications in number theory – including, for example, in the famous proof of Fermat's Last Theorem by Andrew Wiles
- p-adic valuation - Wikipedia
- the p-adic valuation or p-adic order of an integer n is the exponent of the highest power of the prime number p that divides n. It is denoted
*ν*Equivalently,_{p}(n)*ν*is the exponent to which p in the prime factorization of n._{p}(n)

- Calculus - Wikipedia - two major branches
- Differential calculus concerns instantaneous rates of change, and the slopes of curves.
- Integral calculus concerns accumulation of quantities, and areas under or between curves.
- These two branches are related to each other by the fundamental theorem of calculus, and they make use of the fundamental notions of convergence of infinite sequences and infinite series to a well-defined limit.

- the derivative of the displacement of a moving body with respect to time is the velocity of the body,
- and the derivative of the velocity with respect to time is acceleration.

- Pi calculus- a process calculus
- Process calculus - e.g. Hoare CSP

- linear equations such as a
_{1}x_{1}+ ⋯ + a_{n}x_{n}= b , - linear maps such as ( x
_{1}, … , x_{n}) ↦ a 1 x_{1}+ ⋯ + a n x_{n},

- Linear algebra - Wikipedia
- Vector spaces - Wikipedia
- Matrices - Wikipedia
- Basis - Wikipedia
- Linear map - Wikipedia
- Linear Programming- Wikipedia
- Simplex algorithm- Wikipedia

- System of linear equations - Wikipedia

- Vector - Wikipedia

- A vector space formed by geometric vectors is called a Euclidean vector space
- Euclidean space is the fundamental space of geometry, intended to represent physical space. In Euclid's Elements it was the three-dimensional space of Euclidean geometry, but in modern mathematics there are Euclidean spaces of any positive integer dimension n, which are called Euclidean n-spaces. For n equal to one or two, they are commonly called respectively Euclidean lines and Euclidean planes. The qualifier "Euclidean" is used to distinguish Euclidean spaces from other spaces that were later considered in physics and modern mathematics.
- Ancient Greek geometers introduced Euclidean space for modeling the physical space. Their work was collected by the ancient Greek mathematician Euclid in his Elements, with the great innovation of proving all properties of the space as theorems, by starting from a few fundamental properties, called postulates, which either were considered as evident (for example, there is exactly one straight line passing through two points), or seemed impossible to prove (parallel postulate).
- After the introduction at the end of 19th century of non-Euclidean geometries, the old postulates were re-formalized to define Euclidean spaces through axiomatic theory. Another definition of Euclidean spaces by means of vector spaces and linear algebra has been shown to be equivalent to the axiomatic definition. It is this definition that is more commonly used in modern mathematics. In all definitions, Euclidean spaces consist of points, which are defined only by the properties that they must have for forming a Euclidean space.
- There is essentially only one Euclidean space of each dimension; that is, all Euclidean spaces of a given dimension are isomorphic. Therefore, in many cases, it is possible to work with a specific Euclidean space, which is generally the real n-space Rn, equipped with the dot product. An isomorphism from a Euclidean space to Rn associates with each point an n-tuple of real numbers which locate that point in the Euclidean space and are called the Cartesian coordinates of that point.
- As from the early 19th century, other self-consistent non-Euclidean geometries were discovered.
- An implication of Albert Einstein's theory of general relativity is that physical space itself is not Euclidean, and Euclidean space is a good approximation for it only over short distances (relative to the strength of the gravitational field).
- a vector space formed by tuples is called a coordinate vector space.
- The simplest example of a vector space over a field F is the field F itself (as it is an abelian group for addition, a part of the requirements to be a field), equipped with its addition (It becomes vector addition.) and multiplication (It becomes scalar multiplication.). More generally, all n-tuples (sequences of length n) ( a
_{1}, a_{2}, … , a_{n}) of elements a_{i}of F form a vector space that is usually denoted F_{n}and called a coordinate space. The case n = 1 is the above-mentioned simplest example, in which the field F is also regarded as a vector space over itself.

- Vector space - Wikipedia
- A vector space over a field F is a non-empty set V together with two binary operations that satisfy the eight axioms listed below. In this context, the elements of V are commonly called vectors, and the elements of F are called scalars.
- The first operation, called vector addition or simply addition assigns to any two vectors v and w in V a third vector in V which is commonly written as v + w, and called the sum of these two vectors.
- The second operation, called scalar multiplication，assigns to any scalar a in F and any vector v in V another vector in V, which is denoted av.
- The eight operations:
- Associativity of vector addition, u + (v + w) = (u + v) + w
- Commutativity of vector addition, u + v = v + u
- Identity element of vector addition, There exists an element 0 ∈ V, called the zero vector, such that v + 0 = v for all v ∈ V.
- Inverse elements of vector addition, For every v ∈ V, there exists an element −v ∈ V, called the additive inverse of v, such that v + (−v) = 0.
- Compatibility of scalar multiplication with field multiplication, a(bv) = (ab)v
- Identity element of scalar multiplication, 1v = v, where 1 denotes the multiplicative identity in F.
- Distributivity of scalar multiplication with respect to vector addition, a(u + v) = au + av
- Distributivity of scalar multiplication with respect to field addition, (a + b)v = av + bv

- In Euclidean
**geometry**, the dot product of the Cartesian coordinates of two vectors is widely used. It is the product of the Euclidean magnitudes of the two vectors and the cosine of the angle between them. These definitions are equivalent when using Cartesian coordinates.- In geometry, a Cartesian coordinate system in a plane specifies each point uniquely by a pair of real numbers called coordinates, which are the signed distances to the point from two fixed perpendicular oriented lines, called coordinate lines, coordinate axes or just axes (plural of axis). The point where they meet is called the origin and has (0, 0) as coordinates.
- Similarly, the position of any point in three-dimensional space can be specified by three Cartesian coordinates, which are the signed distances from the point to three mutually perpendicular planes. More generally, n Cartesian coordinates specify the point in an n-dimensional Euclidean space for any dimension n. These coordinates are the signed distances from the point to n mutually perpendicular fixed hyperplanes.

- Euclidean spaces are often defined by using vector spaces.
- In this case, the dot product is used for defining lengths (the length of a vector is the square root of the dot product of the vector by itself) and angles (the cosine of the angle between two vectors is the quotient of their dot product by the product of their lengths).
- It is often called the inner product of Euclidean space (even though it is not the only inner product that can be defined on Euclidean space).
- The dot product is the sum of the products of the corresponding entries of the two sequences of numbers.
- The name "dot product" is derived from the centered dot " · " that is often used to designate this operation; the alternative name "scalar product" emphasizes that the result is a scalar, rather than a vector (as with the vector product in three-dimensional space).

- Linear map - Wikipedia

- Bilinear form - Wikipedia
- Is a bilinear map V × V → K on a vector space V (the elements of which are called vectors) over a field K (the elements of which are called scalars).
- In other words, a bilinear form is a function B : V × V → K that is linear in each argument separately:
- B(u+v, w) = B(u, w) + B(v, w)
- B(λu, v) = λB(u, v)
- B(u, v+w) = B(u, v) + B(u, w)
- B(u, λv) = λB(u, v)

- Bilinear map - Wikipedia

- Algebra - Wikipedia
- Elementary algebra deals with the manipulation of
**variables**such as*x*as if they were numbers. - Linear algebra, which deals with linear equations and linear mappings, is used for modern presentations of geometry, and has many practical applications (weather forecasting ...).
- Abstract algebra is the name given to the study of algebraic structures such as groups, rings, and fields, see below
- Abstract Algebra - great overview + Sage exercises

- Group Properties Wiki - beta - but interesting
- Group - is
- a set and
- an operation that combines any two elements of the set to produce a third element of the set,
- in such a way that the operation is associative,
- an identity element exists and
- every element has an inverse
- Otherwise said: Group G is a set with 1 binary operation * such that following properties holds: * is associative, there is an identity element, each element has an inverse element
- Example: the integers together with the addition operation form a group.

- Diffie-Hellman depends on cyclic groups with particular properties.
- RSA depends on groups that are not cyclic and require that the order of the group is unknown to the attacker.

**Abelian**: if a * b = b * a then the group is called abelian or commutative**Cyclic**: if there exists a**generator**such that for any element b there is an integer j such that g*g*^{j}= b then the group is**cyclic**- For implementing cyclic groups, two settings are possible: finite fields and elliptic curves.
- Bilinear maps, or pairings, give cyclic groups additional properties.
**Order of a group**: the number of elements in a finite group is called its**order**, |G|- Furthermore:
- The subgroup of G consisting of all powers of the element
*a*is called the subgroup generated by a, denoted by <*a*> - In case the element
*a*is a generator of the group (ref*g*supra), then <*a*> (the subgroup generated by*a*) is simply the group - And <
*a*> is of finite order*k*if is*k*is the least positive integer such that*a*= e, the identity element^{k}

- Homomorphism: is a structure-preserving map between two algebraic structures of the same type (such as two groups, two rings, or two vector spaces) that preserves the operations of the structures.
- Homomorphisms of vector spaces are also called linear maps, and their study is the subject of linear algebra.
- Group homomorphism: given two groups, (G, ∗) and (H, ·), a group homomorphism from (G, ∗) to (H, ·) is a function h : G → H such that for all u and v in G it holds that
*h ( u ∗ v ) = h ( u ) ⋅ h ( v )*where the group operation on the left side of the equation is that of G and on the right side that of H.

- G1, G2, GT are groups of prime order p
- The pairing e : G1 × G2 → GT is a bilinear map
- g is a generator for G1 , h is a generator for G2, and e(g, h) is a generator for GT
- There are efficient algorithms for computing group operations, evaluating the bilinear map, deciding membership of the groups, deciding equality of group elements and sampling generators of the groups. We refer to these as the generic group operations.
- There are many ways to set up bilinear groups both as symmetric bilinear groups where G1 = G2 and as asymmetric bilinear groups where G1 is different from G2.
- Galbraith, Paterson and Smart [Steven D. Galbraith, Kenneth G. Paterson, and Nigel P. Smart. Pairings for cryptographers. Discrete Applied Mathematics, 156(16):3113–3121, 2008.] classify bilinear groups as
- Type I where G1 = G2,
- Type II where there is an efficiently computable non-trivial homomorphism Ψ : G2 → G1, and
- Type III where no such efficiently computable homomorphism exists in either direction between G1 and G2. Type III bilinear groups are the most efficient type of bilinear groups and hence the most relevant for practical applications.

- Bilinear groups - consists of three groups G1, G1 and GT as well as a bilinear pairing function e.

- A
**surjective**function (also known as surjection, or onto function) is a function f such that every element y can be mapped from some element x such that f(x) = y. In other words, every element of the function's codomain is the image of at least one element of its domain. It is not required that x be unique; the function f may map one or more elements of X to the same element of Y. - The
**kernel**of a homomorphism (function that preserves the structure) is generally the inverse image of 0 (except for groups whose operation is denoted multiplicatively, where the kernel is the inverse image of 1).- An important special case is the kernel of a linear map. The kernel of a matrix, also called the null space, is the kernel of the linear map defined by the matrix.
- For kernel in linear algebra see https://en.wikipedia.org/wiki/Kernel_(linear_algebra)

- The kernel of a homomorphism is reduced to 0 (or 1) if and only if the homomorphism is injective, that is if the inverse image of every element consists of a single element. This means that the kernel can be viewed as a measure of the degree to which the homomorphism fails to be injective.
- For some types of structure, such as abelian groups and vector spaces, the possible kernels are exactly the substructures of the same type. This is not always the case, and, sometimes, the possible kernels have received a special name, such as normal subgroup for groups and two-sided ideals for rings.
- Kernels allow defining quotient objects (also called quotient algebras in universal algebra, and cokernels in category theory). For many types of algebraic structure, the fundamental theorem on homomorphisms (or first isomorphism theorem) states that image of a homomorphism is isomorphic to the quotient by the kernel.

- Ring R - set with 2 binary operations (+ and *) such that R is abelian with respect to +, * is associative, and + and * are distributive
- If there is a multiplicative identity the ring is called a ring with identity
- A ring is called commutative if * is commutative
- A ring is called an integral domain if it is a commutative ring with identiy e ¬ = 0 in which ab=0 implies a=0 or b=0
- A ring is called a division ring if the nonzero elemnts form a group under *
- A commutative division ring is called a field

- the integers, referred to as ZZ or Z/nZ or Zn or Z
_{n} - the rationals
- the reals
- the complex numbers

- Among the integers, the ideals correspond one-for-one with the non-negative integers: in this ring, every ideal is a principal ideal consisting of the multiples of a single non-negative number.
- In other rings the ideals may not correspond directly to the ring elements, and certain properties of integers, when generalized to rings, attach more naturally to the ideals than to the elements of the ring. For instance, the prime ideals of a ring are analogous to prime numbers, and the Chinese remainder theorem can be generalized to ideals.

- If there exists an element x in R with ax = b, one says that a is a
**left divisor**of b and that b is a right multiple of a. - Similarly, if there exists an element y in R with ya = b, one says that a is a
**right divisor**of b and that b is a left multiple of a. - One says that a is a two-sided divisor of b if it is both a left divisor and a right divisor of b; the x and y above are not required to be equal.

- Crash course - Changyu Dong - Michael Huth
- Crash course - Finite Fields
- Finite field - Wikipedia
- 'Finite field' and 'Galois Field (GF)' are synonyms.
- The
**order**of a field is the cardinality of its elements. - For every prime number p and every positive integer k there are fields of order p
^{k}all of which are isomorphic.

- Set F with 2 binary operations (+ and *)
- Has two distinguished elements:
- zero element 0
- identity element e such that e ¬ = 0

- Is an abelian group with regard to + with 0 as identity element
- The elements of F that are ¬ = 0 form an abelian group with regard to *, with e as identity element - requirement for multiplicative inverse???
- The distributive laws hold on + and *

- Z/NZ = {0, ..., N-1}, Z/NZ is the set of remainders modulo N
- An alternative notation for Z/NZ is Z
_{N} - The set of intervertable elements in Z/NZ are (Z/NZ)
^{*}= { x ∈ Z/NZ: gcd(x,N)=1} - In case N is a prime p we have (Z/pZ)
^{*}= {1, ..., p-1} - F
_{p}= Z/pZ = Zp = {0, ..., p-1}, which is a finite field of characteristic p - F
_{p}^{*}= (Z/pZ)^{*}= {1, ..., p-1}

- Composites do not yield a field because there will be numbers for which there is no multiplicative inverse:
- F
_{n}e.g. Z_{15}is not a field. The main reason why Zn is only a commutative ring and not a finite field is because not every element in Zn is guaranteed to have a multiplicative inverse. An element a of Zn does not have a multiplicative inverse if a is not relatively prime to the modulus n. E.g. in Z_{15}5 is not relatively prime to the modulus 15. A multiplicative inverse or reciprocal for a number x, denoted by 1/x or x−1, is a number which when multiplied by x yields the multiplicative identity, 1. - See Lidl and Niederreiter Chapter 10 for calculations in fields GF(2
^{2}) ... GF(2^{3})...GF(11^{2}) - F
_{8}= F_{23}is a finite field - F
_{p}= Z/pZ = Z_{p}= {0,1,...,p-1} is a finite field - F
_{9}= F_{32}is a field of 9 elements. F_{9}is an extension of F_{3}of degree 2. - Fields of characteristic 2 are popular because they allow efficient arithmetic for a.o. AES and EC

- Regard F
_{pk}as an extension of F_{p}, using polynomials and polynomial operations. - Since F
_{q}= F_{pk}is the (q-1)st cyclotomic field over F_{p}we can construct it by finding the decomposition of the (q-1)st cyclotomic polynomial Q_{q-1}in F_{p}[x] into irreducible factors in F_{p}[x] which are all of the same degree. - By using companion matrices. Calculations can then be carried out by the usual rules of matrix algebra.

- The simplest examples of finite fields are the fields of prime order: for each prime number p, the prime field of order p, F
_{p}, may be constructed as the integers modulo p, Z/pZ. - The elements of the prime field of order p may be represented by integers in the range {0, ..., p − 1}.
- For a finite field F
_{p}= Z/pZ = Zp = {0, ..., p-1}, its order is p. - The sum, the difference and the product are the remainder of the division by p of the result of the corresponding integer operation. The multiplicative inverse of an element may be computed by using the extended Euclidean algorithm.

- A finite field of order q exists if and only if q is a prime power p
^{k}(where p is a prime number and k is a positive integer). (Why? Birkhoff and Mac Lane 1996). - If q = p
^{k}, all fields of order q are isomorphic. Moreover, a field cannot contain two different finite subfields with the same order. One may therefore identify all finite fields with the same order, and they are unambiguously denoted F_{q}, Fq or GF(q). - In a field of order q = p
^{k}, adding p copies of any element always results in zero; that is, the characteristic of the field is p.

- If q = p
^{k}for some prime p and positive integer k, we define elements of our field to be polynomials of degree k–1. - F(9) = F(3
^{2}), the field with 9 elements, can be defined as polynomials of the form ax + b where a and b are integers mod 3, i.e. a and b can take on the values 0, 1, or 2. - Addition in F(9) corresponds to polynomial addition, with the understanding that the coefficients are added mod 3. So, for example,
*(2x + 1) + (x + 0) = 1*because the leading coefficient is 2 + 1, which reduces to 0 mod 3. - For multiplication in F(9) we take the remainder after dividing by a fixed irreducible polynomial of degree k.

- For fields with a positive characteristic, the roots belong to a finite field, and, conversely, every nonzero element of a finite field is a root of unity.
- Any algebraically closed field contains exactly n n
^{th}roots of unity, except when n is a multiple of the (positive) characteristic of the field.

- the field of complex numbers C is an extension field of the field of real numbers R;
- R is a subfield of the field of complex numbers Q,
- and C/Q is also a field extension.

- It is an integral domain, since it is a subring of a field, or since the first term of the series representation of the product of two non zero p-adic series is the product of their first terms.
- The units (invertible elements) of Z
_{p}are the p-adic numbers of valuation zero. - It is a principal ideal domain, such that each ideal is generated by a power of p.
- It is a local ring of Krull dimension one, since its only prime ideals are the zero ideal and the ideal generated by p, the unique maximal ideal.
- It is a discrete valuation ring, since this results from the preceding properties.
- It is the completion of the local ring Z (p) = { n/d ∣ n, d ∈ Z, d ∉ pZ} which is the localization of Z at the prime ideal pZ.

- Fields of the integers modulo a large prime, noted as F
_{p}= Z/pZ = Z_{p}= {0, ..., p-1} - Recall that adding * removes the zero, i.e. F
_{p}^{* = {1, ..., p-1} } - Fields of characteristic 2, because they are efficiently to implement.

- Pick an irreducible polynomial f(x) over F
_{2}of degree n. - The field is defined as F
_{2n}= F_{2}[x]/f(x), i.e. binary poloynomials modulo f(x) - Field elements are represented as strings which represent the a binary polynomial.
- E.g. the string 101010111 represents the polynomial x
^{8}+ x^{6}+ x^{4}+ x^{2}+ x + 1.

- Root of unity - Wikipedia
- Any complex number that yields 1 when raised to some positive integer power n.
- Can be defined in any field.
- If the characteristic of the field is zero, the roots are complex numbers that are also algebraic integers.

- QR - Wikipedia integer q is called a quadratic residue modulo n if it is congruent to a perfect square modulo n; i.e., if there exists an integer x such that x
^{2}≡ q (mod n) - finding x may be hard - Euler's criterion - Wikipedia
- Is a formula for determining whether an integer is a quadratic residue modulo a prime via a
^{(p-1)|2}mod p - Let p be an odd prime and a be an integer coprime to p. Then:
- a
^{(p-1)|2}≡ 1 mod p if there is an integer x such that a ≡ x^{2}mod p - a
^{(p-1)|2}≡ -1 mod p otherwise - Illustration 1: which numbers are squares modulo 17 (quadratic residues modulo 17)? We can manually calculate it as:
- 1
^{2}= 1 - 2
^{2}= 4 - 3
^{2}= 9 - 4
^{2}= 16 - 5
^{2}= 25 ≡ 8 (mod 17) - 6
^{2}= 36 ≡ 2 (mod 17) - 7
^{2}= 49 ≡ 15 (mod 17) - 8
^{2}= 64 ≡ 13 (mod 17). - So the set of the quadratic residues modulo 17 is {1,2,4,8,9,13,15,16}.
- Illustration 2: let a = 17. For which primes p is 17 a quadratic residue? We can test prime p's manually given the Eurler formula a
^{(p-1)|2}mod p. - Consider p = 3, then 17
^{(3 − 1)|2}= 17^{1}≡ 2 ≡ −1 (mod 3), therefore 17 is not a quadratic residue modulo 3. - Consider p = 13, then 17
^{(13 − 1)|2}= 17^{6}≡ 1 (mod 13), therefore 17 is a quadratic residue modulo 13. As confirmation, note that 17 ≡ 4 (mod 13), and 22 = 4. - Law of quadratic reciprocity - Wikipedia
- gives conditions for the solvability of quadratic equations modulo prime numbers
- allows to determine whether there is an integer solution for any quadratic equation of the form x
^{2}≡ a mod p for an odd prime p, that is, to determine the "perfect squares" modulo p.

- Legendre symbol - Wikipedia - defined to proof the law of quadratic reciprocity
- Legendre symbol - prime p and integer a
- Let p be an
**odd prime**number. An integer a is a quadratic residue modulo p if it is congruent to a perfect square modulo p and is a quadratic non-residue modulo p otherwise. The Legendre symbol is a function of a and p defined as - +1 if a is a QR modulo p and a not ≡ 0 mod p
- -1 if a a quadratic non-residue modulo p
- 0 if a is ≡ 0 mod p

- Jacobi symbol integer n and integer a - (generalisation of Legendre) - Wikipedia - usefull a.o. in primality testing and integer factorisation
- Let n be any
**positive odd integer**n (which may be composite). For any integer a, the Jacobi symbol (a/n) is defined as the product of the Legendre symbols corresponding to the prime factors of n - +1 if a is a QR modulo p and a not ≡ 0 mod p
- -1 if a a quadratic non-residue modulo p
- 0 if a is ≡ 0 mod p

- Genus - Wikipedia In mathematics, genus (PL: genera) has a few different, but closely related, meanings. Intuitively, the genus is the number of "holes" of a surface. A sphere has genus 0, while a torus (doughnut)has genus 1.
- Smoothness - Wikipedia - Smoothness of a function is a property measured by the number of continuous derivatives it has over some domain, called differentiability class.[1] At the very minimum, a function could be considered smooth if it is differentiable everywhere (hence continuous). At the other end, it might also possess derivatives of all orders in its domain, in which case it is said to be infinitely differentiable and referred to as a C-infinity function (or C ∞ function)

- Elliptic curves - Wikipedia
- Elliptic curve cryptography- Wikipedia
- Using elliptic curves for primality testing - Wikipedia
- Using elliptic curves for factorisation (Lenstra) - Wikipedia

- If the discriminant = 0, then the curve has a repeated root, and the curve is
**singular**. - If the discriminant ≠ 0, then the curve has distinct roots, and the curve is
**non-singular**, which is good for crypto. - supersingular is a type of non-singular (sic)

- Singular curves - singularity - Wikipedia
- A singularity is a point at which a given mathematical object is not defined, or a point where the mathematical object ceases to be well-behaved in some particular way, such as by lacking differentiability or analyticity.
- For example, the function f(x) = 1/x has a singularity at x = 0, where the value of the function is not defined, as involving a division by zero.
- Non-singularity (useful for cryptography), which means that the curve has no cusps (A cusp is the most pointed end of a curve, referring to cusp (anatomy), a pointed structure on a tooth) or self-intersections.
- Supersingular curves - Wikipedia - are in fact non-singular

- Hyperelliptic curve - Encyclopedia of Mathematics
- Hyperelliptic curve - Wikipedia
- n algebraic geometry, a hyperelliptic curve is an algebraic curve of genus g > 1, given by an equation of the form y
^{2}+ h(x)y = f(x) where f(x) is a polynomial of degree n = 2g + 1 > 4 or n = 2g + 2 > 4 with n distinct roots, and h(x) is a polynomial of degree < g + 2 (if the characteristic of the ground field is not 2, one can take h(x) = 0).

- The traditional way, using the (simplified) Weierstrass equation: y
^{2}= x^{3}+ ax + b, in which form the curve always contains exactly one point at infinity - Huff curves,
- Jacobi quartics,
- (twisted) Edwards curves.

- IETF's analysis of pairing friendly curves - contains overview of PBC
- A BN curve, see https://link.springer.com/chapter/10.1007/11693383_22 (Barreto, Naehrig), is an instantiation of pairing-friendly curves proposed in 2005. A pairing over BN curves constructs optimal Ate pairings.
- A BLS curve, see https://link.springer.com/chapter/10.1007/3-540-36413-7_19 (Barreto, Lynn, Scott) is an instantiation of pairings proposed in 2002. Similar to BN curves, a pairing over BLS curves constructs optimal Ate pairings.

- Inductive reasoning
- A method of reasoning in which the premises are viewed as supplying some evidence, but not full assurance, of the truth of the conclusion.
- It is also described as a method where one's experiences and observations, including what are learned from others, are synthesized to come up with a general truth.
- Many dictionaries define inductive reasoning as the derivation of general principles from specific observations (arguing from specific to general), although there are many inductive arguments that do not have that form
- Conclusions from inductive reasoning are probably, not certain
- Deductive reasoning
- Is the process of reasoning from one or more statements (premises) to reach a logical conclusion.
- Deductive reasoning links premises with conclusions.
- If all premises are true, the terms are clear, and the rules of deductive logic are followed, then the conclusion reached is necessarily true.

- Alonzo Church - Princeton - lambda calculus - Church-Turing
- Saul Kripke - modal logic, Kripke systems
- Michael Huth
- Alessandro Artale - Modelling - DL
- Peter Smith - logic, Gödel, LaTeX, ... (Cambridge)
- ASP- Answer Set Programming (ref Victor Witold Marek)
- Victor Witold Marek- Logic

- Wikipedia - set theory- started by George Cantor
- Stanford on set theory
- Stanford on Zermelo-Fraenkel set theory
- Jonathan Jacky - author of The Way of Z
- Jonathan Jacky - Z examples in LaTeX
- Z user group

- CZT - Community Z Tools, including LaTeX styles and parsers, typecheckers, etc
**czt-ide**- Releases of standalone CZT IDE, based on Eclipse platform. Use it to author, develop and verify Z specifications.- Download archived version for Windows 64 bits
**czt-ide-updates**- Update sites for released CZT Eclipse plugins to be installed in your own Eclipse IDE.**czt-jedit**- Plugins for the jEdit text editor (www.jedit.org) adding support for typesetting Z specifications.**czt**- Standalone CZT library (classic distribution).**maven**- Instructions how to use CZT libraries deployed to Maven Central.- CZT Z/Eves- Z Eclipse automated theorem prover IDE
- ZTC- Z type checker
- HOL-Z- High Order Logic Z checker - a plug-in for Isabelle/HOL

- Formal verification software- overview by David Mentré - legacy

- logic = first order logic + relational calculus
- language = syntax for structuring specifications in the logic
- analysis = bounded exhaustive search for counterexample to a claimed property using SAT

- Alloy- MIT website, from Daniel Jackson
- Alloytools - for describing structures and a tool for exploring them. It has been used in a wide range of applications from finding holes in security mechanisms to designing telephone switching networks

- Isabelle- generic proof assistant, allows mathematical formulas to be expressed in a formal language and provides tools for proving those formulas in a logical calculus, originally developed at the University of Cambridge and Technische Universität Muenchen
- Isabelle- University of Cambridge website
- Isabelle- Concrete Semantics (how to)

- Coq-
- Coq implements a program specification and mathematical higher-level language called Gallina, based on a formal language called the Calculus of Inductive Constructions that itself combines both a higher-order logic and a richly-typed functional programming language

- FSM - Wikipedia
- NuSMV- Nex Symbolic Model Checker - open source SAT solver for Temporal Logic such as LTL and CTL - a reimplementation and extension of SMV symbolic model checker

- A formula is
*satisfiable*if it is possible to find an interpretation (model) that makes the formula true. - A formula is
*valid*if all interpretations make the formula true.

- Satisfiability.org- conference on propositional satisfiability problem (SAT)
- Satlib- benchmark problems, solvers and tools for SAT research

- By being theory-specific and restricting their language to certain classes of formulas (such as, typically but not exclusively, quantifier-free formulas), these specialized methods can be implemented in solvers that are more efficient in practice than general-purpose theorem provers.
- An SMT instance is a formula in first-order logic, where some function and predicate symbols have additional interpretations, and SMT is the problem of determining whether such a formula is satisfiable.
- SMT - Wikipedia
- SMTLIB- the Satisfiability Module Theories library
- Z3- Satisfiability Modulo Theories (SMT) solver by Microsoft

- FOL- Wikipedia
- Predicate calculus, at the Encyclopedia of Mathematics
- Tree Proof Generator (Semantic Tableaux) for propositional or predicate logic, with documentation

- SWISH - SWI-Prolog, with notebooks
- SWISH - SWI-Prolog for the Semantic Web, e.g. handling triples
- Learn Prolog Now , Blackburn, Bos and Striegnitz 2001

- Knowledge Interchange Format - Wikipedia
- Is a computer language designed to enable systems to share and re-use information from knowledge-based systems.
- Similar to frame languages such as KL-One and LOOM but unlike such language its primary role is not intended as a framework for the expression or use of knowledge but rather for the interchange of knowledge between systems. Has a declarative semantics.Knowledge can be described as objects, functions, relations, and rules.
- It is a formal language, i.e., it can express arbitrary statements in
**first order logic**and can support reasoners that can prove the consistency of a set of KIF statements. - KIF also supports non-monotonic reasoning.
- Although the original KIF group intended to submit to a formal standards body, that did not occur. A later version called Common Logic has since been developed for submission to ISO and has been approved and published.
- A variant called SUO-KIF is the language in which the Suggested Upper Merged Ontology SUMO) is written.

- Audun Josan - probabilistic, beliefs-based

- Stanford - Deontic Logic - addressing what is (im)permissible, obligatory, etc

- GOLD parser eg for BNF

- Graph (discrete mathematics) - Wikipedia
- Graph incidence matrix - one column per edge matrix, the sum of each column is equal to 2 because each edge has a vertex connected to each end.
- Graph adjacency matrix - a square matrix whose elements indicate whether pairs of vertices are adjacent or not in the graph.
- Graph operations - Wikipedia
- Graph rewriting/transformation - Wikipedia
- Permutation graph - Wikipedia
- Graph coloring - Wikipedia
- Graph matching - Wikipedia
- is the problem of finding a similarity between graphs
- In computer vision and pattern recognition it is commonly assumed that the comparison is between the data graph and the model graph
- The case of exact graph matching is known as the graph isomorphism problem
- The problem of exact matching of a graph to a part of another graph is called subgraph isomorphism problem
- Graph isomorphism - exact graph matching - Wikipedia
- Graph isomorphism problem - Wikipedia
- is the computational problem of determining whether two finite graphs are isomorphic
- the problem is not known to be solvable in polynomial time nor to be NP-complete, and therefore may be in the computational complexity class NP-intermediate
- useful in ZK-crypto
- A 'matching' or 'independent edge set' (somewhat confusing terminology) - Wikipedia
- A 'matching' is a set of edges without common vertices. In other words, a subset of the edges is a matching if each vertex appears in at most one edge of that matching.
- Graph vertex cover problem - Wikipedia
- Information System on Graph Classes and their Inclusions - Java
- Graph database - Wikipedia

- Cryptolecture 2006 Ryan Williams - Carnegie Mellon University

- Computational Group Theory - GAP language
- www.combinatorics.org
- www.openscience.org - includes math
- MathFAQ
- UK Turnbull - School for Math and Computational Science - MacTutor - History of Mathematics Archive

- NIST DADS -
*Dictionary of Algorithms and Data Structures*- includes definitions such as NP etc, as well as algorithms and datastructures - NIST GAMS -
*Guide to available mathematical software - including problem taxonomy*

- regex - a regular expression is a sequence of characters that define a search pattern
- A regex processor translates a regular expression into an internal representation which can be executed and matched against a string representing the text being searched in.
- Each character in a regular expression is either a
**metacharacter**or a**regular**character that has a literal meaning. For example, in the regex*a.*, a is a literal character which matches just 'a', while '.' is a metacharacter that matches every character except a newline. - Basics:
- a matches letter 'a'
- [a-z] matches all lower case letters from 'a' to 'z'
- '.' is a metacharacter that matches every character except a newline
- a vertical bar separates alternatives ('or'), e.g. gr(a|e)y
- Quantifiers: a quantifier after a token (such as a character) or group specifies how often that a preceding element is allowed to occur
- ? indicates zero or one occurrences of the preceding element. For example, colou?r matches both "color" and "colour".
- * indicates zero or more occurrences of the preceding element. For example, ab*c matches "ac", "abc", "abbc", "abbbc", and so on.
- + indicates one or more occurrences of the preceding element. For example, ab+c matches "abc", "abbc", "abbbc", and so on, but not "ac"
- {n} means the preceding item is matched exactly n times.
- Anchors:
- ^The matches any string that starts with The
- end$ matches a string that ends with end
- ^The end$ exact string match (starts and ends with The end)
- roar matches any string that has the text roar in it
- Character classes:
- \d matches a single character that is a digit
- \w matches a word character (alphanumeric character plus underscore)
- \s matches a whitespace character (includes tabs and line breaks)
- \d, \w and \s also present their negations with \D, \W and \S respectively, for example, \D will perform the inverse match with respect to that obtained with \d, so \D matches a single non-digit character
- . matches any character as a wildcard, for example, a.b matches any string that contains an "a", then any other character and then a "b", a.*b matches any string that contains an "a" and a "b" at some later point.
- Escaping: in order to be taken literally, you must escape the characters ^.[$()|*+?{\with a backslash \ as they have special meaning, e.g. \$\d matches a string that has a $ before one digit
- Non-printables: you can match also non-printable characters like tabs \t, new-lines \n, carriage returns \r
- Using \1 to keep part of the pattern: "[a-z][a-z]" will match any two lower case letters.
If you wanted to search for lines that had two adjoining identical letters, this pattern wouldn't help.
You need to remember what you found, and see if the same pattern occurred again.
- To mark part of a pattern using "\(" and "\)",
- To recall the remembered pattern use "\" followed by a single digit. Therefore, to search for two identical letters, use "\([a-z]\)\1". You can have 9 different remembered patterns.

- Standards: the IEEE POSIX standard has 3 sets of compliance: BRE (Basic Regular Expressions), ERE (Extended Regular Expressions), and SRE (Simple Regular Expressions) - deprecated
- Regex can be used e.g. in grep or sed, such as
*'sed 's/regexp/replacement/g' inputFileName > outputFileName'* - In sed the s stands for substitute, while the g stands for global, which means that all matching occurrences in the line would be replaced.
- The replacement can be literal text or a format string containing the characters & for "entire match" or the special escape sequences \1 through \9 for the nth saved sub-expression
- Regex editor e.g. any https corresponds to /[https\:\/\/]/

- sed - gnu.org page
- sed - wikipedia - basic examples
- Usage: sed SCRIPT INPUTFILE...
- Usage for substitution:
*sed 's/regexp/replacement/g' inputFileName > outputFileName*where - s represents the substitute command
- g represents the global flag, i.e. replace all occurances found, not only the first one (as by default)
- ...

- Wolfram's MATHworld - Eric Weisstein's World of Mathematics
- Wolfram's Mathematica
- Wolfram's search engine/solver - Wolfram Alpha
- MathWorks - MATLAB -
- NL - The MathWorks - MATLAB & Toolboxes such as:
- Statistic
- Curve Fitting
- Optimization
- Symbolic Math
- Image Processing
- Signal Processing
- Neural Network
- Filter Design

- imaginary.org- education and open source

- Glossary of Mathematical Mistakes -
*one of the funny sides of math* - XKCD - Randall Munroe