我是Coq的初学者。我想证明自然数上布尔相等的对称性。我已经应用了归纳和破坏命令,但是它不起作用。请指导我证明定理。
class EmpDict:
def __init__(self, data):
self.data = data
self.first_name = data.get('first_name')
self.age = data.get('age')
self.last_name = data.get('last_month')
def is_attr_available(self, attr):
return hasattr(self, attr) and getattr(self,attr)!=None
emp = {'first_name' : 'Tom', 'last_name' : 'Jose'}
a = EmpDict(emp)
print(a.is_attr_available('age'))
答案 0 :(得分:2)
在证明之前,先对n
进行归纳,然后对m
进行销毁:
Theorem beq_sym: forall n m : nat, beqnat n m = beqnat m n.
Proof.
induction n as [|n' IH]; destruct m; auto.
apply IH.
Qed.
要了解正在发生的事情:
induction n
,它为n = 0
和n = S n'
给出子目标。simpl
,以了解第一个match/with
的减少情况。m
进行一些操作以减少第二个match/with
。归纳是不必要的,因为您的beqnat
在n
上具有结构递归性(类型为Print beqnat
并寻找{struct n}
进行确认),而不是m
。因此,destruct m
就足够了。再次使用simpl
查看原因。beqnat
时需要归纳假设。