Я хочу создать список смешанных типов boolean
и nat
. Этот список должен содержать элементы некоторого супертипа: boat
, где каждый boolean
является boat
, а каждый nat
является boat
.
Проблема, с которой я столкнулся, заключается в том, что этот супертип boat
должен иметь boat_eq_dec
, что означает, что должен быть способ решить, являются ли два boat
одинаковыми или разными. Поскольку nat
и boolean
оба имеют такое решение по равенству, у супертипа также должен быть один.
В приведенном ниже примере я создал супертип, но не могу показать лемму, решающую равенство Lemma boat_eq_dec : forall x y : Boat, {x = y} + {x <> y}.
Inductive Boat : Set :=
| is_bool (inp: bool)
| is_nat (inp: nat).
Как правильно определить этот супертип или показать лемму?