Global Instance IB : interp (string bool) (fun _ => []) :=
{|
i_f b s := b :: s ;
i_e := nil;
i_P u v := derivable R u v ;
i_Q := BPCP' R
|}.

(* Specifications: *)
Lemma IB_prep rho s t :
eval rho (prep s t) = s ++ eval rho t.
Lemma IB_enc rho s :
eval rho (enc s) = s.
Lemma IB_drv rho t1 t2 :
rho ⊨ (Pr t1 t2) <-> derivable R (eval rho t1) (eval rho t2).
Lemma IB_F1 rho :
rho ⊫ F1.
Lemma IB_F2 rho :
rho ⊫ F2.
Lemma IB_F3 rho :
rho ⊨ F3.
Lemma IB_F rho :
rho ⊨ F -> BPCP' R.
Lemma drv_val domain eta (I : interp domain eta) rho u v :
derivable R u v -> rho ⊨ (F1 ==> F2 ==> Pr (enc u) (enc v)).
Theorem BPCP_valid :
BPCP R <-> valid F.