sig
  type interfid =
      Matcher of int
    | Repress1
    | Repress2
    | Bound1
    | Bound2
    | PermuteIn
    | PermuteOut
  val get_interf_character :
    Protein.Abstract.LBDR.interfid -> Protein.Abstract.interf_character
  type singleinitstate = ActiveInitState | RepressedInitState
  and initstate =
    Protein.Abstract.LBDR.singleinitstate *
    Protein.Abstract.LBDR.singleinitstate
  and singlestate = ActiveState | RepressedState | BoundState of string
  and state = {
    permutestate : bool;
    proj1state : Protein.Abstract.LBDR.singlestate;
    proj2state : Protein.Abstract.LBDR.singlestate;
  } 
  and permstate = { proj1 : int array; proj2 : int array; } 
  and extremity_arrangement = AABB | ABBA
  and config = {
    num_matchers : int;
    permon : Protein.Abstract.LBDR.permstate;
    permoff : Protein.Abstract.LBDR.permstate;
    exarr : Protein.Abstract.LBDR.extremity_arrangement;
  } 
  and cons = Protein.Abstract.LBDR.initstate * Protein.Abstract.LBDR.config
  val num_lbprojs : int
  val num_sbprojs : int
end