コード例 #1
0
ファイル: pins2pins-check.c プロジェクト: Meijuh/ltsmin
static inline void
report (char *s, check_ctx_t *ctx, int g, int i, int *v, transition_info_t *ti)
{
    Printf (lerror, "\n\n%s: %d X %d (group X slot)\n\n\n", s, g, i);
    print_ti (ctx, ti);
    Printf (lerror, "\n %s\n \tX\n %s\n \n ",
            str_group (ctx, g), str_slot (ctx, v, i));
    HREabort (LTSMIN_EXIT_FAILURE);
}
コード例 #2
0
ファイル: property-semantics.c プロジェクト: graydon/ltsmin
void
mark_predicate (model_t m, ltsmin_expr_t e, int *dep, ltsmin_parse_env_t env)
{
    if (!e) return;
    switch(e->node_type) {
    case BINARY_OP:
        mark_predicate(m,e->arg1,dep,env);
        mark_predicate(m,e->arg2,dep,env);
        break;
    case UNARY_OP:
        mark_predicate(m,e->arg1,dep,env);
        break;
    default:
        switch(e->token) {
        case PRED_TRUE:
        case PRED_FALSE:
        case PRED_NUM:
        case PRED_VAR:
        case PRED_CHUNK:
            break;
        case PRED_EQ:
            mark_predicate(m,e->arg1, dep,env);
            mark_predicate(m,e->arg2, dep,env);
            break;
        case PRED_SVAR: {
            lts_type_t ltstype = GBgetLTStype(m);
            int N = lts_type_get_state_length (ltstype);
            if (e->idx < N) { // state variable
                dep[e->idx] = 1;
            } else { // state label
                HREassert (e->idx < N + lts_type_get_state_label_count(ltstype));
                matrix_t *sl = GBgetStateLabelInfo (m);
                HREassert (N == dm_ncols(sl));
                for (int i = 0; i < N; i++) {
                    if (dm_is_set(sl, e->idx - N, i)) dep[i] = 1;
                }
            }
            break;
        }
        default:
            LTSminLogExpr (error, "Unhandled predicate expression: ", e, env);
            HREabort (LTSMIN_EXIT_FAILURE);
        }
        break;
    }
}
コード例 #3
0
ファイル: property-semantics.c プロジェクト: graydon/ltsmin
void
mark_visible(model_t model, ltsmin_expr_t e, ltsmin_parse_env_t env)
{
    int *visibility = GBgetPorGroupVisibility (model);
    HREassert (visibility != NULL, "POR layer present, but no visibility info found.");
    if (!e) return;
    switch(e->node_type) {
    case BINARY_OP:
        mark_visible(model,e->arg1,env);
        mark_visible(model,e->arg2,env);
        break;
    case UNARY_OP:
        mark_visible(model,e->arg1,env);
        break;
    default:
        switch(e->token) {
        case PRED_TRUE:
        case PRED_FALSE:
        case PRED_NUM:
        case PRED_VAR:
        case PRED_CHUNK:
            break;
        case PRED_EQ:
            mark_visible(model, e->arg1,env);
            mark_visible(model, e->arg2,env);
            break;
        case PRED_SVAR: {
            int                 N = pins_get_state_variable_count (model);
            if (e->idx < N) {
                pins_add_state_variable_visible (model, e->idx);
            } else { // state label
                HREassert (e->idx < N + (int)pins_get_state_label_count(model));
                pins_add_state_label_visible (model, e->idx - N);
            }
          } break;
        default:
            LTSminLogExpr (error, "Unhandled predicate expression: ", e, env);
            HREabort (LTSMIN_EXIT_FAILURE);
        }
        break;
    }
}