proposition: Fact hfs_mem_ext s t : s = t <-> forall x, x ∈ s <-> x ∈ t.
proof: Proof. rewrite <- (bt_cls_hfs_repr s), <- (bt_cls_hfs_repr t), bt_cls_equiv; simpl. rewrite bte_ext; split; intros H. + revert s t H; intros (s & Hs) (t & Ht) H (x & Hx); simpl in *. rewrite Hs, Ht; auto. + revert s t H; intros (s & Hs) (t & Ht) H x; simpl in *. rewrite Hs, Ht in H. specialize (H (bt_cls x)). rewrite (hfs_repr_bt_cls x) in H; auto. Qed.
imports: List Arith Lia Max Wellfounded Setoid Eqdep_dec Bool Undecidability.Shared.Libs.DLW.Utils(utils_tac utils_list finite) Undecidability.Shared.Libs.DLW.Vec(pos vec) Undecidability.Shared.Libs.DLW.Wf(wf_finite wf_chains) Undecidability.FOL.TRAKHTENBROT(notations fol_ops membership btree)