Errors

An error can be caused by a refinement violation, an invalid refinement, or another particular issue.

Error Meaning
RefinementError A refinement was violated or could not be proven
StateRefinementError A state refinement was violated or could not be proven
NotFoundError An element used in a refinement could not be found
SyntaxError The syntax used in a refinement is invalid
ArgumentMismatchError A ghost or state invocation has the wrong number or type of arguments
StateConflictError A state refinement becomes unsatisfiable because it combines disjoint states
IllegalConstructorTransitionError A constructor state refinement declares an illegal from transition
InvalidRefinementError A refinement is semantically invalid, such as a non-boolean expression
CustomError Any other error, such as providing a non-existent path to verify

LiquidJava is only able to report at most one error per method to avoid cascading failures. If there are multiple errors in a method, the verifier will report the first one it encounters and stop verifying the rest of the method. This means that fixing one error can sometimes reveal another that was previously hidden.