sig
  type variable
  type term
  type substituable
  val substitute :
    Substitution.Substituable.substituable ->
    var:Substitution.Substituable.variable ->
    by:Substitution.Substituable.term ->
    Substitution.Substituable.substituable
end