1차 논리: 두 판 사이의 차이
내용 삭제됨 내용 추가됨
Osteologia (토론 | 기여) 잔글 →공리와 추론 규칙 |
잔글 봇: 같이 보기 문단 추가 |
||
(사용자 14명의 중간 판 45개는 보이지 않습니다) | |||
1번째 줄:
{{위키데이터 속성 추적}}
'''1차 논리'''(一次論理, {{llang|en|first-order logic}})는 원소에만 한정 기호를 가할 수 있고, 술어에는 한정 기호를 가할 수 없는 [[술어 논리]]이다.<ref>{{서적 인용|이름=Wilfrid |성=Hodges|날짜=2001-08|장=Classical logic I: first order logic|editor-first=Lou|editor-last=Goble|제목=The Blackwell Guide to Philosophical Logic|출판사=Blackwell|isbn=978-0-631-20693-4|zbl=1003.03010|언어=en}}</ref> [[명제 논리]]와 달리 변수에 대하여 한정 기호를 사용할 수 있으나, [[2차 논리]]와 달리 변수들의 집합에 대하여 한정 기호를 사용할 수 없다. 1차 논리의 경우, ([[2차 논리]]와 달리) [[괴델의 완전성 정리]] · [[콤팩트성 정리]] · [[뢰벤하임-스콜렘 정리]]와 같은 중요한 성질들이 성립한다.
이외에 '''1차 술어 논리''', '''1계 논리''' 등으로도 불린다. 간단히 '''술어 논리'''(predicate logic)라 하면 1차 논리를 가리키는 경우가 많다.
== 정의 ==
1차 논리는 다음의 요소들로 이루어진다.
* 특정 문자열들의 집합을 '''[[논리식]]'''의
* 특정 논리식 집합으로부터 다른 논리식을 '''추론'''할 수 있다. 이에 대한 규칙은 힐베르트 체계 및 다른 여러 방식으로 명시될 수 있다.
* 1차 논리 언어의 '''의미론'''이란
=== 문법 ===
다음과 같은 데이터가 주어졌다고 하자. (여기서 <math>\mathbb N</math>은 [[자연수]], 즉 음이 아닌 정수의 집합이다.)
* [[집합]] <math>I</math> 및 함수 <math>m\colon I\to\mathbb N</math>, <math>i\mapsto m_i</math>. <math>I</math>는 유한 집합이거나 무한 집합일 수 있다. 이를 '''연산'''(演算, {{llang|en|operation}})의 집합이라고 한다.
* 가산 무한 개의 변수들 <math>x_0,x_1,x_2,\dots</math>▼
* [[집합]] <math>J</math> 및 함수 <math>n\colon J\to\mathbb N</math>, <math>j\mapsto n_j</math>. <math>J</math>는 유한 집합이거나 무한 집합일 수 있다. 이를 '''관계'''(關係, {{llang|en|relation}})의 집합이라고 한다.
그렇다면, <math>(I,m,J,n)</math>으로 정의되는 '''1차 논리 언어''' <math>\mathcal L_{I,J}\subseteq\Sigma^*</math>는 특정한 문자열들의 집합이다. 이 문자열을 구성하는 문자 집합
:<math>\Sigma=\{\mathsf x_n\}_{n\in\mathbb N}\sqcup\{\forall,=,\implies,\lnot\}\sqcup\{\mathsf f_i\}_{i\in I}\sqcup\{\mathsf R_j\}_{j\in J}</math>
은 구체적으로 다음과 같다.
▲* 가산 무한 개의 변수들 <math>\mathsf x_0,\mathsf x_1,\mathsf x_2,\dots</math>
** 가산 무한 개의 변수들만으로 충분한 이유는 모든 [[논리식]]의 길이가 유한하기 때문이다. [[무한 논리]]의 경우 더 많은 변수들을 추가할 수 있다.
* [[명제 논리]]의 연산
** 그 대신 다른 기호들을 사용할 수도 있다. 예를 들어, [[논리합]] <math>\lor</math> 또는 [[논리곱]] <math>\land</math> 등이 있다.
* [[등호]] <math>=</math>
* '''전칭 기호'''(全稱記號, {{llang|en|universal quantifier}}) <math>\forall</math>
** 그 대신 '''존재 기호'''(存在記號, {{llang|en|existential quantifier}}) <math>\exists</math>를 사용할 수도 있다. 사실, 임의의 변수 <math>x</math>에 대하여 <math>\forall x\phi\iff \lnot\exists x\lnot\phi</math>이며 <math>\exists x\phi\iff \lnot\forall x\lnot\phi</math>이므로,
* 각 <math>i\in I</math>에 대하여, 기호 <math>\mathsf f_i</math>. 이를 <math>m_i</math>항 '''연산'''이라고 하며, <math>m_i</math>를 <math>\mathsf f_i</math>의 '''[[항수 (수학)|항수]]'''(項數, {{llang|en|arity}})라고 한다. 0항 연산을 '''상수'''({{llang|en|constant}})라고 한다.
*
* 이 밖에도, 괄호 <math>()</math> 및 반점 <math>,</math> 등은 엄밀히 말해 불필요하지만, 가독성을 돕기 위해 첨가한다. 예를 들어, <math>\mathsf f_i\mathsf x_0\mathsf x_2</math> 대신 <math>\mathsf f_i(\mathsf x_0,\mathsf x_2)</math>로 쓴다.
이 기호들 가운데, <math>\{\mathsf f_i\}_{i\in I}</math> 및 <math>\{\mathsf R_j\}_{j\in J}</math>를 제외한 기호들을 '''논리 기호'''({{llang|en|logical symbol}})라고 한다.
▲* '''관계'''({{llang|en|relation}})들의 집합. 이는 유한 집합이거나 무한 집합일 수 있으며, 각 관계에는 [[자연수]](음이 아닌 정수)인 '''항수'''가 대응된다. 항수가 1인 관계 '''술어'''({{llang|en|predicate}})라고 한다. (항수가 0인 관계는 고전 [[명제 논리]]에서는 참 또는 거짓이 되므로 자명하다.)
1차 논리의 '''항'''(項, {{llang|en|term}})은 다음 문법을 따른다.
* 모든 변수는 항이다.
*
1차 논리의 '''논리식'''({{llang|en|(well-formed) formula}})은 다음 문법을 따르는, 위 기호들의 문자열이다.
*
* 두 항 <math>t_1</math>, <math>t_2</math>에 대하여, <math>t_1=t_2</math>는 논리식이다.
* 논리식 <math>\phi</math>와 <math>\chi</math>에 대하여, <math>\lnot\phi</math>와
* 논리식 <math>\phi</math>에 등장하는 변수 <math>x_i</math>가 자유 변수라면, <math>\forall
여기서 논리식 <math>\phi</math> 및 그 속에 등장하는 변수 <math>
자유 변수를 갖지 않는 (즉, 그 속에 등장하는 모든 변수가 종속 변수인) 논리식을 '''문장'''(文章, {{llang|en|sentence}})이라고 한다.
=== 공리와 추론 규칙 ===
1차 논리의 [[증명
1차 논리를 힐베르트 체계를 사용하여 공리화하면, 다음과 같다. 우선, 편의상 다음과 같은 기호만을 사용한다고 하자.
줄 56 ⟶ 63:
\chi
\end{matrix}</math>
과 [[일반화 (논리학)|일반화]]
:㈁ <math>\begin{matrix}
\phi\\
\hline
\forall x\phi
\end{matrix}</math>
가 있다. 이 밖에, 다음과 같은 [[명제 논리]]의 공리 기본꼴들이 사용된다.
:
:
:
1차 술어 논리의 경우, 다음과 같은 추가 공리 기본꼴들이 사용된다.
:
:
▲:㈅ <math>\forall x\left(\phi\implies\chi\right) \implies \left( \forall x\phi \implies \forall x\chi\right)</math>
▲::공리 기본꼴 ㈆에서, <math>x</math>는 <math>\phi</math>의 자유 변수일 수 없다.
:㈇ <math>x = x</math>
:㈈ <math>\left(t=u\right) \implies \left( \phi[t/x] \implies \phi[u/x] \right)</math>
::공리 기본꼴 ㈈에서, <math>x</math>는 [[논리식]] <math>\phi</math>의 자유 변수이어야 한다.
위 공리 기본꼴들에서, <math>\phi[t/x]</math>는 [[논리식]] <math>\phi</math>에 등장하는 자유 변수 <math>x</math>를 항 <math>t</math>로 대체하여 얻는 [[논리식]]을 뜻한다. 예를 들어, [[체 (수학)|체]]의 언어에서
:<math>\text{“}\lnot(x=2)\land\left(\forall xx=y)\right)\lor x=3\text{”}[(1+1)/x]
=\text{“}\lnot\left((1+1)=2\right)\land\left(\forall xx=y)\right)\lor 1+1=3\text{”}</math>
이다. 이때, [[논리식]] 내부의 ‘<math>\forall xx=y</math>’에서 <math>x</math>가 치환되지 않는 이유는 이 부분에서는 <math>x</math>가 종속 변수이기 때문이다.
== 성질 ==
=== 의미론 ===
{{본문|모형 (논리학)}}
1차 논리의 의미론은 보통 [[모형 (논리학)|모형]]으로 주어진다. 주어진 연산 집합 <math>
:<math>M\models\phi</math>
로 표기한다.
보다 일반적으로, <math>\mathcal L_{
:<math>(m_1,\dots,m_k)\in M^k</math>
가 주어졌을 때,<math>\phi</math>가 <math>M</math>에서 <math>(m_i)_{i=1}^k</math>에 대하여 참인지 또는 거짓인지 여부를 정의할 수 있다. 이는
줄 88 ⟶ 101:
=== 증명 이론 ===
비논리 기호를 포함하지 않는 1차 논리 문장들의 집합을 <math>\mathcal L_=^0</math>라고 하자. 그 가운데, 모든 [[모형 (논리학)|모형]]에서 참인 문장들의 부분 집합
:<math>\mathcal T=\{\phi\in\mathcal L_=^0\colon\forall M\in\operatorname{Model}(\mathcal L_=)\colon M\models\phi\}</math>
을 생각하자. 또한, <math>\mathcal L_=^0</math> 속에서, 위의 힐베르트 체계를 통해 증명할 수 있는 문장들의 집합을
:<math>\mathcal T'=\{\phi\in\mathcal L_=^0\colon\vdash\phi\}</math>
그렇다면, 다음이 성립한다.
* 1차 논리의 [[건전성 정리]]에 따르면, <math>\mathcal T=\mathcal T'</math>이다. 즉, 명제가 증명 가능한지 여부는 명제가 참인지 여부와 동치이다.
* <math>\mathcal T</math>는 [[재귀 집합]]이다. (이는 레오폴트 뢰벤하임이 1915년에 증명하였다.)
보다 일반적으로, 임의의 [[가산 집합|가산]] 연산 집합 <math>
:<math>\mathcal T=\{\phi\in\mathcal
을 생각하자.
* [[괴델의 완전성 정리]]에 따르면, <math>\mathcal T</math>는 [[재귀 열거 집합]]이다.
* 만약 <math>\mathcal R</math>에 (등호를 제외한) 2항 이상의 항수를 갖는 관계가 존재한다면, <math>\mathcal T</math>는 [[재귀 집합]]이 아니다.
* 만약 <math>
=== 린드스트룀 정리 ===
줄 112 ⟶ 125:
=== 체와 순서체 ===
[[체 (수학)|체]]의 1차 논리 언어
:<math>
:<math>
:<math>
:<math>
:<math>
는 두 개의 [[이항 연산]]과 하나의 1항 연산 및 두 개의 상수(0항 연산)을 포함하며, 등호 밖의 관계를 갖지 않는다. 보통
<math>\mathsf f_+(a,b)</math>는 <math>a+b</math>와 같이 표기한다.
[[순서체]]의 1차 논리 언어
:<math>
:<math>
:<math>
:<math>
:<math>
:<math>n_\le=2</math>
는 두 개의 [[이항 연산]]과 하나의 1항 연산 및 두 개의 상수(0항 연산)을 포함하며, 하나의 2항 관계를 갖는다. 보통
<math>\mathsf R_\le(a,b)</math>는 <math>a\le b</math>와 같이 표기한다.
=== 범주 ===
[[범주 (수학)|범주]]의 1차 논리 언어는 다음과 같이, 하나의 3항 관계
* <math>\mathsf C(-,-,-)</math> (<math>\mathsf C(x,y,z)</math>는 <math>x\circ y=z</math>임을 뜻함)
와 두 개의 1항 연산
* <math>\operatorname{dom}(-)</math> ([[사상 (수학)|사상]]의 [[정의역]])
* <math>\operatorname{codom}(-)</math> ([[사상 (수학)|사상]]의 [[공역]])
으로 나타낼 수 있다. 변수들은 [[사상 (수학)|사상]]을 나타내며, 대상들은 항등 사상으로 나타내어진다. 편의상 다음과 같은 술어를 정의하자.
:<math>\mathsf{Obj}(x)\iff \operatorname{dom}(x)=\operatorname{codom}(x)=x</math>
이는 <math>x</math>가 항등 사상(즉, 대상)임을 뜻한다. 그렇다면, 범주의 1차 논리 이론은 다음과 같은 공리들로 구성된다.
* <math>\operatorname{dom}(x)=x\iff\operatorname{codom}(x)=x</math> (항등 사상의 두 정의의 동치성)
* <math>\mathsf{Obj}(\operatorname{dom}x)</math> (사상의 정의역은 대상)
* <math>\mathsf{Obj}(\operatorname{codom}x)</math> (사상의 공역은 대상)
* <math>\mathsf C(x,y,z)\implies\operatorname{dom} x=\operatorname{codom}y</math> (사상 합성의 존재의 [[필요 조건]])
* <math>\mathsf C(x,y,z)\implies\operatorname{dom} y=\operatorname{dom} z</math> (합성 사상의 정의역)
* <math>\mathsf C(x,y,z)\implies\operatorname{codom}x=\operatorname{codom}z</math> (합성 사상의 공역)
* <math>\mathsf C(x,y,a)\land\mathsf C(a,z,c)\land\mathsf C(y,z,b)\land\mathsf C(x,b,d)\implies c=d</math> (사상 합성의 [[결합 법칙]])
* <math>\mathsf{Obj}(x)\land\mathsf C(x,y,z)\implies y=z</math> (항등 사상과의 합성)
* <math>\mathsf{Obj}(y)\land\mathsf C(x,y,z)\implies x=z</math> (항등 사상과의 합성)
이 이론의 [[모형 (논리학)|모형]]의 개념은 '''[[작은 범주]]'''의 개념과 동치이다.
== 역사 ==
[[고틀로프 프레게]]가 1879년에 출판된 《개념 표기법》<ref>{{서적 인용|제목=Begriffsschrift, eine der arithmetischen nachgebildete Formelsprache des reinen Denkens|이름=Gottlob|성=Frege|
| doi= 10.1016/0315-0860(82)90123-9
| 성= Putnam |이름= Hilary |
| year=1982
| title=Peirce the logician
줄 136 ⟶ 172:
| volume=9
| pages= 290–301
이후 [[에른스트 체르멜로]]는 [[2차 논리]]를 사용하여 [[집합론]]을 개발하였다. [[토랄프 스콜렘]]은 1922년에 체르멜로의 집합론을 1차 논리로 재정의하였다.<ref>{{서적 인용|이름=Thoralf|성=Skolem|저자링크=토랄프 스콜렘|장=Einige Bemerkungen zur axiomatischen Begründung der Mengenlehre|제목=Matematikerkongressen i Helsingfors den 4–7 Juli 1922, Den femte skandinaviska matematikerkongressen, Redogörelse|출판사=Akademiska Bokhandeln|위치=[[헬싱키]]|쪽=217–232|날짜=1923|jfm=49.0138.02|언어=de}}</ref><ref name="Moore"/>{{rp|123–124}}<ref>{{저널 인용|제목=On how logic became first-order|이름=Matti|성=Eklund|저널=Nordic Journal of Philosophical Logic|권=1|호=2|쪽=147–167|날짜=1996-12|url=http://www.hf.uio.no/ifikk/forskning/publikasjoner/tidsskrifter/njpl/vol1no2/howlogic.pdf|zbl= 0885.03006|언어=en}}</ref>{{rp|153–156}}<ref name="Ferreiros">{{저널 인용|제목=The road to modern logic — an interpretation|이름=Jose|성=Ferreiros|저널=The Bulletin of Symbolic Logic|권=7|호=4|날짜=2001-12|쪽=441–484|jstor=2687794|doi=10.2307/2687794|issn=1079-8986|url=http://personal.us.es/josef/BSL0704-001.pdf|zbl=1005.03003|언어=en|access-date=2016-07-29|archive-date=2015-03-26|archive-url=https://web.archive.org/web/20150326210656/http://personal.us.es/josef/BSL0704-001.pdf|url-status=}}</ref>{{rp|447}} 이는 오늘날 사용되는 [[체르멜로-프렝켈 집합론]]의 기반이 되었다.
[[제2차 세계 대전]] 이후 1차 논리는 ([[2차 논리]]나 [[유형 이론]] 등을 대신하여) 통상적으로 사용되는 수학의 기반이 되었다.<ref name="Ferreiros"/>{{rp|448}}
==
* [[논리 기호]]
* [[로지반]]
* [[프리넥스 표준형]]
* [[프롤로그 (프로그래밍 언어)]]
* [[관계대수]]
* [[관계형 모델]]
* [[스콜렘 표준형]]
* [[진리표]]
== 각주 ==
{{각주}}
▲* {{서적 인용|장url=http://mcps.umn.edu/philosophy/11_4Moore.pdf|장=The emergence of first-order logic|제목=History and Philosophy of Modern Mathematics|이름=Gregory H.|성=Moore|날짜=1988|쪽=95–135|editor1-first=William|editor1-last=Aspray|editor2-first=Philip|editor2-last=Kitcher|총서=Minnesota Studies in the Philosophy of Science|권=11|jstor=10.5749/j.cttttp0k.7|출판사=University of Minnesota Press|언어=en}}
==
* {{eom|title=Logical calculus}}
* {{eom|title=Characterization theorems for logics}}
* {{매스월드|id=First-OrderLogic|title=First-order logic}}
* {{매스월드|id=Interpretation|title=Interpretation}}
줄 154 ⟶ 202:
* {{nlab|id=first-order logic|title=First-order logic}}
[[분류:
|