discriminate
전술이 커튼 뒤에 어떻게 작동하는지 궁금합니다. 그래서 나는 실험을했다.차별화 된 전술은 어떻게 작동합니까?
먼저 간단한 유도 정의 :
Print l1.
l1 =
fun H : A = B =>
(fun H0 : False => False_ind False H0)
(eq_ind A
(fun e : AB => match e with
| A => True
| B => False
end) I B H)
: A = B -> False
:
Lemma l1: A=B -> False.
intro.
discriminate.
Defined.
이의이 증거의 모습을 보자 : 다음
Inductive AB:=A|B.
discriminate
전술에 의해 증명 될 수있는 간단한 보조 정리
이것은 다소 복잡해 보이며 여기서 무슨 일이 일어나고 있는지 이해하지 못합니다. . 따라서 좀 더 명시 적으로 같은 보조 정리를 증명하기 위해 노력 :
Lemma l2: A=B -> False.
apply (fun e:(A=B) => match e with end).
Defined.
하자 다시 COQ이로 만든 것을 참조 :
Print l2.
l2 =
fun e : A = B =>
match
e as e0 in (_ = a)
return
(match a as x return (A = x -> Type) with
| A => fun _ : A = A => IDProp
| B => fun _ : A = B => False
end e0)
with
| eq_refl => idProp
end
: A = B -> False
가 지금은 완전히 혼란 스러워요. 이것은 여전히 더 복잡합니다. 누군가 여기서 일어나는 일을 설명 할 수 있습니까?
매우 자세한 설명. 감사. – eponier
위의 마지막 용어가 "차별"을 명확하게하는 가장 짧은 방법이라고 말할 수 있습니까? – Cryptostasis
@Cryptostasis 나는 우리가 할 수 있다고 생각한다. (재미있는 H : A = B => [위의 용어].)에 도달하고'(fun H : A = B => H in (_ = y) 으로 일치하는 y를 반환하십시오. A => True | B => False end | eq_refl => 끝납니다.'. –