일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 러스트기초
- 머신러닝기초
- 컨트렉트 배포 자동화
- 체인의정석
- 컨트렉트 동일한 함수이름 호출
- ethers
- 스마트컨트렉트테스트
- ambiguous function description
- chainlink 설명
- git rebase
- 러스트 기초 학습
- rust 기초
- multicall
- 스마트컨트렉트 함수이름 중복 호출
- ethers websocket
- nest.js설명
- nestjs 튜토리얼
- 스마트컨트렉트프록시
- 러스트 기초
- 스마트컨트렉트 예약어 함수이름 중복
- SBT표준
- Vue.js
- ethers typescript
- ethers type
- 깃허브명령어
- 스마트 컨트렉트 함수이름 중복
- ethers v6
- 프록시배포구조
- vue기초
- Vue
- Today
- Total
체인의정석
1차 논리 , First Order Logic 에 대해 이해해보자! 본문
논문 같은걸 읽다보면 복잡한 기호들이 있다. 이런걸 읽으려면 어떻게 할지 고민하고 있었는데 인공지능 수업시간에 딱 첫 주문 로직부터 배우는 부분이 상황을 수식을 표현하는 것이였다.
먼저 기본 로직들의 의미를 살펴보도록 하겠다.
- 양화자 (Quantifiers):
- ∀ (전칭 양화자, Universal Quantifier): "모든"이라는 의미로, '∀x, P(x)'는 "모든 x에 대해 P(x)가 참이다"라는 의미입니다.
- ∃ (존재 양화자, Existential Quantifier): "어떤 것이 존재하여"라는 의미로, '∃x, P(x)'는 "어떤 x가 존재하여 P(x)가 참이다"라는 의미입니다.
- 명제 연산자 (Propositional Connectives):
- ∧ (논리곱, Conjunction): "그리고"라는 의미로, 'P ∧ Q'는 "P이면서 Q이다"입니다.
- ∨ (논리합, Disjunction): "또는"이라는 의미로, 'P ∨ Q'는 "P이거나 Q이다"입니다.
- ¬ (부정, Negation): "아니다"라는 의미로, '¬P'는 "P가 아니다"입니다.
- → (조건부, Conditional): "만약 ...이면"이라는 의미로, 'P → Q'는 "P이면 Q이다"입니다.
- ↔ (양조건부, Biconditional): "당연히 ...는"이라는 의미로, 'P ↔ Q'는 "P이면서 Q이고, Q이면서 P이다"입니다.
- 관계 (Relations) 및 함수 (Functions):
- 관계와 함수는 변수나 상수들 간의 특정한 관계나 연산을 나타내는데 사용됩니다. 예를 들어, 'R(x, y)'는 x와 y가 어떤 관계 R을 가지고 있음을 나타내며, 'f(x)'는 x에 함수 f를 적용한 결과를 나타냅니다.
- 개체 상수 (Constants) 및 변수 (Variables):
- 개체 상수는 특정 개체를 지칭하는데 사용되며, 예를 들어 'a', 'b', 'c' 등이 있습니다.
- 변수는 어떤 개체를 대표하는데 사용되며, 예를 들어 'x', 'y', 'z' 등이 있습니다.
- 괄호 (Parentheses):
- 괄호 '(', ')'는 연산의 우선 순위를 명시하는데 사용됩니다.
이러한 기호들을 조합하여 1차 논리의 수식을 만들 수 있습니다. 예를 들어, ∀x, ∃y, R(x, y)는 "모든 x에 대해 어떤 y가 존재하여 x와 y는 관계 R을 가진다"라는 의미를 가지게 됩니다.
출처 : 챗 GPT
이러한 기본 기호들을 익히고 나서 다른 분의 블로그를 보고 학습하도록 하겠다.
다른 블로그들에 잘 나와있는데
Object, Relation, Function 이렇게 3가지가 기본이라고 한다.
객체, 관계 , 그리고 함수이다.
1차 논리의 경우 객체들과 관계를 중점으로 구성이 된다고 한다.
- 객체(Objects): 사람, 집, 수, 이론, 색, 야구, 전쟁, 세기, ...
- 관계(Relations): 빨갛다. 둥글다, 가짜, 다층, ... / 형제이다, ~보다 크다, ~안에, ~의 일부, ...
- 함수(Functions): ~의 아버지, ~의 절친, ~보다 하나 많다, ~의 시작, ...
출처 : https://doorbw.tistory.com/76
Function은 value를 리턴하고, Realtion은 true/false를 리턴한다고 한다.
- 존재론적 함의 (ontological commitment) 과 인식론적 함의(epistemological)
논리는 위와 같은 기준으로 나뉠 수 있다는데 다음과 같은 특징이 있다.
존재론적 - 객체들과 그 관계들로 이루어짐
인식론적 - 하나의 문장은 하나의 사실을 나타냄
기호의 종류는 아래 3가지라고 한다.
- 객체를 나타내는 상수 기호(Constant symbol)
- 관계를 나타내는 술어 기호(Predicate symbol)
- 함수를 나타내는 함수 기호(Function symbol)
출처 : https://doorbw.tistory.com/76
Term : 하나의 객체를 의미
Atomic Sentence : Term + 기호 로 이루어진 문장, 더 복잡한 구조로 Complex Sentence로도 사용가능 이 경우 괄호가 여러개인 수식
Universal Quntification : 전칭 한정사 , 객체의 이름을 일일히 작성하는 대신 한번에 칭하는 것 (전칭)
모든 왕은 => 사람이다.
예를 들어, 책을 보는 사람은 모두 똑똑하다를 나타내면,
Ax readBook(x) => smart(x)
입니다. 하지만,
Ax readBook(x) ∧ smart(x)
와 같이 나타내면, 우리가 의도했던 바와 달리, 세상에 존재하는 모든 것이 smart 하게 됩니다.
다시말해, 아래의 문장은, 모든 사람은 책을 읽고 모든 사람은 똑똑하다라는 의미를 나타냅니다.
출처 : https://doorbw.tistory.com/76
Existential quantification : 존재 한정사로 일부 객체들에 대한 주장을 표현
전청 한정사가 모든 해당 객체를 한번에 전칭하는 것이라면 존재 한정사는 일부에 대한 표현을 의미한다고 한다.
위 블로그 글에 나온 것 처럼 ~를 만족하는 x가 존재한다 나 어떤 x에 대해 라고 읽는 다면 최소 1개의 x는 존재한다. 이런식으로 Ex를 사용하면 된다고 한다.
한정사의 중첩 :
해당 블로그를 보니 어려운 수식도 조금은 이해가 갔다. 결국 객체를 지칭할때 저런 한정사들을 사용하며 전체를 지칭할지 일부를 지칭할지를 나타내기에 뒤에 내용이 같더라도 한정사에 따라 내용이 달라진다는 것으로 이해했다.