したがって、サブゴールに誤った仮説があります。これは、異なるコンストラクター間の同等性です。サブゴールを終了するにはどうすればよいですか?
H: List.Not_Empty Bit.Bit Bit.Zero (List.Empty Bit.Bit) = List.Empty Bit.Bit
したがって、サブゴールに誤った仮説があります。これは、異なるコンストラクター間の同等性です。サブゴールを終了するにはどうすればよいですか?
H: List.Not_Empty Bit.Bit Bit.Zero (List.Empty Bit.Bit) = List.Empty Bit.Bit
これは私が標準ライブラリから慣れているCoqリストのようには見えないので、List.Not_EmptyとList.Emptyの定義を知らなければあなたを助けるのは難しいでしょう。List.Empty
を表すとをnil
正しくList.Not_empty
推測するcons
と、2つのコンストラクターが等しくないことを示すだけです。たとえば、次のことができます。
congruence.
または単に:
inversion H.
ただし、もっと複雑な場合は、これら2つが失敗する可能性があります。したがって、次のいずれかを実行する必要があります。
SearchAbout List.Not_Empty.
それについて見出語が存在するかどうかを確認するため、または次のことを行います。
unfold List.Not_Empty, List.Empty in H.
定義を展開し、詳細を理解するため(このサブプルーフが存在しない場合は、有用と思われるため、補題として保存する可能性があります)。