Scientific code often has conservation rules. A simple invariant can flag whether a balance still holds.

Program

Play the program to vary the stored amount and watch the balance check change.

conservation_check.f90
program conservation_check_demo
    implicit none
    integer :: added
    integer :: removed
    integer :: stored
    integer :: imbalance
    logical :: balanced
    character(len=5) :: status

    added = 12
    removed = 8
    stored = 
    imbalance = added - removed - stored
    balanced = imbalance == 0
    if (balanced) then
        status = 'ok'
    else
        status = 'check'
    end if
    print '(A, 1X, I0)', trim(status), imbalance
end program conservation_check_demo
program conservation_check_demo
    implicit none
    integer :: added
    integer :: removed
    integer :: stored
    integer :: imbalance
    logical :: balanced
    character(len=5) :: status

    added = 12
    removed = 8
    stored = 
    imbalance = added - removed - stored
    balanced = imbalance == 0
    if (balanced) then
        status = 'ok'
    else
        status = 'check'
    end if
    print '(A, 1X, I0)', trim(status), imbalance
end program conservation_check_demo
program conservation_check_demo
    implicit none
    integer :: added
    integer :: removed
    integer :: stored
    integer :: imbalance
    logical :: balanced
    character(len=5) :: status

    added = 12
    removed = 8
    stored = 
    imbalance = added - removed - stored
    balanced = imbalance == 0
    if (balanced) then
        status = 'ok'
    else
        status = 'check'
    end if
    print '(A, 1X, I0)', trim(status), imbalance
end program conservation_check_demo
invariant `added - removed - stored` should remain zero for this balance model.
logical check `imbalance == 0` records the invariant as a logical value.
diagnostic output A compact status plus imbalance explains the test result.