import public Chem
import public Data.Graph.Indexed.Subgraph0 Nodes : Nat -> Type0 SnocNodes : Nat -> Typedata AttachPoint : Nat -> TypeNone : AttachPoint kAttach : Fin k -> Fin k -> AttachPoint kEq (AttachPoint k)Show (AttachPoint k)0 SubgraphType : Bool -> Nat -> Type -> Type -> Typerecord Component : Nat -> Type -> Type -> TypeA component is a part of a molecular graph that will be placed
as a single unit.
Every componenent `c` except the first (the "main component")
comes with an attachement point: A node in another component
that will be placed before `c`.
C : AttachPoint k -> List (Fin k) -> (isRing : Bool) -> SubgraphType isRing k e n -> Component k e n.attach : Component k e n -> AttachPoint k.isRing : Component k e n -> Bool.nodes : Component k e n -> List (Fin k).subgraph : ({rec:0} : Component k e n) -> SubgraphType (isRing {rec:0}) k e n.attach : Component k e n -> AttachPoint kattach : Component k e n -> AttachPoint k.nodes : Component k e n -> List (Fin k)nodes : Component k e n -> List (Fin k).isRing : Component k e n -> BoolisRing : Component k e n -> Bool.subgraph : ({rec:0} : Component k e n) -> SubgraphType (isRing {rec:0}) k e nsubgraph : ({rec:0} : Component k e n) -> SubgraphType (isRing {rec:0}) k e n0 SnocComps : Nat -> Type -> Type -> Type0 Comps : Nat -> Type -> Type -> Typecomponents : IGraph k e n -> List (Component k e n)Partitions the nodes of a graph into disjoint components,
which will be placed individually in the given order.
The first component to be placed will be the most complex
cyclic system (if any) or the longest chain. All other
components in the list are linked via an `AttachPoint` to
a parent component, which will be placed first.