úÎEĽ<†o      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmn opqrst- ?A logical, arithmetic, comparative, or conditional expression.  !"#$%&'()*A mutable variable. +,-./0-  !"#$%&'()*+,-./0-#"! *+-,()%&'$  ./0-  #"!  !"#$%&'&'())*++,-./0/uvwxyz{|}~€‚ƒ„…†‡ˆ‰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. ٤ĽŚ§¨Š2228345;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. @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. T4Creates a new hierarcical scope for variable names. ŤŹ­ŽUCInput variable declaration. Input variables are initialized to 0. VBoolean variable declaration. W7Boolean variable declaration and immediate assignment. XInt variable declaration. Y3Int variable declaration and immediate assignment. ZFloat 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. `Conditional if-else. a!Conditional if without the else. bVerify a program. "^ verify pathToYices maxK program cGenerate C code. 6$%*-3456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abc6*%$-678Q9:;<=?>@ABCEDFGHIJKLMNORP5STVWXYZ[U34`a\]^_bc134456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abc ą6Computes the greatest common divison of two integers. < Returns true if the computation is done, and the result. ˛A top level wrapper for gcd'. d,Build the gcdMain code (i.e. gcd.c, gcd.h). e(A rolling counter verification example. f Verify the e example. gArbiter specification. hAn arbiter implementation. i#An another arbiter implementation. j$Yet another arbiter implementation. k?Binding an arbiter implemenation to the arbiter specification. l.Verify the different arbiter implementations. m-Build the different arbiter implementations. nRun all examples. defghijklmn defgkhijlmn defghijklmnł       !"#$%&' ()*+,-.//0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcde56fghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ Ą˘Ł¤ĽŁŚ§¨Š9ŞŤŹ­—Žݰ improve-0.0.9Language.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_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