在尝试解决(How) can I define partial coercions in Coq?时,我发现规范结构分辨率与强制插入不相交:
Structure foo := { ty1 : Type ; ty2 : Type }.
Canonical Structure default_foo ty := {| ty1 := option ty ; ty2 := ty |}.
Definition Some_nat := @Some nat.
Coercion Some_nat : nat >-> option.
Check Some 0 : ty1 _.
Check 0 : ty1 _. (* fails *)
是否有不同的方式来调用规范结构或强制使它们交错?更一般地说,在Coq中统一/类型检查算法中如何使用规范结构解析和强制插入?