K*      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~          !"#$%&'()*+,-./0123456789:; < = > ? @ 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 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 1 2 3 4 5 6 7 8 9 : ; < = > ? @ 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 b c d e f g h i j k l m n o p q r stuvwxyz{|}~      !"#$%&'()(c) Justus Sagemller 2016GPL v3"(@) sagemueller $ geo.uni-koeln.de experimentalportableSafe3**+,*,+(c) Justus Sagemller 2015GPL v3"(@) sagemueller $ geo.uni-koeln.de experimentalportableNone&'+,-0356;<=>?BFKNQSTV1T-MUST have length n..MUST be between 0 and n-1.GIMainly intended to be used as a data kind. Of course, we'd rather use  GHC.TypeLits- naturals, but they aren't mature enough yet./FFree vector containing the (0-based) indices of its fields as entries.,012-34.56789:;<=>?@ABCDGEFGHIJKLMNOPQRS/TUVW XYZ12-34.[\]^_`abcdefghijkl57689:;<=>?@ABCDGFEmno(c) Justus Sagemller 2015GPL v3"(@) sagemueller $ geo.uni-koeln.de experimentalportableNone&'+-0356;<=>?BFKNQSTV9pA pair of matching functions. The projection must be a left (but not necessarily right) inverse of the embedding, i.e. the cardinality of a: will have to be less or equal than the cardinality of b.qInjective embedding9Surjective projection. Must be left inverse of embedding.prstuvwxyz{|q}~prtsuvxwy0z0}0~0Safe+?]6Simply a merge sort that discards equivalent elements.Like :, but doesn't just discard duplicates but "merges" them.  cmp = cmp `fastNubByWith' .!This function is also defined in GHC.Exts`, but only in a version that requires (["log [) function applications, as opposed to [ here. (c) Justus Sagemller 2015GPL v3"(@) sagemueller $ geo.uni-koeln.de experimentalportableNone"#&'+;<=>?AFNQSTVdCWBetter known as ! z (which is not a legal Haskell name), the ray of positive numbers (including zero, i.e. closed on one end).W !"%$#'&*)(-,+10/.54329876=<;:A@?>DCBEFHIJKLMNOPQRSTUVWXYZ[\]^\]^8(c) Justus Sagemller 2015GPL v3"(@) sagemueller $ geo.uni-koeln.de experimentalportableNone"#&'+-07;<=>?ABFNPQSTV^d e}A Riemannian metric assigns each point on a manifold a scalar product on the tangent space. Note that this association is not continuous, because the charts/tangent spaces in the bundle are a priori disjoint. However, for a proper Riemannian metric, all arising expressions of scalar products from needles between points on the manifold ought to be differentiable.gThe word metric  is used in the sense as in general relativity. Actually this is just the type of scalar products on the tangent space. The actual metric is the function x -> x -> Scalar (Needle x) defined by  \p q -> m  (p.-~!q) hA co-needle can be understood as a paper stack , with which you can measure the length that a needle reaches in a given direction by counting the number of holes punched through them.iqRequire some constraint on a manifold, and also fix the type of the manifold's underlying field. For example,  WithField ! HilbertManifold v constrains v to be a real (i.e., T-) Hilbert space. Note that for this to compile, you will in general need the -XLiberalTypeSynonymsF extension (except if the constraint is an actual type class (like {6): only those can always be partially applied, for type- constraints this is by default not allowed).n=A point on a manifold, as seen from a nearby reference point.sJInstances of this class must be diffeomorphic manifolds, and even have canonically isomorphic tangent spaces, so that fromPackedVector . asPackedVector ::  x ->  J defines a meaningful representational identity  between these spaces.tEMust be compatible with the isomorphism on the tangent spaces, i.e. S locallyTrivialDiffeomorphism (p .+~^ v) "a locallyTrivialDiffeomorphism p .+~^ u v {See  and  for the methods.Boundary-unsafe version of .Proxy-version of .9   _`abcdefghijklmnopqrstuvwyxz{|}~B{||}} hnopgfed  |_imlkjstuvwxyyzzqr`abc~`abcnopqrs tuvwxyyzz{||}}66(c) Justus Sagemller 2018GPL v3"(@) sagemueller $ geo.uni-koeln.de experimentalportableNone&'7;<=>?BFTVin "(c) Justus Sagemller 2015GPL v3"(@) sagemueller $ geo.uni-koeln.de experimentalportableNone +;<=FTVcn/QAn euclidean space is a real affine space whose tangent space is a Hilbert space.The ! class plus manifold constraints.(c) Justus Sagemller 2015GPL v3"(@) sagemueller $ geo.uni-koeln.de experimentalportableNone"#%&'+;<=>?ABFNPQSTV^dq)None&'<STwCategory of functions that, where defined, have an open region in which they are continuously differentiable. Hence RegionWiseDiff'able0. Basically these are the partial version of  PWDiffable.Though the possibility of undefined regions is of course not too nice (we don't need Java to demonstrate this with its everywhere-looming null values...), this category will propably be the workhorse  for most serious calculus applications, because it contains all the usual trig etc. functions and of course everything algebraic you can do in the reals.SThe easiest way to define ordinary functions in this category is hence with its AgentVal2ues, which have instances of the standard classes  through *. For instance, the following defines the binary entropy1 as a differentiable function on the interval ]0,1[: (it will actually knowP where it's defined and where not. And I don't mean you need to exhaustively -check all results...) Uhb :: RWDiffable ! ! ! hb = alg (\p -> - p * logBase 2 p - (1-p) * logBase 2 (1-p) ) A 8 needs to be associated with a certain reference point (D includes that point) to define a connected subset of a manifold.*A pathwise connected subset of a manifold m!, whose tangent space has scalar s.GThe category of differentiable functions between manifolds over scalar s. As you might guess, these offer automatic differentiation of sorts (basically, simple forward AD), but that's in itself is not really the killer feature here. More interestingly, we actually have the ( la Curry-Howard) proof built in: the function f has at x derivative f'  , if, for >0, there exists  such that |f x " (f x + x"f'  )| <  for all |x " x | < .Observe that, though this looks quite similar to the standard definition of differentiability, it is not equivalent thereto  in fact it does not prove any analytic properties at all. To make it equivalent, we need a lower bound on  : simply ? gives us continuity, and for continuous differentiability,  must grow at least like " for small . Neither of these conditions are enforced by the type system, but we do require them for any allowed values because these proofs are obviously tremendously useful  for instance, you can have a root-finding algorithm and actually be sure you get all solutions correctly, not just some] that are (hopefully) the closest to some reference point you'd need to laborously define!2Unfortunately however, this also prevents doing any serious algebra with the category, because even something as simple as division necessary introduces singularities where the derivatives must diverge. Not to speak of many e.g. trigonometric functions that are undefined on whole regions. The  PWDiffable and  categories have explicit handling for those issues built in; you may simply use these categories even when you know the result will be smooth in your relevant domain (or must be, for e.g. physics reasons).((The implementation does not deal with  and  as difference-bounding reals, but rather as metric tensors which define a boundary by prohibiting the overlap from exceeding one. This makes the category actually work on general manifolds.)(c) Justus Sagemller 2015GPL v3"(@) sagemueller $ geo.uni-koeln.de experimentalportableNone"#&'+;<=>?ABFNPQSTV]^^  Represent a _ by a smooth function which is positive within the region, and crosses zero at the boundary.=Important special operator needed to compute intersection of s.Set-intersection of regions would not be guaranteed to yield a connected result or even have the reference point of one region contained in the other. This combinator assumes (unchecked) that the references are in a connected sub-intersection, which is used as the result.!Cartesian product of two regions.%Cartesian product of two pre-regions.nRequire the LHS to be defined before considering the RHS as result. This works analogously to the standard  method  (,) :: Maybe a -> Maybe b -> Maybe b Just _  a = a _  a = Nothing Return the RHS, if it is less than the LHS. (Really the purpose is just to compare the values, but returning one of them allows chaining of comparison operators like in Python.) Note that less-than comparison is  http://www.paultaylor.eu/ASD/ equivalentL to less-or-equal comparison, because there is no such thing as equality..Return the RHS, if it is greater than the LHS.WTry the LHS, if it is undefined use the RHS. This works analogously to the standard  method  (,) :: Maybe a -> Maybe a -> Maybe a Just x  _ = Just x _  a = a -Basically a weaker and agent-ised version of .eReplace the regions in which the first function is undefined with values from the second function.Like ?, but gives a differentiable function instead of a Hask one._Limit the number of steps taken in either direction. Note this will not cap the resolution but length of the discretised path.Parameter interval of interest.Inaccuracy allowance .Path specification.]Trail of points along the path, such that a linear interpolation deviates nowhere by more as .*Max number of exploration steps per regionNeeded resolution of boundariesFunction to investigate<Subintervals on which the function is guaranteed continuous.:Maximum number of path segments and/or points per segment.Inaccuracy allowance  for arguments (mostly relevant for resolution of discontinuity boundaries  consider it a safety margin from singularities ), and ! for results in the target space.kPath specification. It is recommended that this function be limited to a compact interval (e.g. with ,  and ). For many functions the discretisation will even work on an infinite interval: the point density is exponentially decreased towards the infinities. But this is still pretty bad for performance.:Discretised paths: continuous segments in either directionx value.f xI , derivative (i.e. Taylor-1-coefficient), and reverse propagation of O ( ) bound.*Max number of exploration steps per region$Needed resolution in (x,y) directionFunction to investigateF(XInterval, YInterval) rectangles in which the function graph lies.4553 (c) Justus Sagemller 2015GPL v3"(@) sagemueller $ geo.uni-koeln.de experimentalportableNone0<(c) Justus Sagemller 2015GPL v3"(@) sagemueller $ geo.uni-koeln.de experimentalportableNone"#&'+;<=>?ABFNPQSTV^ܳMust be nonzero.(c) Justus Sagemller 2015GPL v3"(@) sagemueller $ geo.uni-koeln.de experimentalportableNone&'+0;<=>?ABFNPQSTV^d-Oriented hyperplanes, navely generalised to  manifolds:  p w" represents the set of all points q such that (q.-~.p) ^<.> w "a 0.|In vector spaces this is indeed a hyperplane; for general manifolds it should behave locally as a plane, globally as an (n"1)-dimensional submanifold.(&Some point lying in the desired plane.6Co-vector perpendicular to the plane. Must be nonzero.*(Hyperplane to measure the distance from.~Metric to use for measuring that distance. This can only be accurate if the metric is valid both around the cut-plane's !M, and around the points you measure. (Strictly speaking, we would need parallel transport to ensure this).!Point to measure the distance to.mA signed number, giving the distance from plane to point with indication on which side the point lies. - if the point isn't reachable from the plane.] !"%$#'&*)(-,+10/.54329876=<;:A@?>DCBEFHIJKLMNOPQRSTUVWXYZ[l !"#$%&'()*+,]VUTSRQPONMLKJIHEF[ZYX%$#*)(10/. '&-,+5432!DCB9876"W=<;:A@?>#$%&, !"(*)+l' !"#$%&80 (c) Justus Sagemller 2015GPL v3"(@) sagemueller $ geo.uni-koeln.de experimentalportableNone&'+-03567;<=>?ABFHKNPQSTV>MOne-dimensional manifolds, whose closure is homeomorpic to the unit interval.A8Starting point; the interpolation will yield this at -1.End point, for +1.5If the two points are actually connected by a path...S...then this is the interpolation function. Attention: the type will change to Differentiable in the future. ;<=>?@CBADEFG DE@ABBCFVUTSRQPONMLKJIH>?XW<=YG;<=>?@ABBCDE(c) Justus Sagemller 2016GPL v3"(@) sagemueller $ geo.uni-koeln.de experimentalportableNone &'<BFPSTVa (c) Justus Sagemller 2016GPL v3(@) jsagemue $ uni-koeln.de experimentalportableNone%&'0367;<=BFHNPQSTV]d>p\Essentially the same as (x,y)3, but not considered as a product topology. The * etc. instances just copy the topology of x , ignoring y.`!Class of manifolds which can use nd as a basic set type. This is easily possible for vector spaces with the default implementations.aa a b "a True means a is fully contained in b, i.e. from  a p < 1 follows also minusLogOcclusion' b p < 1.b Intersection between two shades.cIf p is in a (red) and  is in b (green), then p.+~^ is in convolveShade' a b (blue). Example: xhttps://nbviewer.jupyter.org/github/leftaroundabout/manifolds/blob/master/test/ShadeCombinations.ipynb#shadeConvolutions :images/examples/ShadeCombinations/2Dconvolution-skewed.pngfAccess the center of a r or a n.gtCheck the statistical likelihood-density of a point being within a shade. This is taken as a normal distribution.jASCII version of '' '.l3Squash a shade down into a lower dimensional space.mgInclude a shade in a higher-dimensional space. Notice that this behaves fundamentally different for r and n. For r8, it gives a flat image  of the region, whereas for nV it gives an extrusion pillar  pointing in the projection's orthogonal complement.nCA co-shade  can describe ellipsoid regions as well, but unlike rq it can be unlimited / infinitely wide in some directions. It does OTOH need to have nonzero thickness, which r needs not.rA r is a very crude description of a region within a manifold. It can be interpreted as either an ellipsoid shape, or as the Gaussian peak of a normal distribution (use  2http://hackage.haskell.org/package/manifold-random2 for actually sampling from that distribution).For a preciseR description of an arbitrarily-shaped connected subset of a manifold, there is Region., whose implementation is vastly more complex.vSpan a r4 from a center point and multiple deviation-vectors.xiCombine two shades on independent subspaces to a shade with the same properties on the subspaces (see h) and no covariance.ASimilar to ':', but instead of expanding the shade, each vector  restrictsr it. Iff these form a orthogonal basis (in whatever sense applicable), then both methods will be equivalent.qNote that '||' is only possible, as such, in an inner-product space; in general you need reciprocal vectors (h) to define a n.Attempt to find a rm that describes the distribution of given points. At least in an affine space (and thus locally in any manifold), this can be used to estimate the parameters of a normal distribution from which some points were sampled. Note that some points will be outside  of the shade, as happens for a normal distribution with some statistical likelyhood. (Use  if you need to prevent that.)For  nonconnected manifolds it will be necessary to yield separate shades for each connected component. And for an empty input list, there is no shade! Hence the result type is a list.Like C, but ensure that all points are actually in the shade, i.e. if [r x ex] is the result then metric (recipMetric ex) (p-x ) "d 1 for all p in the list.Attempt to reduce the number of shades to fewer (ideally, a single one). In the simplest cases these should guaranteed cover the same area; for non-flat manifolds it only works in a heuristic sense.Weakened version of 1. What this function calculates is rather the  weighted mean of ellipsoid regions. If you interpret the shades as uncertain physical measurements with normal distribution, it gives the maximum-likelyhood result for multiple measurements of the same quantity.5Evaluate the shade as a quadratic form; essentially  minusLogOcclusion sh x = x  .)^ (sh^.shadeExpanse $ x - sh^.shadeCtr)  where {D gives a metric (matrix) that characterises the width of the shade.How near (inverse normalised distance, relative to shade expanse) two shades must be to be merged. If this is zero, any shades in the same connected region of a manifold are merged. A list of n shades.m "d n+ shades which cover at least the same area.6Z[\]^_`cdbaeilmkjhgfnopqrstuvwxyz{|}~Crstuvnopqefghijklmf{|}~g[Z[hjxkml`abcdabdiyzwc\]^_Z[\]^_`abcdefghijklmnopqrstuv6x56 (c) Justus Sagemller 2017GPL v3(@) jsagemue $ uni-koeln.de experimentalportableNone+0<BFNSTVD.Dimension of the space of affine functions on v.1Dimension of the space of quadratic functions on v.   (c) Justus Sagemller 2013GPL v3"(@) sagemueller $ geo.uni-koeln.de experimentalportableNone;=G    !"%$#'&*)(-,+10/.54329876=<;:A@?>DCBEFHIJKLMNOPQRSTUVWXYZ[_`abcdefghijklmnopqrstuvwyxz{}|~ !"#$%&'()*+,!(c) Justus Sagemller 2016GPL v3"(@) sagemueller $ geo.uni-koeln.de experimentalportableSafeL Subset-finder(c) Justus Sagemller 2015GPL v3"(@) sagemueller $ geo.uni-koeln.de experimentalportableNone"#&'+-0356;<=>?ABFHKNQSTV` Type-level zero of kind G.*A conservative  state monad containing a J. It can be extended by new simplices, which can then be indexed using  . The universally-quantified t_ argument ensures you can't index simplices that don't actually exist in this triangulation.An n -dimensional abstract simplicial complex is a collection of ns-simplices which are glued together  in some way. The preferred way to construct such complexes is to run a  builder.An n-simplex is a connection of n5+1 points in a simply connected region of a manifold.Use this together with D to easily build simplices, like you might construct lists. E.g. (0,0)  (1,0)  (0,1) ::   !.}A unique (for the given dimension) ID of a triagulation's simplex. It is the index where that simplex can be found in the .Reference the k--faces of a given simplex in a triangulation.QImport an entire triangulation, as disjoint from everything already in the monad.!Import a triangulation like with :, together with references to some of its subsimplices.TCombine two triangulations (assumed as disjoint) to a single, non-connected complex.$G$G55 (c) Justus Sagemller 2015GPL v3"(@) sagemueller $ geo.uni-koeln.de experimentalportableNone&'-03456;<=>?ABFNQSTV]dh   x "E (x,  x)   x "E [(x,  x)]   x "E Maybe (x,  x) #Hourglass as the geometric shape (two opposing ~conical volumes, sharing only a single point in the middle); has nothing to do with time.)PBuild a quite nicely balanced tree from a cloud of points, on any real manifold. Example: yhttps://nbviewer.jupyter.org/github/leftaroundabout/manifolds/blob/master/test/Trees-and-Webs.ipynb#pseudorandomCloudTree 'images/examples/simple-2d-ShadeTree.png+The leaves of a shade tree are numbered. For a given index, this function attempts to find the leaf with that ID, within its immediate environment.- Inverse indexing  of a tree. This is roughly a nearest-neighbour search, but not guaranteed to give the correct result unless evaluated at the precise position of a tree leaf.2 Example: yhttps://nbviewer.jupyter.org/github/leftaroundabout/manifolds/blob/master/test/Trees-and-Webs.ipynb#pseudorandomCloudTree 9images/examples/TreesAndWebs/2D-scatter_twig-environs.png8!U+6733 CJK UNIFIED IDEOGRAPH tree(. The main purpose of this is to give  a more concise  instance.9Imitate the specialised "( structure with a simpler, generic tree.;-Left (and, typically, also right) inverse of  fromLeafNodes.J WRT union.pUnsafeM: this assumes the direction information of both containers to be equivalent.-dFor deciding (at the lowest level) what close  means; this is optional for any tree of depth >1.The tree to index intoPosition to look upIndex of the leaf near to the query point, the path  of environment trees leading down to its position (in decreasing order of size), and actual position+info of the found node..Sorted list of non-negative indices to extract Input list((Extracted elements, remaining elements)][`dbaeilmkhgfnopqrstuv{|}~    !"#$%&'()*+,-./0123456789:;<=>?@Agrstuvnopqefghiklmf{|}~g[hkml`abdabdi")*<;+,-:9'./8   12534( !>=?@A#$%&067         !#$%&(c) Justus Sagemller 2017GPL v3"(@) sagemueller $ geo.uni-koeln.de experimentalportableNone&'03456<>?BFKNQSTVA  is almost, but not quite a mesh. It is a stongly connected directed graph, backed by a tree for fast nearest-neighbour lookup of points.j In general, there can be disconnected components, but every connected component is strongly connected.Prefer picking neighbours at right angles to the currently-explored-boundary. This is needed while we still have to link to points in different spatial directions.Prefer points directly opposed to the current boundary. This is useful when the system of directions is already complete and we want a nicely symmetric ball  of neighbours around each point.! from the co-Kleisli category of . A vector v for which we want dv .^v "e 0.A plane dv  and some vectors ws with dv  .^w "e 0, which should also fulfill dv .^w "e 0. The plane dv* fulfilling these properties, if possible.1Absolute-square distance (euclidean norm squared)TDirectional distance (distance from wall containing all already known neighbours)b Badness  of this point as the next neighbour to link to. In gatherDirections mode this is large if the point is far away, but also if it is right normal to the wall. The reason we punish this is that adding two points directly opposed to each other would lead to an ill-defined wall orientation, i.e. wrong normals on the web boundary.1The node towards which the paths should converge.-The action which to traverse along each path.2Initialisation/evaluation for each path-traversal.astxwvuyzgzystuvwx stuvwx(c) Justus Sagemller 2016GPL v3"(@) sagemueller $ geo.uni-koeln.de experimentalportableNone&'+03456;<=>?BFHKNPQSTV] If p5 is in all intersectors, it must also be in the hull.lRe-calculate the links in a web, so as to give each point a satisfyingly complete-spanning  environment.kConsider at each node not just the connections to already known neighbours, but also the connections to theirh neighbours. If these next-neighbours turn out to be actually situated closer, link to them directly.Fetch a point between any two neighbouring web nodes on opposite sides of the plane, and linearly interpolate the values onto the cut plane.! from the co-Kleisli category of .! from the co-Kleisli category of 1, restricted to some contiguous part of a web.Calculate a quadratic fit with uncertainty margin centered around the connection between any two adjacent nodes. In case of a regular grid (which we by no means require here!) this corresponds to the vector quantities of an Arakawa type C/D grid (cf. A. Arakawa, V.R. Lamb (1977): Computational design of the basic dynamical processes of the UCLA general circulation model)The  jhttp://hackage.haskell.org/package/transformers-0.5.4.0/docs/Control-Monad-Trans-Writer-Lazy.html#v:censortransformers version of this- is insufficiently polymorphic, requiring w ~ w'.Under intersection.6Local scalar-product generator. You can always use  recipMetric . uO (but this may give distortions compared to an actual Riemannian metric). Source tree.dSource tree, with topology information (IDs of neighbour-candidates, or needles pointing to them)7Scalar product on the domain, for regularising the web.7Scalar product on the domain, for regularising the web.#Badness function for local results.1     1      !"#$%&'()*+,-./0123(c) Justus Sagemller 2017GPL v3(@) jsagemue $ uni-koeln.de experimentalportableNone+0<BFNSTVð45(c) Justus Sagemller 2015GPL v3"(@) sagemueller $ geo.uni-koeln.de experimentalportableNone"#&'+-0356;<=>?ABFHKNPQSTV]R6789 :;<=!>?(c) Justus Sagemller 2016GPL v3"(@) sagemueller $ geo.uni-koeln.de experimentalportableNone&'+03456;<=>?BFHKNPQSTV]#An ordinary differential equation is one that does not need any a-priori partial derivatives to compute the derivative for integration in some propagation direction. Classically, ODEs are usually understood as DifferentialEquation ! ! p y, but actually x can at least be an arbitrary one-dimensional space (i.e. basically real intervals or 'S'). In these cases, there is always only one partial derivative: that which we integrate over, in the only possible direction for propagation.@A function that variates, relatively speaking, most strongly for arguments around 1. In the zero-limit it approaches a constant (but with arbitrarily large derivative); for  ! " the derivative approaches 0.[The idea is that if you consider the ratio of two function values, it will be close to 1 if either both arguments are much smaller or both much larger than 1, even if the ratio of these arguments is large. Only if both arguments are close to 1, or lie on opposite sides of it, will the ratio of the function values will be significant.  #$%&'() #$% '()&(c) Justus Sagemller 2018GPL v3"(@) sagemueller $ geo.uni-koeln.de experimentalportableNone\]^\]^"Safe߭AUnlike the related B, A "spreads out" the shorter list by duplicating elements, before merging, to minimise the number of elements from the longer list which aren't used.Cassociate = associateWith (,). ACDEFGHIJK#None+;=&LMNOPLMQ$%&'()'(*'+,'+-'+.'+/'+/'+0'+0'+1'+1'+2'+3'+4'+5'+6'+7'+8'+9'+:'+;'+<'+='+>'+?'+@'+A'+A'+B'CD'CE'CF'CG'CH'IJ'IK'IL'IM'IN'IO'IP'ID'IQ'IR'IE'IS'IT'IU'IF'IV'IW'IX'IG'IY'IZ'I['IH'I\'I]'I^'I^'I_'I`'Ia'Ia'Ib'Ic'Ic'Id'Iefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./ 0 0 1 234567899:;<<=>?@ABCDEFGHIJKLMNOPQR S T U V W X Y Z [ \ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s s t u v w x y z { | } ~                                                                                                                               ! " # $ % & ' ( ) ( * + , - . / 0 1 1 2 3 4 5 6 7 8 9 : ; < = > ? @ 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 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 { | } ~       !"#$%&'()*+,-./01234456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZZ[\\]^^_``abbcddeffghijklkmnoopqrstuvwxyz{|}~z{$%'C'C3$zzz   z{           !!!!!z                     $               z{       !"#$%&'()"*z+,"-"."/"0"1"2"3"4"5#6#7#8#6#9:(manifolds-0.4.5.0-6N5X1NphycZKnTHybRjDEcData.Manifold.TypesData.Manifold.PseudoAffineData.SimplicialComplex$Math.Manifold.Embedding.Simple.ClassData.Manifold.FibreBundleData.Manifold.AtlasData.Function.AffineData.Function.DifferentiableData.Manifold.Types.StiefelData.Manifold.RiemannianData.Manifold.Shade!Data.Manifold.Function.LocalModelData.Manifold.TreeCoverData.Manifold.Web.InternalData.Manifold.Web$Data.Manifold.Function.InterpolationData.Manifold.Griddable"Data.Manifold.DifferentialEquationControl.Monad.Trans.OuterMaybe Data.CoNatData.EmbeddingData.List.FastNubData.Manifold.Types.Primitive!Data.Function.Differentiable.DataControl.Applicative Applicative*> Alternative<|>Data.Manifold.Cone Data.Manifold.Function.Quadratic Data.ManifoldData.SetLike.IntersectionUtil.Associate Util.LtdShow1linearmap-category-0.3.5.0-LlKI763NLS0GrS0vjUE09WMath.LinearMap.Category.Class LinearMap,manifolds-core-0.4.5.0-DayGJ8uxPryuLe4IVs55H)Math.Manifold.VectorSpace.ZeroDimensionalZeroDimOriginMath.Manifold.Core.PseudoAffinealerpBpalerpBpalerpBoundarylessWitnessSemimanifoldWitnessPseudoAffineWitnesssemimanifoldWitness.-~^ translateP toInterior fromInterior.+~^InteriorNeedle SemimanifoldpseudoAffineWitness.-~!.-~. PseudoAffine fibreSpace baseSpace FibreBundle TangentBundleMath.Manifold.Core.TypesS¹ℝP¹S²ℝP²D²!Math.Manifold.Core.Types.InternalNegativeHalfSpherePositiveHalfSphereS⁰ℝPZeroℝP⁰ φParamS¹S¹Polar φParamℝP¹HemisphereℝP¹Polar φParamS² ϑParamS²S²Polar φParamℝP² ϑParamℝP²HemisphereℝP²Polar φParamD² rParamD²D²Polar pParamCD¹ hParamCD¹CD¹ pParamCℝay hParamCℝayCℝay xParamD¹D¹ℝℝ⁰NatOpenConeConeDisk2Disk1 Projective2 Projective1 Projective0Sphere2Sphere1Sphere0Real3Real2RealPlusReal1Real0ℝayℝ⁴ℝ³ℝ²ℝ¹NaturallyEmbeddedembedcoEmbedDualNeedleWitness ImpliesMetricMetricRequirement inferMetric inferMetric' RieMetric' RieMetricMetric'MetricNeedle' WithField LocalAffine LocalBilinear LocalLinearLocallyScalableLocalgetLocalOffsetCanonicalDiffeomorphismLocallyCoerciblelocallyTrivialDiffeomorphism coerceNeedle coerceNeedle' coerceNormcoerceVarianceoppositeLocalCoercioninteriorLocalCoercionManifoldboundarylessWitness inInterior coerceMetric coerceMetric'!+~^⊙+^$fPseudoAffineℝP²$fSemimanifoldℝP²$fPseudoAffineS²$fSemimanifoldS²$fPseudoAffinePoint$fSemimanifoldPoint$fPseudoAffineFreeVect$fSemimanifoldFreeVect $fManifoldm$fLocallyCoercible(,)(,)$fLocallyCoercible(,)(,)0$fLocallyCoercibleV4(,)$fLocallyCoercible(,)V4$fLocallyCoercibleV3(,)$fLocallyCoercibleV3(,)0$fLocallyCoercible(,)V3$fLocallyCoercible(,)V30$fLocallyCoercibleV2(,)$fLocallyCoercible(,)V2$fLocallyCoercibleV1Double$fLocallyCoercibleDoubleV1$fLocallyCoercibleV0ZeroDim$fLocallyCoercibleZeroDimV0$fLocallyCoercibleV4V4$fLocallyCoercibleV3V3$fLocallyCoercible(,)(,)1$fLocallyCoercible(,)(,)2$fLocallyCoercibleV2V2$fLocallyCoercible(,)(,)3$fLocallyCoercibleV1V1$fLocallyCoercibleDoubleDouble$fLocallyCoercibleV0V0 $fLocallyCoercibleZeroDimZeroDim$fImpliesMetricNorm $fShowLocalParallelTransportingtransportOnNeedleWitnessforgetTransportPropertiesparallelTransporttranslateAndInvblyParTransportForgetTransportPropertiesTransportOnNeedleWitnessTransportOnNeedle)$fNaturallyEmbeddedFibreBundleFibreBundle*$fNaturallyEmbeddedFibreBundleFibreBundle0*$fNaturallyEmbeddedFibreBundleFibreBundle1*$fNaturallyEmbeddedFibreBundleFibreBundle2*$fNaturallyEmbeddedFibreBundleFibreBundle3*$fNaturallyEmbeddedFibreBundleFibreBundle4*$fNaturallyEmbeddedFibreBundleFibreBundle5*$fNaturallyEmbeddedFibreBundleFibreBundle6$fNaturallyEmbeddedxFibreBundle$fPseudoAffineFibreBundle$fSemimanifoldFibreBundle$fAdditiveGroupFibreBundle$fParallelTransportingka(,)$fParallelTransportingk(,)(,)$fParallelTransportingkS²V2 $fParallelTransportingkS¹Double$fParallelTransportingkV4V4$fParallelTransportingkV3V3$fParallelTransportingkV2V2#$fParallelTransportingkDoubleDouble"$fParallelTransporting(->)mZeroDim,$fParallelTransportingLinearFunctionmZeroDim&$fParallelTransportingDiscretemZeroDim EuclidSpaceAffineManifoldAtlas ChartIndexchartReferencePointinteriorChartReferencePoint lookupAtlaseuclideanMetric $fAtlasPoint $fAtlasS² $fAtlasS¹ $fAtlasS⁰ $fAtlas(,) $fAtlasTensor$fAtlasLinearMap $fAtlasV4 $fAtlasV3 $fAtlasV2 $fAtlasV1 $fAtlasV0 $fAtlasDouble$fAtlasZeroDimAffine evalAffinefromOffsetSlope lensEmbeddingcorrespondingDirections$fEnhancedCatEmbeddingEmbedding$fVectorSpaceAffine$fAdditiveGroupAffine$fAffineSpaceAffine$fPseudoAffineAffine$fSemimanifoldAffine$fEnhancedCatAffineLinearMap$fEnhancedCat(->)Affine$fWellPointedAffine$fPreArrowAffine$fMorphismAffine$fCartesianAffine$fCategoryAffine RWDiffableRegionDifferentiablediscretisePathIncontinuityRangesdiscretisePathSegsanalyseLocalBehavioursmoothIndicatorregionOfContinuityAroundintervalImages?->?>?<?|: backupRegions$fHasAgentDifferentiable$fWellPointedDifferentiable$fPreArrowDifferentiable$fMorphismDifferentiable$fCartesianDifferentiable$fCategoryDifferentiable$fWellPointedRWDiffable$fPreArrowRWDiffable$fMorphismRWDiffable$fCartesianRWDiffable%$fEnhancedCatRWDiffableDifferentiable$fCategoryRWDiffable$fEnhancedCat(->)Differentiable$fNumGenericAgent$fAdditiveGroupGenericAgent($fPointAgentGenericAgentDifferentiableax$fCartesianAgentDifferentiable$fFloatingRWDfblFuncValue$fFractionalRWDfblFuncValue$fNumRWDfblFuncValue$fAdditiveGroupRWDfblFuncValue'$fPointAgentRWDfblFuncValueRWDiffableax$fCartesianAgentRWDiffable$fHasAgentRWDiffableStiefel1 getStiefel1N$fShowStiefel1 HasUnitSphere UnitSpherestiefel unstiefelstiefel1Project stiefel1EmbedCutplane sawHandle cutNormalLine lineHandle lineDirection StiefelScalar normalPlane sideOfCutfathomCutDistance cutPosBetweenlineAsPlaneIntersection$fPseudoAffineStiefel1$fSemimanifoldStiefel1$fLinearSpaceStiefel1Needle$fPseudoAffineStiefel1Needle$fSemimanifoldStiefel1Needle$fAffineSpaceStiefel1Needle$fFiniteFreeSpaceStiefel1Needle$fVectorSpaceStiefel1Needle$fAdditiveGroupStiefel1Needle$fHasBasisStiefel1Needle$fTensorSpaceStiefel1Needle$fHasTrieStiefel1Basis$fShowCutplane$fEqStiefel1Needle FlatSpace Riemannian rieMetric IntervalLiketoClosedIntervalGeodesicgeodesicBetweengeodesicWitness middleBetweenGeodesicWitness interpolatepointsBarycenter$fGeodesicLinearFunction$fGeodesicLinearMap$fGeodesicTensor $fGeodesicV4 $fGeodesicV3 $fGeodesicV2 $fGeodesicV1 $fGeodesicV0 $fGeodesicS¹$fGeodesicS⁰$fGeodesicStiefel1$fGeodesic(,,) $fGeodesic(,)$fGeodesicZeroDim$fGeodesicDouble$fIntervalLikeDouble$fIntervalLikeD¹$fRiemannianDouble LtdErrorShowprettyShowsPrecShade'WithAny_untopological _topological Refinable subShade' refineShade'convolveMetricconvolveShade'IsShadeshadeCtr occlusionfactoriseShade coerceShade orthoShadeslinIsoTransformShade projectShade embedShadeShade' _shade'Ctr_shade'NarrownessShade _shadeCtr _shadeExpanse:±linearProjectShade✠ dualShade dualShade' shadeExpanseshadeNarrowness fullShade fullShade'|±| pointsShadescoverAllAround pointsCovers pointsShade's pointsCover's pseudoECM pointsShades' shadesMerge mixShade'srangeOnGeodesicrangeWithinVerticesintersectShade's shadeWithAnyshadeWithoutAnythingprettyShowShade'wellDefinedShade'$fGeodesicShade$fSemimanifoldShade$fImpliesMetricShade$fGeodesicShade'$fSemimanifoldShade'$fImpliesMetricShade'$fIsShadeShade'$fIsShadeShade$fRefinableLinearMap $fRefinableV4 $fRefinableV3 $fRefinableV2 $fRefinableV1$fRefinableZeroDim$fRefinable(,)$fRefinableDouble$fMonadWithAny$fApplicativeWithAny$fAdditiveGroupWithAny$fVectorSpaceWithAny$fAffineSpaceWithAny$fPseudoAffineWithAny$fSemimanifoldWithAny$fNFDataWithAny $fShowShade'$fLtdErrorShowLinearMap$fLtdErrorShowLinearMap0$fLtdErrorShow(,)$fLtdErrorShowV4$fLtdErrorShowV3$fLtdErrorShowV2$fLtdErrorShowDouble$fLtdErrorShowZeroDim $fShowShade $fShowShade'0$fFunctorWithAny $fShowWithAny$fGenericWithAny $fShowShade0LocalDifferentialEqn_rescanDifferentialEqnLocalDataPropPlan_sourcePosition_targetPosOffset _sourceData_targetAPrioriData _relatedDataDifferentialEqn$fShowLocalDataPropPlan AffineModel_affineModelOffset_affineModelLCoeffestimateLocalJacobian$fShowAffineModelQuadraticModel_quadraticModelOffset_quadraticModelLCoeff_quadraticModelQCoeff$fShowQuadraticModel LocalModel fitLocallytweakLocalOffsetevalLocalModelModellableRelationquadraticModel_derivativesestimateLocalHessianpropagationCenteredModel!propagationCenteredQuadraticModelpropagateDEqnSolution_loc$fLocalModelQuadraticModel$fLocalModelAffineModelSuccThreeTwoOneZeroNeighbouringSimplices SimplexIT HaskMonadTriangT TriangulationSimplexZS:<|.<. makeSimplex makeSimplex'simplexVerticessimplexVertices' evalTriangT runTriangT doTriangT getTriang liftInTriangTunliftInTriangT tgetSimplexITlookSplxFacesITlookSplxVerticesIT lookVertexIT lookSimplex simplexITListlookSupersimplicesITsharedBoundarydistinctSimplicesdisjointTriangulationmixinTriangulation$fFunctorSimplex$fMonoidTriangulation$fSemigroupTriangulation$fFunctorTriangulation$fMonadTransTriangT$fMonadTriangT$fApplicativeTriangT$fFunctorTriangT $fEqSimplexIT$fOrdSimplexIT$fShowSimplexIT$fShowTriangulation $fShowSimplex HasFlatViewFlatViewflatView superFlatView GenericTree treeBranches NonEmptyTreeTrees SimpleTree AutoTriang TriangBuild TwigEnvironTwigDBranchDBranch'boughDirection boughContentsShaded PlainLeavesDisjointBranchesOverlappingBranches ShadeTree Hourglass upperBulb lowerBulb trunkBranchestraverseTrunkBranchChoicesfromLeafPointsfromLeafPoints_indexShadeTreetreeLeaf positionIndexnLeaves treeDepthunsafeFmapTreeallTwigstwigsWithEnvironscompleteTopShadingflexTwigsShadingseekPotentialNeighbours doTriangBuildbreakdownAutoTriang朳 onlyNodes entireTree onlyLeaves_ onlyLeaves constShaded fmapShadedzipTreeWithListstiAsIntervalMapping spanShading$fFoldableHourglass(->)(->)$fApplicativeHourglass$fMonoidHourglass$fSemigroupHourglass$fNFDataHourglass$fNFDataDBranch'$fNFDataShaded$fMonoidShaded$fSemigroupShaded$fSemigroupDBranches'$fPseudoAffineBaryCoords$fSemimanifoldBaryCoords$fAffineSpaceBaryCoords$fShowGenericTree$fMonoidGenericTree$fSemigroupGenericTree$fNFDataGenericTree$fMonoidSawbones$fSemigroupSawbones$fSemigroupDustyEdges$fSemigroupSawboneses$fHasFlatViewSawboneses$fHasFlatViewSawbones$fGenericHourglass$fFunctorHourglass$fFoldableHourglass$fTraversableHourglass$fShowHourglass$fGenericDBranch'$fFunctorDBranch'$fFoldableDBranch'$fTraversableDBranch'$fGenericShaded$fFunctorShaded$fFoldableShaded$fTraversableShaded$fGenericDBranches'$fFunctorDBranches'$fFoldableDBranches'$fTraversableDBranches'$fGenericGenericTree$fFunctorGenericTree$fFoldableGenericTree$fTraversableGenericTree$fGenericSawboneses$fEqGenericTree$fShowDBranches'$fShowDBranch' $fShowShaded Neighbourhood _dataAtNode _neighbours_localScalarProduct_webBoundaryAtNodeWebNodeIdOffset WebNodeId$fGenericNeighbourhood$fFunctorNeighbourhood$fFoldableNeighbourhood$fTraversableNeighbourhood WebLocally LocalWebInfo_thisNodeCoord _thisNodeData _thisNodeId_nodeNeighbours_nodeLocalScalarProduct_webBoundingPlane dataAtNodelocalScalarProduct neighbourswebBoundaryAtNode$fGenericWebLocally$fShowNeighbourhoodNeighbourhoodVector_nvectId _theNVect _nvectNormal _nvectLength_otherNeighboursOverlapnodeLocalScalarProductnodeNeighbours thisNodeCoord thisNodeData thisNodeIdwebBoundingPlanePropagationInconsistencyPropagationInconsistencies_inconsistentPropagatedData_inconsistentAPrioriDatanvectId nvectLength nvectNormalotherNeighboursOverlaptheNVect$fShowPropagationInconsistencyWebChunk _thisChunk_layersAroundChunk PointsWeb webNodeRscinconsistentAPrioriDatainconsistentPropagatedData$fNFDataNeighbourhood $fMonoidPropagationInconsistency$fFoldablePointsWeb(->)(->)$fNFDataPointsWeb$fGenericPointsWeb$fFunctorPointsWeb$fFoldablePointsWeb$fTraversablePointsWeb NodeInWeb _thisNodeOnly_layersAroundNodelayersAroundChunk thisChunkPathStep_pathStepStart _pathStepEndlayersAroundNode thisNodeOnlyNodeSetWNIPathLinkingBadnessgatherDirectionsBadnesscloseSystemBadness MetricChoice pathStepEnd pathStepStarttraverseInnermostChunkstraverseNodesInEnvifmapNodesInEnviixedFociindexWebunsafeIndexWebDatajumpNodeOffsetwebAroundChunkzoomoutWebChunk pickNodeInWeb webLocalInfo localFmapWebtweakWebGeometrybidirectionaliseWebLinks pumpHalfspacesmallPseudorandSeqlinkingUndesirabilitybestNeighboursbestNeighbours'gatherGoodNeighboursextractSmallestOn pathsTowardstraversePathInIWebtraversePathsTowards$fComonadWebLocally$fFunctorWebLocally$fFunctorLinkingBadnessInconsistencyStrategyAbortOnInconsistencyIgnoreInconsistenciesHighlightInconsistenciesInformationMergeStrategymergeInformation ConvexSet EmptyConvex convexSetHullconvexSetIntersectors fromWebNodesfromShadeTree_auto fromShadeTree fromShaded knitShortcuts webBoundarycoerceWebDomain sliceWeb_linsampleWeb_2Dcartesian_linsampleEntireWeb_2Dcartesian_lin localFocusWeb localOnion webOnionsnearestNeighbour!differentiateUncertainWebFunctionlocalModels_CGrid#differentiate²UncertainWebFunctionrescanPDELocallytoGraph ellipsoid ellipsoidSetnaïveinconsistencyAwareindicateInconsistenciespostponeInconsistenciesiterateFilterDEqn_staticiterateFilterDEqn_pathwise"iterateFilterDEqn_static_selective$fSemigroupConvexSet$fApplicativeAverage$fMonoidAverage$fFunctorAverage$fFunctorInconsistencyStrategy$fShowConvexSet$fShowGridSetup$fShowGridPlanesfilterDEqnSolutions_adaptiveiterateFilterDEqn_adaptiveInterpolationFunction GriddableGriddingParameters mkGriddingGridAxisGridAxInterval GridAxConsGridAxisClosed$fGriddable(,)a$fGriddableDouble[]$fFunctorGridAxisODEconstLinearDEqnconstLinearODEeuclideanVolGoalmaxDeviationsGoaluncertaintyGoaluncertaintyGoal' OuterMaybeT OuterJust OuterNothing getFreeVect getInRangeindices^FreeVectRangeInRangeKnownNattheNatNtheNatcozerocozeroTcosuccfCosucccosuccTfCosuccTcoNatcoNatTcoInduce coInduceT ftorCoInduce ftorCoInduceT tryToMatchSZnatToIntfromNat natTagLastnatTagPænultimatenatTagAntepænultimate tryToMatchT tryToMatchTT tryToMatchTTTftorTryToMatchftorTryToMatchTftorTryToMatchTT replicVector freeVectorperfectZipWith freeRotatefreeConsfreeSnoc AsHaskFunctorrunAsHaskFunctorNatTagAtFtorAntepænultimategetNatTagAtFtorAntepænultimateNatTagAtFtorPænultimategetNatTagAtFtorPænultimateNatTagAtFtorUltimategetNatTagAtFtorUltimateNatTagAtPreantepænultimategetNatTagAtPreantepænultimateNatTagAtAntepænultimategetNatTagAtAntepænultimateNatTagAtPænultimategetNatTagAtPænultimate$fHasTrieRangeD:R::->:Rangex0 RangeTrie EmbeddingfromEmbedProject projection embedding Isomorphism backwardIso forwardIso$->$$<-$fromInversePair perfectInvert$->>-$ fastNubBy fastNubByWithbaseGHC.BaseconstsortWithFastNubfastNub fnubMergeBy sfGroupBy fnubConcatBy fnubConcat fnubConcatMap fnubIntersectempty!lens-4.15.4-DW19aeNzYNQ2yFguFaRpzControl.Lens.Getter^.⊗ fromIntv0to1otherHalfSphere EndomorphismGraphWindowSpeclBoundrBoundbBoundtBound xResolution yResolution EqFloatingMath.LinearMap.Category|$|ghc-prim GHC.TypesDouble(vector-space-0.12-6bDUFEpxa364m086uILORbData.AffineSpace AffineSpaceGHC.NumNum GHC.FloatFloatingisNaN PreRegion tryDfblDomain RealSubray GlobalRegion regionRDefregionRefPointDiffableEndoProofNotDiffableEndoIsDiffableEndo AffinDiffable LinDevPropagnotDefinedHere minDblfuncsunsafePreRegionIntersect regionProd preRegionProd lerp_diffableData.VectorSpacelerpRWDfblFuncValue ConstRWDFV RWDFV_IdVar GenericRWDFV ConeSemimfdtoCD¹InteriortoCℝayInteriorfromCD¹InteriorfromCℝayInteriorCℝayInteriorSConn'dConeVecArr ConeNeedle ConeVecArr getConeVecArrbijectℝplustoℝbijectℝtoℝplusbijectℝplustoIntvbijectIntvtoℝplusbijectℝtoIntvbijectIntvtoℝembCℝayToCD¹projCD¹ToCℝayNothing Stiefel1BasisgetStiefel1BasisStiefel1NeedlegetStiefel1TangentD:R::->:Stiefel1Basisa0St1BTrie+$> Quadratic evalQuadraticminusLogOcclusion'ltdErrorShowWitnessshowsPrecShade'_errorLtdCprettyShowsPrecShadeLtdErrorShowWitness debugView DebugView p¹Dimension p²DimensionrmTautologyIntersect IntersectTgetIntersectorssingleIntersecttgetSimplexIT'unsafeRunTriangTTriangSkeletonTriangVerticesGHC.ShowShow amputateIdsWall_wallID _wallAnchor _wallNormal _wallDistance Sawboneses SingleCut DustyEdgessawChunk chunkDustSawbones sawnTrunk1 sawnTrunk2sawdust1sawdust2 getAutoTriang TriangBuilderTriangVerticesStISimplexiSimplexBCCordEmbed BaryCoordsgetBaryCoordsTail DBranches' DBranches HourglassBulb UpperBulb LowerBulbfmapsmoothenWebTopology5constrained-categories-0.3.1.0-I9mBjikXxv8GLzhNO6LHi2Control.Functor.ConstrainedlocalTraverseWebcensor fromTopShadedSolverNodeStateSolverNodeInfo_solverNodeStatus_solverNodeJacobian_solverNodeBadness_solverNodeAgeAverageweight averageAcc GridSetup_gridStartCorner_gridSplitDirs GridPlanes_gridPlaneNormal_gridPlaneSpacing_gridPlanesCountInterpolationIv_interpolationSegRange_interpolationFunction _interpWebIntervalivLBoundivRBoundD:R:GriddingParameters(,)a0PairGriddingParametersfstGriddingParamssndGriddingParamsD:R:GriddingParametersDouble[]0 ℝGridParam goalSensitive associateWithGHC.ListzipWith associateassociaterSectorsWithassociaterSectorsassociatelSectorsWithassociatelSectors partitionsdividemapOnNthmapExceptOnNthLtdShowltdShowLtdShowT runLtdShow