mlliarm / ia

An interval arithmetic library in Logtalk

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

TODO

mlliarm opened this issue · comments

Here I'll write the future ideas that I have so far for this project.

Core features:

  • Support SWI-Prolog (threaded, 64 bits, version 8.5.5-3-gb856d332c-DIRTY) backend.
  • Support GNU-Prolog (64 bits, 1.5.0) backend.

Examples

  • Add basic examples of interval arithmetic.
    • See the first 3 chapters of the book of Moore et al (ref. no 1). There are some excellent examples there, from experimental physics and error propagation.
      • Chapter 1: [X].
      • Chapter 2: [X].
      • Chapter 3: [X].

Additional features:

  • First finish writing the tests for all the predicates in the interval_arithmetic library.
  • Implement the interval power predicate : X^n, where X is an interval i(a,b) and n is a number. Use recursion.
  • I'm also thinking of implementing some elementary interval functions (such as sin(X), cos(X), tan(x), ctg(x), sqrt(x), exp(x)) defined on intervals. Neumaier's book looks good for such purpose as it's more mathematically strict comparing to Moore's.
  • The second step would be to implement some interval methods for finding roots of functions for a certain interval. Example of such methods are interval bisection and interval Newton (see here and here).
  • The next step would be to create an automatic differentiation library for interval functions, as we'll be needing finding derivatives for methods such as the Interval Newton.
  • Then we could move into interval linear algebra. Perhaps the work of prof. Shary will be useful there, as he's been very active in the area of interval linear algebra.
  • The next step could be to implement some global optimization methods, such as those explained in Shary's paper, or Hansen's book.
  • Next, some applications to control theory, robotics or other fields.

Additional ideas are welcome.

Tested the library with SWI-Prolog, 64 bit, v.7.6.4 and it works just fine:

Welcome to SWI-Prolog (threaded, 64 bits, version 7.6.4)
SWI-Prolog comes with ABSOLUTELY NO WARRANTY. This is free software.
Please run ?- license. for legal details.

For online help and background, visit http://www.swi-prolog.org
For built-in help, use ?- help(Topic). or ?- apropos(Word).

?- logtalk_load(loader).
% [ /home/milia/logtalk/library/types/termp.lgt already loaded; skipping ]
% [ /home/milia/logtalk/library/types/term.lgt already loaded; skipping ]
% [ /home/milia/logtalk/library/types/atomic.lgt already loaded; skipping ]
% [ /home/milia/logtalk/library/types/atom.lgt already loaded; skipping ]
% [ /home/milia/logtalk/library/types/callable.lgt loaded ]
% [ /home/milia/logtalk/library/types/characterp.lgt loaded ]
% [ /home/milia/logtalk/library/types/character.lgt loaded ]
% [ /home/milia/logtalk/library/types/number.lgt already loaded; skipping ]
% [ /home/milia/logtalk/library/types/float.lgt already loaded; skipping ]
% [ /home/milia/logtalk/library/types/integer.lgt already loaded; skipping ]
% [ /home/milia/logtalk/library/types/natural.lgt loaded ]
% [ /home/milia/logtalk/library/types/compound.lgt already loaded; skipping ]
% [ /home/milia/logtalk/library/types/pairs.lgt loaded ]
% [ /home/milia/logtalk/library/types/listp.lgt already loaded; skipping ]
% [ /home/milia/logtalk/library/types/list.lgt already loaded; skipping ]
% [ /home/milia/logtalk/library/types/list1.lgt loaded ]
% [ /home/milia/logtalk/library/types/difflist.lgt loaded ]
% [ /home/milia/logtalk/library/types/numberlistp.lgt loaded ]
% [ /home/milia/logtalk/library/types/numberlist.lgt loaded ]
% [ /home/milia/logtalk/library/types/varlistp.lgt loaded ]
% [ /home/milia/logtalk/library/types/varlist.lgt loaded ]
% [ /home/milia/logtalk/library/types/comparingp.lgt loaded ]
% [ /home/milia/logtalk/library/types/type.lgt already loaded; skipping ]
% [ /home/milia/logtalk/library/types/loader.lgt loaded ]
% [ /home/milia/Documents/dev/logtalk/ia/interval_arithmeticp.lgt loaded ]
% [ /home/milia/Documents/dev/logtalk/ia/interval_arithmetic.lgt loaded ]
% [ /home/milia/Documents/dev/logtalk/ia/loader.lgt loaded ]
% (0 warnings)
true.

?- logtalk_load(tester).
% 
% tests started at 2022-01-10, 15:43:11
% 
% running tests from object tests
% file: /home/milia/Documents/dev/logtalk/ia/tests.lgt
% 
% interval_arithmetic_new_3_01: success
% interval_arithmetic_new_3_02: success
% interval_arithmetic_new_3_03: success
% interval_arithmetic_is_in_2_01: success
% interval_arithmetic_is_in_2_02: success
% interval_arithmetic_is_in_2_03: success
% interval_arithmetic_add_3_01: success
% interval_arithmetic_add_3_02: success
% interval_arithmetic_sub_3_01: success
% interval_arithmetic_sub_3_02: success
% interval_arithmetic_mul_3_01: success
% interval_arithmetic_mul_3_02: success
% interval_arithmetic_div_3_01: success
% interval_arithmetic_div_3_02: success
% interval_arithmetic_div_3_03: success
% interval_arithmetic_mid_2_01: success
% interval_arithmetic_mid_2_02: success
% interval_arithmetic_wid_2_01: success
% interval_arithmetic_wid_2_02: success
% interval_arithmetic_mag_2_01: success
% interval_arithmetic_mag_2_02: success
% interval_arithmetic_mig_2_01: success
% interval_arithmetic_mig_2_02: success
% interval_arithmetic_intersection_3_01: success
% interval_arithmetic_intersection_3_02: success
% interval_arithmetic_hull_3_01: success
% interval_arithmetic_hull_3_02: success
% 
% 27 tests: 0 skipped, 27 passed, 0 failed
% completed tests from object tests
% 
% 
% clause coverage ratio and covered clauses per entity predicate
% 
% interval_arithmetic: add/3 - 1/1 - (all)
% interval_arithmetic: (div)/3 - 1/1 - (all)
% interval_arithmetic: hull/3 - 1/1 - (all)
% interval_arithmetic: intersection/3 - 1/1 - (all)
% interval_arithmetic: is_in/2 - 1/1 - (all)
% interval_arithmetic: mag/2 - 1/1 - (all)
% interval_arithmetic: mid/2 - 1/1 - (all)
% interval_arithmetic: mig/2 - 1/1 - (all)
% interval_arithmetic: mul/3 - 1/1 - (all)
% interval_arithmetic: new/3 - 1/1 - (all)
% interval_arithmetic: sub/3 - 1/1 - (all)
% interval_arithmetic: wid/2 - 1/1 - (all)
% interval_arithmetic: 12 out of 12 clauses covered, 100.000000% coverage
% 
% 1 entity declared as covered containing 12 clauses
% 1 out of 1 entity covered, 100.000000% entity coverage
% 12 out of 12 clauses covered, 100.000000% clause coverage
% 
% tests ended at 2022-01-10, 15:43:11
% 
true.

Related commit: 44a7f0d.

Tested the library with SWI-Prolog (threaded, 64 bits, version 8.5.5-3-gb856d332c-DIRTY) and it works just fine:

Welcome to SWI-Prolog (threaded, 64 bits, version 8.5.5-3-gb856d332c-DIRTY)
SWI-Prolog comes with ABSOLUTELY NO WARRANTY. This is free software.
Please run ?- license. for legal details.

For online help and background, visit https://www.swi-prolog.org
For built-in help, use ?- help(Topic). or ?- apropos(Word).

?- logtalk_load(loader).
% [ /home/milia/logtalk/library/types/termp.lgt already loaded; skipping ]
% [ /home/milia/logtalk/library/types/term.lgt already loaded; skipping ]
% [ /home/milia/logtalk/library/types/atomic.lgt already loaded; skipping ]
% [ /home/milia/logtalk/library/types/atom.lgt already loaded; skipping ]
% [ /home/milia/logtalk/library/types/callable.lgt loaded ]
% [ /home/milia/logtalk/library/types/characterp.lgt loaded ]
% [ /home/milia/logtalk/library/types/character.lgt loaded ]
% [ /home/milia/logtalk/library/types/number.lgt already loaded; skipping ]
% [ /home/milia/logtalk/library/types/float.lgt already loaded; skipping ]
% [ /home/milia/logtalk/library/types/integer.lgt already loaded; skipping ]
% [ /home/milia/logtalk/library/types/natural.lgt loaded ]
% [ /home/milia/logtalk/library/types/compound.lgt already loaded; skipping ]
% [ /home/milia/logtalk/library/types/pairs.lgt loaded ]
% [ /home/milia/logtalk/library/types/listp.lgt already loaded; skipping ]
% [ /home/milia/logtalk/library/types/list.lgt already loaded; skipping ]
% [ /home/milia/logtalk/library/types/list1.lgt loaded ]
% [ /home/milia/logtalk/library/types/difflist.lgt loaded ]
% [ /home/milia/logtalk/library/types/numberlistp.lgt loaded ]
% [ /home/milia/logtalk/library/types/numberlist.lgt loaded ]
% [ /home/milia/logtalk/library/types/varlistp.lgt loaded ]
% [ /home/milia/logtalk/library/types/varlist.lgt loaded ]
% [ /home/milia/logtalk/library/types/comparingp.lgt loaded ]
% [ /home/milia/logtalk/library/types/type.lgt already loaded; skipping ]
% [ /home/milia/logtalk/library/types/loader.lgt loaded ]
% [ /home/milia/Documents/dev/logtalk/ia/interval_arithmetic_protocol.lgt loaded ]
% [ /home/milia/Documents/dev/logtalk/ia/interval_arithmetic.lgt loaded ]
% [ /home/milia/Documents/dev/logtalk/ia/loader.lgt loaded ]
% (0 warnings)
true.

?- logtalk_load(tester).
% 
% tests started at 2022-01-10, 20:06:52
% 
% running tests from object tests
% file: /home/milia/Documents/dev/logtalk/ia/tests.lgt
% 
% interval_arithmetic_new_3_01: success
% interval_arithmetic_new_3_02: success
% interval_arithmetic_new_3_03: success
% interval_arithmetic_is_in_2_01: success
% interval_arithmetic_is_in_2_02: success
% interval_arithmetic_is_in_2_03: success
% interval_arithmetic_add_3_01: success
% interval_arithmetic_add_3_02: success
% interval_arithmetic_sub_3_01: success
% interval_arithmetic_sub_3_02: success
% interval_arithmetic_mul_3_01: success
% interval_arithmetic_mul_3_02: success
% interval_arithmetic_div_3_01: success
% interval_arithmetic_div_3_02: success
% interval_arithmetic_div_3_03: success
% interval_arithmetic_mid_2_01: success
% interval_arithmetic_mid_2_02: success
% interval_arithmetic_wid_2_01: success
% interval_arithmetic_wid_2_02: success
% interval_arithmetic_mag_2_01: success
% interval_arithmetic_mag_2_02: success
% interval_arithmetic_mig_2_01: success
% interval_arithmetic_mig_2_02: success
% interval_arithmetic_intersection_3_01: success
% interval_arithmetic_intersection_3_02: success
% interval_arithmetic_hull_3_01: success
% interval_arithmetic_hull_3_02: success
% 
% 27 tests: 0 skipped, 27 passed, 0 failed
% completed tests from object tests
% 
% 
% clause coverage ratio and covered clauses per entity predicate
% 
% interval_arithmetic: add/3 - 1/1 - (all)
% interval_arithmetic: (div)/3 - 1/1 - (all)
% interval_arithmetic: hull/3 - 1/1 - (all)
% interval_arithmetic: intersection/3 - 1/1 - (all)
% interval_arithmetic: is_in/2 - 1/1 - (all)
% interval_arithmetic: mag/2 - 1/1 - (all)
% interval_arithmetic: mid/2 - 1/1 - (all)
% interval_arithmetic: mig/2 - 1/1 - (all)
% interval_arithmetic: mul/3 - 1/1 - (all)
% interval_arithmetic: new/3 - 1/1 - (all)
% interval_arithmetic: sub/3 - 1/1 - (all)
% interval_arithmetic: wid/2 - 1/1 - (all)
% interval_arithmetic: 12 out of 12 clauses covered, 100.000000% coverage
% 
% 1 entity declared as covered containing 12 clauses
% 1 out of 1 entity covered, 100.000000% entity coverage
% 12 out of 12 clauses covered, 100.000000% clause coverage
% 
% tests ended at 2022-01-10, 20:06:52
% 
true.

As mentioned in mlliarm/ia/issues/12#issuecomment-1009008243 GNU-Prolog 1.5.0 is supported too.

Since some files have been changed (see 8ab62b1) I've rerun the tests with GNU-Prolog 1.5.0.

GNU Prolog 1.5.0 (64 bits)
Compiled Jan 10 2022, 16:35:29 with gcc
Copyright (C) 1999-2022 Daniel Diaz

compiling /usr/share/logtalk/integration/logtalk_gp.pl for byte code...
/usr/share/logtalk/integration/logtalk_gp.pl compiled, 31 lines read - 402 bytes written, 13 ms
compiling /usr/share/logtalk/adapters/gnu.pl for byte code...
/usr/share/logtalk/adapters/gnu.pl compiled, 787 lines read - 31176 bytes written, 26 ms
compiling /usr/share/logtalk/paths/paths.pl for byte code...
/usr/share/logtalk/paths/paths.pl compiled, 299 lines read - 42021 bytes written, 24 ms
compiling /usr/share/logtalk/integration/logtalk_comp_gp.pl for byte code...
/usr/share/logtalk/integration/logtalk_comp_gp.pl compiled, 27241 lines read - 3898810 bytes written, 1134 ms
compiling /home/milia/logtalk/scratch/expanding_248406029_lgt.pl for byte code...
/home/milia/logtalk/scratch/expanding_248406029_lgt.pl compiled, 27 lines read - 9590 bytes written, 11 ms
compiling /home/milia/logtalk/scratch/monitoring_248406029_lgt.pl for byte code...
/home/milia/logtalk/scratch/monitoring_248406029_lgt.pl compiled, 26 lines read - 9118 bytes written, 14 ms
compiling /home/milia/logtalk/scratch/forwarding_248406029_lgt.pl for byte code...
/home/milia/logtalk/scratch/forwarding_248406029_lgt.pl compiled, 21 lines read - 6266 bytes written, 12 ms
compiling /home/milia/logtalk/scratch/user_248406029_lgt.pl for byte code...
/home/milia/logtalk/scratch/user_248406029_lgt.pl compiled, 45 lines read - 9744 bytes written, 12 ms
compiling /home/milia/logtalk/scratch/logtalk_248406029_lgt.pl for byte code...
/home/milia/logtalk/scratch/logtalk_248406029_lgt.pl compiled, 310 lines read - 149981 bytes written, 57 ms
compiling /home/milia/logtalk/scratch/core_messages_248406029_lgt.pl for byte code...
/home/milia/logtalk/scratch/core_messages_248406029_lgt.pl compiled, 367 lines read - 268160 bytes written, 92 ms
compiling /home/milia/logtalk/scratch/settings_229838580_lgt.pl for byte code...
/home/milia/logtalk/scratch/settings_229838580_lgt.pl compiled, 25 lines read - 5518 bytes written, 10 ms
compiling /home/milia/logtalk/tools/tutor/.lgt_tmp/loader_201082787_lgt.pl for byte code...
/home/milia/logtalk/tools/tutor/.lgt_tmp/loader_201082787_lgt.pl compiled, 4 lines read - 1072 bytes written, 12 ms
compiling /home/milia/logtalk/library/basic_types/.lgt_tmp/loader_244474867_lgt.pl for byte code...
/home/milia/logtalk/library/basic_types/.lgt_tmp/loader_244474867_lgt.pl compiled, 4 lines read - 1234 bytes written, 11 ms
compiling /home/milia/logtalk/library/types/.lgt_tmp/termp_36522154_lgt.pl for byte code...
/home/milia/logtalk/library/types/.lgt_tmp/termp_36522154_lgt.pl compiled, 71 lines read - 25137 bytes written, 15 ms
compiling /home/milia/logtalk/library/types/.lgt_tmp/term_36522154_lgt.pl for byte code...
/home/milia/logtalk/library/types/.lgt_tmp/term_36522154_lgt.pl compiled, 98 lines read - 37083 bytes written, 21 ms
compiling /home/milia/logtalk/library/types/.lgt_tmp/atomic_36522154_lgt.pl for byte code...
/home/milia/logtalk/library/types/.lgt_tmp/atomic_36522154_lgt.pl compiled, 31 lines read - 8864 bytes written, 11 ms
compiling /home/milia/logtalk/library/types/.lgt_tmp/atom_36522154_lgt.pl for byte code...
/home/milia/logtalk/library/types/.lgt_tmp/atom_36522154_lgt.pl compiled, 59 lines read - 25296 bytes written, 16 ms
compiling /home/milia/logtalk/library/types/.lgt_tmp/number_36522154_lgt.pl for byte code...
/home/milia/logtalk/library/types/.lgt_tmp/number_36522154_lgt.pl compiled, 67 lines read - 27535 bytes written, 18 ms
compiling /home/milia/logtalk/library/types/.lgt_tmp/float_36522154_lgt.pl for byte code...
/home/milia/logtalk/library/types/.lgt_tmp/float_36522154_lgt.pl compiled, 31 lines read - 8811 bytes written, 12 ms
compiling /home/milia/logtalk/library/types/.lgt_tmp/integer_36522154_lgt.pl for byte code...
/home/milia/logtalk/library/types/.lgt_tmp/integer_36522154_lgt.pl compiled, 70 lines read - 26050 bytes written, 19 ms
compiling /home/milia/logtalk/library/types/.lgt_tmp/compound_36522154_lgt.pl for byte code...
/home/milia/logtalk/library/types/.lgt_tmp/compound_36522154_lgt.pl compiled, 31 lines read - 9080 bytes written, 15 ms
compiling /home/milia/logtalk/library/types/.lgt_tmp/listp_36522154_lgt.pl for byte code...
/home/milia/logtalk/library/types/.lgt_tmp/listp_36522154_lgt.pl compiled, 276 lines read - 117668 bytes written, 38 ms
compiling /home/milia/logtalk/library/types/.lgt_tmp/list_36522154_lgt.pl for byte code...
/home/milia/logtalk/library/types/.lgt_tmp/list_36522154_lgt.pl compiled, 447 lines read - 173476 bytes written, 81 ms
compiling /home/milia/logtalk/library/types/.lgt_tmp/type_36522154_lgt.pl for byte code...
/home/milia/logtalk/library/types/.lgt_tmp/type_36522154_lgt.pl compiled, 338 lines read - 247829 bytes written, 84 ms
compiling /home/milia/logtalk/tools/tutor/.lgt_tmp/tutor_201082787_lgt.pl for byte code...
/home/milia/logtalk/tools/tutor/.lgt_tmp/tutor_201082787_lgt.pl compiled, 229 lines read - 174908 bytes written, 54 ms
| ?- logtalk_load(loader).
compiling /home/milia/Documents/dev/logtalk/ia/.lgt_tmp/loader_229838580_lgt.pl for byte code...
/home/milia/Documents/dev/logtalk/ia/.lgt_tmp/loader_229838580_lgt.pl compiled, 4 lines read - 1183 bytes written, 14 ms
compiling /home/milia/logtalk/library/types/.lgt_tmp/loader_36522154_lgt.pl for byte code...
/home/milia/logtalk/library/types/.lgt_tmp/loader_36522154_lgt.pl compiled, 4 lines read - 1281 bytes written, 10 ms
% [ /home/milia/logtalk/library/types/termp.lgt already loaded; skipping ]
% [ /home/milia/logtalk/library/types/term.lgt already loaded; skipping ]
% [ /home/milia/logtalk/library/types/atomic.lgt already loaded; skipping ]
% [ /home/milia/logtalk/library/types/atom.lgt already loaded; skipping ]
compiling /home/milia/logtalk/library/types/.lgt_tmp/callable_36522154_lgt.pl for byte code...
/home/milia/logtalk/library/types/.lgt_tmp/callable_36522154_lgt.pl compiled, 31 lines read - 9827 bytes written, 12 ms
% [ /home/milia/logtalk/library/types/callable.lgt loaded ]
compiling /home/milia/logtalk/library/types/.lgt_tmp/characterp_36522154_lgt.pl for byte code...
/home/milia/logtalk/library/types/.lgt_tmp/characterp_36522154_lgt.pl compiled, 125 lines read - 46540 bytes written, 22 ms
% [ /home/milia/logtalk/library/types/characterp.lgt loaded ]
compiling /home/milia/logtalk/library/types/.lgt_tmp/character_36522154_lgt.pl for byte code...
/home/milia/logtalk/library/types/.lgt_tmp/character_36522154_lgt.pl compiled, 169 lines read - 41255 bytes written, 28 ms
% [ /home/milia/logtalk/library/types/character.lgt loaded ]
% [ /home/milia/logtalk/library/types/number.lgt already loaded; skipping ]
% [ /home/milia/logtalk/library/types/float.lgt already loaded; skipping ]
% [ /home/milia/logtalk/library/types/integer.lgt already loaded; skipping ]
compiling /home/milia/logtalk/library/types/.lgt_tmp/natural_36522154_lgt.pl for byte code...
/home/milia/logtalk/library/types/.lgt_tmp/natural_36522154_lgt.pl compiled, 35 lines read - 11380 bytes written, 14 ms
% [ /home/milia/logtalk/library/types/natural.lgt loaded ]
% [ /home/milia/logtalk/library/types/compound.lgt already loaded; skipping ]
compiling /home/milia/logtalk/library/types/.lgt_tmp/pairs_36522154_lgt.pl for byte code...
/home/milia/logtalk/library/types/.lgt_tmp/pairs_36522154_lgt.pl compiled, 92 lines read - 34742 bytes written, 28 ms
% [ /home/milia/logtalk/library/types/pairs.lgt loaded ]
% [ /home/milia/logtalk/library/types/listp.lgt already loaded; skipping ]
% [ /home/milia/logtalk/library/types/list.lgt already loaded; skipping ]
compiling /home/milia/logtalk/library/types/.lgt_tmp/list1_36522154_lgt.pl for byte code...
/home/milia/logtalk/library/types/.lgt_tmp/list1_36522154_lgt.pl compiled, 35 lines read - 12793 bytes written, 15 ms
% [ /home/milia/logtalk/library/types/list1.lgt loaded ]
compiling /home/milia/logtalk/library/types/.lgt_tmp/difflist_36522154_lgt.pl for byte code...
/home/milia/logtalk/library/types/.lgt_tmp/difflist_36522154_lgt.pl compiled, 345 lines read - 169740 bytes written, 66 ms
% [ /home/milia/logtalk/library/types/difflist.lgt loaded ]
compiling /home/milia/logtalk/library/types/.lgt_tmp/numberlistp_36522154_lgt.pl for byte code...
/home/milia/logtalk/library/types/.lgt_tmp/numberlistp_36522154_lgt.pl compiled, 107 lines read - 47156 bytes written, 22 ms
% [ /home/milia/logtalk/library/types/numberlistp.lgt loaded ]
compiling /home/milia/logtalk/library/types/.lgt_tmp/numberlist_36522154_lgt.pl for byte code...
/home/milia/logtalk/library/types/.lgt_tmp/numberlist_36522154_lgt.pl compiled, 178 lines read - 75864 bytes written, 40 ms
% [ /home/milia/logtalk/library/types/numberlist.lgt loaded ]
compiling /home/milia/logtalk/library/types/.lgt_tmp/varlistp_36522154_lgt.pl for byte code...
/home/milia/logtalk/library/types/.lgt_tmp/varlistp_36522154_lgt.pl compiled, 135 lines read - 53072 bytes written, 25 ms
% [ /home/milia/logtalk/library/types/varlistp.lgt loaded ]
compiling /home/milia/logtalk/library/types/.lgt_tmp/varlist_36522154_lgt.pl for byte code...
/home/milia/logtalk/library/types/.lgt_tmp/varlist_36522154_lgt.pl compiled, 180 lines read - 69486 bytes written, 40 ms
% [ /home/milia/logtalk/library/types/varlist.lgt loaded ]
compiling /home/milia/logtalk/library/types/.lgt_tmp/comparingp_36522154_lgt.pl for byte code...
/home/milia/logtalk/library/types/.lgt_tmp/comparingp_36522154_lgt.pl compiled, 46 lines read - 15379 bytes written, 16 ms
% [ /home/milia/logtalk/library/types/comparingp.lgt loaded ]
% [ /home/milia/logtalk/library/types/type.lgt already loaded; skipping ]
% [ /home/milia/logtalk/library/types/loader.lgt loaded ]
compiling /home/milia/Documents/dev/logtalk/ia/.lgt_tmp/interval_arithmetic_protocol_229838580_lgt.pl for byte code...
/home/milia/Documents/dev/logtalk/ia/.lgt_tmp/interval_arithmetic_protocol_229838580_lgt.pl compiled, 52 lines read - 15764 bytes written, 13 ms
% [ /home/milia/Documents/dev/logtalk/ia/interval_arithmetic_protocol.lgt loaded ]
compiling /home/milia/Documents/dev/logtalk/ia/.lgt_tmp/interval_arithmetic_229838580_lgt.pl for byte code...
/home/milia/Documents/dev/logtalk/ia/.lgt_tmp/interval_arithmetic_229838580_lgt.pl compiled, 69 lines read - 29392 bytes written, 18 ms
% [ /home/milia/Documents/dev/logtalk/ia/interval_arithmetic.lgt loaded ]
% [ /home/milia/Documents/dev/logtalk/ia/loader.lgt loaded ]
% (0 warnings)

(185 ms) yes
| ?- logtalk_load(tester).
compiling /home/milia/Documents/dev/logtalk/ia/.lgt_tmp/tester_229838580_lgt.pl for byte code...
/home/milia/Documents/dev/logtalk/ia/.lgt_tmp/tester_229838580_lgt.pl compiled, 4 lines read - 1507 bytes written, 12 ms
compiling /home/milia/Documents/dev/logtalk/ia/.lgt_tmp/interval_arithmetic_protocol_229838580_lgt.pl for byte code...
/home/milia/Documents/dev/logtalk/ia/.lgt_tmp/interval_arithmetic_protocol_229838580_lgt.pl compiled, 52 lines read - 15879 bytes written, 15 ms
compiling /home/milia/Documents/dev/logtalk/ia/.lgt_tmp/interval_arithmetic_229838580_lgt.pl for byte code...
/home/milia/Documents/dev/logtalk/ia/.lgt_tmp/interval_arithmetic_229838580_lgt.pl compiled, 69 lines read - 48889 bytes written, 23 ms
compiling /home/milia/logtalk/tools/lgtunit/.lgt_tmp/loader_8325212_lgt.pl for byte code...
/home/milia/logtalk/tools/lgtunit/.lgt_tmp/loader_8325212_lgt.pl compiled, 4 lines read - 1352 bytes written, 8 ms
compiling /home/milia/logtalk/library/os/.lgt_tmp/loader_219619627_lgt.pl for byte code...
/home/milia/logtalk/library/os/.lgt_tmp/loader_219619627_lgt.pl compiled, 4 lines read - 1113 bytes written, 8 ms
compiling /home/milia/logtalk/library/os/.lgt_tmp/osp_219619627_lgt.pl for byte code...
/home/milia/logtalk/library/os/.lgt_tmp/osp_219619627_lgt.pl compiled, 181 lines read - 75321 bytes written, 28 ms
compiling /home/milia/logtalk/library/os/.lgt_tmp/os_219619627_lgt.pl for byte code...
/home/milia/logtalk/library/os/.lgt_tmp/os_219619627_lgt.pl compiled, 231 lines read - 128630 bytes written, 52 ms
compiling /home/milia/logtalk/library/os/.lgt_tmp/os_types_219619627_lgt.pl for byte code...
/home/milia/logtalk/library/os/.lgt_tmp/os_types_219619627_lgt.pl compiled, 35 lines read - 19745 bytes written, 16 ms
compiling /home/milia/logtalk/library/arbitrary/.lgt_tmp/loader_7133456_lgt.pl for byte code...
/home/milia/logtalk/library/arbitrary/.lgt_tmp/loader_7133456_lgt.pl compiled, 4 lines read - 1245 bytes written, 9 ms
compiling /home/milia/logtalk/library/random/.lgt_tmp/loader_134467479_lgt.pl for byte code...
/home/milia/logtalk/library/random/.lgt_tmp/loader_134467479_lgt.pl compiled, 4 lines read - 1176 bytes written, 9 ms
compiling /home/milia/logtalk/library/random/.lgt_tmp/randomp_134467479_lgt.pl for byte code...
/home/milia/logtalk/library/random/.lgt_tmp/randomp_134467479_lgt.pl compiled, 109 lines read - 45436 bytes written, 20 ms
compiling /home/milia/logtalk/library/random/.lgt_tmp/random_134467479_lgt.pl for byte code...
/home/milia/logtalk/library/random/.lgt_tmp/random_134467479_lgt.pl compiled, 195 lines read - 111211 bytes written, 43 ms
compiling /home/milia/logtalk/library/random/.lgt_tmp/backend_random_134467479_lgt.pl for byte code...
/home/milia/logtalk/library/random/.lgt_tmp/backend_random_134467479_lgt.pl compiled, 157 lines read - 73628 bytes written, 30 ms
compiling /home/milia/logtalk/library/random/.lgt_tmp/fast_random_134467479_lgt.pl for byte code...
/home/milia/logtalk/library/random/.lgt_tmp/fast_random_134467479_lgt.pl compiled, 195 lines read - 101672 bytes written, 42 ms
compiling /home/milia/logtalk/library/arbitrary/.lgt_tmp/arbitrary_7133456_lgt.pl for byte code...
/home/milia/logtalk/library/arbitrary/.lgt_tmp/arbitrary_7133456_lgt.pl compiled, 604 lines read - 270439 bytes written, 89 ms
compiling /home/milia/logtalk/tools/lgtunit/.lgt_tmp/lgtunit_8325212_lgt.pl for byte code...
/home/milia/logtalk/tools/lgtunit/.lgt_tmp/lgtunit_8325212_lgt.pl compiled, 1608 lines read - 1006258 bytes written, 307 ms
compiling /home/milia/logtalk/tools/lgtunit/.lgt_tmp/lgtunit_messages_8325212_lgt.pl for byte code...
/home/milia/logtalk/tools/lgtunit/.lgt_tmp/lgtunit_messages_8325212_lgt.pl compiled, 128 lines read - 86323 bytes written, 43 ms
compiling /home/milia/Documents/dev/logtalk/ia/.lgt_tmp/tests_229838580_lgt.pl for byte code...
/home/milia/Documents/dev/logtalk/ia/.lgt_tmp/tests_229838580_lgt.pl compiled, 233 lines read - 124239 bytes written, 42 ms
% 
% tests started at 2022-01-10, 20:21:15
% 
% running tests from object tests
% file: /home/milia/Documents/dev/logtalk/ia/tests.lgt
% 
% interval_arithmetic_new_3_01: success
% interval_arithmetic_new_3_02: success
% interval_arithmetic_new_3_03: success
% interval_arithmetic_is_in_2_01: success
% interval_arithmetic_is_in_2_02: success
% interval_arithmetic_is_in_2_03: success
% interval_arithmetic_add_3_01: success
% interval_arithmetic_add_3_02: success
% interval_arithmetic_sub_3_01: success
% interval_arithmetic_sub_3_02: success
% interval_arithmetic_mul_3_01: success
% interval_arithmetic_mul_3_02: success
% interval_arithmetic_div_3_01: success
% interval_arithmetic_div_3_02: success
% interval_arithmetic_div_3_03: success
% interval_arithmetic_mid_2_01: success
% interval_arithmetic_mid_2_02: success
% interval_arithmetic_wid_2_01: success
% interval_arithmetic_wid_2_02: success
% interval_arithmetic_mag_2_01: success
% interval_arithmetic_mag_2_02: success
% interval_arithmetic_mig_2_01: success
% interval_arithmetic_mig_2_02: success
% interval_arithmetic_intersection_3_01: success
% interval_arithmetic_intersection_3_02: success
% interval_arithmetic_hull_3_01: success
% interval_arithmetic_hull_3_02: success
% 
% 27 tests: 0 skipped, 27 passed, 0 failed
% completed tests from object tests
% 
% 
% clause coverage ratio and covered clauses per entity predicate
% 
% interval_arithmetic: add/3 - 1/1 - (all)
% interval_arithmetic: (div)/3 - 1/1 - (all)
% interval_arithmetic: hull/3 - 1/1 - (all)
% interval_arithmetic: intersection/3 - 1/1 - (all)
% interval_arithmetic: is_in/2 - 1/1 - (all)
% interval_arithmetic: mag/2 - 1/1 - (all)
% interval_arithmetic: mid/2 - 1/1 - (all)
% interval_arithmetic: mig/2 - 1/1 - (all)
% interval_arithmetic: mul/3 - 1/1 - (all)
% interval_arithmetic: new/3 - 1/1 - (all)
% interval_arithmetic: sub/3 - 1/1 - (all)
% interval_arithmetic: wid/2 - 1/1 - (all)
% interval_arithmetic: 12 out of 12 clauses covered, 100.000000% coverage
% 
% 1 entity declared as covered containing 12 clauses
% 1 out of 1 entity covered, 100.000000% entity coverage
% 12 out of 12 clauses covered, 100.000000% clause coverage
% 
% tests ended at 2022-01-10, 20:21:15
% 

(669 ms) yes

All good.