using System;
using System.Collections.Generic;
using System.Text;
namespace CategoryTheory
{
/// <summary>
/// Category with equalizer
/// </summary>
public interface ICoequalizerCategory : ICategory
{
/// <summary>
/// Gets coequalizer of two arrows
/// </summary>
/// <param name="arrow1">First arrow</param>
/// <param name="arrow2">Second arrow</param>
/// <returns>The coequalizer</returns>
ICategoryArrow GetCoequalizer(ICategoryArrow arrow1, ICategoryArrow arrow2);
/// <summary>
/// Gets arrow from coequalizer
/// </summary>
/// <param name="coequalizer">The coqualizer</param>
/// <param name="arrow">Arrow to object</param>
/// <param name="arrowToObject1">First arrow to object</param>
/// <param name="arrowToObject2">Second arrow to object</param>
/// <returns>Arrow from equalizer</returns>
ICategoryArrow GetArrowFromCoequalizer(ICategoryArrow coequalizer, ICategoryArrow arrow,
ICategoryArrow arrowToObject1, ICategoryArrow arrowToObject2);
}
}