manifolds-0.6.0.0: Coordinate-free hypersurfaces
Copyright(c) Justus Sagemüller 2020
LicenseGPL v3
Maintainer(@) jsag $ hvl.no
Stabilityexperimental
Portabilityportable
Safe HaskellNone
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
(Num' , Eq , OpenManifold , ProjectableBoundary ) => SemimanifoldWithBoundary Source # 
Instance details

Defined in Data.Manifold.WithBoundary

Associated Types

type Interior Source #

type Boundary Source #

type HalfNeedle Source #

SemimanifoldWithBoundary ℝay Source # 
Instance details

Defined in Data.Manifold.Cone

(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 #

(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' 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 #

(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

SemimanifoldWithBoundary (CD¹ ℝ⁰) Source # 
Instance details

Defined in Data.Manifold.Cone

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

Defined in Data.Manifold.Cone

(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 #

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 #

(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 #

(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 #

(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 #

(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 #

(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 #

(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 #

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 (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 #

(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' k, OpenManifold k) => PseudoAffineWithBoundary (ZeroDim k) Source # 
Instance details

Defined in Data.Manifold.WithBoundary.Class

(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 #

(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 #

(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 #

(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 #

(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

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 (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

(Num' s, Eq s, OpenManifold s, ProjectableBoundary s) => ProjectableBoundary (V0 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

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

(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

(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

(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 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 Int8 
Instance details

Defined in Data.Monoid.Additive

Methods

zeroHV :: Int8 #

addHVs :: Int8 -> Int8 -> Int8 #

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 Integer 
Instance details

Defined in Data.Monoid.Additive

AdditiveMonoid Word 
Instance details

Defined in Data.Monoid.Additive

Methods

zeroHV :: Word #

addHVs :: Word -> Word -> Word #

AdditiveMonoid Word8 
Instance details

Defined in Data.Monoid.Additive

Methods

zeroHV :: Word8 #

addHVs :: Word8 -> Word8 -> Word8 #

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 (ZeroDim k) 
Instance details

Defined in Data.Monoid.Additive

Methods

zeroHV :: ZeroDim k #

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

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

Defined in Data.Monoid.Additive

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) #

(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
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) #

(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)) #

(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 (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

(Num' s, Eq s, OpenManifold s, ProjectableBoundary s) => ProjectableBoundary (V0 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 (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 #

(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 #

(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 (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 #

(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 #

(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 (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 #

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 #

(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), 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)))) => 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) => 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)], 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 #

(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 #

(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 (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) => PseudoAffineWithBoundary (LinearFunction s v w) Source # 
Instance details

(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 #

(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 #