나는 Coq 증명에 문제가있어 도움이 필요합니다. 내가 말하고자하는이 Coq Proof를 진행하는 방법은 무엇입니까?
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)))
, 잘 모르겠어요 (그것을인가?) 때와 같이 이 세트에없는 때문에 내가 증거로, 내가 HotelRes
의 유형이 실제로 구성 요소입니다
5 subgoals
con : Connector
c : Component
H0 : Connection1 = con
______________________________________(1/5)
c = HotelRes
시점에 박히면서 얻을 그러나 (이 경우, HotelRes
는 연결의 클라이언트입니다) 가정, 나는 정확한 또는 자동 전술 같은 것을 사용할 수 없다.
어떻게 증명할 수 있습니까?
그것을 막는 것이 없습니다. 그러나 나는 그것이 실제로 사실임을 증명하고 싶다. 나는 몇 가지 연결 고리를 정의하고이 조건이 그것들을 위해 유지되고 있음을 증명하기를 원합니다. – zdot
그렇지만 구성 요소가 커넥터의 클라이언트 부분과 서버 부분 일 수 있다면 분명히 보조 정리의 반대 사례를 찾을 수 있으므로 증명할 수는 없습니다. 말이 돼? – akoprowski
아, 그럼 특정 아키텍처에 대한 증명을 원하십니까? 나는 당신의 원래 묘사에서 그것을 놓쳤다. 그렇게 쉬워야합니다. 그러나 실제로 보여주고있는 목표는 증명하기가 불가능한 것처럼 보입니다. 그래서 뭔가 잘못 될 것입니다. 도와 주려고 노력할 수도 있지만 작업 스크립트 (단순화 될 수도 있음)를 제공하면 더 쉬울 것입니다. – akoprowski