문제

LCF 기반 정리의 일부 메커니즘이 있음을 들었습니다. 일부 기능만이 유형의 값을 만들 수있는 기능 만 허용합니다.나는 이것들이 추상 데이터 유형을 기반으로한다고 믿습니다.

누군가가 의사 코드에서 스케치 할 수 있습니까?(위의 경우 올바른 경우)

도움이 되었습니까?

해결책

여기에 이사벨에서 커널 (이사벨 / 순수한 파일 thm.ml)의 일부 생각과 코드가 있습니다 :

abstype thm = Thm of
 deriv *                        (*derivation*)
 {cert: Context.certificate,    (*background theory certificate*)
  tags: Properties.T,           (*additional annotations/comments*)
  maxidx: int,                  (*maximum index of any Var or TVar*)
  shyps: sort Ord_List.T,       (*sort hypotheses*)
  hyps: term Ord_List.T,        (*hypotheses*)
  tpairs: (term * term) list,   (*flex-flex pairs*)
  prop: term}                   (*conclusion*)
and deriv = Deriv of
 {promises: (serial * thm future) Ord_List.T,
  body: Proofterm.proof_body}
with
.

여기에 Paulson Book에서 ML의 인용문이 있습니다. 그가 말한 추상 데이터 유형에 대해서 :

모듈 형 구조로 인해 프로그램이 쉽게 이해할 수 있습니다. 더 나은 아직도, 모듈은 상호 교환 가능한 부품으로 사용되어야합니다. 하나의 모듈을 향상된 버전은 나머지 부분을 변경하지 않아도됩니다. 프로그램. 표준 ML의 추상 유형과 펑터는 우리 가이 목표를 달성하는 데 도움이 될 수 있습니다. 모듈은 내부 세부 사항을 나타낼 수 있습니다. 모듈이 교체 될 때, 다른 것 그러한 세부 사항에 의존하는 프로그램의 일부가 실패합니다. ML은 몇 가지를 제공합니다 타입을 숨기고 추상 유형 및 관련 작업을 선언하는 방법 표현.

이 파일을 사용할 수있는 추상 데이터 유형을 인스턴스화 할 수 없습니다 (해당 필드 + 함수). 이 기능을 구현하는 방법에 대한 문제는 언어에 의존하는 것입니다. 람다 - 미적분에서 그것을하고 싶다면 벤자민 피어스의 Tapl 책에서 나중 장에있는 것과 같아야합니다.

이에 대한 좋은 참고 자료는 여기 .

다른 팁

내가 올바르게 기억하면, 이는 존 해리슨의 핸드북의 5 장 또는 6의 6 장 또는 자동화 된 추론

Jon Sterling은 일부 노트 1 년 또는 2 개, 특히 Sequent Calculus를 사용하는 LCF 판독을 위해 특히.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 cs.stackexchange
scroll top