In studying logic to understand verifying programs I have found that there are books on logic targeted at Computer Science e.g.Logic in Computer Science: Modelling and Reasoning about Systems Mathematical Logic for Computer Science Computability and Logic Handbook of Practical Logic and Automated Reasoning With regards to books on understating theorems targeted at Computer Science I find only one that may fit. As I don't have the book I can't say for sure.Handbook of Logic and Proof Techniques for Computer Science Are there any books for understating theorems targeted at Computer Science? In other words are there books for understating syntax, semantics and construction of theorems that don't rely on a heavy math background and that give examples more from the world of computer science and explain in a style more natural to a person in computer science.EDITAfter seeking more on this topic I have come upon the phrases informal mathematics and mathematical discourse which are starting to turn up useful info from Google. In particular the following: Understanding Informal Mathematical Discourse found at Understanding Informal Mathematical Proofs
Looking for books on creating and understanding theorems targeted at Computer Science
logic;proof techniques;books
What do you expect from such a book? The comment by JeffE is a good one: sensible textbooks do this. Sorry for this is not a book recommendation, but merely a different way of thinking. Coming up with just the right properties, invariants and theorems is hard. It requires time, insight and experience. Not everything can be learned from a book.Why not start with something simple and try to discover those useful theorems yourself? Math is a necessary tool for expressing yourself accurately. You don't necessarily need it right away though. Start with something simple, say your favorite sorting algorithm. Without writing any math if you don't want to, think about why and how the algorithm works.Maybe with some thinking you'll convince yourself why it works and what the right invariant and properties could look like. If you already have some experience with program verification as you say, try to prove the program is correct. If you get totally stuck, then go to a textbook or a paper and see how it can be done. In some cases, you might even discover something new and exciting the author of the algorithm hasn't considered.