  A program schema defines a class of programs, all of which have identical
statement structure, but whose functions and predicates may differ. A schema
thus defines an entire class of programs according to how its symbols are
interpreted. A subschema of a schema is obtained from a schema by deleting some
of its statements. We prove that given a schema $S$ which is predicate-linear,
free and liberal, such that the true and false parts of every if predicate
satisfy a simple additional condition, and a slicing criterion defined by the
final value of a given variable after execution of any program defined by $S$,
the minimal subschema of $S$ which respects this slicing criterion contains all
the function and predicate symbols `needed' by the variable according to the
data dependence and control dependence relations used in program slicing, which
is the symbol set given by Weiser's static slicing algorithm. Thus this
algorithm gives predicate-minimal slices for classes of programs represented by
schemas satisfying our set of conditions. We also give an example to show that
the corresponding result with respect to the slicing criterion defined by
termination behaviour is incorrect. This complements a result by the authors in
which $S$ was required to be function-linear, instead of predicate-linear.
