# Algebraic Operations

There are two algebraic types that can be added or multiplied with each other: AlgebraOfGraphics.Layer and AlgebraOfGraphics.Layers.

## Multiplication on individual layers

Each layer is composed of data, mappings, and transformations. Datasets can be replaced, mappings can be merged, and transformations can be concatenated. These operations, taken together, define an associative operation on layers, which we call multiplication *.

Multiplication is primarily useful to combine partially defined layers.

The operation + is used to superimpose separate layers. a + b has as many layers as la + lb, where la and lb are the number of layers in a and b respectively.
Multiplication naturally extends to lists of layers. Given two Layers objects a and b, containing la and lb layers respectively, the product a * b contains la * lb layers—all possible pair-wise products.