proposition: Theorem tiles_solvable_iBPCP lt : tiles_solvable lt <-> iPCPb lt.
proof: Proof. split. + intros (ln & H1 & H2 & H3). rewrite tile_concat_itau in H3. exists (rev ln). rewrite <- Forall_forall. repeat split; auto. * apply Forall_rev; auto. * contradict H1; rewrite <- (rev_involutive ln), H1; auto. + intros (ln & H1 & H2 & H3). exists (rev ln). rewrite tile_concat_itau, rev_involutive. repeat split; auto. * contradict H2; rewrite <- (rev_involutive ln), H2; auto. * apply Forall_rev, Forall_forall; auto. Qed.
imports: List Arith Lia Undecidability.Synthetic.Definitions Undecidability.Shared.Libs.DLW(utils list_bool pos vec subcode sss) Undecidability.StackMachines.BSM(tiles_solvable bsm_defs bsm_utils bsm_pcp) Undecidability.PCP(PCP PCP_facts)