This chapter introduces the central topic, namely, logic programs. Frequently, a declarative semantics is given by assigning intended models to logic programs. This is done by selecting from the set of all models for a logic program, a subset which contains those models with some properties deemed to be desirable depending on one’s objectives and intended applications. The chapter specifies the syntax of logic programs, and deals with their semantics with some notation peculiar to logic programming. The notion of model is far too general to capture the declarative semantics of logic programs without some restrictions being imposed upon it. It can be shown, furthermore, that the least model for definite programs corresponds rather well with the procedural behaviour of logic programming systems based on resolution. Thus, in summary, the least model semantics is very satisfactory for definite logic programs from all points of view.