proposition: Lemma hfs_union_spec x y : hfs_mem y (hfs_union x) <-> exists z, hfs_mem z x /\ hfs_mem y z.
proof: Proof. unfold hfs_union. rewrite list2hfs_spec, in_concat. split. - intros [L [[z [<- H1]] % in_map_iff H2]]. exists z. split; now apply hfs_listing_spec. - intros [z [H1 % hfs_listing_spec H2 % hfs_listing_spec]]. exists (hfs_listing z). split; trivial. now apply in_map. Qed.
imports: Undecidability.FOL(Syntax.Facts Semantics.Tarski.FullFacts) Undecidability.FOL(Sets.ZF) Undecidability.FOL(ZF) Undecidability.FOL.TRAKHTENBROT(hfs) Undecidability.Shared.Libs.DLW.Utils(finite) Undecidability(Shared.ListAutomation) Lia