You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
let assert_equal = assert_equal ~printer:string_of_bool in
23
23
24
24
(* non-unique is not must parent *)
25
-
assert_equal false (is_must_parent (main >> a >> a) (main >> a >> a));
26
-
assert_equal false (is_must_parent (main >> a >> a) (main >> a >> a >> a));
27
-
assert_equal false (is_must_parent (main >> a >> a) (main >> a >> a >> b));
25
+
assert_equal false (must_be_ancestor (main >> a >> a) (main >> a >> a));
26
+
assert_equal false (must_be_ancestor (main >> a >> a) (main >> a >> a >> a));
27
+
assert_equal false (must_be_ancestor (main >> a >> a) (main >> a >> a >> b));
28
28
29
29
(* unique is not self-parent *)
30
-
assert_equal false (is_must_parent main main);
31
-
assert_equal false (is_must_parent (main >> a) (main >> a));
32
-
assert_equal false (is_must_parent (main >> a >> b) (main >> a >> b));
30
+
assert_equal false (must_be_ancestor main main);
31
+
assert_equal false (must_be_ancestor (main >> a) (main >> a));
32
+
assert_equal false (must_be_ancestor (main >> a >> b) (main >> a >> b));
33
33
34
34
(* unique is must parent if prefix *)
35
-
assert_equal true (is_must_parent main (main >> a));
36
-
assert_equal true (is_must_parent main (main >> a >> a));
37
-
assert_equal true (is_must_parent main (main >> a >> b));
38
-
assert_equal true (is_must_parent (main >> a) (main >> a >> b));
39
-
assert_equal false (is_must_parent (main >> a) main);
40
-
assert_equal false (is_must_parent (main >> b) (main >> a >> b));
41
-
assert_equal false (is_must_parent (main >> a) (main >> b >> a));
42
-
assert_equal false (is_must_parent (main >> a) (main >> a >> a)); (* may be created by just main (non-uniquely) *)
35
+
assert_equal true (must_be_ancestor main (main >> a));
36
+
assert_equal true (must_be_ancestor main (main >> a >> a));
37
+
assert_equal true (must_be_ancestor main (main >> a >> b));
38
+
assert_equal true (must_be_ancestor (main >> a) (main >> a >> b));
39
+
assert_equal false (must_be_ancestor (main >> a) main);
40
+
assert_equal false (must_be_ancestor (main >> b) (main >> a >> b));
41
+
assert_equal false (must_be_ancestor (main >> a) (main >> b >> a));
42
+
assert_equal false (must_be_ancestor (main >> a) (main >> a >> a)); (* may be created by just main (non-uniquely) *)
43
43
()
44
44
45
-
lettest_history_may_create_=
45
+
lettest_history_may_be_ancestor_=
46
46
letopenHistoryin
47
47
let assert_equal = assert_equal ~printer:string_of_bool in
48
48
49
49
(* unique may only be created by unique (prefix) *)
50
-
assert_equal true (may_create main (main >> a));
51
-
assert_equal true (may_create main (main >> a >> b));
52
-
assert_equal true (may_create (main >> a) (main >> a >> b));
53
-
assert_equal false (may_create (main >> a) (main >> a)); (* infeasible for race: definitely_not_started allows equality *)
54
-
assert_equal false (may_create (main >> b) (main >> a >> b)); (* 53-races-mhp/04-not-created2 *)
55
-
assert_equal false (may_create (main >> a >> a) (main >> a >> b)); (* infeasible for race: cannot create non-unique (main >> a >> a) before unique (main >> a >> b) *)
50
+
assert_equal true (may_be_ancestor main (main >> a));
51
+
assert_equal true (may_be_ancestor main (main >> a >> b));
52
+
assert_equal true (may_be_ancestor (main >> a) (main >> a >> b));
53
+
assert_equal false (may_be_ancestor (main >> a) (main >> a)); (* infeasible for race: definitely_not_started allows equality *)
54
+
assert_equal false (may_be_ancestor (main >> b) (main >> a >> b)); (* 53-races-mhp/04-not-created2 *)
55
+
assert_equal false (may_be_ancestor (main >> a >> a) (main >> a >> b)); (* infeasible for race: cannot create non-unique (main >> a >> a) before unique (main >> a >> b) *)
56
56
57
57
(* unique creates non-unique and is prefix: added elements cannot be in prefix *)
58
-
assert_equal true (may_create main (main >> a >> a));
59
-
assert_equal true (may_create main (main >> a >> b >> b));
60
-
assert_equal true (may_create (main >> a) (main >> a >> b >> b));
58
+
assert_equal true (may_be_ancestor main (main >> a >> a));
59
+
assert_equal true (may_be_ancestor main (main >> a >> b >> b));
60
+
assert_equal true (may_be_ancestor (main >> a) (main >> a >> b >> b));
61
61
(* TODO: added elements condition always true by construction in tests? *)
62
62
63
63
(* non-unique created by unique and is prefix: removed elements must be in set *)
64
-
assert_equal true (may_create (main >> a) (main >> a >> a));
65
-
assert_equal true (may_create (main >> a >> b) (main >> a >> b >> b));
66
-
assert_equal true (may_create (main >> a >> b) (main >> a >> b >> a));
67
-
assert_equal false (may_create (main >> a >> b) (main >> a >> a)); (* infeasible for race: definitely_not_started requires (main >> a), where this must happen, to be must parent for (main >> a >> a), which it is not *)
68
-
assert_equal false (may_create (main >> a >> b) (main >> b >> b)); (* infeasible for race: definitely_not_started requires (main >> a), where this must happen, to be must parent for (main >> b >> b), which it is not *)
64
+
assert_equal true (may_be_ancestor (main >> a) (main >> a >> a));
65
+
assert_equal true (may_be_ancestor (main >> a >> b) (main >> a >> b >> b));
66
+
assert_equal true (may_be_ancestor (main >> a >> b) (main >> a >> b >> a));
67
+
assert_equal false (may_be_ancestor (main >> a >> b) (main >> a >> a)); (* infeasible for race: definitely_not_started requires (main >> a), where this must happen, to be must parent for (main >> a >> a), which it is not *)
68
+
assert_equal false (may_be_ancestor (main >> a >> b) (main >> b >> b)); (* infeasible for race: definitely_not_started requires (main >> a), where this must happen, to be must parent for (main >> b >> b), which it is not *)
69
69
70
70
(* unique creates non-unique and prefixes are incompatible *)
71
-
assert_equal false (may_create (main >> a) (main >> b >> a >> a)); (* 53-races-mhp/05-not-created3 *)
72
-
assert_equal false (may_create (main >> a >> b) (main >> b >> a >> c >> c)); (* infeasible for race: definitely_not_started requires (main >> a), where this must happen, to be must parent for (main >> b >> a >> c >> c), which it is not *)
73
-
assert_equal false (may_create (main >> a >> b) (main >> a >> c >> d >> d)); (* 53-races-mhp/06-not-created4, also passes with simple may_create*)
71
+
assert_equal false (may_be_ancestor (main >> a) (main >> b >> a >> a)); (* 53-races-mhp/05-not-created3 *)
72
+
assert_equal false (may_be_ancestor (main >> a >> b) (main >> b >> a >> c >> c)); (* infeasible for race: definitely_not_started requires (main >> a), where this must happen, to be must parent for (main >> b >> a >> c >> c), which it is not *)
73
+
assert_equal false (may_be_ancestor (main >> a >> b) (main >> a >> c >> d >> d)); (* 53-races-mhp/06-not-created4, also passes with simple may_be_ancestor*)
74
74
75
75
(* non-unique creates non-unique: prefix must not lengthen *)
76
-
assert_equal false (may_create (main >> a >> a) (main >> a >> b >> b)); (* infeasible for race: cannot create non-unique (main >> a >> a) before unique prefix-ed (main >> a >> b >> b) *)
77
-
assert_equal false (may_create (main >> a >> a) (main >> b >> a >> a)); (* 53-races-mhp/07-not-created5 *)
76
+
assert_equal false (may_be_ancestor (main >> a >> a) (main >> a >> b >> b)); (* infeasible for race: cannot create non-unique (main >> a >> a) before unique prefix-ed (main >> a >> b >> b) *)
77
+
assert_equal false (may_be_ancestor (main >> a >> a) (main >> b >> a >> a)); (* 53-races-mhp/07-not-created5 *)
78
78
(* non-unique creates non-unique: prefix must be compatible *)
79
-
assert_equal false (may_create (main >> a >> b >> c >> c) (main >> b >> a >> c >> c)); (* infeasible for race: definitely_not_started requires (main >> a >> b or main >> a >> b >> c), where this must happen, to be must parent for (main >> b >> a >> c >> c), which it is not *)
79
+
assert_equal false (may_be_ancestor (main >> a >> b >> c >> c) (main >> b >> a >> c >> c)); (* infeasible for race: definitely_not_started requires (main >> a >> b or main >> a >> b >> c), where this must happen, to be must parent for (main >> b >> a >> c >> c), which it is not *)
80
80
(* non-unique creates non-unique: elements must not be removed *)
81
-
assert_equal false (may_create (main >> a >> b >> b) (main >> a >> c >> c)); (* from set *)(* 53-races-mhp/08-not-created6, also passes with simple may_create*)
82
-
assert_equal false (may_create (main >> a >> b >> b) (main >> b >> b)); (* from prefix *)(* infeasible for race: definitely_not_started requires (main >> a or main >> a >> b), where this must happen, to be must parent for (main >> b >> b), which it is not *)
81
+
assert_equal false (may_be_ancestor (main >> a >> b >> b) (main >> a >> c >> c)); (* from set *)(* 53-races-mhp/08-not-created6, also passes with simple may_be_ancestor*)
82
+
assert_equal false (may_be_ancestor (main >> a >> b >> b) (main >> b >> b)); (* from prefix *)(* infeasible for race: definitely_not_started requires (main >> a or main >> a >> b), where this must happen, to be must parent for (main >> b >> b), which it is not *)
83
83
(* non-unique creates non-unique: removed elements and set must be in new set *)
84
-
(* assert_equal false (may_create (main >> a >> b >> c >> c) (main >> a >> c >> c)); *)
84
+
(* assert_equal false (may_be_ancestor (main >> a >> b >> c >> c) (main >> a >> c >> c)); *)
85
85
(* TODO: cannot test due because by construction after prefix check? *)
86
86
(* non-unique creates non-unique *)
87
-
assert_equal true (may_create (main >> a >> a) (main >> a >> a));
88
-
assert_equal true (may_create (main >> a >> a) (main >> a >> a >> b));
89
-
assert_equal true (may_create (main >> a >> a) (main >> a >> b >> a));
90
-
assert_equal true (may_create (main >> a >> a) (main >> a >> b >> c >> a));
91
-
assert_equal true (may_create (main >> a >> b >> b) (main >> a >> b >> b));
92
-
assert_equal true (may_create (main >> a >> b >> b) (main >> a >> a >> b));
93
-
assert_equal true (may_create (main >> a >> b >> b) (main >> a >> b >> a));
94
-
assert_equal true (may_create (main >> a >> b >> b) (main >> b >> b >> a));
95
-
assert_equal true (may_create (main >> a >> b >> b) (main >> b >> a >> b));
87
+
assert_equal true (may_be_ancestor (main >> a >> a) (main >> a >> a));
88
+
assert_equal true (may_be_ancestor (main >> a >> a) (main >> a >> a >> b));
89
+
assert_equal true (may_be_ancestor (main >> a >> a) (main >> a >> b >> a));
90
+
assert_equal true (may_be_ancestor (main >> a >> a) (main >> a >> b >> c >> a));
91
+
assert_equal true (may_be_ancestor (main >> a >> b >> b) (main >> a >> b >> b));
92
+
assert_equal true (may_be_ancestor (main >> a >> b >> b) (main >> a >> a >> b));
93
+
assert_equal true (may_be_ancestor (main >> a >> b >> b) (main >> a >> b >> a));
94
+
assert_equal true (may_be_ancestor (main >> a >> b >> b) (main >> b >> b >> a));
95
+
assert_equal true (may_be_ancestor (main >> a >> b >> b) (main >> b >> a >> b));
0 commit comments