Show HN: David Deutsch "构造理论时间" 的 Python 模拟器
该文章介绍了一个基于 David Deutsch 构造理论框架的 Python 模拟器。该模拟器用代码形式展示了构造理论的关键概念,包括 Tasks、分支基质、量子引力、电磁学等。它包含一个通用构造器,可以自举自身,展示自复制能力。文章提供了功能概述、使用方法、示例代码和贡献指南,旨在作为教育资源和概念验证。
constructor-theory-simulator
David Deutsch 构造理论框架的一个 Python 实现,以代码形式展示关键概念——从简单的 Tasks 和分支基质到量子引力和电磁学。包含一个“通用构造器”,可以从一个 Tasks 列表中自举自身,展示了自复制和构造理论的力量。
“这是一个关于如何在代码中探索构造理论的演示,而不是一个高精度的物理引擎。对于正式的定义,请参阅 David Deutsch 和 Chiara Marletto 最近的论文 “Constructor Theory of Time”(2025 年 5 月 13 日)。
🚀 功能
- 核心框架 : Attributes, Substrates, Tasks, Constructors
- 不可逆和量子 Tasks: Many-worlds branching, decoherence guards
- Timers & Clocks: 模拟本征时间,狭义/广义相对论修正
- Fungibility & SwapConstructor: 自由交换相同的基质
- ASCII 可视化工具 :
ascii_branch()
用于快速的基于文本的分支检查 - 连续动力学 : 1D & 2D 基质,
DynamicsTask
, RK4 & symplectic integrators - 耦合 Tasks :
- 引力二体 (1D)
- 库仑耦合 (1D)
- Lorentz-force (2D) 用于磁场中的带电粒子
- 量子引力 & 电磁学: Graviton & Photon 发射/吸收 Tasks
- UniversalConstructor : 将任何 Tasks 列表引导到一个工作的 Constructor
- Hydrogen atom constructors : 激发、退激和双原子碰撞
- Demo 脚本 :
demo.py
– 展示每个 constructor 的运行bootstrap_demo.py
– 通过 UniversalConstructor 实现优雅的自复制
🛠 开始使用
前提条件
- Python 3.8+
- (可选)
matplotlib
用于相空间绘图
安装
git clone https://github.com/gvelesandro/constructor-theory-simulator.git
cd constructor-theory-simulator
运行单元测试
python -m unittest ct_tests.py
运行 Demos
python demo.py
python bootstrap_demo.py
注意: 如果你没有安装
matplotlib
,demos 仍然可以运行;绘图会被跳过并显示警告。
🎯 使用示例
from ct_framework import (
Attribute, Substrate,
PhotonEmissionTask, PhotonAbsorptionTask,
UniversalConstructor, ascii_branch
)
# 1) 定义你的 photon Tasks “程序”
ELEC = Attribute("charge_site")
prog = [
PhotonEmissionTask(ELEC, emission_energy=5.0, carry_residual=False),
PhotonAbsorptionTask(ELEC, absorption_energy=5.0)
]
# 2) 在运行时构建一个 Constructor
uc = UniversalConstructor()
em_cons = uc.build(prog)
# 3) 发射一个 photon
atom = Substrate("A", ELEC, energy=20.0)
branches = em_cons.perform(atom)
print(ascii_branch(branches))
# => * charge_site (A)
# * photon (A)
# 4) 把它吸收回来
photon = next(w for w in branches if w.attr.label=="photon")
restored = em_cons.perform(photon)[0]
print(restored)
# => A:charge_site(E=20.0,Q=0,t=2,F=charge_site)
🤝 贡献
这旨在作为一个教育资源和概念验证。非常欢迎贡献! 请:
- 提交 issues,说明缺失的 tasks 或物理模块
- 提交 pull requests,用于新的 constructors (例如化学反应,摩擦)
- 改进文档或添加更多 demos
📜 许可
在 MIT License 下发布。
🙏 致谢
- 灵感来自 David Deutsch 和 Chiara Marletto 在 构造理论 中的工作以及他们 2025 年 5 月 13 日的论文 “Constructor Theory of Time.”
- 感谢量子基础社区的反馈和讨论。