@@ -2531,6 +2531,8 @@ def set_multiple_statements(subjects: Union[list, tuple], predicate: Relation, o
25312531 R22__is_functional = True ,
25322532)
25332533
2534+ R17 ["is subproperty of" ].set_relation (R60 ["is transitive" ], True )
2535+
25342536# R61["does not have property"] already defined above
25352537
25362538R62 = create_builtin_relation (
@@ -3063,6 +3065,30 @@ def unpack_tuple_item(tuple_item):
30633065 R68__is_inverse_of = R85 ["is modeled by" ]
30643066)
30653067
3068+ I66 = create_builtin_item (
3069+ key_str = "I66" ,
3070+ R1__has_label = "propagation transitive relations" ,
3071+ R2__has_description = (
3072+ "create new relations resulting from transtitive relations"
3073+ ),
3074+ R4__is_instance_of = I41 ["semantic rule" ],
3075+ )
3076+
3077+ with I66 .scope ("setting" ) as cm :
3078+ cm .new_var (i1 = instance_of (I1 ["general item" ]))
3079+ cm .new_var (i2 = instance_of (I1 ["general item" ]))
3080+ cm .new_var (i3 = instance_of (I1 ["general item" ]))
3081+ cm .new_rel_var ("r1" )
3082+
3083+ with I66 .scope ("premise" ) as cm :
3084+ cm .new_rel (cm .r1 , R60 ["is transitive" ], True )
3085+ cm .new_rel (cm .i1 , cm .r1 , cm .i2 )
3086+ cm .new_rel (cm .i2 , cm .r1 , cm .i3 )
3087+
3088+ with I66 .scope ("assertion" ) as cm :
3089+ # the qualifier prevents the creation of duplicated
3090+ cm .new_rel (cm .i1 , cm .r1 , cm .i3 , qualifiers = [qf_prevent_duplicate_stms ])
3091+
30663092# next keys: I66, R87
30673093
30683094
0 commit comments