01: // This file is part of KeY - Integrated Deductive Software Design
02: // Copyright (C) 2001-2007 Universitaet Karlsruhe, Germany
03: // Universitaet Koblenz-Landau, Germany
04: // Chalmers University of Technology, Sweden
05: //
06: // The KeY system is protected by the GNU General Public License.
07: // See LICENSE.TXT for details.
08: //
09: // This file is part of KeY - Integrated Deductive Software Design
10: // Copyright (C) 2001-2003 Universitaet Karlsruhe, Germany
11: // and Chalmers University of Technology, Sweden
12: //
13: // The KeY system is protected by the GNU General Public License.
14: // See LICENSE.TXT for details.
15: //
16: package de.uka.ilkd.key.jml;
17:
18: import de.uka.ilkd.key.java.ProgramElement;
19: import de.uka.ilkd.key.logic.SetOfLocationDescriptor;
20: import de.uka.ilkd.key.logic.Term;
21: import de.uka.ilkd.key.proof.mgt.ListOfQuantifierPrefixEntry;
22:
23: /** Methodspecs which implement this interface can be used for generating
24: * lemmas.
25: */
26: public interface JMLLemmaMethodSpec {
27:
28: /** returns precondition with represents relations applied */
29: Term getCompletePre(boolean withClassSpec, boolean allInv,
30: boolean terminationCase);
31:
32: /** returns the variables used for the specification of <code>\old<\code>*/
33: ListOfQuantifierPrefixEntry getOldLVs();
34:
35: /** returns the "<code>\old<\code>-equations"*/
36: Term getPi1();
37:
38: /** returns postcondition with represents relations applied */
39: Term getCompletePost(boolean withClassSpec, boolean allInv);
40:
41: /** returns the modifies clause*/
42: SetOfLocationDescriptor replaceModelFieldsInAssignable();
43:
44: /** returns the ProgramElement used in the findpart of the lemmataclet*/
45: ProgramElement getProofStatement();
46:
47: /** returns true iff the specification demands termination (normally or by
48: * throwing an exception).
49: */
50: boolean terminates();
51:
52: /** returns true if this specification is prevented from being used for
53: * generating a lemma rule for any reason.
54: */
55: // boolean otherObstacles();
56: }
|