1
我想为二进制自然数(位列表)定义前驱函数。我想限制我的函数输入到被修剪的数字(没有前导零)并且是正数(所以,我不必担心零的前任)。重写相关函数
这是运营商pred
的定义:
Program Fixpoint pred (nat1: Nat) (H1: is_trim nat1 = True) (H2: is_pos nat1 H1 = True): Nat :=
match nat1 with
| Empt => _
| Fill Zer nat2 => Fill One (pred nat2 H1 H2)
| Fill One nat2 => Fill Zer nat2
end.
我的首要义务是如下:
nat1: Nat
H1: is_trim nat1 = True
H2: is_pos nat1 H1 = True
H3: Empt = nat1
______________________________________(1/1)
Nat
但是,我不知道如何解决它。
矛盾很明显在H2
。但是,因为它取决于H1
,所以我不能只用rewrite nat1
用Empt
,然后用(is_pos Empt H1)
用False
。
我该如何证明这一点?
另外,'dependent-types'应该是一个标签。 – user1494846
'dependent-type'(单数)是一个标签。 – sepp2k
我刚刚注意到这个目标是“微不足道的”。 (-_-')不过,我想知道如何通过手工解决它,以防我陷入类似但更复杂的情况。 – user1494846