我的Coq证明有问题,希望得到一些帮助和指导。我的定义如下:
Inductive Architecture : Set :=
| Create_Architecture (Arch_Name: string)(MyComponents: list Component)
(MyConnections: list Connector)
with
...
with
Connector : Set :=
| Create_Connector (Con_Name:string) (client: Component)(server:Component)
我想说“组件术语必须是连接的客户端或服务器;但不能两者兼而有之。”我已经提出以下内容作为Coq中上述内容的表示(基于我上面的定义):
(forall con:Connector, forall c:Component, In con (MyConnections x) ->
(c = (client con) /\ c <> (server con)) \/ (c <> (client con) /\ c = (server con)))
然而,我不确定这是否正确(是吗?),因为当我得到证据时,我会陷入困境
5 subgoals
con : Connector
c : Component
H0 : Connection1 = con
______________________________________(1/5)
c = HotelRes
HotelRes
的类型确实是Component(在这种情况下,HotelRes
是连接的客户端),但是,由于这不是假设的集合,我不能使用某些东西喜欢精确或自动战术。
我怎么能继续这样的证明?
答案 0 :(得分:2)
从你所展示的(部分)定义来看,显然没有什么能阻止Component既是客户端又是连接器中的服务器,所以我不明白你想要如何证明它?
我的猜测是你的定义没有正确地捕捉到你想要建模的内容,但如果没有看到它们(完全定义或背后的想法),就不可能多说。