using System;
using System.Collections.Generic;
using System.Text;
namespace CategoryTheory
{
/// <summary>
/// The arrow of math category theory
/// </summary>
public interface ICategoryArrow : IAssociatedObject
{
/// <summary>
/// The source of this arrow
/// </summary>
ICategoryObject Source
{
get;
set;
}
/// <summary>
/// The target of this arrow
/// </summary>
ICategoryObject Target
{
get;
set;
}
/// <summary>
/// The "is monomorhpism" sign
/// </summary>
bool IsMonomorphism
{
get;
}
/// <summary>
/// The "is epimorhpism" sign
/// </summary>
bool IsEpimorphism
{
get;
}
/// <summary>
/// The "is isoomorhpism" sign
/// </summary>
bool IsIsomorphism
{
get;
}
/// <summary>
/// Composes this arrow "f" with next arrow "g"
/// </summary>
/// <param name="category"> The category of arrow</param>
/// <param name="next"> The next arrow "g" </param>
/// <returns>Composition "fg" </returns>
ICategoryArrow Compose(ICategory category, ICategoryArrow next);
}
}