; WITHOUT USING ITERATION, give a complete development (specification, design, code and proof) for a
; procedure which inputs two positive integers n and m, and which returns the largest number which can
; be formed from any m digits in n.
; For example, if n = 11111 and m = 3, then your (main) program will return 111. If n = 14253 and m = 2,
; your program will return 54. Of course m cannot exceed the number of digits in n.
; For this problem, whose solution almost certainly requires auxilliary functions, I want to see
; justification for the functional decomposition which leads to the auxilliary functions. I want to see
; a specification and an induction argument for each recursive function, and I want your certification
; arguments to make full use of pre- and post-conditions for the auxilliary functions whenever these are
; called. Give clear definitions of any terms you introduce to describe your functions.
; You are perfectly free to use ("built-in") scheme primitives such as quotient and expt -- there is
; no need to build and prove an exponentiation function, for example.
; As always, I need to see working tests of your functions.