Existem várias maneiras de definir uma estrutura matemática, dependendo de quais propriedades você considera a definição. Entre caracterizações equivalentes, qual você considera a definição e qual você considera uma caracterização alternativa não é importante.
Na matemática construtiva, é preferível escolher uma definição que facilite o raciocínio construtivo. Para números naturais, a forma básica de raciocínio é a indução, o que torna a definição tradicional de zero ou sucessor muito adequada. Outros conjuntos de números não têm essa preferência.
Ao raciocinar sobre quocientes, em configurações não construtivas, é comum dizer "escolha um membro da classe de equivalência". Em um cenário construtivo, é necessário descrever como escolher um membro. Isso facilita as definições que constroem um objeto para cada membro do tipo, em vez de construir classes de equivalência.
Z
Z:=N2/{((x,y),(x′,y′))∣x+y′=x′+y}
Embora isso tenha uma sensação de organização (não "isso ou aquilo"), para o raciocínio construtivo, é mais simples se a igualdade de objetos coincide com a igualdade de representações; portanto, podemos definir os números inteiros relativos como um número natural ou negativo de um número natural menos um:
Inductive Z1 :=
| Nonnegative : nat -> Z1 (* ⟦Nonnegative x⟧ = ⟦x⟧ *)
| Negative : nat -> Z1. (* ⟦Negative x⟧ = -⟦x⟧-1 *)
No entanto, essa definição é estranhamente assimétrica, o que pode tornar preferível admitir duas representações diferentes para zero:
Inductive Z2 :=
| Nonnegative : nat -> Z2 (* ⟦Nonnegative x⟧ = ⟦x⟧ *)
| Nonpositive : nat -> Z2. (* ⟦Nonpostitive x⟧ = -⟦x⟧ *)
Ou podemos construir os números inteiros relativos sem usar os naturais como um bloco de construção:
Inductive Pos3 :=
| I : Pos3 (* ⟦I⟧ = 1 *)
| S3 : Pos3 -> Pos3 (* ⟦S3 x⟧ = ⟦x⟧+1 *)
Inductive Z3 :=
| N3 : Pos3 -> Z3 (* ⟦N3 x⟧ = -⟦x⟧ *)
| O3 : Z3 (* ⟦O3⟧ = 0 *)
| P3 : Pos3 -> Z3 (* ⟦P3 x⟧ = ⟦x⟧ *)
Os usos da biblioteca padrão Coq ainda outra definição: constrói inteiros positivos da sua notação de base 2 é, como o dígito 1 seguido por uma sequência de dígitos 0 ou 1. É então constrói Z
como Z3
a partir Pos3
de cima. Essa definição também possui uma representação exclusiva para cada número inteiro. A escolha de usar notação binária não é para facilitar o raciocínio, mas para produzir código mais eficiente quando programas são extraídos de provas.
A facilidade de raciocínio é uma motivação para escolher uma definição, mas nunca é um fator intransponível. Se alguma construção facilitar uma prova específica, é possível usar essa definição nessa prova específica e provar que a construção é equivalente à outra construção que foi escolhida originalmente como definição.
NQ
N×N∗=?=
Q
Os números reais são uma chaleira diferente, porque não são construtíveis. É impossível definir os números reais como um tipo indutivo (todos os tipos indutivos são denumeráveis). Em vez disso, qualquer definição dos números reais deve ser axiomática, ou seja, não construtiva. É possível construir subconjuntos denumeráveis dos números reais; a maneira de fazer isso depende do subconjunto que você deseja construir.