// ** This file was generated with DemFGen (vers:12/15/2010)

package gen;

import edu.neu.ccs.demeterf.lib.*;
import edu.neu.ccs.demeterf.*;





/** Representation of ImplicationClaim */
public class ImplicationClaim extends CompoundClaim{
    protected final Claim premise;
    protected final Claim consequent;

    /** Construct a(n) ImplicationClaim Instance */
    public ImplicationClaim(Claim premise, Claim consequent, Option<Args> args){
        super(args);
        this.premise = premise;
        this.consequent = consequent;
    }
    /** Is the given object Equal to this ImplicationClaim? */
    public boolean equals(Object o){
        if(!(o instanceof ImplicationClaim))return false;
        if(o == this)return true;
        ImplicationClaim oo = (ImplicationClaim)o;
        return (((Object)premise).equals(oo.premise))&&(((Object)consequent).equals(oo.consequent))&&(((Object)args).equals(oo.args));
    }
    /** Parse an instance of ImplicationClaim from the given String */
    public static ImplicationClaim parse(String inpt) throws gen.ParseException{
        return new gen.TheParser(new java.io.StringReader(inpt)).parse_ImplicationClaim();
    }
    /** Parse an instance of ImplicationClaim from the given Stream */
    public static ImplicationClaim parse(java.io.InputStream inpt) throws gen.ParseException{
        return new gen.TheParser(inpt).parse_ImplicationClaim();
    }
    /** Parse an instance of ImplicationClaim from the given Reader */
    public static ImplicationClaim parse(java.io.Reader inpt) throws gen.ParseException{
        return new gen.TheParser(inpt).parse_ImplicationClaim();
    }

    /** Field Class for ImplicationClaim.premise */
    public static class premise extends edu.neu.ccs.demeterf.Fields.any{}
    /** Field Class for ImplicationClaim.consequent */
    public static class consequent extends edu.neu.ccs.demeterf.Fields.any{}

    /** DGP method from Class Display */
    public String display(){ return gen.Display.DisplayM(this); }
    /** DGP method from Class Print */
    public String print(){ return gen.Print.PrintM(this); }
    /** DGP method from Class ToStr */
    public String toStr(){ return gen.ToStr.ToStrM(this); }
    /** Updater for field ImplicationClaim.premise */
    public ImplicationClaim updatePremise(Claim _premise){
        return new ImplicationClaim(_premise, consequent, args);
    }
    /** Updater for field ImplicationClaim.consequent */
    public ImplicationClaim updateConsequent(Claim _consequent){
        return new ImplicationClaim(premise, _consequent, args);
    }
    /** Updater for field ImplicationClaim.args */
    public ImplicationClaim updateArgs(Option<Args> _args){
        return new ImplicationClaim(premise, consequent, _args);
    }
    /** Getter for field ImplicationClaim.premise */
    public Claim getPremise(){ return premise; }
    /** Getter for field ImplicationClaim.consequent */
    public Claim getConsequent(){ return consequent; }
    /** Getter for field ImplicationClaim.args */
    public Option<Args> getArgs(){ return args; }

}