E8z      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ab c d e f g h i j k l m n o p q r s t u v w x y z { | } ~   Safe-InferedIf e is s Functor, and e is -able, then we can  a Graph. None reifyGraph$ takes a data structure that admits , and returns a  that contains 0 the dereferenced nodes, with their children as  rather than recursive values.  Safe-Infered Safe-Infered9take in name of source and future object, compile object  Safe-Infered Safe-Infered"  !"#$%&  !"#$%&   !"%&#$"  !"#$%& Safe-Infered+#Forward derivative propogation. fad' [sin x, 2*x] == [cos x, 2] ,3Forward derivative propogation. fad sin x == cos x '()*+,'()*+,'()*,+'()*+,NoneY+this substitute is sketchy because it doesn'<t perform simplifications that are often assumed to be done Z%foldr over the constants and symbols [symbolic scalar \MSymbolic scalar which is a function of some independent variable, like time.  .  This lets you do d(f(g(t)))/dt == f'(g(t))*g'(t) ]<same as symDependent but it can start as the Nth derivative _-Checks to see if an Expr is equal to a value `\if the expression is a constant, a fromInteger, or a fromRational, return the constant part  otherwise return nothing G-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`a5-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`a5NSRQPO-210/.FMLKJIHGCED3BA@?>=<;:987654TVU_[\]^Wa`XYZ#-210/.3BA@?>=<;:987654CEDFMLKJIHGNSRQPOTVUWXYZ[\]^_`a  Safe-InferedoOTake inputs and outputs which are of classes ToFunGraph (heterogenous lists of Expr a) n and traverse the outputs reifying all expressions and creating a hashmap of StableNames (stable pointers). c Once the hashmap is created, lookup the provided inputs and return a FunGraph which contains an  expression graph, input/Moutput indices, and other useful functions. StableNames is non-deterministic < so this function may return graphs with more or fewer CSE's eliminated. G If CSE is then performed on the graph, the result is deterministic. sJmake a FunGraph out of outputs, automatically detecting the proper inputs bcdefghijklmnopqrsbcdefghijklmnopqrsjklmndebcfihgoqklnmrpsbcdefihgjklmnopqrs  Safe-Inferedtshow a nice Dot graph u)show a nice Dot graph with labeled edges tututu tu Noney1Turns a FunGraph into a string containing C code vwxyzvwxyzyzvxwvxwyz  Safe-Infered{|}~{|}~{|}~{|}~  Safe-Infered   Safe-Infered Safe-Infered Safe-Infered Safe-Infered%do cse on a fungraph and count nodes show a fungraph c code generation mex function generation  Safe-InferedTop level module  Safe-Infered N[\]bcotu [\]Notubc !"#$%&'()*+,-./0123456789:;<<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghihjklmnopqrst u u v w x y z { | } ~                               dvda-0.3.1Dvda.MultipleShooting.MSMonadDvda.ReifyGraph Dvda.ReifyDvda.Codegen.WriteFileDvda.Codegen.Gcc Dvda.SparseLA Dvda.Dual Dvda.Expr Dvda.FunGraphDvda.Vis Dvda.CGen&Dvda.MultipleShooting.CoctaveTemplatesDvda.MultipleShooting.TypesDvda.CSEDvda.AD Dvda.ExamplesDvda.MultipleShooting.MSCoctave Dvda.HashMapDvdatransformers-0.2.2.0Control.Monad.Trans.State.LazyState ReifyGraphMuRefDeRefmapDeRef reifyGraphswriteSourceFilecompileWithGcc SparseVec SparseMatdenseListFromSvsparseListFromSvsvZerossmZerossmSizesmMap smFromListssmFromSparseListsmBinarysvSize svFromListsvFromSparseListsvMapsvBinarysvAddsvSubsvMulsmAddsmSubsmMulsvScalesmScalegetRowgetColsVVsMVsvCatsvCatsDual dualPrimaldualPerturbationfad'fadGExpr GFloating GFractionalGNumGConstGSym FloatingsACoshATanhASinhTanhCoshSinhACosATanASinCosSinLogExpLogBasePow Fractionals FromRationalDivNums FromIntegerSignumAbsNegateSubAddMulExpr EFloating EFractionalENumEConstESymSym SymDependent getParents substitutesketchySubstitutefoldExprsym symDependent symDependentNconst'isValgetConstextractLinearPart:* ToFunGraphNumTMVSScaVecMatFunGraphfgInputs fgOutputs fgReified fgLookupGExpr toFunGraphnodelistToFunGraph countNodestopSortexprsToFunGraph previewGraph previewGraph'MatrixStorageOrderColMajorRowMajorshowCshowMex writeMexAllwriteSetupSourcewriteUnstructConsts writeToStruct writeUnstruct writePlotOdeStep stepStates stepActions stepParams stepConstantsstepDxdtstepLagrangeTerm stepMayerTermstepDt stepBoundsstepConstraints stepOutputs stepPeriodic ConstraintBCTimeTIMESTEPALWAYS eulerError'simpsonsRuleError' eulerErrorsimpsonsRuleErrorlagrangeStateNamelagrangeTermName setStates setActionsaddParam addConstant addParams addConstants addOutputsetDt setPeriodicsetDxdtsetLagrangeTerm setMayerTermsetBound addConstraintcsebackpropraddoCseshowFgcgenmexgen msCoctaverun$fShowReifyGraphbaseGHC.ShowShowghc-prim GHC.TypesInt$fEqDynStableName$fHashableDynStableNameunordered-containers-0.2.1.0Data.HashMap.Strict fromListWithfromListmap unionWithadjust insertWithinsert singletonData.HashMap.BasetoListelemskeysfilter filterWithKey foldrWithKeyfoldr foldlWithKey'foldl' intersection differencetraverseWithKeyunionsuniondelete! lookupDefaultlookupmembersizenullemptyHashMap$fNumSparseVec$fShowSparseVec$fNumSparseMat$fShowSparseMat$fFloatingDual$fFractionalDual $fNumDual $fMuRefExpr$fHashableGExpr $fShowGExpr$fFloatingExpr$fFractionalExpr $fNumExpr$fHashableExpr$fHashableFloatings$fHashableFractionals$fHashableNums $fHashableSym$fEqNums$fEqExpr $fShowExpr$fShowFloatings$fShowFractionals $fShowNums $fShowSym$fToFunGraph:*$fToFunGraph[]$fToFunGraph[]0$fToFunGraphExpr$fTraversableMVS $fFoldableMVS $fFunctorMVS$fShowFunGraph$fLabellableFGLNode$fLabellableFGLEdge'$fLabellableFGLEdge $fOrdFGLEdge' $fOrdFGLEdge $fEqFGLEdge' $fEqFGLEdge$fFunctorConstraint