%PDF- %PDF-
| Direktori : /home/waritko/yacy/source/net/yacy/cora/federate/solr/logic/ |
| Current File : //home/waritko/yacy/source/net/yacy/cora/federate/solr/logic/Operations.java |
package net.yacy.cora.federate.solr.logic;
import java.util.List;
/**
* The Operations class describes a set of operands which form a term using the same operation.
*/
public interface Operations extends Term {
/**
* As a Operations object is a collection of Terms, we must be able to show them
* @return the list of terms
*/
public List<Term> getOperands();
/**
* add another operand to the operations term
* @param operand
*/
public void addOperand(Term operand);
/**
* the operation is binary, if it contains two operands
* @return if this is a binary operation
*/
public boolean isBinary();
/**
* a binary operation * on a set S is called associative if it satisfies the associative law:
* (x * y) * z = x * (y * z) for all x,y,z in S.
* @return true if this is associative
*/
public boolean isAssociative();
/**
* In standard truth-functional propositional logic, commutativity refer to two valid rules of replacement.
* The rules allow one to transpose propositional variables within logical expressions in logical proofs. The rules are:
* (P OR Q) <=> (Q OR P)
* (P AND Q) <=> (Q AND P)
* @return true if this is distributive
*/
public boolean isCommutative();
/**
* In propositional logic, distribution refers to two valid rules of replacement.
* The rules allow one to reformulate conjunctions and disjunctions within logical proofs.
* Given a set S and two binary operators * and + on S, we say that the operation *
* is left-distributive over + if, given any elements x, y, and z of S,
* x * (y + z) = (x * y) + (x * z)
* is right-distributive over + if, given any elements x, y, and z of S:
* (y + z) * x = (y * x) + (z * x)
* is distributive over + if it is left- and right-distributive.
* @return true if this is distributive;
*/
public boolean isDistributive();
}