1 /* Congruence Java class declaration and implementation. 2 Copyright (C) 2001-2010 Roberto Bagnara <bagnara@cs.unipr.it> 3 Copyright (C) 2010-2016 BUGSENG srl (http://bugseng.com) 4 5 This file is part of the Parma Polyhedra Library (PPL). 6 7 The PPL is free software; you can redistribute it and/or modify it 8 under the terms of the GNU General Public License as published by the 9 Free Software Foundation; either version 3 of the License, or (at your 10 option) any later version. 11 12 The PPL is distributed in the hope that it will be useful, but WITHOUT 13 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 14 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 15 for more details. 16 17 You should have received a copy of the GNU General Public License 18 along with this program; if not, write to the Free Software Foundation, 19 Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1307, USA. 20 21 For the most up-to-date information see the Parma Polyhedra Library 22 site: http://bugseng.com/products/ppl/ . */ 23 24 package parma_polyhedra_library; 25 26 //! A linear congruence. 27 /*! \ingroup PPL_Java_interface 28 An object of the class Congruence is an object represeting a congruence: 29 - \f$\cg = \sum_{i=0}^{n-1} a_i x_i + b = 0 \pmod{m}\f$ 30 31 where \f$n\f$ is the dimension of the space, 32 \f$a_i\f$ is the integer coefficient of variable \f$x_i\f$, 33 \f$b\f$ is the integer inhomogeneous term and \f$m\f$ is the integer modulus; 34 if \f$m = 0\f$, then \f$\cg\f$ represents the equality congruence 35 \f$\sum_{i=0}^{n-1} a_i x_i + b = 0\f$ 36 and, if \f$m \neq 0\f$, then the congruence \f$\cg\f$ is 37 said to be a proper congruence. 38 */ 39 public class Congruence { 40 41 //! The modulus of the congruence. 42 protected Coefficient mod; 43 44 //! The value of the left hand side of \p this. 45 Linear_Expression lhs; 46 47 //! The value of the right hand side of \p this. 48 Linear_Expression rhs; 49 50 /*! \brief 51 Returns the congruence 52 \f$\mathtt{e1} = \mathtt{e2} \pmod{\mathtt{m}}\f$. 53 */ Congruence(Linear_Expression e1, Linear_Expression e2, Coefficient m)54 public Congruence(Linear_Expression e1, Linear_Expression e2, 55 Coefficient m) { 56 mod = new Coefficient(m); 57 lhs = e1.clone(); 58 rhs = e2.clone(); 59 } 60 61 //! Returns the left hand side of \p this. left_hand_side()62 public Linear_Expression left_hand_side() { 63 return lhs; 64 } 65 66 //! Returns the right hand side of \p this. right_hand_side()67 public Linear_Expression right_hand_side() { 68 return rhs; 69 } 70 71 //! Returns the relation symbol of \p this. modulus()72 public Coefficient modulus() { 73 return mod; 74 } 75 76 //! Returns an ascii formatted internal representation of \p this. ascii_dump()77 public native String ascii_dump(); 78 79 //! Returns a string representation of \p this. toString()80 public native String toString(); 81 initIDs()82 private static native void initIDs(); 83 static { initIDs()84 initIDs(); 85 } 86 } 87