명제와 술어 논리를 배우는 이유


14

컴퓨터 과학 자나 소프트웨어 개발 관련 엔지니어가 기본 논리 연구를 기초로 이해해야한다는 중요성을 이해할 수 있습니다.

그러나 Knowledge Base? 를 사용하는 모든 종류의 지식 표현이 필요한 작업 외에 이것에 대한 지식이 명시 적으로 필요한 작업 / 작업이 있습니까? 개념적 응답이 아닌 작업 유형을 듣고 싶습니다.

내가 묻는 이유는 나의 호기심 때문입니다. CS 학생들은이 주제에 대해 일정 시간을 소비해야하지만 일부 실습 중심 과정 (예 : AI-Class )은이 주제를 완전히 생략했습니다. 예를 들어 아는 predicate logic것이 그림을 그리는 데 도움이 될 수 ER diagram있지만 요구 사항이 아닐 수도 있습니다.


2012 년 5 월 27 일 업데이트) 답변 감사합니다. 이제 logic방대한 양의 응용 프로그램으로 CS 의 중요성을 완전히 이해하고 동의한다고 생각 합니다. 방금 Windows'블루 스크린 문제 에 대한 솔루션으로 얻은 인상에서 최고의 답변을 선택했습니다 .


4
답변을 작성하면서 귀하의 질문의 범위가 불분명하다는 것을 알았습니다. CS, 산업 또는 둘 다로 자신을 제한하고 있습니까?
Dave Clarke

@ 데이브 클라크 그래, 나는 그것도 충분히 명확하지 않다는 것을 알았습니다. 내가 알고 싶었던 첫 번째 것은 특정 로직의 문해력이 어느 산업에 필요한지에 관한 것입니다.
IsaacS

당신이 정말로 찾고있는 것을 포착하기 위해 질문을 바꿀 수 있다면 좋을 것입니다.
Dave Clarke

if제안 논리없이 정확히 조건을 작성하는 방법은 무엇입니까?
edA-qa mort-ora-y

답변:


22

나는 통일 과 그와 관련된 것을 좋아하는 경향이 있습니다. 명제 및 술어 논리를 모르면 논리의 기본 사항을 건너 뜁니다. 나열된 것에 관심이 있다면 수학에 관심이 있고 덧셈과 곱셈을 건너 뛰는 것과 같습니다. 논리는 AI만을위한 것이 아닙니다.

실용적인 해답으로 인텔 부동 소수점 문제를 기억 하고 더 이상 어떻게 보지 않습니까? 정리 프로 버의 사용 덕분에 그들은 과거의 일입니다. 죽음Microsoft 블루 스크린을 기억하십시오 . SAT 솔버, 모델 확인 및 기타 논리 기반 솔루션 덕분에 멸종 위기에 처한 종입니다.


3
멸종 위기 종 [citation nee – 분할 오류. 코어가 덤프되었습니다.
JeffE

@JeffE 인용문을 찾고 있다면 실제 증거를 제시합니다. 마지막으로 본 것은 언제입니까? :)
Guy Coder

3
나는 한번도 본 적이 없다. 나는 Mac을 사용합니다.
JeffE

1
@JeffE Mac은 기계 아키텍처에서 응용 프로그램에 이르는 모든 것이 하나의 팀 / 조직에 의해 결정되는 밀접하게 연결된 시스템입니다. 다양한 제조업체 및 팀이 서로 연결되는 솔루션을 제공하는 Windows 시스템은 개방적이며, 지정된 표준 및 인터페이스 (종종 느슨하고 모호한)에만 의존합니다. 그들은 컴퓨터 과학에 훨씬 더 도전입니다. 이를 위해 정리 증명 / 정적 분석 기법을 개발 한 Microsoft 팀은 우리 분야를 근본적으로 발전 시켰습니다.
Uday Reddy

1
@UdayReddy : Microsoft 연구자들이 근본적으로 발전했거나 BSOD가 예전보다 훨씬 덜 일반적이라는 것을 의심하지 않습니다. 그러나 "멸종 위기에 처한 종"은 지원되지 않는 쌍곡선입니다. 결함이있는 코드가 유일한 충돌 원인은 아닙니다.
JeffE

22

매우있다 깊은보급 논리와 컴퓨터 과학 사이의 연결. 컴퓨터 과학이 무엇인지 이해함에있어 컴퓨터 과학은 "정보 기술"또는 "정보학"이라고도하며, 이는 컴퓨터 시스템이 정보를 수집, 처리 및 전달한다는 것을 의미합니다. 글쎄, 논리는 비슷한 것입니다. 문장에서 정보를 캡처하는 방법과 한 문장이 다른 문장의 결과 가 될 수있는 방법, 즉 정보 내용이 다른 문장 (또는 문장 모음)에 이미 존재하는 방법을 연구합니다. 그런 의미에서 논리와 컴퓨터 과학은 본질적으로 동일합니다다른 측면에 초점을 맞춘 훈련. 논리 학자 (교회, 클레인, 튜링, 포스트 및 그들의 학생과 동료)는 컴퓨터 과학의 규율을 만들었으며 많은 논리 학자들은 컴퓨터 과학, 특히 장 이브 지라드와 그의 학생들에게 지속적으로 기여하고 있습니다.

컴퓨터 과학에서 논리의 표준 응용 프로그램은 다음과 같습니다.

  • 디지털 회로 설계 는 전적으로 제안 논리를 기반으로하므로 엔지니어가이를 "회로 설계"가 아니라 "논리 설계"라고 부릅니다. 컴퓨터 프로그램을 작성하는 것조차도 종종 "logic"을 고안하는 것으로 생각됩니다. 후자의 의미에서 "논리"는 공식적인 논리가 아닌 비공식적 인 아이디어이며 프로그램을 통한 정보의 흐름과 올바르게 처리되고 있는지 여부를 나타내는 데 사용됩니다.

  • 술어 논리 및 수학적 사촌 세트 이론은 다양한 컴퓨팅 언어 , 예를 들어 관계형 데이터베이스 쿼리를위한 언어 SQL에서 사용됩니다. "논리 프로그래밍 언어"라고하는 논리 기반 프로그래밍 언어도 있습니다.

  • 이미 언급 한 지식 표현 에는 논리에 기반한 많은 형식주의가 있습니다. 비논리적 인 형식주의를 사용하더라도 많은 논리적 인 논리는 여전히 논리적 인 의미 를 가지므로 논리를 기반으로합니다.

  • 진술이 참 / 거짓 값을 가지지 않고 확실성 / 불확실성 수준을 갖는 확률 론적 논리는 머신 러닝 시스템 의 기초가되어 가고 있습니다 .

  • 프로그램이하는 일, 즉 프로그램 사양 을 공식적으로 말하고 싶다면 어떤 형태의 논리 언어를 사용하게됩니다. 실제로 Z 및 B와 같은 술어 논리 및 설정 이론을 기반으로하는 많은 프로그램 스펙 언어가 있습니다. Larch와 같은 등식 논리를 기반으로 한 사양 언어도 있습니다. 컴퓨터 과학자들은 종종 Hoare Logic 및 Separation Logic과 같은 컴퓨터 과학의 요구를 나타내는 새로운 로직을 개발하거나, 시간적 로직 및 모달 로직과 같은 기존에 사용되지 않는 다양한 형태의 전통적인 로직을 선택하여 개발하여 더 발전시킵니다.

  • 당신이 할 경우 확인 이 수행하도록되어 어떤 프로그램이 실행 여부, 당신은 논리의 언어,하지만 전체뿐만 아니라 사용하게 기계 증거 이론, 모델 이론 및 의사 결정 절차 : 논리를. 검증 기술은 이제 도약과 한계에 따라 성장하고 있으며 앞으로 10 년 정도면 거의 모든 소프트웨어 개발에 일상적으로 사용될 것으로 기대합니다.

사실, 논리와 컴퓨터 과학 사이의 연결은 너무 깊고 널리 퍼져 있기 때문에 논리를 완전히 이해하지 않고는 훌륭한 컴퓨터 과학자가되기 어렵다고 말할 수 있습니다.

현재 일부 AI 과학자들이 논리를 과소 평가하는 이유는 AI의 초기 개발자 중 일부가 기성품 논리를 도구 로 제안했기 때문입니다.기초보다는. AI는 본질적으로 마법을 제공 할 것을 약속합니다. 우리는 결과를 제공하기 위해 프로그래밍 시스템을 열심히 할 필요가 없습니다. 그들은 "지능적"이기 때문에 스스로 솔루션을 생산하는 방법을 알아낼 수있을 것입니다. 논리는 컴퓨터 시스템이 논리를 이해하고 논리 규칙을 사용하여 정보를 처리하는 방법을 알면 마술을 전달할 수 있기 때문에 그 길을 가리 켰습니다. 논리에 대한 그런 종류의 믿음은 되돌아 보면 잘못 놓인 것입니다. 우선, 기성품 논리가 너무 강하고 동시에 약합니다. 논리 규칙이 효과적인 절차를 고안하기에는 너무 일반적이라는 점에서 너무 강력합니다. 수학의 요구를 위해 수학자들이 고안 한 논리이기 때문에 너무 약하다. • 인공 지능 시스템이 처리해야하는 많은 다른 종류의 실제 정보 (예 : 불확실성, 시간, 변화, 지식, 대행 등과 같은 상황 정보)를 다루는 데 필요한 어휘를 갖지 않습니다. 따라서 AI는 현재 논리에 반발하고 있습니다. 그러나 그들이 반발을 극복하면 AI 과학자들은 모든 최신 방법이 여전히널리 해석되는 논리 .


관계형 데이터베이스를 추가하십시오!
reinierpost

Jean-Yves Girard에 대한 언급이 아주 훌륭하고 완전합니다. 확률 논리가 퍼지 논리와 동일한 연구 분야라고 생각하십니까? 문헌에서 우리는 두 용어를 만나서 동일한 연구 영역을 나타내는 지 알고 싶습니다.
zurgl

@zurgl. 저는 "확률 논리"라고하는 단일 형식주의가 없다는 것을 이해하고 있습니다. 퍼지 논리는 실제로 그러한 형식주의 중 하나이지만 다른 것도 있습니다. 오늘날 인공 지능에서 가장 성공적인 확률 론적 추론의 형태는 베이지안 추론입니다. 그러나 논리적 인 토대는 아직 확고하게 마련되지 않았습니다.
Uday Reddy

17

논리는 모든 이론적 컴퓨터 과학의 기본입니다. 이를 배우지 않으면 프로그래밍 언어 의미, 튜링 머신, 논리 프로그래밍, 계산 가능성 등을 제대로 파악할 수 없습니다. 당신의 프로그램에 대한 추론조차 그것 없이는 더 어려울 것입니다. 확실히, 어떤 CS 개념에 대한 수학적 증거를 시도하는 것은 사실상 불가능합니다.

또는 업계에서의 사용에 대해 묻고있을 수도 있습니다. 학습 논리는 명확하게 추론하고 다른 사람들의 주장에 구멍을 보는 방법을 배우는 기초를 형성합니다. 공식 기호 사용 여부에 관계없이 논리는 기본입니다.


알고리즘이 누락되었습니다.
Yuval Filmus

4
그것은 '등'에 포함되어 있습니다.
Dave Clarke

9

CS 실무자와 이론가들이 직면하고있는 반복 작업 중 하나는 코드의 정확성에 대한 확신을 얻는 것입니다.

두 가지 주요 접근 방식이 있습니다.

  1. 증명 : 시스템의 일부가 특정 조건을 가지고 있다는 전제 조건, 계약 별 설계, 코드 검사기 등의 논리적 인 증거를 고안합니다.
  2. 테스트 : 특정 특성이 다양한 입력을 보유하는지 테스트 한 후 해당 특성이 다른 입력을 보유하도록 유도합니다.

논리적 방법을 기반으로 한 첫 번째는 종종 유일한 옵션입니다.

  1. 일반적인 입력이 없습니다. 예를 들어, 보안 속성을 테스트 할 때는 비정형 입력이므로 걱정하지 않아도됩니다. 비정형 입력에 대해 논리적으로 추론 할 수 없다면 좋은 적용 범위를 얻지 못할 것입니다.
  2. 구성 공간이 매우 크기 때문에 로컬로 테스트하기 전에 어떤 부품이 다른 부품에 영향을 줄 수 있는지 논리적으로 추론하여 부품으로 분해해야합니다.
  3. 제어 할 수없는 시스템의 엣지 케이스 동작을 설명하는 문서 만 있습니다. 그것들을 시뮬레이트 할 수는 있지만 외부 또는 의존이 실패 할 때 발생하는 문제는 법적 또는 윤리적 이유로 실패 할 수 없기 때문에 테스트 할 수 없습니다.

증거가없는 경험적 테스트는 기본적으로 증거를 대체합니다. 테스트 할 수있는 시스템을 설계 할 때는 "여기에서 X, Y 및 Z 테스트"로 증명의 일부를 채우는 증명 스케치를 작성합니다. 테스트 가능한 시스템을 설계하려면 논리적으로 추론 할 수 있어야합니다. 시스템을 테스트 할 수 없거나 입증 할 수없는 경우 설계자 / 건축가는 의도 한 용도에 적합하다고 말하는 비즈니스가 없습니다.


6

논리가 중요한 역할을하는 두 가지 중요한 필드는 다음과 같습니다.

  1. 공식 언어 사양 및 검증 .
  2. 고정 매개 변수 다루기 쉬운 클래스 .

Z

간단히 말해 : 1. 언어의 정의에는 논리가 필요합니다. 2 : 해당 절차의 정의에는 논리가 필요합니다. 3. 검증 절차에는 논리가 필요합니다.

나는 이것이 컴파일러 디자인과는 다르다는 것을 언급해야한다. ... 이것은 언어의 "정식"정의이다. 이것을하는 주된 이유는 언어 나 모델의 정확성을 증명하고 공식적인 증거를 가지고 있기 때문이다. 소프트웨어 모델을 검증하고 구현하기 전에 오류를 찾고 구현하기 전에 교착 상태를 다시 찾는 데 사용할 수 있습니다. 이것을 시뮬레이트하는 소프트웨어의 경우 NModel을 살펴볼 수 있습니다 .

이제 고정 매개 변수 다루기 쉬운 문제에서 논리로 작업 해야하는 이유는 고정 매개 변수 다루기의 클래스를 다른 수준의 논리로 나눌 수 있으며 서로 변환 할 수 있습니다. 로버트슨 ( Robertson)과 시모어 (Seymour) 정리 이후 가장 중요한 정리를 간단하게 나누고 결정할 수있는 논리의 전문가 는이 분야에서 Courcelle의 정리 입니다. 자세한 내용은 메타 알고리즘 정리 설문 조사 를 참조하십시오 .


논리를 사용하여 언어를 정의 할 수는 있지만 제 경험상 "중요한 역할"은 아닙니다. 논리가 FPT와 어떤 관련이 있는지 보지 못합니다.
Raphael

@Raphael, 귀하의 의견에 대한 답변이 한 줄 이상 걸리는 것으로 보았습니다. 나는 당신에게 대답했다고 생각하지만, 여전히 괜찮지 않다고 생각한다면, 나의 "공식적인"부분에 대해 말 해주세요. 저의 첫 번째 위키 링크가 충분하지 않다고 생각합니다. 더 많은 정보를 추가했습니다. 또한 두 번째 부분에서는 좋은 종이를 추가했습니다. 그것에 대해 더 알고 싶다면 읽을 수 있습니다.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.