19元序量纲系统形式化
元序 WorldScript 量纲系统形式化
完整定义元序的量纲系统:量纲代数、跨量纲运算规则、量纲融合语义、量纲偏差的形式化。
本文档将《04元序规则》v1.1 中引入的「带量纲的连续量」从语法描述推进为完整的形式化理论。
前置阅读:《04元序规则》3.4.1 节、《14形式化语义》第二章。
一、为什么需要量纲系统
1.1 问题:无类型的代价
元序 v1.0 宣称「无类型,全域只有连续状态场」。但这导致一个问题:
When 环境.温度 + 用户.满意度 > 0.8: // 温度加满意度,物理上无意义
涌现 异常
温度和满意度都是 [0,1] 的连续值,运算在数学上合法,但在语义上无意义。完全无类型会让这种错误静默通过,系统继续「容错存续」,最终输出不可信的结果。
元宝评审指出:「所谓连续状态场,本质就是 float 归一化到 [0,1],再加一层模糊逻辑。写 温度 + 满意度,有类型的语言会报错,元序会安静地算出一个无意义的数字。」
1.2 方案:带量纲的连续量
元序 v1.1 的方案不是回到 int/float/str 的传统类型系统,而是引入量纲(Dimension)作为轻量级语义标注:
- 运行时值仍然是归一化到 [0,1] 的连续标量
- 每个状态字段携带量纲标注(如
温度:摄氏度、车速:km/h) - 同量纲可自由运算,跨量纲需显式声明融合关系
- 未声明的跨量纲运算产生「量纲偏差」,不崩溃但可观测
这平衡了「状态连续」的哲学和「语义可检查」的工程需求。
二、量纲的数学结构
2.1 量纲的定义
定义 2.1(量纲):量纲是一个语义标签,表示状态维度所度量的物理/社会/抽象量的种类。
Dimension = Identifier
量纲是原子标识符,如 摄氏度、km/h、概率、无量纲、满意度。
定义 2.2(量纲集):元序程序中所有量纲构成有限集:
Δ = {δ₁, δ₂, ..., δₙ}
其中 无量纲 是特殊量纲,表示纯数值(如权重、比例、概率)。
2.2 量纲的偏序关系
定义 2.3(量纲兼容性):定义量纲间的兼容性偏序 ≤_δ:
δ ≤_δ δ(自反性):任何量纲与自身兼容无量纲 ≤_δ δ(通用性):无量纲可与任何量纲运算δ₁ ≤_δ δ₂且δ₂ ≤_δ δ₁当且仅当δ₁ = δ₂(反对称性)
兼容性是偏序而非全序:温度 和 满意度 不可比较,默认不兼容。
定义 2.4(量纲等价):两个量纲等价当且仅当它们在兼容性偏序下相等:
δ₁ ≡ δ₂ ⟺ δ₁ ≤_δ δ₂ 且 δ₂ ≤_δ δ₁
2.3 量纲的代数结构
量纲支持组合运算,形成量纲代数:
定义 2.5(量纲乘法):两个量纲的乘积表示复合量纲:
δ₁ × δ₂ = 复合量纲(δ₁, δ₂)
示例:km × h⁻¹ = km/h,人 × km = 人公里。
定义 2.6(量纲幂):量纲的整数次幂:
δⁿ = δ × δ × ... × δ (n次)
δ⁻ⁿ = 1/δⁿ
定义 2.7(量纲向量):任何量纲可表示为基本量纲的向量:
δ = (e₁, e₂, ..., eₖ) 其中 eᵢ 是基本量纲 i 的指数
基本量纲集由领域定义。物理领域的基本量纲包括长度、时间、质量、温度等;社会领域可能包括人口、货币、信息等。
三、量纲标注的语法与语义
3.1 State 字段的量纲标注
State 环境 [
温度:摄氏度 = 0.3,
目标温度:摄氏度 = 0.7,
湿度:百分比 = 0.6,
权重:无量纲 = 0.5
]
语义:每个字段 字段名:量纲=初值,量纲是该字段的语义标签。
3.2 量纲的推导
量纲可从表达式推导:
| 表达式 | 结果量纲 |
|---|---|
X + Y |
要求 δ(X) ≡ δ(Y),结果量纲 = δ(X) |
X - Y |
要求 δ(X) ≡ δ(Y),结果量纲 = δ(X) |
X × Y |
结果量纲 = δ(X) × δ(Y) |
X / Y |
结果量纲 = δ(X) × δ(Y)⁻¹ |
X × k (k 是无量纲常数) |
结果量纲 = δ(X) |
归一化(X, a, b) |
结果量纲 = 无量纲 |
连续融合(X↑, Y↓) |
结果量纲 = 融合声明中指定的量纲 |
3.3 量纲检查规则
规则 1(同量纲可加减):
δ(X) ≡ δ(Y) ⟹ X ± Y 合法
规则 2(无量纲通用):
δ(X) = 无量纲 或 δ(Y) = 无量纲 ⟹ X ± Y 合法
规则 3(跨量纲需融合声明):
δ(X) ≠ δ(Y) 且 δ(X) ≠ 无量纲 且 δ(Y) ≠ 无量纲
⟹ X ± Y 需要显式融合声明,否则产量纲偏差
规则 4(乘除自由):
X × Y 和 X / Y 始终合法,结果量纲自动推导
乘除不产生量纲偏差,因为复合量纲有明确语义(如 km/h)。
四、跨量纲融合的形式化
4.1 融合声明
跨量纲运算必须通过 连续融合() 显式声明:
State 综合舒适度 = 连续融合(温度↑, 湿度↓) → 舒适度
定义 4.1(融合函数):融合是一个从多个量纲到目标量纲的映射:
fuse: (δ₁, δ₂, ..., δₖ) → δ_target
融合函数携带方向标注(↑ 正向、↓ 反向),表示源量纲对目标量纲的影响方向。
4.2 融合的语义
定义 4.2(连续融合的指称):
⟦连续融合(X₁^{d₁}, X₂^{d₂}, ..., Xₖ^{dₖ}) → Y⟧(σ) =
normalize(Σᵢ wᵢ · dᵢ · σ(Xᵢ))
其中:
dᵢ ∈ {+1, -1}是方向标注(↑=+1, ↓=-1)wᵢ是融合权重(默认平均分配,可 Evolve 调整)normalize将结果归一化到 [0,1]- 结果量纲为
Y的量纲
4.3 融合的量纲安全性
融合声明是跨量纲运算的唯一合法通道。融合函数本身必须声明目标量纲,确保结果有量纲。
示例:
// 合法:温度和湿度融合为舒适度
State 舒适度 = 连续融合(温度↑, 湿度↓) → 舒适度:无量纲
// 非法:未声明融合,直接相加
When 环境.温度 + 环境.湿度 > 0.8: // 量纲偏差
...
4.4 融合的种类
| 融合种类 | 语法 | 语义 |
|---|---|---|
| 加权平均 | 连续融合(X↑, Y↓) |
带方向的加权平均 |
| 映射 | 映射(X) → Y |
单变量到新量纲的映射 |
| 聚合 | 聚合(X₁, X₂, ...) → Y |
多源到单目标的聚合 |
| 约束 | 约束(X) → Y |
X 约束 Y 的允许范围 |
五、量纲偏差的形式化
5.1 量纲偏差的定义
定义 5.1(量纲偏差):当程序执行未声明融合关系的跨量纲运算时,产生量纲偏差:
DimensionalDeviation = ⟨
operation: string, // 违规运算,如 "温度 + 满意度"
left_dim: Dimension, // 左操作数量纲
right_dim: Dimension, // 右操作数量纲
tick: int, // 发生的 Tick
resolution: Strategy // 解决策略
⟩
5.2 量纲偏差的解决策略
量纲偏差不中断程序(符合 A1 容错存续公理),但按以下策略处理:
| 策略 | 行为 | 适用场景 |
|---|---|---|
| 默认策略 | 取左操作数的量纲作为结果量纲,记录偏差 | 正常运行模式 |
| 严格模式 | 升级为错误,中断程序 | --strict 模式,调试用 |
| 融合策略 | 自动创建临时融合声明,结果量纲为 混合(δ₁,δ₂) |
探索模式 |
| 无量纲化 | 两个操作数先归一化为无量纲,再运算 | 统计分析场景 |
5.3 量纲偏差与其他偏差的关系
量纲偏差是偏差流的一种,与因果偏差、收敛偏差等统一管理:
偏差流
├── 量纲偏差(跨量纲运算)
├── 因果偏差(规则冲突/对抗)
├── 收敛偏差(偏差持续不收敛)
├── 演化偏差(演化震荡)
└── 层级偏差(聚合-约束不一致)
所有偏差统一由偏差收敛引擎处理,量纲偏差的默认收敛策略是「观察+记录」,因为量纲偏差通常是程序编写错误,不需要自动修复。
六、量纲检查的算法
6.1 静态量纲检查
元序解释器在解析阶段执行静态量纲检查:
输入:AST
输出:量纲偏差警告列表
算法:
1. 为每个 State 字段标注量纲
2. 遍历每个 When 规则的条件和动作
3. 对每个二元运算,检查操作数量纲
4. 若跨量纲且无融合声明,记录量纲偏差警告
5. 输出警告列表(不中断解析)
6.2 动态量纲检查
运行时,状态场的量纲可能因 Evolve 调整而变化(如融合权重变化不改变量纲,但新增融合可能引入新量纲)。动态检查确保运行时不出现量纲不一致。
6.3 量纲推导的复杂度
静态量纲检查的时间复杂度为 O(AST 节点数),因为每个节点只需检查一次量纲。这与类型检查的复杂度相同。
七、量纲系统与连续状态场的关系
7.1 量纲不改变运行时值
量纲是编译期/静态标注,不影响运行时的值表示。运行时所有值仍然是 [0,1] 的连续标量。量纲只影响:
- 静态检查(哪些运算合法)
- 偏差记录(哪些运算产生量纲偏差)
- 可解释性(输出中携带量纲信息)
7.2 归一化与量纲
原始值(如 25℃)通过 归一化() 转换为 [0,1] 的连续值,同时量纲变为 无量纲:
归一化(温度:摄氏度, -20, 50) → 无量纲值 ∈ [0,1]
这承认了原始值有量纲、有范围,与「连续状态场是归一化值」的设计一致。
7.3 量纲与不确定性
在 VVUQ 框架中,量纲与不确定性结合:
环境.温度 = 0.68 [0.62, 0.74] (95% CI, 量纲=摄氏度)
量纲确保不确定性标注在正确的语义维度上。
八、量纲系统的设计哲学
8.1 与传统类型系统的区别
| 维度 | 传统类型系统 (int/float/str) | 元序量纲系统 |
|---|---|---|
| 运行时表示 | 不同类型有不同表示 | 所有值都是 [0,1] 连续标量 |
| 检查时机 | 编译期/运行时 | 静态检查 + 运行时偏差 |
| 违规处理 | 类型错误,中断 | 量纲偏差,可观测不中断 |
| 跨类型运算 | 禁止或隐式转换 | 需融合声明 |
| 类型数量 | 固定(int/float/bool/str...) | 开放(用户可定义量纲) |
| 哲学 | 离散值的分类 | 连续值的语义标注 |
8.2 量纲是「弱类型」而非「无类型」
Trae 建议「弱类型语义状态 + 强语义维度标注」。元序的量纲系统正是这一建议的实现:
- 弱类型:运行时值统一为连续标量,不强制类型
- 强语义标注:量纲提供语义检查,防止无意义运算
8.3 量纲与领域知识
量纲是领域知识的载体。交通领域有量纲 车速:km/h、密度:辆/km,生态领域有量纲 种群密度:个体/公顷。量纲系统让领域专家的知识在语言层面可表达、可检查。
九、未解决问题与研究方向
- 量纲的自动推导:复杂表达式中量纲的完整推导算法(含条件分支、循环)
- 量纲的演化:Evolve 是否可以调整量纲?(当前设计不允许,量纲是静态的)
- 量纲的本体论:不同领域的量纲如何统一和映射(如「温度」在物理和气象中的不同含义)
- 量纲偏差的自动修复:能否根据上下文自动推断融合声明,修复量纲偏差?
- 量纲与因果图的结合:因果图中边的量纲一致性检查
十、总结
元序的量纲系统是「状态连续」哲学与「语义可检查」工程需求的平衡:
- 运行时:所有值是 [0,1] 连续标量,量纲不影响计算
- 静态时:量纲标注提供语义检查,跨量纲运算需融合声明
- 违规时:产生量纲偏差而非崩溃,符合容错存续公理
- 融合时:
连续融合()是跨量纲运算的唯一合法通道
量纲系统不是对「无类型」的倒退,而是对「无类型」的深化——连续值不需要离散类型,但需要语义标注来防止无意义的混合。
文档版本: WorldScript Dimension System v1.0
创建日期: 2026-09-03
关联文档: 《04元序规则》3.4.1节、《14形式化语义》、《16验证与确认体系》
实现状态: 理论定义完成,M2 阶段实现静态量纲检查
哲学基础: 弱类型 + 强语义标注,连续值的语义维度

浙公网安备 33010602011771号