记 为非负整数集合,并固定正整数 。长度为 的 index set 是 的一个 元子集;全体这样的集合记为 。
每个 都可以唯一地按严格递减的顺序写成
反过来,每个满足上述条件的序列也唯一确定一个 index set
因此, 与所有长度为 的严格递减非负整数序列之间存在一个自然的双射。下文将通过这个双射把二者视为同一个对象:讨论集合运算时使用集合的观点,书写编码时则使用递减序列的观点。
两个集合 的对称差 ,是所有只属于其中一个集合的元素组成的集合。对于两个不同的 index set,定义
也就是说,从最大的整数向下检查两个集合,第一个只属于其中一个集合的整数在哪个集合中,哪个集合就在 colex 序中靠后。这等价于从最大下标开始,按字典序比较两个集合的 0–1 特征序列,因此给出了一个全序。
定义 colex 编码
这个公式最直接的解释是: 恰好等于 在 colex 序中的前驱数量。
记 为 的前驱集合。按照对称差最大元素的不同,将它划分为
这个分组条件可以画成下面的形式:
图中,浅绿色表示与 一致的固定前缀,浅蓝色表示可变部分。若 ,那么 在所有大于 的整数上都与 一致,并且不包含 。因此,它具有唯一的递减表示
反过来,根据开头建立的双射,每个满足上述条件的递减序列都唯一确定一个 index set ;它与 在 以上完全一致,却不包含 ,所以
并且 。因此, 与从
中选取 个元素的方法一一对应,于是
这些集合彼此不交,并且恰好覆盖 。由加法原理,
因此,colex 编码并不是一个偶然的组合数公式:它就是 index set 在 colex 序中的秩。
对于固定的 ,每个 index set 都只有有限多个前驱:若 ,则 不可能含有大于 的元素。另一方面,固定其余各项并让 增大, 中的
趋于无穷,所以前驱数量没有上界。
现在任取 ,选一个至少有 个前驱的 。有限初始区间
中的第 个元素恰好有 个前驱,因而编码为 。这说明 不会跳过任何非负整数。
此外,若 ,那么 的所有前驱以及 本身都是 的前驱,所以
因此编码保持 colex 序,并且不会重复。
换言之,
是一个序同构。这个结论同时表达了 colex 编码的全部关键性质:编码从 开始、没有空缺、没有重复、没有上界,并且编码的数值顺序与 colex 序完全一致。