<!-- ------------------------------------------------------------------- -->
<!--                                                                     -->
<!--  history.xml            Gpd documentation            Chris Wensley  -->
<!--                                                       & Emma Moore  -->
<!--                                                                     -->
<!--  $Id: history.xml,v 1.003 2006/06/01 gap Exp $                      -->
<!--                                                                     -->
<!-- ------------------------------------------------------------------- -->

<?xml version="1.0" encoding="ISO-8859-1"?>
  <!-- $Id: history.xml,v 1.003  Exp $ -->

<Chapter Label="history">
<Heading>Development History</Heading>

<Section><Heading>Versions of the Package</Heading>

The first version, <Package>GraphGpd</Package> 1.001, 
formed part of Emma Moore's thesis <Cite Key="emma-thesis" /> in December 2000,
but was not made generally available.
<P/>
Version 1.002 of <Package>GraphGpd</Package> 
was prepared to run under &GAP; 4.4 in January 2004; 
was submitted to the &GAP; council to be considered as an accepted package; 
but suggestions from the referee were not followed up.
<P/>
In April 2006 the manual was converted to <Package>GAPDoc</Package> format.
Variables <C>Star</C>, <C>Costar</C> and <C>CoveringGroup</C> were
found to conflict with usage in other packages, and were renamed 
<C>VertexStar</C>, <C>VertexCostar</C> and 
<C>CoveringGroupOfGroupoid</C> respectively. 
Similarly, the <C>Vertices</C> and <C>Arcs</C> of an <C>FpWeightedDigraph</C> 
were changed from attributes to record components.
<P/>
In the spring of 2006 the package was extensively rewritten 
and renamed &gpd;. 
Version 1.01 was submitted as a deposited package in June 2006.

</Section>


<Section><Heading>What needs to be done next?</Heading>

Computationally, there are three types of connected groupoid:
<List>
<Item>
those with identical object groups,
</Item>
<Item>
those with object groups conjugate in some supergroup,
</Item>
<Item>
those with object groups which are simply isomorphic. 
</Item>
</List>

<Package>GraphGpd</Package> attempted to implement the second case.
&gpd; 1.01 restricts itself to the first case.
&gpd; 1.02 will extend 1.01 to the second case.
<P/>
Here are some other immediate requirements: 
<List>
<Item>
normal subgroupoids and quotient groupoids;
</Item>
<Item>
more methods for morphisms of groupoids, 
particularly when the range is not connected; 
</Item>
<Item>
<C>ImageElm</C> and <C>ImagesSource</C> 
for the cases of groupoid morphisms not yet covered;
</Item>
<Item>
<C>Enumerator</C> for <C>IsHomsetCosetsRep</C>;
</Item>
<Item>
free groupoid on a graph;
</Item>
<Item>
methods for <C>FreeProductWithAmalgamation</C> and <C>HnnEntension</C> 
for pc-groups; 
</Item>
<Item>
convert <C>GraphOfGroupsRewritingSystem</C> to the category 
<C>IsRewritingSystem</C>;
</Item>
<Item>
in <Package>XMod</Package>, implement crossed modules over groupoids.
</Item>
</List>

</Section>
</Chapter>
