\begin{tomcode}[caption=Exemple de \emph{mapping} pour les entiers de Peano,label=code:mapping] %typeterm Nat { implement { JNat } is_sort(s) { (s instanceof JNat) } equals(t1,t2) { (t1.equals(t2)) } } %typeterm NatList { implement { JNatList } is_sort(s) { (s instanceof JNatList) } equals(t1,t2) { (t1.equals(t2)) } } %op Nat zero() { is_fsym(s) { (s instanceof Jzero) } make() { new Jzero() } } %op Nat suc(n:Nat) { is_fsym(s) { (s instanceof Jsuc) } get_slot(n,s) { ((Jsuc)s).n } make(t0) { new Jsuc(t0) } } %op Nat plus(n1:Nat,n2:Nat) { is_fsym(s) { (s instanceof Jplus) } get_slot(n1,s) { ((Jplus)s).n1 } get_slot(n2,s) { ((Jplus)s).n2 } make(t0,t1) { new Jplus(t0,t1) } } %oplist NatList concNat(Nat*) { is_fsym(s) { (s instanceof JconcJNat) } get_head(l) { ((JconcJNat)l).head } get_tail(l) { ((JconcJNat)l).tail } is_empty(l) { ((JconcJNat)l).isEmpty() } make_empty() { new JconcJNat() } make_insert(t,l) { new JconcJNat(t,l) } } \end{tomcode}