Definition ss_ok (ss : SS.t) (interp: positive -> COINCpoint) :=
  forall s, SS.mem s ss = true ->
  forall cp, memCP cp s = true ->
    app coinc (interp_CP cp interp).

(* Specifications: *)
Lemma consHdInterpOK : forall (cp : cartesianPower positive 1) (x : tST) interp, consHeadCP (interp_CP cp interp) (interp_CP x interp) = interp_CP (consHeadCP cp x) interp.
Lemma ss_ok_inter_ok1 : forall ss interp s1 s2 x (p : cartesianPower positive 1), ss_ok ss interp -> SS.In s1 ss -> pick_variety_aux (S.inter s1 s2) x = true -> S.mem p s1 = true -> app_1_n coinc (interp_CP p interp) (interp_CP x interp).
Lemma ss_ok_inter_ok2 : forall ss interp s1 s2 x (p : cartesianPower positive 1), ss_ok ss interp -> SS.In s2 ss -> pick_variety_aux (S.inter s1 s2) x = true -> S.mem p s2 = true -> app_1_n coinc (interp_CP p interp) (interp_CP x interp).
Lemma mca_pick_variety_aux_pca : forall m cp s1 s2 ss x interp, ss_ok ss interp -> SS.In s1 ss -> SS.In s2 ss -> memCPAux (S m) cp (S.union s1 s2) = true -> pick_variety_aux (S.inter s1 s2) x = true -> pred_conj_aux coinc (S (S m)) (interp_CP cp interp) (interp_CP x interp).