| package org.checkerframework.dataflow.analysis; |
| |
| /** |
| * An abstract value used in the org.checkerframework.dataflow analysis. |
| * |
| * @author Stefan Heule |
| * |
| */ |
| public interface AbstractValue<V extends AbstractValue<V>> { |
| |
| /** |
| * Compute the least upper bound of two stores. |
| * |
| * <p> |
| * |
| * <em>Important</em>: This method must fulfill the following contract: |
| * <ul> |
| * <li>Does not change {@code this}.</li> |
| * <li>Does not change {@code other}.</li> |
| * <li>Returns a fresh object which is not aliased yet.</li> |
| * <li>Returns an object of the same (dynamic) type as {@code this}, even if |
| * the signature is more permissive.</li> |
| * <li>Is commutative.</li> |
| * </ul> |
| */ |
| V leastUpperBound(V other); |
| } |