Skip to content

Commit 8796620

Browse files
minor script refactoring, streamlined settings files, starter files for scripts
1 parent e1bb713 commit 8796620

File tree

6 files changed

+198
-71
lines changed

6 files changed

+198
-71
lines changed

src/main/java/de/wiesler/Sorter.java

Lines changed: 29 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -24,23 +24,25 @@ private static SampleParameters sample(int[] values, int begin, int end, Storage
2424
/*@ assert sample0: \dl_seqPerm(\dl_seq_def_workaround(begin, end, values), \old(\dl_seq_def_workaround(begin, end, values))) \by {
2525
oss;
2626
assert "seqDef{int j;}(begin, end, any::select(heap, values, arr(j))) = seqDef{int j;}(begin, end, any::select(heapAfter_SampleParameters, values, arr(j)))" \by {
27-
auto;
27+
tryclose branch steps=4000;
2828
}
29-
auto;
29+
tryclose branch steps=4000;
3030
}
3131
@*/
3232

3333
Functions.select_n(values, begin, end, parameters.num_samples);
3434
/*@ assert sample1: \dl_seqPerm(\dl_seq_def_workaround(begin, end, values), \old(\dl_seq_def_workaround(begin, end, values))) \by {
35-
auto;
35+
tryclose branch steps=4000;
3636
};
3737
@*/
3838

3939
//@ ghost \seq before_sort = \dl_seq_def_workaround(begin, end, values);
4040
sort(values, begin, begin + parameters.num_samples, storage);
4141
/*@ assert sample2: \dl_seqPerm(\dl_seq_def_workaround(begin, end, values), before_sort) \by {
4242
oss;
43-
assert "wellFormed(heapAfter_sort)" \by { auto; } // this is missing in the original proof by JW, but somehow needed here (automode does not find it)
43+
assert "wellFormed(heapAfter_sort)" \by {
44+
tryclose branch steps=4000;
45+
} // this is missing in the original proof by JW, but somehow needed here (automode does not find it)
4446
4547
// TODO: not very robust: "self" is frequently renamed (e.g. to self_25)
4648
let @numSamplesFinal="int::final(self, de.wiesler.SampleParameters::$num_samples)";
@@ -49,15 +51,15 @@ private static SampleParameters sample(int[] values, int begin, int end, Storage
4951
seqDef{int j;}(add(begin, @numSamplesFinal), end, any::select(heapAfter_select_n, values, arr(j))))" \by {
5052
assert "seqDef{int j;}(begin + @numSamplesFinal, end, any::select(heapAfter_select_n, values, arr(j)))
5153
= seqDef{int j;}(begin + @numSamplesFinal, end, values[j]@heapAfter_sort)" \by {
52-
auto;
54+
tryclose branch steps=4000;
5355
}
54-
auto;
56+
tryclose branch steps=4000;
5557
}
5658
5759
//rule seqPermConcatFW on="seqPerm(seqDef{int j;}(begin, add(int::_, int::_)), seqDef{int j;}(begin, add(int::_, int::_)))"; // not needed
5860
rule seqDef_split on="seqDef{int j;}(begin, end, any::select(heapAfter_sort, values, arr(j)))" inst_idx="begin+@numSamplesFinal";
5961
rule seqDef_split on="seqDef{int j;}(begin, end, any::select(heapAfter_select_n, values, arr(j)))" inst_idx="begin+@numSamplesFinal" occ=2;
60-
auto;
62+
tryclose branch steps=4000;
6163
}
6264
@*/
6365

@@ -460,10 +462,6 @@ private static void sample_sort_recurse_on(int[] values, int begin, int end, Sto
460462
rule seqDef_split on="seqDef{int uSub1;}(@middle, end, any::select(heap, values, arr(uSub1)))" inst_idx="@middleSucc";
461463
rule seqDef_split on="seqDef{int uSub1;}(@middle, end, any::select(anon(Heap::_, LocSet::_, Heap::_), values, arr(uSub1)))" inst_idx="@middleSucc";
462464
463-
// TODO: same problem as always: does not work
464-
//auto steps=1000 dependencies=false classAxioms=false modelSearch=false expandQueries=false;
465-
//leave;
466-
467465
// workaround: this also affects all branches visited afterwards!
468466
set key="CLASS_AXIOM_OPTIONS_KEY" value="CLASS_AXIOM_OFF";
469467
set key="DEP_OPTIONS_KEY" value="DEP_OFF";
@@ -734,8 +732,7 @@ private static void sample_sort(int[] values, int begin, int end, Storage storag
734732
}
735733
}
736734

737-
/*@ assert sortednessFromPartitionSorted(values, begin, end, bucket_starts, num_buckets);
738-
@*/
735+
//@ assert sortednessFromPartitionSorted(values, begin, end, bucket_starts, num_buckets);
739736
}
740737

741738
/*@ public normal_behaviour
@@ -757,10 +754,6 @@ public static void fallback_sort(int[] values, int begin, int end) {
757754
oss;
758755
rule allRight;
759756
760-
// of these two, always only the first one works for some reason:
761-
//expand on="de.wiesler.Functions.countElement(values, begin, end, element_0)";
762-
//expand on="de.wiesler.Functions.countElement(values, begin, end, element_0)@heapAfter_insertion_sort";
763-
764757
expand on="de.wiesler.Functions::countElement(heap, values, begin, end, element_0)";
765758
expand on="de.wiesler.Functions::countElement(heapAfter_insertion_sort, values, begin, end, element_0)";
766759
rule seqPermCountsInt;
@@ -776,15 +769,13 @@ public static void fallback_sort(int[] values, int begin, int end) {
776769
assert "bsum{int uSub1;}(0, end - begin, \if (values[uSub1 + begin] = element_0) \then (1) \else (0))
777770
= bsum{int iv;}(0, end - begin, \if (seqDef{int j;}(begin, end, values[j])[iv] = element_0) \then (1) \else (0))";
778771
779-
// None of those is able close the goal for some reason. In the GUI, it works fine.
780-
// auto;
781-
// Not sure if the parameters actually affect anything ...
782-
//auto classAxioms=true expandQueries=true modelSearch=true dependencies=true proofSplitting=true steps=2000;
783-
784-
// workaround (more detailed params not supported at the moment)
772+
// workaround: this also affects all branches visited afterwards!
773+
set key="CLASS_AXIOM_OPTIONS_KEY" value="CLASS_AXIOM_DELAYED";
774+
set key="DEP_OPTIONS_KEY" value="DEP_ON";
775+
set key="NON_LIN_ARITH_OPTIONS_KEY" value="NON_LIN_ARITH_DEF_OPS";
776+
set key="QUERYAXIOM_OPTIONS_KEY" value="QUERYAXIOM_OFF";
785777
tryclose branch steps=2000;
786-
};
787-
@*/
778+
}; */
788779
}
789780

790781
/*@ model_behaviour
@@ -838,7 +829,7 @@ public static void insertion_sort(int[] values, int begin, int end) {
838829
auto steps=7000 classAxioms=true dependency=false modelSearch=false expandQueries=false;
839830
}
840831
auto steps=200 add_applyEqReverse=high classAxioms=false dependency=false modelSearch=false expandQueries=false;
841-
} @*/
832+
} */
842833

843834
/*@ loop_invariant hole == i + 1;
844835
@ loop_invariant begin-1 <= i < k;
@@ -858,7 +849,7 @@ public static void insertion_sort(int[] values, int begin, int end) {
858849
// TODO: there seems to be a bug in interplay of loop scopes and script ("program variable h not known") -> make sure to use loop transformation rule here!
859850
/*@ assert insSort1: \dl_seqPerm(seqUpd(\dl_seq_def_workaround(begin, end, values), hole - begin, value), \old(\dl_seq_def_workaround(begin, end, values))) \by {
860851
leave;
861-
} @*/
852+
} */
862853
/* @ assert insSort1: \dl_seqPerm(seqUpd(\dl_seq_def_workaround(begin, end, values), hole - begin, value), \old(\dl_seq_def_workaround(begin, end, values))) \by {
863854
864855
oss;
@@ -890,8 +881,8 @@ public static void insertion_sort(int[] values, int begin, int end) {
890881
set key="DEP_OPTIONS_KEY" value="DEP_OFF";
891882
set key="NON_LIN_ARITH_OPTIONS_KEY" value="NON_LIN_ARITH_DEF_OPS";
892883
set key="QUERYAXIOM_OPTIONS_KEY" value="QUERYAXIOM_OFF";
893-
tryclose;
894-
} @*/
884+
tryclose branch;
885+
} */
895886
}
896887

897888
// @ ghost \dl_seq tmp = \dl_seq_def_workaround(begin, end, values);
@@ -902,14 +893,14 @@ public static void insertion_sort(int[] values, int begin, int end) {
902893
/* @ assert insSort2: \dl_seqPerm(\dl_seq_def_workaround(begin, end, values), \old(\dl_seq_def_workaround(begin, end, values))) \by {
903894
assert \dl_seq_def_workaround(begin, end, values) = seqUpd(tmp, begin * -1 + hole, values[k]);
904895
auto;
905-
} @*/
896+
} */
906897
}
907898

908899
/* @ assert insSort3: true \by {
909900
910901
// the last branch still needs quite heavy automation ...
911902
auto steps=11000 dependency=false classAxioms=false expandQueries=false modelSearch=false;
912-
} @*/
903+
} */
913904
}
914905

915906
/*@ public normal_behaviour
@@ -961,21 +952,21 @@ public static void sort(int[] values) {
961952
/*@ assert sort0: \disjoint(storage.allArrays, values[*]) \by {
962953
oss;
963954
rule disjointToElementOf;
964-
auto;
965-
}; @*/
955+
tryclose branch steps=2000;
956+
}; */
966957
sort(values, 0, values.length, storage);
967958
/*@ assert sort1: \dl_seqPerm(\dl_array2seq(values), \old(\dl_array2seq(values))) \by {
968959
oss;
969960
assert "seqDef{int u;}(0, values.length, any::select(heap, values, arr(u))) = seqDef{int j;}(0, values.length, any::select(heapAfter_Storage, values, arr(j)))" \by {
970-
auto;
961+
tryclose branch steps=2000;
971962
}
972-
auto;
973-
} @*/
963+
tryclose branch steps=2000;
964+
} */
974965
/*@ assert sort2: \dl_assignable(\old(\dl_heap()), values[*]) \by {
975966
oss;
976967
rule assignableDefinition;
977968
macro "simp-heap";
978-
auto;
979-
} @*/
969+
tryclose branch steps=2000;
970+
} */
980971
}
981972
}

src/main/key/project.key

Lines changed: 29 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,47 +1,47 @@
11
\settings {
22
"#Proof-Settings-Config-File
33
#Thu May 05 18:49:23 CEST 2022
4-
[NewSMT]NoTypeHierarchy=false
4+
[Choice]DefaultChoices=JavaCard-JavaCard\\:on , Strings-Strings\\:on , assertions-assertions\\:safe , bigint-bigint\\:on , finalFields-finalFields\\:immutable , floatRules-floatRules\\:strictfpOnly , initialisation-initialisation\\:disableStaticInitialisation , intRules-intRules\\:arithmeticSemanticsIgnoringOF , integerSimplificationRules-integerSimplificationRules\\:full , javaLoopTreatment-javaLoopTreatment\\:efficient , mergeGenerateIsWeakeningGoal-mergeGenerateIsWeakeningGoal\\:off , methodExpansion-methodExpansion\\:modularOnly , modelFields-modelFields\\:treatAsAxiom , moreSeqRules-moreSeqRules\\:on , permissions-permissions\\:off , programRules-programRules\\:Java , reach-reach\\:on , runtimeExceptions-runtimeExceptions\\:ban , sequences-sequences\\:on , wdChecks-wdChecks\\:off , wdOperator-wdOperator\\:L
55
[Labels]UseOriginLabels=true
6-
[StrategyProperty]QUERYAXIOM_OPTIONS_KEY=QUERYAXIOM_ON
6+
[NewSMT]Axiomatisations=false
7+
[NewSMT]NoTypeHierarchy=false
78
[NewSMT]Presburger=false
8-
[SMTSettings]invariantForall=false
9-
[Strategy]ActiveStrategy=JavaCardDLStrategy
10-
[StrategyProperty]USER_TACLETS_OPTIONS_KEY1=USER_TACLETS_OFF
11-
[StrategyProperty]QUANTIFIERS_OPTIONS_KEY=QUANTIFIERS_NON_SPLITTING_WITH_PROGS
12-
[StrategyProperty]USER_TACLETS_OPTIONS_KEY2=USER_TACLETS_OFF
13-
[Choice]DefaultChoices=JavaCard-JavaCard\\:on , Strings-Strings\\:on , assertions-assertions\\:safe , bigint-bigint\\:on , finalFields-finalFields\\:immutable , floatRules-floatRules\\:strictfpOnly , initialisation-initialisation\\:disableStaticInitialisation , intRules-intRules\\:arithmeticSemanticsIgnoringOF , integerSimplificationRules-integerSimplificationRules\\:full , javaLoopTreatment-javaLoopTreatment\\:efficient , mergeGenerateIsWeakeningGoal-mergeGenerateIsWeakeningGoal\\:off , methodExpansion-methodExpansion\\:modularOnly , modelFields-modelFields\\:treatAsAxiom , moreSeqRules-moreSeqRules\\:on , permissions-permissions\\:off , programRules-programRules\\:Java , reach-reach\\:on , runtimeExceptions-runtimeExceptions\\:ban , sequences-sequences\\:on , wdChecks-wdChecks\\:off , wdOperator-wdOperator\\:L
14-
[StrategyProperty]LOOP_OPTIONS_KEY=LOOP_SCOPE_INV_TACLET
15-
[StrategyProperty]INF_FLOW_CHECK_PROPERTY=INF_FLOW_CHECK_FALSE
16-
[SMTSettings]UseBuiltUniqueness=false
9+
[NewSMT]identifier=OPEN
10+
[NewSMT]sqrtSMTTranslation=SMT
1711
[SMTSettings]explicitTypeHierarchy=false
1812
[SMTSettings]instantiateHierarchyAssumptions=true
19-
[StrategyProperty]NON_LIN_ARITH_OPTIONS_KEY=NON_LIN_ARITH_DEF_OPS
13+
[SMTSettings]integersMaximum=2147483645
14+
[SMTSettings]integersMinimum=-2147483645
15+
[SMTSettings]invariantForall=false
16+
[SMTSettings]maxGenericSorts=2
2017
[SMTSettings]SelectedTaclets=
21-
[StrategyProperty]DEP_OPTIONS_KEY=DEP_OFF
22-
[StrategyProperty]AUTO_INDUCTION_OPTIONS_KEY=AUTO_INDUCTION_OFF
23-
[Strategy]MaximumNumberOfAutomaticApplications=10000
24-
[StrategyProperty]STOPMODE_OPTIONS_KEY=STOPMODE_DEFAULT
25-
[StrategyProperty]CLASS_AXIOM_OPTIONS_KEY=CLASS_AXIOM_DELAYED
18+
[SMTSettings]UseBuiltUniqueness=false
2619
[SMTSettings]useConstantsForBigOrSmallIntegers=true
27-
[StrategyProperty]MPS_OPTIONS_KEY=MPS_MERGE
28-
[StrategyProperty]SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OPTIONS_KEY=SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OFF
29-
[Strategy]Timeout=-1
30-
[StrategyProperty]SYMBOLIC_EXECUTION_ALIAS_CHECK_OPTIONS_KEY=SYMBOLIC_EXECUTION_ALIAS_CHECK_NEVER
31-
[StrategyProperty]QUERY_NEW_OPTIONS_KEY=QUERY_OFF
3220
[SMTSettings]useUninterpretedMultiplication=true
33-
[NewSMT]sqrtSMTTranslation=SMT
21+
[StrategyProperty]AUTO_INDUCTION_OPTIONS_KEY=AUTO_INDUCTION_OFF
3422
[StrategyProperty]BLOCK_OPTIONS_KEY=BLOCK_CONTRACT_INTERNAL
23+
[StrategyProperty]CLASS_AXIOM_OPTIONS_KEY=CLASS_AXIOM_DELAYED
24+
[StrategyProperty]DEP_OPTIONS_KEY=DEP_OFF
25+
[StrategyProperty]INF_FLOW_CHECK_PROPERTY=INF_FLOW_CHECK_FALSE
26+
[StrategyProperty]LOOP_OPTIONS_KEY=LOOP_SCOPE_INV_TACLET
3527
[StrategyProperty]METHOD_OPTIONS_KEY=METHOD_CONTRACT
36-
[StrategyProperty]USER_TACLETS_OPTIONS_KEY3=USER_TACLETS_OFF
37-
[NewSMT]identifier=OPEN
38-
[SMTSettings]maxGenericSorts=2
28+
[StrategyProperty]MPS_OPTIONS_KEY=MPS_MERGE
29+
[StrategyProperty]NON_LIN_ARITH_OPTIONS_KEY=NON_LIN_ARITH_DEF_OPS
3930
[StrategyProperty]OSS_OPTIONS_KEY=OSS_ON
40-
[NewSMT]Axiomatisations=false
31+
[StrategyProperty]QUANTIFIERS_OPTIONS_KEY=QUANTIFIERS_NON_SPLITTING_WITH_PROGS
32+
[StrategyProperty]QUERYAXIOM_OPTIONS_KEY=QUERYAXIOM_ON
33+
[StrategyProperty]QUERY_NEW_OPTIONS_KEY=QUERY_OFF
4134
[StrategyProperty]SPLITTING_OPTIONS_KEY=SPLITTING_DELAYED
42-
[SMTSettings]integersMinimum=-2147483645
35+
[StrategyProperty]STOPMODE_OPTIONS_KEY=STOPMODE_DEFAULT
36+
[StrategyProperty]SYMBOLIC_EXECUTION_ALIAS_CHECK_OPTIONS_KEY=SYMBOLIC_EXECUTION_ALIAS_CHECK_NEVER
37+
[StrategyProperty]SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OPTIONS_KEY=SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OFF
38+
[StrategyProperty]USER_TACLETS_OPTIONS_KEY1=USER_TACLETS_OFF
39+
[StrategyProperty]USER_TACLETS_OPTIONS_KEY2=USER_TACLETS_OFF
40+
[StrategyProperty]USER_TACLETS_OPTIONS_KEY3=USER_TACLETS_OFF
4341
[StrategyProperty]VBT_PHASE=VBT_SYM_EX
44-
[SMTSettings]integersMaximum=2147483645
42+
[Strategy]ActiveStrategy=JavaCardDLStrategy
43+
[Strategy]MaximumNumberOfAutomaticApplications=10000
44+
[Strategy]Timeout=-1
4545
"
4646
}
4747

src/main/script/fallback_sort_script_entry.proof

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,14 @@
1010
[NewSMT]Presburger=false
1111
[NewSMT]identifier=OPEN
1212
[NewSMT]sqrtSMTTranslation=SMT
13-
[SMTSettings]SelectedTaclets=
14-
[SMTSettings]UseBuiltUniqueness=false
1513
[SMTSettings]explicitTypeHierarchy=false
1614
[SMTSettings]instantiateHierarchyAssumptions=true
1715
[SMTSettings]integersMaximum=2147483645
1816
[SMTSettings]integersMinimum=-2147483645
1917
[SMTSettings]invariantForall=false
2018
[SMTSettings]maxGenericSorts=2
19+
[SMTSettings]SelectedTaclets=
20+
[SMTSettings]UseBuiltUniqueness=false
2121
[SMTSettings]useConstantsForBigOrSmallIntegers=true
2222
[SMTSettings]useUninterpretedMultiplication=true
2323
[StrategyProperty]AUTO_INDUCTION_OPTIONS_KEY=AUTO_INDUCTION_OFF
Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
\profile "Java Profile";
2+
3+
\settings {
4+
"#Proof-Settings-Config-File
5+
#Sat Sep 21 14:23:21 CEST 2024
6+
[Choice]DefaultChoices=JavaCard-JavaCard\\:on , Strings-Strings\\:on , assertions-assertions\\:safe , bigint-bigint\\:on , floatRules-floatRules\\:strictfpOnly , initialisation-initialisation\\:disableStaticInitialisation , intRules-intRules\\:arithmeticSemanticsIgnoringOF , integerSimplificationRules-integerSimplificationRules\\:full , javaLoopTreatment-javaLoopTreatment\\:efficient , mergeGenerateIsWeakeningGoal-mergeGenerateIsWeakeningGoal\\:off , methodExpansion-methodExpansion\\:modularOnly , modelFields-modelFields\\:treatAsAxiom , moreSeqRules-moreSeqRules\\:on , permissions-permissions\\:off , programRules-programRules\\:Java , reach-reach\\:on , runtimeExceptions-runtimeExceptions\\:ban , sequences-sequences\\:on , wdChecks-wdChecks\\:off , wdOperator-wdOperator\\:L , finalFields-finalFields\\:immutable
7+
[Labels]UseOriginLabels=true
8+
[NewSMT]Axiomatisations=false
9+
[NewSMT]NoTypeHierarchy=false
10+
[NewSMT]Presburger=false
11+
[NewSMT]identifier=OPEN
12+
[NewSMT]sqrtSMTTranslation=SMT
13+
[SMTSettings]explicitTypeHierarchy=false
14+
[SMTSettings]instantiateHierarchyAssumptions=true
15+
[SMTSettings]integersMaximum=2147483645
16+
[SMTSettings]integersMinimum=-2147483645
17+
[SMTSettings]invariantForall=false
18+
[SMTSettings]maxGenericSorts=2
19+
[SMTSettings]SelectedTaclets=
20+
[SMTSettings]UseBuiltUniqueness=false
21+
[SMTSettings]useConstantsForBigOrSmallIntegers=true
22+
[SMTSettings]useUninterpretedMultiplication=true
23+
[StrategyProperty]AUTO_INDUCTION_OPTIONS_KEY=AUTO_INDUCTION_OFF
24+
[StrategyProperty]BLOCK_OPTIONS_KEY=BLOCK_CONTRACT_INTERNAL
25+
[StrategyProperty]CLASS_AXIOM_OPTIONS_KEY=CLASS_AXIOM_DELAYED
26+
[StrategyProperty]DEP_OPTIONS_KEY=DEP_OFF
27+
[StrategyProperty]INF_FLOW_CHECK_PROPERTY=INF_FLOW_CHECK_FALSE
28+
[StrategyProperty]LOOP_OPTIONS_KEY=LOOP_SCOPE_INV_TACLET
29+
[StrategyProperty]METHOD_OPTIONS_KEY=METHOD_CONTRACT
30+
[StrategyProperty]MPS_OPTIONS_KEY=MPS_MERGE
31+
[StrategyProperty]NON_LIN_ARITH_OPTIONS_KEY=NON_LIN_ARITH_DEF_OPS
32+
[StrategyProperty]OSS_OPTIONS_KEY=OSS_ON
33+
[StrategyProperty]QUANTIFIERS_OPTIONS_KEY=QUANTIFIERS_NON_SPLITTING_WITH_PROGS
34+
[StrategyProperty]QUERYAXIOM_OPTIONS_KEY=QUERYAXIOM_OFF
35+
[StrategyProperty]QUERY_NEW_OPTIONS_KEY=QUERY_RESTRICTED
36+
[StrategyProperty]SPLITTING_OPTIONS_KEY=SPLITTING_DELAYED
37+
[StrategyProperty]STOPMODE_OPTIONS_KEY=STOPMODE_DEFAULT
38+
[StrategyProperty]SYMBOLIC_EXECUTION_ALIAS_CHECK_OPTIONS_KEY=SYMBOLIC_EXECUTION_ALIAS_CHECK_NEVER
39+
[StrategyProperty]SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OPTIONS_KEY=SYMBOLIC_EXECUTION_NON_EXECUTION_BRANCH_HIDING_OFF
40+
[StrategyProperty]USER_TACLETS_OPTIONS_KEY1=USER_TACLETS_OFF
41+
[StrategyProperty]USER_TACLETS_OPTIONS_KEY2=USER_TACLETS_OFF
42+
[StrategyProperty]USER_TACLETS_OPTIONS_KEY3=USER_TACLETS_OFF
43+
[StrategyProperty]VBT_PHASE=VBT_SYM_EX
44+
[Strategy]ActiveStrategy=JavaCardDLStrategy
45+
[Strategy]MaximumNumberOfAutomaticApplications=10000
46+
[Strategy]Timeout=-1
47+
"
48+
}
49+
50+
\javaSource "../java";
51+
52+
\proofObligation "#Proof Obligation Settings
53+
#Sat Sep 21 14:23:21 CEST 2024
54+
class=de.uka.ilkd.key.proof.init.FunctionalOperationContractPO
55+
contract=de.wiesler.Sorter[de.wiesler.Sorter\\:\\:sample([I,int,int,de.wiesler.Storage)].JML normal_behavior operation contract.0
56+
name=de.wiesler.Sorter[de.wiesler.Sorter\\:\\:sample([I,int,int,de.wiesler.Storage)].JML normal_behavior operation contract.0
57+
";
58+
59+
\proof {
60+
(keyLog "0" (keyUser "wolfram" ) (keyVersion "7336f2d86e"))
61+
62+
(autoModeTime "0")
63+
64+
(branch "dummy ID"
65+
(opengoal " ")
66+
)
67+
}

0 commit comments

Comments
 (0)