úÎ<Í3ïl      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijk lmnopq,  !"#$%&'()*+,-./,  !"#$%&'()*+,-./,"! )*,+'($%&#  -./,  "!  !"#$%&%&'(()**+,-./-rstuvwxyz{|}~€‚ƒ„…0#Verify a program with k-induction. †1Set of statements containing only one assertion. ‡ˆRemove all assertions. ‰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. ™š›œ0001Generate C code. žŸ ¡¢£¤1116¥23;The Stmt monad holds variable declarations and statements. ¦4 True term. 5 False term. 6Arbitrary constants. 7Logical negation. 8 Logical AND. 9 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. >?Equal. @ Not equal. A Less than. BGreater than. CLess than or equal. DGreater than or equal. E$Returns the minimum of two numbers. F*Returns the minimum of a list of numbers. G$Returns the maximum of two numbers. H*Returns the maximum of a list of numbers. ILimits between min and max. JMultiplication. KFloating point division. LInteger division. MModulo. N;Linear interpolation and extrapolation between two points. OReferences a variable. PConditional expression.  mux test onTrue onFalse QCreates a hierarchical scope. §¨©RCInput variable declaration. Input variables are initialized to 0. SBoolean variable declaration. T7Boolean variable declaration and immediate assignment. UInt variable declaration. V3Int variable declaration and immediate assignment. WFloat variable declaration. X5Float variable declaration and immediate assignment. YIncrements an E Int. ZDecrements an E Int. ª«[!Assert that a condition is true. \)Declare an assumption condition is true. ]Conditional if-else. ^!Conditional if without the else. _Verify a program. "^ verify pathToYices maxK program `Generate C code. 5#$%),23456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`5)$%#,456O789:;=<>?@ACBDEFGHIJKLMPNQ3STUVWXR2]^YZ[\_`/23456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_` ¬6Computes the greatest common divison of two integers. < Returns true if the computation is done, and the result. ­A top level wrapper for gcd'. a,Build the gcdMain code (i.e. gcd.c, gcd.h). b(A rolling counter verification example. c Verify the b example. dArbiter specification. eAn arbiter implementation. f#An another arbiter implementation. g$Yet another arbiter implementation. h?Binding an arbiter implemenation to the arbiter specification. i.Verify the different arbiter implementations. j-Build the different arbiter implementations. kRun all examples. abcdefghijk abcdhefgijk abcdefghijk®       !"#$%& '()*+,-../0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ab45cdefghijklmnopqrstuvwxyz{{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ž¡¢£¤¥7¦§}¨’©ª« improve-0.0.4Language.ImProve.TreeLanguage.ImProve.CoreLanguage.ImProve.VerifyLanguage.ImProve.CodeLanguage.ImProveLanguage.ImProve.ExamplesTreeLeafBranchtreeVarInfoConstFloatIntBool StatementNullAssumeAssertSequence AssignFloat AssignInt AssignBoolEMuxGeLeGtLtEqOrAndNotModDivMulSubAddRefNumEAllEzeroconst'PathNamepathNameVPathNamevarInfostmtVarsexprVarsverifycode<==Stmttruefalseconstantnot_&&.||.and_or_all_any_imply==./=.<.>.<=.>=.min_minimum_max_maximum_limit*./.div_mod_linearrefmuxscopeinputboolbool'intint'floatfloat'incrdecrassertassumeifelseif_buildGCDcounter verifyCounter arbiterSpecarbiter1arbiter2arbiter3arbiterverifyArbiters buildArbitersrunAlllabelisBranch singleTree mergeTrees insertTreefind'TraceBranch'Assert'Assign'Input'Cycle'Init'EnvnextIdvarcmdsassertstraceVarYResultProblemFailPasstrimAssertionstrimAssertions'removeAssertions assertions trimProgram verifyProgramcheck checkStep checkBasisinputsresultevalStmtevalExpr evalConst evalConst'initEnvaddVar'addVar newBoolVaraddCmdaddTracegetVar writeTraceindentcodeStmtcodeExprindent' codeVariables showConst showConstTypeAssigngetgetPath statementgcd'gcdMain