Как указано в ответе Винца, вы можете найти теорему о биективности около plus
непосредственно в стандартной библиотеке Coq. Вы также можете доказать это напрямую, используя примитивную тактику и математическую индукцию на a
следующим образом.
Theorem plus_l_bij: forall a b c : nat, a + b = a + c -> b = c.
Proof.
induction a as [|a'].
intros b c H. apply H.
intros b c H. simpl plus in H. inversion H. apply IHa' in H1. apply H1.
Qed.
После induction a
, базовый вариант a = 0
тривиально.
Доказательство для второго случая a = S a'
, перестраивает
S a' + b = S a' + c
в
S (a' + b) = S (a' + c)
, а затем удаляет конструктор S
используя его биективность. Наконец, предположение индукции может быть применено для завершения доказательства.