/** * This program (working title: MAS Prover) is an automated tableaux prover * for epistemic logic (S5n). * Copyright (C) 2007 Elske van der Vaart and Gert van Valkenhoef * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 as published * by the Free Software Foundation. * 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ package nl.rug.ai.mas.oops.tableau; /** * A null Label, used to terminate a label chain in a way that a Label variable * will match. */ public class NullLabel implements Label { public NullLabel() { } /** * A NullLabel matches only those Label objects it equals(). * @param o The Label to match. * @return The empty subsitution if it matches o, null otherwise. */ public NodeSubstitution match(Label o) { if (equals(o)) { return new NodeSubstitution(); } return null; } /** * Substitute all occuring variables. * @return this. */ public Label substitute(NodeSubstitution s) { return this; } public void accept(LabelVisitor v) { v.visitNullLabel(this); } /** * A NullLabel equals() all other NullLabel instances. */ public boolean equals(Object o) { if (o instanceof NullLabel) { return true; } else { return false; } } /** * The hashcode for a NullLabel is always 0. */ public int hashCode() { return 0; } public String toString() { return "NullLabel"; } public boolean isConcrete() { return true; } }