This paper presents a method of extracting subprograms from background knowledge. Most studies on learning logic programs so far developed are mainly concerned with pure Prolog, so that we can not deal with programs with system predicates such as the cut symbol, true, false, and so on. Explanation-based generalization system builds an explanation and learns a concept denition as its generalization, provided an input program. However, it assumes the input program be pure Prolog program. This paper proposes explanation-based reuse (EBR, for short), which is an extension of the explanation-based generalization and a method of program reuse. In EBR, we can deal with some system predicates. In extracting subprograms, we need to extract correct subprograms based on not only an explanation but also the whole background knowledge for a goal concept. This paper also shows that such extracted subprograms by EBR are correct.