Considerando a representação interna: P -> N (t1) P -> N (t2) P x P -> N e os seguintes tipos: P2N3: P1 x P2 x N x N x N | | | | | '-> oco P2 | '-----> oco P1 '---------> co-oco P1 x P2 P2N5: P1 x P2 x N x N x N x N x N | | | | | | | | | '-> ranking | | | '-----> teste de dependencia | | | | | '-> oco P2 | '-----> oco P1 '---------> co-oco P1 x P2 1) Arranjar funções para gerar 'string*', 'file', 'P x P -> N x N x N' 2) kvec: File x File -> P2N3 3) +: P2N3* -> P2N3 4) filter: P2N3 x filterFunction -> P2N3 ----> DESTROI A ESTRUTURA ORIGINAL em que filterFunction: P2N3 -> Bool 5) toFile: P2N3 -> File 6) fromFile: File -> P2N3 7) rank: P2N3 -> P2N5 8) grep: P2N3 x P x side -> P2N3 ----> COPIA A ESTRUTURA ou / e grep: (P2N3 x P x side) -> N x (Pi -> N x N) | | | | | | | '-> co-oco de P com Pi | | '-----> oco de Pi | '-----------> palavras co-ocorrentes com P '----------------> ocorrencias de P