///|
/// 示例 4 —— **库使用者**的最小闭环:只 import 本库的公开 API,不碰内部实现。
///
/// moon run examples/consumer
///
/// 对应参考 README 里的 `examples/consumer_demo/`:一个外部 `moon add` 使用者
/// 会写出来的东西。
fn main {
println("=== riantr/pyroduct · 库使用者示例 ===")
println("")
println("[主体状态机]")
println(" 状态数 = \{@sm.all_states().length()}")
println(" 阶段数 = \{@sm.all_phases().length()}")
println(
" 起点 / 终点 = \{@sm.initial().designation()} / \{@sm.terminal().designation()}",
)
println(" 主线长度 = \{@sm.genesis_path().length()}")
println(
" 宁静可达 = \{@sm.reachable(@sm.initial(), @sm.terminal())}",
)
println("")
println("[多主体]")
let me = @multi.subject(
1,
@multi.rendezvous(),
@multi.InterSubjective,
70,
70,
9,
)
let other = @multi.subject(2, @multi.rendezvous(), @multi.ChengRan, 80, 80, 9)
let claim : @multi.ValidityClaim = {
kind: @multi.Truthfulness,
phase: @multi.During,
}
let out = @multi.encounter(me, other, @multi.Theoretical, claim)
println(" 规则条数 = \{@multi.rules().length()}")
println(
" 一次遭遇 = 决断 \{out.verdict.label()}|可修订 \{out.revisable}",
)
println(" 甲 → = \{out.a.state.designation()}")
println(" 乙 → = \{out.b.state.designation()}")
println("")
println("[双层次社会交往模型]")
println(" 状态数 = \{@society.all_states().length()}")
println(" 迁移数 = \{@society.transitions().length()}")
println(" 不封闭 = \{@society.no_final_closure()}")
println(" 文本依据条数 = \{@society.basis().length()}")
println(" 起点 = \{@society.initial().designation()}")
}