在精益 class 定义中扩展或推断 (PID / UFD)

extending or inferring (PID / UFD) in a Lean class definition

为什么mathlib对UFD的定义是这样的:

class unique_factorization_domain (α : Type*) [integral_domain α] :=
(factors : α → multiset α)
(factors_prod : ∀{a : α}, a ≠ 0 → (factors a).prod ~ᵤ a)
(prime_factors : ∀{a : α}, a ≠ 0 → ∀x∈factors a, prime x)

(求积分域结构按类型class推断)但是它对PID的定义是这样的:

class principal_ideal_domain (α : Type*) extends integral_domain α :=
(principal : ∀ (S : ideal α), S.is_principal)

扩展积分域结构?有什么不同?老结构命令有关系吗?

我对 discussion on the Lean chat 的印象是,由于与类型 class 推理相关的微妙原因,扩展 class 可能更好,因此 UFD 的定义可能需要被重构。