bool stringeq(string * str1, string * str2) { if (stringlen(str1) != stringlen(str2)) return false; return (strcmp(str1->str, str2->str) == 0); }
bool ScanParseSkel::verifyHeader(const Char8 *szHeader) { bool returnValue = true; if(szHeader == NULL) { SLOG << "Error Null Header String Read" << std::endl; return false; } if(_szReferenceHeader != NULL) { if(strncmp(szHeader, _szReferenceHeader, stringlen(_szReferenceHeader)) != 0) { SLOG << "Error : Header [" << szHeader << "] does not " << "match reference [" << _szReferenceHeader << "]" << std::endl; returnValue = false; } } else { SLOG << "Error Null Reference Header, Check disabled " << std::endl; return true; } return returnValue; }
char* mlstring2cstring_malloc(string mlstring) { int size = stringlen(mlstring) + 1; char* buf = (char*)emalloc_atomic(size); return mlstring2cstring_buffer(mlstring, size, buf); }
int count_word_in_str_way_1(char *str, char *word){ if (str == NULL)return(0); int i = 0, j = 0, compare = 0, count = 0; int l = stringlen(word); while (str[i] != '\0'){ if (str[i] == word[j]){ compare++; if (compare == l){ count++; j = 0; compare = 0; if (str[i] != word[j] || l == 1){ i++; } } else{ i++; j++; } } else{ j = 0; compare = 0; i++; } } return count; }
int main(){ char str[] = "hello world"; printf("The length of the string \"%s\" is %i\n",str, stringlen(str)); return(0); }
/************************************************* Function: MirrorStr Description: 查看是否对称 Calls: Called By: main Input: 无 Output: 无 Return: 0 *************************************************/ bool MirrorStr(char *str) { int i, j; for (i = 0, j = stringlen(str) - 1; i < j; i++, j--) { if (str[i] != str[j]) return false; } return true; }
int main( void ) { char string[ 80 ]; /* create char array */ printf( "Enter a string: "); scanf( "%[^\n]", string ); printf( "%d\n", stringlen( string ) ); return 0; }
int main(void) { //printf("Give me a word: \n"); string word = "hello"; printf("Your word is %s\n", word); //stringlen(word); printf("The word is %d characters long.\n", stringlen(word)); return 0; }
/* Function adds a node to the list */ int add_node(List **list, char *content) { char *copy_of_str; int string_len; List *node; /* Declaring new ptr to List; ptr will hold addr of our new node */ List *last; /* Allocate enough space in memory to hold new node */ node = malloc(sizeof(List)); if(node == NULL) /* If malloc function fails, raise an error */ return (1); /* Copy content given as a parameter into a newly allocated space in memory */ string_len = stringlen(content); copy_of_str = malloc(sizeof(char) * string_len); /* Allocate enough memory to store copy */ /* COMMENTED OUT if(copy_of_str == NULL) return NULL; */ copy_of_str = strcopy(copy_of_str, content); /* Initialize all the data of the new node. 2nd node's str element holds the pointer to the newly allocated & stored string (©_of_str) */ node->str = copy_of_str; /* Make ptr 'next' of node point to NULL, so the node will now be the last node of our list */ node->next = NULL; /* Make the 1st node (list) 'next' ptr point to the first element of 2nd node (by accessing its addr). If statement: assigns node location to *list if it is the first node added to the list */ if(*list == NULL) { *list = node; } /* Find the last node and designate the new node to follow. find_last_node takes the pointer to the front of the list; continues to next pointer in each node in the list until reaching a NULL pointer. */ else { last = *list; /* Last pointer points to the front/beginning of the list */ while(last->next != NULL) { last = last->next; /* We want last->next to point to nothing (NULL) */ } last->next = node; } return(0); }
char* mlstring2cstring_buffer(string mlstring, int bufsize, char* buf) { int bytelen = stringlen(mlstring); char *raw = stringbuf(mlstring); if((bytelen+1) > bufsize) DIE("buffer too small for string"); memcpy(buf,raw,bytelen); buf[bytelen] = 0; return buf; }
//decode function 'decipher' //input... (&a, plain_text) //output... plain_text: HELLO WORLD char* decipher(const CipherText* cipher){ int length = stringlen(cipher->text); char* text = malloc(sizeof(char)*(length + 1)); if(text == NULL){ return NULL; } for(i = 0; i < length; i++){ text[i] = cipher->text[i] - cipher->shift; } text[length] = 0; return text; }
/* Returns 0 if successful, error code on error. */ static int termioset(struct termios* termios, ptr_t termiorep, string cc) { memset(termios,0,sizeof(struct termios)); termios->c_iflag = termiorep[0]; termios->c_oflag = termiorep[1]; termios->c_cflag = termiorep[2]; termios->c_lflag = termiorep[3]; assert(stringlen(cc) == NCCS); memcpy(termios->c_cc, stringbuf(cc), NCCS); if(cfsetispeed(termios, termiorep[5]) == -1) return errno; if(cfsetospeed(termios, termiorep[6]) == -1) return errno; return 0; }
//coding function 'cipher' //input... ("HELLO WORLD", 3, &a) //output... &a->text: KHOOR#ZRUOG int cipher(const char* plain_text, int shift, CipherText* ioCipher){ ioCipher->shift = shift; int length = stringlen(plain_text); if(ioCipher->text != NULL){ free(ioCipher->text); } ioCipher->text = malloc(sizeof(char)*(length+1)); if(ioCipher->text == NULL){ return 0; } for(i = 0; i < length; i++){ ioCipher->text[i] = plain_text[i] + ioCipher->shift; } ioCipher->text[length] = 0; return 1; }
int main (int argc, char *argv[]) { int arg, ct, ne, ns, **table, e, s, t; fsa testfsa, copyfsa; char inf[100],outf[100],fsaname[100]; boolean all_accepting=FALSE; boolean all_initial = FALSE; boolean deleting, deleting_s; storage_type ip_store = DENSE; boolean op_format_set = FALSE; storage_type op_format = DENSE; setbuf(stdout,(char*)0); setbuf(stderr,(char*)0); inf[0] = '\0'; arg = 1; while (argc > arg) { if (strcmp(argv[arg],"-ip")==0) { arg++; if (arg >= argc) badusage(); if (strcmp(argv[arg],"d")==0) ip_store = DENSE; else if (argv[arg][0] == 's') ip_store = SPARSE; else badusage(); } else if (strcmp(argv[arg],"-op")==0) { arg++; op_format_set=TRUE; if (arg >= argc) badusage(); if (strcmp(argv[arg],"d")==0) op_format = DENSE; else if (strcmp(argv[arg],"s")==0) op_format = SPARSE; else badusage(); } else if (strcmp(argv[arg],"-a")==0) all_accepting = TRUE; else if (strcmp(argv[arg],"-i")==0) all_initial = TRUE; else if (strcmp(argv[arg],"-silent")==0) kbm_print_level = 0; else if (strcmp(argv[arg],"-v")==0) kbm_print_level = 2; else if (strcmp(argv[arg],"-vv")==0) kbm_print_level = 3; else { if (argv[arg][0] == '-') badusage(); if (strcmp(inf,"")) badusage(); strcpy(inf,argv[arg]); } arg++; } if (stringlen(inf)!=0) { strcpy(outf,inf); if (all_initial) strcat(outf,".iprune"); else strcat(outf,".prune"); if ((rfile = fopen(inf,"r")) == 0) { fprintf(stderr,"Cannot open file %s.\n",inf); exit(1); } } else rfile = stdin; fsa_read(rfile,&testfsa,ip_store,0,0,TRUE,fsaname); if (stringlen(inf)) fclose(rfile); ns = testfsa.states->size; ne = testfsa.alphabet->size; if (all_accepting) { tfree(testfsa.accepting); testfsa.num_accepting = ns; } all_accepting = testfsa.num_accepting == ns; /* The state deletions may destroy various properties of the automata */ testfsa.flags[MINIMIZED]=FALSE; testfsa.flags[BFS]=FALSE; testfsa.flags[ACCESSIBLE]=FALSE; testfsa.flags[TRIM]=FALSE; if (all_initial) { table = testfsa.table->table_data_ptr; deleting=TRUE; while (deleting) { deleting=FALSE; for (s=1;s<=ns;s++) { /* if no transitions to state s delete it! */ deleting_s=TRUE; for (e=1;e<=ne;e++) { if (!deleting_s) break; for (t=1;t<=ns;t++) { if (target(ip_store==DENSE,table,e,t,0)==s){ deleting_s=FALSE; break; } } } if (deleting_s) { deleting=TRUE; if (kbm_print_level>1) printf(" #Deleting state number %d\n",s); fsa_delete_state(&testfsa,s); ns--; } } } } else if (all_accepting) { table = testfsa.table->table_data_ptr; deleting=TRUE; while (deleting) { deleting=FALSE; for (s=ns;s>0;s--) { /* if no transitions from state s delete it! */ deleting_s=TRUE; for (e=1;e<=ne;e++) if (target(ip_store==DENSE,table,e,s,0)!=0){ deleting_s=FALSE; break; } if (deleting_s) { deleting=TRUE; if (kbm_print_level>1) printf(" #Deleting state number %d\n",s); fsa_delete_state(&testfsa,s); ns--; } } } } else { for (s=ns;s>=1;s--) { if (kbm_print_level>1 && s%100==0) printf(" #state=%d\n",s); fsa_copy(©fsa,&testfsa); /* necessary because fsa_count alters its argument */ copyfsa.initial[1]=s; ct = fsa_count(©fsa); if (ct==-1) exit(1); if (ct!=-2) { if (kbm_print_level>1) printf(" #Deleting state number %d\n",s); fsa_delete_state(&testfsa,s); } fsa_clear(©fsa); } } if (op_format_set) testfsa.table->printing_format = op_format; strcat(fsaname,"_prune"); if (stringlen(inf)!=0) wfile = fopen(outf,"w"); else wfile = stdout; if (all_initial) { tfree(testfsa.initial); testfsa.num_initial=testfsa.states->size; testfsa.flags[DFA]=FALSE; testfsa.flags[MIDFA]=TRUE; } fsa_print(wfile,&testfsa,fsaname); if (stringlen(inf)!=0) fclose(wfile); if (wfile!=stdout && kbm_print_level>0) printf("#Pruned fsa with %d states computed.\n",testfsa.states->size); fsa_clear(&testfsa); exit(0); }
int main (int argc, char *argv[]) { int arg; fsa fsain, *fsastarnd, *fsastar; char inf[100], outf[100], fsaname[100], tempfilename[100]; storage_type ip_store = DENSE; int dr = 0; storage_type op_store = DENSE; setbuf(stdout,(char*)0); setbuf(stderr,(char*)0); inf[0] = '\0'; arg = 1; while (argc > arg) { if (strcmp(argv[arg],"-ip")==0) { arg++; if (arg >= argc) badusage_fsastar(); if (strcmp(argv[arg],"d")==0) ip_store = DENSE; else if (argv[arg][0] == 's') { ip_store = SPARSE; if (stringlen(argv[arg]) > 1) dr = atoi(argv[arg]+1); } else badusage_fsastar(); } else if (strcmp(argv[arg],"-op")==0) { arg++; if (arg >= argc) badusage_fsastar(); if (strcmp(argv[arg],"d")==0) op_store = DENSE; else if (strcmp(argv[arg],"s")==0) op_store = SPARSE; else badusage_fsastar(); } else if (strcmp(argv[arg],"-silent")==0) kbm_print_level = 0; else if (strcmp(argv[arg],"-v")==0) kbm_print_level = 2; else if (strcmp(argv[arg],"-vv")==0) kbm_print_level = 3; else { if (argv[arg][0] == '-') badusage_fsastar(); if (strcmp(inf,"")) badusage_fsastar(); strcpy(inf,argv[arg]); } arg++; } if (stringlen(inf)==0) badusage_fsastar(); strcpy(outf,inf); strcat(outf,".star"); if ((rfile = fopen(inf,"r")) == 0) { fprintf(stderr,"Cannot open file %s.\n",inf); exit(1); } fsa_read(rfile,&fsain,ip_store,dr,0,TRUE,fsaname); fclose(rfile); fsastarnd = fsa_star(&fsain,TRUE); if (fsastarnd==0) exit(1); if (fsastarnd->flags[NFA]){ strcpy(tempfilename,inf); strcat(tempfilename,"temp_mid_XXX"); if (kbm_print_level>1) printf(" #Number of states of fsastar before determinimization = %d.\n", fsastarnd->states->size); fsastar = nfa_determinize(fsastarnd,op_store,TRUE,TRUE,FALSE,tempfilename); if (fsastar==0) exit(1); tfree(fsastarnd); } else { fsastar = fsastarnd; fsastar->table->printing_format = op_store; } if (kbm_print_level>1) printf(" #Number of states of fsastar before minimization = %d.\n", fsastar->states->size); if (fsa_minimize(fsastar)== -1) exit(1); if (kbm_print_level>1) printf(" #Number of states of fsastar after minimization = %d.\n", fsastar->states->size); strcat(fsaname,"_star"); wfile = fopen(outf,"w"); fsa_print(wfile,fsastar,fsaname); fclose(wfile); if (kbm_print_level>0) printf( "#\"Starred\" fsa with %d states computed.\n",fsastar->states->size); fsa_clear(fsastar); tfree(fsastar); exit(0); }
int main (int argc, char *argv[]) { int arg; fsa fsain, *midfadeterminize; char inf[100], outf[100], fsaname[100], tempfilename[100]; storage_type ip_store = DENSE; int dr = 0; storage_type op_store = DENSE; setbuf(stdout,(char*)0); setbuf(stderr,(char*)0); inf[0] = '\0'; outf[0] = '\0'; arg = 1; while (argc > arg) { if (strcmp(argv[arg],"-ip")==0) { arg++; if (arg >= argc) badusage_midfadeterminize(); if (strcmp(argv[arg],"d")==0) ip_store = DENSE; else if (argv[arg][0] == 's') { ip_store = SPARSE; if (stringlen(argv[arg]) > 1) dr = atoi(argv[arg]+1); } else badusage_midfadeterminize(); } else if (strcmp(argv[arg],"-op")==0) { arg++; if (arg >= argc) badusage_midfadeterminize(); if (strcmp(argv[arg],"d")==0) op_store = DENSE; else if (strcmp(argv[arg],"s")==0) op_store = SPARSE; else badusage_midfadeterminize(); } else if (strcmp(argv[arg],"-silent")==0) kbm_print_level = 0; else if (strcmp(argv[arg],"-v")==0) kbm_print_level = 2; else if (strcmp(argv[arg],"-vv")==0) kbm_print_level = 3; else if (strcmp(argv[arg],"-l")==0) kbm_large = TRUE; else if (strcmp(argv[arg],"-h")==0) kbm_huge = TRUE; else { if (argv[arg][0] == '-') badusage_midfadeterminize(); if (strcmp(inf,"")) badusage_midfadeterminize(); strcpy(inf,argv[arg]); } arg++; } if (stringlen(inf)!=0) { strcpy(outf,inf); strcat(outf,".midfadeterminize"); if ((rfile = fopen(inf,"r")) == 0) { fprintf(stderr,"Cannot open file %s.\n",inf); exit(1); } } else rfile = stdin; fsa_read(rfile,&fsain,ip_store,dr,0,TRUE,fsaname); if (stringlen(inf)!=0) fclose(rfile); strcpy(tempfilename,inf); strcat(tempfilename,"temp_mid_XXX"); midfadeterminize = midfa_determinize(&fsain,op_store,TRUE,tempfilename); if (midfadeterminize==0) exit(1); fsa_clear(&fsain); if (kbm_print_level>1) printf(" #Number of states of midfadeterminize before minimisation = %d.\n", midfadeterminize->states->size); if (fsa_minimize(midfadeterminize)== -1) exit(1); if (kbm_print_level>1) printf(" #Number of states of midfadeterminize after minimisation = %d.\n", midfadeterminize->states->size); strcat(fsaname,"_midfadeterminize"); if (stringlen(inf)!=0) wfile = fopen(outf,"w"); else wfile=stdout; fsa_print(wfile,midfadeterminize,fsaname); if (stringlen(inf)!=0) fclose(wfile); if (kbm_print_level>0) printf("#\"Determinized\" fsa with %d states computed.\n", midfadeterminize->states->size); fsa_clear(midfadeterminize); tfree(midfadeterminize); exit(0); }
int main (int argc, char *argv[]) { int arg; fsa fsain, *fsadeterminize; char inf[100], outf[100], fsaname[100], tempfilename[100]; storage_type ip_store = SPARSE; int dr = 0; /* cannot be changed */ storage_type op_store = DENSE; boolean subsets=FALSE; setbuf(stdout,(char*)0); setbuf(stderr,(char*)0); inf[0] = '\0'; outf[0] = '\0'; arg = 1; while (argc > arg) { if (strcmp(argv[arg],"-s")==0) subsets = TRUE; else if (strcmp(argv[arg],"-op")==0) { arg++; if (arg >= argc) badusage_nfadet(); if (strcmp(argv[arg],"d")==0) op_store = DENSE; else if (strcmp(argv[arg],"s")==0) op_store = SPARSE; else badusage_nfadet(); } else if (strcmp(argv[arg],"-silent")==0) kbm_print_level = 0; else if (strcmp(argv[arg],"-v")==0) kbm_print_level = 2; else if (strcmp(argv[arg],"-vv")==0) kbm_print_level = 3; else if (strcmp(argv[arg],"-l")==0) kbm_large = TRUE; else if (strcmp(argv[arg],"-h")==0) kbm_huge = TRUE; else { if (argv[arg][0] == '-') badusage_nfadet(); if (strcmp(inf,"")) badusage_nfadet(); strcpy(inf,argv[arg]); } arg++; } if (stringlen(inf)!=0) { strcpy(outf,inf); strcat(outf,".determinize"); if ((rfile = fopen(inf,"r")) == 0) { fprintf(stderr,"Cannot open file %s.\n",inf); exit(1); } } else rfile = stdin; fsa_read(rfile,&fsain,ip_store,dr,0,TRUE,fsaname); if (stringlen(inf)!=0) fclose(rfile); if (fsain.flags[DFA]) { if (kbm_print_level > 0) printf("#Note: Input fsa is already deterministic!\n"); tmalloc(fsadeterminize,fsa,1); fsa_init(fsadeterminize); fsa_copy(fsadeterminize,&fsain); } else { strcpy(tempfilename,inf); strcat(tempfilename,"temp_mid_XXX"); fsadeterminize = nfa_determinize(&fsain,op_store,TRUE,TRUE,subsets,tempfilename); } fsa_clear(&fsain); if (subsets) { if (kbm_print_level>1) printf(" #Number of states of fsadeterminize = %d.\n", fsadeterminize->states->size); } else { if (kbm_print_level>1) printf(" #Number of states of fsadeterminize before minimisation = %d.\n", fsadeterminize->states->size); fsa_minimize(fsadeterminize); if (kbm_print_level>1) printf(" #Number of states of fsadeterminize after minimisation = %d.\n", fsadeterminize->states->size) ; } strcat(fsaname,"_determinize"); if (stringlen(inf)!=0) wfile = fopen(outf,"w"); else wfile=stdout; fsa_print(wfile,fsadeterminize,fsaname); if (wfile!=stdout && kbm_print_level>0) printf("#\"Determinized\" fsa with %d states computed.\n", fsadeterminize->states->size); if (stringlen(inf)!=0) fclose(wfile); fsa_clear(fsadeterminize); tfree(fsadeterminize); exit(0); }
int main (int argc, char *argv[]) { int arg, i, g1, g2; fsa migenmult, *migm2ptr; char gpname[100], inf[100], outf[100], fsaname[100], tablefilename[100], prefix[16]; storage_type ip_store = DENSE; int dr = 0; storage_type op_store = SPARSE; boolean readback = TRUE; boolean seengpname, seencosname; setbuf(stdout,(char*)0); setbuf(stderr,(char*)0); strcpy(prefix,"_x"); arg = 1; seengpname=seencosname=FALSE; while (argc > arg) { if (strcmp(argv[arg],"-ip")==0) { arg++; if (arg >= argc) badusage_gpmigenmult2(); if (strcmp(argv[arg],"d")==0) ip_store = DENSE; else if (argv[arg][0] == 's') { ip_store = SPARSE; if (stringlen(argv[arg]) > 1) dr = atoi(argv[arg]+1); } else badusage_gpmigenmult2(); } else if (strcmp(argv[arg],"-op")==0) { arg++; if (arg >= argc) badusage_gpmigenmult2(); if (strcmp(argv[arg],"d")==0) op_store = DENSE; else if (strcmp(argv[arg],"s")==0) op_store = SPARSE; else badusage_gpmigenmult2(); } else if (strcmp(argv[arg],"-silent")==0) kbm_print_level = 0; else if (strcmp(argv[arg],"-v")==0) kbm_print_level = 2; else if (strcmp(argv[arg],"-vv")==0) kbm_print_level = 3; else if (strcmp(argv[arg],"-l")==0) kbm_large = TRUE; else if (strcmp(argv[arg],"-h")==0) kbm_huge = TRUE; else if (strcmp(argv[arg],"-pref")==0) { arg++; if (arg >= argc) badusage_gpmigenmult2(); strcpy(prefix,argv[arg]); } else if (strcmp(argv[arg],"-f")==0){ readback = FALSE; fprintf(stderr,"Sorry - readback option not yet available.\n"); exit(1); } else if (argv[arg][0] == '-') badusage_gpmigenmult2(); else if (!seengpname) { seengpname=TRUE; strcpy(gpname,argv[arg]); } else if (!seencosname) { seencosname=TRUE; sprintf(inf,"%s.%s",gpname,argv[arg]); } else badusage_gpmigenmult2(); arg++; } if (!seengpname) badusage_gpmigenmult2(); if (!seencosname) sprintf(inf,"%s.cos",gpname); strcpy(tablefilename,inf); strcat(tablefilename,".migm2_ut"); strcpy(outf,inf); strcat(outf,".migm2"); strcat(inf,".migm"); if ((rfile = fopen(inf,"r")) == 0) { fprintf(stderr,"Cannot open file %s.\n",inf); exit(1); } fsa_read(rfile,&migenmult,ip_store,dr,0,TRUE,fsaname); fclose(rfile); migm2ptr = fsa_migm2(&migenmult,op_store,TRUE,tablefilename,readback,prefix); if (migm2ptr==0) exit(1); if (kbm_print_level>1) printf(" #Number of states of migenmult2 = %d.\n",migm2ptr->states->size); if (readback){ if (midfa_labeled_minimize(migm2ptr)==-1) exit(1); } if (kbm_print_level>1) printf(" #Number of states of migenmult2 after minimization = %d.\n", migm2ptr->states->size); base_prefix(fsaname); strcat(fsaname,".gm2"); wfile = fopen(outf,"w"); fsa_print(wfile,migm2ptr,fsaname); fclose(wfile); if (kbm_print_level>0) printf("#Generalised length-2 multiplier with %d states computed.\n", migm2ptr->states->size); fsa_clear(migm2ptr); tfree(migm2ptr); exit(0); }
int main (int argc, char *argv[]) { int arg, min, max, i, rv; fsa testfsa; char inf[100], outf[100], fsaname[100], primestr[100], var[100] = "X"; unsigned primes[100] = { 32749, 32719, 32717, 0}, nprimes = 3; storage_type ip_store = DENSE; boolean consistent; setbuf(stdout,(char*)0); setbuf(stderr,(char*)0); inf[0] = '\0'; arg = 1; while (argc > arg) { if (strcmp(argv[arg],"-ip")==0) { arg++; if (arg >= argc) badusage_fsagrowth(); if (strcmp(argv[arg],"d")==0) ip_store = DENSE; else if (argv[arg][0] == 's') ip_store = SPARSE; else badusage_fsagrowth(); } else if (strcmp(argv[arg],"-var")==0) { arg++; if (arg >= argc) badusage_fsagrowth(); strcpy(var, argv[arg]); } else if (strcmp(argv[arg],"-v")==0) kbm_print_level = 2; else if (strcmp(argv[arg],"-primes")==0) { char *pptr, *p; arg++; if (arg >= argc) badusage_fsagrowth(); nprimes = 0; strcpy(primestr,argv[arg]); strcat(primestr,","); for (pptr = p = primestr; *p; p++) if (*p < '0' || *p > '9') { *p = 0; if (p-pptr >= 1) primes[nprimes++] = atoi(pptr); pptr = p+1; } if (nprimes == 0) badusage_fsagrowth(); } else { if (argv[arg][0] == '-') badusage_fsagrowth(); strcpy(inf,argv[arg]); } arg++; } if (stringlen(inf)!=0) { strcpy(outf,inf); strcat(outf,".growth"); if ((rfile = fopen(inf,"r")) == 0) { fprintf(stderr,"Cannot open file %s.\n",inf); exit(1); } } else rfile = stdin; fsa_read(rfile,&testfsa,ip_store,0,0,TRUE,fsaname); if (stringlen(inf)!=0) { fclose(rfile); wfile = fopen(outf,"w"); } else wfile=stdout; fprintf(wfile,"local X; X:=Indeterminate(Rationals,1); return\n\n"); kbm_buffer[0]='\0'; primes[nprimes] = 0; rv=fsa_growth(wfile,&testfsa,primes,var); if (rv== -1) exit(1); consistent= (boolean)rv; if (stringlen(inf)!=0) fclose(wfile); fsa_clear(&testfsa); if (!consistent) { fprintf(stderr, "WARNING: The polynomials modulo the primes chosen were not consistent.\n"); fprintf(stderr, " so the integral coefficients output are unlikely to be correct.\n"); exit(2); } exit(0); }
int main (int argc, char *argv[]) { int arg, min, max, i, n, rv; fsa testfsa; char inf[100], outf[100], fsaname[100]; storage_type ip_store = DENSE; int stateno=0; boolean labels=FALSE; boolean bfs, minset, maxset, putcomma; setbuf(stdout,(char*)0); setbuf(stderr,(char*)0); minset = maxset = FALSE; bfs = FALSE; inf[0] = '\0'; arg = 1; n = 0; while (argc > arg) { if (strcmp(argv[arg], "-is") == 0) { arg++; if (arg >= argc) badusage_fsaenumerate(); n = atoi(argv[arg]); } else if (strcmp(argv[arg],"-ip")==0) { arg++; if (arg >= argc) badusage_fsaenumerate(); if (strcmp(argv[arg],"d")==0) ip_store = DENSE; else if (argv[arg][0] == 's') ip_store = SPARSE; else badusage_fsaenumerate(); } else if (strcmp(argv[arg],"-dfs")==0) bfs = FALSE; else if (strcmp(argv[arg],"-bfs")==0) bfs = TRUE; else if (strcmp(argv[arg],"-l")==0) labels = TRUE; else if (strcmp(argv[arg],"-s")==0) stateno = 1; else { if (argv[arg][0] == '-') badusage_fsaenumerate(); if (strcmp(inf,"")) badusage_fsaenumerate(); if (!minset) { if (!is_int(argv[arg])) badusage_fsaenumerate(); min = atoi(argv[arg]); minset = TRUE; } else if (!maxset) { if (!is_int(argv[arg])) badusage_fsaenumerate(); max = atoi(argv[arg]); maxset = TRUE; } else strcpy(inf,argv[arg]); } arg++; } if (stringlen(inf)==0) rfile=stdin; else { strcpy(outf,inf); strcat(outf,".enumerate"); if ((rfile = fopen(inf,"r")) == 0) { fprintf(stderr,"Cannot open file %s.\n",inf); exit(1); } } fsa_read(rfile,&testfsa,ip_store,0,0,TRUE,fsaname); if (stringlen(inf)) fclose(rfile); strcat(fsaname,".words"); if (labels && stateno) { fprintf(stderr,"Error: cannot use -s and -l together.\n"); exit(1); } if (labels) stateno=2; if (n>testfsa.states->size) { fprintf(stderr,"Error: specified initial state is too large.\n"); exit(1); } if (n>0 && testfsa.num_initial>0) { testfsa.initial[1]=n; /* This may destroy various properties of the automata */ testfsa.flags[MINIMIZED]=FALSE; testfsa.flags[BFS]=FALSE; testfsa.flags[ACCESSIBLE]=FALSE; testfsa.flags[TRIM]=FALSE; } if (stringlen(inf)) wfile = fopen(outf,"w"); else wfile=stdout; fprintf(wfile,"%s := [\n",fsaname); putcomma = FALSE; if (bfs) { for (i=min;i<=max;i++) { rv = fsa_enumerate(wfile,&testfsa,i,i,putcomma,stateno); if (rv== -1) exit(1); putcomma = (boolean)rv || putcomma; } } else { rv = fsa_enumerate(wfile,&testfsa,min,max,putcomma,stateno); if (rv== -1) exit(1); } fprintf(wfile,"\n];\n"); if (stringlen(inf)) fclose(wfile); fsa_clear(&testfsa); exit(0); }
int main (int argc, char *argv[]) { int arg, i, g1, g2; fsa mult1, mult2, *micompmult; char inf1[100], inf2[100], outf[100], fsaname[100], tempfilename[100], *inf2ptr; storage_type ip_store = DENSE; int dr = 0; storage_type op_store = SPARSE; boolean readback = TRUE; setbuf(stdout,(char*)0); setbuf(stderr,(char*)0); inf1[0] = '\0'; inf2[0] = '\0'; outf[0] = '\0'; arg = 1; while (argc > arg) { if (strcmp(argv[arg],"-ip")==0) { arg++; if (arg >= argc) badusage_gpmicomp(); if (strcmp(argv[arg],"d")==0) ip_store = DENSE; else if (argv[arg][0] == 's') { ip_store = SPARSE; if (stringlen(argv[arg]) > 1) dr = atoi(argv[arg]+1); } else badusage_gpmicomp(); } else if (strcmp(argv[arg],"-op")==0) { arg++; if (arg >= argc) badusage_gpmicomp(); if (strcmp(argv[arg],"d")==0) op_store = DENSE; else if (strcmp(argv[arg],"s")==0) op_store = SPARSE; else badusage_gpmicomp(); } else if (strcmp(argv[arg],"-silent")==0) kbm_print_level = 0; else if (strcmp(argv[arg],"-v")==0) kbm_print_level = 2; else if (strcmp(argv[arg],"-vv")==0) kbm_print_level = 3; else if (strcmp(argv[arg],"-l")==0) kbm_large = TRUE; else if (strcmp(argv[arg],"-h")==0) kbm_huge = TRUE; else if (strcmp(argv[arg],"-f")==0) { readback = FALSE; fprintf(stderr,"Sorry - readback option not yet available.\n"); exit(1); } else { if (argv[arg][0] == '-') badusage_gpmicomp(); if (strcmp(outf,"")!=0) badusage_gpmicomp(); else if (strcmp(inf1,"")==0) strcpy(inf1,argv[arg]); else if (strcmp(inf2,"")==0) strcpy(inf2,argv[arg]); else strcpy(outf,argv[arg]); } arg++; } if (stringlen(inf1)==0 || stringlen(inf2)==0 || stringlen(outf)==0) badusage_gpmicomp(); strcpy(tempfilename,inf1); /* The next lines avoid a potential problem when "inf2" contains a '/' */ inf2ptr=inf2+strlen(inf2); while (--inf2ptr>=inf2) if (*inf2ptr=='/') break; inf2ptr++; strcat(tempfilename,inf2ptr); strcat(tempfilename,"_tempXXX"); if ((rfile = fopen(inf1,"r")) == 0) { fprintf(stderr,"Cannot open file %s.\n",inf1); exit(1); } fsa_read(rfile,&mult1,ip_store,dr,0,TRUE,fsaname); if ((rfile = fopen(inf2,"r")) == 0) { fprintf(stderr,"Cannot open file %s.\n",inf2); exit(1); } fsa_read(rfile,&mult2,ip_store,dr,0,TRUE,fsaname); fclose(rfile); micompmult = fsa_micomposite(&mult1,&mult2,op_store,TRUE,tempfilename,readback); if (micompmult==0) exit(1); if (kbm_print_level>1) printf(" #Number of states of composite before minimization = %d.\n", micompmult->states->size); if (readback) { if (mimult_minimize(micompmult)==-1) exit(1); } /* else fsa_ip_minimize(micompmult); */ if (kbm_print_level>1) printf(" #Number of states of composite after minimization = %d.\n", micompmult->states->size); base_prefix(fsaname); strcat(fsaname,".micomp"); wfile = fopen(outf,"w"); fsa_print(wfile,micompmult,fsaname); fclose(wfile); if (kbm_print_level>0) printf("#Composite multiplier with %d states computed.\n", micompmult->states->size); fsa_clear(micompmult); tfree(micompmult); exit(0); }
int main (int argc, char *argv[]) { int i, l, ct; boolean first; rewriting_system rws, *rwsptr; static char gpname[100], outf[100]; setbuf(stdout,(char*)0); setbuf(stderr,(char*)0); rwsptr= &rws; rwsptr->maxeqns = MAXEQNS; rwsptr->maxreducelen = MAXREDUCELEN; rwsptr->cosets=FALSE; rwsptr->inv_of=0; rwsptr->weight=0;rwsptr->level=0;rwsptr->history=0; rwsptr->slowhistory=0;rwsptr->slowhistorysp=0; rwsptr->preflen=0;rwsptr->prefno=0; if (argc!=2) badusage_ppgap(); strcpy(gpname,argv[1]); strcpy(outf,gpname); strcat(outf,".gap"); /* First read in the defining relations for the group. */ if ((rfile = fopen(gpname,"r")) == 0) { fprintf(stderr,"Cannot open file %s.\n",gpname); exit(1); } read_kbinput_simple(rfile,TRUE,rwsptr); fclose(rfile); wfile = fopen(outf,"w"); kbm_buffer[0]='\0'; add_to_buffer(0,"_RWS.gpMon := FreeGroup("); first = TRUE; if (rws.num_gens==0) add_to_buffer(0,"0"); else for (i=1;i<=rws.num_gens;i++){ l = stringlen(rws.gen_name[i]); if (l<=3 || strcmp(rws.gen_name[i]+l-3,"^-1")) { if (!first) add_to_buffer(0,","); first = FALSE; sprintf(kbm_buffer+stringlen(kbm_buffer),"\"%s\"",rws.gen_name[i]); } } add_to_buffer(0,");"); printbuffer(wfile); ct = 0; for (i=1;i<=rws.num_gens;i++) { l = stringlen(rws.gen_name[i]); if (l<=3 || strcmp(rws.gen_name[i]+l-3,"^-1")) { ct++; fprintf(wfile,"%s := _RWS.gpMon.%d;\n",rws.gen_name[i],ct); } } fprintf(wfile,"_ := IdWord;\n"); fclose(wfile); rws_clear(rwsptr); exit(0); }
int main (int argc, char *argv[]) { int arg, i, ct, *inv, old_ndiff, maxneweqns, numeqns, ngens, maxwdiffs; fsa diff2, genmult; char gpname[100], cosgpname[100], inf1[100], inf2[100], inf3[100], outf[100], outfwg[100], outfec[100], fsaname[100]; fsa *wd_fsa; /* This is for doing word-reductions in the case that we * correct the diff2 machine */ fsa wa; /* The word-acceptor in the wtlex case */ int weight[MAXGEN+1]; /* The weights of the generators in the wtlex case */ gen testword[MAXREDUCELEN]; /* for word reduction */ char **names; /* generator names in case we need to output words */ reduction_equation *eqnptr; reduction_struct rs_wd; storage_type ip_store = DENSE; int dr = 0; boolean seengpname, seencosname; boolean cosets=FALSE; boolean wtlex=FALSE; rewriting_system rws; boolean outputwords = FALSE; int separator=0; setbuf(stdout,(char*)0); setbuf(stderr,(char*)0); rws.maxeqns = MAXRWSEQNS; maxneweqns = MAXNEWEQNS; maxwdiffs = MAXWDIFFS; inf1[0] = '\0'; inf2[0] = '\0'; outf[0] = '\0'; arg = 1; seengpname=seencosname=FALSE; while (argc > arg) { if (strcmp(argv[arg],"-ip")==0) { arg++; if (arg >= argc) badusage_gpcheckmult(); if (strcmp(argv[arg],"d")==0) ip_store = DENSE; else if (argv[arg][0] == 's') { ip_store = SPARSE; if (stringlen(argv[arg]) > 1) dr = atoi(argv[arg]+1); } else badusage_gpcheckmult(); } else if (strcmp(argv[arg],"-silent")==0) kbm_print_level = 0; else if (strcmp(argv[arg],"-v")==0) kbm_print_level = 2; else if (strcmp(argv[arg],"-vv")==0) kbm_print_level = 3; else if (strcmp(argv[arg],"-l")==0) kbm_large = TRUE; else if (strcmp(argv[arg],"-h")==0) kbm_huge = TRUE; else if (strcmp(argv[arg],"-ow")==0) outputwords = TRUE; else if (strncmp(argv[arg],"-cos",4)==0) cosets = TRUE; else if (strcmp(argv[arg],"-m")==0) { arg++; if (arg >= argc) badusage_gpcheckmult(); maxneweqns = atoi(argv[arg]); } else if (strcmp(argv[arg],"-mwd")==0) { arg++; if (arg >= argc) badusage_gpcheckmult(); maxwdiffs = atoi(argv[arg]); } else if (strcmp(argv[arg],"-wtlex")==0) wtlex = TRUE; else if (argv[arg][0] == '-') badusage_gpcheckmult(); else if (!seengpname) { seengpname=TRUE; strcpy(gpname,argv[arg]); } else if (!seencosname) { seencosname=TRUE; sprintf(cosgpname,"%s.%s",gpname,argv[arg]); } else badusage_gpcheckmult(); arg++; } if (!seengpname) badusage_gpcheckmult(); if (cosets && wtlex) { fprintf(stderr, "Sorry: -cos and -wtlex options cannot be used together.\n"); badusage_gpcheckmult(); } if (cosets && !seencosname) sprintf(cosgpname,"%s.cos",gpname); if (cosets) strcpy(inf1,cosgpname); else strcpy(inf1,gpname); strcpy(inf2,inf1); strcat(inf1,".gm"); if (cosets) sprintf(outfec,"%s.cm.ec",cosgpname); else sprintf(outfec,"%s.cm.ec",gpname); if ((rfile = fopen(inf1,"r")) == 0) { fprintf(stderr,"Cannot open file %s.\n",inf1); exit(1); } fsa_read(rfile,&genmult,ip_store,dr,0,TRUE,fsaname); fclose(rfile); tmalloc(eqnptr,reduction_equation,maxneweqns) if (cosets) separator=rs_wd.separator=genmult.alphabet->base->size+1; if ((numeqns = fsa_checkmult(&genmult,eqnptr,maxneweqns,cosets,separator)) > 0) { /* A multiplier was not valid, so groupname.(mi)diff2 will need updating. */ if (outputwords) { /* We do not update gpname.diff2, but output the offending words. */ if (cosets) strcpy(outfwg,cosgpname); else strcpy(outfwg,gpname); strcat(outfwg,".wg"); wfile=fopen(outfwg,"w"); base_prefix(fsaname); fprintf(wfile,"%s.wg := [\n",fsaname); names=genmult.alphabet->base->names; for (i=0;i<numeqns;i++) { strcpy(kbm_buffer," ["); if (cosets) add_word_to_buffer(wfile,eqnptr[i].lhs+1,names); else add_word_to_buffer(wfile,eqnptr[i].lhs,names); strcat(kbm_buffer,","); add_word_to_buffer(wfile,eqnptr[i].rhs,names); if (i<numeqns-1) strcat(kbm_buffer,"],"); else strcat(kbm_buffer,"]"); fprintf(wfile,"%s\n",kbm_buffer); } fprintf(wfile,"];\n"); fclose(wfile); fsa_clear(&genmult); for (i=0;i<numeqns;i++) { tfree(eqnptr[i].lhs); tfree(eqnptr[i].rhs); } tfree(eqnptr); wfile=fopen(outfec,"w"); fprintf(wfile,"_ExitCode := 2;\n"); fclose(wfile); exit(2); } fsa_clear(&genmult); if (cosets) strcat(inf2,".midiff2"); else strcat(inf2,".diff2"); strcpy(outf,inf2); if (kbm_print_level>1) printf(" #Altering wd-machine to make it accept new equations.\n"); if ((rfile = fopen(inf2,"r")) == 0) { fprintf(stderr,"Cannot open file %s.\n",inf2); exit(1); } /* We read groupname.(mi)diff2 into diff2, and then copy it into * wd_fsa. The copy is used for reducing words - Not surprisingly, * we get problems if we try to alter it while using it at * the same time! */ fsa_read(rfile,&diff2,DENSE,0,maxwdiffs,TRUE,fsaname); fclose(rfile); tmalloc(wd_fsa,fsa,1); fsa_copy(wd_fsa,&diff2); if (wtlex) { /* we have to read in the weights from the group file */ if ((rfile = fopen(gpname,"r")) == 0) { fprintf(stderr,"Cannot open file %s.\n",gpname); exit(1); } read_kbinput_simple(rfile,TRUE,&rws); fclose(rfile); /* we only need the weights, which we can simply copy */ for (i=1;i<=rws.num_gens;i++) weight[i] = rws.weight[i]; weight[rws.num_gens+1]=0; /* padding symbol */ rws_clear(&rws); strcpy(inf3,gpname); strcat(inf3,".wa"); if ((rfile = fopen(inf3,"r")) == 0) { fprintf(stderr,"Cannot open file %s.\n",inf3); exit(1); } fsa_read(rfile,&wa,DENSE,0,0,TRUE,fsaname); fclose(rfile); } rs_wd.wd_fsa = wd_fsa; reduce_word = cosets ? diff_reduce_cos : wtlex ? diff_reduce_wl : diff_reduce; if (fsa_table_dptr_init(wd_fsa)==-1) return -1; if (fsa_table_dptr_init(&diff2)== -1) return -1; if (cosets){ tmalloc(diff2.is_initial,boolean,maxwdiffs+1); for (i=1;i<=maxwdiffs;i++) diff2.is_initial[i]=FALSE; for (i=1;i<=diff2.num_initial;i++) diff2.is_initial[diff2.initial[i]]=TRUE; } else if (wtlex){ rs_wd.wa = &wa; rs_wd.weight = weight; rs_wd.maxreducelen = MAXREDUCELEN; } /* We need to know the inverses of generators - let's just work them out! */ ngens = diff2.alphabet->base->size; if (calculate_inverses(&inv,ngens,&rs_wd)==-1) return -1; old_ndiff = diff2.states->size; /* Now add the new equations * The right hand side of the equation to be added will be the reduction of * the lhs times the generator which is currently in the rhs. */ for (i=0;i<numeqns;i++) { genstrcat(eqnptr[i].lhs,eqnptr[i].rhs); tfree(eqnptr[i].rhs); genstrcpy(testword,eqnptr[i].lhs); reduce_word(testword,&rs_wd); tmalloc(eqnptr[i].rhs,gen,genstrlen(testword)+1); genstrcpy(eqnptr[i].rhs,testword); if (cosets) { if (add_wd_fsa_cos(&diff2,eqnptr+i,inv,TRUE,&rs_wd)== -1) exit(1); } else if (add_wd_fsa(&diff2,eqnptr+i,inv,TRUE,&rs_wd)== -1) exit(1); } if (cosets) { tfree(diff2.initial); tmalloc(diff2.initial,int,diff2.num_initial+1); ct=0; for (i=1;i<=diff2.states->size;i++) if (diff2.is_initial[i]) diff2.initial[++ct]=i; tfree(diff2.is_initial); make_full_wd_fsa_cos(&diff2,inv,old_ndiff+1,&rs_wd); } else make_full_wd_fsa(&diff2,inv,old_ndiff+1,&rs_wd); if (kbm_print_level>1) printf(" #Word-difference machine now has %d states.\n", diff2.states->size); wfile = fopen(inf2,"w"); fsa_print(wfile,&diff2,fsaname); fclose(wfile); tfree(inv); fsa_clear(wd_fsa); fsa_clear(&diff2); tfree(wd_fsa); if (wtlex) fsa_clear(&wa); for (i=0;i<numeqns;i++) { tfree(eqnptr[i].lhs); tfree(eqnptr[i].rhs); } tfree(eqnptr); wfile=fopen(outfec,"w"); fprintf(wfile,"_ExitCode := 2;\n"); fclose(wfile); exit(2); }
int main (int argc, char *argv[]) { int arg, i; fsa fsaip, *difflabsptr; char inf1[100], inf2[100], outf[100], fsaname[100], tempfilename[100]; reduction_struct rs_wd; storage_type op_store = SPARSE; boolean diff1_ip, diff1c_ip, diff2_ip; boolean readback = TRUE; setbuf(stdout,(char*)0); setbuf(stderr,(char*)0); inf1[0] = '\0'; inf2[0] = '\0'; arg = 1; diff1_ip = diff1c_ip = diff2_ip = FALSE; while (argc > arg) { if (strcmp(argv[arg],"-op")==0) { arg++; if (arg >= argc) badusage_gpdifflabs(); if (strcmp(argv[arg],"d")==0) op_store = DENSE; else if (strcmp(argv[arg],"s")==0) op_store = SPARSE; else badusage_gpdifflabs(); } else if (strcmp(argv[arg],"-silent")==0) kbm_print_level = 0; else if (strcmp(argv[arg],"-v")==0) kbm_print_level = 2; else if (strcmp(argv[arg],"-vv")==0) kbm_print_level = 3; else if (strcmp(argv[arg],"-l")==0) kbm_large = TRUE; else if (strcmp(argv[arg],"-h")==0) kbm_huge = TRUE; else if (strcmp(argv[arg],"-diff1")==0) diff1_ip = TRUE; else if (strcmp(argv[arg],"-diff2")==0) diff2_ip = TRUE; else if (strcmp(argv[arg],"-diff1c")==0) diff1c_ip = TRUE; else { if (argv[arg][0] == '-') badusage_gpdifflabs(); if (strcmp(inf2,"")==0) { strcpy(inf2,argv[arg]); } else { strcpy(inf1,inf2); strcat(inf1,"."); strcat(inf1,argv[arg]); } } arg++; } if (stringlen(inf1)==0) badusage_gpdifflabs(); strcpy(tempfilename,inf1); strcat(tempfilename,"temp_d_XXX"); if (diff1_ip) strcat(inf2,".diff1"); else if (diff1c_ip) strcat(inf2,".diff1c"); else strcat(inf2,".diff2"); strcpy(outf,inf1); strcat(outf,".difflabs"); /* First read word-difference machine for word-reduction */ if ((rfile = fopen(inf2,"r")) == 0) { fprintf(stderr,"Cannot open file %s.\n",inf2); exit(1); } tmalloc(rs_wd.wd_fsa,fsa,1); fsa_read(rfile,rs_wd.wd_fsa,DENSE,0,0,TRUE,fsaname); fclose(rfile); if (fsa_table_dptr_init(rs_wd.wd_fsa)==-1) exit(1); /* Now read main input fsa */ if ((rfile = fopen(inf1,"r")) == 0) { fprintf(stderr,"Cannot open file %s.\n",inf1); exit(1); } fsa_read(rfile,&fsaip,DENSE,0,0,TRUE,fsaname); fclose(rfile); difflabsptr = fsa_difflabs(&fsaip,&rs_wd,op_store,TRUE,tempfilename,readback); if (difflabsptr==0) exit(1); if (kbm_print_level>1) printf(" #Number of states of labeled machine before minimisation = %d.\n", difflabsptr->states->size); if (readback) { if (fsa_labeled_minimize(difflabsptr)== -1) exit(1); } else if (fsa_ip_labeled_minimize(difflabsptr)== -1) exit(1); if (kbm_print_level>1) printf(" #Number of states of labeled machine after minimisation = %d.\n", difflabsptr->states->size); base_prefix(fsaname); strcat(fsaname,".difflabs"); wfile = fopen(outf,"w"); fsa_print(wfile,difflabsptr,fsaname); fclose(wfile); if (kbm_print_level>0) printf("#Labeled word-difference machine with %d states computed.\n", difflabsptr->states->size); fsa_clear(difflabsptr); tfree(difflabsptr); tfree(rs_wd.wd_fsa); exit(0); }