manifolds-0.6.1.0: Coordinate-free hypersurfaces
Copyright(c) Justus Sagemüller 2020
LicenseGPL v3
Maintainer(@) jsag $ hvl.no
Stabilityexperimental
Portabilityportable
Safe HaskellSafe-Inferred
LanguageHaskell2010

Data.Manifold.WithBoundary

Description

 
Synopsis

Documentation

class SemimanifoldWithBoundary m where Source #

The class of spaces with a displacement operation like Semimanifold, but there may be a limited range how far it is possible to move before leaving the space.

Such spaces decompose into two Semimanifold spaces: the Interior and the Boundary.

Minimal complete definition

(.+^|), fromInterior, fromBoundary, (|+^)

Associated Types

type Interior m :: Type Source #

Subspace of m representing the set of points where it is possible to move at least a small distance in any direction (with .+^|) without leaving m.

type Boundary m :: Type Source #

The set of points where an infinitesimal movement is sufficient to leave m.

type HalfNeedle m :: Type Source #

Methods

(.+^|) Source #

Arguments

:: m

Starting point p

-> Needle (Interior m)

Displacement v

-> Either (Boundary m, Scalar (Needle (Interior m))) (Interior m)

If v is enough to leave m, yield the point where it does and what fraction of the length is still left (i.e. how much of v “pokes out of the space”). If it stays within the space, just give back the result.

Boundary-aware pendant to .+~^.

fromInterior :: Interior m -> m Source #

fromBoundary :: Boundary m -> m Source #

(|+^) :: Boundary m -> HalfNeedle m -> m Source #

separateInterior :: m -> Either (Boundary m) (Interior m) Source #

toInterior :: m -> Maybe (Interior m) Source #

extendToBoundary :: Interior m -> Needle (Interior m) -> Maybe (Boundary m) Source #

smfdWBoundWitness :: SmfdWBoundWitness m Source #

default smfdWBoundWitness :: (OpenManifold (Interior m), OpenManifold (Boundary m), FullSubspace (HalfNeedle m) ~ Needle (Boundary m)) => SmfdWBoundWitness m Source #

needleIsOpenMfd :: (OpenManifold (Needle (Interior m)) => r) -> r Source #

default needleIsOpenMfd :: OpenManifold (Needle (Interior m)) => (OpenManifold (Needle (Interior m)) => r) -> r Source #

scalarIsOpenMfd :: (OpenManifold (Scalar (Needle (Interior m))) => r) -> r Source #

default scalarIsOpenMfd :: OpenManifold (Scalar (Needle (Interior m))) => (OpenManifold (Scalar (Needle (Interior m))) => r) -> r Source #

boundaryHasSameScalar :: ((LinearSpace (Needle (Boundary m)), Scalar (Needle (Boundary m)) ~ Scalar (Needle (Interior m))) => r) -> r Source #

Instances

Instances details
SemimanifoldWithBoundary ℝay Source # 
Instance details

Defined in Data.Manifold.Cone

(Num' , Eq , OpenManifold , ProjectableBoundary ) => SemimanifoldWithBoundary Source # 
Instance details

Defined in Data.Manifold.WithBoundary

Associated Types

type Interior Source #

type Boundary Source #

type HalfNeedle Source #

(Num' s, Eq s, OpenManifold s, ProjectableBoundary s) => SemimanifoldWithBoundary (V0 s) Source # 
Instance details

Defined in Data.Manifold.WithBoundary

Associated Types

type Interior (V0 s) Source #

type Boundary (V0 s) Source #

type HalfNeedle (V0 s) Source #

(Num' s, Eq s, OpenManifold s, ProjectableBoundary s) => SemimanifoldWithBoundary (V1 s) Source # 
Instance details

Defined in Data.Manifold.WithBoundary

Associated Types

type Interior (V1 s) Source #

type Boundary (V1 s) Source #

type HalfNeedle (V1 s) Source #

(Num' s, Eq s, OpenManifold s, ProjectableBoundary s) => SemimanifoldWithBoundary (V2 s) Source # 
Instance details

Defined in Data.Manifold.WithBoundary

Associated Types

type Interior (V2 s) Source #

type Boundary (V2 s) Source #

type HalfNeedle (V2 s) Source #

(Num' s, Eq s, OpenManifold s, ProjectableBoundary s) => SemimanifoldWithBoundary (V3 s) Source # 
Instance details

Defined in Data.Manifold.WithBoundary

Associated Types

type Interior (V3 s) Source #

type Boundary (V3 s) Source #

type HalfNeedle (V3 s) Source #

(Num' s, Eq s, OpenManifold s, ProjectableBoundary s) => SemimanifoldWithBoundary (V4 s) Source # 
Instance details

Defined in Data.Manifold.WithBoundary

Associated Types

type Interior (V4 s) Source #

type Boundary (V4 s) Source #

type HalfNeedle (V4 s) Source #

(AffineSpace x, Manifold x, Diff x ~ Needle x, Atlas x, HasTrie (ChartIndex x), LinearSpace (Needle x), LinearSpace (Needle' x), Num' (Scalar (Needle x))) => SemimanifoldWithBoundary (Shade x) Source # 
Instance details

Defined in Data.Manifold.Shade

Associated Types

type Interior (Shade x) Source #

type Boundary (Shade x) Source #

type HalfNeedle (Shade x) Source #

(AffineSpace x, Manifold x, Diff x ~ Needle x, Atlas' x, LinearSpace (Needle x), LinearSpace (Needle' x)) => SemimanifoldWithBoundary (Shade' x) Source # 
Instance details

Defined in Data.Manifold.Shade

Associated Types

type Interior (Shade' x) Source #

type Boundary (Shade' x) Source #

type HalfNeedle (Shade' x) Source #

SemimanifoldWithBoundary (CD¹ ℝ⁰) Source # 
Instance details

Defined in Data.Manifold.Cone

SemimanifoldWithBoundary (Cℝay S⁰) Source # 
Instance details

Defined in Data.Manifold.Cone

(Semimanifold a, Semimanifold (VRep a), Needle a ~ GenericNeedle a, OpenManifold (Scalar (Needle (Rep a Void))), LinearSpace (Needle (Rep a Void)), Num' (Scalar (Needle (Rep a Void)))) => SemimanifoldWithBoundary (GenericNeedle a) Source # 
Instance details

Defined in Data.Manifold.WithBoundary

RealFloat'' s => SemimanifoldWithBoundary (D¹_ s) Source # 
Instance details

Defined in Data.Manifold.WithBoundary

Associated Types

type Interior (D¹_ s) Source #

type Boundary (D¹_ s) Source #

type HalfNeedle (D¹_ s) Source #

(LinearSpace k, OpenManifold k, OpenManifold (Scalar k)) => SemimanifoldWithBoundary (EmptyMfd k) Source # 
Instance details

Defined in Data.Manifold.WithBoundary.Class

Associated Types

type Interior (EmptyMfd k) Source #

type Boundary (EmptyMfd k) Source #

type HalfNeedle (EmptyMfd k) Source #

RealFloat'' s => SemimanifoldWithBoundary (S²_ s) Source # 
Instance details

Defined in Data.Manifold.WithBoundary

Associated Types

type Interior (S²_ s) Source #

type Boundary (S²_ s) Source #

type HalfNeedle (S²_ s) Source #

RealFloat'' s => SemimanifoldWithBoundary (S¹_ s) Source # 
Instance details

Defined in Data.Manifold.WithBoundary

Associated Types

type Interior (S¹_ s) Source #

type Boundary (S¹_ s) Source #

type HalfNeedle (S¹_ s) Source #

RealFloat'' s => SemimanifoldWithBoundary (S⁰_ s) Source # 
Instance details

Defined in Data.Manifold.WithBoundary

Associated Types

type Interior (S⁰_ s) Source #

type Boundary (S⁰_ s) Source #

type HalfNeedle (S⁰_ s) Source #

(Num' k, OpenManifold k) => SemimanifoldWithBoundary (ZeroDim k) Source # 
Instance details

Defined in Data.Manifold.WithBoundary.Class

Associated Types

type Interior (ZeroDim k) Source #

type Boundary (ZeroDim k) Source #

type HalfNeedle (ZeroDim k) Source #

(Num' n, OpenManifold n, LinearManifold (a n), Scalar (a n) ~ n, Needle (a n) ~ a n) => SemimanifoldWithBoundary (Point a n) Source # 
Instance details

Defined in Data.Manifold.WithBoundary

Associated Types

type Interior (Point a n) Source #

type Boundary (Point a n) Source #

type HalfNeedle (Point a n) Source #

(ProjectableBoundary a, ProjectableBoundary b, SameScalar LinearSpace '[Needle (Interior a), Needle (Interior b)], RealFrac'' (Scalar (Needle (Interior a))), ProjectableBoundary (Interior a), ProjectableBoundary (Interior b)) => SemimanifoldWithBoundary (a, b) Source # 
Instance details

Defined in Data.Manifold.WithBoundary

Associated Types

type Interior (a, b) Source #

type Boundary (a, b) Source #

type HalfNeedle (a, b) Source #

Methods

(.+^|) :: (a, b) -> Needle (Interior (a, b)) -> Either (Boundary (a, b), Scalar (Needle (Interior (a, b)))) (Interior (a, b)) Source #

fromInterior :: Interior (a, b) -> (a, b) Source #

fromBoundary :: Boundary (a, b) -> (a, b) Source #

(|+^) :: Boundary (a, b) -> HalfNeedle (a, b) -> (a, b) Source #

separateInterior :: (a, b) -> Either (Boundary (a, b)) (Interior (a, b)) Source #

toInterior :: (a, b) -> Maybe (Interior (a, b)) Source #

extendToBoundary :: Interior (a, b) -> Needle (Interior (a, b)) -> Maybe (Boundary (a, b)) Source #

smfdWBoundWitness :: SmfdWBoundWitness (a, b) Source #

needleIsOpenMfd :: (OpenManifold (Needle (Interior (a, b))) => r) -> r Source #

scalarIsOpenMfd :: (OpenManifold (Scalar (Needle (Interior (a, b)))) => r) -> r Source #

boundaryHasSameScalar :: ((LinearSpace (Needle (Boundary (a, b))), Scalar (Needle (Boundary (a, b))) ~ Scalar (Needle (Interior (a, b)))) => r) -> r Source #

(LinearSpace v, LinearSpace w, s ~ Scalar v, s ~ Scalar w, Num' s, OpenManifold s) => SemimanifoldWithBoundary (LinearFunction s v w) Source # 
Instance details

Defined in Data.Manifold.WithBoundary

Associated Types

type Interior (LinearFunction s v w) Source #

type Boundary (LinearFunction s v w) Source #

type HalfNeedle (LinearFunction s v w) Source #

(LinearSpace v, LinearSpace w, s ~ Scalar v, s ~ Scalar w, Num' s, OpenManifold s) => SemimanifoldWithBoundary (LinearMap s v w) Source # 
Instance details

Defined in Data.Manifold.WithBoundary

Associated Types

type Interior (LinearMap s v w) Source #

type Boundary (LinearMap s v w) Source #

type HalfNeedle (LinearMap s v w) Source #

(LinearSpace v, LinearSpace w, s ~ Scalar v, s ~ Scalar w, Num' s, OpenManifold s) => SemimanifoldWithBoundary (Tensor s v w) Source # 
Instance details

Defined in Data.Manifold.WithBoundary

Associated Types

type Interior (Tensor s v w) Source #

type Boundary (Tensor s v w) Source #

type HalfNeedle (Tensor s v w) Source #

Methods

(.+^|) :: Tensor s v w -> Needle (Interior (Tensor s v w)) -> Either (Boundary (Tensor s v w), Scalar (Needle (Interior (Tensor s v w)))) (Interior (Tensor s v w)) Source #

fromInterior :: Interior (Tensor s v w) -> Tensor s v w Source #

fromBoundary :: Boundary (Tensor s v w) -> Tensor s v w Source #

(|+^) :: Boundary (Tensor s v w) -> HalfNeedle (Tensor s v w) -> Tensor s v w Source #

separateInterior :: Tensor s v w -> Either (Boundary (Tensor s v w)) (Interior (Tensor s v w)) Source #

toInterior :: Tensor s v w -> Maybe (Interior (Tensor s v w)) Source #

extendToBoundary :: Interior (Tensor s v w) -> Needle (Interior (Tensor s v w)) -> Maybe (Boundary (Tensor s v w)) Source #

smfdWBoundWitness :: SmfdWBoundWitness (Tensor s v w) Source #

needleIsOpenMfd :: (OpenManifold (Needle (Interior (Tensor s v w))) => r) -> r Source #

scalarIsOpenMfd :: (OpenManifold (Scalar (Needle (Interior (Tensor s v w)))) => r) -> r Source #

boundaryHasSameScalar :: ((LinearSpace (Needle (Boundary (Tensor s v w))), Scalar (Needle (Boundary (Tensor s v w))) ~ Scalar (Needle (Interior (Tensor s v w)))) => r) -> r Source #

class (SemimanifoldWithBoundary m, PseudoAffine (Interior m), PseudoAffine (Boundary m)) => PseudoAffineWithBoundary m where Source #

Minimal complete definition

(.--!), (!-|)

Methods

(.--!) :: m -> m -> Needle (Interior m) Source #

Inverse of .+^|, provided the space is connected. For p :: Interior m, q :: m and v = fromInterior p.--!q,

  q .+^| v ≡ Right p
  

(up to floating-point). Similary, for b :: Boundary m and w = fromBoundary m.--!q,

  q .+^| w ≡ Left (b, 0)
  

(.-|) :: m -> Boundary m -> Maybe (HalfNeedle m) Source #

(!-|) :: m -> Boundary m -> HalfNeedle m Source #

(.--.) :: m -> m -> Maybe (Needle (Interior m)) Source #

Instances

Instances details
(Num' , Eq , OpenManifold , ProjectableBoundary ) => PseudoAffineWithBoundary Source # 
Instance details

Defined in Data.Manifold.WithBoundary

(Num' s, Eq s, OpenManifold s, ProjectableBoundary s) => PseudoAffineWithBoundary (V0 s) Source # 
Instance details

Defined in Data.Manifold.WithBoundary

Methods

(.--!) :: V0 s -> V0 s -> Needle (Interior (V0 s)) Source #

(.-|) :: V0 s -> Boundary (V0 s) -> Maybe (HalfNeedle (V0 s)) Source #

(!-|) :: V0 s -> Boundary (V0 s) -> HalfNeedle (V0 s) Source #

(.--.) :: V0 s -> V0 s -> Maybe (Needle (Interior (V0 s))) Source #

(Num' s, Eq s, OpenManifold s, ProjectableBoundary s) => PseudoAffineWithBoundary (V1 s) Source # 
Instance details

Defined in Data.Manifold.WithBoundary

Methods

(.--!) :: V1 s -> V1 s -> Needle (Interior (V1 s)) Source #

(.-|) :: V1 s -> Boundary (V1 s) -> Maybe (HalfNeedle (V1 s)) Source #

(!-|) :: V1 s -> Boundary (V1 s) -> HalfNeedle (V1 s) Source #

(.--.) :: V1 s -> V1 s -> Maybe (Needle (Interior (V1 s))) Source #

(Num' s, Eq s, OpenManifold s, ProjectableBoundary s) => PseudoAffineWithBoundary (V2 s) Source # 
Instance details

Defined in Data.Manifold.WithBoundary

Methods

(.--!) :: V2 s -> V2 s -> Needle (Interior (V2 s)) Source #

(.-|) :: V2 s -> Boundary (V2 s) -> Maybe (HalfNeedle (V2 s)) Source #

(!-|) :: V2 s -> Boundary (V2 s) -> HalfNeedle (V2 s) Source #

(.--.) :: V2 s -> V2 s -> Maybe (Needle (Interior (V2 s))) Source #

(Num' s, Eq s, OpenManifold s, ProjectableBoundary s) => PseudoAffineWithBoundary (V3 s) Source # 
Instance details

Defined in Data.Manifold.WithBoundary

Methods

(.--!) :: V3 s -> V3 s -> Needle (Interior (V3 s)) Source #

(.-|) :: V3 s -> Boundary (V3 s) -> Maybe (HalfNeedle (V3 s)) Source #

(!-|) :: V3 s -> Boundary (V3 s) -> HalfNeedle (V3 s) Source #

(.--.) :: V3 s -> V3 s -> Maybe (Needle (Interior (V3 s))) Source #

(Num' s, Eq s, OpenManifold s, ProjectableBoundary s) => PseudoAffineWithBoundary (V4 s) Source # 
Instance details

Defined in Data.Manifold.WithBoundary

Methods

(.--!) :: V4 s -> V4 s -> Needle (Interior (V4 s)) Source #

(.-|) :: V4 s -> Boundary (V4 s) -> Maybe (HalfNeedle (V4 s)) Source #

(!-|) :: V4 s -> Boundary (V4 s) -> HalfNeedle (V4 s) Source #

(.--.) :: V4 s -> V4 s -> Maybe (Needle (Interior (V4 s))) Source #

(Semimanifold a, Semimanifold (VRep a), Needle a ~ GenericNeedle a, OpenManifold (Scalar (Needle (Rep a Void))), LinearSpace (Needle (Rep a Void)), Num' (Scalar (Needle (Rep a Void)))) => PseudoAffineWithBoundary (GenericNeedle a) Source # 
Instance details

Defined in Data.Manifold.WithBoundary

RealFloat'' s => PseudoAffineWithBoundary (S²_ s) Source # 
Instance details

Defined in Data.Manifold.WithBoundary

Methods

(.--!) :: S²_ s -> S²_ s -> Needle (Interior (S²_ s)) Source #

(.-|) :: S²_ s -> Boundary (S²_ s) -> Maybe (HalfNeedle (S²_ s)) Source #

(!-|) :: S²_ s -> Boundary (S²_ s) -> HalfNeedle (S²_ s) Source #

(.--.) :: S²_ s -> S²_ s -> Maybe (Needle (Interior (S²_ s))) Source #

RealFloat'' s => PseudoAffineWithBoundary (S¹_ s) Source # 
Instance details

Defined in Data.Manifold.WithBoundary

Methods

(.--!) :: S¹_ s -> S¹_ s -> Needle (Interior (S¹_ s)) Source #

(.-|) :: S¹_ s -> Boundary (S¹_ s) -> Maybe (HalfNeedle (S¹_ s)) Source #

(!-|) :: S¹_ s -> Boundary (S¹_ s) -> HalfNeedle (S¹_ s) Source #

(.--.) :: S¹_ s -> S¹_ s -> Maybe (Needle (Interior (S¹_ s))) Source #

(Num' k, OpenManifold k) => PseudoAffineWithBoundary (ZeroDim k) Source # 
Instance details

Defined in Data.Manifold.WithBoundary.Class

(Num' n, OpenManifold n, LinearManifold (a n), Scalar (a n) ~ n, Needle (a n) ~ a n) => PseudoAffineWithBoundary (Point a n) Source # 
Instance details

Defined in Data.Manifold.WithBoundary

Methods

(.--!) :: Point a n -> Point a n -> Needle (Interior (Point a n)) Source #

(.-|) :: Point a n -> Boundary (Point a n) -> Maybe (HalfNeedle (Point a n)) Source #

(!-|) :: Point a n -> Boundary (Point a n) -> HalfNeedle (Point a n) Source #

(.--.) :: Point a n -> Point a n -> Maybe (Needle (Interior (Point a n))) Source #

(ProjectableBoundary a, ProjectableBoundary b, SameScalar LinearSpace '[Needle (Interior a), Needle (Interior b), Needle (Boundary a), Needle (Boundary b)], ProjectableBoundary (Interior a), ProjectableBoundary (Interior b), RealFrac'' (Scalar (Needle (Interior a)))) => PseudoAffineWithBoundary (a, b) Source # 
Instance details

Defined in Data.Manifold.WithBoundary

Methods

(.--!) :: (a, b) -> (a, b) -> Needle (Interior (a, b)) Source #

(.-|) :: (a, b) -> Boundary (a, b) -> Maybe (HalfNeedle (a, b)) Source #

(!-|) :: (a, b) -> Boundary (a, b) -> HalfNeedle (a, b) Source #

(.--.) :: (a, b) -> (a, b) -> Maybe (Needle (Interior (a, b))) Source #

(LinearSpace v, LinearSpace w, s ~ Scalar v, s ~ Scalar w, Num' s, OpenManifold s) => PseudoAffineWithBoundary (LinearFunction s v w) Source # 
Instance details

Defined in Data.Manifold.WithBoundary

(LinearSpace v, LinearSpace w, s ~ Scalar v, s ~ Scalar w, Num' s, OpenManifold s) => PseudoAffineWithBoundary (LinearMap s v w) Source # 
Instance details

Defined in Data.Manifold.WithBoundary

Methods

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

(.-|) :: LinearMap s v w -> Boundary (LinearMap s v w) -> Maybe (HalfNeedle (LinearMap s v w)) Source #

(!-|) :: LinearMap s v w -> Boundary (LinearMap s v w) -> HalfNeedle (LinearMap s v w) Source #

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

(LinearSpace v, LinearSpace w, s ~ Scalar v, s ~ Scalar w, Num' s, OpenManifold s) => PseudoAffineWithBoundary (Tensor s v w) Source # 
Instance details

Defined in Data.Manifold.WithBoundary

Methods

(.--!) :: Tensor s v w -> Tensor s v w -> Needle (Interior (Tensor s v w)) Source #

(.-|) :: Tensor s v w -> Boundary (Tensor s v w) -> Maybe (HalfNeedle (Tensor s v w)) Source #

(!-|) :: Tensor s v w -> Boundary (Tensor s v w) -> HalfNeedle (Tensor s v w) Source #

(.--.) :: Tensor s v w -> Tensor s v w -> Maybe (Needle (Interior (Tensor s v w))) Source #

class PseudoAffineWithBoundary m => ProjectableBoundary m where Source #

Minimal complete definition

projectToBoundary, marginFromBoundary

Methods

projectToBoundary Source #

Arguments

:: m

Point p to project

-> Boundary m

Intended “course region” representative r on boundary – we seek a point that is reachable from there.

-> Maybe (Needle (Boundary m), Scalar (Needle (Interior m)))

Needle δr connecting r to projection of the p, and a measure d of normal-distance such that marginFromBoundary (r.+~^δr) d == p.

marginFromBoundary :: Boundary m -> Scalar (Needle (Interior m)) -> m Source #

needleBoundaryIsTriviallyProjectible :: forall r. (ProjectableBoundary (Needle (Interior m)) => r) -> r Source #

scalarBoundaryIsTriviallyProjectible :: forall r. (ProjectableBoundary (Scalar (Needle (Interior m))) => r) -> r Source #

Instances

Instances details
(Num' , Eq , OpenManifold , ProjectableBoundary ) => ProjectableBoundary Source # 
Instance details

Defined in Data.Manifold.WithBoundary

(Num' s, Eq s, OpenManifold s, ProjectableBoundary s) => ProjectableBoundary (V0 s) Source # 
Instance details

Defined in Data.Manifold.WithBoundary

(Num' s, Eq s, OpenManifold s, ProjectableBoundary s) => ProjectableBoundary (V1 s) Source # 
Instance details

Defined in Data.Manifold.WithBoundary

(Num' s, Eq s, OpenManifold s, ProjectableBoundary s) => ProjectableBoundary (V2 s) Source # 
Instance details

Defined in Data.Manifold.WithBoundary

(Num' s, Eq s, OpenManifold s, ProjectableBoundary s) => ProjectableBoundary (V3 s) Source # 
Instance details

Defined in Data.Manifold.WithBoundary

(Num' s, Eq s, OpenManifold s, ProjectableBoundary s) => ProjectableBoundary (V4 s) Source # 
Instance details

Defined in Data.Manifold.WithBoundary

RealFloat'' s => ProjectableBoundary (S²_ s) Source # 
Instance details

Defined in Data.Manifold.WithBoundary

RealFloat'' s => ProjectableBoundary (S¹_ s) Source # 
Instance details

Defined in Data.Manifold.WithBoundary

(Num' k, ProjectableBoundary k, OpenManifold k) => ProjectableBoundary (ZeroDim k) Source # 
Instance details

Defined in Data.Manifold.WithBoundary.Class

(Num' n, OpenManifold n, LinearManifold (a n), ProjectableBoundary n, Scalar (a n) ~ n, Needle (a n) ~ a n) => ProjectableBoundary (Point a n) Source # 
Instance details

Defined in Data.Manifold.WithBoundary

(ProjectableBoundary a, ProjectableBoundary b, SameScalar LinearSpace '[Needle (Interior a), Needle (Interior b), Needle (Boundary a), Needle (Boundary b)], ProjectableBoundary (Interior a), ProjectableBoundary (Interior b), RealFrac'' (Scalar (Needle (Interior a)))) => ProjectableBoundary (a, b) Source # 
Instance details

Defined in Data.Manifold.WithBoundary

(LinearSpace v, LinearSpace w, s ~ Scalar v, s ~ Scalar w, Num' s, OpenManifold s, ProjectableBoundary s) => ProjectableBoundary (LinearMap s v w) Source # 
Instance details

Defined in Data.Manifold.WithBoundary

data SmfdWBoundWitness m where Source #

Constructors

OpenManifoldWitness :: forall m. OpenManifold m => SmfdWBoundWitness m 
SmfdWBoundWitness :: forall m. (OpenManifold (Interior m), OpenManifold (Boundary m), FullSubspace (HalfNeedle m) ~ Needle (Boundary m)) => SmfdWBoundWitness m 

class AdditiveMonoid h where #

Minimal complete definition

Nothing

Methods

zeroHV :: h #

addHVs :: h -> h -> h #

Instances

Instances details
AdditiveMonoid Int16 
Instance details

Defined in Data.Monoid.Additive

Methods

zeroHV :: Int16 #

addHVs :: Int16 -> Int16 -> Int16 #

AdditiveMonoid Int32 
Instance details

Defined in Data.Monoid.Additive

Methods

zeroHV :: Int32 #

addHVs :: Int32 -> Int32 -> Int32 #

AdditiveMonoid Int64 
Instance details

Defined in Data.Monoid.Additive

Methods

zeroHV :: Int64 #

addHVs :: Int64 -> Int64 -> Int64 #

AdditiveMonoid Int8 
Instance details

Defined in Data.Monoid.Additive

Methods

zeroHV :: Int8 #

addHVs :: Int8 -> Int8 -> Int8 #

AdditiveMonoid Word16 
Instance details

Defined in Data.Monoid.Additive

AdditiveMonoid Word32 
Instance details

Defined in Data.Monoid.Additive

AdditiveMonoid Word64 
Instance details

Defined in Data.Monoid.Additive

AdditiveMonoid Word8 
Instance details

Defined in Data.Monoid.Additive

Methods

zeroHV :: Word8 #

addHVs :: Word8 -> Word8 -> Word8 #

AdditiveMonoid Integer 
Instance details

Defined in Data.Monoid.Additive

AdditiveMonoid Double 
Instance details

Defined in Data.Monoid.Additive

AdditiveMonoid Float 
Instance details

Defined in Data.Monoid.Additive

Methods

zeroHV :: Float #

addHVs :: Float -> Float -> Float #

AdditiveMonoid Int 
Instance details

Defined in Data.Monoid.Additive

Methods

zeroHV :: Int #

addHVs :: Int -> Int -> Int #

AdditiveMonoid Word 
Instance details

Defined in Data.Monoid.Additive

Methods

zeroHV :: Word #

addHVs :: Word -> Word -> Word #

Num k => AdditiveMonoid (Cℝay (ZeroDim k)) 
Instance details

Defined in Data.Monoid.Additive

Methods

zeroHV :: Cℝay (ZeroDim k) #

addHVs :: Cℝay (ZeroDim k) -> Cℝay (ZeroDim k) -> Cℝay (ZeroDim k) #

AdditiveGroup (Needle (Rep a Void)) => AdditiveMonoid (GenericNeedle a) 
Instance details

Defined in Data.Monoid.Additive

AdditiveMonoid (ZeroDim k) 
Instance details

Defined in Data.Monoid.Additive

Methods

zeroHV :: ZeroDim k #

addHVs :: ZeroDim k -> ZeroDim k -> ZeroDim k #

(AdditiveMonoid h, AdditiveMonoid i) => AdditiveMonoid (h, i) 
Instance details

Defined in Data.Monoid.Additive

Methods

zeroHV :: (h, i) #

addHVs :: (h, i) -> (h, i) -> (h, i) #

AdditiveMonoid h => AdditiveMonoid (Rec0 h s) 
Instance details

Defined in Data.Monoid.Additive

Methods

zeroHV :: Rec0 h s #

addHVs :: Rec0 h s -> Rec0 h s -> Rec0 h s #

(AdditiveMonoid h, AdditiveMonoid i, AdditiveMonoid j) => AdditiveMonoid (h, i, j) 
Instance details

Defined in Data.Monoid.Additive

Methods

zeroHV :: (h, i, j) #

addHVs :: (h, i, j) -> (h, i, j) -> (h, i, j) #

(AdditiveMonoid (f p), AdditiveMonoid (g p)) => AdditiveMonoid ((f :*: g) p) 
Instance details

Defined in Data.Monoid.Additive

Methods

zeroHV :: (f :*: g) p #

addHVs :: (f :*: g) p -> (f :*: g) p -> (f :*: g) p #

AdditiveMonoid (f p) => AdditiveMonoid (M1 i c f p) 
Instance details

Defined in Data.Monoid.Additive

Methods

zeroHV :: M1 i c f p #

addHVs :: M1 i c f p -> M1 i c f p -> M1 i c f p #

class AdditiveMonoid h => HalfSpace h where #

Minimal complete definition

Nothing

Associated Types

type FullSubspace h #

type FullSubspace h = GenericFullSubspace h

type Ray h #

type Ray h = Ray (AMRep h)

type MirrorJoin h #

type MirrorJoin h = GenericMirrorJoin h

Instances

Instances details
(Num k, VectorSpace k, Scalar k ~ k) => HalfSpace (Cℝay (ZeroDim k)) 
Instance details

Defined in Data.Monoid.Additive

Associated Types

type FullSubspace (Cℝay (ZeroDim k)) #

type Ray (Cℝay (ZeroDim k)) #

type MirrorJoin (Cℝay (ZeroDim k)) #

ScalarSpace k => HalfSpace (ZeroDim k) 
Instance details

Defined in Data.Monoid.Additive

Associated Types

type FullSubspace (ZeroDim k) #

type Ray (ZeroDim k) #

type MirrorJoin (ZeroDim k) #

(HalfSpace x, VectorSpace y, AdditiveMonoid y, Ray x ~ Cℝay (ZeroDim (Scalar y))) => HalfSpace (x, y) 
Instance details

Defined in Data.Monoid.Additive

Associated Types

type FullSubspace (x, y) #

type Ray (x, y) #

type MirrorJoin (x, y) #

Methods

scaleNonNeg :: Ray (x, y) -> (x, y) -> (x, y) #

fromFullSubspace :: FullSubspace (x, y) -> (x, y) #

projectToFullSubspace :: (x, y) -> FullSubspace (x, y) #

fullSubspaceIsVectorSpace :: ((VectorSpace (FullSubspace (x, y)), ScalarSpace (Scalar (FullSubspace (x, y))), Scalar (FullSubspace (x, y)) ~ MirrorJoin (Ray (x, y))) => r) -> r #

rayIsHalfSpace :: (HalfSpace (Ray (x, y)) => r) -> r #

mirrorJoinIsVectorSpace :: ((VectorSpace (MirrorJoin (x, y)), Scalar (MirrorJoin (x, y)) ~ MirrorJoin (Ray (x, y))) => r) -> r #

fromPositiveHalf :: (x, y) -> MirrorJoin (x, y) #

fromNegativeHalf :: (x, y) -> MirrorJoin (x, y) #

HalfSpace h => HalfSpace (Rec0 h s) 
Instance details

Defined in Data.Monoid.Additive

Associated Types

type FullSubspace (Rec0 h s) #

type Ray (Rec0 h s) #

type MirrorJoin (Rec0 h s) #

(HalfSpace (f p), VectorSpace (g p), AdditiveMonoid (g p), Ray (f p) ~ Cℝay (ZeroDim (Scalar (g p)))) => HalfSpace ((f :*: g) p) 
Instance details

Defined in Data.Monoid.Additive

Associated Types

type FullSubspace ((f :*: g) p) #

type Ray ((f :*: g) p) #

type MirrorJoin ((f :*: g) p) #

Methods

scaleNonNeg :: Ray ((f :*: g) p) -> (f :*: g) p -> (f :*: g) p #

fromFullSubspace :: FullSubspace ((f :*: g) p) -> (f :*: g) p #

projectToFullSubspace :: (f :*: g) p -> FullSubspace ((f :*: g) p) #

fullSubspaceIsVectorSpace :: ((VectorSpace (FullSubspace ((f :*: g) p)), ScalarSpace (Scalar (FullSubspace ((f :*: g) p))), Scalar (FullSubspace ((f :*: g) p)) ~ MirrorJoin (Ray ((f :*: g) p))) => r) -> r #

rayIsHalfSpace :: (HalfSpace (Ray ((f :*: g) p)) => r) -> r #

mirrorJoinIsVectorSpace :: ((VectorSpace (MirrorJoin ((f :*: g) p)), Scalar (MirrorJoin ((f :*: g) p)) ~ MirrorJoin (Ray ((f :*: g) p))) => r) -> r #

fromPositiveHalf :: (f :*: g) p -> MirrorJoin ((f :*: g) p) #

fromNegativeHalf :: (f :*: g) p -> MirrorJoin ((f :*: g) p) #

HalfSpace (f p) => HalfSpace (M1 i c f p) 
Instance details

Defined in Data.Monoid.Additive

Associated Types

type FullSubspace (M1 i c f p) #

type Ray (M1 i c f p) #

type MirrorJoin (M1 i c f p) #

Methods

scaleNonNeg :: Ray (M1 i c f p) -> M1 i c f p -> M1 i c f p #

fromFullSubspace :: FullSubspace (M1 i c f p) -> M1 i c f p #

projectToFullSubspace :: M1 i c f p -> FullSubspace (M1 i c f p) #

fullSubspaceIsVectorSpace :: ((VectorSpace (FullSubspace (M1 i c f p)), ScalarSpace (Scalar (FullSubspace (M1 i c f p))), Scalar (FullSubspace (M1 i c f p)) ~ MirrorJoin (Ray (M1 i c f p))) => r) -> r #

rayIsHalfSpace :: (HalfSpace (Ray (M1 i c f p)) => r) -> r #

mirrorJoinIsVectorSpace :: ((VectorSpace (MirrorJoin (M1 i c f p)), Scalar (MirrorJoin (M1 i c f p)) ~ MirrorJoin (Ray (M1 i c f p))) => r) -> r #

fromPositiveHalf :: M1 i c f p -> MirrorJoin (M1 i c f p) #

fromNegativeHalf :: M1 i c f p -> MirrorJoin (M1 i c f p) #

Orphan instances

(Num' , Eq , OpenManifold , ProjectableBoundary ) => ProjectableBoundary Source # 
Instance details

(Num' , Eq , OpenManifold , ProjectableBoundary ) => PseudoAffineWithBoundary Source # 
Instance details

(Num' , Eq , OpenManifold , ProjectableBoundary ) => SemimanifoldWithBoundary Source # 
Instance details

Associated Types

type Interior Source #

type Boundary Source #

type HalfNeedle Source #

(Num' s, Eq s, OpenManifold s, ProjectableBoundary s) => ProjectableBoundary (V0 s) Source # 
Instance details

(Num' s, Eq s, OpenManifold s, ProjectableBoundary s) => ProjectableBoundary (V1 s) Source # 
Instance details

(Num' s, Eq s, OpenManifold s, ProjectableBoundary s) => ProjectableBoundary (V2 s) Source # 
Instance details

(Num' s, Eq s, OpenManifold s, ProjectableBoundary s) => ProjectableBoundary (V3 s) Source # 
Instance details

(Num' s, Eq s, OpenManifold s, ProjectableBoundary s) => ProjectableBoundary (V4 s) Source # 
Instance details

RealFloat'' s => ProjectableBoundary (S²_ s) Source # 
Instance details

RealFloat'' s => ProjectableBoundary (S¹_ s) Source # 
Instance details

(Num' s, Eq s, OpenManifold s, ProjectableBoundary s) => PseudoAffineWithBoundary (V0 s) Source # 
Instance details

Methods

(.--!) :: V0 s -> V0 s -> Needle (Interior (V0 s)) Source #

(.-|) :: V0 s -> Boundary (V0 s) -> Maybe (HalfNeedle (V0 s)) Source #

(!-|) :: V0 s -> Boundary (V0 s) -> HalfNeedle (V0 s) Source #

(.--.) :: V0 s -> V0 s -> Maybe (Needle (Interior (V0 s))) Source #

(Num' s, Eq s, OpenManifold s, ProjectableBoundary s) => PseudoAffineWithBoundary (V1 s) Source # 
Instance details

Methods

(.--!) :: V1 s -> V1 s -> Needle (Interior (V1 s)) Source #

(.-|) :: V1 s -> Boundary (V1 s) -> Maybe (HalfNeedle (V1 s)) Source #

(!-|) :: V1 s -> Boundary (V1 s) -> HalfNeedle (V1 s) Source #

(.--.) :: V1 s -> V1 s -> Maybe (Needle (Interior (V1 s))) Source #

(Num' s, Eq s, OpenManifold s, ProjectableBoundary s) => PseudoAffineWithBoundary (V2 s) Source # 
Instance details

Methods

(.--!) :: V2 s -> V2 s -> Needle (Interior (V2 s)) Source #

(.-|) :: V2 s -> Boundary (V2 s) -> Maybe (HalfNeedle (V2 s)) Source #

(!-|) :: V2 s -> Boundary (V2 s) -> HalfNeedle (V2 s) Source #

(.--.) :: V2 s -> V2 s -> Maybe (Needle (Interior (V2 s))) Source #

(Num' s, Eq s, OpenManifold s, ProjectableBoundary s) => PseudoAffineWithBoundary (V3 s) Source # 
Instance details

Methods

(.--!) :: V3 s -> V3 s -> Needle (Interior (V3 s)) Source #

(.-|) :: V3 s -> Boundary (V3 s) -> Maybe (HalfNeedle (V3 s)) Source #

(!-|) :: V3 s -> Boundary (V3 s) -> HalfNeedle (V3 s) Source #

(.--.) :: V3 s -> V3 s -> Maybe (Needle (Interior (V3 s))) Source #

(Num' s, Eq s, OpenManifold s, ProjectableBoundary s) => PseudoAffineWithBoundary (V4 s) Source # 
Instance details

Methods

(.--!) :: V4 s -> V4 s -> Needle (Interior (V4 s)) Source #

(.-|) :: V4 s -> Boundary (V4 s) -> Maybe (HalfNeedle (V4 s)) Source #

(!-|) :: V4 s -> Boundary (V4 s) -> HalfNeedle (V4 s) Source #

(.--.) :: V4 s -> V4 s -> Maybe (Needle (Interior (V4 s))) Source #

(Semimanifold a, Semimanifold (VRep a), Needle a ~ GenericNeedle a, OpenManifold (Scalar (Needle (Rep a Void))), LinearSpace (Needle (Rep a Void)), Num' (Scalar (Needle (Rep a Void)))) => PseudoAffineWithBoundary (GenericNeedle a) Source # 
Instance details

RealFloat'' s => PseudoAffineWithBoundary (S²_ s) Source # 
Instance details

Methods

(.--!) :: S²_ s -> S²_ s -> Needle (Interior (S²_ s)) Source #

(.-|) :: S²_ s -> Boundary (S²_ s) -> Maybe (HalfNeedle (S²_ s)) Source #

(!-|) :: S²_ s -> Boundary (S²_ s) -> HalfNeedle (S²_ s) Source #

(.--.) :: S²_ s -> S²_ s -> Maybe (Needle (Interior (S²_ s))) Source #

RealFloat'' s => PseudoAffineWithBoundary (S¹_ s) Source # 
Instance details

Methods

(.--!) :: S¹_ s -> S¹_ s -> Needle (Interior (S¹_ s)) Source #

(.-|) :: S¹_ s -> Boundary (S¹_ s) -> Maybe (HalfNeedle (S¹_ s)) Source #

(!-|) :: S¹_ s -> Boundary (S¹_ s) -> HalfNeedle (S¹_ s) Source #

(.--.) :: S¹_ s -> S¹_ s -> Maybe (Needle (Interior (S¹_ s))) Source #

(Num' s, Eq s, OpenManifold s, ProjectableBoundary s) => SemimanifoldWithBoundary (V0 s) Source # 
Instance details

Associated Types

type Interior (V0 s) Source #

type Boundary (V0 s) Source #

type HalfNeedle (V0 s) Source #

(Num' s, Eq s, OpenManifold s, ProjectableBoundary s) => SemimanifoldWithBoundary (V1 s) Source # 
Instance details

Associated Types

type Interior (V1 s) Source #

type Boundary (V1 s) Source #

type HalfNeedle (V1 s) Source #

(Num' s, Eq s, OpenManifold s, ProjectableBoundary s) => SemimanifoldWithBoundary (V2 s) Source # 
Instance details

Associated Types

type Interior (V2 s) Source #

type Boundary (V2 s) Source #

type HalfNeedle (V2 s) Source #

(Num' s, Eq s, OpenManifold s, ProjectableBoundary s) => SemimanifoldWithBoundary (V3 s) Source # 
Instance details

Associated Types

type Interior (V3 s) Source #

type Boundary (V3 s) Source #

type HalfNeedle (V3 s) Source #

(Num' s, Eq s, OpenManifold s, ProjectableBoundary s) => SemimanifoldWithBoundary (V4 s) Source # 
Instance details

Associated Types

type Interior (V4 s) Source #

type Boundary (V4 s) Source #

type HalfNeedle (V4 s) Source #

(Semimanifold a, Semimanifold (VRep a), Needle a ~ GenericNeedle a, OpenManifold (Scalar (Needle (Rep a Void))), LinearSpace (Needle (Rep a Void)), Num' (Scalar (Needle (Rep a Void)))) => SemimanifoldWithBoundary (GenericNeedle a) Source # 
Instance details

RealFloat'' s => SemimanifoldWithBoundary (D¹_ s) Source # 
Instance details

Associated Types

type Interior (D¹_ s) Source #

type Boundary (D¹_ s) Source #

type HalfNeedle (D¹_ s) Source #

RealFloat'' s => SemimanifoldWithBoundary (S²_ s) Source # 
Instance details

Associated Types

type Interior (S²_ s) Source #

type Boundary (S²_ s) Source #

type HalfNeedle (S²_ s) Source #

RealFloat'' s => SemimanifoldWithBoundary (S¹_ s) Source # 
Instance details

Associated Types

type Interior (S¹_ s) Source #

type Boundary (S¹_ s) Source #

type HalfNeedle (S¹_ s) Source #

RealFloat'' s => SemimanifoldWithBoundary (S⁰_ s) Source # 
Instance details

Associated Types

type Interior (S⁰_ s) Source #

type Boundary (S⁰_ s) Source #

type HalfNeedle (S⁰_ s) Source #

(Num' n, OpenManifold n, LinearManifold (a n), ProjectableBoundary n, Scalar (a n) ~ n, Needle (a n) ~ a n) => ProjectableBoundary (Point a n) Source # 
Instance details

(ProjectableBoundary a, ProjectableBoundary b, SameScalar LinearSpace '[Needle (Interior a), Needle (Interior b), Needle (Boundary a), Needle (Boundary b)], ProjectableBoundary (Interior a), ProjectableBoundary (Interior b), RealFrac'' (Scalar (Needle (Interior a)))) => ProjectableBoundary (a, b) Source # 
Instance details

(Num' n, OpenManifold n, LinearManifold (a n), Scalar (a n) ~ n, Needle (a n) ~ a n) => PseudoAffineWithBoundary (Point a n) Source # 
Instance details

Methods

(.--!) :: Point a n -> Point a n -> Needle (Interior (Point a n)) Source #

(.-|) :: Point a n -> Boundary (Point a n) -> Maybe (HalfNeedle (Point a n)) Source #

(!-|) :: Point a n -> Boundary (Point a n) -> HalfNeedle (Point a n) Source #

(.--.) :: Point a n -> Point a n -> Maybe (Needle (Interior (Point a n))) Source #

(ProjectableBoundary a, ProjectableBoundary b, SameScalar LinearSpace '[Needle (Interior a), Needle (Interior b), Needle (Boundary a), Needle (Boundary b)], ProjectableBoundary (Interior a), ProjectableBoundary (Interior b), RealFrac'' (Scalar (Needle (Interior a)))) => PseudoAffineWithBoundary (a, b) Source # 
Instance details

Methods

(.--!) :: (a, b) -> (a, b) -> Needle (Interior (a, b)) Source #

(.-|) :: (a, b) -> Boundary (a, b) -> Maybe (HalfNeedle (a, b)) Source #

(!-|) :: (a, b) -> Boundary (a, b) -> HalfNeedle (a, b) Source #

(.--.) :: (a, b) -> (a, b) -> Maybe (Needle (Interior (a, b))) Source #

(Num' n, OpenManifold n, LinearManifold (a n), Scalar (a n) ~ n, Needle (a n) ~ a n) => SemimanifoldWithBoundary (Point a n) Source # 
Instance details

Associated Types

type Interior (Point a n) Source #

type Boundary (Point a n) Source #

type HalfNeedle (Point a n) Source #

(ProjectableBoundary a, ProjectableBoundary b, SameScalar LinearSpace '[Needle (Interior a), Needle (Interior b)], RealFrac'' (Scalar (Needle (Interior a))), ProjectableBoundary (Interior a), ProjectableBoundary (Interior b)) => SemimanifoldWithBoundary (a, b) Source # 
Instance details

Associated Types

type Interior (a, b) Source #

type Boundary (a, b) Source #

type HalfNeedle (a, b) Source #

Methods

(.+^|) :: (a, b) -> Needle (Interior (a, b)) -> Either (Boundary (a, b), Scalar (Needle (Interior (a, b)))) (Interior (a, b)) Source #

fromInterior :: Interior (a, b) -> (a, b) Source #

fromBoundary :: Boundary (a, b) -> (a, b) Source #

(|+^) :: Boundary (a, b) -> HalfNeedle (a, b) -> (a, b) Source #

separateInterior :: (a, b) -> Either (Boundary (a, b)) (Interior (a, b)) Source #

toInterior :: (a, b) -> Maybe (Interior (a, b)) Source #

extendToBoundary :: Interior (a, b) -> Needle (Interior (a, b)) -> Maybe (Boundary (a, b)) Source #

smfdWBoundWitness :: SmfdWBoundWitness (a, b) Source #

needleIsOpenMfd :: (OpenManifold (Needle (Interior (a, b))) => r) -> r Source #

scalarIsOpenMfd :: (OpenManifold (Scalar (Needle (Interior (a, b)))) => r) -> r Source #

boundaryHasSameScalar :: ((LinearSpace (Needle (Boundary (a, b))), Scalar (Needle (Boundary (a, b))) ~ Scalar (Needle (Interior (a, b)))) => r) -> r Source #

(LinearSpace v, LinearSpace w, s ~ Scalar v, s ~ Scalar w, Num' s, OpenManifold s, ProjectableBoundary s) => ProjectableBoundary (LinearMap s v w) Source # 
Instance details

(LinearSpace v, LinearSpace w, s ~ Scalar v, s ~ Scalar w, Num' s, OpenManifold s) => PseudoAffineWithBoundary (LinearFunction s v w) Source # 
Instance details

(LinearSpace v, LinearSpace w, s ~ Scalar v, s ~ Scalar w, Num' s, OpenManifold s) => PseudoAffineWithBoundary (LinearMap s v w) Source # 
Instance details

Methods

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

(.-|) :: LinearMap s v w -> Boundary (LinearMap s v w) -> Maybe (HalfNeedle (LinearMap s v w)) Source #

(!-|) :: LinearMap s v w -> Boundary (LinearMap s v w) -> HalfNeedle (LinearMap s v w) Source #

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

(LinearSpace v, LinearSpace w, s ~ Scalar v, s ~ Scalar w, Num' s, OpenManifold s) => PseudoAffineWithBoundary (Tensor s v w) Source # 
Instance details

Methods

(.--!) :: Tensor s v w -> Tensor s v w -> Needle (Interior (Tensor s v w)) Source #

(.-|) :: Tensor s v w -> Boundary (Tensor s v w) -> Maybe (HalfNeedle (Tensor s v w)) Source #

(!-|) :: Tensor s v w -> Boundary (Tensor s v w) -> HalfNeedle (Tensor s v w) Source #

(.--.) :: Tensor s v w -> Tensor s v w -> Maybe (Needle (Interior (Tensor s v w))) Source #

(LinearSpace v, LinearSpace w, s ~ Scalar v, s ~ Scalar w, Num' s, OpenManifold s) => SemimanifoldWithBoundary (LinearFunction s v w) Source # 
Instance details

Associated Types

type Interior (LinearFunction s v w) Source #

type Boundary (LinearFunction s v w) Source #

type HalfNeedle (LinearFunction s v w) Source #

(LinearSpace v, LinearSpace w, s ~ Scalar v, s ~ Scalar w, Num' s, OpenManifold s) => SemimanifoldWithBoundary (LinearMap s v w) Source # 
Instance details

Associated Types

type Interior (LinearMap s v w) Source #

type Boundary (LinearMap s v w) Source #

type HalfNeedle (LinearMap s v w) Source #

(LinearSpace v, LinearSpace w, s ~ Scalar v, s ~ Scalar w, Num' s, OpenManifold s) => SemimanifoldWithBoundary (Tensor s v w) Source # 
Instance details

Associated Types

type Interior (Tensor s v w) Source #

type Boundary (Tensor s v w) Source #

type HalfNeedle (Tensor s v w) Source #

Methods

(.+^|) :: Tensor s v w -> Needle (Interior (Tensor s v w)) -> Either (Boundary (Tensor s v w), Scalar (Needle (Interior (Tensor s v w)))) (Interior (Tensor s v w)) Source #

fromInterior :: Interior (Tensor s v w) -> Tensor s v w Source #

fromBoundary :: Boundary (Tensor s v w) -> Tensor s v w Source #

(|+^) :: Boundary (Tensor s v w) -> HalfNeedle (Tensor s v w) -> Tensor s v w Source #

separateInterior :: Tensor s v w -> Either (Boundary (Tensor s v w)) (Interior (Tensor s v w)) Source #

toInterior :: Tensor s v w -> Maybe (Interior (Tensor s v w)) Source #

extendToBoundary :: Interior (Tensor s v w) -> Needle (Interior (Tensor s v w)) -> Maybe (Boundary (Tensor s v w)) Source #

smfdWBoundWitness :: SmfdWBoundWitness (Tensor s v w) Source #

needleIsOpenMfd :: (OpenManifold (Needle (Interior (Tensor s v w))) => r) -> r Source #

scalarIsOpenMfd :: (OpenManifold (Scalar (Needle (Interior (Tensor s v w)))) => r) -> r Source #

boundaryHasSameScalar :: ((LinearSpace (Needle (Boundary (Tensor s v w))), Scalar (Needle (Boundary (Tensor s v w))) ~ Scalar (Needle (Interior (Tensor s v w)))) => r) -> r Source #