  Hoare logic is a foundation of axiomatic semantics of classical programs and
it provides effective proof techniques for reasoning about correctness of
classical programs. To offer similar techniques for quantum program
verification and to build a logical foundation of programming methodology for
quantum computers, we develop a full-fledged Hoare logic for both partial and
total correctness of quantum programs. It is proved that this logic is
(relatively) complete by exploiting the power of weakest preconditions and
weakest liberal preconditions for quantum programs.
