유도 유도 란 무엇입니까?


11

유도 유도 란 무엇입니까 ?

내가 찾은 리소스는 다음과 같습니다.

처음 두 참조는 나에게 너무 짧고 후자 두 개는 너무 기술적입니다. 평신도의 용어로 설명 할 수 있습니까? Agda 코드가 있으면 더 좋습니다.


네 번째 인용에는 Agda 코드가 있습니다.
Gilles 'SO- 악마 그만

물론, 엄청난 양의 코드를 읽는 것은 매우 어려운 일입니다. 그리고 1 또는 2 개의 예제를 보는 것만으로도 매우 쉽습니다.
盛安安

답변:


13

보충 2016-10-03 : 유도 유도와 유도 재귀를 혼합했습니다 (처음으로하지는 않았습니다!). 혼란에 대한 사과드립니다. 두 가지를 모두 다루기 위해 답변을 업데이트했습니다.

나는 Forsberg & Setzer의 논문 에서 유도 귀납적 정의에 대한 유한 한 axiomatisation 에서 설명을 발견했다 .

유도 재귀

유도 - 재귀 적 정의는 우리가 형 정의하는 하나 및 유형의 가족 B : T y를 P는 전자를 특별한 방법으로 동시에 :AB:AType

  1. A 는 유도 형으로 정의됩니다.
  2. BA 재귀로 정의됩니다.
  3. 결정적 으로 A 의 정의는 B 사용할 수 있습니다 .

세 번째 요구 사항이 없으면 먼저 A 정의한 다음 별도로 B 정의 할 수 있습니다.

다음은 아기 예입니다. 다음 생성자를 갖도록 A 귀납적으로 정의하십시오 .

  • a:A
  • :(x:AB(x))A

유형 패밀리 B 는 다음에 의해 정의됩니다.

  • B(a)=bool
  • B((x,f))=nat

A

a:A.
B(a)bool
(a,false)
(a,true)
AB((a,false))=B((a,true))=natn:nat
((a,false),n):A
((a,true),n):A
B(((a,true),n))=nat
m:nat
(((a,true),n),m):A
(((a,false),n),m):A
A

유도 유도

AB:AType

  1. A
  2. BA
  3. AB

B

B(c())=
c()ABB

A

  • a:A
  • :(x:AB(x))A

B

  • Tru:B(a)
  • Fal:B(a)
  • x:Ay:B(x)Zer:B((x,y))
  • x:Ay:B(x)z:B((x,y))Suc(z):B((x,y))

BB(a)B((x,y))


도대체 누군가가 그러한 데이터 유형을 정의하는 이유 D :
盛安安

7
유도 귀납적 유형이 무엇인지 가르치기 위해. 나는 당신에게 실제적인 예, 즉 유형 우주를 줄 수는 있지만 혼란 스러울 것입니다.
Andrej Bauer

3
@AndrejBauer 이것은 나에게 유도 재귀처럼 보입니다. 유도 유도는 유형 패밀리가 유도 유형으로 정의 된 경우 입니다.
gallais

2
죄송합니다. 내가 고칠 게
Andrej Bauer

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.