#include "clash.h"

This page has information from files clash.h and clash.c.

Contents


Public Routines in File clash.c

Index

append_clashatom_to_literalfprint_clash_memzap_clash
apply_litclashp_clash_mem

Details


Clash append_clash(Clash p);
This routine simply allocates a new clash node, links it in after the given node, and returns the new node.
Literal apply_lit(Literal lit, Context c);
This routine applies a substitution to a literal and returns the instance. The given literal is not changed.
Literal atom_to_literal(Term atom);
This routine takes an atom and returns its parent literal.
void clash(Clash c,
	   BOOL (*sat_test) (Literal),
	   Just_type rule,
	   void (*proc_proc) (Clause));
This routine takes a complete clash list and computes the resolvents.
void fprint_clash_mem(FILE *fp, BOOL heading);
This routine prints (to FILE *fp) memory usage statistics for data types associated with the clash package. The Boolean argument heading tells whether to print a heading on the table.
void p_clash_mem();
This routine prints (to stdout) memory usage statistics for data types associated with the clash package.
void  zap_clash(Clash p);
Free a clash list. Contexts in clashable nodes (which are assumed to exist and be empty) are freed as well.

Public Definitions in File clash.h

typedef struct clash  * Clash;

struct clash {
  BOOL       clashable;
  BOOL       clashed;
  BOOL       flipped;  /* Is nuc_lit or sat_lit a flipped equality? */
  Literal    nuc_lit;
  Context    nuc_subst;
  Literal    sat_lit;
  Context    sat_subst;
  Mindex     mate_index;
  Mindex_pos mate_pos;
  Clash      next;
};


Introduction

This package deals with clash structures, which are used for binary resolution, hyperresolution, and UR-resolution. The inference rule sets up a clash list (corresponding to the nucleus), and then calls clash() to compute all of the resolvents.

These activities are projects of the Mathematics and Computer Science Division of Argonne National Laboratory.