We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
2 parents db8c89a + c635bb1 commit 8d28b46Copy full SHA for 8d28b46
regression/ebmc/smv/smv_set1.desc
@@ -0,0 +1,8 @@
1
+CORE
2
+smv_set1.smv
3
+--bdd
4
+^\[.*\] x != 3: PROVED$
5
+^EXIT=0$
6
+^SIGNAL=0$
7
+--
8
+^warning: ignoring
regression/ebmc/smv/smv_set1.smv
@@ -0,0 +1,7 @@
+MODULE main
+
+VAR x : 1..3;
+ASSIGN init(x) := {1, 2};
+ next(x) := x;
+SPEC x != 3;
src/hw_cbmc_irep_ids.h
@@ -17,6 +17,9 @@ IREP_ID_ONE(G)
17
IREP_ID_ONE(X)
18
IREP_ID_ONE(smv_iff)
19
IREP_ID_TWO(C_smv_iff, "#smv_iff")
20
+IREP_ID_ONE(smv_setin)
21
+IREP_ID_ONE(smv_setnotin)
22
+IREP_ID_ONE(smv_union)
23
IREP_ID_ONE(sva_accept_on)
24
IREP_ID_ONE(sva_reject_on)
25
IREP_ID_ONE(sva_sync_accept_on)
src/smvlang/expr2smv.cpp
@@ -464,6 +464,15 @@ bool expr2smvt::convert(
464
return convert_binary(
465
src, dest, src.id_string(), precedence = precedencet::MULT);
466
467
+ else if(src.id() == ID_smv_setin)
468
+ return convert_binary(src, dest, "in", precedence = precedencet::IN);
469
470
+ else if(src.id() == ID_smv_setnotin)
471
+ return convert_binary(src, dest, "notin", precedence = precedencet::IN);
472
473
+ else if(src.id() == ID_smv_union)
474
+ return convert_binary(src, dest, "union", precedence = precedencet::UNION);
475
476
else if(src.id()==ID_lt || src.id()==ID_gt ||
477
src.id()==ID_le || src.id()==ID_ge)
478
@@ -528,6 +537,9 @@ bool expr2smvt::convert(
528
537
else if(src.id()=="smv_nondet_choice")
529
538
return convert_nondet_choice(src, dest, precedence);
530
539
540
+ else if(src.id() == ID_constraint_select_one)
541
+ return convert_nondet_choice(src, dest, precedence);
542
531
543
else if(src.id()==ID_nondet_bool)
532
544
{
533
545
exprt nondet_choice_expr("smv_nondet_choice");
src/smvlang/parser.y
@@ -482,9 +482,9 @@ term : variable_name
482
| term LE_Token term { binary($$, $1, ID_le, $3, bool_typet{}); }
483
| term GT_Token term { binary($$, $1, ID_gt, $3, bool_typet{}); }
484
| term GE_Token term { binary($$, $1, ID_ge, $3, bool_typet{}); }
485
- | term UNION_Token term { binary($$, $1, "smv_union", $3, bool_typet{}); }
486
- | term IN_Token term { binary($$, $1, "smv_setin", $3, bool_typet{}); }
487
- | term NOTIN_Token term { binary($$, $1, "smv_setnotin", $3, bool_typet{}); }
+ | term UNION_Token term { binary($$, $1, ID_smv_union, $3, bool_typet{}); }
+ | term IN_Token term { binary($$, $1, ID_smv_setin, $3, bool_typet{}); }
+ | term NOTIN_Token term { binary($$, $1, ID_smv_setnotin, $3, bool_typet{}); }
488
;
489
490
formula_list: formula { init($$); mto($$, $1); }
src/smvlang/smv_typecheck.cpp
@@ -989,11 +989,11 @@ void smv_typecheckt::typecheck(
989
else if(expr.id()==ID_typecast)
990
991
}
992
- else if(expr.id()=="smv_setin")
+ else if(expr.id() == ID_smv_setin)
993
994
expr.type()=bool_typet();
995
996
- else if(expr.id()=="smv_setnotin")
+ else if(expr.id() == ID_smv_setnotin)
997
998
999
0 commit comments