úÎGė>rw      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuv wxyz{|3} ?A logical, arithmetic, comparative, or conditional expression.  !"#$%&'()*An untyped variable. +,-.A mutable variable. /0123Variables in a program. 4Variables in an expression. 5Theorems in a program. 2  !"#$%&'()*+,-./0123452"! ./*-,+210()$%&'#   3452   "!  !"#$%&'%&'())*-,++,-.//0123456Generate C code. ~€‚ƒ666+„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜7#Verify a program with k-induction. ™Path of a theorem. šProve a single theorem. › k-induction. œCheck induction step. Check induction basis. žŸ ĄĒĢĪĨĶ5Creates a new boolean variable. Use for assertions. §ĻĐŠŦŽ­777>ŪŊ8KTheorem to be proven or used as lemmas to assist proofs of other theorems. °9:;;The Stmt monad holds variable declarations and statements. ą< True term. = False term. >Arbitrary constants. ?Logical negation. @ Logical AND. A Logical OR. B"The conjunction of a E Bool list. C"The disjunction of a E Bool list. D1True iff the predicate is true for all elements. E0True iff the predicate is true for any element. FLogical implication. GEqual. H Not equal. I Less than. JGreater than. KLess than or equal. LGreater than or equal. M$Returns the minimum of two numbers. N*Returns the minimum of a list of numbers. O$Returns the maximum of two numbers. P*Returns the maximum of a list of numbers. QLimits between min and max. RMultiplication. SFloating point division. TInteger division. UModulo. V;Linear interpolation and extrapolation between two points. W3References a variable to be used in an expression (). XConditional expression.  mux test onTrue onFalse Y1Labels 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. ēģīĩZCInput variable declaration. Input variables are initialized to 0. [Global variable declaration. \Boolean variable declaration. ]7Boolean variable declaration and immediate assignment. ^Int variable declaration. _3Int variable declaration and immediate assignment. `Float variable declaration. a5Float variable declaration and immediate assignment. bIncrements an E Int. cDecrements an E Int. ķ·d)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. eDefines a new theorem. # theorem name k lemmas proposition fConditional if-else. g!Conditional if without the else. hCondition case statement. ijVerify a program. ! verify pathToYices maxK program kGenerate C code. 9#$.289:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijk9.$#28<=>W?@ABCEDFGHIKJLMNOPQRSTUXV;Y\]^_`aZ[9:fghibcdejk489::;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijk ļ6Computes the greatest common divison of two integers. < Returns true if the computation is done, and the result. đA top level wrapper for gcd'. l,Build the gcdMain code (i.e. gcd.c, gcd.h). m(A rolling counter verification example. n Verify the m example. oArbiter specification. pAn arbiter implementation. q#An another arbiter implementation. r$Yet another arbiter implementation. s?Binding an arbiter implemenation to the arbiter specification. t.Verify the different arbiter implementations. u-Build the different arbiter implementations. vRun all examples. lmnopqrstuv lmnospqrtuv lmnopqrstuvš       !"#$%& '()*+,-./01233456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijk;:lmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŒŽ‘’“”•–—˜™š›œžŸ ĄĒĢĪĨͧĻĐŠŦŽ­­Ū=Ŋ°ąŽēžģīĩ improve-0.2.3Language.ImProve.TreeLanguage.ImProve.CoreLanguage.ImProve.CodeLanguage.ImProve.VerifyLanguage.ImProveLanguage.ImProve.ExamplesTreeLeafBranchtreevarInfoVarInfoConstFloatIntBool StatementNullLabelAssumeTheoremSequenceAssignEMuxGeLeGtLtEqOrAndNotModDivMulSubAddRefNumEAllEzeroconst'untypePathNamepathNameUVUVFloatUVIntUVBoolVUIDPathNamestmtVarsexprVarstheoremscodeverify<==Stmttruefalseconstantnot_&&.||.and_or_all_any_-->==./=.<.>.<=.>=.min_minimum_max_maximum_limit*./.div_mod_linearrefmux-|inputglobalboolbool'intint'floatfloat'incrdecrassumetheoremifelseif_case_==>buildGCDcounter verifyCounter arbiterSpecarbiter1arbiter2arbiter3arbiterverifyArbiters buildArbitersrunAlllabelisBranch singleTree mergeTrees insertTreefind'VarInfo'codeStmtindentindent' codeVariables showConst showConstTypeTraceLabel'Branch'Assert'Assign'Input'State'Step'EnvnextIdvarcmdsassertstraceVarYResultProblemFailPass theoremPath proveTheoremcheck checkStep checkBasisresultevalStmtevalExpr evalConst evalConst'initEnvaddVar'addVar newBoolVaraddCmdaddTracegetVargetVar' writeTrace maxLabelWidthmaximum'CaseTheorem'getputgetPath statementgcd'gcdMain