Начинать, наверное, надо с изучения литературы по таким языкам, как Coq, Agda2, тот же BitC. К сожалению, на русском такую доходчивую информацию я не видел.
"The Algebra of Programming" вроде как фундаментальна в этом плане, правда, говорят, трудное чтиво...