Advertisement
Guest User

Untitled

a guest
Jun 27th, 2017
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.11 KB | None | 0 0
  1. let val plus = \(n:nat) \(m:nat) rec m {
  2. z => n
  3. | s(x) with y => s(y)
  4. }
  5. in let val pred = \(n : nat) rec n {
  6. z => z
  7. | s(x) with y => x
  8. }
  9. in let val minus = \(n:nat) \(m:nat) rec m {
  10. z => n
  11. | s(y) with r => pred(r)
  12. }
  13. in let val lte = \(a:nat) rec a {
  14. z => \(b:nat) s(z)
  15. | s(x) with f => \(b:nat) rec b {
  16. z => z
  17. | s(y) with r => f(y)
  18. }
  19. }
  20. in let val modAux =
  21. \(gas:nat) rec gas {
  22. z => \(a:nat) \(b:nat) a
  23. | s(y) with f => \(a:nat) \(b:nat) rec lte(b)(a) {
  24. z => a
  25. | s(j) with k => f (minus(a)(b)) (b)
  26. }
  27. }
  28. in let val mod = \(a:nat) \(b:nat) modAux (plus (a) (b)) (a) (b)
  29. in let val gcdAux = \(gas:nat) rec gas {
  30. z => \(a:nat) \(b:nat) a
  31. | s(y) with r => \(a:nat) \(b:nat) rec b {
  32. z => a
  33. | s(y) with p => r (b) (mod (a) (b))
  34. }
  35. }
  36. in let val gcd = \(a:nat) \(b:nat) gcdAux (plus (a) (b)) (a) (b)
  37. in gcd (s(s(s(s(s(s(s(s(s(s(s(s(z)))))))))))))
  38. (s(s(s(s(s(s(s(s(z)))))))))
  39. end end end end end end end end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement