# scalar parameter definitions
real x := 2.3;
real y := -10.2e-1;
index i := 2;
boolean b := true;
# scalar variable definitions
real z in [0.5, 4];
# scalar assignments
x <- 3.3;
z.lb <- 2;
z.ub <- 3;
# tensor parameter definitions
real[4] par_vec := (1,2,3,4); # vector or length 4
real[2,2] par_mat := ((1,2),(3,4)); # 2x2 matrix
index[3,3] ind_mat:= 3; # scalar initialized index matrix
# tensor variable definitions
real[3] var_vec in [0,(1.2,3,4)]; # partial scalar initialization for bounds
# tensor entry assignment
par_vec[1] <- 2.3;
par_mat[:,2] <- 5; # wildcard character to assign to multiple entries
ind_mat[2,:] <- 4;
var_vec.lb[2] <- 1;
# expression definitions
real expr := (2*x) - par_vec[2];
index ind_expr := 5*i - 7;
boolean tt := true | false;
# set definitions
set{index} ind_set := {1 .. 4};
set{index} jnd_set := {1,3,4};
set{real} real_set := {1.3,4.5};
set{real[:]} vec_set := {(1,2),(3,4),(5,6)};

# expressions
expr;
par_vec[ind_expr];
tt;
sum(j in ind_set : par_vec[j]);
sum(j in jnd_set : par_vec[j]);
forall v in vec_set : v[1] < v[2];
sum(r in real_set : r);
