Propositions as types principle