<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Math | Nikola Veselinov</title><link>https://nikolaveselinov.com/categories/math/</link><atom:link href="https://nikolaveselinov.com/categories/math/index.xml" rel="self" type="application/rss+xml"/><description>Math</description><generator>Hugo Blox Builder (https://hugoblox.com)</generator><language>en-us</language><lastBuildDate>Tue, 18 Aug 2026 00:00:00 +0000</lastBuildDate><image><url>https://nikolaveselinov.com/media/icon_hu13191489671647382980.png</url><title>Math</title><link>https://nikolaveselinov.com/categories/math/</link></image><item><title>On Problem 5 of IZhO 2015</title><link>https://nikolaveselinov.com/post/izho-2015-p5/</link><pubDate>Tue, 18 Aug 2026 00:00:00 +0000</pubDate><guid>https://nikolaveselinov.com/post/izho-2015-p5/</guid><description>&lt;div class="problem">
&lt;strong>
Problem (IZhO 2015, P5).
&lt;/strong>
Let $A_n$ be the set of partitions of the sequence $1,2,\ldots,n$ into several subsequences such that every two neighbouring terms of each subsequence have different parity, and $B_n$ the set of partitions of the sequence $1,2,\ldots,n$ into several subsequences such that all the terms of each subsequence have the same parity (for example, the partition ${(1,4,5,8),(2,3),(6,9),(7)}$ is an element of $A_9$, and the partition ${(1,3,5),(2,4),(6)}$ is an element of $B_6$).
Prove that for every positive integer $n$ the sets $A_n$ and $B_{n+1}$ contain the same number of elements.
&lt;/div>
&lt;p>It might just be me, but the statement seems unnecessarily complicated. On a somewhat funnier note, the notation in the first example looks a little like a set of cycles in the ninth alternating group.&lt;/p>
&lt;p>Anyhow, I encourage you to try solving the problem on your own before reading further. The form of the statement points to bijections, and combinatorial bijections are known to be quite varied.&lt;/p>
&lt;p>We now give an alternative solution, which incorporates different ideas from the official solution (which I also recommend you &lt;a href="https://izho.kz/wp-content/uploads/2018/01/2day_eng_sol.pdf?utm_source=chatgpt.com" target="_blank" rel="noopener">read&lt;/a>).&lt;/p>
&lt;div class="solution">
&lt;details class="solution-toggle">
&lt;summary>
&lt;em>Solution.&lt;/em>
&lt;/summary>
&lt;div class="solution-body">
&lt;p>Since we are asked to prove that two sets have the same number of elements, naturally we shall construct a bijection.&lt;/p>
&lt;p>The first useful observation is to think of a partition in $A_n$ as consisting of integers ordered from left to right. We write the entries in every subsequence in increasing order.&lt;/p>
&lt;p>Suppose that $1,2,\ldots,k-1$ have already been placed. When we come to $k$, there are only two possibilities:&lt;/p>
&lt;div class="enumerate enumerate--alpha">
&lt;ol>
&lt;li>
&lt;p>$k$ begins a new subsequence;&lt;/p>
&lt;/li>
&lt;li>
&lt;p>$k$ is placed after the last element of an existing subsequence.&lt;/p>
&lt;/li>
&lt;/ol>
&lt;/div>
&lt;style>
.enumerate ol {
list-style: none !important;
padding-left: 2.25em;
}
.enumerate ol > li {
position: relative;
padding-left: 0;
}
.enumerate ol > li::marker {
content: "" !important;
}
.enumerate--numeric ol {
counter-reset: enumerate-numeric;
}
.enumerate--numeric ol > li {
counter-increment: enumerate-numeric;
}
.enumerate--numeric ol > li::before {
content: "(" counter(enumerate-numeric) ")" !important;
position: absolute;
right: calc(100% + 0.6em);
color: var(--tw-prose-counters, currentColor);
font-variant-numeric: tabular-nums;
}
.enumerate--alpha ol {
counter-reset: enumerate-alpha;
}
.enumerate--alpha ol > li {
counter-increment: enumerate-alpha;
}
.enumerate--alpha ol > li::before {
content: "(" counter(enumerate-alpha, lower-alpha) ")" !important;
position: absolute;
right: calc(100% + 0.6em);
color: var(--tw-prose-counters, currentColor);
font-variant-numeric: tabular-nums;
}
&lt;/style>
&lt;p>In the second case, the last element of that subsequence necessarily has parity opposite to that of $k$.&lt;/p>
&lt;p>We shall build the corresponding partition in $B_{n+1}$ simultaneously through the construction of a &lt;em>tableau&lt;/em>.&lt;/p>
&lt;p>At the moment just before $k$ is inserted, arrange the blocks we have already constructed in a two-row tableau of the form
&lt;/p>
$$
\begin{array}{c|c|c|c||c}
C_1&amp;C_2&amp;\cdots&amp;C_r&amp;\ast\\
D_1&amp;D_2&amp;\cdots&amp;D_r&amp;G
\end{array}.
$$&lt;p>The top row consists of the current subsequences in $A_{k-1}$.&lt;/p>
&lt;p>The bottom row consists of the blocks of a partition in $B_k$. Every $C_i$ is paired with the block $D_i$ directly below it, while one block $G$, which we will call &lt;em>distinguished&lt;/em>, is left unpaired and placed under the symbol $\ast$.&lt;/p>
&lt;p>We maintain the following two rules:&lt;/p>
&lt;div class="enumerate enumerate--numeric">
&lt;ol>
&lt;li>
&lt;p>all the elements of $D_i$ have the same parity as the last element of $C_i$;&lt;/p>
&lt;/li>
&lt;li>
&lt;p>the distinguished block $G$ contains $k$.&lt;/p>
&lt;/li>
&lt;/ol>
&lt;/div>
&lt;style>
.enumerate ol {
list-style: none !important;
padding-left: 2.25em;
}
.enumerate ol > li {
position: relative;
padding-left: 0;
}
.enumerate ol > li::marker {
content: "" !important;
}
.enumerate--numeric ol {
counter-reset: enumerate-numeric;
}
.enumerate--numeric ol > li {
counter-increment: enumerate-numeric;
}
.enumerate--numeric ol > li::before {
content: "(" counter(enumerate-numeric) ")" !important;
position: absolute;
right: calc(100% + 0.6em);
color: var(--tw-prose-counters, currentColor);
font-variant-numeric: tabular-nums;
}
.enumerate--alpha ol {
counter-reset: enumerate-alpha;
}
.enumerate--alpha ol > li {
counter-increment: enumerate-alpha;
}
.enumerate--alpha ol > li::before {
content: "(" counter(enumerate-alpha, lower-alpha) ")" !important;
position: absolute;
right: calc(100% + 0.6em);
color: var(--tw-prose-counters, currentColor);
font-variant-numeric: tabular-nums;
}
&lt;/style>
&lt;p>Since $G$ belongs to $B_k$, all its elements consequently have the same parity as $k$.&lt;/p>
&lt;p>We begin, before inserting $1$, with
&lt;/p>
$$
\begin{array}{c}
\ast\\
{1}
\end{array}.
$$&lt;p>There are no blocks in the top row, and ${1}$ is the distinguished block.&lt;/p>
&lt;p>We now insert $k$.&lt;/p>
&lt;h4 id="case-a-k-begins-a-new-subsequence">Case (a): $k$ begins a new subsequence&lt;/h4>
&lt;p>Suppose that $k$ starts a new block ${k}$ in the upper row.&lt;/p>
&lt;p>We place this new block above the old distinguished block $G$, and introduce the new singleton ${k+1}$ as the distinguished block:
&lt;/p>
$$
\begin{array}{c||c}
&amp;\ast\\
&amp;G
\end{array}
\quad\longmapsto\quad
\begin{array}{c||c}
{k}&amp;\ast\\
G&amp;{k+1}
\end{array}.
$$&lt;p>The first rule is preserved, since every element of $G$ has the same parity as $k$. The new distinguished block ${k+1}$ clearly contains $k+1$, so the second rule is preserved as well.&lt;/p>
&lt;h4 id="case-b-k-is-appended-to-an-existing-subsequence">Case (b): $k$ is appended to an existing subsequence&lt;/h4>
&lt;p>Suppose instead that $k$ is appended to some block $C$.&lt;/p>
&lt;p>Let $D$ be the block immediately below $C$ in our tableau. Thus the elements of $D$ have the same parity as the last element of $C$.&lt;/p>
&lt;p>Since $k$ may be appended to $C$, the last element of $C$ has parity opposite to that of $k$. But $k+1$ also has parity opposite to that of $k$. Hence
&lt;/p>
$$
D\cup{k+1}
$$&lt;p>
is still monochromatic.&lt;/p>
&lt;p>We now perform the following switch:
&lt;/p>
$$
\begin{array}{c||c}
C&amp;\ast\\
D&amp;G
\end{array}
\quad\longmapsto\quad
\begin{array}{c||c}
C\cup{k}&amp;\ast\\
G&amp;D\cup{k+1}
\end{array}.
$$&lt;p>In other words, we append $k$ to $C$, move the old distinguished block $G$ underneath it, and move $D$ into the distinguished position after adjoining $k+1$ to it.&lt;/p>
&lt;p>The new last element of $C\cup{k}$ is $k$, and $G$ has the same parity as $k$. On the other hand, $D$ has parity opposite to $k$, which is precisely the parity of $k+1$, so $D\cup{k+1}$ is again a valid block of $B_{k+1}$.&lt;/p>
&lt;p>All other columns of the tableau are left unchanged.&lt;/p>
&lt;p>After inserting $1,2,\ldots,n$, the bottom row is a partition of
&lt;/p>
$$
{1,2,\ldots,n+1}
$$&lt;p>
into monochromatic blocks. In other words, it is an element of $B_{n+1}$.&lt;/p>
&lt;p>Thus the procedure defines a map
&lt;/p>
$$
\Phi:A_n\longrightarrow B_{n+1}.
$$&lt;p>As an example, let us apply the construction to
&lt;/p>
$$
\pi={(1,4,5,8),(2,3),(6,9),(7)}\in A_9.
$$&lt;p>After inserting $1,2,3,4$, the tableau is
&lt;/p>
$$
\begin{array}{c|c||c}
(1,4)&amp;(2,3)&amp;\ast\\
(2,4)&amp;(3)&amp;(1,5)
\end{array}.
$$&lt;p>Now $5$ is appended to the first upper block. The block below it is $(2,4)$, while the distinguished block is $(1,5)$. We therefore switch them and append $6$ to the former:
&lt;/p>
$$
\begin{array}{c||c}
(1,4)&amp;\ast\\
(2,4)&amp;(1,5)
\end{array}
\quad\longmapsto\quad
\begin{array}{c||c}
(1,4,5)&amp;\ast\\
(1,5)&amp;(2,4,6)
\end{array}.
$$&lt;p>Continuing in the same way eventually gives
&lt;/p>
$$
\Phi(\pi)={(1,5,9),(2,4,6,10),(3),(7),(8)},
$$&lt;p>
which is indeed an element of $B_{10}$.&lt;/p>
&lt;p>It remains to check that the map is a bijection.&lt;/p>
&lt;p>Take an arbitrary partition
&lt;/p>
$$
\sigma\in B_{n+1}.
$$&lt;p>For $1\leq k\leq n+1$, let $\sigma_k$ denote the partition of ${1,\ldots,k}$ obtained by intersecting every block of $\sigma$ with ${1,\ldots,k}$ and deleting the empty intersections.&lt;/p>
&lt;p>We reconstruct the upper row successively. Just before reconstructing the insertion of $k$, the bottom row is $\sigma_k$, and its distinguished block is forced: it is the block containing $k$.&lt;/p>
&lt;p>Now consider what happens to $k+1$ when we pass from $\sigma_k$ to $\sigma_{k+1}$.&lt;/p>
&lt;p>There are again two possibilities.&lt;/p>
&lt;div class="enumerate enumerate--numeric">
&lt;ol>
&lt;li>
&lt;p>If $k+1$ is the smallest element of its block in $\sigma$, then it appears in $\sigma_{k+1}$ as a new singleton block ${k+1}$. This can only have arisen from Case (a) above. Hence $k$ begins a new upper block, and the block of $\sigma_k$ containing $k$ is placed underneath it.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Otherwise, $k+1$ joins a block $D$ already present in $\sigma_k$. Since $D$ has the parity of $k+1$, while the distinguished block containing $k$ has the parity of $k$, these are different blocks. By induction, $D$ lies underneath a unique upper block $C$. We therefore append $k$ to $C$ and reverse the switch from Case (b).&lt;/p>
&lt;/li>
&lt;/ol>
&lt;/div>
&lt;style>
.enumerate ol {
list-style: none !important;
padding-left: 2.25em;
}
.enumerate ol > li {
position: relative;
padding-left: 0;
}
.enumerate ol > li::marker {
content: "" !important;
}
.enumerate--numeric ol {
counter-reset: enumerate-numeric;
}
.enumerate--numeric ol > li {
counter-increment: enumerate-numeric;
}
.enumerate--numeric ol > li::before {
content: "(" counter(enumerate-numeric) ")" !important;
position: absolute;
right: calc(100% + 0.6em);
color: var(--tw-prose-counters, currentColor);
font-variant-numeric: tabular-nums;
}
.enumerate--alpha ol {
counter-reset: enumerate-alpha;
}
.enumerate--alpha ol > li {
counter-increment: enumerate-alpha;
}
.enumerate--alpha ol > li::before {
content: "(" counter(enumerate-alpha, lower-alpha) ")" !important;
position: absolute;
right: calc(100% + 0.6em);
color: var(--tw-prose-counters, currentColor);
font-variant-numeric: tabular-nums;
}
&lt;/style>
&lt;p>Thus at every stage there is exactly one possible inverse operation. Beginning with
&lt;/p>
$$
\begin{array}{c}
\ast\\
{1}
\end{array}
$$&lt;p>
and proceeding through $k=1,2,\ldots,n$, we recover a unique element of $A_n$.&lt;/p>
&lt;p>Hence the construction is invertible, so $\Phi$ is a bijection. Therefore
&lt;/p>
$$
\boxed{|A_n|=|B_{n+1}|}.
$$
&lt;/div>
&lt;/details>
&lt;/div></description></item><item><title>On the current state of the Union-closed sets conjecture</title><link>https://nikolaveselinov.com/post/union-closed-conjecture-note/</link><pubDate>Wed, 13 Aug 2025 00:00:00 +0000</pubDate><guid>https://nikolaveselinov.com/post/union-closed-conjecture-note/</guid><description>&lt;h2 id="introduction">Introduction&lt;/h2>
&lt;p>The union-closed sets conjecture is a famous open problem in set theory.&lt;/p>
&lt;p>A family of sets is said to be &lt;em>union-closed&lt;/em> if the union of any two sets from the family also belongs to it.&lt;/p>
&lt;div class="conjecture">
&lt;strong>
Conjecture (Frankl, 1979).
&lt;/strong>
For every union-closed family containing a non-empty set there exists an element that belongs to at least half of the sets in the family.
&lt;/div>
&lt;p>Let&amp;rsquo;s switch to formal notation. Let $\mathcal{F}\subseteq\mathscr{P}(n)$ be a family of subsets of $[n]=\{1,2,\ldots,n\}$ and denote $m=|\mathcal{F}|$. For each $x\in[n]$ define the &lt;em>degree&lt;/em> of $x$ in $\mathcal{F}$ as the number of sets containing $x$:
&lt;/p>
$$
d_x:=|\{i\in[m]:x\in F_i\}|
$$&lt;p>
and the &lt;em>normalized degree&lt;/em> (i.e., the fraction of sets the element belongs to) as $\tilde d_x=\frac{d_x}{m}$.&lt;/p>
&lt;p>We can now reformulate the union-closed sets conjecture and state it using the introduced terminology.&lt;/p>
&lt;div class="conjecture">
&lt;strong>
Conjecture.
&lt;/strong>
Let $\mathcal{F}\subseteq\mathscr{P}(n)$ be a family of sets such that for any $A,B\in\mathcal{F}$ we have $A\cup B\in\mathcal{F}$. Then
$$
\max_{i\in[n]}\tilde d_i\geq\frac{1}{2}\text{.}
$$
&lt;/div>
&lt;h2 id="results-so-far">Results so far&lt;/h2>
&lt;p>A breakthrough has been the proof of $\max_{i\in[n]}\tilde d_i\geq c$ for the constant $c=0.01$ by Justin Gilmer in 2022 &lt;a href="https://arxiv.org/abs/2211.09055v2" target="_blank" rel="noopener">arXiv:2211.09055v2&lt;/a> through an entropy-based approach. See the video below for a lecture by him outlining the discovery.&lt;/p>
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="allowfullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/veMx-r1iQpY?autoplay=0&amp;controls=1&amp;end=0&amp;loop=0&amp;mute=0&amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"
>&lt;/iframe>
&lt;/div>
&lt;p>Since he uses entropy, he formulates the conjecture probabilistically:&lt;/p>
&lt;div class="conjecture">
&lt;strong>
Conjecture.
&lt;/strong>
Let $\mathcal{F}\subseteq\mathscr{P}(n)$ be a family of sets such that for any $A,B\in\mathcal{F}$ we have $A\cup B\in\mathcal{F}$. Then
$$
\max_{i\in[n]}\tilde d_i\geq\frac{1}{2}\text{.}
$$
&lt;/div>
&lt;p>Through subsequent papers, the constant has been improved to $c\approx0.3823455$ (&lt;a href="https://arxiv.org/abs/2212.12500v2" target="_blank" rel="noopener">arXiv:2212.12500v2&lt;/a>). Evidence suggests it could be improved further, see the &lt;a href="https://arxiv.org/abs/2306.08824" target="_blank" rel="noopener">work&lt;/a> of Liu from 2023.&lt;/p>
&lt;h2 id="conclusion">Conclusion&lt;/h2>
&lt;p>I feel confident that progress will be made in the years to follow. It would be of great interest to see if a constant (or, in the best case, the complete) lower bound can be derived using some other approach, maybe even a purely combinatorial one.&lt;/p></description></item></channel></rss>