φ[x := 0] → [ ∀n [ φ[x := n] → φ[x := n'] ] → ∀x φ ], 여기서 φ는 임의의 논리식이고, '는 다음수 함수입니다.
그런데 n → zero( ), succ( n )이니까 이렇게 바꿔보면 안 될까요?
∀n [ φ[x := n] → φ[x := zero( )] ] ∧ ∀n [ φ[x := n] → φ[x := succ( n )] ] → ∀x φ.
φ[x := 0] → [ ∀n [ φ[x := n] → φ[x := n'] ] → ∀x φ ], 여기서 φ는 임의의 논리식이고, '는 다음수 함수입니다.
그런데 n → zero( ), succ( n )이니까 이렇게 바꿔보면 안 될까요?
∀n [ φ[x := n] → φ[x := zero( )] ] ∧ ∀n [ φ[x := n] → φ[x := succ( n )] ] → ∀x φ.
일단 세번째 줄의 식이 성립하나요? 아니라면 귀찮게 해서 죄송합니다.
그런데 n->0, succ(n) 이게 implication이랑 좀 헷갈리는 거 같아요..
다른 기호를 좀 고안해보시면 어떨런지..
implication은 식에서 식으로 가고 이것은 항에서 항으로 가는 거라서 타입으로 구분할 수 있습니다.
그렇긴 한데.. 그래도 웬만하면 구분을 좀 ㅜㅜ 사람은 컴퓨터가 아니라서 눈에 바로 안 들어오거든요
∀n [ φ[x := n] → φ[x := zero( )] ]는 φ[x := zero( )]보다 일반적으로 강한 조건이라고 생각되네요.
zero()는 굳이 n에 bind되지 않으니 succ(n)과 달리 저렇게 쓸 필요는 없을 것 같습니다.
이상한 글 읽으시느라 고생하셨습니다. 정말 감사합니다.
저는 한 번 바인딩해보고 싶었어요.
ㅜ 제가 바보라서 그런 걸 수도 있어요
생각해보니 임의의 x에 대하여 식 φ가 항상 거짓이면 성립하지 않네요.
그런데 x -> t1, t2, ... 일 때 귀납법을 다른 방법으로 일반화할 수는 없나요?
t1에 bind되는 variable들에 대해서 forall 문을 만들어주세요.
zero()에는 종속변수가 없으니 φ[x := zero( )]처럼 쓰시구요
제가 생각하기에는 그렇네요
정말 감사합니다만, "a ::= zero( ), succ( a ). b ::= zero( ), succ( b )."일 때 "Main( a, b )?"에 귀납법을 적용하면 어떻게 됩니까?