| /**************************************************************/ |
| /* ********************************************************** */ |
| /* * * */ |
| /* * INFERENCE RULES * */ |
| /* * * */ |
| /* * $Module: INFRULES * */ |
| /* * * */ |
| /* * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001 * */ |
| /* * MPI fuer Informatik * */ |
| /* * * */ |
| /* * This program is free software; you can redistribute * */ |
| /* * it and/or modify it under the terms of the GNU * */ |
| /* * General Public License as published by the Free * */ |
| /* * Software Foundation; either version 2 of the License, * */ |
| /* * or (at your option) any later version. * */ |
| /* * * */ |
| /* * This program is distributed in the hope that it will * */ |
| /* * be useful, but WITHOUT ANY WARRANTY; without even * */ |
| /* * the implied warranty of MERCHANTABILITY or FITNESS * */ |
| /* * FOR A PARTICULAR PURPOSE. See the GNU General Public * */ |
| /* * License for more details. * */ |
| /* * * */ |
| /* * You should have received a copy of the GNU General * */ |
| /* * Public License along with this program; if not, write * */ |
| /* * to the Free Software Foundation, Inc., 59 Temple * */ |
| /* * Place, Suite 330, Boston, MA 02111-1307 USA * */ |
| /* * * */ |
| /* * * */ |
| /* $Revision$ * */ |
| /* $State$ * */ |
| /* $Date$ * */ |
| /* $Author$ * */ |
| /* * * */ |
| /* * Contact: * */ |
| /* * Christoph Weidenbach * */ |
| /* * MPI fuer Informatik * */ |
| /* * Stuhlsatzenhausweg 85 * */ |
| /* * 66123 Saarbruecken * */ |
| /* * Email: weidenb@mpi-sb.mpg.de * */ |
| /* * Germany * */ |
| /* * * */ |
| /* ********************************************************** */ |
| /**************************************************************/ |
| |
| |
| /* $RCSfile$ */ |
| |
| #ifndef _INFRULES_ |
| #define _INFRULES_ |
| |
| /**************************************************************/ |
| /* Includes */ |
| /**************************************************************/ |
| |
| #include "search.h" |
| #include "rules-split.h" |
| #include "rules-sort.h" |
| #include "rules-ur.h" |
| #include "subst.h" |
| #include "unify.h" |
| #include "st.h" |
| #include "defs.h" |
| |
| /**************************************************************/ |
| /* Functions */ |
| /**************************************************************/ |
| |
| LIST inf_DerivableClauses(PROOFSEARCH, CLAUSE); |
| |
| LIST inf_EqualityResolution(CLAUSE, BOOL, FLAGSTORE, PRECEDENCE); |
| LIST inf_EqualityFactoring(CLAUSE, FLAGSTORE, PRECEDENCE); |
| |
| LIST inf_MergingParamodulation(CLAUSE, SHARED_INDEX, FLAGSTORE, PRECEDENCE); |
| |
| LIST inf_GenSuperpositionLeft(CLAUSE,SHARED_INDEX,BOOL,BOOL,BOOL,FLAGSTORE, PRECEDENCE); |
| LIST inf_GenSuperpositionRight(CLAUSE,SHARED_INDEX,BOOL,BOOL,BOOL,FLAGSTORE, PRECEDENCE); |
| |
| LIST inf_BoundedDepthUnitResolution(CLAUSE, SHARED_INDEX, BOOL, FLAGSTORE, PRECEDENCE); |
| LIST inf_UnitResolution(CLAUSE, SHARED_INDEX, BOOL, FLAGSTORE, PRECEDENCE); |
| LIST inf_GeneralResolution(CLAUSE, SHARED_INDEX, BOOL, BOOL, FLAGSTORE, PRECEDENCE); |
| |
| BOOL inf_HyperLiteralIsBetter(LITERAL, NAT, LITERAL, NAT); |
| LIST inf_GeneralHyperResolution(CLAUSE, SHARED_INDEX, BOOL, FLAGSTORE, PRECEDENCE); |
| |
| LIST inf_GeneralFactoring(CLAUSE, BOOL, BOOL, BOOL, FLAGSTORE, PRECEDENCE); |
| |
| LIST inf_ApplyDefinition(PROOFSEARCH, CLAUSE, FLAGSTORE, PRECEDENCE); |
| |
| /**************************************************************/ |
| /* Inline Functions */ |
| /**************************************************************/ |
| |
| static __inline__ LIST inf_Paramodulation(CLAUSE GivenClause, |
| SHARED_INDEX ShIndex, |
| FLAGSTORE Flags, |
| PRECEDENCE Precedence) |
| /************************************************************** |
| INPUT: A clause, an Index, usually the WorkedOffIndex, a |
| flag store and a precedence. |
| RETURNS: A list of clauses derivable from the GivenClause by |
| paramodulation wrt. the Index. |
| MEMORY: A list of clauses is produced, where memory for the list |
| and the clauses is allocated. |
| ***************************************************************/ |
| { |
| return list_Nconc(inf_GenSuperpositionLeft(GivenClause, ShIndex, FALSE, |
| FALSE, FALSE, Flags, Precedence), |
| inf_GenSuperpositionRight(GivenClause, ShIndex, FALSE, |
| FALSE, FALSE, Flags, Precedence)); |
| } |
| |
| static __inline__ LIST inf_OrderedParamodulation(CLAUSE GivenClause, |
| SHARED_INDEX ShIndex, |
| FLAGSTORE Flags, |
| PRECEDENCE Precedence) |
| /************************************************************** |
| INPUT: A clause, an Index, usually the WorkedOffIndex, a |
| flag store and a precedence. |
| RETURNS: A list of clauses derivable from the Givenclause by |
| ordered paramodulation wrt. the Index. |
| MEMORY: A list of clauses is produced, where memory for the list |
| and the clauses is allocated. |
| ***************************************************************/ |
| { |
| return list_Nconc(inf_GenSuperpositionLeft(GivenClause, ShIndex, TRUE, |
| FALSE, FALSE, Flags, Precedence), |
| inf_GenSuperpositionRight(GivenClause, ShIndex, TRUE, |
| FALSE, FALSE, Flags, Precedence)); |
| } |
| |
| static __inline__ LIST inf_SuperpositionLeft(CLAUSE GivenClause, |
| SHARED_INDEX ShIndex, |
| FLAGSTORE Flags, |
| PRECEDENCE Precedence) |
| /************************************************************** |
| INPUT: A clause, an Index, usually the WorkedOffIndex, a |
| flag store, and a precedence. |
| RETURNS: A list of clauses derivable from the Givenclause by |
| superposition left wrt. the Index. |
| MEMORY: A list of clauses is produced, where memory for the list |
| and the clauses is allocated. |
| ***************************************************************/ |
| { |
| return inf_GenSuperpositionLeft(GivenClause,ShIndex,TRUE,TRUE,FALSE,Flags, Precedence); |
| } |
| |
| static __inline__ LIST inf_SuperpositionRight(CLAUSE GivenClause, |
| SHARED_INDEX ShIndex, |
| FLAGSTORE Flags, |
| PRECEDENCE Precedence) |
| /************************************************************** |
| INPUT: A clause, an Index, usually the WorkedOffIndex, a |
| flag store and a precedence. |
| RETURNS: A list of clauses derivable from the Givenclause by |
| superposition right wrt. the Index. |
| MEMORY: A list of clauses is produced, where memory for the list |
| and the clauses is allocated. |
| ***************************************************************/ |
| { |
| return inf_GenSuperpositionRight(GivenClause,ShIndex,TRUE,TRUE,FALSE,Flags, Precedence); |
| } |
| |
| |
| #endif |
| |