Admin message

On or around 9:00am on Thursday the 23rd of April, git.uwaterloo.ca will be restarted to apply security and application patches. This maintenance should bring GitLab to latest patch in 18.11.x release line.

Run NuSMV from Java (Linux and Windows)
## Windows or Linux Use this: 1. http://commons.apache.org/proper/commons-lang/javadocs/api-release/org/apache/commons/lang3/SystemUtils.html#IS_OS_WINDOWS 1. http://commons.apache.org/proper/commons-lang/javadocs/api-release/org/apache/commons/lang3/SystemUtils.html#IS_OS_LINUX ## Parse NuSMV Output * Ignore lines starting with `***` * Ignore empty lines * A new query starts with `-- specification` ``` *** This is NuSMV 2.6.0 (compiled on Wed Oct 14 15:37:51 2015) *** Enabled addons are: compass *** For more information on NuSMV see <http://nusmv.fbk.eu> *** or email to <nusmv-users@list.fbk.eu>. *** Please report bugs to <Please report bugs to <nusmv-users@fbk.eu>> *** Copyright (c) 2010-2014, Fondazione Bruno Kessler *** This version of NuSMV is linked to the CUDD library version 2.4.1 *** Copyright (c) 1995-2004, Regents of the University of Colorado *** This version of NuSMV is linked to the MiniSat SAT solver. *** See http://minisat.se/MiniSat.html *** Copyright (c) 2003-2006, Niklas Een, Niklas Sorensson *** Copyright (c) 2007-2010, Niklas Sorensson -- specification AG !(state = LoopState & c = 13) IN contract1 is false -- as demonstrated by the following execution sequence Trace Description: CTL Counterexample Trace Type: Counterexample -> State: 1.1 <- state = start contract1.query_c1f1_4 = not_reached contract1.a = 0 contract1.b = 5 contract1.c = 0 -> Input: 1.2 <- nextFunc = LoopState -> State: 1.2 <- state = LoopState -> Input: 1.3 <- nextFunc = SimpleFunction1_func1_ln0 -> State: 1.3 <- state = SimpleFunction1_func1_ln0 -> Input: 1.4 <- nextFunc = LoopState -> State: 1.4 <- state = SimpleFunction1_func1_ln1 -> Input: 1.5 <- -> State: 1.5 <- state = SimpleFunction1_func1_ln2 contract1.c = 5 -> Input: 1.6 <- -> State: 1.6 <- state = SimpleFunction1_func1_ln3 contract1.b = 4 -> Input: 1.7 <- -> State: 1.7 <- state = SimpleFunction1_func1_ln4 contract1.a = 2 -> Input: 1.8 <- -> State: 1.8 <- state = SimpleFunction1_func1_ln5 contract1.query_c1f1_4 = condition_reached -> Input: 1.9 <- -> State: 1.9 <- state = LoopState -> Input: 1.10 <- nextFunc = SimpleFunction1_func1_ln0 -> State: 1.10 <- state = SimpleFunction1_func1_ln0 -> Input: 1.11 <- nextFunc = LoopState -> State: 1.11 <- state = SimpleFunction1_func1_ln1 contract1.query_c1f1_4 = not_reached -> Input: 1.12 <- -> State: 1.12 <- state = SimpleFunction1_func1_ln2 contract1.c = 6 -> Input: 1.13 <- -> State: 1.13 <- state = SimpleFunction1_func1_ln3 contract1.b = 3 -> Input: 1.14 <- -> State: 1.14 <- state = SimpleFunction1_func1_ln4 -> Input: 1.15 <- -> State: 1.15 <- state = SimpleFunction1_func1_ln5 contract1.query_c1f1_4 = condition_reached -> Input: 1.16 <- -> State: 1.16 <- state = LoopState -> Input: 1.17 <- nextFunc = SimpleFunction1_func3_ln0 -> State: 1.17 <- state = SimpleFunction1_func3_ln0 -> Input: 1.18 <- nextFunc = LoopState -> State: 1.18 <- state = SimpleFunction1_func3_ln1 -> Input: 1.19 <- -> State: 1.19 <- state = SimpleFunction1_func3_ln2 contract1.a = 10 -> Input: 1.20 <- -> State: 1.20 <- state = LoopState -> Input: 1.21 <- nextFunc = SimpleFunction1_func1_ln0 -> State: 1.21 <- state = SimpleFunction1_func1_ln0 -> Input: 1.22 <- nextFunc = LoopState -> State: 1.22 <- state = SimpleFunction1_func1_ln1 contract1.query_c1f1_4 = not_reached -> Input: 1.23 <- -> State: 1.23 <- state = SimpleFunction1_func1_ln2 contract1.c = 13 -> Input: 1.24 <- -> State: 1.24 <- state = SimpleFunction1_func1_ln3 contract1.b = 2 -> Input: 1.25 <- -> State: 1.25 <- state = SimpleFunction1_func1_ln4 contract1.a = 2 -> Input: 1.26 <- -> State: 1.26 <- state = SimpleFunction1_func1_ln5 contract1.query_c1f1_4 = condition_reached -> Input: 1.27 <- -> State: 1.27 <- state = LoopState -- specification AG !(query_c1f1_4 = condition_confirmed) IN contract1 is false -- as demonstrated by the following execution sequence Trace Description: CTL Counterexample Trace Type: Counterexample -> State: 2.1 <- state = start contract1.query_c1f1_4 = not_reached contract1.a = 0 contract1.b = 5 contract1.c = 0 -> Input: 2.2 <- nextFunc = LoopState -> State: 2.2 <- state = LoopState -> Input: 2.3 <- nextFunc = SimpleFunction1_func3_ln0 -> State: 2.3 <- state = SimpleFunction1_func3_ln0 -> Input: 2.4 <- nextFunc = LoopState -> State: 2.4 <- state = SimpleFunction1_func3_ln1 -> Input: 2.5 <- -> State: 2.5 <- state = SimpleFunction1_func3_ln2 contract1.a = 10 -> Input: 2.6 <- -> State: 2.6 <- state = LoopState -> Input: 2.7 <- nextFunc = SimpleFunction1_func2_ln0 -> State: 2.7 <- state = SimpleFunction1_func2_ln0 -> Input: 2.8 <- nextFunc = LoopState -> State: 2.8 <- state = SimpleFunction1_func2_ln1 -> Input: 2.9 <- -> State: 2.9 <- state = SimpleFunction1_func2_ln2 contract1.b = 15 -> Input: 2.10 <- -> State: 2.10 <- state = LoopState -> Input: 2.11 <- nextFunc = SimpleFunction1_func2_ln0 -> State: 2.11 <- state = SimpleFunction1_func2_ln0 -> Input: 2.12 <- nextFunc = LoopState -> State: 2.12 <- state = SimpleFunction1_func2_ln1 -> Input: 2.13 <- -> State: 2.13 <- state = SimpleFunction1_func2_ln2 contract1.b = 25 -> Input: 2.14 <- -> State: 2.14 <- state = LoopState -> Input: 2.15 <- nextFunc = SimpleFunction1_func2_ln0 -> State: 2.15 <- state = SimpleFunction1_func2_ln0 -> Input: 2.16 <- nextFunc = LoopState -> State: 2.16 <- state = SimpleFunction1_func2_ln1 -> Input: 2.17 <- -> State: 2.17 <- state = SimpleFunction1_func2_ln2 contract1.b = 35 -> Input: 2.18 <- -> State: 2.18 <- state = LoopState -> Input: 2.19 <- nextFunc = SimpleFunction1_func2_ln0 -> State: 2.19 <- state = SimpleFunction1_func2_ln0 -> Input: 2.20 <- nextFunc = LoopState -> State: 2.20 <- state = SimpleFunction1_func2_ln1 -> Input: 2.21 <- -> State: 2.21 <- state = SimpleFunction1_func2_ln2 contract1.b = 45 -> Input: 2.22 <- -> State: 2.22 <- state = LoopState -> Input: 2.23 <- nextFunc = SimpleFunction1_func2_ln0 -> State: 2.23 <- state = SimpleFunction1_func2_ln0 -> Input: 2.24 <- nextFunc = LoopState -> State: 2.24 <- state = SimpleFunction1_func2_ln1 -> Input: 2.25 <- -> State: 2.25 <- state = SimpleFunction1_func2_ln2 contract1.b = 55 -> Input: 2.26 <- -> State: 2.26 <- state = LoopState -> Input: 2.27 <- nextFunc = SimpleFunction1_func2_ln0 -> State: 2.27 <- state = SimpleFunction1_func2_ln0 -> Input: 2.28 <- nextFunc = LoopState -> State: 2.28 <- state = SimpleFunction1_func2_ln1 -> Input: 2.29 <- -> State: 2.29 <- state = SimpleFunction1_func2_ln2 contract1.b = 65 -> Input: 2.30 <- -> State: 2.30 <- state = LoopState -> Input: 2.31 <- nextFunc = SimpleFunction1_func2_ln0 -> State: 2.31 <- state = SimpleFunction1_func2_ln0 -> Input: 2.32 <- nextFunc = LoopState -> State: 2.32 <- state = SimpleFunction1_func2_ln1 -> Input: 2.33 <- -> State: 2.33 <- state = SimpleFunction1_func2_ln2 contract1.b = 75 -> Input: 2.34 <- -> State: 2.34 <- state = LoopState -> Input: 2.35 <- nextFunc = SimpleFunction1_func2_ln0 -> State: 2.35 <- state = SimpleFunction1_func2_ln0 -> Input: 2.36 <- nextFunc = LoopState -> State: 2.36 <- state = SimpleFunction1_func2_ln1 -> Input: 2.37 <- -> State: 2.37 <- state = SimpleFunction1_func2_ln2 contract1.b = 85 -> Input: 2.38 <- -> State: 2.38 <- state = LoopState -> Input: 2.39 <- nextFunc = SimpleFunction1_func2_ln0 -> State: 2.39 <- state = SimpleFunction1_func2_ln0 -> Input: 2.40 <- nextFunc = LoopState -> State: 2.40 <- state = SimpleFunction1_func2_ln1 -> Input: 2.41 <- -> State: 2.41 <- state = SimpleFunction1_func2_ln2 contract1.b = 95 -> Input: 2.42 <- -> State: 2.42 <- state = LoopState -> Input: 2.43 <- nextFunc = SimpleFunction1_func2_ln0 -> State: 2.43 <- state = SimpleFunction1_func2_ln0 -> Input: 2.44 <- nextFunc = LoopState -> State: 2.44 <- state = SimpleFunction1_func2_ln1 -> Input: 2.45 <- -> State: 2.45 <- state = SimpleFunction1_func2_ln2 contract1.b = 105 -> Input: 2.46 <- -> State: 2.46 <- state = LoopState -> Input: 2.47 <- nextFunc = SimpleFunction1_func2_ln0 -> State: 2.47 <- state = SimpleFunction1_func2_ln0 -> Input: 2.48 <- nextFunc = LoopState -> State: 2.48 <- state = SimpleFunction1_func2_ln1 -> Input: 2.49 <- -> State: 2.49 <- state = SimpleFunction1_func2_ln2 contract1.b = 115 -> Input: 2.50 <- -> State: 2.50 <- state = LoopState -> Input: 2.51 <- nextFunc = SimpleFunction1_func2_ln0 -> State: 2.51 <- state = SimpleFunction1_func2_ln0 -> Input: 2.52 <- nextFunc = LoopState -> State: 2.52 <- state = SimpleFunction1_func2_ln1 -> Input: 2.53 <- -> State: 2.53 <- state = SimpleFunction1_func2_ln2 contract1.b = 125 -> Input: 2.54 <- -> State: 2.54 <- state = LoopState -> Input: 2.55 <- nextFunc = SimpleFunction1_func2_ln0 -> State: 2.55 <- state = SimpleFunction1_func2_ln0 -> Input: 2.56 <- nextFunc = LoopState -> State: 2.56 <- state = SimpleFunction1_func2_ln1 -> Input: 2.57 <- -> State: 2.57 <- state = SimpleFunction1_func2_ln2 contract1.b = 135 -> Input: 2.58 <- -> State: 2.58 <- state = LoopState -> Input: 2.59 <- nextFunc = SimpleFunction1_func2_ln0 -> State: 2.59 <- state = SimpleFunction1_func2_ln0 -> Input: 2.60 <- nextFunc = LoopState -> State: 2.60 <- state = SimpleFunction1_func2_ln1 -> Input: 2.61 <- -> State: 2.61 <- state = SimpleFunction1_func2_ln2 contract1.b = 145 -> Input: 2.62 <- -> State: 2.62 <- state = LoopState -> Input: 2.63 <- nextFunc = SimpleFunction1_func2_ln0 -> State: 2.63 <- state = SimpleFunction1_func2_ln0 -> Input: 2.64 <- nextFunc = LoopState -> State: 2.64 <- state = SimpleFunction1_func2_ln1 -> Input: 2.65 <- -> State: 2.65 <- state = SimpleFunction1_func2_ln2 contract1.b = 155 -> Input: 2.66 <- -> State: 2.66 <- state = LoopState -> Input: 2.67 <- nextFunc = SimpleFunction1_func2_ln0 -> State: 2.67 <- state = SimpleFunction1_func2_ln0 -> Input: 2.68 <- nextFunc = LoopState -> State: 2.68 <- state = SimpleFunction1_func2_ln1 -> Input: 2.69 <- -> State: 2.69 <- state = SimpleFunction1_func2_ln2 contract1.b = 165 -> Input: 2.70 <- -> State: 2.70 <- state = LoopState -> Input: 2.71 <- nextFunc = SimpleFunction1_func2_ln0 -> State: 2.71 <- state = SimpleFunction1_func2_ln0 -> Input: 2.72 <- nextFunc = LoopState -> State: 2.72 <- state = SimpleFunction1_func2_ln1 -> Input: 2.73 <- -> State: 2.73 <- state = SimpleFunction1_func2_ln2 contract1.b = 175 -> Input: 2.74 <- -> State: 2.74 <- state = LoopState -> Input: 2.75 <- nextFunc = SimpleFunction1_func2_ln0 -> State: 2.75 <- state = SimpleFunction1_func2_ln0 -> Input: 2.76 <- nextFunc = LoopState -> State: 2.76 <- state = SimpleFunction1_func2_ln1 -> Input: 2.77 <- -> State: 2.77 <- state = SimpleFunction1_func2_ln2 contract1.b = 185 -> Input: 2.78 <- -> State: 2.78 <- state = LoopState -> Input: 2.79 <- nextFunc = SimpleFunction1_func2_ln0 -> State: 2.79 <- state = SimpleFunction1_func2_ln0 -> Input: 2.80 <- nextFunc = LoopState -> State: 2.80 <- state = SimpleFunction1_func2_ln1 -> Input: 2.81 <- -> State: 2.81 <- state = SimpleFunction1_func2_ln2 contract1.b = 195 -> Input: 2.82 <- -> State: 2.82 <- state = LoopState -> Input: 2.83 <- nextFunc = SimpleFunction1_constructor_ln0 -> State: 2.83 <- state = SimpleFunction1_constructor_ln0 -> Input: 2.84 <- nextFunc = LoopState -> State: 2.84 <- state = SimpleFunction1_constructor_ln1 -> Input: 2.85 <- -> State: 2.85 <- state = SimpleFunction1_constructor_ln2 contract1.a = 3 -> Input: 2.86 <- -> State: 2.86 <- state = LoopState -> Input: 2.87 <- nextFunc = SimpleFunction1_func2_ln0 -> State: 2.87 <- state = SimpleFunction1_func2_ln0 -> Input: 2.88 <- nextFunc = LoopState -> State: 2.88 <- state = SimpleFunction1_func2_ln1 -> Input: 2.89 <- -> State: 2.89 <- state = SimpleFunction1_func2_ln2 contract1.b = 198 -> Input: 2.90 <- -> State: 2.90 <- state = LoopState -> Input: 2.91 <- nextFunc = SimpleFunction1_func1_ln0 -> State: 2.91 <- state = SimpleFunction1_func1_ln0 -> Input: 2.92 <- nextFunc = LoopState -> State: 2.92 <- state = SimpleFunction1_func1_ln1 -> Input: 2.93 <- -> State: 2.93 <- state = SimpleFunction1_func1_ln2 contract1.c = 1 -> Input: 2.94 <- -> State: 2.94 <- state = SimpleFunction1_func1_ln3 contract1.b = 197 -> Input: 2.95 <- -> State: 2.95 <- state = SimpleFunction1_func1_ln4 contract1.a = 2 -> Input: 2.96 <- -> State: 2.96 <- state = SimpleFunction1_func1_ln5 contract1.query_c1f1_4 = condition_reached -> Input: 2.97 <- -> State: 2.97 <- state = LoopState contract1.query_c1f1_4 = condition_confirmed ```
issue