Subject Reduction of Logic Programs as Proof-Theoretic Property

Abstract

We consider prescriptive type systems for logic programs (as in Goedel or Mercury). In such systems, the typing is static, but it guarantees an operational property: if a program is "well-typed", then all derivations starting in a "well-typed" query are again "well-typed". This property has been called subject reduction. We show that this property can also be phrased as a property of the proof-theoretic semantics of logic programs, thus abstracting from the usual operational (top-down) semantics. This proof-theoretic view leads us to questioning a condition which is usually considered necessary for subject reduction, namely the head condition. It states that the head of each clause must have a type which is a variant (and not a proper instance) of the declared type. We study more general conditions, thus reestablishing a certain symmetry between heads and body atoms. The underlying idea is that in a derivation, terms should only be unified if their types are unifiable. We discuss possible implications of our results.