A principal razão para evitar conjuntos na semântica de tipos é que uma linguagem de programação típica nos permite definir funções recursivas arbitrárias. Portanto, seja qual for o significado de um tipo, ele deve ter a propriedade de ponto fixo. O único conjunto com essa propriedade é o conjunto de singleton.
Para ser mais preciso, um valor definido recursivamente do tipo (onde tipicamente é um tipo de função) é definido por uma equação de ponto fixo onde pode seja qualquer programa. Se for interpretado como o conjunto , esperamos que todo tenha um ponto fixo. Mas o único conjunto com essa propriedade é o singleton.τ τ v = Φ ( v ) Φ : τ → τ τ T f : T → T Tvττv = Φ ( v )Φ : τ→ ττTf: T→ TT
Claro, você também pode perceber que o culpado é a lógica clássica. Se você trabalha com a teoria dos conjuntos intuicionista, é consistente assumir que existem muitos conjuntos com propriedade de ponto fixo. De fato, isso foi usado para fornecer semântica da linguagem de programação, veja, por exemplo,
Alex Simpson, Adequação Computacional para Tipos Recursivos em Modelos de Teoria Intuicionista de Conjuntos , In Annals of Pure and Applic Logic, 130: 207-275, 2004.