// Path: src/pregroup/SimpleType.java
// public class SimpleType
// {
// 	private String base;
// 	private int exp;
// 	
// 	public SimpleType(String bt, int e)
// 	{
// 		base = bt;
// 		exp = e;
// 	}
// 	
// 	public boolean isUnit()
// 	{
// 		return base.equals("1");
// 	}
// 	
// 	//! Generalized Contraction rule
// 	public boolean gcon(SimpleType a, PartialComparator<String> c)
// 	{
// 		return 
// 		     	(a.exp == this.exp + 1) && 
// 				((c.lessThan(this.base, a.base) && this.exp % 2 == 0) ||
// 				 (c.lessThan(a.base, this.base) && this.exp % 2 != 0));
// 	}
// 	
// 	//! Left adjoint of the type
// 	public SimpleType left()
// 	{
// 		SimpleType adj = new SimpleType(base, exp);
// 		adj.exp--;
// 		return adj;
// 	}
// 	
// 	//! Right adjoint of the type
// 	public SimpleType right()
// 	{
// 		SimpleType adj = new SimpleType(base, exp);
// 		adj.exp++;
// 		return adj;
// 	}
// 	
// 	public boolean isProductive()
// 	{
// 		return (exp % 2 == 0);
// 	}
// 	
// 	public String toString()
// 	{	
// 		if(exp == 0)
// 			return base;
// 		
// 		return base + "^{" + exp + "}";
// 	}
// 	
// 	public String toLatex()
// 	{
// 		if(exp == 0)
// 			return base;
// 		String output = base + "^{";
// 		if(exp > 0)
// 		{
// 			for(int i = 0; i < exp; i++)
// 				output += "r";
// 		}
// 		else
// 			for(int i = 0; i > exp; i--)
// 				output += "l";
// 		return (output+"}");
// 	}
// 	
// 	public String getBase()
// 	{
// 		return base;
// 	}
// }


import pregroup.SimpleType;
package graphexpr;


public class ProducerExpr extends GraphExpr implements Cloneable
{
	public SimpleType type;
	public PatternExpr pattern;
// Path: src/pregroup/SimpleType.java
// public class SimpleType
// {
// 	private String base;
// 	private int exp;
// 	
// 	public SimpleType(String bt, int e)
// 	{
// 		base = bt;
// 		exp = e;
// 	}
// 	
// 	public boolean isUnit()
// 	{
// 		return base.equals("1");
// 	}
// 	
// 	//! Generalized Contraction rule
// 	public boolean gcon(SimpleType a, PartialComparator<String> c)
// 	{
// 		return 
// 		     	(a.exp == this.exp + 1) && 
// 				((c.lessThan(this.base, a.base) && this.exp % 2 == 0) ||
// 				 (c.lessThan(a.base, this.base) && this.exp % 2 != 0));
// 	}
// 	
// 	//! Left adjoint of the type
// 	public SimpleType left()
// 	{
// 		SimpleType adj = new SimpleType(base, exp);
// 		adj.exp--;
// 		return adj;
// 	}
// 	
// 	//! Right adjoint of the type
// 	public SimpleType right()
// 	{
// 		SimpleType adj = new SimpleType(base, exp);
// 		adj.exp++;
// 		return adj;
// 	}
// 	
// 	public boolean isProductive()
// 	{
// 		return (exp % 2 == 0);
// 	}
// 	
// 	public String toString()
// 	{	
// 		if(exp == 0)
// 			return base;
// 		
// 		return base + "^{" + exp + "}";
// 	}
// 	
// 	public String toLatex()
// 	{
// 		if(exp == 0)
// 			return base;
// 		String output = base + "^{";
// 		if(exp > 0)
// 		{
// 			for(int i = 0; i < exp; i++)
// 				output += "r";
// 		}
// 		else
// 			for(int i = 0; i > exp; i--)
// 				output += "l";
// 		return (output+"}");
// 	}
// 	
// 	public String getBase()
// 	{
// 		return base;
// 	}
// }


// Path: src/graphexpr/ProducerExpr.java
import pregroup.SimpleType;

package graphexpr;


public class ProducerExpr extends GraphExpr implements Cloneable
{
	public SimpleType type;
	public PatternExpr pattern;
	public ProducerExpr(SimpleType t, PatternExpr p)