manifolds-0.4.5.0: Coordinate-free hypersurfaces

Copyright(c) Justus Sagemüller 2015
LicenseGPL v3
Maintainer(@) sagemueller $ geo.uni-koeln.de
Stabilityexperimental
Portabilityportable
Safe HaskellNone
LanguageHaskell2010

Data.Manifold.Types

Contents

Description

Several commonly-used manifolds, represented in some simple way as Haskell data types. All these are in the PseudoAffine class.

Synopsis

Index / ASCII names

type Real1 = Source #

type Disk1 = Source #

type Disk2 = Source #

type Cone = CD¹ Source #

data FibreBundle b f :: * -> * -> * #

A fibre bundle combines points in the base space b with points in the fibre f. The type FibreBundle b f is thus isomorphic to the tuple space (b,f), but it can have a different topology, the prime example being TangentBundle, where nearby points may have differently-oriented tangent spaces.

Constructors

FibreBundle 

Fields

Instances

(Show (Interior b), Show f) => Show (FibreBundle b f) 

Methods

showsPrec :: Int -> FibreBundle b f -> ShowS #

show :: FibreBundle b f -> String #

showList :: [FibreBundle b f] -> ShowS #

Generic (FibreBundle b f) 

Associated Types

type Rep (FibreBundle b f) :: * -> * #

Methods

from :: FibreBundle b f -> Rep (FibreBundle b f) x #

to :: Rep (FibreBundle b f) x -> FibreBundle b f #

type Rep (FibreBundle b f) 
type Rep (FibreBundle b f) = D1 * (MetaData "FibreBundle" "Math.Manifold.Core.PseudoAffine" "manifolds-core-0.4.5.0-DayGJ8uxPryuLe4IVs55H" False) (C1 * (MetaCons "FibreBundle" PrefixI True) ((:*:) * (S1 * (MetaSel (Just Symbol "baseSpace") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 * (Interior b))) (S1 * (MetaSel (Just Symbol "fibreSpace") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 * f))))
type Interior (FibreBundle m f) # 
type Needle (FibreBundle m f) # 

type TangentBundle m = FibreBundle m (Needle m) #

Points on a manifold, combined with vectors in the respective tangent space.

Linear manifolds

data ZeroDim s :: * -> * #

Constructors

Origin 

Instances

LtdErrorShow ℝ⁰ Source # 
Refinable ℝ⁰ Source # 
NaturallyEmbedded ℝ⁰ ℝ⁰ Source # 
Eq (ZeroDim s) 

Methods

(==) :: ZeroDim s -> ZeroDim s -> Bool #

(/=) :: ZeroDim s -> ZeroDim s -> Bool #

Show (ZeroDim s) 

Methods

showsPrec :: Int -> ZeroDim s -> ShowS #

show :: ZeroDim s -> String #

showList :: [ZeroDim s] -> ShowS #

Monoid (ZeroDim s) 

Methods

mempty :: ZeroDim s #

mappend :: ZeroDim s -> ZeroDim s -> ZeroDim s #

mconcat :: [ZeroDim s] -> ZeroDim s #

AdditiveGroup (ZeroDim s) 

Methods

zeroV :: ZeroDim s #

(^+^) :: ZeroDim s -> ZeroDim s -> ZeroDim s #

negateV :: ZeroDim s -> ZeroDim s #

(^-^) :: ZeroDim s -> ZeroDim s -> ZeroDim s #

AdditiveGroup s => InnerSpace (ZeroDim s) 

Methods

(<.>) :: ZeroDim s -> ZeroDim s -> Scalar (ZeroDim s) #

VectorSpace (ZeroDim s) 

Associated Types

type Scalar (ZeroDim s) :: * #

Methods

(*^) :: Scalar (ZeroDim s) -> ZeroDim s -> ZeroDim s #

HasBasis (ZeroDim s) 

Associated Types

type Basis (ZeroDim s) :: * #

AffineSpace (ZeroDim s) 

Associated Types

type Diff (ZeroDim s) :: * #

Methods

(.-.) :: ZeroDim s -> ZeroDim s -> Diff (ZeroDim s) #

(.+^) :: ZeroDim s -> Diff (ZeroDim s) -> ZeroDim s #

RieszDecomposable (ZeroDim ℝ) 

Methods

rieszDecomposition :: (FiniteDimensional v, (* ~ v) (DualVector v), (* ~ Scalar v) (Scalar (ZeroDim ℝ))) => (v +> ZeroDim ℝ) -> [(Basis (ZeroDim ℝ), v)]

TensorDecomposable (ZeroDim ℝ) 

Methods

tensorDecomposition :: (ZeroDim w) -> [(Basis (ZeroDim ℝ), w)]

showsPrecBasis :: Functor p => p (ZeroDim ℝ) -> Int -> Basis (ZeroDim ℝ) -> ShowS

(Fractional' s, SemiInner s) => SemiInner (ZeroDim s) 
Num' s => FiniteDimensional (ZeroDim s) 

Associated Types

data SubBasis (ZeroDim s) :: * #

Num' s => TensorSpace (ZeroDim s) 

Associated Types

type TensorProduct (ZeroDim s) w :: * #

Methods

scalarSpaceWitness :: ScalarSpaceWitness (ZeroDim s) #

linearManifoldWitness :: LinearManifoldWitness (ZeroDim s) #

zeroTensor :: (TensorSpace w, (* ~ Scalar w) (Scalar (ZeroDim s))) => ZeroDim s w #

toFlatTensor :: ZeroDim s -+> (ZeroDim s Scalar (ZeroDim s)) #

fromFlatTensor :: (ZeroDim s Scalar (ZeroDim s)) -+> ZeroDim s #

addTensors :: (TensorSpace w, (* ~ Scalar w) (Scalar (ZeroDim s))) => (ZeroDim s w) -> (ZeroDim s w) -> ZeroDim s w #

subtractTensors :: (TensorSpace (ZeroDim s), TensorSpace w, (* ~ Scalar w) (Scalar (ZeroDim s))) => (ZeroDim s w) -> (ZeroDim s w) -> ZeroDim s w #

scaleTensor :: (TensorSpace w, (* ~ Scalar w) (Scalar (ZeroDim s))) => Bilinear (Scalar (ZeroDim s)) (ZeroDim s w) (ZeroDim s w) #

negateTensor :: (TensorSpace w, (* ~ Scalar w) (Scalar (ZeroDim s))) => (ZeroDim s w) -+> (ZeroDim s w) #

tensorProduct :: (TensorSpace w, (* ~ Scalar w) (Scalar (ZeroDim s))) => Bilinear (ZeroDim s) w (ZeroDim s w) #

tensorProducts :: (TensorSpace w, (* ~ Scalar w) (Scalar (ZeroDim s))) => [(ZeroDim s, w)] -> ZeroDim s w #

transposeTensor :: (TensorSpace w, (* ~ Scalar w) (Scalar (ZeroDim s))) => (ZeroDim s w) -+> (w ZeroDim s) #

fmapTensor :: (TensorSpace w, TensorSpace x, (* ~ Scalar w) (Scalar (ZeroDim s)), (* ~ Scalar x) (Scalar (ZeroDim s))) => Bilinear (w -+> x) (ZeroDim s w) (ZeroDim s x) #

fzipTensorWith :: (TensorSpace u, TensorSpace w, TensorSpace x, (* ~ Scalar u) (Scalar (ZeroDim s)), (* ~ Scalar w) (Scalar (ZeroDim s)), (* ~ Scalar x) (Scalar (ZeroDim s))) => Bilinear ((w, x) -+> u) (ZeroDim s w, ZeroDim s x) (ZeroDim s u) #

coerceFmapTensorProduct :: Functor p => p (ZeroDim s) -> Coercion * a b -> Coercion * (TensorProduct (ZeroDim s) a) (TensorProduct (ZeroDim s) b) #

wellDefinedVector :: ZeroDim s -> Maybe (ZeroDim s) #

wellDefinedTensor :: (TensorSpace w, (* ~ Scalar w) (Scalar (ZeroDim s))) => (ZeroDim s w) -> Maybe (ZeroDim s w) #

Num' s => LinearSpace (ZeroDim s) 

Associated Types

type DualVector (ZeroDim s) :: * #

Methods

dualSpaceWitness :: DualSpaceWitness (ZeroDim s) #

linearId :: ZeroDim s +> ZeroDim s #

idTensor :: ZeroDim s DualVector (ZeroDim s) #

sampleLinearFunction :: (TensorSpace w, (* ~ Scalar (ZeroDim s)) (Scalar w)) => (ZeroDim s -+> w) -+> (ZeroDim s +> w) #

toLinearForm :: DualVector (ZeroDim s) -+> (ZeroDim s +> Scalar (ZeroDim s)) #

fromLinearForm :: (ZeroDim s +> Scalar (ZeroDim s)) -+> DualVector (ZeroDim s) #

coerceDoubleDual :: Coercion * (ZeroDim s) (DualVector (DualVector (ZeroDim s))) #

trace :: (ZeroDim s +> ZeroDim s) -+> Scalar (ZeroDim s) #

contractTensorMap :: (TensorSpace w, (* ~ Scalar w) (Scalar (ZeroDim s))) => (ZeroDim s +> (ZeroDim s w)) -+> w #

contractMapTensor :: (TensorSpace w, (* ~ Scalar w) (Scalar (ZeroDim s))) => (ZeroDim s (ZeroDim s +> w)) -+> w #

contractTensorFn :: (TensorSpace w, (* ~ Scalar w) (Scalar (ZeroDim s))) => (ZeroDim s -+> (ZeroDim s w)) -+> w #

contractLinearMapAgainst :: (LinearSpace w, (* ~ Scalar w) (Scalar (ZeroDim s))) => Bilinear (ZeroDim s +> w) (w -+> ZeroDim s) (Scalar (ZeroDim s)) #

applyDualVector :: Bilinear (DualVector (ZeroDim s)) (ZeroDim s) (Scalar (ZeroDim s)) #

applyLinear :: (TensorSpace w, (* ~ Scalar w) (Scalar (ZeroDim s))) => Bilinear (ZeroDim s +> w) (ZeroDim s) w #

composeLinear :: (LinearSpace w, TensorSpace x, (* ~ Scalar w) (Scalar (ZeroDim s)), (* ~ Scalar x) (Scalar (ZeroDim s))) => Bilinear (w +> x) (ZeroDim s +> w) (ZeroDim s +> x) #

tensorId :: (LinearSpace w, (* ~ Scalar w) (Scalar (ZeroDim s))) => (ZeroDim s w) +> (ZeroDim s w) #

applyTensorFunctional :: (LinearSpace u, (* ~ Scalar u) (Scalar (ZeroDim s))) => Bilinear (DualVector (ZeroDim s u)) (ZeroDim s u) (Scalar (ZeroDim s)) #

applyTensorLinMap :: (LinearSpace u, TensorSpace w, (* ~ Scalar u) (Scalar (ZeroDim s)), (* ~ Scalar w) (Scalar (ZeroDim s))) => Bilinear ((ZeroDim s u) +> w) (ZeroDim s u) w #

Semimanifold (ZeroDim k) 
PseudoAffine (ZeroDim k) 
Atlas (ZeroDim s) Source # 
Geodesic (ZeroDim s) Source # 
(PseudoAffine m, (~) * m (Interior m), (~) * s (Scalar (Needle m)), Num' s) => ParallelTransporting (Discrete *) m (ZeroDim s) Source # 
(PseudoAffine m, (~) * m (Interior m), (~) * s (Scalar (Needle m)), Num' s) => ParallelTransporting (LinearFunction s) m (ZeroDim s) Source # 
NumPrime s => LocallyCoercible (V0 s) (ZeroDim s) Source # 
NumPrime s => LocallyCoercible (ZeroDim s) (V0 s) Source # 
NumPrime s => LocallyCoercible (ZeroDim s) (ZeroDim s) Source # 
(PseudoAffine m, (~) * m (Interior m), (~) * s (Scalar (Needle m)), Num' s) => ParallelTransporting ((->) LiftedRep LiftedRep) m (ZeroDim s) Source # 
type Scalar (ZeroDim s) 
type Scalar (ZeroDim s) = s
type Basis (ZeroDim s) 
type Basis (ZeroDim s) = Void
type Diff (ZeroDim s) 
type Diff (ZeroDim s) = ZeroDim s
data SubBasis (ZeroDim s) 
type DualVector (ZeroDim s) 
type Interior (ZeroDim k) 
type Interior (ZeroDim k) = ZeroDim k
type Needle (ZeroDim k) 
type Needle (ZeroDim k) = ZeroDim k
type ChartIndex (ZeroDim s) Source # 
type ChartIndex (ZeroDim s) = ()
type TensorProduct (ZeroDim s) v 

type = Double #

Hyperspheres

General form: Stiefel manifolds

stiefel1Project Source #

Arguments

:: LinearSpace v 
=> DualVector v

Must be nonzero.

-> Stiefel1 v 

Specific examples

data S⁰ :: * #

The zero-dimensional sphere is actually just two points. Implementation might therefore change to ℝ⁰ + ℝ⁰: the disjoint sum of two single-point spaces.

newtype :: * #

The unit circle.

Constructors

S¹Polar 

Fields

Instances

Show  

Methods

showsPrec :: Int -> -> ShowS #

show :: -> String #

showList :: [] -> ShowS #

Semimanifold  
PseudoAffine  
Atlas Source # 
Geodesic Source # 
NaturallyEmbedded ℝ² Source # 
(Category k, Object k ) => ParallelTransporting k Source # 
type Interior  
type Needle  
type Needle =
type ChartIndex Source # 

pattern :: Double -> #

pattern :: Double -> Double -> #

Projective spaces

pattern ℝP¹ :: Double -> ℝP¹ #

data ℝP² :: * #

The two-dimensional real projective space, implemented as a disk with opposing points on the rim glued together. Image this disk as the northern hemisphere of a unit sphere; 'ℝP²' is the space of all straight lines passing through the origin of 'ℝ³', and each of these lines is represented by the point at which it passes through the hemisphere.

Constructors

HemisphereℝP²Polar 

Fields

pattern ℝP² :: Double -> Double -> ℝP² #

Intervals/disks/cones

newtype :: * #

The “one-dimensional disk” – really just the line segment between the two points -1 and 1 of 'S⁰', i.e. this is simply a closed interval.

Constructors

 

Fields

data :: * #

The standard, closed unit disk. Homeomorphic to the cone over 'S¹', but not in the the obvious, “flat” way. (In is not homeomorphic, despite the almost identical ADT definition, to the projective space 'ℝP²'!)

Constructors

D²Polar 

Fields

Instances

Show  

Methods

showsPrec :: Int -> -> ShowS #

show :: -> String #

showList :: [] -> ShowS #

pattern :: Double -> Double -> #

type ℝay = Cℝay ℝ⁰ Source #

Better known as ℝ⁺ (which is not a legal Haskell name), the ray of positive numbers (including zero, i.e. closed on one end).

data CD¹ x :: * -> * #

A (closed) cone over a space x is the product of x with the closed interval 'D¹' of “heights”, except on its “tip”: here, x is smashed to a single point.

This construct becomes (homeomorphic-to-) an actual geometric cone (and to 'D²') in the special case x = 'S¹'.

Constructors

CD¹ 

Fields

Instances

Show x => Show (CD¹ x) 

Methods

showsPrec :: Int -> CD¹ x -> ShowS #

show :: CD¹ x -> String #

showList :: [CD¹ x] -> ShowS #

type Interior (CD¹ m) # 
type Interior (CD¹ m)
type Needle (CD¹ m) # 
type Needle (CD¹ m)

data Cℝay x :: * -> * #

An open cone is homeomorphic to a closed cone without the “lid”, i.e. without the “last copy” of x, at the far end of the height interval. Since that means the height does not include its supremum, it is actually more natural to express it as the entire real ray, hence the name.

Constructors

Cℝay 

Fields

Instances

Show x => Show (Cℝay x) 

Methods

showsPrec :: Int -> Cℝay x -> ShowS #

show :: Cℝay x -> String #

showList :: [Cℝay x] -> ShowS #

NaturallyEmbedded x p => NaturallyEmbedded (Cℝay x) (p, ) Source # 

Methods

embed :: Cℝay x -> (p, ) Source #

coEmbed :: (p, ) -> Cℝay x Source #

type Interior (Cℝay m) # 
type Interior (Cℝay m)
type Needle (Cℝay m) # 
type Needle (Cℝay m)

Affine subspaces

Lines

data Line x Source #

Constructors

Line 

Hyperplanes

data Cutplane x Source #

Oriented hyperplanes, naïvely generalised to PseudoAffine manifolds: Cutplane p w represents the set of all points q such that (q.-~.p) ^<.> w ≡ 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.

Constructors

Cutplane 

Fields

Instances

(Show x, Show (Needle' x)) => Show (Cutplane x) Source # 

Methods

showsPrec :: Int -> Cutplane x -> ShowS #

show :: Cutplane x -> String #

showList :: [Cutplane x] -> ShowS #

normalPlane Source #

Arguments

:: x

Some point lying in the desired plane.

-> Needle' x

Co-vector perpendicular to the plane. Must be nonzero.

-> Cutplane x 

fathomCutDistance Source #

Arguments

:: (WithField PseudoAffine x, LinearSpace (Needle x)) 
=> Cutplane x

Hyperplane to measure the distance from.

-> Metric' x

Metric to use for measuring that distance. This can only be accurate if the metric is valid both around the cut-plane's sawHandle, and around the points you measure. (Strictly speaking, we would need parallel transport to ensure this).

-> x

Point to measure the distance to.

-> Maybe

A signed number, giving the distance from plane to point with indication on which side the point lies. Nothing if the point isn't reachable from the plane.

Linear mappings

data LinearMap s v w :: * -> * -> * -> * #

The tensor product between one space's dual space and another space is the space spanned by vector–dual-vector pairs, in bra-ket notation written as

m = ∑ |w⟩⟨v|

Any linear mapping can be written as such a (possibly infinite) sum. The TensorProduct data structure only stores the linear independent parts though; for simple finite-dimensional spaces this means e.g. LinearMap ℝ ℝ³ ℝ³ effectively boils down to an ordinary matrix type, namely an array of column-vectors |w⟩.

(The ⟨v| dual-vectors are then simply assumed to come from the canonical basis.)

For bigger spaces, the tensor product may be implemented in a more efficient sparse structure; this can be defined in the TensorSpace instance.

Instances

(Show (SubBasis (DualVector u)), Show (SubBasis v)) => Show (SubBasis (LinearMap s u v)) 

Methods

showsPrec :: Int -> SubBasis (LinearMap s u v) -> ShowS #

show :: SubBasis (LinearMap s u v) -> String #

showList :: [SubBasis (LinearMap s u v)] -> ShowS #

Num' s => Morphism (LinearMap s) 

Methods

first :: (ObjectPair (LinearMap s) b d, ObjectPair (LinearMap s) c d) => LinearMap s b c -> LinearMap s (b, d) (c, d) #

second :: (ObjectPair (LinearMap s) d b, ObjectPair (LinearMap s) d c) => LinearMap s b c -> LinearMap s (d, b) (d, c) #

(***) :: (ObjectPair (LinearMap s) b b', ObjectPair (LinearMap s) c c') => LinearMap s b c -> LinearMap s b' c' -> LinearMap s (b, b') (c, c') #

Num' s => PreArrow (LinearMap s) 

Methods

(&&&) :: (Object (LinearMap s) b, ObjectPair (LinearMap s) c c') => LinearMap s b c -> LinearMap s b c' -> LinearMap s b (c, c') #

terminal :: Object (LinearMap s) b => LinearMap s b (UnitObject (LinearMap s)) #

fst :: ObjectPair (LinearMap s) x y => LinearMap s (x, y) x #

snd :: ObjectPair (LinearMap s) x y => LinearMap s (x, y) y #

Category (LinearMap s) 

Associated Types

type Object (LinearMap s :: * -> * -> *) o :: Constraint #

Methods

id :: Object (LinearMap s) a => LinearMap s a a #

(.) :: (Object (LinearMap s) a, Object (LinearMap s) b, Object (LinearMap s) c) => LinearMap s b c -> LinearMap s a b -> LinearMap s a c #

Num' s => Cartesian (LinearMap s) 

Associated Types

type PairObjects (LinearMap s :: * -> * -> *) a b :: Constraint #

type UnitObject (LinearMap s :: * -> * -> *) :: * #

Methods

swap :: (ObjectPair (LinearMap s) a b, ObjectPair (LinearMap s) b a) => LinearMap s (a, b) (b, a) #

attachUnit :: ((* ~ u) (UnitObject (LinearMap s)), ObjectPair (LinearMap s) a u) => LinearMap s a (a, u) #

detachUnit :: ((* ~ u) (UnitObject (LinearMap s)), ObjectPair (LinearMap s) a u) => LinearMap s (a, u) a #

regroup :: (ObjectPair (LinearMap s) a b, ObjectPair (LinearMap s) b c, ObjectPair (LinearMap s) a (b, c), ObjectPair (LinearMap s) (a, b) c) => LinearMap s (a, (b, c)) ((a, b), c) #

regroup' :: (ObjectPair (LinearMap s) a b, ObjectPair (LinearMap s) b c, ObjectPair (LinearMap s) a (b, c), ObjectPair (LinearMap s) (a, b) c) => LinearMap s ((a, b), c) (a, (b, c)) #

Num' s => EnhancedCat (LinearMap s) (LinearFunction s) 

Methods

arr :: (Object (LinearFunction s) b, Object (LinearFunction s) c, Object (LinearMap s) b, Object (LinearMap s) c) => LinearFunction s b c -> LinearMap s b c #

Num' s => EnhancedCat (LinearFunction s) (LinearMap s) 

Methods

arr :: (Object (LinearMap s) b, Object (LinearMap s) c, Object (LinearFunction s) b, Object (LinearFunction s) c) => LinearMap s b c -> LinearFunction s b c #

EnhancedCat (Affine s) (LinearMap s) # 

Methods

arr :: (Object (LinearMap s) b, Object (LinearMap s) c, Object (Affine s) b, Object (Affine s) c) => LinearMap s b c -> Affine s b c #

Num' s => EnhancedCat ((->) LiftedRep LiftedRep) (LinearMap s) 

Methods

arr :: (Object (LinearMap s) b, Object (LinearMap s) c, Object (LiftedRep -> LiftedRep) b, Object (LiftedRep -> LiftedRep) c) => LinearMap s b c -> (LiftedRep -> LiftedRep) b c #

(Num' s, LinearSpace v, (~) * (Scalar v) s) => Monoidal (LinearMap s v) (LinearFunction s) (LinearFunction s) 
(LinearSpace v, Num' s, (~) * (Scalar v) s) => Functor (LinearMap s v) (LinearFunction s) (LinearFunction s) 
(LinearSpace v, (~) * (Scalar v) s) => Functor (LinearMap s v) (Coercion *) (Coercion *) 

Methods

fmap :: (Object (Coercion *) a, Object (Coercion *) (LinearMap s v a), Object (Coercion *) b, Object (Coercion *) (LinearMap s v b)) => Coercion * a b -> Coercion * (LinearMap s v a) (LinearMap s v b) #

(LinearSpace v, TensorSpace w, (~) * (Scalar v) s, (~) * (Scalar w) s) => AdditiveGroup (LinearMap s v w) 

Methods

zeroV :: LinearMap s v w #

(^+^) :: LinearMap s v w -> LinearMap s v w -> LinearMap s v w #

negateV :: LinearMap s v w -> LinearMap s v w #

(^-^) :: LinearMap s v w -> LinearMap s v w -> LinearMap s v w #

(LinearSpace v, TensorSpace w, (~) * (Scalar v) s, (~) * (Scalar w) s) => VectorSpace (LinearMap s v w) 

Associated Types

type Scalar (LinearMap s v w) :: * #

Methods

(*^) :: Scalar (LinearMap s v w) -> LinearMap s v w -> LinearMap s v w #

(LinearSpace u, TensorSpace v, (~) * s (Scalar u), (~) * s (Scalar v)) => AffineSpace (LinearMap s u v) 

Associated Types

type Diff (LinearMap s u v) :: * #

Methods

(.-.) :: LinearMap s u v -> LinearMap s u v -> Diff (LinearMap s u v) #

(.+^) :: LinearMap s u v -> Diff (LinearMap s u v) -> LinearMap s u v #

(LinearSpace u, SemiInner (DualVector u), SemiInner v, (~) * (Scalar u) s, (~) * (Scalar v) s) => SemiInner (LinearMap s u v) 
(LSpace u, FiniteDimensional (DualVector u), FiniteDimensional v, (~) * (Scalar u) s, (~) * (Scalar v) s, (~) * (Scalar (DualVector v)) s, Fractional' (Scalar v)) => FiniteDimensional (LinearMap s u v) 

Associated Types

data SubBasis (LinearMap s u v) :: * #

Methods

entireBasis :: SubBasis (LinearMap s u v) #

enumerateSubBasis :: SubBasis (LinearMap s u v) -> [LinearMap s u v] #

subbasisDimension :: SubBasis (LinearMap s u v) -> Int #

decomposeLinMap :: (LSpace w, (* ~ Scalar w) (Scalar (LinearMap s u v))) => (LinearMap s u v +> w) -> (SubBasis (LinearMap s u v), DList w) #

decomposeLinMapWithin :: (LSpace w, (* ~ Scalar w) (Scalar (LinearMap s u v))) => SubBasis (LinearMap s u v) -> (LinearMap s u v +> w) -> Either (SubBasis (LinearMap s u v), DList w) (DList w) #

recomposeSB :: SubBasis (LinearMap s u v) -> [Scalar (LinearMap s u v)] -> (LinearMap s u v, [Scalar (LinearMap s u v)]) #

recomposeSBTensor :: (FiniteDimensional w, (* ~ Scalar w) (Scalar (LinearMap s u v))) => SubBasis (LinearMap s u v) -> SubBasis w -> [Scalar (LinearMap s u v)] -> (LinearMap s u v w, [Scalar (LinearMap s u v)]) #

recomposeLinMap :: (LSpace w, (* ~ Scalar w) (Scalar (LinearMap s u v))) => SubBasis (LinearMap s u v) -> [w] -> (LinearMap s u v +> w, [w]) #

recomposeContraLinMap :: (LinearSpace w, (* ~ Scalar w) (Scalar (LinearMap s u v)), Functor f) => (f (Scalar w) -> w) -> f (DualVector (LinearMap s u v)) -> LinearMap s u v +> w #

recomposeContraLinMapTensor :: (FiniteDimensional u, LinearSpace w, (* ~ Scalar u) (Scalar (LinearMap s u v)), (* ~ Scalar w) (Scalar (LinearMap s u v)), Functor f) => (f (Scalar w) -> w) -> f (LinearMap s u v +> DualVector u) -> (LinearMap s u v u) +> w #

uncanonicallyFromDual :: DualVector (LinearMap s u v) -+> LinearMap s u v #

uncanonicallyToDual :: LinearMap s u v -+> DualVector (LinearMap s u v) #

(LinearSpace u, TensorSpace v, (~) * (Scalar u) s, (~) * (Scalar v) s) => TensorSpace (LinearMap s u v) 

Associated Types

type TensorProduct (LinearMap s u v) w :: * #

Methods

scalarSpaceWitness :: ScalarSpaceWitness (LinearMap s u v) #

linearManifoldWitness :: LinearManifoldWitness (LinearMap s u v) #

zeroTensor :: (TensorSpace w, (* ~ Scalar w) (Scalar (LinearMap s u v))) => LinearMap s u v w #

toFlatTensor :: LinearMap s u v -+> (LinearMap s u v Scalar (LinearMap s u v)) #

fromFlatTensor :: (LinearMap s u v Scalar (LinearMap s u v)) -+> LinearMap s u v #

addTensors :: (TensorSpace w, (* ~ Scalar w) (Scalar (LinearMap s u v))) => (LinearMap s u v w) -> (LinearMap s u v w) -> LinearMap s u v w #

subtractTensors :: (TensorSpace (LinearMap s u v), TensorSpace w, (* ~ Scalar w) (Scalar (LinearMap s u v))) => (LinearMap s u v w) -> (LinearMap s u v w) -> LinearMap s u v w #

scaleTensor :: (TensorSpace w, (* ~ Scalar w) (Scalar (LinearMap s u v))) => Bilinear (Scalar (LinearMap s u v)) (LinearMap s u v w) (LinearMap s u v w) #

negateTensor :: (TensorSpace w, (* ~ Scalar w) (Scalar (LinearMap s u v))) => (LinearMap s u v w) -+> (LinearMap s u v w) #

tensorProduct :: (TensorSpace w, (* ~ Scalar w) (Scalar (LinearMap s u v))) => Bilinear (LinearMap s u v) w (LinearMap s u v w) #

tensorProducts :: (TensorSpace w, (* ~ Scalar w) (Scalar (LinearMap s u v))) => [(LinearMap s u v, w)] -> LinearMap s u v w #

transposeTensor :: (TensorSpace w, (* ~ Scalar w) (Scalar (LinearMap s u v))) => (LinearMap s u v w) -+> (w LinearMap s u v) #

fmapTensor :: (TensorSpace w, TensorSpace x, (* ~ Scalar w) (Scalar (LinearMap s u v)), (* ~ Scalar x) (Scalar (LinearMap s u v))) => Bilinear (w -+> x) (LinearMap s u v w) (LinearMap s u v x) #

fzipTensorWith :: (TensorSpace u, TensorSpace w, TensorSpace x, (* ~ Scalar u) (Scalar (LinearMap s u v)), (* ~ Scalar w) (Scalar (LinearMap s u v)), (* ~ Scalar x) (Scalar (LinearMap s u v))) => Bilinear ((w, x) -+> u) (LinearMap s u v w, LinearMap s u v x) (LinearMap s u v u) #

coerceFmapTensorProduct :: Functor p => p (LinearMap s u v) -> Coercion * a b -> Coercion * (TensorProduct (LinearMap s u v) a) (TensorProduct (LinearMap s u v) b) #

wellDefinedVector :: LinearMap s u v -> Maybe (LinearMap s u v) #

wellDefinedTensor :: (TensorSpace w, (* ~ Scalar w) (Scalar (LinearMap s u v))) => (LinearMap s u v w) -> Maybe (LinearMap s u v w) #

(LinearSpace u, LinearSpace v, (~) * (Scalar u) s, (~) * (Scalar v) s) => LinearSpace (LinearMap s u v) 

Associated Types

type DualVector (LinearMap s u v) :: * #

Methods

dualSpaceWitness :: DualSpaceWitness (LinearMap s u v) #

linearId :: LinearMap s u v +> LinearMap s u v #

idTensor :: LinearMap s u v DualVector (LinearMap s u v) #

sampleLinearFunction :: (TensorSpace w, (* ~ Scalar (LinearMap s u v)) (Scalar w)) => (LinearMap s u v -+> w) -+> (LinearMap s u v +> w) #

toLinearForm :: DualVector (LinearMap s u v) -+> (LinearMap s u v +> Scalar (LinearMap s u v)) #

fromLinearForm :: (LinearMap s u v +> Scalar (LinearMap s u v)) -+> DualVector (LinearMap s u v) #

coerceDoubleDual :: Coercion * (LinearMap s u v) (DualVector (DualVector (LinearMap s u v))) #

trace :: (LinearMap s u v +> LinearMap s u v) -+> Scalar (LinearMap s u v) #

contractTensorMap :: (TensorSpace w, (* ~ Scalar w) (Scalar (LinearMap s u v))) => (LinearMap s u v +> (LinearMap s u v w)) -+> w #

contractMapTensor :: (TensorSpace w, (* ~ Scalar w) (Scalar (LinearMap s u v))) => (LinearMap s u v (LinearMap s u v +> w)) -+> w #

contractTensorFn :: (TensorSpace w, (* ~ Scalar w) (Scalar (LinearMap s u v))) => (LinearMap s u v -+> (LinearMap s u v w)) -+> w #

contractLinearMapAgainst :: (LinearSpace w, (* ~ Scalar w) (Scalar (LinearMap s u v))) => Bilinear (LinearMap s u v +> w) (w -+> LinearMap s u v) (Scalar (LinearMap s u v)) #

applyDualVector :: Bilinear (DualVector (LinearMap s u v)) (LinearMap s u v) (Scalar (LinearMap s u v)) #

applyLinear :: (TensorSpace w, (* ~ Scalar w) (Scalar (LinearMap s u v))) => Bilinear (LinearMap s u v +> w) (LinearMap s u v) w #

composeLinear :: (LinearSpace w, TensorSpace x, (* ~ Scalar w) (Scalar (LinearMap s u v)), (* ~ Scalar x) (Scalar (LinearMap s u v))) => Bilinear (w +> x) (LinearMap s u v +> w) (LinearMap s u v +> x) #

tensorId :: (LinearSpace w, (* ~ Scalar w) (Scalar (LinearMap s u v))) => (LinearMap s u v w) +> (LinearMap s u v w) #

applyTensorFunctional :: (LinearSpace u, (* ~ Scalar u) (Scalar (LinearMap s u v))) => Bilinear (DualVector (LinearMap s u v u)) (LinearMap s u v u) (Scalar (LinearMap s u v)) #

applyTensorLinMap :: (LinearSpace u, TensorSpace w, (* ~ Scalar u) (Scalar (LinearMap s u v)), (* ~ Scalar w) (Scalar (LinearMap s u v))) => Bilinear ((LinearMap s u v u) +> w) (LinearMap s u v u) w #

(LinearSpace v, TensorSpace w, (~) * (Scalar v) s, (~) * (Scalar w) s) => Semimanifold (LinearMap s v w) 

Associated Types

type Needle (LinearMap s v w) :: * #

type Interior (LinearMap s v w) :: * #

(LinearSpace v, TensorSpace w, (~) * (Scalar v) s, (~) * (Scalar w) s) => PseudoAffine (LinearMap s v w) 

Methods

(.-~.) :: LinearMap s v w -> LinearMap s v w -> Maybe (Needle (LinearMap s v w)) #

(.-~!) :: LinearMap s v w -> LinearMap s v w -> Needle (LinearMap s v w) #

pseudoAffineWitness :: PseudoAffineWitness (LinearMap s v w) #

(LinearSpace v, (~) * (Scalar v) s, TensorSpace w, (~) * (Scalar w) s) => Atlas (LinearMap s v w) Source # 

Associated Types

type ChartIndex (LinearMap s v w) :: * Source #

(LinearSpace v, (~) * (Scalar v) , TensorSpace w, (~) * (Scalar w) ) => Geodesic (LinearMap v w) Source # 
(HilbertSpace v, SemiInner v, FiniteDimensional v, LtdErrorShow v, (~) * (Scalar v) ) => LtdErrorShow (LinearMap v (, )) Source # 
(HilbertSpace v, SemiInner v, FiniteDimensional v, LtdErrorShow v, (~) * (Scalar v) ) => LtdErrorShow (LinearMap v ) Source # 
(SimpleSpace a, SimpleSpace b, Refinable a, Refinable b, (~) * (Scalar a) , (~) * (Scalar b) , (~) * (Scalar (DualVector a)) , (~) * (Scalar (DualVector b)) , (~) * (Scalar (DualVector (DualVector a))) , (~) * (Scalar (DualVector (DualVector b))) ) => Refinable (LinearMap a b) Source # 
type UnitObject (LinearMap s) 
type Object (LinearMap s) v 
type Object (LinearMap s) v = (LinearSpace v, (~) * (Scalar v) s)
type PairObjects (LinearMap s) a b 
type PairObjects (LinearMap s) a b = ()
type Scalar (LinearMap s v w) 
type Scalar (LinearMap s v w) = s
type Diff (LinearMap s u v) 
type Diff (LinearMap s u v) = LinearMap s u v
data SubBasis (LinearMap s u v) 
type DualVector (LinearMap s u v) 
type DualVector (LinearMap s u v) = Tensor s u (DualVector v)
type Interior (LinearMap s v w) 
type Interior (LinearMap s v w) = LinearMap s v w
type Needle (LinearMap s v w) 
type Needle (LinearMap s v w) = LinearMap s v w
type ChartIndex (LinearMap s v w) Source # 
type ChartIndex (LinearMap s v w) = ()
type TensorProduct (LinearMap s u v) w 

Misc

Orphan instances