# mathlib3documentation

combinatorics.partition

# Partitions #

THIS FILE IS SYNCHRONIZED WITH MATHLIB4. Any changes to this file require a corresponding PR to mathlib4.

A partition of a natural number n is a way of writing n as a sum of positive integers, where the order does not matter: two sums that differ only in the order of their summands are considered the same partition. This notion is closely related to that of a composition of n, but in a composition of n the order does matter. A summand of the partition is called a part.

## Main functions #

• p : partition n is a structure, made of a multiset of integers which are all positive and add up to n.

## Implementation details #

The main motivation for this structure and its API is to show Euler's partition theorem, and related results.

The representation of a partition as a multiset is very handy as multisets are very flexible and already have a well-developed API.

Partition

## References #

https://en.wikipedia.org/wiki/Partition_(number_theory)

@[protected, instance]
theorem nat.partition.ext_iff {n : } (x y : n.partition) :
x = y x.parts = y.parts
theorem nat.partition.ext {n : } (x y : n.partition) (h : x.parts = y.parts) :
x = y
@[ext]
structure nat.partition (n : ) :

A partition of n is a multiset of positive integers summing to n.

Instances for nat.partition

A composition induces a partition (just convert the list to a multiset).

Equations
def nat.partition.of_sums (n : ) (l : multiset ) (hl : l.sum = n) :

Given a multiset which sums to n, construct a partition of n with the same multiset, but without the zeros.

Equations

A multiset ℕ induces a partition on its sum.

Equations

The partition of exactly one part.

Equations
@[protected, instance]
Equations
theorem nat.partition.count_of_sums_of_ne_zero {n : } {l : multiset } (hl : l.sum = n) {i : } (hi : i 0) :
hl).parts =

The number of times a positive integer i appears in the partition of_sums n l hl is the same as the number of times it appears in the multiset l. (For i = 0, partition.non_zero combined with multiset.count_eq_zero_of_not_mem gives that this is 0 instead.)

theorem nat.partition.count_of_sums_zero {n : } {l : multiset } (hl : l.sum = n) :
hl).parts = 0
@[protected, instance]
def nat.partition.fintype (n : ) :

Show there are finitely many partitions by considering the surjection from compositions to partitions.

Equations
def nat.partition.odds (n : ) :

The finset of those partitions in which every part is odd.

Equations

The finset of those partitions in which each part is used at most once.

Equations

The finset of those partitions in which every part is odd and used at most once.

Equations