rxz      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxy BSD3!Olaf Chitil <O.Chitil@kent.ac.uk>portableSafez)A Document represents a *set* of layouts.{LA space, if the following still fits on the current line, otherwise newline.|LNothing, if the following still fits on the current line, otherwise newline.}5Increase identation relative to the *current* column.~ Combine with a space in between.Combine with a  in between.Combine with a  in between.Combine with a { in between.Combine with a | in between.)Combine non-empty list of documents with ~, i.e., a space separator.)Combine non-empty list of documents with  , i.e., a  separator.)Combine non-empty list of documents with  , i.e., a { separator.nCombine non-empty list of documents vertically as a group. Seperated by space instead if all fit on one line.)Combine non-empty list of documents with .)Combine non-empty list of documents with  , i.e., a  separator.)Combine non-empty list of documents with  , i.e., a | separator.FCombine non-empty list of documents, filling lines as far as possible.%The empty document; equal to text "".`Atomic document consisting of just the given text. There should be no newline \n in the string.Either a space or a new line.Either nothing () or a new line.HHorizontal composition of two documents. Is associative with identity .VMark document as group, that is, layout as a single line if possible. Within a group for all basic documents with several layouts the same layout is chosen, that is, they are all horizontal or all new lines. Within a vertical group there can be a horizontal group, but within a horizontal group all groups are also layouted horizontally.FIncreases current indentation level (absolute). Assumes argument >= 0."Set indentation to current column.Pretty print within given width. Selects from the *set* of layouts that the document represents the widest that fits within the given width. If no such layout exists, then it will choose the narrowest that exceeds the given width.>z{|}~z{|}~7z{|}~~655556Safe  HLighweight algorithmic debugging based on observing intermediate values.(c) 2016 Maarten FaddegonBSD3hoed@maartenfaddegon.nl experimentalPOSIXNone6      SafeNone 569:;DOQRT)$ observes data structures in flight.An example of use is 4 map (+1) . observe "intermeduate" . map (+2) DIn this example, we observe the value that flows from the producer map (+2) to the consumer map (+1).)8 can also observe functions as well a structural values.)Functions which you suspect of misbehaving are annotated with observe and should have a cost centre set. The name of the function, the label of the cost centre and the label given to observe need to be the same. Consider the following function: triple x = x + x&This function is annotated as follows: Atriple y = (observe "triple" (\x -> {# SCC "triple" #} x + x)) y'To produce computation statements like:  triple 3 = 6+To observe a value its type needs to be of class Observable. We provided instances for many types already. If you have defined your own type, and want to observe a function that takes a value of this type as argument or returns a value of this type, an Observable instance can be derived as follows: \ data MyType = MyNumber Int | MyName String deriving Generic instance Observable MyType m !"#$%&'()*      !"#$%&'F !"#$%&'()*X !!""#$%&'()*      !"#$%&'(9 None()*+,-./0123456789:;<=>?()*+,-.0/1356789:;<=()*+,-./0123456789:;<=>?None5-@ABC+DEFGH,-./0IJKLMNOPQRSTUVWXYZ[\]^_`abcdef +,-./0ILPZ\"@ABC+DEFGH,-./0IJKLMNOPQRSTUVWXYZ[\]^_`abcdef None51?The forest of computation trees. Also see the Libgraph library.7Approximates the complexity of a computation tree by summing the length of the unjudged computation statements (i.e not Right or Wrong) in the tree.@ghijklmnopqrstuvwxy123456z{|}~7*lmnopqrstuvwxy124356z{|}~7.ghijklmnopqrstuvwxy123456z{|}~7 None5 None /569:;QR@+Returns a Judgement (see Libgraph library).A4Found counter example with simpler computation tree.hUse propositions to judge a computation statement. First tries restricted and bottom for unevaluated expressions, then unrestricted, and finally with randomly generated values for unevaluated expressions.89:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghij     89:;<=>?@ABCDEFHGIJKLMNOPQRSTUVYWXZ[\]^_`abcdefghij   k899:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghij      None !"#$%&'() !"#$%&'()HLighweight algorithmic debugging based on observing intermediate values.Q(c) 2000 Andy Gill, (c) 2010 University of Kansas, (c) 2013-2017 Maarten FaddegonBSD3hoed@maartenfaddegon.nl experimentalPOSIXNone n"run some code and return the TraceoThe main entry point; run some IO code, and debug inside it. After the IO action is completed, an algorithmic debugging session is started at  http://localhost:10000// to which you can connect with your webbrowser. For example: H main = runO $ do print (triple 3) print (triple 2) p~Hoed internal function that stores a serialized version of the tree on disk (assisted debugging spawns new instances of Hoed).q#Repeat and trace a failing testcaserUse property based judging.s#Repeat and trace a failing testcaset Short for  runO . print.v;Only produces a trace. Useful for performance measurements.wGEntry point giving you access to the internals of Hoed. Also see: runO.xHTrace and write computation tree to file. Useful for regression testing.y)As logO, but with property-based judging.klm*+nopqrstuv,wxy] !"#$%&'()*+,-./0124356789:;<=>?@ABCDEFHGIJKLMNOPQRSTUVYWXZ[\]^_`abcdefghijklmnopqrstuvwxy`)otqrus]^_`abZ[\KLMNOPQRcdefgSTUFGHIJBCDEVWXY899jpiwh7123456,-./0?@Aklmxyv:;<=> !!""(&'*%$#n+klm*+nopqrstuv,wxy-     !"#$%&'()*+,-./0122345 6 7 8 7 9 : ; < = > ? @ A B C C D E E F G H I J K L M M N O P Q R S T U V W X Y Z [ \ ] ^ ^ _ ` a b c d e f g h i jklmnopqrstuvwxyz{|}~-()* !"#$%&'      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOP Q R S T U V V W X Y Z [ \ \ ] ^ _ ` 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 { | } ~                                                                                                                                             p!Hoed-0.4.0-5zbzuNS55lDCT1sXDv6hGd Debug.NoHoed Debug.HoedText.PrettyPrint.FPretty Paths_HoedDebug.Hoed.ReadLineDebug.Hoed.ObserveDebug.Hoed.EventForestDebug.Hoed.RenderDebug.Hoed.CompTreeDebug.Hoed.SerializeDebug.Hoed.PropDebug.Hoed.Consolebase GHC.GenericsGenericReptofrom ObserverMrunMO Observableobserver constrainParentobserverunOprintOtestO observeBase<<send$fObservable[]$fObservable()$fObservableChar$fObservableDouble$fObservableFloat$fObservableInteger$fObservableBool$fObservableInt$fMonadObserverM$fApplicativeObserverM$fFunctorObserverMObserverO constrainBase observeOpaquethunknothunkCDSCompStmt stmtLabelstmtIdentifierstmtResCompTreeVertex RootVertex vertexStmt vertexJmtunjudgedCharacterCountParEqparEq UnevalHandlerRestrictedBottomBottomForallFromListJudgeAlternativeTreeModule moduleName searchPathPropositionType IOPropositionBoolPropositionLegacyQuickCheckPropositionQuickCheckProposition PropositionpropositionType propModulepropName signaturemaxSizetestgenTestGenTestGenQuickCheckTestGenLegacyQuickCheck SignatureArgumentSubjectFunctionRandomPropTypeSpecify PropertiesOf Propositions propositionspropTypefunName extraModules mkPropositionofType withSignaturesizeHint withTestGenjudgeconAp=== VerbosityVerboseSilentdebugO runOstorerunOwptestOwpprintOwp traceOnlyrunO'logOlogOwpDocsoftline softbreakhang<+><$>line<$$> linebreakhsepvsepfillSepsephcat<>vcatfillCatcatemptytextgroupnestalignprettyTreeContOutGroupOut Remaining Horizontal IndentationPositionWidthTextNilLine:<>GroupNestAlign normalise docLength interpretoutResetIndentextendFrontGroup leaveGroupprunepropprop0prop1prop2prop3prop4prop5prop6prop7prop8prop9prop10prop11prop12catchIOversionbindirlibdirdatadir libexecdir sysconfdir getBinDir getLibDir getDataDir getLibexecDir getSysconfDirgetDataFileName noBufferingreadLinegobserveUID parentUIDparentPositionParentPositionChangeObserveConsEnterNoEnterFunEventeventUID eventParentchangeTrace Observing GConstrain gconstrain GObservable gdmobservergdmObserveArgsgdmShallowShowgdmFunObservergthunkgdMapM observer_ gdmobserver_ observer__unsafeWithUniqgenerateContextsendEnterPacketgsendEnterPacketsendNoEnterPacketevaluatesendObserveFnPacketroot isRootEventstartEventStreamendEventStream sendEventevents badEventssendSeminitUniqgetUniqpeepUniquniquniqSem ourCatchAllIO handleExc $fShowParent $fShowEvent$fObservableDynamic$fObservableSomeException$fObservableIO$fObservableArray$fObservableEither$fObservableMaybe$fObservable(,,,,)$fObservable(,,,)$fObservable(,,)$fObservable(,)$fObservable(->)$fGObservableK1$fGObservable:*:$fGObservable:+:$fGObservableU1$fGObservableM1$fGObservableM10$fGObservableM11$fGConstrainM1$fGConstrainM10$fGConstrainM11$fGConstrainK1$fGConstrainU1$fGConstrain:*:$fGConstrain:+: $fObservableaVisitLocationTrunk ArgumentOfResultOfFieldOf InfixOrPrefixInfixPrefix EventForestisRootelemsaddEvent mkEventForestparentUIDLookupparentPosLookupidVisit dfsChildrendfsFoldtreeUIDs eventsInTree topLevelApps appendApp$fShowLocationOutputOutLabelOutDataCDSSetCDSNamedCDSConsCDSFun CDSEntered CDSTerminated noNewlines noNewlines'statementWidthrenderCompStmtsrenderCompStmtrenderNamedTop nubSorted eventsToCDSrender renderSet renderSet'renderFnrenderNamedCons renderNamedFnfindFnfindFn'rmEntry rmEntrySet simplifyCDSsimplifyCDSSet spotStringparen cdssToOutput cdsToOutputnilgrpbrksp$fShowCompStmtConsMapNestingSpan ComputingPaused TraceInfo topLvlFun locations computations storedStack dependencies ConstantValueCVRootvalStmtvalLocvalMinvalMax getJudgement setJudgementisRightisWrong isUnassessed isAssistedisInconclusiveisInconclusive' isPassing isPassing' vertexUID vertexRes isRootVertexleafsunjudgedjudged replaceVertex mkCompTree insertCon getLocation setLocationseeFun getTopLvlFun cpyTopLvlFunshowCs getSpanUIDisSpanstartstoppauseresumeactiveComputations addDependency mkConsMap corToCons traceInfo $fShowSpan$fShowConstantValue$libgraph-1.14-FU1vyAFOlTG1NSc3tKKMcUData.Graph.Libgraph.CoreGraphverticesarcsDB storeTree restoreTree storeTrace restoreTracestoreJudgementsrestoreJudgementsrestorelookupinsertkey judgement $fSerializeDB$fSerializeChange$fSerializeEvent$fSerializeParent$fSerializeCompStmt$fSerializeAssistedMessage$fSerializeJudgement$fSerializeVertex$fSerializeArc$fSerializeGraphGParEqgParEq PropVarGenPropVarsPropResErrorHoldHoldWeakDisprove DisproveBy sourceFile buildFilesexeFileoutFileerrFile treeFilePath traceFilePathlookupPropositions lookupWithjudgeAlljudge'holds disproves disprovesBy simplestTreesimple2advicecommas errorMessagesisError unevalHandler unevalStateresOfevalPropositionsevalPropositionreEvalPropositioncleancompilerun generateCodegetEventFromMapeventMap mkPropResshorten backspacescompliftPV propVars0 propVarError propVarFresh propVarReturn propVarBind generatePrintgenerategenerateHeadinggenerateImport generateMain generateRes generateRes' generateArgs nothingOrArgnoArgareFunjustFuns isJustFungenerateFunMap generateCaseisArgisRes isJustRes hasParentPospvCatpvConcatmoreArgs generateExprgenConAp orNothingcatchEqcatchGEq $fParEqChar $fParEqDouble $fParEqFloat$fParEqInteger $fParEqBool $fParEqInt $fParEqMaybe $fParEq(,) $fParEq[] $fGParEqM1 $fGParEqM10 $fGParEqM11 $fGParEqK1 $fGParEqU1 $fGParEq:*: $fGParEq:+: debugSessionmainLoophelp printStmts printStmts'adb adb_adviceadb_interactiveadb_help adb_stats adb_judgefaultyVerticesnextrunOncefirstRun condPutStrLn