2015-06-03 2 views
2

Я смущен Коком по пути, связанным с экзистенциальной количественной оценкой.Как «исключить» в Coq работу над квантором существования?

У меня есть предикат P и предположение H

P : nat -> Prop 
H : exists n, P n 

в то время как текущая цель состоит в том (независимо)

(Some goal) 

Если я хочу, чтобы создать экземпляр п в Н, Я сделаю

elim H. 

Однако после ликвидации текущая цель

forall n, P n -> (Some goal) 

Похоже, что Coq преобразует квантор существования в универсальный. Я знаю, что (forall a, P a -> Q a) -> ((существует a, P a) -> Q a) из моих ограниченных знаний по логике первого порядка. Но обратное предложение кажется неправильным. Если «forall» одно и «существует» не эквивалентны, почему Coq сделает такое преобразование?

Удаляет ли «изгнание» в Coq цель, чтобы доказать ее? Или кто-нибудь может показать, почему ((существует a, P a) -> Q a) -> (forall a, P a -> Q a) выполняется в логике первого порядка?

+0

Ответ от @Ptival объясняет это хорошо. Также обратите внимание, что вам просто нужно добавить 'intros.', чтобы получить' n' в вашем контексте. – larsr

ответ

3

Может быть недостающим ключом является то, что цель:

forall n, P n -> (Some goal) 

следует читать как:

FORALL п, (Р п -> (Некоторые цели))

и не как :

(forall n, P n) -> (Some goal) 

То есть, цель вы получаете только дает произвольное n и доказательство P n, который действительно является правильным способом устранить экзистенциальный (вы не знаете значения свидетеля, поскольку это может быть любое значение, которое делает P правдой, вы просто узнаете, что есть n и что P n содержит).

Наоборот, последний предоставит вам функцию, которая может построить P n для любого n, который вы передаете, что действительно более сильное утверждение, чем тот, который у вас есть.

+0

Что делать, если P выполняется только для двух значений nat, но только один может сделать вывод (какая-то цель)? Если цель преобразуется в стиль «forall», я должен доказать, что оба случая верны. Так делает Coq агрессивное обращение? – xywang

+0

@xywang No. Когда вы устраняете квантор существования, вам предоставляется абстрактный, произвольный 'nat'. Вы ничего не знаете о том, что это такое, просто «P» держится на нем. Поэтому вам нужно доказать «какую-то цель» только с тем знанием, что 'существует nat, на котором находится P». Если вам нужно знать, какой 'nat' должен доказать' Некоторая цель', то ваше утверждение теоремы слишком общее, и вам нужно больше информации, чем дает экзистенциальная гипотеза. – Ptival