#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.
Literals apply_lit(Literals lit, Context c);
This routine applies a substitution to a literal and returns the instance. The given literal is not changed.
Literals atom_to_literal(Term atom);
This routine takes an atom and returns its parent literal.
void clash(Clash c,
	   BOOL (*sat_test) (Literals),
	   Just_type rule,
	   void (*proc_proc) (Topform));
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? */
  Literals    nuc_lit;
  Context    nuc_subst;
  Literals    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.