:- module rtree.
:- use_module builtin, float, int, list, private_builtin, require.
:- type rtree.rtree_2(K, V)
	--->	leaf(V)
	;	two(K, rtree.rtree_2(K, V), K, rtree.rtree_2(K, V))
	;	three(K, rtree.rtree_2(K, V), K, rtree.rtree_2(K, V), K, rtree.rtree_2(K, V))
	;	four(K, rtree.rtree_2(K, V), K, rtree.rtree_2(K, V), K, rtree.rtree_2(K, V), K, rtree.rtree_2(K, V)).
:- type rtree.rtree(K, V)
	--->	empty 
	;	one(K, V)
	;	rtree(rtree.rtree_2(K, V)).
:- type rtree.orphans(K, V) == list.list(rtree.orphan(K, V)).
:- type rtree.orphan(K, V)
	--->	orphan(K, rtree.rtree_2(K, V)).
:- type rtree.min_of_two_result
	--->	min2_first 
	;	min2_second .
:- type rtree.min_of_three_result
	--->	min3_first 
	;	min3_second 
	;	min3_third .
:- type rtree.min_of_four_result
	--->	min4_first 
	;	min4_second 
	;	min4_third 
	;	min4_fourth .
:- type rtree.delete_info(K, V)
	--->	deleting(list.list(rtree.orphan(K, V)))
	;	finished(int, list.list(rtree.orphan(K, V))).
:- inst (rtree.four) == bound(four(ground, ground, ground, ground, ground, ground, ground, ground)).
:- instance (rtree.region(rtree.box3d)) where [
	pred((rtree.intersects)/2) is (rtree.box3d_intersects),
	pred((rtree.contains)/2) is (rtree.box3d_contains),
	func((rtree.size)/1) is (rtree.box3d_volume),
	func((rtree.bounding_region)/2) is (rtree.box3d_bounding_region),
	func((rtree.bounding_region_size)/2) is (rtree.box3d_bounding_region_volume)
].
:- instance (rtree.region(rtree.box)) where [
	pred((rtree.intersects)/2) is (rtree.box_intersects),
	pred((rtree.contains)/2) is (rtree.box_contains),
	func((rtree.size)/1) is (rtree.box_area),
	func((rtree.bounding_region)/2) is (rtree.box_bounding_region),
	func((rtree.bounding_region_size)/2) is (rtree.box_bounding_region_area)
].
:- instance (rtree.region(rtree.interval)) where [
	pred((rtree.intersects)/2) is (rtree.interval_intersects),
	pred((rtree.contains)/2) is (rtree.interval_contains),
	func((rtree.size)/1) is (rtree.interval_length),
	func((rtree.bounding_region)/2) is (rtree.interval_bounding_region),
	func((rtree.bounding_region_size)/2) is (rtree.interval_bounding_region_length)
].
:- pred rtree.search_general_2(rtree.rtree_2(K_1, V_2), (pred K_1), (pred V_2), list.list(V_2), list.list(V_2)).
:- mode rtree.search_general_2((builtin.in), builtin.in((pred((builtin.in)) is semidet)), builtin.in((pred((builtin.in)) is semidet)), (builtin.in), (builtin.out)) is det.
:- pred rtree.maybe_limit(K_1, pred(K_1, E_2), E_2, E_2).
:- mode rtree.maybe_limit((builtin.in), builtin.in((pred((builtin.in), (builtin.out)) is semidet)), (builtin.in), (builtin.out)) is semidet.
:- pred rtree.search_first_2(rtree.rtree_2(K_1, V_2), pred(K_1, E_3), pred(V_2, E_3), E_3, V_2, E_3).
:- mode rtree.search_first_2((builtin.in), (pred((builtin.in), (builtin.out)) is semidet), (pred((builtin.in), (builtin.out)) is semidet), (builtin.in), (builtin.out), (builtin.out)) is semidet.
:- pred rtree.search_general_fold_2(rtree.rtree_2(K_1, V_2), (pred K_1), pred(K_1, V_2, A_3, A_3), A_3, A_3).
:- mode rtree.search_general_fold_2((builtin.in), (pred((builtin.in)) is semidet), (pred((builtin.in), (builtin.in), (builtin.in), (builtin.out)) is det), (builtin.in), (builtin.out)) is det.
:- mode rtree.search_general_fold_2((builtin.in), (pred((builtin.in)) is semidet), (pred((builtin.in), (builtin.in), (builtin.di), (builtin.uo)) is det), (builtin.di), (builtin.uo)) is det.
:- pred rtree.fold_2(pred(K_1, V_2, A_3, A_3), rtree.rtree_2(K_1, V_2), A_3, A_3).
:- mode rtree.fold_2((pred((builtin.in), (builtin.in), (builtin.in), (builtin.out)) is det), (builtin.in), (builtin.in), (builtin.out)) is det.
:- mode rtree.fold_2((pred((builtin.in), (builtin.in), (builtin.di), (builtin.uo)) is det), (builtin.in), (builtin.di), (builtin.uo)) is det.
:- mode rtree.fold_2((pred((builtin.in), (builtin.in), (builtin.in), (builtin.out)) is semidet), (builtin.in), (builtin.in), (builtin.out)) is semidet.
:- pred rtree.map_values_2(pred(K_1, V_2, W_3), rtree.rtree_2(K_1, V_2), rtree.rtree_2(K_1, W_3)).
:- mode rtree.map_values_2((pred((builtin.in), (builtin.in), (builtin.out)) is det), (builtin.in), (builtin.out)) is det.
:- mode rtree.map_values_2((pred((builtin.in), (builtin.in), (builtin.out)) is semidet), (builtin.in), (builtin.out)) is semidet.
:- pred rtree.box3d_intersects(rtree.box3d, rtree.box3d).
:- mode rtree.box3d_intersects((builtin.in), (builtin.in)) is semidet.
:- pred rtree.box3d_contains(rtree.box3d, rtree.box3d).
:- mode rtree.box3d_contains((builtin.in), (builtin.in)) is semidet.
:- func rtree.box3d_volume(rtree.box3d) = float.
:- mode rtree.box3d_volume((builtin.in)) = (builtin.out) is det.
:- func rtree.box3d_bounding_region(rtree.box3d, rtree.box3d) = rtree.box3d.
:- mode rtree.box3d_bounding_region((builtin.in), (builtin.in)) = (builtin.out) is det.
:- func rtree.box3d_bounding_region_volume(rtree.box3d, rtree.box3d) = float.
:- mode rtree.box3d_bounding_region_volume((builtin.in), (builtin.in)) = (builtin.out) is det.
:- pred rtree.box_intersects(rtree.box, rtree.box).
:- mode rtree.box_intersects((builtin.in), (builtin.in)) is semidet.
:- pred rtree.box_contains(rtree.box, rtree.box).
:- mode rtree.box_contains((builtin.in), (builtin.in)) is semidet.
:- func rtree.box_area(rtree.box) = float.
:- mode rtree.box_area((builtin.in)) = (builtin.out) is det.
:- func rtree.box_bounding_region(rtree.box, rtree.box) = rtree.box.
:- mode rtree.box_bounding_region((builtin.in), (builtin.in)) = (builtin.out) is det.
:- func rtree.box_bounding_region_area(rtree.box, rtree.box) = float.
:- mode rtree.box_bounding_region_area((builtin.in), (builtin.in)) = (builtin.out) is det.
:- pred rtree.interval_intersects(rtree.interval, rtree.interval).
:- mode rtree.interval_intersects((builtin.in), (builtin.in)) is semidet.
:- pred rtree.interval_contains(rtree.interval, rtree.interval).
:- mode rtree.interval_contains((builtin.in), (builtin.in)) is semidet.
:- func rtree.interval_length(rtree.interval) = float.
:- mode rtree.interval_length((builtin.in)) = (builtin.out) is det.
:- func rtree.interval_bounding_region(rtree.interval, rtree.interval) = rtree.interval.
:- mode rtree.interval_bounding_region((builtin.in), (builtin.in)) = (builtin.out) is det.
:- func rtree.interval_bounding_region_length(rtree.interval, rtree.interval) = float.
:- mode rtree.interval_bounding_region_length((builtin.in), (builtin.in)) = (builtin.out) is det.
rtree.init = rtree.empty.
rtree.is_empty(rtree.empty).
rtree.insert(K_5, V_6, STATE_VARIABLE_Tree_0_8) = STATE_VARIABLE_Tree_9 :-
    rtree.insert(K_5, V_6, STATE_VARIABLE_Tree_0_8, STATE_VARIABLE_Tree_9).
rtree.search_general(_KeyTest_5, _ValueTest_6, rtree.empty) = list.[].
rtree.search_general(KeyTest_7, ValueTest_8, rtree.one(K_9, V_10)) = HeadVar__4_4 :-
    (if
      call(KeyTest_7, K_9),
      call(ValueTest_8, V_10)
    then
      HeadVar__4_4 = list.[V_10 | V_11] : list.list(V_2),
      V_11 = list.[] : list.list(V_2)
    else
      HeadVar__4_4 = list.[] : list.list(V_2)
    ).
rtree.search_general(KeyTest_12, ValueTest_13, rtree.rtree(T_14)) = Values_15 :-
    V_16 = list.[] : list.list(V_2),
    rtree.search_general_2(T_14, KeyTest_12, ValueTest_13, V_16, Values_15).
rtree.search_first(P_7, C_8, rtree.one(K0_9, V0_10), L_11, V0_10, E0_12) :-
    rtree.maybe_limit(K0_9, P_7, L_11, V_13),
    rtree.maybe_limit(V0_10, C_8, L_11, E0_12).
rtree.search_first(P_14, C_15, rtree.rtree(T_16), L_17, V_18, E_19) :-
    rtree.search_first_2(T_16, P_14, C_15, L_17, V_18, E_19).
rtree.search_general_fold(V_6, V_7, rtree.empty, STATE_VARIABLE_Acc_0_9, STATE_VARIABLE_Acc_10) :-
    STATE_VARIABLE_Acc_10 = STATE_VARIABLE_Acc_0_9.
rtree.search_general_fold(KTest_11, VPred_12, rtree.one(K_13, V_14), STATE_VARIABLE_Acc_0_16, STATE_VARIABLE_Acc_17) :-
    (if
      call(KTest_11, K_13)
    then
      call(VPred_12, K_13, V_14, STATE_VARIABLE_Acc_0_16, STATE_VARIABLE_Acc_17)
    else
      STATE_VARIABLE_Acc_17 = STATE_VARIABLE_Acc_0_16
    ).
rtree.search_general_fold(KTest_19, VPred_20, rtree.rtree(T_21), STATE_VARIABLE_Acc_0_23, STATE_VARIABLE_Acc_24) :-
    rtree.search_general_fold_2(T_21, KTest_19, VPred_20, STATE_VARIABLE_Acc_0_23, STATE_VARIABLE_Acc_24).
rtree.fold(_P_5, rtree.empty, STATE_VARIABLE_Acc_0_7, STATE_VARIABLE_Acc_8) :-
    STATE_VARIABLE_Acc_8 = STATE_VARIABLE_Acc_0_7.
rtree.fold(P_9, rtree.one(K_10, V_11), STATE_VARIABLE_Acc_0_13, STATE_VARIABLE_Acc_14) :-
    call(P_9, K_10, V_11, STATE_VARIABLE_Acc_0_13, STATE_VARIABLE_Acc_14).
rtree.fold(P_16, rtree.rtree(T_17), STATE_VARIABLE_Acc_0_19, STATE_VARIABLE_Acc_20) :-
    rtree.fold_2(P_16, T_17, STATE_VARIABLE_Acc_0_19, STATE_VARIABLE_Acc_20).
rtree.map_values(V_4, rtree.empty, rtree.empty).
rtree.map_values(P_5, rtree.one(K_6, V_7), rtree.one(K_6, W_8)) :-
    call(P_5, K_6, V_7, W_8).
rtree.map_values(P_9, rtree.rtree(T_10), rtree.rtree(U_11)) :-
    rtree.map_values_2(P_9, T_10, U_11).
rtree.maybe_limit(K_5, P_6, L_7, E_8) :-
    call(P_6, K_5, E_8),
    V_9 = builtin.(<) : builtin.comparison_result,
    builtin.compare(V_9, E_8, L_7).
:- pragma exceptions(predicate, (rtree.intersects), 2, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (rtree.contains), 2, 0, may_throw(user_exception)).
:- pragma exceptions(function, (rtree.size), 2, 0, may_throw(user_exception)).
:- pragma exceptions(function, (rtree.bounding_region), 3, 0, may_throw(user_exception)).
:- pragma exceptions(function, (rtree.bounding_region_size), 3, 0, may_throw(user_exception)).
:- pragma exceptions(function, (rtree.init), 1, 0, will_not_throw).
:- pragma exceptions(predicate, (rtree.is_empty), 1, 0, will_not_throw).
:- pragma exceptions(function, (rtree.insert), 4, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (rtree.insert), 4, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (rtree.delete), 4, 0, may_throw(user_exception)).
:- pragma exceptions(function, (rtree.search_intersects), 3, 0, may_throw(user_exception)).
:- pragma exceptions(function, (rtree.search_contains), 3, 0, may_throw(user_exception)).
:- pragma exceptions(function, (rtree.search_general), 4, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (rtree.search_first), 6, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (rtree.search_general_fold), 5, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (rtree.search_general_fold), 5, 1, may_throw(user_exception)).
:- pragma exceptions(predicate, (rtree.fold), 4, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (rtree.fold), 4, 1, may_throw(user_exception)).
:- pragma exceptions(predicate, (rtree.fold), 4, 2, may_throw(user_exception)).
:- pragma exceptions(predicate, (rtree.map_values), 3, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (rtree.map_values), 3, 1, may_throw(user_exception)).
:- pragma exceptions(predicate, (rtree.search_general_2), 5, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (rtree.maybe_limit), 4, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (rtree.search_first_2), 6, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (rtree.search_general_fold_2), 5, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (rtree.search_general_fold_2), 5, 1, may_throw(user_exception)).
:- pragma exceptions(predicate, (rtree.fold_2), 4, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (rtree.fold_2), 4, 1, may_throw(user_exception)).
:- pragma exceptions(predicate, (rtree.fold_2), 4, 2, may_throw(user_exception)).
:- pragma exceptions(predicate, (rtree.map_values_2), 3, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (rtree.map_values_2), 3, 1, may_throw(user_exception)).
:- pragma exceptions(predicate, (rtree.box3d_intersects), 2, 0, will_not_throw).
:- pragma exceptions(predicate, (rtree.box3d_contains), 2, 0, will_not_throw).
:- pragma exceptions(function, (rtree.box3d_volume), 2, 0, will_not_throw).
:- pragma exceptions(function, (rtree.box3d_bounding_region), 3, 0, may_throw(user_exception)).
:- pragma exceptions(function, (rtree.box3d_bounding_region_volume), 3, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (rtree.box_intersects), 2, 0, will_not_throw).
:- pragma exceptions(predicate, (rtree.box_contains), 2, 0, will_not_throw).
:- pragma exceptions(function, (rtree.box_area), 2, 0, will_not_throw).
:- pragma exceptions(function, (rtree.box_bounding_region), 3, 0, may_throw(user_exception)).
:- pragma exceptions(function, (rtree.box_bounding_region_area), 3, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (rtree.interval_intersects), 2, 0, will_not_throw).
:- pragma exceptions(predicate, (rtree.interval_contains), 2, 0, will_not_throw).
:- pragma exceptions(function, (rtree.interval_length), 2, 0, will_not_throw).
:- pragma exceptions(function, (rtree.interval_bounding_region), 3, 0, may_throw(user_exception)).
:- pragma exceptions(function, (rtree.interval_bounding_region_length), 3, 0, may_throw(user_exception)).
:- pragma termination_info(rtree.intersects((builtin.in), (builtin.in)), infinite, can_loop).
:- pragma termination_info(rtree.contains((builtin.in), (builtin.in)), infinite, can_loop).
:- pragma termination_info(rtree.size((builtin.in)) = (builtin.out), infinite, can_loop).
:- pragma termination_info(rtree.bounding_region((builtin.in), (builtin.in)) = (builtin.out), infinite, can_loop).
:- pragma termination_info(rtree.bounding_region_size((builtin.in), (builtin.in)) = (builtin.out), infinite, can_loop).
:- pragma termination_info((rtree.init) = (builtin.uo), finite(0, [no, no, no]), cannot_loop).
:- pragma termination_info(rtree.is_empty((builtin.in)), finite(0, [no, no, no]), cannot_loop).
:- pragma termination_info(rtree.insert((builtin.in), (builtin.in), (builtin.in)) = (builtin.out), infinite, can_loop).
:- pragma termination_info(rtree.insert((builtin.in), (builtin.in), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(rtree.delete((builtin.in), (builtin.in), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(rtree.search_intersects((builtin.in), (builtin.in)) = (builtin.out), finite(0, [no, no, yes, no, no]), can_loop).
:- pragma termination_info(rtree.search_contains((builtin.in), (builtin.in)) = (builtin.out), finite(0, [no, no, yes, no, no]), can_loop).
:- pragma termination_info(rtree.search_general(builtin.in((pred((builtin.in)) is semidet)), builtin.in((pred((builtin.in)) is semidet)), (builtin.in)) = (builtin.out), infinite, can_loop).
:- pragma termination_info(rtree.search_first((pred((builtin.in), (builtin.out)) is semidet), (pred((builtin.in), (builtin.out)) is semidet), (builtin.in), (builtin.in), (builtin.out), (builtin.out)), infinite, can_loop).
:- pragma termination_info(rtree.search_general_fold((pred((builtin.in)) is semidet), (pred((builtin.in), (builtin.in), (builtin.in), (builtin.out)) is det), (builtin.in), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(rtree.search_general_fold((pred((builtin.in)) is semidet), (pred((builtin.in), (builtin.in), (builtin.di), (builtin.uo)) is det), (builtin.in), (builtin.di), (builtin.uo)), infinite, can_loop).
:- pragma termination_info(rtree.fold((pred((builtin.in), (builtin.in), (builtin.in), (builtin.out)) is det), (builtin.in), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(rtree.fold((pred((builtin.in), (builtin.in), (builtin.di), (builtin.uo)) is det), (builtin.in), (builtin.di), (builtin.uo)), infinite, can_loop).
:- pragma termination_info(rtree.fold((pred((builtin.in), (builtin.in), (builtin.in), (builtin.out)) is semidet), (builtin.in), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(rtree.map_values((pred((builtin.in), (builtin.in), (builtin.out)) is det), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(rtree.map_values((pred((builtin.in), (builtin.in), (builtin.out)) is semidet), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(rtree.search_general_2((builtin.in), builtin.in((pred((builtin.in)) is semidet)), builtin.in((pred((builtin.in)) is semidet)), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(rtree.maybe_limit((builtin.in), builtin.in((pred((builtin.in), (builtin.out)) is semidet)), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(rtree.search_first_2((builtin.in), (pred((builtin.in), (builtin.out)) is semidet), (pred((builtin.in), (builtin.out)) is semidet), (builtin.in), (builtin.out), (builtin.out)), infinite, can_loop).
:- pragma termination_info(rtree.search_general_fold_2((builtin.in), (pred((builtin.in)) is semidet), (pred((builtin.in), (builtin.in), (builtin.in), (builtin.out)) is det), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(rtree.search_general_fold_2((builtin.in), (pred((builtin.in)) is semidet), (pred((builtin.in), (builtin.in), (builtin.di), (builtin.uo)) is det), (builtin.di), (builtin.uo)), infinite, can_loop).
:- pragma termination_info(rtree.fold_2((pred((builtin.in), (builtin.in), (builtin.in), (builtin.out)) is det), (builtin.in), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(rtree.fold_2((pred((builtin.in), (builtin.in), (builtin.di), (builtin.uo)) is det), (builtin.in), (builtin.di), (builtin.uo)), infinite, can_loop).
:- pragma termination_info(rtree.fold_2((pred((builtin.in), (builtin.in), (builtin.in), (builtin.out)) is semidet), (builtin.in), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(rtree.map_values_2((pred((builtin.in), (builtin.in), (builtin.out)) is det), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(rtree.map_values_2((pred((builtin.in), (builtin.in), (builtin.out)) is semidet), (builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(rtree.box3d_intersects((builtin.in), (builtin.in)), finite(0, [no, no]), cannot_loop).
:- pragma termination_info(rtree.box3d_contains((builtin.in), (builtin.in)), finite(0, [no, no]), cannot_loop).
:- pragma termination_info(rtree.box3d_volume((builtin.in)) = (builtin.out), finite(0, [no, no]), cannot_loop).
:- pragma termination_info(rtree.box3d_bounding_region((builtin.in), (builtin.in)) = (builtin.out), infinite, can_loop).
:- pragma termination_info(rtree.box3d_bounding_region_volume((builtin.in), (builtin.in)) = (builtin.out), finite(0, [no, no, no]), can_loop).
:- pragma termination_info(rtree.box_intersects((builtin.in), (builtin.in)), finite(0, [no, no]), cannot_loop).
:- pragma termination_info(rtree.box_contains((builtin.in), (builtin.in)), finite(0, [no, no]), cannot_loop).
:- pragma termination_info(rtree.box_area((builtin.in)) = (builtin.out), finite(0, [no, no]), cannot_loop).
:- pragma termination_info(rtree.box_bounding_region((builtin.in), (builtin.in)) = (builtin.out), infinite, can_loop).
:- pragma termination_info(rtree.box_bounding_region_area((builtin.in), (builtin.in)) = (builtin.out), finite(0, [no, no, no]), can_loop).
:- pragma termination_info(rtree.interval_intersects((builtin.in), (builtin.in)), finite(0, [no, no]), cannot_loop).
:- pragma termination_info(rtree.interval_contains((builtin.in), (builtin.in)), finite(0, [no, no]), cannot_loop).
:- pragma termination_info(rtree.interval_length((builtin.in)) = (builtin.out), finite(0, [no, no]), cannot_loop).
:- pragma termination_info(rtree.interval_bounding_region((builtin.in), (builtin.in)) = (builtin.out), infinite, can_loop).
:- pragma termination_info(rtree.interval_bounding_region_length((builtin.in), (builtin.in)) = (builtin.out), finite(0, [no, no, no]), can_loop).
:- pragma termination_info(rtree.'ClassMethod_for_rtree__region____rtree__interval__arity0______rtree__intersects_2'((builtin.in), (builtin.in)), finite(0, [no, no]), cannot_loop).
:- pragma termination_info(rtree.'ClassMethod_for_rtree__region____rtree__interval__arity0______rtree__contains_2'((builtin.in), (builtin.in)), finite(0, [no, no]), cannot_loop).
:- pragma termination_info(rtree.'ClassMethod_for_rtree__region____rtree__interval__arity0______rtree__size_1'((builtin.in)) = (builtin.out), finite(0, [no, no]), cannot_loop).
:- pragma termination_info(rtree.'ClassMethod_for_rtree__region____rtree__interval__arity0______rtree__bounding_region_2'((builtin.in), (builtin.in)) = (builtin.out), infinite, can_loop).
:- pragma termination_info(rtree.'ClassMethod_for_rtree__region____rtree__interval__arity0______rtree__bounding_region_size_2'((builtin.in), (builtin.in)) = (builtin.out), finite(0, [no, no, no]), can_loop).
:- pragma termination_info(rtree.'ClassMethod_for_rtree__region____rtree__box__arity0______rtree__intersects_2'((builtin.in), (builtin.in)), finite(0, [no, no]), cannot_loop).
:- pragma termination_info(rtree.'ClassMethod_for_rtree__region____rtree__box__arity0______rtree__contains_2'((builtin.in), (builtin.in)), finite(0, [no, no]), cannot_loop).
:- pragma termination_info(rtree.'ClassMethod_for_rtree__region____rtree__box__arity0______rtree__size_1'((builtin.in)) = (builtin.out), finite(0, [no, no]), cannot_loop).
:- pragma termination_info(rtree.'ClassMethod_for_rtree__region____rtree__box__arity0______rtree__bounding_region_2'((builtin.in), (builtin.in)) = (builtin.out), infinite, can_loop).
:- pragma termination_info(rtree.'ClassMethod_for_rtree__region____rtree__box__arity0______rtree__bounding_region_size_2'((builtin.in), (builtin.in)) = (builtin.out), finite(0, [no, no, no]), can_loop).
:- pragma termination_info(rtree.'ClassMethod_for_rtree__region____rtree__box3d__arity0______rtree__intersects_2'((builtin.in), (builtin.in)), finite(0, [no, no]), cannot_loop).
:- pragma termination_info(rtree.'ClassMethod_for_rtree__region____rtree__box3d__arity0______rtree__contains_2'((builtin.in), (builtin.in)), finite(0, [no, no]), cannot_loop).
:- pragma termination_info(rtree.'ClassMethod_for_rtree__region____rtree__box3d__arity0______rtree__size_1'((builtin.in)) = (builtin.out), finite(0, [no, no]), cannot_loop).
:- pragma termination_info(rtree.'ClassMethod_for_rtree__region____rtree__box3d__arity0______rtree__bounding_region_2'((builtin.in), (builtin.in)) = (builtin.out), infinite, can_loop).
:- pragma termination_info(rtree.'ClassMethod_for_rtree__region____rtree__box3d__arity0______rtree__bounding_region_size_2'((builtin.in), (builtin.in)) = (builtin.out), finite(0, [no, no, no]), can_loop).
