Set theoretic programming languages