001/*
002 * $Id$
003 */
004
005package edu.jas.poly;
006
007
008import java.io.Serializable;
009
010
011/**
012 * Container for overlap words.
013 * A container of four words l1, r1, l2, r2. 
014 * @author Heinz Kredel
015 */
016
017public class Overlap implements Serializable {
018
019    public final Word l1;
020    public final Word r1;
021    public final Word l2;
022    public final Word r2;
023
024
025    /**
026     * Constructor.
027     */
028    public Overlap(Word l1, Word r1, Word l2, Word r2) {
029        this.l1 = l1;
030        this.r1 = r1;
031        this.l2 = l2;
032        this.r2 = r2;
033    }
034
035
036    /**
037     * Is word overlap.
038     * @param u word
039     * @param v word
040     * @return true if l1 * u * r1 = l2 * v * r2, else false.
041     */
042    public boolean isOverlap(Word u, Word v) {
043        Word a = l1.multiply(u).multiply(r1);
044        Word b = l2.multiply(v).multiply(r2);
045        boolean t = a.equals(b);
046        if ( !t ) {
047            System.out.println("a = " + a + " !=  b = " + b);
048        }
049        return t;
050    }
051
052
053    /**
054     * Get the string representation.
055     * @see java.lang.Object#toString()
056     */
057    @Override
058    public String toString() {
059        StringBuffer s = new StringBuffer("Overlap[");
060        s.append(l1);
061        s.append(", ");
062        s.append(r1);
063        s.append(", ");
064        s.append(l2);
065        s.append(", ");
066        s.append(r2);
067        s.append("]");
068        return s.toString();
069    }
070
071}