占筮规则与体系

《梅花易数》算法规则条目集·技术规格书

《梅花易数》算法规则条目集(程序实现技术规格书)

文档性质:软件工程算法规格说明书(Software Engineering Specification)
面向目标:供计算机程序、自动化排卦引擎与易学专家系统开发使用。将古籍中的占验话语彻底形式化为“输入参数 -> 计算逻辑 -> 边界条件 -> 输出卦象与断语模型”的确定性工程接口。
比对底本:


模块零:核心常数与标准数据结构定义(参数写死)

在梅花易数算法体系中,所有逻辑均基于先天八卦数及六十四卦二进制位结构。程序内部需预先固化以下常量表:

0.1 八卦先天数与卦画结构表

先天卦数 卦名 卦象 爻象(自下而上) 爻位数组 [初, 二, 三] 位权值 (Bit 0~2) 五行所属 后天对应方位(用于后天端法)
1 乾 (Qian) ☰ 阳、阳、阳 [1, 1, 1] 7 (111b) 金 西北 (Northwest)
2 兑 (Dui) ☱ 阳、阳、阴 [1, 1, 0] 3 (011b) 金 正西 (West)
3 离 (Li) ☲ 阳、阴、阳 [1, 0, 1] 5 (101b) 火 正南 (South)
4 震 (Zhen) ☳ 阳、阴、阴 [1, 0, 0] 1 (001b) 木 正东 (East)
5 巽 (Xun) ☴ 阴、阳、阳 [0, 1, 1] 6 (110b) 木 东南 (Southeast)
6 坎 (Kan) ☵ 阴、阳、阴 [0, 1, 0] 2 (010b) 水 正北 (North)
7 艮 (Gen) ☶ 阴、阴、阳 [0, 0, 1] 4 (100b) 土 东北 (Northeast)
8 坤 (Kun) ☷ 阴、阴、阴 [0, 0, 0] 0 (000b) 土 西南 (Southwest)

0.2 十二地支时辰与序数表

地支 序数 对应二十四小时区间 五行 生肖
子 1 23:00 — 01:00 水 鼠
丑 2 01:00 — 03:00 土 牛
寅 3 03:00 — 05:00 木 虎
卯 4 05:00 — 07:00 木 兔
辰 5 07:00 — 09:00 土 龙
巳 6 09:00 — 11:00 火 蛇
午 7 11:00 — 13:00 火 马
未 8 13:00 — 15:00 土 羊
申 9 15:00 — 17:00 金 猴
酉 10 17:00 — 19:00 金 鸡
戌 11 19:00 — 21:00 土 犬
亥 12 21:00 — 23:00 水 猪

0.3 标准模运算定义(写死)

古籍云:“卦以八除,爻以六除。如不满数,止用此数;如过数,则递除之;直除尽,以零数作卦/动爻;如得整除之数,卦取坤八,爻取上六。”


模块一:起卦诸法(完整技术规则与算法)

梅花易数起卦两大门派为:先天起卦(先得数,以数起卦)与后天端法起卦(先见象,以象起卦)。

规则 1.1:年月日时起卦法(先天时间起卦)

规则 1.2:物数起卦法(见单一可数之物)

规则 1.3:声音起卦法(闻声起卦)

规则 1.4:文字起卦法(一字至百余字系统)

规则 1.4.1:一字占(楷书偏旁拆分笔画法)

规则 1.4.2:二字占(两仪平分法)

规则 1.4.3:三字占(三才拆分法)

规则 1.4.4:四字至十字占(中古四声平仄调声法)

规则 1.4.5:十一字以上至百余字占(纯字数法)

规则 1.5:丈尺与尺寸占法

规则 1.6:为人占与自己占(起卦触发源规则)

规则 1.7:后天端法起卦(物卦起例)

规则 1.8:起卦加数消除冲突法(并发/同时间多人去重算法)


模块二:动爻求法与判定规则

动爻是决定重卦吉凶运动、体用划分及变卦演化的唯一动力核心。

规则 2.1:一卦一爻动原则(写死)

梅花易数算法体系严格限制一卦仅有一爻动。严禁出现大衍筮法或京房六爻中的多爻动或静卦无动爻。无论输入数字多大,经过模6运算后,必然锁定在第 1 至第 6 爻中的唯一爻位。

规则 2.2:动爻求法分类归纳表

起卦类型 动爻计算公式 是否加时数 边界特例(整除时)
年月日时起卦 $(年支 + 月 + 日 + 时支) \pmod 6$ 包含时数 余0取第6爻(上爻)
物数占 $(物数 + 时支) \pmod 6$ 必须加时 余0取第6爻(上爻)
声音占 $(声数 + 时支) \pmod 6$ 必须加时 余0取第6爻(上爻)
一字至十字占 (字画总数 或 调声总数) $\pmod 6$ 严禁加时 余0取第6爻(上爻)
十一字以上占 总字数 $N \pmod 6$ 严禁加时 余0取第6爻(上爻)
丈尺占 $(丈数 + 尺数) \pmod 6$ 严禁加时 余0取第6爻(上爻)
尺寸占 $(尺数 + 寸数 + 时支) \pmod 6$ 必须加时 余0取第6爻(上爻)
后天端法(物卦) $(物卦数 + 方位卦数 + 时支) \pmod 6$ 必须加时 余0取第6爻(上爻)
同时间加数占 $(年+月+日+姓画+时支) \pmod 6$ 包含时数 余0取第6爻(上爻)

规则 2.3:动爻状态翻转算法


模块三:体用判定、互卦与变卦推演算法

规则 3.1:体用判定规则(动静分体用)

规则 3.2:互卦生成算法(取中爻交错)

规则 3.3:特殊边界:“乾坤无互,互其变卦”

规则 3.4:变卦生成算法


模块四:五行生克与四季旺相休囚死判定

规则 4.1:五行生克吉凶基础矩阵

设体卦五行为 $E_{ti}$,对应各应卦(用卦、体互、用互、变卦)五行为 $E_{other}$:

  1. 用生体($E_{other}$ 生 $E_{ti}$):大吉。主贵人相助,获益匪浅,求谋顺遂。
  2. 体用比和($E_{other} == E_{ti}$):吉。主同道相扶,百事亨通,主客融洽。
  3. 体克用($E_{ti}$ 克 $E_{other}$):小吉/次吉。事虽可成,但劳心费力,多所克制。
  4. 体生用($E_{ti}$ 生 $E_{other}$):不吉/泄气。主损耗盗泄,虚惊劳累,防破耗。
  5. 用克体($E_{other}$ 克 $E_{ti}$):大凶。主灾咎病祸,官非破败,若克体卦旺则立见危亡。

规则 4.2:四季与五行旺相休囚死完全状态矩阵(写死)

判定时令以月令(节气月支)为主:

时令(月支) 旺(得令当权) 相(旺者所生) 休(生旺者退休) 囚(克旺者被囚) 死(旺者所克受刑)
春季(寅卯) 木 (震/巽) 火 (离) 水 (坎) 金 (乾/兑) 土 (坤/艮)
夏季(巳午) 火 (离) 土 (坤/艮) 木 (震/巽) 水 (坎) 金 (乾/兑)
秋季(申酉) 金 (乾/兑) 水 (坎) 土 (坤/艮) 火 (离) 木 (震/巽)
冬季(亥子) 水 (坎) 木 (震/巽) 金 (乾/兑) 土 (坤/艮) 火 (离)
四季月(辰戌丑未) 土 (坤/艮) 金 (乾/兑) 火 (离) 木 (震/巽) 水 (坎)

规则 4.3:体用乘旺消长评估权重算法


模块五:断应期法则(克期数学模型)

规则 5.1:数理推应期模型(先天动静法)

规则 5.2:事端长短决定时间单位

根据被占事物的物理与社会生命周期,将 $\text{期数 } TimeCount$ 映射至时间颗粒度:

  1. 旦夕暴发之事(花卉、饮食、寻常争斗、鸟兽叫鸣):
    • 时间单位为:时辰 或 日。
  2. 近事/常事(寻人、买卖、婚姻订聘、谋差):
    • 时间单位为:日 或 月。
  3. 久远之事(营建屋宅、造葬坟墓、立业兴替):
    • 时间单位为:月 或 年。

规则 5.3:时令卦气生克定日辰模型(后天干支法)

当需要锁定具体天干地支日期时,采用此规则:


模块六:三要十应外应推演系统

规则 6.1:三要总括

规则 6.2:十应类属与卦象交互规则

十应作为主卦之外的“客卦/外应环境参数”,将其五行属性带入体用系统参断:

  1. 天时之应:晴明为离(火),阴雨为坎(水),雷霆为震(木),风顺为巽(木),雪霜为乾兑(金)。
  2. 地理之应:高冈丘陵为艮(土),平地原野为坤(土),江河溪流为坎(水),道路森林为震巽(木)。
  3. 人事之应:士人官吏为乾,妇人阴柔为坤,长幼有序,喜庆谈笑为吉应,号泣怒骂为凶兆。
  4. 时令之应:详审当下月日时之五行衰旺。
  5. 方卦之应:来人之方位八卦。
  6. 动物之应:见龙马乾震为吉,见乌鸦坎离为非,见犬吠防盗,见鸡鸣主烹。
  7. 静物之应:见金宝钱帛主财,见刀剑绳索主损伤官非。
  8. 言语之应:旁人所吐言词,字字为谶。
  9. 声音之应:丝竹钟鼓乐声主喜,折木破碗声主凶。
  10. 五色之应:青碧主木,赤紫主火,黄赭主土,素白主金,玄黑主水。

规则 6.3:外应融入体用计算规则


模块七:两底本版本差异比对与工程实现采信决策汇总表

序号 规则模块 底本一(殆知阁三卷本系统) 底本二(故宫秣陵德聚堂五卷本) [版本差异考订] [工程实现采信决策]
1 全书体例 分卷一、二、三,共三卷。无字画拆字专卷。 分卷之一至五,共五卷。卷四五收大量拆字法。 底本一为早中期精简坊本;底本二为清代成熟五卷本。 采信底本一至三卷为核心卦法;卷四五拆字作为扩展子系统。
2 序言署名 卷端题“清黄宗羲撰序”。 卷端署“秣陵德聚堂谨订”。 底本一黄宗羲序系清中叶书坊伪托;底本二署德聚堂为正本。 采信底本二考订结论,元数据废弃黄宗羲作序说。
3 字占声调 记四声调声,未附入声判定。 正文注有校记,明确平仄调法。 两本皆基于中古平水韵四声体系。 程序提供双模式:默认古典平水韵;兼容现代拼音调值模式。
4 克应文字 记作“克则最难”、“以数而克之”。 记作“刻期最难”、“以数而刻之”。 底本一为音近传抄致讹;底本二作“刻期”字义精确。 采信底本二“刻期”,程序模块命名为 calculate_keqi()。
5 物数占名 题《物数占例》。 题《物占数》(注:校本题物数占)。 篇名微异,正文除法与取爻规则完全一致。 功能命名为 divine_by_object_count()。
6 乾坤无互 仅记“乾坤无互,互其变卦”。 同样记“乾坤无互,互其变卦”。 两本均列为重要推演口诀,但未加长篇注脚。 算法严格实现分支:遇纯乾纯坤取变卦之2,3,4与3,4,5爻为互。
7 四季旺衰 卷一仅列旺与衰(死)。 卷一列旺衰,卷五附五行四时旺相休囚表。 底本二图表虽残脱,但其理论框架完全合乎五行通论。 采用标准5x5旺相休囚死矩阵(见模块四表),完全固化。
8 加数起卦 卷二载寅年十二月初一日午时三家起造例。 卷二载同样案例,记述相同。 两本高度一致,确立了多人并发消除同卦的核心机制。 强制作为排卦引擎的多人去重接口。

模块八:程序实现伪代码(Python标准实现范式)

为便于工程师直接阅读与转化,提供核心调度与推演的完整伪代码模型:

# coding: utf-8
from dataclasses import dataclass
from typing import Tuple, List

# 八卦常量
BAGUA_NAMES = ["", "乾", "兑", "离", "震", "巽", "坎", "艮", "坤"]
BAGUA_ELEMENTS = ["", "金", "金", "火", "木", "木", "水", "土", "土"]

# 爻画定义(0: 阴, 1: 阳),自下而上列表:[初爻, 二爻, 三爻]
BAGUA_YAO = {
    1: [1, 1, 1], # 乾 (三阳)
    2: [1, 1, 0], # 兑 (初阳, 二阳, 三阴)
    3: [1, 0, 1], # 离 (初阳, 二阴, 三阳)
    4: [1, 0, 0], # 震 (初阳, 二阴, 三阴)
    5: [0, 1, 1], # 巽 (初阴, 二阳, 三阳)
    6: [0, 1, 0], # 坎 (初阴, 二阳, 三阴)
    7: [0, 0, 1], # 艮 (初阴, 二阴, 三阳)
    8: [0, 0, 0], # 坤 (三阴)
}

def mod8_gua(n: int) -> int:
    r = n % 8
    return 8 if r == 0 else r

def mod6_yao(n: int) -> int:
    r = n % 6
    return 6 if r == 0 else r

def get_gua_by_yao(yao: List[int]) -> int:
    for g, y in BAGUA_YAO.items():
        if y == yao:
            return g
    return 8

@dataclass
class HexagramResult:
    upper_gua: int       # 上卦先天数 (1-8)
    lower_gua: int       # 下卦先天数 (1-8)
    dong_yao: int        # 动爻位 (1-6)
    ti_gua: int          # 体卦先天数 (1-8)
    yong_gua: int        # 用卦先天数 (1-8)
    ti_is_upper: bool    # 体卦是否在上卦
    hu_upper: int        # 上互卦先天数 (1-8)
    hu_lower: int        # 下互卦先天数 (1-8)
    bian_upper: int      # 变卦之上卦先天数 (1-8)
    bian_lower: int      # 变卦之下卦先天数 (1-8)

def deduce_meihua(upper: int, lower: int, dong: int) -> HexagramResult:
    # 1. 组成本卦六爻 (自初爻至上爻, 索引0至5)
    six_lines = BAGUA_YAO[lower] + BAGUA_YAO[upper]
    
    # 2. 判定体用 (动爻在下卦则下用上体;在上卦则上用下体)
    if dong in [1, 2, 3]:
        ti_gua = upper
        yong_gua = lower
        ti_is_upper = True
    else:
        ti_gua = lower
        yong_gua = upper
        ti_is_upper = False
        
    # 3. 产生变卦 (仅动爻发生二进制翻转)
    bian_lines = list(six_lines)
    target_idx = dong - 1
    bian_lines[target_idx] = 1 if bian_lines[target_idx] == 0 else 0
    bian_lower = get_gua_by_yao(bian_lines[0:3])
    bian_upper = get_gua_by_yao(bian_lines[3:6])
    
    # 4. 产生互卦(包含“乾坤无互,互其变卦”边界处理)
    if (upper == 1 and lower == 1) or (upper == 8 and lower == 8):
        # 乾坤无互,互其变卦
        hu_lower = get_gua_by_yao([bian_lines[1], bian_lines[2], bian_lines[3]])
        hu_upper = get_gua_by_yao([bian_lines[2], bian_lines[3], bian_lines[4]])
    else:
        # 常规互卦 (取本卦二三四爻为下互,三四五爻为上互)
        hu_lower = get_gua_by_yao([six_lines[1], six_lines[2], six_lines[3]])
        hu_upper = get_gua_by_yao([six_lines[2], six_lines[3], six_lines[4]])
        
    return HexagramResult(
        upper_gua=upper,
        lower_gua=lower,
        dong_yao=dong,
        ti_gua=ti_gua,
        yong_gua=yong_gua,
        ti_is_upper=ti_is_upper,
        hu_upper=hu_upper,
        hu_lower=hu_lower,
        bian_upper=bian_upper,
        bian_lower=bian_lower
    )

本规格书结语:以上条目涵盖了《梅花易数》排卦、体用演化、旺衰克应及断期之全部数理骨架。开发者依据此规范可百分之百还原宋明清三代梅花数术推演体系。

《皇极经世》数理结构·技术规格书

《皇极经世》数理结构技术规格书(程序实现工程级标准)

文档性质:软件工程系统设计与算法规格说明书(Software Architecture & Mathematical Engine Specification)
面向目标:为历史时空推演引擎、皇极象数推步算法、易学天道历法系统开发提供无歧义、数学化、确定性的工程实现基准。
依据底本:


模块零:核心设计理念与宇宙时空拓扑模型

邵雍《皇极经世》的数理核心,是建立在**“天人合一、大微同构、阴阳消长、以理寓数”**之上的宏大宇宙历史编年体系。其算法设计呈现三大特征:

  1. 分形同构(Fractal Isomorphism):宇宙物理时间(元会运世,大四象)与人类日用时间(年月日时,小四象)在数学结构上严格等比放大。
  2. 二元交替嵌套(Alternating Radix):以阳数基数 12(天统体)与阴数基数 30(地分用)交替相乘,驱动全元周期。
  3. 六十卦周天历度(Cyclic Hexagram Mapping):去除乾、坤、坎、离四正卦以统四时,以其余六十卦三百六十爻配周天三百六十度与全元三百六十运。

模块一:元会运世单位制完整定义(数学公式与全层级矩阵)

1.1 大小四象同构映射模型

邵雍在《观物内篇·五十一》指出:“天统乎体而托地以为体,地分乎用而承天以为用……四时体数也,三月三十日用数也。”
宇宙时间尺度(大四象)与地球日历尺度(小四象)形成严格映射:

1.2 各级单位定义与换算递推公式(写死)

系统固化以下基准换算关系:

由此可导出面向程序数据类型的绝对整型换算矩阵:

目标单位 \ 基准单位 1 元 (Yuan) 1 会 (Hui) 1 运 (Yun) 1 世 (Shi) 1 年 (Year) 1 月 (Month) 1 日 (Day)
会 (Hui) 12 1 — — — — —
运 (Yun) 360 30 1 — — — —
世 (Shi) 4,320 360 12 1 — — —
年 (Year) 129,600 10,800 360 30 1 — —
月 (Month) 1,555,200 129,600 4,320 360 12 1 —
日 (Day) 46,656,000 3,888,000 129,600 10,800 360 30 1
辰 (Hour) 559,872,000 46,656,000 1,555,200 129,600 4,320 360 12

1.3 核心数理常数(全系统写死)


模块二:以元经会 / 以会经运 / 以运经世 三层纪年表的结构规律

邵雍在《皇极经世》中构造了贯通古今的历史大年表。程序实现必须将其分解为标准的多级复合索引结构。

2.1 三层纪年表分层定义

  1. 第一层:以元经会(宏观大运表,观物篇一至五)
    • 索引范围:会编号 H ∈ [1, 12],以十二地支命名:
      • 子会(1)、丑会(2)、寅会(3)、卯会(4)、辰会(5)、巳会(6)、午会(7)、未会(8)、申会(9)、酉会(10)、戌会(11)、亥会(12)。
    • 每一会冠以天干会名,如“经会之子一”、“经会之丑二”……“经会之巳六”、“经会之午七”等。
  2. 第二层:以会经运(中观运度表,观物篇六至二十四)
    • 索引范围:全元全局运编号 Y_global ∈ [1, 360]。
    • 会内局部运编号 y_local ∈ [1, 30]。
    • 换算公式:Y_global = (H - 1) × 30 + y_local。
    • 运之天干地支排布规则:
      • 运以六十甲子顺行排布。
      • 子会(1~30运):甲子(1)至癸巳(30);
      • 丑会(31~60运):甲午(31)至癸亥(60);
      • 寅会(61~90运):甲子(1)至癸巳(30);
      • 卯会(91~120运):甲午(31)至癸亥(60);
      • 其余各会依次交替类推。
  3. 第三层:以运经世(微观编年表,观物篇二十五至三十四)
    • 索引范围:全元全局世编号 S_global ∈ [1, 4320]。
    • 运内局部世编号 s_local ∈ [1, 12],以十二地支标示(子、丑、寅、卯、辰、巳、午、未、申、酉、戌、亥)。
    • 换算公式:S_global = (Y_global - 1) × 12 + s_local。
    • 世内三十年排布规则(关键数学定理):
      • 每一世恒定包含 30 年。
      • 奇数世(S_global % 2 == 1):固定取六十甲子前半部,即 甲子(1) 至 癸巳(30)。
      • 偶数世(S_global % 2 == 0):固定取六十甲子后半部,即 甲午(31) 至 癸亥(60)。
      • 两世合为一甲子(60年),一运十二世合为六个甲子循环(360年)。

2.2 绝对年份到四级坐标的转换算法

给定从本元开辟起的绝对累积年份 N_year ∈ [1, 129600]:

该年份干支在六十甲子中的索引 GZ ∈ [0, 59] 为:

2.3 历史年份定位与现代公历转换锚定(Anchor Points)

邵雍《以运经世》年表记录了自帝尧肇位于平阳至五代周世宗柴荣终、宋太祖即位的信史纪年。

【巳会之末】(第180运,癸巳运)
  ├── 第2149世(子)至 第2155世(午):史前传疑时代
  └── 第2156世(未,偶数世):第11年为【甲辰年】—— 唐帝尧肇位元年(公元前2357年)!
        │
【午会之始】(第181运,甲午运,夏至一阴生)
  ├── 第2161世(子)至 第2172世(亥):夏朝历年
  ├── 第182运(乙未运):商朝立国
  ├── 第183运(丙申运):周朝立国
  └── 第184运(丁酉运):唐宋变革期
        └── 第2266世(酉,偶数世):第27年为【庚申年】—— 宋太祖建隆元年(公元960年)!

核心历史锚定表(写死参数,经原文精确对勘)

历史事件 邵雍年表坐标 世内年序与干支 全元绝对年数 N_year 对应公历纪年
唐帝尧即位元年 巳会·第180运·第2156世(未) 第11年(甲辰) 64,661 公元前 2357 年 (BCE 2357)
虞舜受禅元年 巳会·第180运·第2158世(酉) 第21年(甲午) 64,731 公元前 2287 年 (BCE 2287)
夏禹受禅元年 巳会·第180运·第2159世(戌) 第24年(丁未) 64,764 公元前 2254 年 (BCE 2254)
商汤立国元年 午会·第182运·第2176世(辰) 第16年(乙亥) 65,266 公元前 1752 年 (BCE 1752)
周武王克商元年 午会·第183运·第2197世(子) 第16年(己卯) 65,896 公元前 1122 年 (BCE 1122)
宋太祖建隆元年 午会·第184运·第2266世(酉) 第27年(庚申) 67,977 公元 960 年 (CE 960)
宋神宗熙宁十年(邵子卒年) 午会·第184运·第2267世(戌) 第14年(丁巳) 68,094 公元 1077 年 (CE 1077)

公元纪年双向转换公式(标准基准常数:Offset = 67017)

注:天文历法计算无公元 0 年,公元前 1 年直接衔接公元 1 年。


模块三:先天六十四卦圆图配值运世年规则

3.1 伏羲先天六十四卦圆图基础与四正卦去取

圆图六十卦序列表(去乾、坤、坎、离后,自复卦顺行)

3.2 值会卦(元之会卦,12会)

3.3 值运卦(会之运卦,360运)

3.4 值世卦(运之世卦,4320世)

一运管 12 世(360年),如何由值运卦推导 12 世之卦?

3.5 值年卦(世之流年卦,129600年)

一世 30 年,每年值何卦?


模块四:开物与闭物时间窗口

“开物”与“闭物”是邵雍界定宇宙万物生死存亡、人类文明活跃期与蛮荒混沌期的绝对分水岭。

4.1 宇宙演化十二会全景与相变窗口

根据《观物内篇·五十二》与《皇极经世心易发微》记载:

 会序:   子会(1)    丑会(2)    寅会(3)    卯~巳(4~6)   午会(7)    未~酉(8~10)  戌会(11)   亥会(12)
 状态: [ 天开 ] [ 地辟 ] [ 人生 ] [ 阳升发展 ] [ 阴生 ] [ 阴长收敛 ] [ 物闭 ] [ 地闭 ]
        └──────────────────┘                                            └──────────────────┘
           【开辟准备期】                 【万物繁茂活跃期】                  【衰退闭塞期】
           (21,600年)                     (86,400年)                      (21,600年)

4.2 开物 / 闭物数学时间窗口(写死参数)


模块五:声律唱和(可执行规格)

本模块依据王植《皇极经世书解》卷四的《声音唱和》图说(原文行 1837–1865、1923–1935、2105–2113)。它是声音/文字的特征层,不反向修改梅花年月日时或皇极元会运世主干坐标。

5.1 坐标、体数与用数

王植的基本约定是“声为律、音为吕;律为唱、吕为和”(1857),天声主动,地音受动。天、地各先取四象,再展开各自的序号轴:

维度 四象顺序(固定) 序号轴 单格总数 语义
天声 日、月、星、辰 声位 1–10(甲–癸) 4 × 10 = 40 天之体声
地音 水、火、土、石 音位 1–12(子–亥) 4 × 12 = 48 地之体音
天声×地象 日月星辰 × 水火土石 每格 10 声位 16 × 10 = 160 天声全数
地音×天象 日月星辰 × 水火土石 每格 12 音位 16 × 12 = 192 地音全数

四象的先天对应固定为:

天声象 阴阳刚柔名 地音象 阴阳刚柔名
日 太阳 水 太柔
月 太阴 火 太刚
星 少阳 土 少柔
辰 少阴 石 少刚

工程中同时保留“体数”和“用数”两层:从天声全数 160 中扣除地之体数 48,得天声用数 112;从地音全数 192 中扣除天之体数 40,得地音用数 152。王植原文的总数校验为:

动植全数 = 160 × 192 = 30,720
天声用数 = 160 - 48 = 112
地音用数 = 192 - 40 = 152
动物用数 = 112 × 152 = 17,024
植物用数 = 152 × 112 = 17,024
动植通数 = 17,024 × 17,024 = 289,816,576

这里的“体数扣除”是图中的无声/无音位置,不得把 112、152 误当成四声或十二音的数量;图外的空位仍属于全图拓扑,但不进入用数乘法(1837–1849、1853–1859、2105–2107)。

5.2 天声、地音的完整状态表

轴 状态顺序 数值编码 与四象的配合
天声调 平、上、去、入 tone = 1、2、3、4 分别以日、月、星、辰配四声,形成 4 × 4 的声象格
地音开合 开、发、收、闭 opening = 1、2、3、4 分别以水、火、土、石配四音,形成 4 × 4 的音象格
天声序号 甲、乙、丙、丁、戊、己、庚、辛、壬、癸 voice = 1…10 每一声图纵向十位
地音序号 子、丑、寅、卯、辰、巳、午、未、申、酉、戌、亥 sound = 1…12 每一音图横向十二位
声性质 奇声 / 偶声 odd / even 奇声清、偶声浊;对应律的闢/翕
音性质 闢 / 翕 open / closed 阳主闢而出,阴主翕而入;对应吕的开/闭行

图表层的固定规模为:四声图 4 ×(四象 × 十声位)= 160 个天声格,四音图 4 ×(四象 × 十二音位)= 192 个地音格;扣除体数后,天声用格 112、地音用格 152。十声图与十二音图的交叉方向分别为 10 × 12 = 120 个“唱吕”图和 12 × 10 = 120 个“和律”图;四声/四音状态展开后总目录为 16 × 240 = 3,840 图(例言行 151–153,瑞节注行 1861–1863)。

5.3 唱和计算规则

输入必须是一个声坐标和一个音坐标:

声坐标 = (sky ∈ {日,月,星,辰}, tone ∈ {平,上,去,入}, voice ∈ 1..10)
音坐标 = (earth ∈ {水,火,土,石}, opening ∈ {开,发,收,闭}, sound ∈ 1..12)

计算步骤固定如下:

  1. 将 sky 映射为 1–4,将 tone 映射为 1–4,将 earth 映射为 1–4,将 opening 映射为 1–4;序号越界直接拒绝。
  2. 以 voice(1–10)在相应天声图取“律”,以 sound(1–12)在相应地音图取“吕”。
  3. 唱和的正向结果为 律唱吕,反向结果为 吕和律;两者使用同一对坐标,不交换奇偶规则。
  4. 声位为奇数时标记 清/闢,为偶数时标记 浊/翕;这两个标签是结构字段,不是现代普通话声调判断。
  5. 若文字有反切资料,反切上字进入天声坐标、反切下字进入地音坐标;若只有现代拼音,不得假称已经完成古音反切定位,应保留 音位未定。
  6. 只在去除体数后的有效格中输出 use_voice_index、use_sound_index;空位输出 usable=false 和原因,不以 0 冒充一个音数。
  7. 对有效格输出 animal_number = use_voice_index × use_sound_index(范围 1–17,024);反向“植物”计算为 use_sound_index × use_voice_index,数值相同但方向不同。

王植举例的图读法是:直看第一维为日声水音、第二维为月声火音、第三维为星声土音、第四维为辰声石音;横看同样按日/月/星/辰行进(1850–1851)。因此一个可复现的结果至少必须回显四元组坐标、声/音序号、清浊/闢翕标签、是否体数空位和乘积,不能只返回一个汉字或吉凶判断。

5.4 与元会运世的衔接

声律层沿用与元会运世相同的四象递推,但不把声音乘积直接当作年份:王植明确给出“日日声即元之元,日月声即元之会,日星声即元之运,日辰声即元之世”(2105–2107)。因此接口映射固定为:

声象 元会运世层 接口字段
日声 元之元 yuan
月声 元之会 hui
星声 元之运 yun
辰声 元之世 shi

给定皇极坐标 (yuan, hui, yun, shi) 时,可将四层标签作为声音图的四层寻址上下文;给定声音坐标时,只能生成对应的声律特征,不能反推出唯一历史年份,除非另有完整的元会运世输入。yun_gua(year) 的值运卦/值世卦计算不调用声律模块,保证主干确定性与声律特征层解耦。

5.5 工程边界


模块六:工程实现核心 Python 类库与算法参考(标准实现范式)

以下提供生产级 Python 算法参考实现,可直接集成进排卦与天文历推步系统:

# coding: utf-8
from dataclasses import dataclass
from typing import Tuple, Dict, Any

# 1. 常量定义
TIAN_GAN = ["", "甲", "乙", "丙", "丁", "戊", "己", "庚", "辛", "壬", "癸"]
DI_ZHI = ["", "子", "丑", "寅", "卯", "辰", "巳", "午", "未", "申", "酉", "戌", "亥"]

# 六十甲子表
SIXTY_JIAZI = [
    "甲子", "乙丑", "丙寅", "丁卯", "戊辰", "己巳", "庚午", "辛未", "壬申", "癸酉",
    "甲戌", "乙亥", "丙子", "丁丑", "戊寅", "己卯", "庚辰", "辛巳", "壬午", "癸未",
    "甲申", "乙酉", "丙戌", "丁亥", "戊子", "己丑", "庚寅", "辛卯", "壬辰", "癸巳",
    "甲午", "乙未", "丙申", "丁酉", "戊戌", "己亥", "庚子", "辛丑", "壬寅", "癸卯",
    "甲辰", "乙巳", "丙午", "丁未", "戊申", "己酉", "庚戌", "辛亥", "壬子", "癸丑",
    "甲寅", "乙卯", "丙辰", "丁巳", "戊午", "己未", "庚申", "辛酉", "壬戌", "癸亥"
]

# 十二辟卦(会卦)
HUI_GUA = ["", "复", "临", "泰", "大壮", "夬", "乾", "姤", "遁", "否", "观", "剥", "坤"]

# 先天六十四卦圆图去四正后之六十卦序(复至剥)
SIXTY_ROUND_GUA = [
    # 阳升三十卦
    "复", "颐", "屯", "益", "震", "噬嗑", "随", "无妄", "明夷", "贲",
    "既济", "家人", "丰", "革", "同人", "临", "损", "节", "中孚", "归妹",
    "睽", "兑", "履", "泰", "大畜", "需", "小畜", "大壮", "大有", "夬",
    # 阴降三十卦
    "姤", "大过", "鼎", "恒", "巽", "井", "蛊", "升", "讼", "困",
    "未济", "解", "涣", "蒙", "师", "遁", "咸", "旅", "小过", "渐",
    "蹇", "艮", "谦", "否", "萃", "晋", "豫", "观", "比", "剥"
]

# 公元纪年与皇极元绝对年数转换常量
CE_OFFSET = 67017

@dataclass
class HuangjiCoordinate:
    absolute_year: int     # 全元绝对年数 [1, 129600]
    hui_index: int         # 会序号 [1, 12]
    hui_name: str          # 会地支 (子~亥)
    hui_gua: str           # 会卦 (十二辟卦)
    yun_global: int        # 全局运序号 [1, 360]
    yun_local: int         # 会内运序号 [1, 30]
    yun_gua: str           # 值运卦
    yun_yao: int           # 值运卦爻位 [1, 6]
    shi_global: int        # 全局世序号 [1, 4320]
    shi_local: int         # 运内世序号 [1, 12]
    shi_name: str          # 世地支 (子~亥)
    year_in_shi: int       # 世内年序号 [1, 30]
    ganzhi: str            # 流年干支
    year_gua: str          # 流年值年卦 (六十花甲配圆图卦)
    is_kaiwu: bool         # 是否处于开物活跃期
    ce_year: int           # 公元年份 (负数表示公元前)

class HuangjiEngine:
    @staticmethod
    def ce_to_absolute_year(ce: int) -> int:
        # 公元年份转皇极绝对年数
        if ce > 0:
            return ce + CE_OFFSET
        elif ce < 0:
            return 67018 + ce
        else:
            raise ValueError("公元年份无公元0年,请使用 -1 表示公元前1年,1 表示公元1年。")

    @staticmethod
    def absolute_year_to_ce(ay: int) -> int:
        # 皇极绝对年数转公元年份
        if ay > CE_OFFSET:
            return ay - CE_OFFSET
        else:
            return ay - 67018

    @classmethod
    def calculate(cls, absolute_year: int) -> HuangjiCoordinate:
        # 根据全元绝对年数推导皇极四级坐标与全部卦象
        if not (1 <= absolute_year <= 129600):
            raise ValueError("绝对年数必须在 [1, 129600] 之间。")

        ay = absolute_year

        # 1. 会推导
        h_idx = (ay - 1) // 10800 + 1
        h_name = DI_ZHI[h_idx]
        h_gua = HUI_GUA[h_idx]

        # 2. 运推导
        y_global = (ay - 1) // 360 + 1
        y_local = (y_global - 1) % 30 + 1
        
        # 值运卦推导(圆图60卦,每爻管一运,6运管一卦)
        gua_idx = (y_global - 1) // 6
        yao_idx = (y_global - 1) % 6 + 1
        y_gua = SIXTY_ROUND_GUA[gua_idx]

        # 3. 世推导
        s_global = (ay - 1) // 30 + 1
        s_local = (s_global - 1) % 12 + 1
        s_name = DI_ZHI[s_local]

        # 4. 年与干支推导
        year_in_shi = (ay - 1) % 30 + 1
        if s_global % 2 == 1:
            # 奇数世,走前半部 0~29
            gz_idx = year_in_shi - 1
        else:
            # 偶数世,走后半部 30~59
            gz_idx = year_in_shi + 29
        ganzhi_str = SIXTY_JIAZI[gz_idx]

        # 流年值年卦(标准圆图配六十花甲)
        year_gua_str = SIXTY_ROUND_GUA[gz_idx]

        # 5. 开物与闭物状态判定 (开物27000年,闭物113400年)
        is_kaiwu_status = (27000 <= ay <= 113400)

        # 6. 对应公元年份
        ce = cls.absolute_year_to_ce(ay)

        return HuangjiCoordinate(
            absolute_year=ay,
            hui_index=h_idx,
            hui_name=h_name,
            hui_gua=h_gua,
            yun_global=y_global,
            yun_local=y_local,
            yun_gua=y_gua,
            yun_yao=yao_idx,
            shi_global=s_global,
            shi_local=s_local,
            shi_name=s_name,
            year_in_shi=year_in_shi,
            ganzhi=ganzhi_str,
            year_gua=year_gua_str,
            is_kaiwu=is_kaiwu_status,
            ce_year=ce
        )

# 单元测试验证
if __name__ == "__main__":
    engine = HuangjiEngine()
    
    # 验证唐尧即位元年 (公元前2357年)
    yao_ay = 64661
    res_yao = engine.calculate(yao_ay)
    print(f"唐尧即位年(64661): 会={res_yao.hui_name}, 运={res_yao.yun_global}, 世={res_yao.shi_global}({res_yao.shi_name}), 年序={res_yao.year_in_shi}, 干支={res_yao.ganzhi}")
    assert res_yao.ganzhi == "甲辰", "唐尧即位年必须为甲辰!"
    assert res_yao.shi_global == 2156, "唐尧即位年必须在第2156世!"
    assert res_yao.yun_global == 180, "唐尧即位年必须在第180运!"
    assert res_yao.ce_year == -2357, "唐尧即位年必须对应公元前2357年!"

    # 验证宋太祖建隆元年 (公元960年)
    song_ay = 67977
    res_song = engine.calculate(song_ay)
    print(f"宋建隆元年(67977): 会={res_song.hui_name}, 运={res_song.yun_global}, 世={res_song.shi_global}({res_song.shi_name}), 年序={res_song.year_in_shi}, 干支={res_song.ganzhi}")
    assert res_song.ganzhi == "庚申", "宋建隆元年必须为庚申!"
    assert res_song.shi_global == 2266, "宋建隆元年必须在第2266世!"
    assert res_song.ce_year == 960, "宋建隆元年必须对应公元960年!"

    # 验证公元2026年 (丙午年)
    ay_2026 = 69043
    res_2026 = engine.calculate(ay_2026)
    print(f"公元2026年(69043): 会={res_2026.hui_name}, 运={res_2026.yun_global}, 世={res_2026.shi_global}({res_2026.shi_name}), 年序={res_2026.year_in_shi}, 干支={res_2026.ganzhi}")
    assert res_2026.ganzhi == "丙午", "公元2026年必须为丙午年!"
    assert res_2026.ce_year == 2026, "必须对应公元2026年!"

    print("皇极经世数理引擎单元测试全部通过!")

模块七:工程实现采信决策汇总表(系统规约终审)

规则项 核心考辨与注家分歧 工程实现采信决策(写死标准)
单位制进位 12与30交替嵌套(元12会、会30运、运12世、世30年)。 写死算法进位矩阵,支持大数秒级精准双向转换。
四正卦去取 乾坤坎离是否参与值运值世。 坚决去除四正卦,以圆图六十卦三百六十爻配周天运数。
会卦标准 十二消息卦派(张行成/王植) vs 圆图平分派(祝泌)。 采信十二辟卦/消息卦(子复、丑临、寅泰、巳乾、午姤、戌剥、亥坤)。
值运卦规则 六十卦三百六十爻配360运 vs 祝泌挂一变卦。 采信圆图六十卦爻值运法:GuaIdx = (Y-1)//6,YaoIdx = (Y-1)%6 + 1。
值世卦规则 值运卦动爻生变卦分统12世 vs 祝泌统宗世卦。 采信值运卦动爻生变卦分统12世(王植《皇极经世书解》法)。
值年卦规则 六十花甲一对一顺配圆图六十卦 vs 候卦五年一爻动。 采信六十花甲顺配圆图六十卦法,保证每年有明确独立主卦。
开物闭物窗口 寅会中惊蛰(第27000年)开物,戌会中立冬(第113400年)闭物。 硬编码窗口参数:有效生命期为中间 8 会共 86,400 年。
声音律吕 天声地音十六位反切矩阵。 作为外围辅助音韵模块,主干引擎仅提供四声量化接口。

《皇极经世》声音律吕唱和·技术规格书

皇极经世第四体系:声音律吕唱和数理规格书(初稿)

文档性质:皇极经世声音律吕唱和体系(“皇极第四体系”)数理结构全息调研报告与程序实现规格书
学术基准:


导论:为何称“声音唱和”为皇极第四体系?

在北宋邵雍所构建的宏大宇宙象数模型中,《皇极经世》并非仅是一部编年史或易学占筮书,而是一个由四大对偶层级构成的全息统一场模型:

graph TD
    subgraph 天之气数(历法经天·时间维度)
        Sys1["第一体系:以元经会<br/>(12会·开物闭物·129,600年演化大周期)"]
        Sys2["第二体系:以会经运<br/>(360运·运卦与世卦状态机·国运流转)"]
        Sys3["第三体系:以运经世、以世经年<br/>(4320世·甲子编年·值年六十卦)"]
    end

    subgraph 地之物数(声律经物·空间与形器维度)
        Sys4["第四体系:声音唱和经万物<br/>(天声地音·平上去入唱开发收闭·289,816,576变化通数)"]
    end

    Sys1 --> Sys2
    Sys2 --> Sys3
    Sys1 -.->|分形同构:开物闭物 vs 日出寅入戌| Sys4
    Sys2 -.->|数理对称:气数129,600 vs 声数30,720| Sys4
    Sys3 -.->|易占投影:四声起卦 平1上2去3入4| Sys4

第一章 体系源流考订与底本辨伪

1.1 篇卷编排与宋清考订

根据邵伯温《皇极经世系述》与清代王植《皇极经世书解》之详考:

  1. 全书十二卷之体裁:
    • 卷一至六:元会运世编年之数(前三体系,以元经会、以会经运、以运经世);
    • 卷七至十:声音律吕之数(第四体系,平上去入四声,共十六篇);
    • 卷十一至十二:观物内篇与外篇(阐发二数之哲学总纲,如易之《系辞》)。
  2. 蔡元定(西山)提纲三十二图:
    • 南宋朱熹高足蔡元定作《皇极经世指要》,将声音部分归纳为三十二图(平上去入各八图)。西山指出:邵雍声音之学“非但以虚数相乘,盖有声者即有字,特邵子未及枚举”,确立了声音律吕图为音韵学与物理声学双重模型的地位。
  3. 明代黄畿与三千八百四十图:
    • 明代黄畿《皇极经世书传》将十六篇细分展开,平上去入各 960 图,全书共展开为 3,840 图。每图以三十二字为阵,涵盖中古切韵音系之全量音节。

1.2 辨伪:坚决芟汰南宋祝泌“声音配卦”之伪法

在文献传承中,南宋祝泌作《皇极经世书钤》,擅自将六十四卦卦爻及术家“天门地户人方鬼路”硬套入声音图谱,导致后世注家多所惑乱(明代黄畿本亦误收)。 清代考据巨擘王植在《书解·卷四》中展开了极为深刻的辨伪考据,确立了工程采信标准:

“配卦之说,有是有非。元会运世,原因一岁以推一元之数,邵子既以三百六十卦当一年、以四正卦当闰,则以卦配年乃自然之理数……若声音篇亦配以卦,则牵强夫离,与术家天门地户人方鬼路之妄说相出入! 瑞节黄氏以为出于祝氏钤,而邵子未言,西山亦未用,则非邵子之意可知。今一切芟之,以复其初!”

工程采信准则:本项目声音引擎绝不引入六十四卦与八宫杂卦数据结构,彻底恪守邵雍原生以“天声(日月星辰)唱地音(水火土石)”之四象纯数理代数模型。


第二章 声音律吕四象数理基模

声音唱和体系以天地四象为基石,将自然物理声响与汉语言音韵结构实现了一一对应的数学编码。

2.1 天声体系(天之四象 · 主动 · 律天而唱)

天统乎体,声为阳,一之倡也。天声以字为主,对应天之四象,产生中古汉语四声:

天之四象 天体代表 四声类别 物理机理 辟翕极性 对应节气 基础字目(声母代表)
太阳 日 平声 清扬平舒 平之辟 / 平之翕 春(发生) 多、良、千、刀、妻、宫、心...
太阴 月 上声 高拔升越 上之辟 / 上之翕 夏(盛大) 可、火、宰、每、两、广、井...
少阳 星 去声 峻烈直去 去之辟 / 去之翕 秋(收敛) 个、化、爱、退、向、放、暗...
少阴 辰 入声 遏绝急促 入之辟 / 入之翕 冬(闭藏) 舌、八、物、割、月、足、没...

2.2 地音体系(地之四象 · 受动 · 吕地而和)

地分乎用,音为阴,二之和也。地音以响为主,对应地之四象,产生口腔发音口态:

地之四象 地质代表 口腔口态 物理机理 清浊极性 对应季节 基础韵目(韵母代表)
太柔 水 开音 口门大启(开口呼) 开之清 / 开之浊 春(先闭后开) 古、黑、安、夫、卜、东、乃...
太刚 火 发音 声气向外舒发(齐齿呼) 发之清 / 发之浊 夏(纯开) 口、黄、五、吾、步、兑、自...
少柔 土 收音 口势渐拢内敛(合口呼) 收之清 / 收之浊 秋(先开后闭) 甲、巧、花、华、瓦、牙、父...
少刚 石 闭音 敛吻撮聚闭绝(撮口呼) 闭之清 / 闭之浊 冬(闭塞无声) 闭而不发,声歇于冬

第三章 进退算子与体用数论(数理核心)

《观物篇六十一》揭示了邵雍宇宙代数学中最为惊艳的**“进退体用算子”**:

3.1 阳刚与阴柔之体数

3.2 进退算子导出用数(112 与 152)

邵子曰:“进太阳少阳太刚少刚之体数,退太阴少阴太柔少柔之体数,是谓阳刚之用数;进太阴少阴太柔少柔之体数,退太阳少阳太刚少刚之体数,是谓阴柔之用数。”


第四章 唱和配数与代数矩阵(变化通数)

天声与地音通过两级张量积相乘,层层导出万物变化通数:

4.1 第一级唱和:变数(动数)与化数(植数)

天以声唱地,地以音和天。二者交错相乘,产生第一级宇宙生物离散模数:

  1. 变数(日月星辰之变数 · 动数):
    • 阳刚之用数(天声 112)唱阴柔之用数(地音 152): 变数 (动数) = 112 * 152 = 17,024
    • 主飞禽走兽之动物,赋其性情。
  2. 化数(水火土石之化数 · 植数):
    • 阴柔之用数(地音 152)和阳刚之用数(天声 112): 化数 (植数) = 152 * 112 = 17,024
    • 主草木百卉之植物,凝其形体。

4.2 第二级唱和:动植变化通数(289,816,576)

变数与化数再次全息唱和(动植再唱和),形成宏观物理宇宙之终极离散状态总数: 变化通数 = 17,024 * 17,024 = 289,816,576 即:二亿八千九百八十一万六千五百七十六!

《观物篇六十一》赞曰:

“日月星辰水火土石之变化通数二万八千九百八十一万六千五百七十六,谓之动植通数。暑变飞走草木之性,寒变飞走草木之情,昼变飞走草木之形,夜变飞走草木之体……夫分阴分阳,分柔分刚者,天地万物之谓也。备天地万物者,人之谓也。”

4.3 基础单音节细分唱和比率

在具体反切声韵中,实操按七声九音交错:


第五章 声音体系与元会运世体系的宏大衔接

邵雍的声音体系绝非孤立的语音学,而是与元会运世在数学拓扑上完全同构的宇宙全息分形:

5.1 历法“开物闭物”与声律“日出寅入戌”的分形同构

在第一体系(元会)与第四体系(声音)之间,存在着惊人的数学对称性:

宇宙观测维度 第一体系:历法经天(元会大运) 第四体系:声律经物(声音律吕) 数理同构本源
周期起点 混沌未分于子中,一阳初动(复卦) 冬至之元,五音之宫,六律黄钟居北 体之所起(冬至元)
显相激活(开物) 寅会之中(第 27,000 年),天地交泰,草木人物始萌 日出寅时(平旦),声律萌发,开发音启 阳气出地,数始显行
有效繁衍期 寅、卯、辰、巳、午、未、申、酉、戌(8会半),文明活跃期 86,400 年 寅至戌(9个时辰 / 70刻),生物之数 264 日,天声 7、地音 9 运行 阳数显达,动植滋长
收敛归隐(闭物) 戌会之中(第 113,400 年),万物凋零,天地闭物 日入戌时(黄昏),目无所见,闭塞无声 阳入于地,数不行
冰封停歇期 亥、子、丑三会,混沌寂然,无生命迹象(43,200 年) 亥、子、丑三时,日入于地,数隐不见(3个时辰) “非数不行,有数不见”

《观物篇第十》明言:“正音律数行至于七而止者,以夏至之日出于寅而入于戌,亥子丑三时则日入于地而目无所见,此三数不行者,所以比于三时也。故生物之数亦然,非数之不行也,有数而不见也。”
结论:声音律吕在一天之内的发散与收敛,与元会运世在十二万九千六百年中的开物与闭物,遵循完全相同的比例常数(2/3 显行,1/3 隐闭)!

5.2 汉语言音韵与梅花易数(字占)的深层映射

在梅花易数体系中,有一条广为人知但前人鲜能索解的规则:四字至十字起卦,按平上去入四声调声,平为1、上为2、去为3、入为4。 本规格书从皇极第四体系彻底解开了该规则的本体论根源:

  1. 平声属日(太阳,阳之阳,先天数1);
  2. 上声属月(太阴,阴之阳,先天数2);
  3. 去声属星(少阳,阳之阴,先天数3);
  4. 入声属辰(少阴,阴之阴,先天数4)。
    梅花字占调声法,正是邵雍皇极第四体系天声四象在应用易学中的一阶直接降维投影!

第六章 程序实现规格与数据结构设计

为将皇极第四体系落地为现代工业级代码,制定以下数据结构与计算规范:

6.1 数据结构定义(Python / Pydantic 模型)

# coding: utf-8
from dataclasses import dataclass
from typing import List, Dict, Optional
from enum import Enum

class TianShengTone(Enum):
    PING = "平"  # 太阳 · 日
    SHANG = "上" # 太阴 · 月
    QU = "去"    # 少阳 · 星
    RU = "入"    # 少阴 · 辰

class DiYinMouth(Enum):
    KAI = "开"   # 太柔 · 水
    FA = "发"    # 太刚 · 火
    SHOU = "收"  # 少柔 · 土
    BI = "闭"    # 少刚 · 石

@dataclass(frozen=True)
class TianShengEntity:
    index: int               # 1 ~ 16
    char: str                # 代表汉字(如 多, 良, 千)
    tone: TianShengTone      # 平 / 上 / 去 / 入
    pishi: str               # 辟 / 翕
    is_usable: bool          # 是否在用数 (前7位为True, 虚位为False)

@dataclass(frozen=True)
class DiYinEntity:
    index: int               # 1 ~ 16
    char: str                # 代表汉字(如 古, 黑, 安)
    mouth: DiYinMouth        # 开 / 发 / 收 / 闭
    qingzhuo: str            # 清 / 浊
    is_usable: bool          # 是否在用数 (前9位为True, 虚位为False)

@dataclass(frozen=True)
class HuangjiSoundHarmonicResult:
    tian_sheng: TianShengEntity
    di_yin: DiYinEntity
    is_harmonic: bool        # 是否有效交唱 (非虚位)
    tian_chang_bian: int     # 天唱变数 (7 * 152 = 1064 中的贡献位)
    di_he_hua: int           # 地和化数 (9 * 112 = 1008 中的贡献位)
    tong_shu: int            # 动植变化通数 (289,816,576)

6.2 核心守恒不变式测试断言(Invariant Assertions)

在任何实现代码中,必须硬编码通过以下数论不变式:

def test_huangji_sound_invariants():
    # 1. 体数与用数守恒
    TI_YANG = (10 + 10 + 10 + 10) * 4  # 160
    TI_YIN = (12 + 12 + 12 + 12) * 4   # 192
    assert TI_YANG == 160
    assert TI_YIN == 192
    
    YONG_YANG = TI_YANG - (12 * 4)     # 160 - 48 = 112
    YONG_YIN = TI_YIN - (10 * 4)       # 192 - 40 = 152
    assert YONG_YANG == 112
    assert YONG_YIN == 152
    
    # 2. 动植全数守恒
    ALL_NUMBER = TI_YANG * TI_YIN
    assert ALL_NUMBER == 30720
    
    # 3. 动数(变数)与植数(化数)守恒
    DONG_SHU = YONG_YANG * YONG_YIN
    ZHI_SHU = YONG_YIN * YONG_YANG
    assert DONG_SHU == 17024
    assert ZHI_SHU == 17024
    
    # 4. 万物变化通数守恒
    TONG_SHU = DONG_SHU * ZHI_SHU
    assert TONG_SHU == 289816576  # 二亿八千九百八十一万六千五百七十六

结论与后续演进路线

本规格书系统厘清了《皇极经世》第四体系的理论渊源、数理基模与计算法则:

  1. 澄清了声音唱和体系作为**“空间物类场”与元会运世“时间历史场”**对偶并立的崇高学术地位;
  2. 坚决遵从王植考订,剔除了祝泌附会的六十四卦与八宫杂说,确立了四象数理纯粹性;
  3. 证明了“夏至日出寅入戌”与“元会开物于寅闭物于戌”的分形同构,为易学全息理论提供了严密的数理逻辑支撑;
  4. 完成了数学公式、张量积递推与数据结构的工业化定义,为未来构建“皇极全息声音汉字音律引擎”奠定了完备的技术底座。