게시판 인덱스

 
 FAQFAQ   검색검색   멤버리스트멤버리스트   사용자 그룹사용자 그룹   사용자 등록하기사용자 등록하기 
 개인 정보개인 정보   비공개 메시지를 확인하려면 로그인하십시오비공개 메시지를 확인하려면 로그인하십시오   로그인로그인 

Hw3 ex3 관련

 
이 게시판은 잠겼으므로 글을 올리거나, 답변을 하거나 수정을 할 수 없습니다   이 주제는 잠겼으므로 답변을 하거나 수정을 할 수 없습니다     게시판 인덱스 -> 4541.664A Program Analysis (Spring 2009)
이전 주제 보기 :: 다음 주제 보기  
글쓴이 메시지
crash27



가입: 2009년 3월 14일
올린 글: 19

올리기올려짐: 2009년3월31일 18:08    주제: Hw3 ex3 관련 인용과 함께 답변

간단한 실행의 예를 볼수 없을까요?

입력과 출력의 예만 있어도 좋을 것 같아요 ^^;;



특히
정의할 fix에서
type t= D.t 로 되는데..
이것의 정의가 어떻게 되는지 모르겠네요

CPO에 대해서 어떤식으로 입력값으로 주어야할지 감이 안오네요
예 하나만 올려주세요 ^^
위로
사용자 정보 보기 비밀 메시지 보내기
공순호



가입: 2005년 9월 29일
올린 글: 363
위치: 302동 312-2호

올리기올려짐: 2009년3월31일 19:10    주제: 인용과 함께 답변

정수 집합들의 집합과, 부분집합을 이용하면 CPO를 만들 수 있습니다.

코드:

module OrderedInt : Set.OrderedType with type t = int =
struct
  type t = int
  let compare = compare
end

module IntSet = Set.Make(OrderedInt)

module IntSetCPO : CPO  with type t = IntSet.t =
struct
  type t = IntSet.t
  exception NoLUB
  let order (x, y) = IntSet.subset x y
  let lub (x, y) = IntSet.union x y
  let bottom = IntSet.empty
end


이것을 Fix functor에 넣어서 나온 module을 F라고 하고
코드:

module F = Fix(IntSetCPO)


정수 집합 x를 받아서 {3}과 합집합 하는 f를 정의하고
코드:

let f x = IntSet.union x (IntSet.singleton 3)


그것의 fixedpoint를 구해서
코드:

let fixedpoint = F.fix f


내용물을 살펴보면
코드:

let u = IntSet.elements fixedpoint


그 결과는 {3}이 됩니다.
_________________
- soon@ropas
위로
사용자 정보 보기 비밀 메시지 보내기 글 올린이의 웹사이트 방문
crash27



가입: 2009년 3월 14일
올린 글: 19

올리기올려짐: 2009년3월31일 19:11    주제: 인용과 함께 답변

감사합니다!!!
위로
사용자 정보 보기 비밀 메시지 보내기
crash27



가입: 2009년 3월 14일
올린 글: 19

올리기올려짐: 2009년4월1일 16:43    주제: 인용과 함께 답변

좋은 예제를 주셔서 이해하고 잘 풀고 있는 거 같습니다.

다만 문제 지문에는 exception에 대한 내용이 없는데

LUB가 없을 경우에 대해서 잘 이해가 안됩니다.

CPO module 선언시에 lub을 정의 안하게 되면 module 자체가 정의가 안되는데요..

어떤 경우가 NoLUB 과 같은 익셉션이 나오는 경우 일까요?
위로
사용자 정보 보기 비밀 메시지 보내기
공순호



가입: 2005년 9월 29일
올린 글: 363
위치: 302동 312-2호

올리기올려짐: 2009년4월2일 0:46    주제: 인용과 함께 답변

일단 말씀드릴 것은,

숙제에서 요구하는 것은 functor Fix를 정의하는 것이지,

CPO를 정의하라는 것이 아니라는 점입니다.

----------------------

CPO를 정의할 때에 LUB 함수를 정의해야하는데요,

임의의 CPO의 두 원소 d1, d2에 대해서 LUB (d1, d2)가 정의되지 않을 수도 있습니다.

예를 들면 자연수 집합 N에 bottom을 추가해서 lift한 CPO를 생각하면

LUB (1, 2) 는 정의되지 않습니다.

이러한 경우에는 적절한 exception을 발생시킬 필요가 있겠습니다.

----------------------

하지만 여러분이 작성한 Fix functor의 fix함수를 사용할 때에는

두 가지 가정이 있습니다.

1) CPO가 주어지고

2) f는 연속 함수 입니다.

f는 연속 함수이기 때문에 {\bot, f(\bot), f(f(\bot)), ... } 는 체인이고,

이들 사이에서는 주어진 CPO는 언제나 lub가 잘 정의되도록 되어 있습니다.

따라서 Fix의 인자로 받는 CPO의 lub를 이용할 때에 exception이 발생할 일은 없고,

이러한 것들을 염려할 필요도 없습니다.
_________________
- soon@ropas
위로
사용자 정보 보기 비밀 메시지 보내기 글 올린이의 웹사이트 방문
이전 글 표시:   
이 게시판은 잠겼으므로 글을 올리거나, 답변을 하거나 수정을 할 수 없습니다   이 주제는 잠겼으므로 답변을 하거나 수정을 할 수 없습니다     게시판 인덱스 -> 4541.664A Program Analysis (Spring 2009) 시간대: GMT + 9 시간(한국)
페이지 11

 
건너뛰기:  
새로운 주제를 올릴 수 없습니다
답글을 올릴 수 없습니다
주제를 수정할 수 없습니다
올린 글을 삭제할 수 없습니다
투표를 할 수 없습니다


Powered by phpBB 2.0.21-7 (Debian) © 2001, 2005 phpBB Group
Translated by kss & drssay