1 个不稳定版本
0.1.0 | 2022年10月30日 |
---|
#8 in #binary-operator
20KB
273 行
Abstractio
利用Avatar扩展理论进行物理的抽象IO维度分析
由AdvancedResearch社区提供。
use abstractio::*;
fn main() {
assert_eq!(density().dim(), [1, 2]);
assert_eq!(measure_force().dim(), [3, 7]);
assert_eq!(format!("{:?}", density().to_abstract()), "Bin((Variable, Variable))".to_string());
assert_eq!(density().to_abstract().dim(), [1, 2]);
}
IO维度可以用来确定物理系统的自由度及其测量所需的工作。
抽象IO维度分析是一种结构,可以从物理系统的代数描述中投影下来,用于在不损失信息的情况下计算IO维度。
动机
Avatar扩展理论预测,在某个抽象层次上,具体的二元操作不再重要,而一元操作在拓扑上收缩。特别是,这种分析对于Avatar图的语义非常重要。
此库通过使用“读取方式”和“写入方式”的组合性质,展示了这种抽象层次的可能性。
对物理系统或测量的代数表达式进行分析,并计算IO维度向量。这里实现的抽象层次通过将代数表达式投影到“抽象IO”数据结构来展示。从这个抽象结构中,可以计算IO维度向量而不损失信息。
用路径语义符号解释
∴ f[dim_io] <=> f[to_abstract][dim_abstract_io]
∵ dim_io <=> dim_abstract_io . to_abstract
这是路径语义中的一个重言式。然而,由于路径语义有一个虚逆运算符,并不一定有解。
只有当f[to_abstract]
有解时,这种抽象才是可能的。此库展示了这一属性。
设计
IO维度向量是一对自然数,它计算物理系统中的“读取方式”和“写入方式”的数量。
[<读取方式>, <写入方式>]
例如,常量的IO维度为[1, 0]
。第一个数字是1,因为读取常量值只有一种方式。第二个数字是0,因为无法更改常量。
另一个例子:一个变量具有IO维度 [1, 1]
。第一个数字是1,因为有一个方法来读取变量的值。第二个数字是1,因为有一个方法来写入一个新的值到变量。
一个更复杂的例子是 密度 := 质量 / 体积
。这个系统具有IO维度 [1, 2]
。第一个维度是1,因为有一个方法来读取密度的值。第二个维度是2,因为有两种方法来写入新的密度值,一种是在体积保持不变的情况下,另一种是在质量保持不变的情况下。