fact
let rec fact (n:int):int = match n with
|0 -> 1
|_ -> n*(fact (n-1))
;;
type nat_peano = O | S of nat_peano;;
On distinguera deux concept clés dans la réalisation d'une fonction:
int_v_nat_peano
int_v_int_peano(n)
est le naturel de Peano correspondant à l'entier int_v_int_peano(0)=O
int_v_int_peano(4)=S(S(S(S O)))
int_v_int_peano(0)=O
int_v_int_peano(p+1)=S(int_v_int_peano(p))
int_v_nat_peano
termine.nat_peano
add
add n1 n2
est le naturel de Peano correspondant à la somme des entiers add O O=O
add x O = x
add S(O) S(O) = S (S O))
add O O = O
add S(x) O = S(x)
add O S(y) = S(y)
add x S(y) = S(add x y)
add x S(y) = add S(x) y)
add S(x) y = S(add x y)
add S(x) y = add x S(y)
add S(x) S(y) = S(S(add x y))
add O O = O
add S(x) O = S(x)
add O S(y) = S(y)
add x S(y) = S(add x y)
add x S(y) = add S(x) y)
add S(x) y = S(add x y)
add S(x) y = add x S(y)
add S(x) S(y) = S(S(add x y))
add O O = O
add S(x) O = S(x)
add O S(y) = S(y)
add x S(y) = S(add x y)
add x S(y) = add S(x) y)
add S(x) y = S(add x y)
add S(x) y = add x S(y)
add S(x) S(y) = S(S(add x y))
add O O = O
add S(x) O = S(x)
add O S(y) = S(y)
add x S(y) = S(add x y)
add x S(y) = add S(x) y)
add S(x) y = S(add x y)
add S(x) y = add x S(y)
add S(x) S(y) = S(S(add x y))
add O O = O
add S(x) O = S(x)
add O S(y) = S(y)
add x S(y) = S(add x y)
add x S(y) = add S(x) y)
add S(x) y = S(add x y)
add S(x) y = add x S(y)
add S(x) S(y) = S(S(add x y))
puissance
mult
mult x y = x*y
mult x 0 = 0
mult 0 0 = 0
mult 0 p = 0
mult q 0 = 0
mult p q = (mult (p-1) (q-1)) + p + q - 1
mesure p q = min(p,q)
On suit toujours à peu près le même modèle
f(0)=...
f(p+1)=...f(p)...
puiss2
Ce cours est sous licence Creative Commons CC BY-SA 4.0 Vous êtes libre de le réutiliser pour votre usage personnel.