<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet type="text/xsl" href="static/style.xsl"?><OAI-PMH xmlns="http://www.openarchives.org/OAI/2.0/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/ http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd"><responseDate>2026-09-22T02:41:42Z</responseDate><request verb="GetRecord" identifier="oai:repositorioaberto.uab.pt:10400.2/12430" metadataPrefix="dim">https://repositorioaberto.uab.pt/server/oai/request</request><GetRecord><record><header><identifier>oai:repositorioaberto.uab.pt:10400.2/12430</identifier><datestamp>2025-01-15T16:28:59Z</datestamp><setSpec>com_10400.2_15583</setSpec><setSpec>com_10400.2_15395</setSpec><setSpec>com_10400.2_15392</setSpec><setSpec>col_10400.2_15585</setSpec></header><metadata><dim:dim xmlns:dim="http://www.dspace.org/xmlns/dspace/dim" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:doc="http://www.lyncode.com/xoai" xsi:schemaLocation="http://www.dspace.org/xmlns/dspace/dim http://www.dspace.org/schema/dim.xsd">
   <dim:field mdschema="dc" element="contributor" qualifier="advisor">Araújo, João</dim:field>
   <dim:field mdschema="dc" element="contributor" qualifier="advisor">Bentz, Wolfram</dim:field>
   <dim:field mdschema="dc" element="contributor" qualifier="advisor">Sequeira, Luis</dim:field>
   <dim:field mdschema="dc" element="contributor" qualifier="author" authority="virtual::15901" confidence="-1">Pereira, Rui Barradas</dim:field>
   <dim:field mdschema="dc" element="date" qualifier="accessioned">2022-10-28T13:33:48Z</dim:field>
   <dim:field mdschema="dc" element="date" qualifier="available">2022-10-28T13:33:48Z</dim:field>
   <dim:field mdschema="dc" element="date" qualifier="issued">2022-03-02</dim:field>
   <dim:field mdschema="dc" element="date" qualifier="submitted">2022-10-28</dim:field>
   <dim:field mdschema="dc" element="identifier" qualifier="citation">Pereira, Rui Barradas - Computing congruences and endomorphisms for algebras of type (2m, 1n) [Em linha]. [S.l.]: [s.n.]. 2022. 171 p.</dim:field>
   <dim:field mdschema="dc" element="identifier" qualifier="uri">http://hdl.handle.net/10400.2/12430</dim:field>
   <dim:field mdschema="dc" element="identifier" qualifier="uri">urn:tid:101649193</dim:field>
   <dim:field mdschema="dc" element="identifier" qualifier="tid" lang="pt_PT">101649193</dim:field>
   <dim:field mdschema="dc" element="description" qualifier="abstract" lang="pt_PT">Atualmente a principal aplicação de software para semigrupos é a package de GAP&#xd;
chamada Semigroups [29], em articulação com a package Smallsemi [13]. O GAP [17]&#xd;
é um sistema e linguagem de programação para álgebra discreta computacional. Embora&#xd;
estas packages ofereçam muitas opções de cálculo e forneçam uma biblioteca de todos&#xd;
os semigrupos até o tamanho 8, várias operações de semigrupos importantes não estão&#xd;
disponíveis. Em parte, isto deve-se ao facto de a arquitetura subjacente ser voltada para a&#xd;
teoria de grupos e os semigrupos frequentemente requerem técnicas algorítmicas que são&#xd;
mais próximas das empregadas na Álgebra Universal do que daquelas usadas em grupos.&#xd;
Existem maneiras de construir álgebras a partir das existentes (produtos diretos etc.),&#xd;
mas a operação inversa é crítica: decompor uma dada álgebra em outras menores. Este tipo&#xd;
de decomposição é especialmente importante em semigrupos, pois mesmo a estrutura de&#xd;
semigrupos muito pequenos pode ser muito obscura.&#xd;
Até agora não existe uma ferramenta computacional geral para decompor semigrupos.&#xd;
Por exemplo, o GAP já contém código para encontrar todas as congruências de classes muito&#xd;
particulares de semigrupos, mas está muito longe de fornecer um método geral. A situação é&#xd;
ainda pior em relação aos endomorfismos. O objetivo da package CREAM (Algebra CongRuences, Endomorphisms and AutomorphisMs) é resolver esta situação implementando algoritmos eficientes para calcular congruências, endomorfismos e automorfismos de álgebras&#xd;
do tipo (2m, 1 n). Vários algoritmos gerais (como em [15]) serão adaptados para o contexto da teoria de semigrupos e mais geralmente para álgebras do tipo (2m, 1 n ) cobrindo assim&#xd;
grupos e semigrupos mas também álgebras unárias e também loops, campos, anéis, semianéis, álgebras de Lie, MV-álgebras, Meadows, álgebras de lógica, etc. Estes algoritmos&#xd;
serão implementados em GAP. Isso incluirá as seguintes questões:&#xd;
• Dada uma álgebra finita A do tipo (2m, 1 n ), encontrar todas as congruências de A,&#xd;
pelo menos tão rápido quanto os programas existentes (ou seja, o código produzido&#xd;
será geral e pelo menos tão rápido quanto o código que existe para classes específicas&#xd;
de álgebras apenas);&#xd;
• Dada uma álgebra finita A do tipo (2m, 1 n ), encontrar todos os endomorfismos de&#xd;
A; em particular, o código deve calcular efetivamente os automorfismos de A, uma ferramenta que essencialmente existe apenas para grupos.&#xd;
Uma álgebra universal é uma estrutura algébrica que consiste num conjunto A e numa&#xd;
coleção de operações sobre A. Uma operação n-aria sobre A é uma função que tem como&#xd;
entrada um n-tuplo de elementos de A e retorna um elemento de A. Neste contexto só estão&#xd;
a ser consideradas operações com aridade 1 ou 2, i.e. operações unárias e binárias. Uma&#xd;
álgebra do tipo (2m, 1 n ) é uma álgebra universal com m operações binárias e n unárias.&#xd;
Este uso genérico da package CREAM depende de teoremas de álgebra universal.&#xd;
Isto tem custos, pois teoremas de tipos específicos de álgebras (e.g. grupos, semigrupos,&#xd;
etc) não podem ser usados para reduzir o espaço de procura e melhorar a performance.&#xd;
Canon e Holt [10], usaram vários algoritmos inteligentes e teoremas específicos de grupos&#xd;
para produzir código mais rápido que a package CREAM a calcular automorfismos de&#xd;
grupos com ordens maiores. Analogamente, Mitchell et al. [29] usaram teoremas da teoria&#xd;
de semigrupos para calcular eficazmente automorfismos e congruências de semigrupos&#xd;
completamente 0-simples. Mas estes estão entre os poucos casos de código GAP disponível&#xd;
que é mais rápido que a package CREAM que é de uso mais generalizado. Para a maioria&#xd;
de outras classes de álgebras de tipo (2m, 1 n ) a package CREAM é mais rápida a calcular&#xd;
auto[endo]morfismos/congruências. Um dos algoritmos principais implementado na package é o algoritmo de Freese descrito em [15] que calcula congruências principais para uma&#xd;
álgebra universal. Para chegar a esta performance a package CREAM usa uma mistura de algoritmos&#xd;
standard de álgebra universal juntamente com ferramentas de procura eficiente por modelos&#xd;
finitos de fórmulas de primeira ordem e a implementação de partes de código em C.&#xd;
Em geral, calcular congruências de álgebras é uma tarefa difícil. Existem vários teoremas&#xd;
descritivos para diferentes tipos de álgebra e algumas ferramentas computacionais para&#xd;
calcular congruências para álgebras finitas, mas geralmente essas ferramentas são aplicáveis&#xd;
a um conjunto muito específico e estreito de álgebras. O nosso objetivo era fornecer&#xd;
uma ferramenta eficaz para calculá-los para álgebras finitas do tipo (2m, 1 n ) abrangendo&#xd;
um conjunto muito amplo de álgebras, incluindo a maioria dos tipos e classes de álgebra&#xd;
atualmente estudados. O algoritmo usado foi o algoritmo de Freese cuja eficiência depende&#xd;
em muito da representação das álgebras e congruências. Em especial a representação&#xd;
de partições/congruências como um array é determinante na eficiência do cálculo das&#xd;
congruências principais uma vez que permite uma junção de blocos muito rápida, uma das&#xd;
operações mais utilizadas durante a execução do algoritmo de congruências. Além disso a&#xd;
representação usada não limita o âmbito geral das álgebras suportadas.&#xd;
No âmbito deste doutoramento vários algoritmos para o cálculo de automorfismos&#xd;
foram testados e a conclusão foi que o algoritmo mais promissor foi um algoritmo que usa invariantes das operações das álgebras para limitar os possíveis automorfismos da álgebra.&#xd;
Este algoritmo é usado na package Loops cuja implementação foi usada como guia tendo&#xd;
o seu âmbito sido expandido para suportar não só magmas mas qualquer álgebra do tipo&#xd;
(2 m, 1 n ). A implementação final dos algoritmos de automorfismos usando a abordagem&#xd;
de invariantes foi contribuída para a package CREAM por Choiwah Chow com base nas&#xd;
conclusões e no trabalho realizado no âmbito deste doutoramento.&#xd;
Dada a falta de referências sobre algoritmos para calcular endomorfismos, o algoritmo&#xd;
para calcular endomorfismos usado na package CREAM foi definido usando teoremas básicos de álgebra universal como o teorema do homomorfismo, para relacionar congruências,&#xd;
álgebras quocientes, subálgebras e endomorfismos. O algoritmo foi desenvolvido usando os&#xd;
algoritmos de congruências e automorfismos implementados, e uma aplicação denominada&#xd;
MACE4. O MACE4 [27] é uma aplicação de linha de comando que procura modelos finitos&#xd;
de fórmulas de primeira ordem.&#xd;
Embora o GAP seja adequado para prototipagem e implementação rápida de algoritmos,&#xd;
o código resultante não é muito rápido devido ao facto de ser uma linguagem interpretada.&#xd;
Reescrever o código em C permitiu melhorias surpreendentes que alcançaram uma melhoria&#xd;
de até 670 vezes do código GAP para o código C.&#xd;
Além disso, a integração com o MACE4 permite combinar a eficiência de algoritmos&#xd;
como [15], com um amplo conjunto de possibilidades fornecidas por uma ferramenta&#xd;
eficiente na procura por modelos finitos de fórmulas de primeira ordem, dando uma&#xd;
flexibilidade muito grande à package CREAM.&#xd;
A package CREAM é em média 20 vezes mais rápida no cálculo de congruências&#xd;
dos tipos de semigrupos muito limitados que são suportados pela função CongruencesOfSemigroups da package Semigroups que é a função mais abrangente em GAP para o&#xd;
cálculo de congruências. A única aplicação que possui um âmbito semelhante em termos de&#xd;
álgebras suportadas é a interface de linha de comando UACalc, mas faz isso em jython, sem&#xd;
beneficiar do ecossistema existente na plataforma GAP. Quando comparado com o UACalc,&#xd;
o package CREAM é consistentemente mais de 3 vezes mais rápido.&#xd;
Relativamente a automorfismos e endomorfismos, a comparação com outras bibliotecas/aplicativos é muito difícil, uma vez que o suporte é limitado principalmente a grupos&#xd;
e outras estruturas algébricas intimamente relacionadas com grupos. Para essas álgebras,&#xd;
o desempenho das packages GAP Loops e Sonata são comparáveis e às vezes melhores&#xd;
do que a package CREAM. Essas bibliotecas por vezes contam com o uso de teoremas&#xd;
específicos para essas álgebras. Mas apenas a package CREAM suporta a maioria das&#xd;
álgebras estudadas em álgebra convencional e moderna. Dada a importância das congruências, automorfismos e endomorfismos para o estudo de&#xd;
estruturas algébricas, espera-se que a package CREAM com seu desempenho e versatilidade&#xd;
possa ser uma ferramenta útil para a comunidade GAP e um amplo grupo de matemáticos.&#xd;
O código resultante está disponível como o pacote GAP CREAM que está totalmente&#xd;
documentado.</dim:field>
   <dim:field mdschema="dc" element="description" qualifier="abstract" lang="pt_PT">While there are efficient algorithms to decompose very particular classes of semigroups,&#xd;
groups and quasigroups, there are no similar facilities available for the more general&#xd;
algebraic structures such as algebras of type (2m, 1 n ), with an arbitrary number of binary&#xd;
and unary operations. In this thesis, its presented the GAP package CREAM (Algebra&#xd;
CongRuences, Endomorphisms and AutomorphisMs) that provides efficient algorithm&#xd;
implementations to calculate congruences, endomorphisms and automorphisms of algebras&#xd;
of type (2m, 1 n ) covering groups and semigroups but also unary algebras, and loops, fields,&#xd;
rings, semi-rings, MV-algebras, Meadows, algebras of logic, etc.&#xd;
An universal algebra is an algebraic structure consisting of a set A together with a&#xd;
collection of operations on A. An n-ary operation on A is a function that takes n-tuple of&#xd;
elements from A and returns a single element of A. In the current scope are only considered&#xd;
operations with arity of 1 or 2, i.e. unary and binary operations. An algebra of type (2 m,1 n )&#xd;
is a universal algebra with m binary and n unary operations.&#xd;
This general applicability of the CREAM package relies on universal algebra theorems. This comes with a cost since theorems on specific types of algebras (e.g. groups,&#xd;
semigroups, etc) cannot be used to reduce the search space and enhance performance.&#xd;
Canon and Holt, using a mix of smart algorithms and specific group theorems, produced&#xd;
fast code to compute automorphisms of groups that is faster than CREAM on large orders.&#xd;
Similarly, Mitchell et al. used semigroup theory theorems to compute in a very effective&#xd;
way automorphisms and congruences of completely 0-simple semigroups. But these are&#xd;
among the few cases of known GAP code that are faster than our general purpose package&#xd;
CREAM. For most other classes of algebras of type (2m, 1 n ), CREAM is faster computing&#xd;
auto[endo]morphisms/congruences. One core algorithm implemented in the package is&#xd;
Freese’s algorithm [15] that calculates principal congruences for a universal algebra.&#xd;
To get this performance, CREAM uses a mixture of standard universal algebra algorithms together with tools that can search efficiently for finite models of first-order formulas&#xd;
and the implementation of parts of the code in C.</dim:field>
   <dim:field mdschema="dc" element="language" qualifier="iso" lang="pt_PT">eng</dim:field>
   <dim:field mdschema="dc" element="rights" qualifier="uri" lang="pt_PT">http://creativecommons.org/licenses/by-nc/4.0/</dim:field>
   <dim:field mdschema="dc" element="subject" lang="pt_PT">Congruências</dim:field>
   <dim:field mdschema="dc" element="subject" lang="pt_PT">Morfismos</dim:field>
   <dim:field mdschema="dc" element="subject" lang="pt_PT">Álgebra universal</dim:field>
   <dim:field mdschema="dc" element="subject" lang="pt_PT">GAP</dim:field>
   <dim:field mdschema="dc" element="subject" lang="pt_PT">Congruences</dim:field>
   <dim:field mdschema="dc" element="subject" lang="pt_PT">Morphisms</dim:field>
   <dim:field mdschema="dc" element="subject" lang="pt_PT">Universal</dim:field>
   <dim:field mdschema="dc" element="subject" lang="pt_PT">Algebra</dim:field>
   <dim:field mdschema="dc" element="title" lang="pt_PT">Computing congruences and endomorphisms for algebras of type (2m, 1n)</dim:field>
   <dim:field mdschema="dc" element="type">doctoral thesis</dim:field>
   <dim:field mdschema="thesis" element="degree" qualifier="name" lang="pt_PT">Tese de Doutoramento em Álgebra Computacional em associação com a Faculdade de Ciências e Tecnologia da Universidade de Coimbra, apresentada à Universidade Aberta</dim:field>
   <dim:field mdschema="dspace" element="entity" qualifier="type">Publication</dim:field>
   <dim:field mdschema="relation" element="isAuthorOfPublication" authority="virtual::15901" confidence="-1">41fdbdc5-361e-4a04-97fc-b84bbbc635ec</dim:field>
   <dim:field mdschema="relation" element="isAuthorOfPublication" qualifier="latestForDiscovery" authority="virtual::15901" confidence="-1">41fdbdc5-361e-4a04-97fc-b84bbbc635ec</dim:field>
   <dim:field mdschema="person" element="familyName" authority="virtual::15901" confidence="-1">Barradas Pereira</dim:field>
   <dim:field mdschema="person" element="givenName" authority="virtual::15901" confidence="-1">Rui Miguel</dim:field>
   <dim:field mdschema="person" element="identifier" qualifier="ciencia-id" authority="virtual::15901" confidence="-1">C71D-C37E-E8BC</dim:field>
   <dim:field mdschema="datacite" element="subject" qualifier="sdg" lang="pt_PT">04:Educação de Qualidade</dim:field>
   <dim:field mdschema="rcaap" element="rights" lang="pt_PT">openAccess</dim:field>
   <dim:field mdschema="rcaap" element="type" lang="pt_PT">doctoralThesis</dim:field>open.access</dim:dim></metadata></record></GetRecord></OAI-PMH>