내 주장이 내가 확인하려는 것을 실제로 확인하는지 어떻게 확신 할 수 있습니까?

로저 코스텔로

아래는 이메일 주소록의 Alloy 모델입니다. 주소록의 각 이름은 이름 또는 주소에 매핑됩니다.

결국 각 이름이 주소 (예 : Family-> Tom-> Tom_addr)에 매핑되기를 원합니다. 나는 이것을 구현하기 위해 사실을 만들었습니다. 내 사실이 정확한지 확인하기 위해 어설 션을 만들었습니다.

나는 주장에 무엇을 넣을지 오랫동안 의아해했다. 이상하게도 "fact"섹션에 배치 한 표현이 assert에 배치하기에 적합한 표현 인 것 같습니다. 그러나 그 주장은 단지 사실을 반복하는 것일뿐 도움이되지 않습니다. 그래서 저는 주장 할 다른 것을 만들었습니다.

"assert"섹션에 배치 한 내용이 실제로 모든 이름이 결국 주소에 매핑되는지 확인한다고 전적으로 확신하지는 않습니다.

질문 :

"사실"섹션에서 각 이름이 결국 주소에 매핑되는 제약 조건을 올바르게 표현 했습니까?

"assert"섹션에서 모든 이름이 결국 주소에 매핑되도록하는 더 좋은 방법이 있습니까?

sig Addr {}

sig Name {
    address: some Addr + Name
}

fact {
    // No cycles.
    no n: Name | n in n.^address

    // All names eventually map to an Addr.
    // Here's how I implemented the constraint:
    // There is no name n that is mapped-to (i.e., m -> n), 
    // which does not map-to something (i.e., n -> p).
    no n: Name {
        n in univ.address
        n not in address.univ
    }
}

assert All_names_eventually_map_to_an_Addr {
    all n: Name | some n.^address & Addr
}

check All_names_eventually_map_to_an_Addr
ivcha

사실을 반복하는 주장은 실제로 유용하기 때문에 원하지 않는 것입니다. (가정 하에서 속성을 확인 / 증명하는 것을 생각해보십시오. (Q 및 P) 형식의 의미는 P 가 모든 PQ에 대해 명확하게 유지됨을 의미 합니다.)

즉, 속성 :

모든 이름은 결국 주소에 매핑됩니다.

코드 스 니펫에 제공된대로 올바르게 표현되어야합니다. (의 인스턴스에 대해 Address관계 address가 정의되지 않았으므로 클로저는의 한 요소에만 매핑 할 수 있습니다 Address.)

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

내 반응 확장 쿼리가 수행하는 작업을 어떻게 확인할 수 있습니까?

분류에서Dev

주어진 연결이 내 VPN을 통과하는지 어떻게 확인할 수 있습니까?

분류에서Dev

웹 브라우저에서 내 로컬 IP 주소가 유출되는 것을 어떻게 확실하게 방지 할 수 있습니까?

분류에서Dev

내 시스템이 ~ / .screenrc 파일을 사용하는지 어떻게 확인할 수 있습니까?

분류에서Dev

내 하드 디스크가 꽉 찼습니다. 무엇이 공간을 차지하고 있는지 어떻게 확인할 수 있습니까?

분류에서Dev

내 함수가 실제로 재귀 적이라는 것을 Coq에 어떻게 확신시킬 수 있습니까?

분류에서Dev

내 함수가 파이프의 입력으로 호출되는지 어떻게 확인할 수 있습니까?

분류에서Dev

beautifulsoup을 사용하여 html의 내용이 false 또는 true로 설정되었는지 어떻게 확인할 수 있습니까?

분류에서Dev

함수에 대한 재귀 호출이 내가 생각하는 것과 같은지 어떻게 확인할 수 있습니까?

분류에서Dev

내 스크립트가 bash 또는 dash로 실행 중인지 어떻게 확인할 수 있습니까?

분류에서Dev

내 스크립트가 bash 또는 dash로 실행 중인지 어떻게 확인할 수 있습니까?

분류에서Dev

내 buildah 컨테이너 이미지가 Tekton Task에서 실제로 생성되었는지 어떻게 확인할 수 있습니까?

분류에서Dev

내 NTP 데몬이 PPS를 지원하는지 어떻게 확인할 수 있습니까?

분류에서Dev

jQuery를 사용하여 모든 이미지가 동적 DOM 구조 내에로드되었는지 어떻게 확인할 수 있습니까?

분류에서Dev

Agda의 우주 검사기에서 내가하는 일이 근거가 있다는 것을 어떻게 확신시킬 수 있습니까?

분류에서Dev

내 함수가 호출되고 실행되고 있는지 어떻게 확인할 수 있습니까?

분류에서Dev

내 확장을 어떻게 복원 할 수 있습니까?

분류에서Dev

센트리가 내 예외를 캡처하고 있는지 어떻게 확인할 수 있습니까?

분류에서Dev

인증서가 키의 유효성을 검사하는지 mbedtls로 어떻게 확인할 수 있습니까?

분류에서Dev

내 컴퓨터에서 어떤 포트가 열려 있는지 어떻게 확인할 수 있습니까?

분류에서Dev

루프 내부로 돌아 가기-루프 외부에 있는지 어떻게 확인할 수 있습니까?

분류에서Dev

내 constexpr 표현식이 실제로 컴파일 타임에 수행되었는지 어떻게 확인할 수 있습니까?

분류에서Dev

내 앱에 iCloud 데이터가 있는지 어떻게 확인할 수 있습니까?

분류에서Dev

PHP로 페이지에 이미지 / 링크가 존재하는지 어떻게 확인할 수 있습니까?

분류에서Dev

Iterator에서 T로 캐스트하는 것이 안전한지 어떻게 확인할 수 있습니까?

분류에서Dev

내 DNS 서버가 작동하는지 어떻게 확인할 수 있습니까?

분류에서Dev

키로거 / 트로이 목마 / 내 개인 파일을 웹에 업로드하는 무언가가 없는지 어떻게 완전히 확인할 수 있습니까?

분류에서Dev

Ruby DateTime이 주어지면 현재 작업 주에서 하루를 나타내는 지 어떻게 확인할 수 있습니까?

분류에서Dev

현재 날짜가 1 년을 포함하지 않는 두 날짜 범위 내 / 외인지 어떻게 확인할 수 있습니까?

Related 관련 기사

  1. 1

    내 반응 확장 쿼리가 수행하는 작업을 어떻게 확인할 수 있습니까?

  2. 2

    주어진 연결이 내 VPN을 통과하는지 어떻게 확인할 수 있습니까?

  3. 3

    웹 브라우저에서 내 로컬 IP 주소가 유출되는 것을 어떻게 확실하게 방지 할 수 있습니까?

  4. 4

    내 시스템이 ~ / .screenrc 파일을 사용하는지 어떻게 확인할 수 있습니까?

  5. 5

    내 하드 디스크가 꽉 찼습니다. 무엇이 공간을 차지하고 있는지 어떻게 확인할 수 있습니까?

  6. 6

    내 함수가 실제로 재귀 적이라는 것을 Coq에 어떻게 확신시킬 수 있습니까?

  7. 7

    내 함수가 파이프의 입력으로 호출되는지 어떻게 확인할 수 있습니까?

  8. 8

    beautifulsoup을 사용하여 html의 내용이 false 또는 true로 설정되었는지 어떻게 확인할 수 있습니까?

  9. 9

    함수에 대한 재귀 호출이 내가 생각하는 것과 같은지 어떻게 확인할 수 있습니까?

  10. 10

    내 스크립트가 bash 또는 dash로 실행 중인지 어떻게 확인할 수 있습니까?

  11. 11

    내 스크립트가 bash 또는 dash로 실행 중인지 어떻게 확인할 수 있습니까?

  12. 12

    내 buildah 컨테이너 이미지가 Tekton Task에서 실제로 생성되었는지 어떻게 확인할 수 있습니까?

  13. 13

    내 NTP 데몬이 PPS를 지원하는지 어떻게 확인할 수 있습니까?

  14. 14

    jQuery를 사용하여 모든 이미지가 동적 DOM 구조 내에로드되었는지 어떻게 확인할 수 있습니까?

  15. 15

    Agda의 우주 검사기에서 내가하는 일이 근거가 있다는 것을 어떻게 확신시킬 수 있습니까?

  16. 16

    내 함수가 호출되고 실행되고 있는지 어떻게 확인할 수 있습니까?

  17. 17

    내 확장을 어떻게 복원 할 수 있습니까?

  18. 18

    센트리가 내 예외를 캡처하고 있는지 어떻게 확인할 수 있습니까?

  19. 19

    인증서가 키의 유효성을 검사하는지 mbedtls로 어떻게 확인할 수 있습니까?

  20. 20

    내 컴퓨터에서 어떤 포트가 열려 있는지 어떻게 확인할 수 있습니까?

  21. 21

    루프 내부로 돌아 가기-루프 외부에 있는지 어떻게 확인할 수 있습니까?

  22. 22

    내 constexpr 표현식이 실제로 컴파일 타임에 수행되었는지 어떻게 확인할 수 있습니까?

  23. 23

    내 앱에 iCloud 데이터가 있는지 어떻게 확인할 수 있습니까?

  24. 24

    PHP로 페이지에 이미지 / 링크가 존재하는지 어떻게 확인할 수 있습니까?

  25. 25

    Iterator에서 T로 캐스트하는 것이 안전한지 어떻게 확인할 수 있습니까?

  26. 26

    내 DNS 서버가 작동하는지 어떻게 확인할 수 있습니까?

  27. 27

    키로거 / 트로이 목마 / 내 개인 파일을 웹에 업로드하는 무언가가 없는지 어떻게 완전히 확인할 수 있습니까?

  28. 28

    Ruby DateTime이 주어지면 현재 작업 주에서 하루를 나타내는 지 어떻게 확인할 수 있습니까?

  29. 29

    현재 날짜가 1 년을 포함하지 않는 두 날짜 범위 내 / 외인지 어떻게 확인할 수 있습니까?

뜨겁다태그

보관