You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
168 lines
3.6 KiB
168 lines
3.6 KiB
//==============================================================================
|
|
//
|
|
// Copyright (c) 2002-
|
|
// Authors:
|
|
// * Dave Parker <david.parker@comlab.ox.ac.uk> (University of Oxford)
|
|
//
|
|
//------------------------------------------------------------------------------
|
|
//
|
|
// This file is part of PRISM.
|
|
//
|
|
// PRISM is free software; you can redistribute it and/or modify
|
|
// it under the terms of the GNU General Public License as published by
|
|
// the Free Software Foundation; either version 2 of the License, or
|
|
// (at your option) any later version.
|
|
//
|
|
// PRISM 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 PRISM; if not, write to the Free Software Foundation,
|
|
// Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
//
|
|
//==============================================================================
|
|
|
|
package pta;
|
|
|
|
public abstract class Zone
|
|
{
|
|
/**
|
|
* Get parent PTA
|
|
*/
|
|
|
|
public abstract PTA getPTA();
|
|
|
|
// Zone operations (modify the zone)
|
|
|
|
/**
|
|
* Conjunction: add constraint x-y db
|
|
*/
|
|
public abstract void addConstraint(int x, int y, int db);
|
|
|
|
/**
|
|
* Conjunction: add constraint c
|
|
*/
|
|
public abstract void addConstraint(Constraint c);
|
|
|
|
/**
|
|
* Conjunction: add multiple constraints
|
|
*/
|
|
public abstract void addConstraints(Iterable<Constraint> constraints);
|
|
|
|
/**
|
|
* Conjunction: with another zone
|
|
*/
|
|
public abstract void intersect(Zone z);
|
|
|
|
/**
|
|
* Up, i.e. let time elapse, subject to some constraints
|
|
*/
|
|
public abstract void up(Iterable<Constraint> constraints);
|
|
|
|
/**
|
|
* Up, i.e. let time elapse
|
|
*/
|
|
public void up()
|
|
{
|
|
up(null);
|
|
}
|
|
|
|
/**
|
|
* Down, i.e. zone which can reach this one, subject to some constraints
|
|
*/
|
|
public abstract void down(Iterable<Constraint> constraints);
|
|
|
|
/**
|
|
* Down, i.e. zone which can reach this one
|
|
*/
|
|
public void down()
|
|
{
|
|
down(null);
|
|
}
|
|
|
|
/**
|
|
* Free, i.e. remove constraints on a clock
|
|
*/
|
|
public abstract void free(int x);
|
|
|
|
/**
|
|
* Reset clock x
|
|
*/
|
|
public abstract void reset(int x, int v);
|
|
|
|
/**
|
|
* Backward reset of clock x
|
|
*/
|
|
public abstract void backReset(int x, int v);
|
|
|
|
/**
|
|
* c-Closure
|
|
*/
|
|
public abstract void cClosure(int c);
|
|
|
|
// Zone operations (create new zone)
|
|
|
|
/**
|
|
* Complement
|
|
* Creates non-convex zone so creates new one,
|
|
* and leaves this one unmodified
|
|
*/
|
|
public abstract NCZone createComplement();
|
|
|
|
// Zone queries (do not modify the zone)
|
|
|
|
/**
|
|
* Is this zone empty (i.e. inconsistent)?
|
|
*/
|
|
public abstract boolean isEmpty();
|
|
|
|
/**
|
|
* Is constraint c satisfied by this zone (i.e does it overlap)?
|
|
*/
|
|
public abstract boolean isSatisfied(Constraint c);
|
|
|
|
/**
|
|
* Is a DBM (fully) included in this zone?
|
|
*/
|
|
public abstract boolean includes(DBM dbm);
|
|
|
|
/**
|
|
* Get the minimum value of a clock.
|
|
*/
|
|
public abstract int getClockMin(int x);
|
|
|
|
/**
|
|
* Get the maximum value of a clock.
|
|
*/
|
|
public abstract int getClockMax(int x);
|
|
|
|
/**
|
|
* Check if a clock is unbounded (can be infinite).
|
|
*/
|
|
public abstract boolean clockIsUnbounded(int x);
|
|
|
|
/**
|
|
* Check if all clocks are unbounded (can be infinite).
|
|
*/
|
|
public abstract boolean allClocksAreUnbounded();
|
|
|
|
// Misc
|
|
|
|
/**
|
|
* Clone this zone
|
|
*/
|
|
public abstract Zone deepCopy();
|
|
|
|
/**
|
|
* Get storage info string
|
|
*/
|
|
public abstract String storageInfo();
|
|
|
|
// Standard Java methods
|
|
|
|
public abstract int hashCode();
|
|
|
|
public abstract boolean equals(Object o);
|
|
}
|