#io #physics #avatar #extension #advanced-research #binary-operator

abstractio

利用Avatar扩展理论进行物理的抽象IO维度分析

1 个不稳定版本

0.1.0 2022年10月30日

#8 in #binary-operator

MIT/Apache

20KB
273

Abstractio

利用Avatar扩展理论进行物理的抽象IO维度分析

AdvancedResearch社区提供。

加入我们的Discord吧!

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,因为有两种方法来写入新的密度值,一种是在体积保持不变的情况下,另一种是在质量保持不变的情况下。

无运行时依赖