Я читаю Software Foundations книгу и в Imp.v файл, есть это определение теоремы eq_id_dec следующим образом:Что означает ∀id1 id2: id, {id1 = id2} + {id1 ≠ id2}?
Theorem eq_id_dec : forall id1 id2 : id, {id1 = id2} + {id1 <> id2}.
Proof.
intros id1 id2.
destruct id1 as [n1]. destruct id2 as [n2].
destruct (eq_nat_dec n1 n2) as [Heq | Hneq].
Case "n1 = n2".
left. rewrite Heq. reflexivity.
Case "n1 <> n2".
right. intros contra. inversion contra. apply Hneq. apply H0.
Defined.
Означает ли эта теорема, что для любого id1 и id2 типа идентификатора, как id1 = id2 и id1! = id2 не может случиться? Я не уверен.
Итак, если мне нужно вызвать эту функцию, я должен передать значение идентификатора типа. Id - Id: nat -> id. Как бы я это сделал. Я делаю Eval Compute в (eq_id_dec (id 4) (id 5)). и не получается – elysefaulkner
Eval вычисляется в (eq_id_dec (Id 4) (Id 5)). – Ptival