úÎFê=¤q      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnop qrstuv- ?A logical, arithmetic, comparative, or conditional expression.  !"#$%&'()*A mutable variable. +,-./0-  !"#$%&'()*+,-./0-#"! *+-,()%&'$  ./0-  #"!  !"#$%&'&'())*++,-./00wxyz{|}~€‚ƒ„…†‡ˆ‰Š‹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 S1Labels 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. ®¯°±TCInput variable declaration. Input variables are initialized to 0. UGlobal variable declaration. 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. bCondition case statement. cdVerify a program. "^ verify pathToYices maxK program eGenerate C code. 8$%*-3456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcde8*%$-678Q9:;<=?>@ABCEDFGHIJKLMNORP5SVWXYZ[TU34`abc\]^_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.1.2Language.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-|inputglobalboolbool'intint'floatfloat'incrdecrassertassumeifelseif_case_==>buildGCDcounter verifyCounter arbiterSpecarbiter1arbiter2arbiter3arbiterverifyArbiters buildArbitersrunAlllabelisBranch singleTree mergeTrees insertTreefind'TraceLabel'Branch'Assert'Assign'Input'Cycle'Init'EnvnextIdvarcmdsassertstraceVarYResultProblemFailPasstrimAssertionsremoveAssertionslabelAssertions assertions trimProgram requiredVars modifiedVars verifyProgramcheck checkStep checkBasisinputsresultevalStmtevalExpr evalConst evalConst'initEnvaddVar'addVar newBoolVaraddCmdaddTracegetVar writeTraceindentindent' codeVariables showConst showConstTypeCasegetputgetPath statementgcd'gcdMain