let upd_one_trans trans func status loc allowedCrossableTr computedIsActiveSt sid =
  let getNamedOffset s = Cil.new_exp ~loc (Const (CEnum (find_enum s.nums))) in
  let b = ref true in
  let expr=
    if allowedCrossableTr.(trans.numt) && (computedIsActiveSt.(trans.start.nums)) then
(* (isCrossable trans func status) && (computedIsActiveSt.(trans.start.nums)) then *)
      conj_crosscond_old
        (crosscond_to_exp trans.cross func status sid)
        (new_exp ~loc 
           (Lval(mk_offseted_array_lval curStateOld (getNamedOffset trans.start))))


    else
      begin
        b:=false;
        (mk_int_exp 0)
      end
  in
  (!b,
   Cil_types.Set(
     (mk_int_offseted_array_lval curTrans trans.numt),
     expr,
     loc
    ))