import Spec.Courseware.Model.Primitives /-! # Element —— 课程内容的原子单位 ADR-0005:element 实例 = 一个 kind 标签 + 符合该 kind schema 的数据。把它编码成 依赖结构,使"数据必须匹配其 kind"成为类型层面的事实而非运行时校验。 -/ namespace Spec.Courseware variable (P : Primitives) /-- element 实例(`PINNED`, ADR-0005)。`data : P.ElementData kind` 由 `kind` 决定—— 无法构造数据与 kind 不符的 element,schema 合规由类型系统保证。ADR-0005 的 (a) 类 字段(逐字稿、重点圈划)落在具体 kind 的 `ElementData` 内,不出现在此通用结构上; 交互教具等"重型 kind"在此与例题、定理同构,仅 `kind` 不同,重实现在模型之外。 -/ structure Element where /-- 该 element 的 kind。 -/ kind : P.KindId /-- 符合 `kind` schema 的数据(类型随 `kind` 而变)。 -/ data : P.ElementData kind end Spec.Courseware