The sharing of structure in theorem-proving programs