시스템 F

System F

시스템 F(다형 람다 미적분 또는 2차 람다 미적분)는 형식에 대한 보편적 정량화 메커니즘인 단순 형식 람다 미적분학을 도입하는 형식 람다 미적분이다.시스템 F는 프로그래밍 언어에서 파라메트릭 다형성을 공식화하여 하스켈, ML 등의 언어에 대한 이론적 기초를 형성하고 있으며, 논리학자이브 지라드(1972)와 컴퓨터 과학자 C에 의해 독자적으로 발견되었다. 레이놀즈(1974년).

단순히 입력된 람다 미적분학에는 항에 걸친 변수와 이들을 위한 바인더가 있는 반면, 시스템 F에는 유형에 대한 변수와 이들을 위한 바인더가 추가로 존재한다.일례로 신분함수가 어떤 형태든 A → A 형태를 가질 수 있다는 사실은 시스템 F에서 판단으로 공식화된다.

여기서 (는) 유형 변수다.대문자 은(는) 값 수준 함수에 사용되는 소문자 과는 반대로 형식 수준 함수를 나타내는 데 전통적으로 사용된다.(위첨자 은 바운드 x 형식임을 의미하며 콜론 뒤의 표현은 앞의 람다 식의 유형이다.)

용어 재쓰기 시스템으로서 시스템 F는 강하게 정상화되고 있다.그러나 시스템 F의 형식 추론(명시 형식 주석 없음)은 해석할 수 없다.Curry-Howard 이소모르피즘에서 System F는 보편적 정량화만을 사용하는 2차 직관논리의 파편에 해당한다.시스템 F는 람다 큐브의 일부로 볼 수 있으며, 종속 유형을 포함한 훨씬 더 표현력이 뛰어난 타입의 람다 캘커리와 함께 볼 수 있다.

지라드에 따르면, 시스템 F의 "F"는 우연히 선택되었다.[1]

타이핑 규칙

시스템 F의 타이핑 규칙은 다음을 추가하여 간단히 타이핑된 람다 미적분의 타이핑 규칙이다.

(1) 2)

여기서 , 이(가) 유형이고, (는) 문맥상 이(가) 바인딩되어 있음을 나타낸다.첫 번째 규칙은 적용의 법칙이고, 두 번째 규칙은 추상화의 법칙이다.[2] [3]

논리 및 술어

e n 타입은 다음과 같이 정의된다.α → α → → α → \alpha 여기서 유형 변수.즉: e n 은(는) 유형 α와 유형 α의 두 식을 입력하여 출력하는 모든 함수의 유형이며, 유형 α의 식을 생성한다(참고을 오른쪽 연관성으로 간주한다).

부울 값 ( F {\ \{F}에 대한 다음 두 가지 정의가 사용되어 Church 부울런의 정의가 확장된다.

(위의 두 함수는 두 개의 인수가 아닌 세 의 인수를 필요로 한다는 점에 유의하십시오.후자는 람다 표현이어야 하지만, 첫 번째 표현은 유형이어야 한다.이 사실은 이러한 식의 유형이 α → α → α →α {\\\ \α를 결합하는 범용 정량자는 람다식 자체에서 알파 를 결합하는 alpha에 해당한다.또한 en {\ {\ {은(는 → α → → α display \ for \에 대한 편리한 속기법이지만 시스템 F 자체의 상징은 아니다.Likewise, and are also "meta-symbols", convenient shorthands, of System F "assemblies" (in the Bourbaki sense); otherwise, if such functions could be named (within System F), then there would be no need for the lambda-expressive apparatus capable of defining functions 익명으로, 그리고 그러한 제약에 따라 작동하는 고정 포인트 결합기에 대해.

Then, with these two -terms, we can define some logic operators (which are of type ):

Note that in the definitions above, is a type argument to , specifying that the other two parameters that are given to are of type . As in Church encodings, there is no neea를 위해 d를 구하다IFTHELLSE 함수는 결정 함수로 e n {\ {유형 용어를 사용할 수 있다.단, 요청된 경우:

할 거다.술어 e n -typed 값을 반환하는 함수다.가장 기본적인 술어는 ISZERO로, 만약 그 주장이 교회 숫자 0인 경우에만 를) 반환한다.

시스템 F 구조물

시스템 F는 마틴 뢰프의 유형 이론에서 그것과 관련된 재귀적 구조를 자연적으로 내장할 수 있게 한다.추상 구조(S)는 시굴자를 사용하여 생성된다.다음은 다음과 같이 입력된 기능이다.

화살표 화살표 화살표 .

재귀성은 S자체유형 중 하나 내에서 나타날 때 나타나며 이러한 생성자의 m을 가지고 있으면 다음과 같이 S유형을 정의할 수 있다.

예를 들어, 자연수는 생성자가 있는 유도 데이터 유형 N으로 정의될 수 있다.

이 구조에 해당하는 System F 타입은 () → . → α. α. α \\ 이 타입의 조건은 교회 숫자의 타입으로 구성되는데, 이 중 몇 가지는 다음과 같다.

If we reverse the order of the curried arguments (i.e., ), then the Church numeral for n is a function that takes a function f as argument and returns the nth power of f.즉, Church numeral은 고차적 함수로서, 단일 인수 함수 f를 취하고, 또 다른 단일 인수 함수를 반환한다.

프로그래밍 언어에 사용

이 글에서 사용된 시스템 F의 버전은 명시적으로 타이핑된 것, 즉 교회 스타일의 미적분학이다.λ 문자에 포함된 타이핑 정보는 타이핑 확인을 쉽게 한다.조 웰스(1994)는 시스템 F의 커리식 변종, 즉 명시적인 타이핑 주석이 없는 것에 대해 유형 확인이 불분명하다는 것을 증명함으로써 "부끄러울 정도로 개방적인 문제"를 해결했다.[4][5]

웰스의 결과는 시스템 F에 대한 유형 추론이 불가능하다는 것을 암시한다."Hindley-Milner" 또는 단순히 "HM"으로 알려진 시스템 F의 제한은 쉬운 유형의 추론 알고리즘을 가지고 있으며 Haskell 98ML 제품군과 같은 많은 정적으로 타이핑기능 프로그래밍 언어에 사용된다.시간이 지남에 따라 HM형 시스템의 제약이 명백해짐에 따라 언어는 그들의 타입 시스템에 대해 보다 표현적인 로직으로 꾸준히 이동해왔다.GHC a Haskell 컴파일러는 HM(2008년 기준)을 넘어 비합성형 균등으로 확장된 시스템 F를 사용한다.[6] OCaml 유형 시스템의 비 HM 기능에는 GADT가 포함된다.[7][8]

지라드 레이놀즈 이소모르피즘

2차 직감 논리학에서는 2차 다형 람다 미적분(F2)이 지라드(1972년)에 의해 발견되고 레이놀즈(1974년)에 의해 독자적으로 발견되었다.[9]지라드는 표현 정리를 증명했다: 2차 직감론적 술어 논리(P2)에서는 자연수에서 총체적으로 증명될 수 있는 자연수까지의 함수들이 P2에서 F2로 투영되는 것을 형성한다.[9]레이놀즈는 F2의 모든 용어가 논리적 관계 P2에 내장될 수 있는 논리적 관계를 만족한다는 추상화 정리를 증명했다.[9]레이놀즈는 지라드 투영에 이어 레이놀즈 임베딩이 정체성, 즉 지라드 레이놀즈 이소모르피즘을 형성한다는 것을 증명했다.[9]

시스템ω F

시스템 F는 바렌트레트의 람다 입방체의 첫 번째 축에 해당하는 반면, 시스템ω F 또는 고차 다형 람다 미적분은 첫 번째 축(폴리모르퍼시즘)과 두 번째 축(유형 연산자)을 결합하여 다른, 보다 복잡한 시스템이다.

시스템 F는ω 시스템 제품군에 따라 귀납적으로 정의될 수 있으며, 여기서 유도는 각 시스템에서 허용되는 종류에 기초한다.

  • 다음과 같은 종류를 허용한다.
    • 유형) 및
    • 여기서 F - 1 F {\F_{유형별로 함수 종류, 인수 유형이 낮은 순서)

한계에서 시스템 (를) 정의하면 된다.

즉, F는ω 인수(및 결과)가 임의의 순서로 될 수 있는 유형에서 유형까지 기능을 허용하는 시스템이다.

F는ω 이러한 매핑에서 인수의 순서에 제한을 두지 않지만, 이러한 매핑에 대한 인수의 우주를 제한한다는 점에 유의하십시오. F는 값이 아닌 유형이어야 한다. F는ω 값에서 값까지의 매핑([\ 추상화], 유형에서 으로 매핑 추상화) 및 에서 유형으로 매핑 } } 추상화)을 허용하지만 에서 매핑을 허용하지 않는다.l 유형)

참고 항목

메모들

  1. ^ Girard, Jean-Yves (1986). "The system F of variable types, fifteen years later". Theoretical Computer Science. 45: 160. doi:10.1016/0304-3975(86)90044-7. However, in [3] it was shown that the obvious rules of conversion for this system, called F by chance, were converging.
  2. ^ Harper R. "Practical Foundations for Programming Languages, Second Edition" (PDF). pp. 142–3.
  3. ^ Geuvers H, Nordström B, Dowek G. "Proofs of Programs and Formalisation of Mathematics" (PDF). p. 51.
  4. ^ Wells, J.B. (2005-01-20). "Joe Wells's Research Interests". Heriot-Watt University.
  5. ^ Wells, J.B. (1999). "Typability and type checking in System F are equivalent and undecidable". Ann. Pure Appl. Logic. 98 (1–3): 111–156. doi:10.1016/S0168-0072(98)00047-5."The Church Project: Typability and type checking in {S}ystem {F} are equivalent and undecidable". 29 September 2007. Archived from the original on 29 September 2007.
  6. ^ "System FC: equality constraints and coercions". gitlab.haskell.org. Retrieved 2019-07-08.
  7. ^ "OCaml 4.00.1 release notes". ocaml.org. 2012-10-05. Retrieved 2019-09-23.
  8. ^ "OCaml 4.09 reference manual". 2012-09-11. Retrieved 2019-09-23.
  9. ^ a b c d 필립 와들러 (2005) 지라드 레이놀즈 이소모르프리즘 (제2판) 에든버러 대학교, 프로그래밍 언어에든버러 재단

참조

추가 읽기

외부 링크