úÎGM=ār      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopq rstuvw- ?A logical, arithmetic, comparative, or conditional expression.  !"#$%&'()*A mutable variable. +,-./0-  !"#$%&'()*+,-./0-#"! *+-,()%&'$  ./0-  #"!  !"#$%&'&'())*++,-./01Generate C code. xyz{|1112}~2220€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“3#Verify a program with k-induction. ”1Set of statements containing only one assertion. •Remove all assertions. –*Ensure all assertions are uniquely labed. —Paths of all assertions. ˜(Trim all unneeded stuff from a program. ™š›Verify a trimmed program. œ k-induction. Check induction step. žCheck induction basis. ŸInsert new input variables.  ĄĒĢĪĨͧĻ5Creates a new boolean variable. Use for assertions. ĐŠŦŽ­333<ŪŊ456;The Stmt monad holds variable declarations and statements. °7 True term. 8 False term. 9Arbitrary constants. :Logical negation. ; Logical AND. < Logical OR. ="The conjunction of a E Bool list. >"The disjunction of a E Bool list. ?1True iff the predicate is true for all elements. @0True iff the predicate is true for any element. ALogical implication. BEqual. C Not equal. D Less than. EGreater than. FLess than or equal. GGreater than or equal. H$Returns the minimum of two numbers. I*Returns the minimum of a list of numbers. J$Returns the maximum of two numbers. K*Returns the maximum of a list of numbers. LLimits between min and max. MMultiplication. NFloating point division. OInteger division. PModulo. Q;Linear interpolation and extrapolation between two points. R3References a variable to be used in an expression (). SConditional expression.  mux test onTrue onFalse T1Labels a statement and creates a variable scope. G Labels are used in counter examples to trace the program execution. ] And assertion names, and hence counter example trace file names, are produce from labels. ąēģīUCInput variable declaration. Input variables are initialized to 0. VGlobal variable declaration. WBoolean variable declaration. X7Boolean variable declaration and immediate assignment. YInt variable declaration. Z3Int variable declaration and immediate assignment. [Float variable declaration. \5Float variable declaration and immediate assignment. ]Increments an E Int. ^Decrements an E Int. ĩķ_!Assert that a condition is true. `)Declare an assumption condition is true. Q Assumptions expressions must contain variables directly or indirectly related H to the assertion under verification, otherwise they will be ignored. aConditional if-else. b!Conditional if without the else. cCondition case statement. deVerify a program. "^ verify pathToYices maxK program fGenerate C code. 8$%*-456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdef8*%$-789R:;<=>@?ABCDFEGHIJKLMNOPSQ6TWXYZ[\UV45abcd]^_`ef34556789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdef ·6Computes the greatest common divison of two integers. < Returns true if the computation is done, and the result. ļA top level wrapper for gcd'. g,Build the gcdMain code (i.e. gcd.c, gcd.h). h(A rolling counter verification example. i Verify the h example. jArbiter specification. kAn arbiter implementation. l#An another arbiter implementation. m$Yet another arbiter implementation. n?Binding an arbiter implemenation to the arbiter specification. o.Verify the different arbiter implementations. p-Build the different arbiter implementations. qRun all examples. ghijklmnopq ghijnklmopq ghijklmnopqđ       !"#$%&'( )*+,-./00123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghi86jklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰ŠŠ‹ŒŽ‘’“”•–—˜™š›œžŸ ĄĒĢĪĨͧĻĐŠŦŽ­Ū{ŊŊ;°ąēŒģĢīĩķ improve-0.1.4Language.ImProve.TreeLanguage.ImProve.CoreLanguage.ImProve.CodeLanguage.ImProve.NarrowLanguage.ImProve.VerifyLanguage.ImProveLanguage.ImProve.ExamplesTreeLeafBranchtreeVarInfoConstFloatIntBool StatementNullLabelAssumeAssertSequence AssignFloat AssignInt AssignBoolEMuxGeLeGtLtEqOrAndNotModDivMulSubAddRefNumEAllEzeroconst'PathNamepathNameVPathNamevarInfostmtVarsexprVarscodenarrowverifyAssign<==Stmttruefalseconstantnot_&&.||.and_or_all_any_-->==./=.<.>.<=.>=.min_minimum_max_maximum_limit*./.div_mod_linearrefmux-|inputglobalboolbool'intint'floatfloat'incrdecrassertassumeifelseif_case_==>buildGCDcounter verifyCounter arbiterSpecarbiter1arbiter2arbiter3arbiterverifyArbiters buildArbitersrunAlllabelisBranch singleTree mergeTrees insertTreefind'indentindent' codeVariables showConst showConstTypeconstantAssignslastConstAssignTraceLabel'Branch'Assert'Assign'Input'Cycle'Init'EnvnextIdvarcmdsassertstraceVarYResultProblemFailPasstrimAssertionsremoveAssertionslabelAssertions assertions trimProgram requiredVars modifiedVars verifyProgramcheck checkStep checkBasisinputsresultevalStmtevalExpr evalConst evalConst'initEnvaddVar'addVar newBoolVaraddCmdaddTracegetVar writeTraceCasegetputgetPath statementgcd'gcdMain