-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/
-- | Dynamic programming for Set data structures.
--
-- generalized Algebraic Dynamic Programming
--
-- Extensions of ADPfusion for set-(like) data structures.
@package ADPfusionSet
@version 0.0.0.2
-- | Type definition for singleton terminal symbols.
module ADP.Fusion.Term.Singleton.Type
-- | A singleton vertex is successfully parsed only if no other vertex is
-- active yet. In particular, this allows us to insert "starting" points
-- into graphs that mostly deal with edges. As a parsing symbol, it
-- provides an Int which is the node index.
data Singleton
Singleton :: Singleton
instance (GHC.Show.Show i, GHC.Show.Show (ADP.Fusion.Core.Classes.RunningIndex i), GHC.Show.Show (ADP.Fusion.Core.Classes.Elm ls i)) => GHC.Show.Show (ADP.Fusion.Core.Classes.Elm (ls Data.Strict.Tuple.:!: ADP.Fusion.Term.Singleton.Type.Singleton) i)
instance ADP.Fusion.Core.Classes.Build ADP.Fusion.Term.Singleton.Type.Singleton
instance ADP.Fusion.Core.Classes.Element ls i => ADP.Fusion.Core.Classes.Element (ls Data.Strict.Tuple.:!: ADP.Fusion.Term.Singleton.Type.Singleton) i
-- | TODO merge with Edge and handle via phantom typing?
module ADP.Fusion.Term.EdgeWithSet.Type
-- | An edge in a graph. As a parsing symbol, it will provide (From:.To)
-- pairs.
data EdgeWithSet
EdgeWithSet :: EdgeWithSet
instance (GHC.Show.Show i, GHC.Show.Show (ADP.Fusion.Core.Classes.RunningIndex i), GHC.Show.Show (ADP.Fusion.Core.Classes.Elm ls i)) => GHC.Show.Show (ADP.Fusion.Core.Classes.Elm (ls Data.Strict.Tuple.:!: ADP.Fusion.Term.EdgeWithSet.Type.EdgeWithSet) i)
instance ADP.Fusion.Core.Classes.Build ADP.Fusion.Term.EdgeWithSet.Type.EdgeWithSet
instance ADP.Fusion.Core.Classes.Element ls i => ADP.Fusion.Core.Classes.Element (ls Data.Strict.Tuple.:!: ADP.Fusion.Term.EdgeWithSet.Type.EdgeWithSet) i
-- | Bitsets BS1 i are bitsets where one of the active bits is
-- annotated as the first or last bit that has been set. In principle,
-- being first or last is exchangeable, but is made explicit to allow for
-- type-different sets.
module ADP.Fusion.Core.Set1
instance ADP.Fusion.Core.Classes.RuleContext (Data.PrimitiveArray.Index.Set.BS1 i Data.PrimitiveArray.Index.IOC.I)
instance ADP.Fusion.Core.Classes.RuleContext (Data.PrimitiveArray.Index.Set.BS1 i Data.PrimitiveArray.Index.IOC.O)
instance GHC.Base.Monad m => ADP.Fusion.Core.Classes.MkStream m ADP.Fusion.Core.Classes.S (Data.PrimitiveArray.Index.Set.BS1 i Data.PrimitiveArray.Index.IOC.I)
instance GHC.Base.Monad m => ADP.Fusion.Core.Classes.MkStream m ADP.Fusion.Core.Classes.S (Data.PrimitiveArray.Index.Set.BS1 i Data.PrimitiveArray.Index.IOC.O)
instance ADP.Fusion.Core.Classes.MinSize c => ADP.Fusion.Core.Multi.TableStaticVar u c (Data.PrimitiveArray.Index.Set.BS1 s Data.PrimitiveArray.Index.IOC.I)
instance ADP.Fusion.Core.Classes.MinSize c => ADP.Fusion.Core.Multi.TableStaticVar u c (Data.PrimitiveArray.Index.Set.BS1 s Data.PrimitiveArray.Index.IOC.O)
-- | Insert an edge into a set. X -> Y e with e ==
-- Edge extends Y with the edge partially overlapping
-- Y.
--
-- The semantic meaning of the overlap depends on what the k
-- type in BS1 k i is. For First, the edge will go from
-- First in X to First in the smaller
-- Y.
--
-- TODO X -> e X vs X -> X e.
--
-- Sidenote: can we actually have X -> Y Z with Set1
-- structures? I don't think so, at least not easily, since the boundary
-- between Y Z is unclear.
module ADP.Fusion.Term.Edge.Set1
-- | We need to separate out the two cases of having BS1 First and
-- BS1 Last as this changes how we fill the Edge.
--
-- TODO separate out these cases into an Edge-Choice class ...
-- | TODO move to definition of Edge
class EdgeFromTo k
edgeFromTo :: EdgeFromTo k => Proxy k -> SetNode -> NewNode -> (From :. To)
newtype SetNode
SetNode :: Int -> SetNode
newtype NewNode
NewNode :: Int -> NewNode
-- | In case our sets have a First boundary, then we always point
-- from the boundary "into" the set. Hence SetNode == To and
-- NewNode == From.
-- | And if the set has a Last boundary, then we point from
-- somewhere in the set To the NewNode, which is
-- Last.
instance ADP.Fusion.Core.Multi.TmkCtx1 m ls ADP.Fusion.Term.Edge.Type.Edge (Data.PrimitiveArray.Index.Set.BS1 k t) => ADP.Fusion.Core.Classes.MkStream m (ls Data.Strict.Tuple.:!: ADP.Fusion.Term.Edge.Type.Edge) (Data.PrimitiveArray.Index.Set.BS1 k t)
instance (ADP.Fusion.Core.Multi.TstCtx m ts s x0 i0 is (Data.PrimitiveArray.Index.Set.BS1 k Data.PrimitiveArray.Index.IOC.I), ADP.Fusion.Term.Edge.Set1.EdgeFromTo k) => ADP.Fusion.Core.Multi.TermStream m (ADP.Fusion.Core.Multi.TermSymbol ts ADP.Fusion.Term.Edge.Type.Edge) s (is Data.PrimitiveArray.Index.Class.:. Data.PrimitiveArray.Index.Set.BS1 k Data.PrimitiveArray.Index.IOC.I)
instance ADP.Fusion.Term.Edge.Set1.EdgeFromTo Data.PrimitiveArray.Index.Set.First
instance ADP.Fusion.Term.Edge.Set1.EdgeFromTo Data.PrimitiveArray.Index.Set.Last
instance ADP.Fusion.Core.Multi.TermStaticVar ADP.Fusion.Term.Edge.Type.Edge (Data.PrimitiveArray.Index.Set.BS1 k Data.PrimitiveArray.Index.IOC.I)
module ADP.Fusion.Term.EdgeWithSet.Set1
-- | We need to separate out the two cases of having BS1 First and
-- BS1 Last as this changes how we fill the Edge.
--
-- TODO separate out these cases into an Edge-Choice class ...
instance ADP.Fusion.Core.Multi.TmkCtx1 m ls ADP.Fusion.Term.EdgeWithSet.Type.EdgeWithSet (Data.PrimitiveArray.Index.Set.BS1 k t) => ADP.Fusion.Core.Classes.MkStream m (ls Data.Strict.Tuple.:!: ADP.Fusion.Term.EdgeWithSet.Type.EdgeWithSet) (Data.PrimitiveArray.Index.Set.BS1 k t)
instance (ADP.Fusion.Core.Multi.TstCtx m ts s x0 i0 is (Data.PrimitiveArray.Index.Set.BS1 k Data.PrimitiveArray.Index.IOC.I), ADP.Fusion.Term.Edge.Set1.EdgeFromTo k) => ADP.Fusion.Core.Multi.TermStream m (ADP.Fusion.Core.Multi.TermSymbol ts ADP.Fusion.Term.EdgeWithSet.Type.EdgeWithSet) s (is Data.PrimitiveArray.Index.Class.:. Data.PrimitiveArray.Index.Set.BS1 k Data.PrimitiveArray.Index.IOC.I)
instance (ADP.Fusion.Core.Multi.TstCtx m ts s x0 i0 is (Data.PrimitiveArray.Index.Set.BS1 k Data.PrimitiveArray.Index.IOC.O), ADP.Fusion.Term.Edge.Set1.EdgeFromTo k) => ADP.Fusion.Core.Multi.TermStream m (ADP.Fusion.Core.Multi.TermSymbol ts ADP.Fusion.Term.EdgeWithSet.Type.EdgeWithSet) s (is Data.PrimitiveArray.Index.Class.:. Data.PrimitiveArray.Index.Set.BS1 k Data.PrimitiveArray.Index.IOC.O)
instance (ADP.Fusion.Core.Multi.TstCtx m ts s x0 i0 is (Data.PrimitiveArray.Index.Set.BS1 k Data.PrimitiveArray.Index.IOC.C), ADP.Fusion.Term.Edge.Set1.EdgeFromTo k) => ADP.Fusion.Core.Multi.TermStream m (ADP.Fusion.Core.Multi.TermSymbol ts ADP.Fusion.Term.EdgeWithSet.Type.EdgeWithSet) s (is Data.PrimitiveArray.Index.Class.:. Data.PrimitiveArray.Index.Set.BS1 k Data.PrimitiveArray.Index.IOC.C)
instance ADP.Fusion.Core.Multi.TermStaticVar ADP.Fusion.Term.EdgeWithSet.Type.EdgeWithSet (Data.PrimitiveArray.Index.Set.BS1 k Data.PrimitiveArray.Index.IOC.I)
instance ADP.Fusion.Core.Multi.TermStaticVar ADP.Fusion.Term.EdgeWithSet.Type.EdgeWithSet (Data.PrimitiveArray.Index.Set.BS1 k Data.PrimitiveArray.Index.IOC.O)
module ADP.Fusion.Term.Epsilon.Set1
instance ADP.Fusion.Core.Multi.TmkCtx1 m ls ADP.Fusion.Term.Epsilon.Type.Epsilon (Data.PrimitiveArray.Index.Set.BS1 k t) => ADP.Fusion.Core.Classes.MkStream m (ls Data.Strict.Tuple.:!: ADP.Fusion.Term.Epsilon.Type.Epsilon) (Data.PrimitiveArray.Index.Set.BS1 k t)
instance ADP.Fusion.Core.Multi.TstCtx m ts s x0 i0 is (Data.PrimitiveArray.Index.Set.BS1 k Data.PrimitiveArray.Index.IOC.I) => ADP.Fusion.Core.Multi.TermStream m (ADP.Fusion.Core.Multi.TermSymbol ts ADP.Fusion.Term.Epsilon.Type.Epsilon) s (is Data.PrimitiveArray.Index.Class.:. Data.PrimitiveArray.Index.Set.BS1 k Data.PrimitiveArray.Index.IOC.I)
instance ADP.Fusion.Core.Multi.TstCtx m ts s x0 i0 is (Data.PrimitiveArray.Index.Set.BS1 k Data.PrimitiveArray.Index.IOC.O) => ADP.Fusion.Core.Multi.TermStream m (ADP.Fusion.Core.Multi.TermSymbol ts ADP.Fusion.Term.Epsilon.Type.Epsilon) s (is Data.PrimitiveArray.Index.Class.:. Data.PrimitiveArray.Index.Set.BS1 k Data.PrimitiveArray.Index.IOC.O)
instance ADP.Fusion.Core.Multi.TermStaticVar ADP.Fusion.Term.Epsilon.Type.Epsilon (Data.PrimitiveArray.Index.Set.BS1 k Data.PrimitiveArray.Index.IOC.I)
instance ADP.Fusion.Core.Multi.TermStaticVar ADP.Fusion.Term.Epsilon.Type.Epsilon (Data.PrimitiveArray.Index.Set.BS1 k Data.PrimitiveArray.Index.IOC.O)
module ADP.Fusion.Term.PeekIndex.Set1
data PeekIndex i
PeekIndex :: PeekIndex i
instance (GHC.Show.Show i, GHC.Show.Show (ADP.Fusion.Core.Classes.RunningIndex i), GHC.Show.Show (ADP.Fusion.Core.Classes.Elm ls i)) => GHC.Show.Show (ADP.Fusion.Core.Classes.Elm (ls Data.Strict.Tuple.:!: ADP.Fusion.Term.PeekIndex.Set1.PeekIndex i) i)
instance ADP.Fusion.Core.Classes.Build (ADP.Fusion.Term.PeekIndex.Set1.PeekIndex i)
instance ADP.Fusion.Core.Classes.Element ls i => ADP.Fusion.Core.Classes.Element (ls Data.Strict.Tuple.:!: ADP.Fusion.Term.PeekIndex.Set1.PeekIndex i) i
instance ADP.Fusion.Core.Multi.TmkCtx1 m ls (ADP.Fusion.Term.PeekIndex.Set1.PeekIndex (Data.PrimitiveArray.Index.Set.BS1 k t)) (Data.PrimitiveArray.Index.Set.BS1 k t) => ADP.Fusion.Core.Classes.MkStream m (ls Data.Strict.Tuple.:!: ADP.Fusion.Term.PeekIndex.Set1.PeekIndex (Data.PrimitiveArray.Index.Set.BS1 k t)) (Data.PrimitiveArray.Index.Set.BS1 k t)
instance ADP.Fusion.Core.Multi.TstCtx m ts s x0 i0 is (Data.PrimitiveArray.Index.Set.BS1 k Data.PrimitiveArray.Index.IOC.I) => ADP.Fusion.Core.Multi.TermStream m (ADP.Fusion.Core.Multi.TermSymbol ts (ADP.Fusion.Term.PeekIndex.Set1.PeekIndex (Data.PrimitiveArray.Index.Set.BS1 k Data.PrimitiveArray.Index.IOC.I))) s (is Data.PrimitiveArray.Index.Class.:. Data.PrimitiveArray.Index.Set.BS1 k Data.PrimitiveArray.Index.IOC.I)
instance ADP.Fusion.Core.Multi.TermStaticVar (ADP.Fusion.Term.PeekIndex.Set1.PeekIndex (Data.PrimitiveArray.Index.Set.BS1 k i)) (Data.PrimitiveArray.Index.Set.BS1 k i)
-- | Singleton vertices are only introduced into a set structure, if no
-- vertex has been placed yet.
--
-- We explicitly check that X -> s is the only allowed rule,
-- with s == Singleton, apart from introducing "deletion"
-- symbols like X -> - s.
module ADP.Fusion.Term.Singleton.Set1
-- | TODO 17.2.2017 added; probably wrong together with the syntactic
-- variable instance in subtle ways.
instance ADP.Fusion.Core.Multi.TmkCtx1 m ls ADP.Fusion.Term.Singleton.Type.Singleton (Data.PrimitiveArray.Index.Set.BS1 k t) => ADP.Fusion.Core.Classes.MkStream m (ls Data.Strict.Tuple.:!: ADP.Fusion.Term.Singleton.Type.Singleton) (Data.PrimitiveArray.Index.Set.BS1 k t)
instance ADP.Fusion.Core.Multi.TstCtx m ts s x0 i0 is (Data.PrimitiveArray.Index.Set.BS1 k Data.PrimitiveArray.Index.IOC.I) => ADP.Fusion.Core.Multi.TermStream m (ADP.Fusion.Core.Multi.TermSymbol ts ADP.Fusion.Term.Singleton.Type.Singleton) s (is Data.PrimitiveArray.Index.Class.:. Data.PrimitiveArray.Index.Set.BS1 k Data.PrimitiveArray.Index.IOC.I)
instance ADP.Fusion.Core.Multi.TstCtx m ts s x0 i0 is (Data.PrimitiveArray.Index.Set.BS1 k Data.PrimitiveArray.Index.IOC.O) => ADP.Fusion.Core.Multi.TermStream m (ADP.Fusion.Core.Multi.TermSymbol ts ADP.Fusion.Term.Singleton.Type.Singleton) s (is Data.PrimitiveArray.Index.Class.:. Data.PrimitiveArray.Index.Set.BS1 k Data.PrimitiveArray.Index.IOC.O)
instance ADP.Fusion.Core.Multi.TermStaticVar ADP.Fusion.Term.Singleton.Type.Singleton (Data.PrimitiveArray.Index.Set.BS1 k Data.PrimitiveArray.Index.IOC.I)
instance ADP.Fusion.Core.Multi.TermStaticVar ADP.Fusion.Term.Singleton.Type.Singleton (Data.PrimitiveArray.Index.Set.BS1 k Data.PrimitiveArray.Index.IOC.O)
module ADP.Fusion.Core.EdgeBoundary
instance ADP.Fusion.Core.Classes.RuleContext (Data.PrimitiveArray.Index.EdgeBoundary.EdgeBoundary Data.PrimitiveArray.Index.IOC.I)
instance ADP.Fusion.Core.Classes.RuleContext (Data.PrimitiveArray.Index.EdgeBoundary.EdgeBoundary Data.PrimitiveArray.Index.IOC.C)
instance GHC.Base.Monad m => ADP.Fusion.Core.Classes.MkStream m ADP.Fusion.Core.Classes.S (Data.PrimitiveArray.Index.EdgeBoundary.EdgeBoundary Data.PrimitiveArray.Index.IOC.I)
instance GHC.Base.Monad m => ADP.Fusion.Core.Classes.MkStream m ADP.Fusion.Core.Classes.S (Data.PrimitiveArray.Index.EdgeBoundary.EdgeBoundary Data.PrimitiveArray.Index.IOC.C)
instance ADP.Fusion.Core.Multi.TableStaticVar u c (Data.PrimitiveArray.Index.EdgeBoundary.EdgeBoundary Data.PrimitiveArray.Index.IOC.I)
instance ADP.Fusion.Core.Multi.TableStaticVar u c (Data.PrimitiveArray.Index.EdgeBoundary.EdgeBoundary Data.PrimitiveArray.Index.IOC.C)
module ADP.Fusion.Term.Edge.EdgeBoundary
instance ADP.Fusion.Core.Multi.TmkCtx1 m ls ADP.Fusion.Term.Edge.Type.Edge (Data.PrimitiveArray.Index.EdgeBoundary.EdgeBoundary k) => ADP.Fusion.Core.Classes.MkStream m (ls Data.Strict.Tuple.:!: ADP.Fusion.Term.Edge.Type.Edge) (Data.PrimitiveArray.Index.EdgeBoundary.EdgeBoundary k)
instance ADP.Fusion.Core.Multi.TstCtx m ts s x0 i0 is (Data.PrimitiveArray.Index.EdgeBoundary.EdgeBoundary Data.PrimitiveArray.Index.IOC.I) => ADP.Fusion.Core.Multi.TermStream m (ADP.Fusion.Core.Multi.TermSymbol ts ADP.Fusion.Term.Edge.Type.Edge) s (is Data.PrimitiveArray.Index.Class.:. Data.PrimitiveArray.Index.EdgeBoundary.EdgeBoundary Data.PrimitiveArray.Index.IOC.I)
instance ADP.Fusion.Core.Multi.TermStaticVar ADP.Fusion.Term.Edge.Type.Edge (Data.PrimitiveArray.Index.EdgeBoundary.EdgeBoundary Data.PrimitiveArray.Index.IOC.I)
module ADP.Fusion.EdgeBoundary
module ADP.Fusion.Term.EdgeWithSet.EdgeBoundary
instance ADP.Fusion.Core.Multi.TmkCtx1 m ls ADP.Fusion.Term.EdgeWithSet.Type.EdgeWithSet (Data.PrimitiveArray.Index.EdgeBoundary.EdgeBoundary k) => ADP.Fusion.Core.Classes.MkStream m (ls Data.Strict.Tuple.:!: ADP.Fusion.Term.EdgeWithSet.Type.EdgeWithSet) (Data.PrimitiveArray.Index.EdgeBoundary.EdgeBoundary k)
instance ADP.Fusion.Core.Multi.TstCtx m ts s x0 i0 is (Data.PrimitiveArray.Index.EdgeBoundary.EdgeBoundary Data.PrimitiveArray.Index.IOC.I) => ADP.Fusion.Core.Multi.TermStream m (ADP.Fusion.Core.Multi.TermSymbol ts ADP.Fusion.Term.EdgeWithSet.Type.EdgeWithSet) s (is Data.PrimitiveArray.Index.Class.:. Data.PrimitiveArray.Index.EdgeBoundary.EdgeBoundary Data.PrimitiveArray.Index.IOC.I)
instance ADP.Fusion.Core.Multi.TstCtx m ts s x0 i0 is (Data.PrimitiveArray.Index.EdgeBoundary.EdgeBoundary Data.PrimitiveArray.Index.IOC.C) => ADP.Fusion.Core.Multi.TermStream m (ADP.Fusion.Core.Multi.TermSymbol ts ADP.Fusion.Term.EdgeWithSet.Type.EdgeWithSet) s (is Data.PrimitiveArray.Index.Class.:. Data.PrimitiveArray.Index.EdgeBoundary.EdgeBoundary Data.PrimitiveArray.Index.IOC.C)
instance ADP.Fusion.Core.Multi.TermStaticVar ADP.Fusion.Term.EdgeWithSet.Type.EdgeWithSet (Data.PrimitiveArray.Index.EdgeBoundary.EdgeBoundary Data.PrimitiveArray.Index.IOC.I)
instance ADP.Fusion.Core.Multi.TermStaticVar ADP.Fusion.Term.EdgeWithSet.Type.EdgeWithSet (Data.PrimitiveArray.Index.EdgeBoundary.EdgeBoundary Data.PrimitiveArray.Index.IOC.C)
module ADP.Fusion.Term.EdgeWithSet
-- | Core structures for using Boundary indices. These are
-- isomorphic to Int but are to be used to indicate "boundary"
-- elements in sets.
--
-- Immediate use is given, if one for example wants to extract posterior
-- scores for each possible endpoint in a set.
module ADP.Fusion.Core.Boundary
instance ADP.Fusion.Core.Classes.RuleContext (Data.PrimitiveArray.Index.Set.Boundary i Data.PrimitiveArray.Index.IOC.I)
instance GHC.Base.Monad m => ADP.Fusion.Core.Classes.MkStream m ADP.Fusion.Core.Classes.S (Data.PrimitiveArray.Index.Set.Boundary i Data.PrimitiveArray.Index.IOC.I)
instance ADP.Fusion.Core.Multi.TableStaticVar u c (Data.PrimitiveArray.Index.Set.Boundary i Data.PrimitiveArray.Index.IOC.I)
module ADP.Fusion.SynVar.Indices.Set1
-- | Since there is only one boundary, it doesn't matter if
-- k==First or k==Last. As a result, the "name" of the
-- boundary is kept variable.
--
-- Given the outer (set,bnd) system, we try all boundaries α for
-- (set-bnd,α) for the smaller set Y in X -> Y e.
--
-- TODO After this case we should only allow S, since we write,
-- in essence, left-linear grammars here.
--
-- TODO we should try to statically assure that rb==0 holds
-- always in this case. It should because every other symbol moves to
-- IVariable once the number of of reserved bits is
-- >0.
--
-- TODO kind-of hacked and should be written in a better way
-- | For the inside case, we try all possible boundaries for Y in
-- X -> Y e. For the outside case we now have: Y -> X
-- e where Y is now extended. (yset,ybnd) -> (yset +
-- α,α) for all α that are not in yset.
--
-- TODO 17.2.2017 added
-- | A Unit index expands to the full set with all possible
-- boundaries tried in order.
-- | A single Boundary index allows us to get the optimal results
-- ending on each individual boundary.
-- | Given indices that index _only_ the current edge First ->
-- Last, we want to go over all possible set combinations.
--
-- The to element from an edge boundary will serve as the
-- First element in a rule @X -> Last (from :-> to) First
-- | Generate all possible bitsets until fullSet is reached.
-- from is our Last, and to may not be set.
-- | TODO 17.2.2017 added
-- | TODO 17.2.2017 added
-- | TODO 18.2.2017 added
-- | TODO 18.2.2017 added
instance ADP.Fusion.SynVar.Indices.Classes.IndexHdr s x0 i0 us (Data.PrimitiveArray.Index.Set.BS1 k Data.PrimitiveArray.Index.IOC.I) cs c is (Data.PrimitiveArray.Index.Set.BS1 k Data.PrimitiveArray.Index.IOC.I) => ADP.Fusion.SynVar.Indices.Classes.AddIndexDense s (us Data.PrimitiveArray.Index.Class.:. Data.PrimitiveArray.Index.Set.BS1 k Data.PrimitiveArray.Index.IOC.I) (cs Data.PrimitiveArray.Index.Class.:. c) (is Data.PrimitiveArray.Index.Class.:. Data.PrimitiveArray.Index.Set.BS1 k Data.PrimitiveArray.Index.IOC.I)
instance ADP.Fusion.SynVar.Indices.Classes.IndexHdr s x0 i0 us (Data.PrimitiveArray.Index.Set.BS1 k Data.PrimitiveArray.Index.IOC.O) cs c is (Data.PrimitiveArray.Index.Set.BS1 k Data.PrimitiveArray.Index.IOC.O) => ADP.Fusion.SynVar.Indices.Classes.AddIndexDense s (us Data.PrimitiveArray.Index.Class.:. Data.PrimitiveArray.Index.Set.BS1 k Data.PrimitiveArray.Index.IOC.O) (cs Data.PrimitiveArray.Index.Class.:. c) (is Data.PrimitiveArray.Index.Class.:. Data.PrimitiveArray.Index.Set.BS1 k Data.PrimitiveArray.Index.IOC.O)
instance ADP.Fusion.SynVar.Indices.Classes.IndexHdr s x0 i0 us (Data.PrimitiveArray.Index.Set.BS1 k Data.PrimitiveArray.Index.IOC.I) cs c is (Data.PrimitiveArray.Index.Set.BS1 k Data.PrimitiveArray.Index.IOC.O) => ADP.Fusion.SynVar.Indices.Classes.AddIndexDense s (us Data.PrimitiveArray.Index.Class.:. Data.PrimitiveArray.Index.Set.BS1 k Data.PrimitiveArray.Index.IOC.I) (cs Data.PrimitiveArray.Index.Class.:. c) (is Data.PrimitiveArray.Index.Class.:. Data.PrimitiveArray.Index.Set.BS1 k Data.PrimitiveArray.Index.IOC.O)
instance ADP.Fusion.SynVar.Indices.Classes.IndexHdr s x0 i0 us (Data.PrimitiveArray.Index.Set.BS1 k Data.PrimitiveArray.Index.IOC.I) cs c is (Data.PrimitiveArray.Index.Unit.Unit Data.PrimitiveArray.Index.IOC.I) => ADP.Fusion.SynVar.Indices.Classes.AddIndexDense s (us Data.PrimitiveArray.Index.Class.:. Data.PrimitiveArray.Index.Set.BS1 k Data.PrimitiveArray.Index.IOC.I) (cs Data.PrimitiveArray.Index.Class.:. c) (is Data.PrimitiveArray.Index.Class.:. Data.PrimitiveArray.Index.Unit.Unit Data.PrimitiveArray.Index.IOC.I)
instance ADP.Fusion.SynVar.Indices.Classes.IndexHdr s x0 i0 us (Data.PrimitiveArray.Index.Set.BS1 k Data.PrimitiveArray.Index.IOC.I) cs c is (Data.PrimitiveArray.Index.Set.Boundary k Data.PrimitiveArray.Index.IOC.I) => ADP.Fusion.SynVar.Indices.Classes.AddIndexDense s (us Data.PrimitiveArray.Index.Class.:. Data.PrimitiveArray.Index.Set.BS1 k Data.PrimitiveArray.Index.IOC.I) (cs Data.PrimitiveArray.Index.Class.:. c) (is Data.PrimitiveArray.Index.Class.:. Data.PrimitiveArray.Index.Set.Boundary k Data.PrimitiveArray.Index.IOC.I)
instance ADP.Fusion.SynVar.Indices.Classes.IndexHdr s x0 i0 us (Data.PrimitiveArray.Index.Set.BS1 Data.PrimitiveArray.Index.Set.First Data.PrimitiveArray.Index.IOC.I) cs c is (Data.PrimitiveArray.Index.EdgeBoundary.EdgeBoundary Data.PrimitiveArray.Index.IOC.I) => ADP.Fusion.SynVar.Indices.Classes.AddIndexDense s (us Data.PrimitiveArray.Index.Class.:. Data.PrimitiveArray.Index.Set.BS1 Data.PrimitiveArray.Index.Set.First Data.PrimitiveArray.Index.IOC.I) (cs Data.PrimitiveArray.Index.Class.:. c) (is Data.PrimitiveArray.Index.Class.:. Data.PrimitiveArray.Index.EdgeBoundary.EdgeBoundary Data.PrimitiveArray.Index.IOC.I)
instance ADP.Fusion.SynVar.Indices.Classes.IndexHdr s x0 i0 us (Data.PrimitiveArray.Index.Set.BS1 Data.PrimitiveArray.Index.Set.Last Data.PrimitiveArray.Index.IOC.I) cs c is (Data.PrimitiveArray.Index.EdgeBoundary.EdgeBoundary Data.PrimitiveArray.Index.IOC.I) => ADP.Fusion.SynVar.Indices.Classes.AddIndexDense s (us Data.PrimitiveArray.Index.Class.:. Data.PrimitiveArray.Index.Set.BS1 Data.PrimitiveArray.Index.Set.Last Data.PrimitiveArray.Index.IOC.I) (cs Data.PrimitiveArray.Index.Class.:. c) (is Data.PrimitiveArray.Index.Class.:. Data.PrimitiveArray.Index.EdgeBoundary.EdgeBoundary Data.PrimitiveArray.Index.IOC.I)
instance ADP.Fusion.SynVar.Indices.Classes.IndexHdr s x0 i0 us (Data.PrimitiveArray.Index.Set.BS1 Data.PrimitiveArray.Index.Set.First Data.PrimitiveArray.Index.IOC.I) cs c is (Data.PrimitiveArray.Index.EdgeBoundary.EdgeBoundary Data.PrimitiveArray.Index.IOC.C) => ADP.Fusion.SynVar.Indices.Classes.AddIndexDense s (us Data.PrimitiveArray.Index.Class.:. Data.PrimitiveArray.Index.Set.BS1 Data.PrimitiveArray.Index.Set.First Data.PrimitiveArray.Index.IOC.I) (cs Data.PrimitiveArray.Index.Class.:. c) (is Data.PrimitiveArray.Index.Class.:. Data.PrimitiveArray.Index.EdgeBoundary.EdgeBoundary Data.PrimitiveArray.Index.IOC.C)
instance ADP.Fusion.SynVar.Indices.Classes.IndexHdr s x0 i0 us (Data.PrimitiveArray.Index.Set.BS1 Data.PrimitiveArray.Index.Set.First Data.PrimitiveArray.Index.IOC.O) cs c is (Data.PrimitiveArray.Index.EdgeBoundary.EdgeBoundary Data.PrimitiveArray.Index.IOC.C) => ADP.Fusion.SynVar.Indices.Classes.AddIndexDense s (us Data.PrimitiveArray.Index.Class.:. Data.PrimitiveArray.Index.Set.BS1 Data.PrimitiveArray.Index.Set.First Data.PrimitiveArray.Index.IOC.O) (cs Data.PrimitiveArray.Index.Class.:. c) (is Data.PrimitiveArray.Index.Class.:. Data.PrimitiveArray.Index.EdgeBoundary.EdgeBoundary Data.PrimitiveArray.Index.IOC.C)
instance ADP.Fusion.SynVar.Indices.Classes.IndexHdr s x0 i0 us (Data.PrimitiveArray.Index.Set.BS1 Data.PrimitiveArray.Index.Set.Last Data.PrimitiveArray.Index.IOC.I) cs c is (Data.PrimitiveArray.Index.EdgeBoundary.EdgeBoundary Data.PrimitiveArray.Index.IOC.C) => ADP.Fusion.SynVar.Indices.Classes.AddIndexDense s (us Data.PrimitiveArray.Index.Class.:. Data.PrimitiveArray.Index.Set.BS1 Data.PrimitiveArray.Index.Set.Last Data.PrimitiveArray.Index.IOC.I) (cs Data.PrimitiveArray.Index.Class.:. c) (is Data.PrimitiveArray.Index.Class.:. Data.PrimitiveArray.Index.EdgeBoundary.EdgeBoundary Data.PrimitiveArray.Index.IOC.C)
instance ADP.Fusion.SynVar.Indices.Classes.IndexHdr s x0 i0 us (Data.PrimitiveArray.Index.Set.BS1 Data.PrimitiveArray.Index.Set.Last Data.PrimitiveArray.Index.IOC.O) cs c is (Data.PrimitiveArray.Index.EdgeBoundary.EdgeBoundary Data.PrimitiveArray.Index.IOC.C) => ADP.Fusion.SynVar.Indices.Classes.AddIndexDense s (us Data.PrimitiveArray.Index.Class.:. Data.PrimitiveArray.Index.Set.BS1 Data.PrimitiveArray.Index.Set.Last Data.PrimitiveArray.Index.IOC.O) (cs Data.PrimitiveArray.Index.Class.:. c) (is Data.PrimitiveArray.Index.Class.:. Data.PrimitiveArray.Index.EdgeBoundary.EdgeBoundary Data.PrimitiveArray.Index.IOC.C)
-- | TODO Import and re-export all required modules for sets with one
-- boundary node.
module ADP.Fusion.Set1
module ADP.Fusion.Boundary