Describir: Generic Programs and Proofs