当我证明一些定理时,我的目标随着我应用越来越多的策略而变化。一般来说,目标倾向于分成多个子目标,子目标更简单。在最后一点,Coq决定目标是被证明的。这个“经过验证”的目标是什么样子的?*)换句话说,当我最终应用reflexivity时,Coq只是说** Got it **而没有任何解释。有没有办法获得更多关于它实际做了什么的细节,或者为什么它决定这个目标
我可以定义以下归纳类型:| c1 : forall (A : Type), A -> T A
| c2 : T unit.但是,命令Check (c1 (T nat))在消息中失败:术语T nat的类型是Type@{max(Set, Top.3+1)},而它的类型是Type@{Top.3} (宇宙不一致)。我如何调整上述归纳定义,使c1 (T nat)不会造成宇宙不一致,并且不设置宇宙多态性?以下
我有以下类型的家庭:{-# LANGUAGE DataKinds #-}
type family*type instance WrapMaybes (S n) a = Maybe (WrapMaybes n a)
这在很大程度上如预期的那样工作以下通勤身份持有:WrapMaybes n (Maybe a) ~ Maybe (WrapMaybes n a