sig
  type variable = Proposition.t
  type term = Proposition.t
  type substituable = t
  val substitute : substituable -> var:variable -> by:term -> substituable
end