mapping.tex 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. \begin{tomcode}[caption=Exemple de \emph{mapping} pour les entiers de Peano,label=code:mapping]
  2. %typeterm Nat {
  3. implement { JNat }
  4. is_sort(s) { (s instanceof JNat) }
  5. equals(t1,t2) { (t1.equals(t2)) }
  6. }
  7. %typeterm NatList {
  8. implement { JNatList }
  9. is_sort(s) { (s instanceof JNatList) }
  10. equals(t1,t2) { (t1.equals(t2)) }
  11. }
  12. %op Nat zero() {
  13. is_fsym(s) { (s instanceof Jzero) }
  14. make() { new Jzero() }
  15. }
  16. %op Nat suc(n:Nat) {
  17. is_fsym(s) { (s instanceof Jsuc) }
  18. get_slot(n,s) { ((Jsuc)s).n }
  19. make(t0) { new Jsuc(t0) }
  20. }
  21. %op Nat plus(n1:Nat,n2:Nat) {
  22. is_fsym(s) { (s instanceof Jplus) }
  23. get_slot(n1,s) { ((Jplus)s).n1 }
  24. get_slot(n2,s) { ((Jplus)s).n2 }
  25. make(t0,t1) { new Jplus(t0,t1) }
  26. }
  27. %oplist NatList concNat(Nat*) {
  28. is_fsym(s) { (s instanceof JconcJNat) }
  29. get_head(l) { ((JconcJNat)l).head }
  30. get_tail(l) { ((JconcJNat)l).tail }
  31. is_empty(l) { ((JconcJNat)l).isEmpty() }
  32. make_empty() { new JconcJNat() }
  33. make_insert(t,l) { new JconcJNat(t,l) }
  34. }
  35. \end{tomcode}