symbolic;


nil


on1 'assert;


nil


struct Tag;
*** struct tag is not checked 



nil

struct Posnumber asserted by posnumberp;


nil


procedure posnumberp(s);
   numberp s and s > 0;


posnumberp


asserted procedure hugo(x1: Number, x2: Posnumber, x3: Tag): DottedPair;
   x3 . (x1 + x2);


(hugo)


hugo(1, 1, 'y);


(y . 2)

hugo(1, -1, 'y);


(y . 0)


assert_install hugo;


nil


hugo(1, 1, 'y);


(y . 2)

hugo(1, -1, 'y);


*** declaration hugo: (number, posnumber, tag) -> dottedpair violated by arg2 -1
 

(y . 0)


assert_uninstall hugo;


nil


declare addf: (SF, SF) -> SF;


(addf hugo)

declare addsq: (SQ, SQ) -> SQ;


(addsq addf hugo)


assert_install addf, addsq;


nil


addsq(simp 'x, numr simp 'x);


*** declaration addsq: (sq, sq) -> sq violated by arg2 (((x . 1) . 1)) 

*** declaration addf: (sf, sf) -> sf violated by arg2 ((x . 1) . 1) 

*** declaration addf: (sf, sf) -> sf violated by result ((x . 1) . 1) 

(1)


algebraic;



assert_analyze();

------------------------------------------------------------------------
function          #calls              #bad calls   #assertion violations
------------------------------------------------------------------------
addf                   1                       1                       2
addsq                  1                       1                       1
hugo                   2                       1                       1
------------------------------------------------------------------------
sum                    4                       3                       4
------------------------------------------------------------------------


assert_uninstall_all();


*** assert_uninstall addsq 

*** assert_uninstall addf 


end;

