示例#1
0
文件: msearch.c 项目: axelrod9/ladr
void mace4_exit(int exit_code)
{
  if (Opt && flag(Opt->verbose))
    p_mem();

  if (Opt && parm(Opt->report_stderr) > 0)
    fprintf(stderr, "Domain_size=%d. Models=%d. User_CPU=%.2f.\n",
	    Domain_size, Total_models, user_seconds());

  printf("\nUser_CPU=%.2f, System_CPU=%.2f, Wall_clock=%d.\n",
	 user_seconds(), system_seconds(), wallclock());

  if (Total_models == 0)
    printf("\nExiting with failure.\n");
  else
    printf("\nExiting with %d model%s.\n",
	    Total_models, Total_models == 1 ? "" : "s");

  fprintf(stderr, "\n------ process %d exit (%s) ------\n",
	  my_process_id(), exit_string(exit_code));
  printf("\nProcess %d exit (%s) %s",
	  my_process_id(), exit_string(exit_code), get_date());

  printf("The process finished %s", get_date());
  exit(exit_code);
}  /* mace4_exit */
void p_stats(void)
{
  print_separator(stdout, "STATISTICS", TRUE);

  printf("\nFor domain size %d.\n\n",Domain_size);

  printf("Current CPU time: %.2f seconds ", clock_seconds(Mace4_clock));
  printf("(total CPU time: %.2f seconds).\n",user_seconds());
  printf("Ground clauses: seen=%u, kept=%u.\n",
	 Mstats.ground_clauses_seen, Mstats.ground_clauses_kept);
  printf("Selections=%u, assignments=%u, propagations=%u, current_models=%u.\n",
	 Mstats.selections, Mstats.assignments, Mstats.propagations, Mstats.current_models);
  printf("Rewrite_terms=%u, rewrite_bools=%u, indexes=%u.\n",
	 Mstats.rewrite_terms, Mstats.rewrite_bools, Mstats.indexes);
  printf("Rules_from_neg_clauses=%u, cross_offs=%d.\n",
	 Mstats.rules_from_neg, Mstats.cross_offs);
#if 0
  printf("Negative propagation:\n");
  printf("                 attempts      agone      egone\n");
  printf("Neg_elim        %10u %10u %10u\n",
	 Mstats.neg_elim_attempts, Mstats.neg_elim_agone, Mstats.neg_elim_egone);
  printf("Neg_assign      %10u %10u %10u\n",
	 Mstats.neg_assign_attempts, Mstats.neg_assign_agone, Mstats.neg_assign_egone);
  printf("Neg_near_elim   %10u %10u %10u\n",
	 Mstats.neg_near_elim_attempts, Mstats.neg_near_elim_agone, Mstats.neg_near_elim_egone);
  printf("Neg_near_assign %10u %10u %10u\n",
	 Mstats.neg_near_assign_attempts, Mstats.neg_near_assign_agone, Mstats.neg_near_assign_egone);
#endif
  print_separator(stdout, "end of statistics", TRUE);
}  /* p_stats */
示例#3
0
文件: msearch.c 项目: axelrod9/ladr
static
int check_time_memory(void)
{
  static int Next_report;

  double seconds = user_seconds();
  int max_seconds = parm(Opt->max_seconds);
  int max_seconds_per = parm(Opt->max_seconds_per);
  int max_megs = parm(Opt->max_megs);
  int report = parm(Opt->report_stderr);

  if (max_seconds != -1 && seconds - Start_seconds > max_seconds)
    return SEARCH_MAX_TOTAL_SECONDS;
  else if (max_seconds_per != -1 &&
	   seconds - Start_domain_seconds > parm(Opt->max_seconds_per))
    return SEARCH_MAX_DOMAIN_SECONDS;
  else if (max_megs != -1 && mace_megs() > parm(Opt->max_megs))
    return SEARCH_MAX_MEGS;
  else {
    if (report > 0) {
      if (Next_report == 0)
	Next_report = parm(Opt->report_stderr);
      if (seconds >= Next_report) {
	fprintf(stderr, "Domain_size=%d. Models=%d. User_CPU=%.2f.\n", Domain_size, Total_models, seconds);
	fflush(stderr);
	while (seconds >= Next_report)
	  Next_report += report;
      }
    }
    return SEARCH_GO_NO_MODELS;
  }
}  /* check_time_memory */
void print_model_standard(FILE *fp, BOOL print_head)
{
  int syms_printed;
  Symbol_data s;

  if (print_head)
    print_separator(fp, "MODEL", TRUE);

  fprintf(fp, "\ninterpretation( %d, [number=%d, seconds=%d], [\n",
	  Domain_size, Total_models, (int) user_seconds());

  syms_printed = 0;

  for (s = Symbols; s != NULL; s = s->next) {
    if (s->attribute != EQUALITY_SYMBOL) {
      int i, n;
      if (syms_printed > 0)
	fprintf(fp, ",\n");

      fprintf(fp, "\n        %s(%s%s",
	      s->type == FUNCTION ? "function" : "relation",
	      sn_to_str(s->sn),
	      s->arity == 0 ? "" : "(_");
      for (i = 1; i < s->arity; i++)
	fprintf(fp, ",_");
      fprintf(fp,"%s, [%s",
	      s->arity == 0 ? "" : ")",
	      s->arity >= 2 ? "\n\t\t\t  " : "");
      n = int_power(Domain_size, s->arity);
      for (i = 0; i < n; i++) {
	int id = s->base + i;
	if (Cells[id].value == NULL)
	  fprintf(fp, "-");
	else
	  fprintf(fp, "%2d", VARNUM(Cells[id].value));
	if (i < n-1)
	  fprintf(fp, ",%s", (i+1) % Domain_size == 0 ? "\n\t\t\t  " : "");
	else
	  fprintf(fp, " ])");
      }
      syms_printed++;
    }
  }

  fprintf(fp, "\n]).\n");

  if (print_head)
    print_separator(fp, "end of model", TRUE);

}  /* print_model_standard */
void p_model(BOOL print_head)
{
  Symbol_data p;
  int n = Domain_size;

  if (print_head) {
    print_separator(stdout, "MODEL", TRUE);
    printf("\n%% Model %d at %.2f seconds.\n",
	   Total_models, user_seconds());
  }
  
  for (p = Symbols; p != NULL; p = p->next) {
    char *name = sn_to_str(p->sn);
    if (p->attribute != EQUALITY_SYMBOL) {
      /* This prints both relations and functions. */
      if (p->arity == 0) {
	int v = f0_val(p->base);
	if (v < 0)
	  printf("\n %s : -\n", name);
	else
	  printf("\n %s : %d\n", name, v);
      }
      else if (p->arity == 1) {
	char *s1 = n <= 10 ? "%2d" : "%3d";
	char *s2 = n <= 10 ? "--"  : "---";
	char *s3 = n <= 10 ? " -"  : "  -";
	int i;
	for (i = 0; i < n; i++) {
	  printf("\n %s :\n", name);
	  printf("       ");
	  for (i = 0; i < n; i++)
	    printf(s1, i);
	  printf("\n    ---");
	  for (i = 0; i < n; i++)
	    printf(s2);
	  printf("\n       ");
	  for (i = 0; i < n; i++) {
	    int v = f1_val(p->base, i);
	    if (v < 0)
	      printf(s3);
	    else
	      printf(s1, v);
	  }
	  printf("\n");	  
	}
      }
      else if (p->arity == 2) {
	char *s1 = n <= 10 ? "%2d" : "%3d";
	char *s2 = n <= 10 ? "--"  : "---";
	char *s3 = n <= 10 ? " -"  : "  -";
	int i, j;
	printf("\n %s :\n", name);
	printf("      |");
	for (i = 0; i < n; i++)
	  printf(s1, i);
	printf("\n    --+");
	for (i = 0; i < n; i++)
	  printf(s2);
	printf("\n");

	for (i = 0; i < n; i++) {
	  printf("%5d |", i);
	  for (j = 0; j < n; j++) {
	    int v = f2_val(p->base, i, j);
	    if (v < 0)
	      printf(s3);
	    else
	      printf(s1, v);
	  }
	  printf("\n");
	}
      }
      else {
	int n = int_power(Domain_size, p->arity);
	int i;
	Variable_style save_style = variable_style();
	set_variable_style(INTEGER_STYLE);
	for (i = 0; i < n; i++) {
	  int id = p->base + i;
	  fwrite_term(stdout, Cells[id].eterm);
	  if (Cells[id].value == NULL)
	    printf(" = -.\n");
	  else
	    printf(" = %d.\n", VARNUM(Cells[id].value));
	}
	set_variable_style(save_style);
      }
    }
  }

  if (print_head)
    print_separator(stdout, "end of model", TRUE);

}  /* p_model */
示例#6
0
文件: mdl.c 项目: N-BodyShop/mdl
double mdlCpuTimer(MDL mdl)
{
    return(user_seconds());
    }
int main(int argc, char **argv)
{
  FILE *head_fp;
  Ilist just;
  Plist demodulators, p;
  Mindex idx;
  Term t;
  int rewritten = 0;
  BOOL verbose = string_member("verbose", argv, argc);;

  if (string_member("help", argv, argc) ||
      string_member("-help", argv, argc) ||
      argc < 2) {
    printf("\n%s, version %s, %s\n",PROGRAM_NAME,PROGRAM_VERSION,PROGRAM_DATE);
    printf("%s", Help_string);
    exit(1);
  }

  init_standard_ladr();

  head_fp = fopen(argv[1], "r");
  if (head_fp == NULL)
    fatal_error("demodulator file can't be opened for reading");

  t = read_commands(head_fp, stderr, verbose, KILL_UNKNOWN);

  if (!is_term(t, "clauses", 1) && !is_term(t, "formulas", 1))
    fatal_error("formulas(demodulators) not found");

  /* Read list of demodulators. */

  demodulators = read_clause_list(head_fp, stderr, TRUE);

  fclose(head_fp);

  /* AC-canonicalize and index the demodulators. */

  if (assoc_comm_symbols() || comm_symbols())
    idx = mindex_init(DISCRIM_WILD, BACKTRACK_UNIF, 0);
  else
    idx = mindex_init(DISCRIM_BIND, ORDINARY_UNIF, 0);

  for (p = demodulators; p != NULL; p = p->next) {
    /* assume positive equality unit */
    Topform d = p->v;
    Literals lit = d->literals;
    Term alpha = lit->atom->args[0];
    mark_oriented_eq(lit->atom);  /* don not check for termination */
    if (assoc_comm_symbols())
      ac_canonical(lit->atom, -1);
    mindex_update(idx, alpha, INSERT);
  }

  if (verbose)
    fwrite_clause_list(stdout, demodulators, "demodulators", CL_FORM_BARE);

  /* Read and demodulate terms. */

  t = read_term(stdin, stderr);

  while (t != NULL) {
    rewritten++;
    if (verbose) {
      fprintf(stdout, "\nBefore:   "); fwrite_term_nl(stdout, t);
    }

    if (assoc_comm_symbols())
      ac_canonical(t, -1);
    just = NULL;
    t = demodulate(t, idx, &just, FALSE);

    if (verbose)
      fprintf(stdout, "After:    ");

    fwrite_term_nl(stdout, t);
    fflush(stdout);

    zap_ilist(just);
    zap_term(t);
    t = read_term(stdin, stderr);
  }

  printf("%% %s %s: rewrote %d terms with %d rewrite steps in %.2f seconds.\n",
	 PROGRAM_NAME, argv[1], rewritten, demod_rewrites(), user_seconds());
    
  exit(0);

}  /* main */