úÎGö>˝q      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnop qrstuv- ?A logical, arithmetic, comparative, or conditional expression.  !"#$%&'()*A mutable variable. +,-./0-  !"#$%&'()*+,-./0-#"! *+-,()%&'$  ./0-  #"!  !"#$%&'&'())*++,-./0/wxyz{|}~€‚ƒ„…†‡ˆ‰Š‹1#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.  Ą˘Ł¤1112Generate C code. ĽŚ§¨ŠŞŤ222:345;The Stmt monad holds variable declarations and statements. Ź6 True term. 7 False term. 8Arbitrary constants. 9Logical 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. @Logical implication. AEqual. B Not equal. C Less than. DGreater than. ELess than or equal. FGreater than or equal. G$Returns the minimum of two numbers. H*Returns the minimum of a list of numbers. I$Returns the maximum of two numbers. J*Returns the maximum of a list of numbers. KLimits between min and max. LMultiplication. MFloating point division. NInteger division. OModulo. P;Linear interpolation and extrapolation between two points. Q3References a variable to be used in an expression (). RConditional expression.  mux test onTrue onFalse SLabels a statement. 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. T5Creates a new hierarchical scope for variable names. ULCreates a new hierarchical scope and labels a statement with the same name. ­ŽŻ°VCInput variable declaration. Input variables are initialized to 0. 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. dVerify a program. "^ verify pathToYices maxK program eGenerate C code. 8$%*-3456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcde8*%$-678Q9:;<=?>@ABCEDFGHIJKLMNORP5TSUWXYZ[\V34abc]^_`de334456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcde ł6Computes the greatest common divison of two integers. < Returns true if the computation is done, and the result. ´A top level wrapper for gcd'. f,Build the gcdMain code (i.e. gcd.c, gcd.h). g(A rolling counter verification example. h Verify the g example. iArbiter specification. jAn arbiter implementation. k#An another arbiter implementation. l$Yet another arbiter implementation. m?Binding an arbiter implemenation to the arbiter specification. n.Verify the different arbiter implementations. o-Build the different arbiter implementations. pRun all examples. fghijklmnop fghimjklnop fghijklmnopľ       !"#$%&' ()*+,-.//0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefg56hijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ Ą˘Ł¤ĽŚ§Ľ¨ŠŞŤ9Ź­ŽƒŻ™°ą˛improve-0.0.11Language.ImProve.TreeLanguage.ImProve.CoreLanguage.ImProve.VerifyLanguage.ImProve.CodeLanguage.ImProveLanguage.ImProve.ExamplesTreeLeafBranchtreeVarInfoConstFloatIntBool StatementNullLabelAssumeAssertSequence AssignFloat AssignInt AssignBoolEMuxGeLeGtLtEqOrAndNotModDivMulSubAddRefNumEAllEzeroconst'PathNamepathNameVPathNamevarInfostmtVarsexprVarsverifycodeAssign<==Stmttruefalseconstantnot_&&.||.and_or_all_any_-->==./=.<.>.<=.>=.min_minimum_max_maximum_limit*./.div_mod_linearrefmux|-|=|=-inputboolbool'intint'floatfloat'incrdecrassertassumeifelseif_case_buildGCDcounter verifyCounter arbiterSpecarbiter1arbiter2arbiter3arbiterverifyArbiters buildArbitersrunAlllabelisBranch singleTree mergeTrees insertTreefind'TraceLabel'Branch'Assert'Assign'Input'Cycle'Init'EnvnextIdvarcmdsassertstraceVarYResultProblemFailPasstrimAssertionsremoveAssertionslabelAssertions assertions trimProgram requiredVars verifyProgramcheck checkStep checkBasisinputsresultevalStmtevalExpr evalConst evalConst'initEnvaddVar'addVar newBoolVaraddCmdaddTracegetVar writeTraceindentcodeStmtcodeExprindent' codeVariables showConst showConstTypegetputgetPath statementgcd'gcdMain