Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, and Clifford Stein. , Second Edition. MIT Press and McGraw-Hill, 2001. . Pages 17–19, section 2.1: Insertion sort. David Gries. "A note on a standard strategy for developing loop invariants and loops." , vol 2, pp. 207–214. 1984. Michael D. Ernst, Jake Cockrell, William G. Griswold, David Notkin. "Dynamically Discovering Likely Program Invariants to Support Program Evolution." , pp. 213–224. 1999. Robert Paige. "Programming with Invariants." , 3(1):56–69. January 1986. Yanhong A. Liu, Scott D. Stoller, and Tim Teitelbaum. Strengthening Invariants for Efficient Computation. , 41(2):139–172. October 2001. Michael Huth, Mark Ryan. "Logic in Computer Science.", Second Edition.