proposition: Lemma FST_bunion_eq T a a' b b' c : FSTeq <<= T -> T ⊢ a ≡ a' -> T ⊢ b ≡ b' -> T ⊢ is_bunion a b c -> T ⊢ is_bunion a' b' c.
proof: Proof. intros HT HA HB HC. apply CI. apply CI. - prv_all x. apply II. apply CE1, CE1 in HC. apply (AllE x) in HC. cbn in HC. subsimpl_in HC. eapply IE. apply (Weak HC); auto. eapply FST_eq_elem; auto. apply FST_refl'; auto. apply FST_sym'; auto. apply (Weak HA). auto. - prv_all x. apply II. apply CE1, CE2 in HC. apply (AllE x) in HC. cbn in HC. subsimpl_in HC. eapply IE. apply (Weak HC); auto. eapply FST_eq_elem; auto. apply FST_refl'; auto. apply FST_sym'; auto. apply (Weak HB). auto. - prv_all x. apply II. apply CE2 in HC. apply (AllE x) in HC. cbn in HC. subsimpl_in HC. rewrite imps in HC. apply (DE HC). + apply DI1. eapply FST_eq_elem; auto. apply FST_refl'; auto. apply (Weak HA). auto. + apply DI2. eapply FST_eq_elem; auto. apply FST_refl'; auto. apply (Weak HB). auto. Qed.
imports: Undecidability.FOL.Syntax.Facts Undecidability.FOL.Semantics.Tarski.FullFacts Undecidability.FOL.Deduction.FullNDFacts Undecidability.FOL.Sets.FST Undecidability.FOL.FST Undecidability.FOL.Reductions.PCPb_to_FST Undecidability.PCP(PCP Util.PCP_facts Reductions.PCPb_iff_dPCPb) Undecidability(Shared.ListAutomation)