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