정수, 이성 및 실수의 표준 구성 정의?


10

자연수는 다음과 같이 유도 적으로 정의됩니다 (예 : Coq 구문 사용)

Inductive nat: Set :=
| O: nat
| S: nat -> nat.

정수 (및 유리수 및 실수와 같은 다른 세트)를 건설적으로 정의하는 표준 방법이 있습니까?


1
건설적인 정의 란 무엇입니까?
Trismegistos

답변:


12

정의로 간주하는 속성에 따라 수학적 구조를 정의하는 여러 가지 방법이 있습니다. 동등한 특성들 사이에서, 어떤 것이 정의가되고 어떤 것이 다른 특성이되는지는 중요하지 않습니다.

건설적인 수학에서는 건설적인 추론을 쉽게하는 정의를 선택하는 것이 바람직합니다. 자연수의 경우, 추론의 기본 형태는 유도 (induction)이며, 이는 전통적인 제로 또는 후속 정의를 매우 적합하게 만듭니다. 다른 숫자 집합에는 이러한 기본 설정이 없습니다.

비 구조적인 설정에서 몫에 대한 추론을 할 때,“등가 클래스의 구성원을 선택하십시오”라고 말하는 것이 일반적입니다. 건설적인 환경에서는 구성원을 선택하는 방법을 설명해야합니다. 따라서 동등성 클래스를 구성하는 대신 유형의 각 구성원에 대해 하나의 오브젝트를 구성하는 정의를 쉽게 사용할 수 있습니다.

예를 들어 , 수학자는 자연수의 차이를 동일시하는 것에 만족할 수 있습니다.

: =2/{((엑스,와이),(엑스',와이'))엑스+와이'=엑스'+와이}
이것은 깔끔한 느낌을 지니고 있지만 (“이것이나 저것”은 아닙니다), 건설적인 추론을 위해, 객체의 동등성이 표현의 동등성과 일치하면 더 간단합니다. 따라서 상대 정수를 자연수 또는 음수로 정의 할 수 있습니다 자연수에서 1을 뺀 값 :
Inductive Z1 :=
  | Nonnegative : nat -> Z1   (* ⟦Nonnegative x⟧ = ⟦x⟧ *)
  | Negative : nat -> Z1.     (* ⟦Negative x⟧ = -⟦x⟧-1 *)

그러나이 정의는 이상하게 비대칭이므로 두 가지 다른 표현을 0으로 허용하는 것이 바람직 할 수 있습니다.

Inductive Z2 :=
  | Nonnegative : nat -> Z2   (* ⟦Nonnegative x⟧ = ⟦x⟧ *)
  | Nonpositive : nat -> Z2.  (* ⟦Nonpostitive x⟧ = -⟦x⟧ *)

또는 자연을 빌딩 블록으로 사용하지 않고 상대 정수를 만들 수 있습니다.

Inductive Pos3 :=
  | I : Pos3                  (* ⟦I⟧ = 1 *)
  | S3 : Pos3 -> Pos3         (* ⟦S3 x⟧ = ⟦x⟧+1 *)
Inductive Z3 :=
  | N3 : Pos3 -> Z3           (* ⟦N3 x⟧ = -⟦x⟧ *)
  | O3 : Z3                   (* ⟦O3⟧ = 0 *)
  | P3 : Pos3 -> Z3           (* ⟦P3 x⟧ = ⟦x⟧ *)

COQ 표준 라이브러리의 또 다른 용도 정의 : 그들의 표기법에서 양수를 구성 그런 다음 구축 숫자 0 또는 1의 시퀀스 다음에 숫자 1과 2 기재 Z와 같이 Z3Pos3상술. 이 정의에는 각 정수에 대한 고유 한 표현도 있습니다. 이진 표기법을 사용하는 것은 쉬운 추론을위한 것이 아니라 프로그램이 증명에서 추출 될 때보다 효율적인 코드를 생성하는 것입니다.

추론의 용이성은 정의를 고르는 동기가되지만 결코 극복 할 수없는 요소는 아닙니다. 일부 구조가 특정 증거를보다 쉽게 ​​만들면 해당 정의에 해당 정의를 사용하고 해당 정의가 원래 정의로 선택된 다른 구조와 동일하다는 것을 증명할 수 있습니다.

합리적 수의 경우, 정수의 표현으로 요소를 표현하는 것으로 시작하지 않는 한 몫을 피하기가 어렵습니다. 정의하기 어렵다). COQ 표준 라이브러리를 정의 Q×(분모 및 분모)로 구성되며 =?=의 두 요소의 동등성을 테스트 하는 연산자 를 정의합니다 Q. 이 정의는 매우 간단하기 때문에 일반적입니다.

실수는 구성 할 수 없기 때문에 완전히 다른 주전자입니다. 실수를 유도 유형으로 정의하는 것은 불가능합니다 (모든 유도 유형은 정의 할 수 없음). 대신, 실수의 정의는 공리적이어야한다. 즉, 비 구조적이어야한다. 실수의 결정 가능한 부분 집합을 구성하는 것이 가능하다; 이를 수행하는 방법은 구성하려는 서브 세트에 따라 다릅니다.


1
계산 가능한 실수는 실제 숫자의 대부분의 용도가 어떤 방식으로 평소의 주문에 연결되어로, 가장 합리적인 후보가 될 것으로 보인다.
dfeuer

5
"구성 가능한"이란 무엇입니까? 나는 "구성 가능한 세트"라는 단 하나의 이론 만 알고 있지만, 이것이 바로 당신이 의미하는 바입니다. 또한, 실재가 완전히 다른 어류 주전자 인 경우에도 "실수의 정의가 공리적, 즉 비 구조적"이어야한다는 것은 사실이 아닙니다. 그리고 homotopy type 이론에는 real에 대한 더 높은 귀납적 유도 정의가 있습니다.
Andrej Bauer

15

Gilles의 답변은 실수에 대한 단락을 제외하고는 좋은 답변입니다. 실제 숫자는 실제로 다른 주전자입니다. 이런 종류의 잘못된 정보는 꽤 널리 퍼져있는 것 같습니다. 자세한 반박을 여기에 기록하고 싶습니다.

모든 유도 성 유형을 알아낼 수있는 것은 아닙니다. 예를 들어, 유도 형

Inductive cow := 
   | nose : cow
   | horn : (nat -> cow) -> cow.

c : nat -> cow우리는 어떤 순서로든 소의 근거가없는 순서로 형성 horn c되지 않을 수 있습니다 . "모든 유도 유형은 셀 수 있습니다"형식의 올바른 설명을 원할 경우 허용되는 구성을 심각하게 제한해야합니다.

실수는 유도 성 유형으로 쉽게 구성 할 수 없지만, 호모 토피 유형 이론에서는 높은 유도 성 유형 으로 구성 될 수 있다는 점을 제외하고 는 HoTT 책의 11 장을 참조하십시오 . 이것이 부정 행위라고 주장 할 수 있습니다.

Gilles의 주장과 달리, 실제 의 건설적인 정의와 구성이 많이 있습니다. 그것들은 크게 두 가지 클래스로 나눌 수 있습니다 :

  1. 실수가 합리적인 수의 메트릭 완성으로 표시되는 코시 유형 구조 . 이러한 종류의 구성은 종종 몫을 필요로하지만, 평등을 어떻게 다루는가에 따라 동질적인 정의를 벗어날 수도 있습니다. 본래의 구조는 일반적으로뿐만 아니라 셀 수있는 선택이 필요하지만, 프레드 리치 먼은 자신의 참조 선택하지 않고 건설적으로 작동 완료 절차를 준 리얼 번호 및 기타 완료를 .

  2. 실재가 합리적 (양 면적) 삭감으로 여겨지는 Dedekind 유형 구성 . 이러한 종류의 구성은 일반적으로 전원 세트 또는 이와 유사한 장치가 필요하지만 일부 기본 기능만으로도 가능합니다.λ-Sierpinski 공간의 미적분학 및 액화 ΣAbstract Stone Duality의 Dedekind reals를 참조하십시오 .

구현 측면에서, 우리는 실수의 다양한 건설 formalizations이 (하지만 끔찍하다 COQ 표준 라이브러리에없는 것) 예를 Robbert Krebbers의와 바스 Spitters의 대한, COQ에서 컴퓨터 인증을 정확하고 효율적으로 실수 .

정확한 실수를 실제로 구현 하려면 Norbert Müller의 iRRAM을 가리 킵니다 .

마지막으로, Gilles는 정의 할 수없는 실수의 부분 집합에 대해서는 언급하지 않았습니다. 거주하는 건설적인 환경에서 셀 수없는 세트를 구성하거나 정의 할 수 있습니다. 예를 들어, Baire 공간모든 함수가 튜링 계산 가능하다고 생각하더라도 모든 숫자 시퀀스는 항상 계산할 수 없습니다 . 설명을 보려면 내 블로그 게시물 을 참조하십시오 .


당신은 아마 Coq에서 실제 폐쇄 필드의 이론을 axiomatise 수 있습니다 ...
Pseudonym

그렇습니다 .Cyril Cohen은 hal.inria.fr/hal-00671809v1/document를 참조하십시오 . 요점이 뭐야?
Andrej Bauer

1
나는 요점이 없다. 그것은 단지 추정 일 뿐이었다.
가명
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.