For example if they wanted you to implement a back-pack solution and it was specifically phrased like that as part of the contract (via perhaps associated requirements) then it might be reasonable to document which one you chose but not provide how you implemented it.
However if you implemented a standard business application and there are no specific contractual (or implicitly contractual requirements because it wasn't explicit) and thus the customer thinks you should give then the source code - then no.
1- Is there a specific contractual obligation
2- How significant is the algorithm in terms of the work product.
3- What is your business relationship with the client? So for example if you expect to get jobs from them for the next 10 years then you might want to give something up. But if you want to sell the product to 10 competitors to the client then probably not.
Thank you for your answer.1) There was no contractual obligation at the start of writing the source code, only after I had started was this asked for.
2)Without the algorithm the programe wouldn't work in anyway.3) first time I have worked for this client, he is proving most troublesome and I cannot see any need for me in the next ten years (although a memeber of his team is planning on jumping ship and maybe taking me with him).
In the UK when working with the UK Government, you have to keep the bespoke source code with a trusted third party (e.g. a solicitor, with the source code on a CD/memory stick). The UK Government can only access that source code if the bespoke software development company fails. This allows the UK Government to keep its investment secure as they can take the source code to another bespoke development company, if needed.
Hope that provides an alternative solution which may be acceptable to your client.