Mini projeto desenvolvido em Alloy na Disciplina de Lógica para Computação da UFCG.
Um grafo é simples: um conjunto de nós, em que um nó está ligado a outro através de uma relação (sugestão: adjacente), representando arestas de saída.
Crie predicados para:
-
Testar se o grafo é não-direcionado, em que todas as arestas são simétricas.
-
Testar se o grafo tem uma orientação, em que nenhuma aresta é simétrica.
-
Testar se o grafo é completo, em que todos os nós estão ligados a todos os outros.
-
Testar se o grafo é acíclico.
-
Testar se o grafo não possui arestas para ele mesmo.
-
Testar se o grafo é fortemente conectado (todos os nós se ligam a todos os outros).
-
Testar se o grafo é transitivo (se um nó A se liga a um nó B, e B se liga a C, obrigatoriamente existe uma aresta entre A e C).
Entregue uma especificação em Alloy que represente esses testes como predicados. Crie fatos que combinem alguns desses predicados e faça o Alloy Analyzer encontrar soluções.
Linguagem: Alloy - Linguagem declarativa para modelagem e análise de sistemas de software.