에서 모듈에 의한 사실을 다시 사용하려면 어떻게 합금에 다음과 같은 사양을 가지고 : 내 모델에서합금
sig A {}
sig Q{isA: one A}
fact {
all c1,c2:Q | c1.isA=c2.isA => c1=c2 // injective mapping
all a1:A | some c1:Q | c1.isA=a1 //surjective
}
위의 사실은 다른 서명 사이에 유사하게 반복합니다.
이module library/copy [A,Q]
fact {
all c1,c2:Q | c1.isA=c2.isA => c1=c2 // injective mapping
all a1:A | some c1:Q | c1.isA=a1 //surjective
}
그럼 난 벨으로 그것을 사용하려고 :
module family
open library/copy [Person,QP]
sig Person {}
sig QP{isA:Person}
run {} for 4
을하지만 합금은 "이름"사 불평 나는 다음과 같이 모듈을 만든 그래서 별도의 모듈로를 고려하려 " 찾을 수 없다." 모듈에.
내 접근 방식에 어떤 문제가 있습니까? 그리고 왜 합금이 불평합니까?
감사합니다,하지만 위의 해결책은 내가 QP2 말을 다른 서명을 정의하는 것이 불가능하다는 점에서 제한된다 * 사실 *을 QP와 QP2에 적용한다. 그렇게하기 위해서는 QP가 A와 Q를 확장 할 필요가 있습니다. Q는 합금에서 가능하지 않습니다! – qartal
맞습니다. 그게 제가 생각하기에 "개념적으로 이상적이지 않은"것입니다. –