uma apresentação do sistema gap – laboratório ii professores: osnel broche cristo e anliy...

36
Uma Apresentação do Sistema GAP – Laboratório II Professores: Osnel Broche Cristo e Anliy Sargeant Monitor: Junior Assis Barreto Bernardes

Upload: internet

Post on 17-Apr-2015

106 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Uma Apresentação do Sistema GAP – Laboratório II Professores: Osnel Broche Cristo e Anliy Sargeant Monitor: Junior Assis Barreto Bernardes

Uma Apresentação do Sistema GAP – Laboratório II

Professores: Osnel Broche Cristo e Anliy SargeantMonitor: Junior Assis Barreto Bernardes

Page 2: Uma Apresentação do Sistema GAP – Laboratório II Professores: Osnel Broche Cristo e Anliy Sargeant Monitor: Junior Assis Barreto Bernardes

Listas: Revisão

gap> L : [6,8,9];; # Elementos entre colchetes e separados por vírgula.

gap> Append(L, [2]);; # Concatena a segunda lista passada no final da primeira.

gap> Add(L, true); # Adiciona o elemento no final da lista.

gap> L[3]; # Acesso a determinada posição da lista. 9

Page 3: Uma Apresentação do Sistema GAP – Laboratório II Professores: Osnel Broche Cristo e Anliy Sargeant Monitor: Junior Assis Barreto Bernardes

Listas: Revisão

gap> List([1,2,3], x -> x^3);[1,8,27]gap> Length(L); # Retorna a quantidade de elementos da lista.

5gap> Position(L, 8); # Retorna a posição que o elemento passado ocupa

na lista.

2

Page 4: Uma Apresentação do Sistema GAP – Laboratório II Professores: Osnel Broche Cristo e Anliy Sargeant Monitor: Junior Assis Barreto Bernardes

Conjuntos

• Os conjuntos são definidos no GAP como listas densas (sem buracos) e sem repetições, cujos elementos obedecem uma certa ordem que, no caso dos números inteiros, deve ser crescente.

gap> IsSet([1,2,3,4]);truegap> IsSet([1,,2,,3,4]);false

Page 5: Uma Apresentação do Sistema GAP – Laboratório II Professores: Osnel Broche Cristo e Anliy Sargeant Monitor: Junior Assis Barreto Bernardes

Conjuntosgap> IsSet([3,2,1]);

falsegap> IsSet([1,2,2,3]);

false gap> AsSet([1,,3,2,,]); [1,2,3]

gap> IsSet([“a”, “b”, “c”]); true gap> IsSet([“c”, “b”, “a”]); false

Page 6: Uma Apresentação do Sistema GAP – Laboratório II Professores: Osnel Broche Cristo e Anliy Sargeant Monitor: Junior Assis Barreto Bernardes

Conjuntos

• Conjuntos Heterogêneos:gap> IsSet(["a",4,true,3,0,false,8/9,"b",-6]); falsegap> AsSet(["a",4,true,3,0,false,8/9,"b",-6]);[ -6, 0, 8/9, 3, 4, true, false, "a", "b" ]

Page 7: Uma Apresentação do Sistema GAP – Laboratório II Professores: Osnel Broche Cristo e Anliy Sargeant Monitor: Junior Assis Barreto Bernardes

Conjuntos

• Existem funções para adicionar e remover elementos obedecendo as restrições dos conjuntos:

gap> S := [2,3,7,11];;gap> AddSet( S, 5 ); gap> S;[ 2, 3, 5, 7, 11 ]gap> RemoveSet(S,7);gap> S; [ 2, 3, 5, 11 ]

Page 8: Uma Apresentação do Sistema GAP – Laboratório II Professores: Osnel Broche Cristo e Anliy Sargeant Monitor: Junior Assis Barreto Bernardes

Álgebra dos Conjuntos

• As operações União, Interseção e Diferença já estão definidas no sistema.

gap> B := [1,2,3];;gap> A := [1,5,6];;gap> Union (A,B);[1, 2, 3, 5, 6]gap> Intersection (A,B);[1]gap> Difference(A,B);[5, 6]gap> Difference(B,A);[2, 3]

Page 9: Uma Apresentação do Sistema GAP – Laboratório II Professores: Osnel Broche Cristo e Anliy Sargeant Monitor: Junior Assis Barreto Bernardes

Álgebra dos Conjuntos• Quando as listas passadas não estão nas condições

necessárias para representarem conjuntos, o próprio sistema faz uma conversão interna para executar as operações:

gap> C := [1,2,,,3,3,,2];;gap> D := [,1,,1,,,5,6,5,6];;gap> Union(D,C);[1, 2, 3, 5, 6]gap> Intersection(D,C);[1]gap> Difference(D,C);[5, 6]gap> Difference(C,D);[2, 3]

Page 10: Uma Apresentação do Sistema GAP – Laboratório II Professores: Osnel Broche Cristo e Anliy Sargeant Monitor: Junior Assis Barreto Bernardes

Álgebra dos Conjuntosgap> P := [-7, 1, true, "b", "o"];[ -7, 1, true, "b", "o" ]gap> Q := [0, false, true, "o"]; [ 0, false, true, "o" ]gap> Union(P,Q); [ -7, 0, 1, true, false, "b", "o" ]gap> Intersection(P,Q); [ true, "o" ]gap> Difference(P,Q);[ -7, 1, "b" ]gap> Difference(Q,P);[ 0, false ]

Page 11: Uma Apresentação do Sistema GAP – Laboratório II Professores: Osnel Broche Cristo e Anliy Sargeant Monitor: Junior Assis Barreto Bernardes

Relações entre Conjuntos

• Igualdadegap> [1,2,3] = [3,2,1];falsegap> IsEqualSet([1,2,3],[3,2,1]);truegap> IsEqualSet([1,2,3],[1,2,2,3]); truegap> IsEqualSet([1,2,3],[1,2,3,4]);falsegap> IsEqualSet(["a",true,8],[8,true,"a"]);trueGap> IsEqualSet([1,2,,3],[1,2,3]);true

Page 12: Uma Apresentação do Sistema GAP – Laboratório II Professores: Osnel Broche Cristo e Anliy Sargeant Monitor: Junior Assis Barreto Bernardes

Relações entre Conjuntos

• Subconjuntogap> IsSubset(Rationals,Integers);

#Obs: A ordem é se o segundo é subconjunto do primeiro.

truegap> IsSubset([1,2,3,4], [2,3,5]); falsegap> IsSubset([1,2,3],[2,1]);truegap> IsSubset([1,2,,2,3,4,,,5,],[2,1]);truegap> IsSubset([1,2,,2,3,4,,,5,],[2,1,2,,5]);true

Page 13: Uma Apresentação do Sistema GAP – Laboratório II Professores: Osnel Broche Cristo e Anliy Sargeant Monitor: Junior Assis Barreto Bernardes

Relação Especial• Pertinência (Entre elemento e conjunto)

gap> 3 in Integers;truegap> 2/8 in Integers;falsegap> 1 in [1,2,3];truegap> [1] in [1,2,3];falsegap> [1] in [[1],[2],[3]];truegap> 1 in [[1],[2],[3]]; false

Page 14: Uma Apresentação do Sistema GAP – Laboratório II Professores: Osnel Broche Cristo e Anliy Sargeant Monitor: Junior Assis Barreto Bernardes

Relações• Uma relação binária em A é definida como um

subconjunto do produto cartesiano de A com A:gap> A := [1,2,3];gap> Cartesian(A,A);[ [ 1, 1 ], [ 1, 2 ], [ 1, 3 ], [ 2, 1 ], [ 2, 2 ], [ 2, 3 ], [ 3, 1 ], [ 3, 2 ], [ 3, 3 ] ]gap> IsBinaryRelation([[1,1],[2,2],[3,3]]);Error, no method found! For debugging hints type ?Recovery from

NoMethodFoundError, no 1st choice method found for `IsEndoGeneralMapping' on 1

arguments called from<function>( <arguments> ) called from read-eval-loopEntering break read-eval-print loop ...you can 'quit;' to quit to outer loop, oryou can 'return;' to continue

Page 15: Uma Apresentação do Sistema GAP – Laboratório II Professores: Osnel Broche Cristo e Anliy Sargeant Monitor: Junior Assis Barreto Bernardes

Relações• A função IdentityBinaryRelation(n) gera a

relação dada pelo diagonal do conjunto dos inteiros de 1 até n:

gap> R1 := IdentityBinaryRelation(3);<equivalence relation on <object>gap> Source(R); #Conjuntogap> <object>gap> List(Source(R));[1 ,2 ,3]gap> List(UnderlyingRelation(R)); #Elementos[ Tuple( [ 1, 1 ] ), Tuple( [ 2, 2 ] ), Tuple( [ 3, 3 ] ) ]

Page 16: Uma Apresentação do Sistema GAP – Laboratório II Professores: Osnel Broche Cristo e Anliy Sargeant Monitor: Junior Assis Barreto Bernardes

Relações• A função IdentityBinaryRelation também pode ser

aplicada a outros conjuntos:gap> R2 := IdentityBinaryRelation(Integers);IdentityMapping( Integers )gap> Source(R2);Integersgap> List(Source(R2));Error, resulting list would be too large (length

infinity) called from …

Page 17: Uma Apresentação do Sistema GAP – Laboratório II Professores: Osnel Broche Cristo e Anliy Sargeant Monitor: Junior Assis Barreto Bernardes

Relações

• A função EmptyBinaryRelation(n) gera a relação vazia no conjunto dos inteiros de 1 até n:

gap> R3 := EmptyBinaryRelation(4);Binary Relation on 4 pointsgap> List(Source(R3));[ 1, 2, 3, 4 ]gap> List(UnderlyingRelation(R3));[ ]

Page 18: Uma Apresentação do Sistema GAP – Laboratório II Professores: Osnel Broche Cristo e Anliy Sargeant Monitor: Junior Assis Barreto Bernardes

Relações

• A função EmptyBinaryRelation também pode ser aplicada a outros conjuntos:gap> R4 := EmptyBinaryRelation(Rationals);

<general mapping: Rationals -> Rationals >gap> Source(R4);Rationalsgap> List(Source(R4));Error, resulting list would be too large (length infinity) called fromgap> List(UnderlyingRelation(R4)); [ ]

Page 19: Uma Apresentação do Sistema GAP – Laboratório II Professores: Osnel Broche Cristo e Anliy Sargeant Monitor: Junior Assis Barreto Bernardes

Relações

• A função BinaryRelationByElements(A, R) gera a relação R do conjunto A:gap> A := [1,2,3];;gap>BinaryRelationByElements(A,[[1,1],[2,2],[3,3]]);Error, <S> and <R> must be domains called fromGeneralMappingByElements( d, d, elms ) called from<function>( <arguments> ) called from read-eval-loopEntering break read-eval-print loop ...you can 'quit;' to quit to outer loop, oryou can 'return;' to continue

Page 20: Uma Apresentação do Sistema GAP – Laboratório II Professores: Osnel Broche Cristo e Anliy Sargeant Monitor: Junior Assis Barreto Bernardes

Relações• Como definir relações no sistema usando a

função BinaryRelationByElements(A, R) ?

1) Primeiramente deve-se definir o conjunto A , para o sistema o domínio A usando a função Domain:

gap> A := Domain([1,2,3]);;

Page 21: Uma Apresentação do Sistema GAP – Laboratório II Professores: Osnel Broche Cristo e Anliy Sargeant Monitor: Junior Assis Barreto Bernardes

Relações

2) Depois define-se os elementos da relação R, isto é os pares de elementos relacionados por R, para o sistema as tuplas usando a função Tuple:

gap>R := [Tuple([1,1]),Tuple([2,2]),Tuple([3,3])];

3) Por fim, define-se a relação em si:gap> RR := BinaryRelationByElements (A, R);

Page 22: Uma Apresentação do Sistema GAP – Laboratório II Professores: Osnel Broche Cristo e Anliy Sargeant Monitor: Junior Assis Barreto Bernardes

Relações: Propriedadesgap> IsReflexiveBinaryRelation(R1);truegap> IsReflexiveBinaryRelation(R2);truegap> IsReflexiveBinaryRelation(R3);falsegap> IsReflexiveBinaryRelation(R4);false

gap> IsReflexiveBinaryRelation(RR);true

Page 23: Uma Apresentação do Sistema GAP – Laboratório II Professores: Osnel Broche Cristo e Anliy Sargeant Monitor: Junior Assis Barreto Bernardes

Relações: Propriedades

gap> A := Domain(["a","b"]);<object>

gap> R :=[Tuple(["a","b"])];[ Tuple( [ a, b ] ) ]gap> R5 := BinaryRelationByElements(A,R);<general mapping: <object> -> <object> >gap> IsBinaryRelation(R5);truegap> IsReflexiveBinaryRelation(R5);false

Page 24: Uma Apresentação do Sistema GAP – Laboratório II Professores: Osnel Broche Cristo e Anliy Sargeant Monitor: Junior Assis Barreto Bernardes

Relações: Propriedadesgap> IsTransitiveBinaryRelation(R1)

truegap> IsTransitiveBinaryRelation(R1)

truegap> IsTransitiveBinaryRelation(R3)truegap> IsTransitiveBinaryRelation(R4)

truegap> IsTransitiveBinaryRelation(RR)

truegap> IsTransitiveBinaryRelation(R5);

true

Page 25: Uma Apresentação do Sistema GAP – Laboratório II Professores: Osnel Broche Cristo e Anliy Sargeant Monitor: Junior Assis Barreto Bernardes

Relações: Propriedades gap> IsSymmetricBinaryRelation(R1); true gap> IsSymmetricBinaryRelation(R2); true gap> IsSymmetricBinaryRelation(R3);

true gap> IsSymmetricBinaryRelation(R4); true

gap> IsSymmetricBinaryRelation(RR); true

gap> IsSymmetricBinaryRelation(R5); false

Page 26: Uma Apresentação do Sistema GAP – Laboratório II Professores: Osnel Broche Cristo e Anliy Sargeant Monitor: Junior Assis Barreto Bernardes

Relações: Propriedadesgap> B := Domain(["a","b"]); <object>gap> R :=[Tuple(["a","b"]), Tuple(["b","a"])];[ Tuple( [ a, b ] ), Tuple( [ b, a ] ) ]gap> R6 := BinaryRelationByElements(B,R); <general mapping: <object> -> <object> >gap> IsBinaryRelation(R6); truegap> IsSymmetricBinaryRelation(R6);true

Page 27: Uma Apresentação do Sistema GAP – Laboratório II Professores: Osnel Broche Cristo e Anliy Sargeant Monitor: Junior Assis Barreto Bernardes

Relações: Propriedadesgap> IsAntisymmetricBinaryRelation(R1); truegap> IsAntisymmetricBinaryRelation(R2); truegap> IsAntisymmetricBinaryRelation(R3); truegap> IsAntisymmetricBinaryRelation(R4); truegap> IsAntisymmetricBinaryRelation(RR); truegap> IsAntisymmetricBinaryRelation(R6); false

Page 28: Uma Apresentação do Sistema GAP – Laboratório II Professores: Osnel Broche Cristo e Anliy Sargeant Monitor: Junior Assis Barreto Bernardes

Funções (Mappings)

• Função é um caso particular de relação. Assim, está definida analogamente no sistema:

gap> S := Domain([1,2,3]);<object>gap> R := Domain([1,2,3,4,5]);<object>gap> elms := [Tuple([1,5]),Tuple([3,4])];[ Tuple( [ 1, 5 ] ), Tuple( [ 3, 4 ] ) ]gap> F := GeneralMappingByElements(S,R,elms);<general mapping: <object> -> <object> >

Page 29: Uma Apresentação do Sistema GAP – Laboratório II Professores: Osnel Broche Cristo e Anliy Sargeant Monitor: Junior Assis Barreto Bernardes

Funções (Mappings)

• Outra maneira de definir:gap> B := Domain([1,2,3]);gap> G := MappingByFunction(B,Integers,x->x^2);MappingByFunction( <object>, <object>, function( x ) ... end )gap> UnderlyingRelation(G);<object>gap> List(last);[ Tuple( [ 1, 1 ] ), Tuple( [ 2, 4 ] ), Tuple( [ 3, 9 ] ) ]

Page 30: Uma Apresentação do Sistema GAP – Laboratório II Professores: Osnel Broche Cristo e Anliy Sargeant Monitor: Junior Assis Barreto Bernardes

Funções: Propriedadesgap> IsSurjective(F);falsegap> IsSurjective(G);falsegap> IsInjective(G); truegap> IsInjective(F);truegap> IsBijective(F);falsegap> IsBijective(G);false

Page 31: Uma Apresentação do Sistema GAP – Laboratório II Professores: Osnel Broche Cristo e Anliy Sargeant Monitor: Junior Assis Barreto Bernardes

Funções: Propriedades

gap> F := Domain([-1,-2,-3]);<object>gap> H := MappingByFunction(Integers,F,x -> x^2);MappingByFunction( <object>, <object>, function( x ) ... end )gap> IsInjective(last);falsegap> IsBijective(H); false

Page 32: Uma Apresentação do Sistema GAP – Laboratório II Professores: Osnel Broche Cristo e Anliy Sargeant Monitor: Junior Assis Barreto Bernardes

Funções: Propriedade

gap> A := Domain(["a","b","c"]);<object>gap> B := Domain(["a","b","c"]);<object>gap> R :=[Tuple(["a","b"]), Tuple(["b","a"]),

Tuple(["c","c"])];[ Tuple( [ a, b ] ), Tuple( [ b, a ] ), Tuple( [ c, c ] ) ]gap> F2 := GeneralMappingByElements(A,B,R);

<general mapping: <object> -> <object> >

Page 33: Uma Apresentação do Sistema GAP – Laboratório II Professores: Osnel Broche Cristo e Anliy Sargeant Monitor: Junior Assis Barreto Bernardes

Funções: Propriedades

gap> List(UnderlyingRelation(F2));[ Tuple( [ a, b ] ), Tuple( [ b, a ] ), Tuple( [ c, c ] ) ]gap> IsInjective(F2);truegap> IsSurjective(F2);truegap> IsBijective(F2);true

Page 34: Uma Apresentação do Sistema GAP – Laboratório II Professores: Osnel Broche Cristo e Anliy Sargeant Monitor: Junior Assis Barreto Bernardes

Funções (Programação)

• gap> cubo := x -> x^3;function( x ) ... endgap> cubo(5);125

• function ([argumentos f, argumentos g])local identicador local f, identicador local g;instruções;end;

Page 35: Uma Apresentação do Sistema GAP – Laboratório II Professores: Osnel Broche Cristo e Anliy Sargeant Monitor: Junior Assis Barreto Bernardes

Funções (Programação)

• gap> fat := function(n)> local f,i; # Variaveis locais> f := 1;> for i in [1 .. n] do> f := f*i;> od;> return f; # Retorno da função.> end;

Page 36: Uma Apresentação do Sistema GAP – Laboratório II Professores: Osnel Broche Cristo e Anliy Sargeant Monitor: Junior Assis Barreto Bernardes

Funções (Programação)

• gap> fatorial := function(n)> if n = 0 then> return 1;> else> return n*fatorial(n-1); #Chamada recursiva, também presente no GAP.

> fi ;> end;