基元与 plus:TreeHeap 有序性的来源

这篇先不跑实验。

它先把一个更底层的想法固定下来:

TreeHeap 的卷积问题,
可能不是先找 kernel,
而是先找语义空间里的基元和 plus。

这个想法来自整数系统。

整数的有序性不是随便排出来的。

它有一个非常小的核心:

基元:0 或 1
算子:plus / successor
顺序:n -> n + 1
闭包:n + 1 仍然是整数
取模:n + base 折回 n

如果 TreeHeap 也想形成自然的有序地址空间,那么我们也要问:

语义空间里的 1 是什么?
语义空间里的 plus 是什么?
TreeHeap 的 n+1 是怎么生成的?

为什么这比卷积更底层

上一篇文章说,卷积可以理解成:

线性秩序
+ 局部窗口
+ 取模位移
+ 同一个 kernel 的重复作用

但这里还有一个没回答的问题:

线性秩序从哪里来?

如果我们只是人为给节点编号:

node_0, node_1, node_2, ...

那这个顺序可能只是外部编号。

它不一定是 TreeHeap 自己的结构。

更自然的做法是:

node_{n+1} = plus(node_n, primitive)

也就是说:

有序性由 plus 生成。

这就像整数:

1 = 0 + 1
2 = 1 + 1
3 = 2 + 1

而不是先把整数排好,再事后说它有顺序。

对应关系

可以先做一个对照表:

整数系统 TreeHeap / 语义空间
0 origin / root primitive
1 最小语义基元
n + 1 next semantic state / next node
plus(a, b) 语义组合或结构推进算子
< repeated plus 生成的顺序
mod base 有限 TreeHeap 地址环
convolution 在这个地址环上滑动 kernel

所以真正要找的是:

primitive
plus
ordered orbit

其中 orbit 是:

x0
x1 = plus(x0, p)
x2 = plus(x1, p)
...
x_base ~= x0

如果这个成立,TreeHeap 就不仅是有编号。

它有了一个内部生成的顺序。

什么是基元

基元不是人工语法标签。

它不是:

SUBJECT
OBJECT
VERB

至少在 M0/M1 阶段不能这样定义。

基元应该先被看成:

能让状态发生最小可重复变化的元素。

在整数里,这个元素是:

1

在 TreeHeap 里,它可能是:

一个最小路径步长
一个最小 slot shift
一个最小语义方向
一个局部结构生成元
一个 learned primitive basis

我们不应该一开始就假设它是什么。

应该设计实验去找:

哪个 p 可以让 plus(x, p) 稳定地产生 next?

plus 可能是什么

候选 plus 可以有很多种:

plus(v, p) = v + p
plus(v, p) = normalize(v + p)
plus(v, p) = CMul(v, p)
plus(H, p) = compose(H, p)
plus(path, step) = path_shift(path, step)
plus(H, p) = learned_operator(H, p)

这些都只是候选。

不能先说哪一个一定对。

ARA 里应该把它们当作实验变量。

真正的判断标准是:

它能不能生成稳定有序轨道?

有序轨道

如果找到了一个 primitive p 和一个 plus,那么就可以生成:

x0 = origin
x1 = plus(x0, p)
x2 = plus(x1, p)
x3 = plus(x2, p)

这是一条轨道。

我们希望它满足:

相邻可预测
远邻可区分
重复作用不发散
到达 base 后可以回环

也就是:

nearest(plus(x_n, p)) = x_{n+1}
distance(x_n, x_{n+1}) < distance(x_n, x_{n+3})
distance(x_base, x_0) small

这才是 TreeHeap 的有序性。

不是外部排出来的。

而是由内部算子生成的。

取模怎么出现

如果轨道长度是 base

x0, x1, x2, ..., x_{base-1}

那么取模就是:

x_{n + base} ~= x_n

也就是:

idx(x) in Z_base

这时 TreeHeap 地址空间变成:

Z / base Z

也就是一个有限循环地址环。

卷积 kernel 才能滑动:

window(i) = [
  x_{i-1 mod base},
  x_i,
  x_{i+1 mod base}
]

这就是:

基元 + plus
生成 order
order + mod
生成 cyclic address
cyclic address + kernel
生成卷积

这对 TreeHeap 很重要

之前我们说:

TreeHeap 是有序树。

但这句话还不够。

还要追问:

这个有序性是外部编号给的,
还是 TreeHeap 自己生成的?

如果只是外部编号,那它只是工程索引。

如果有:

x_{n+1} = plus(x_n, p)

那它就是结构规律。

这两者差别很大。

前者只能帮我们扫描。

后者可能帮我们推理。

新 predict:P-MATH02

可以把下一步写成:

P-MATH02: Semantic primitive and plus operator

预判:

如果 TreeHeap 空间存在可用于结构生成的有序性,
那么应该存在某种 primitive p 和 plus 算子,
使 repeated plus 生成稳定、有序、可取模的语义轨道。

形式:

x_0 = origin
x_{n+1} = plus(x_n, p)
x_{n+base} ~= x_n

toy 实验应该怎么做

先不要碰语言。

还是 M0 纯数学 toy。

设:

base = 8
origin = x0
primitive = p

生成:

x1 = plus(x0, p)
x2 = plus(x1, p)
...
x8 ~= x0

测这些指标:

successor_accuracy:
  nearest(plus(x_n, p)) == x_{n+1}

cycle_error:
  distance(x_base, x_0)

order_margin:
  distance(x_n, x_{n+1}) < distance(x_n, x_{n+3})

closure:
  plus(x_n, p) still in TreeHeap space

kernel:
  [x_{i-1}, x_i, x_{i+1}] mod base can be matched

如果这些都不成立,就不要急着讨论语言。

因为连:

1, 2, 3, 4

这样的内部顺序都还没长出来。

语言里的直觉

等数学 toy 成立以后,语言才进来。

那时候可以问:

球 + 脚 -> 足球
球 + 手 -> 篮球
动作 + 施事 -> 事件
事件 + 时间 -> 时态
事件 + 地点 -> 场景

但这些不能一开始就当作人工标签。

更好的路径是:

先无监督找 primitive basis
再看这些 basis 是否对应可解释概念

也就是说:

先找数学上的 1。
再看这个 1 在语言里像不像“脚”“手”“时间”“地点”。

对当前路线的影响

这会把路线再往前插一层:

M0: TreeHeap object algebra
M0-P2: primitive + plus + ordered orbit
M1: approximate inverse / learned plus
M2: TreeHeap-object echo
M3: structure invariant
S2: translation

也就是说,SubHeap Kernel Search 之前,还要先问:

kernel 在哪个有序空间里移动?
这个有序空间是不是由 plus 生成?

如果不是,它可能只是工程扫描。

如果是,它才更像 TreeHeap 自己的代数。

当前状态

这篇是理论整理。

还没有实验 claim。

已经可以进入 ARA:

ara/m0-treeheap-math/logic/predicts.md

下一步实验文件可以叫:

ara/m0-treeheap-math/src/primitive_plus_probe.py
ara/m0-treeheap-math/evidence/primitive_plus_probe/

先用合成 toy 找:

primitive
plus
ordered orbit
mod base
cyclic kernel

等这个成立,再往 Echo 和 S2 推。

License: GPLv3