home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / lifeos2.zip / LIFE-1.02 / TESTS / LF / BRUNOBUG.LF < prev    next >
Text File  |  1996-06-04  |  2KB  |  95 lines

  1. % The Brunobug saga: a work in six fits
  2. % Final fix: 15.2.94
  3.  
  4. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  5. % Fit the original (From Bruno, 3.2.94):
  6.  
  7. :: titi(arg => 1).
  8. :: pb(action => Action).
  9.  
  10. foo(X,Y) -> @(X,Y).
  11.  
  12. % Was buggy: X = foo(foo(titi,Y:titi), pb(action => @(Y)))?
  13. % Was buggy: X = foo(foo(_,Y:titi), pb(action => @(Y)))?
  14.  
  15. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  16. % Fit the second:
  17.  
  18. foo_a(X) -> t(X).
  19. :: titi_a(1).
  20. :: s_a(_).
  21.  
  22. p_a(pair(foo_a(Y:titi_a), s_a(B:@(Y)))).
  23.  
  24. % Was buggy: p_a(X)?
  25.  
  26. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  27. % Fit the third:
  28.  
  29. foo_b(X) -> t(X).
  30. :: titi_b(1).
  31. :: s_b(_).
  32.  
  33. % Was buggy: X=pair(foo_b(Y:titi_b), s_b(B:@(Y)))? 
  34. % X=pair(foo_b(Y:titi_b), s_b(Y))?
  35.  
  36. b_1(pair(foo_b(Y:titi_b), s_b(B:@(Y)))).
  37. b_2(pair(foo_b(Y:titi_b), s_b(Y))).
  38.  
  39. % Was buggy: b_1(X)?
  40. % b_2(X)?
  41.  
  42. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  43. % Fit the fourth:
  44.  
  45. foo_c(X,Y) -> @(X,Y).
  46. :: titi_c(1).
  47. :: p_c(_).
  48.  
  49. % Was buggy: X=foo_c(foo_c(A,Y:titi_c), p_c(B:@(Y)))? 
  50. % X=foo_c(foo_c(A,Y:titi_c), p_c(Y))?
  51.  
  52. % Z=p_c(B:@(Y)), X=foo_c(A,Y:titi_c)?
  53. % X=foo_c(A,Y:titi_c), Z=p_c(B:@(Y))?
  54.  
  55. % X=foo_c(p_c(@(Y)), foo_c(_,Y:titi_c))?
  56. % X=foo_c(p_c(@(Y)), foo_c(_,@(Y:titi_c)))?
  57. % X=foo_c(p_c(Y), foo_c(_,Y:titi_c))?
  58.  
  59. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  60. % Fit the fifth:
  61.  
  62. foo_d(X,Y) -> @(X,Y).
  63. :: titi_d(1).
  64. :: p_d(@(_)).
  65.  
  66. % Was buggy: X = foo_d(foo_d(_,Y:titi_d), p_d(@(@(Y))))?
  67. % Was buggy: X = foo_d(foo_d(_,Y:titi_d), p_d(@(Y)))?    
  68. % X = foo_d(foo_d(_,Y:titi_d), p_d(Y))?
  69.  
  70. d_1(foo_d(foo_d(_,Y:titi_d), p_d(@(@(Y))))).
  71. d_2(foo_d(foo_d(_,Y:titi_d), p_d(@(Y)))).
  72. d_3(foo_d(foo_d(_,Y:titi_d), p_d(Y))).
  73.  
  74. % d_1(X)?
  75. % d_2(X)?
  76. % d_3(X)?
  77.  
  78. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  79. % Fit the sixth:
  80.  
  81. foo_e(X,Y) -> @(X,Y).
  82. :: titi_e(1).
  83. :: p_e(2=>_). % This removes the bug!
  84.  
  85. % X=foo_e(foo_e(_,Y:titi_e), p_e(@(Y)))?
  86. % X=foo_e(foo_e(_,Y:titi_e), p_e(Y))?
  87.  
  88. e_1(foo_e(foo_e(_,Y:titi_e), p_e(@(Y)))).
  89. e_2(foo_e(foo_e(_,Y:titi_e), p_e(Y))).
  90.  
  91. % e_1(X)?
  92. % e_2(X)?
  93.  
  94. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  95.