Будет ли это intros
[по цели a = b
] логически обоснованным?
Если я понимаю ваш вопрос, вы хотите знать, возможно ли иметьцель a = b
, позвоните intros contra
и превратите ее в цель H : a <> b |- False
.Это было бы правильно, но не выводимо в базовой конструктивной логике Кока для произвольных типов a
и b
: оно утверждает, что предложение a = b
поддерживает исключение двойного отрицания (~ (~ a = b) -> a = b
).Coq не поддерживает это, потому что это будет означать работу в другом логическом формализме.
Как неравенство индуктивно для использования destruct
?
Как отмечали yeputonsa <> b
определяется как a = b -> False
, а ложность индуктивно определяется как предложение без конструкторов;таким образом, уничтожение чего-то типа False
просто завершает доказательство.Кроме того, вызов destruct
для чего-то типа A -> B
примерно приводит к генерации цели типа A
, вводит это доказательство в подтекст для получения доказательства B
, а затем вызывает destruct
для этогодоказательство B
.В вашем случае это означает делать в точности то, что вы описали.
Почему невозможно просто сделать что-то вроде inversion G.
, как вы сделали бы с гипотезой S n = 0
?
Я предполагаю, что inversion
не так снисходителен, как destruct
, и не распространяется на последствия, как я объяснил выше.