@@ -456,8 +456,6 @@ int cbmc_parse_optionst::doit()
456
456
if (get_goto_program_ret!=-1 )
457
457
return get_goto_program_ret;
458
458
459
- label_properties (goto_functions);
460
-
461
459
if (cmdline.isset (" show-claims" ) || // will go away
462
460
cmdline.isset (" show-properties" )) // use this one
463
461
{
@@ -801,13 +799,6 @@ bool cbmc_parse_optionst::process_goto_program(
801
799
status () << " Generic Property Instrumentation" << eom;
802
800
goto_check (ns, options, goto_functions);
803
801
804
- // full slice?
805
- if (cmdline.isset (" full-slice" ))
806
- {
807
- status () << " Performing a full slice" << eom;
808
- full_slicer (goto_functions, ns);
809
- }
810
-
811
802
// checks don't know about adjusted float expressions
812
803
adjust_float_expressions (goto_functions, ns);
813
804
@@ -857,6 +848,23 @@ bool cbmc_parse_optionst::process_goto_program(
857
848
return true ;
858
849
}
859
850
851
+ // label the assertions
852
+ // This must be done after adding assertions and
853
+ // before using the argument of the "property" option.
854
+ // Do not re-label after using the property slicer because
855
+ // this would cause the property identifiers to change.
856
+ label_properties (goto_functions);
857
+
858
+ // full slice?
859
+ if (cmdline.isset (" full-slice" ))
860
+ {
861
+ status () << " Performing a full slice" << eom;
862
+ if (cmdline.isset (" property" ))
863
+ property_slicer (goto_functions, ns, cmdline.get_values (" property" ));
864
+ else
865
+ full_slicer (goto_functions, ns);
866
+ }
867
+
860
868
// remove skips
861
869
remove_skip (goto_functions);
862
870
goto_functions.update ();
0 commit comments