úÎOÇBÙœ      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~  € ‚ ƒ „ … † ‡ ˆ ‰ Š ‹ Œ ‘ ’ “ ” • – — ˜ ™ š ›  œŸ ¡0 ?A logical, arithmetic, comparative, or conditional expression.  !"#$%&'()A mutable array. *+A mutable variable. ,-./0Length of array. 12Variables in a program. ¢Variables in an expression. 3Theorems in a program. /  !"#$%&'()*+,-./0123/"! +,)*/.-'($%&#   1203/   "!  !"#$%&%&'(()**+,,-./01234 Generate C. £¤¥¦§4446¨©ª56789:;<=>?@ABCDEFGHIJKLMNOPQ«¬RSBuilds a netlist. ­®¯°±²³´µ¶·¸¹º»¼½¾56789:;<=>?@ABCDEFGHIJKLMNOPQRSR56789:;<=QPONMLKJIHGFEDCBA@?>S56789:;<6789:;<=QPONMLKJIHGFEDCBA@?>>?@ABCDEFGHIJKLMNOPQRST¿ÀÁÂÃÄTTTUCode generation targets. VWXYGenerate target code. UVWXYUXWVYUXWVVWXY+ÅÆÇÈÉÊËÌÍÎÏĞÑÒÓÔÕÖרÙZ#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. èéêëìíîZZZ [ïğñ[[[ ?òó\KTheorem to be proven or used as lemmas to assist proofs of other theorems. ô]^_;The Stmt monad holds variable declarations and statements. õ` True term. a False term. bArbitrary constants. cLogical negation. d Logical AND. e Logical OR. f"The conjunction of a E Bool list. g"The disjunction of a E Bool list. h1True iff the predicate is true for all elements. i0True iff the predicate is true for any element. jLogical implication. kEqual. l Not equal. m Less than. nGreater than. oLess than or equal. pGreater than or equal. q$Returns the minimum of two numbers. r*Returns the minimum of a list of numbers. s$Returns the maximum of two numbers. t*Returns the maximum of a list of numbers. uLimits between min and max. vMultiplication. wFloating point division. xInteger division. yModulo. z6Linear interpolation and extrapolation of two points. {3References a variable to be used in an expression (). |Conditional expression.  mux test onTrue onFalse }5Labels a statement and creates a new variable scope. L Labels are used in counter examples to help trace the program execution. ö÷øù~CInput 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. …5Float variable declaration and immediate assignment. †Increments an E Int. ‡Decrements an E Int. úûˆAssume a condition is true. 5 Assumptions are used as lemmas to other theorems. ‰Defines a new theorem. # theorem name k lemmas proposition ŠConditional if-else. ‹!Conditional if without the else. ŒCondition case statement. Verify a program.  verify pathToYices program Generate code. Generic program analysis. >#$+/UVWX\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹Œ>+$#/\`ab{cdefgihjklmonpqrstuvwxy|z_}€‚ƒ„…~]^Š‹Œ†‡ˆ‰UXWV5\]^^_`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'. ‘,Build the gcdMain code (i.e. gcd.c, gcd.h). ’(A rolling counter verification example. “ Verify the ’ example. ”Arbiter specification. •An arbiter implementation. –#An another arbiter implementation. —$Yet another arbiter implementation. ˜?Binding an arbiter implemenation to the arbiter specification. ™.Verify the different arbiter implementations. š-Build the different arbiter implementations. ›Run all examples. ‘’“”•–—˜™š› ‘’“”˜•–—™š› ‘’“”•–—˜™š›ş   !"#$%&'()*+,-./012334456789:;<==>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`a b   c d e f g h i j k l m n o p q r s t u v w x y z { | } ~  € ‚ ƒ „ … † ‡ ˆ ‰ Š ‹ Œ ‘ ’ a ` “ ” • – — ˜ ™ š › œ Ÿ ¡¢£¤¥¦§¨©ª«¬­®©¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂé½ÄÅÆÇÈÉÊËÌÍÍ>ÎÏĞÑÒÓÔÕÖרÙÚÛÜİ·¸Şßàáâãäåæçèéê ë ì í î î ï d ğ ñ ò Î ó · ô õö improve-0.3.3Language.ImProve.TreeLanguage.ImProve.Code.CommonLanguage.ImProve.CoreLanguage.ImProve.Code.CLanguage.ImProve.Code.SimulinkLanguage.ImProve.Code.ModelicaLanguage.ImProve.CodeLanguage.ImProve.VerifyLanguage.ImProve.PathLanguage.ImProveLanguage.ImProve.ExamplesTreeLeafBranchtreeindentVarInfoConstFloatIntBool StatementNullLabelAssumeTheoremSequenceAssignEMuxGeLeGtLtEqOrAndNotModDivMulSubAddRefNumEAllEzeroconst'PathNamepathNameAVUIDPathName arrayLengthvarInfostmtVarstheoremscodeCNetlistnextIdpathvarsenvblocksnetsBlockMux'Ge'Le'Gt'Lt'Eq'Or'And'Not'Mod'Div'Mul'Sub'Add'Const' AssertionCast UnitDelayOutportInport codeSimulinknetlist codeModelicaTargetSimulinkModelicaCcodeverify totalPaths<==Stmttruefalseconstantnot_&&.||.and_or_all_any_-->==./=.<.>.<=.>=.min_minimum_max_maximum_limit*./.div_mod_linearrefmux-|inputglobalboolbool'intint'floatfloat'incrdecrassumetheoremifelseif_case_==>analyzebuildGCDcounter verifyCounter arbiterSpecarbiter1arbiter2arbiter3arbiterverifyArbiters buildArbitersrunAlllabelisBranch singleTree mergeTrees insertTreefind'exprVarscodeStmtindent' codeVariables showConst showConstTypeMdl:=:-NetlowerConditionalsnewNameblockblock'net updateEnvgetNet getPathNameevalStmtevalExprmdlmdlLines mdlBlocksmdlBlock constTypeblkisSrcremoveNullEffectequation isInternalmoRenamenetTypeTraceLabel'Branch'Assert'Assign'Input'State'Step'EnvvarcmdsassertstraceVarYResultProblemFailPass theoremPath proveTheoremcheck checkStep checkBasisresult evalConst evalConst'initEnvaddVar'addVar newBoolVaraddCmdaddTracegetVargetVar' writeTrace maxLabelWidthmaximum'pathsdotdCaseTheorem'getputgetPath statementgcd'gcdMain