Edit page

A model of syllogistic reasoning as communication.

Note: The model presented below is for exploration and running purposes. A less opaque version can be found here.

We can derive an equivalence-class representation of the state space, offline, which is projection of the distribution of situations onto the sentences of interest. The equivalence-class of situations does not grow with the number of objects and is much faster to run. However, the number-of-objects and base-rate parameters cannot be changed inside the model. This version of the model uses best-fit parameters n_objects = 5, br = 0.25 used in Ref:tessler2014syllogisms.

; the following two functions (situation-prior) & (sentence-eval) form the equivalence class representation
; each situation ('fN) has a "unique" combination of objects and properties
; "unique" is defined as producing a distinct set of true-sentences (from the syllogistic space)
(define (situation-prior) 
  (multinomial 
   (list 	'f0	'f1	'f2	'f3	'f4	'f5	'f6	'f7	'f8	'f9	'f10	'f11	'f12	'f13	'f14	'f15	'f16	'f17	'f18	'f19	'f20	'f21	'f22	'f23	'f24	'f25	'f26	'f27	'f28	'f29	'f30	'f31	'f32	'f33	'f34	'f35	'f36	'f37	'f38	'f39	'f40	'f41	'f42	'f43	'f44	'f45	'f46	'f47	'f48	'f49	'f50	'f51	'f52	'f53	'f54	'f55	'f56	'f57	'f58	'f59	'f60	'f61	'f62	'f63	'f64	'f65	'f66	'f67	'f68)
   '(0.021515 0.079048 0.022494 0.085699 0.009494 0.022156 0.003530 0.001631 0.012115 0.021864 0.001549 0.008247 0.022016 0.011847 0.000897 0.001806 0.022330 0.010542 0.022878 0.006046 0.001934 0.001945 0.020443 0.021620 0.004764 0.023740 0.001677 0.001165 0.010542 0.004240 0.002085 0.002062 0.021410 0.006337 0.021806 0.010833 0.010717 0.001573 0.001573 0.020595 0.021760 0.006011 0.010158 0.001689 0.011730 0.022528 0.001887 0.010402 0.012115 0.083591 0.000944 0.008073 0.001712 0.021876 0.001852 0.002073 0.010414 0.020804 0.086747 0.010565 0.001619 0.004275 0.012091 0.010460 0.001910 0.011171 0.001479 0.022633 0.008667 )))


; sentence-eval takes in a sentence (premise) and a situation (situation) and returns true/false
(define sentence-eval 
  (lambda (sentence situation)
    (case sentence
          (('all.C-B) (or (equal? situation 'f4) (equal? situation 'f6) (equal? situation 'f10) (equal? situation 'f12) (equal? situation 'f15) (equal? situation 'f32) (equal? situation 'f33) (equal? situation 'f36) (equal? situation 'f37) (equal? situation 'f41) (equal? situation 'f46) (equal? situation 'f50) (equal? situation 'f51) (equal? situation 'f54) (equal? situation 'f55) (equal? situation 'f65) (equal? situation 'f66) (equal? situation 'f67) ))
          (('no.C-B) (or (equal? situation 'f1) (equal? situation 'f2) (equal? situation 'f3) (equal? situation 'f13) (equal? situation 'f22) (equal? situation 'f24) (equal? situation 'f25) (equal? situation 'f28) (equal? situation 'f34) (equal? situation 'f40) (equal? situation 'f42) (equal? situation 'f44) (equal? situation 'f45) (equal? situation 'f62) ))
          (('some.C-B) (or (equal? situation 'f4) (equal? situation 'f6) (equal? situation 'f7) (equal? situation 'f8) (equal? situation 'f10) (equal? situation 'f11) (equal? situation 'f12) (equal? situation 'f14) (equal? situation 'f15) (equal? situation 'f16) (equal? situation 'f17) (equal? situation 'f18) (equal? situation 'f19) (equal? situation 'f20) (equal? situation 'f21) (equal? situation 'f26) (equal? situation 'f27) (equal? situation 'f29) (equal? situation 'f30) (equal? situation 'f31) (equal? situation 'f32) (equal? situation 'f33) (equal? situation 'f35) (equal? situation 'f36) (equal? situation 'f37) (equal? situation 'f38) (equal? situation 'f39) (equal? situation 'f41) (equal? situation 'f43) (equal? situation 'f46) (equal? situation 'f47) (equal? situation 'f48) (equal? situation 'f50) (equal? situation 'f51) (equal? situation 'f52) (equal? situation 'f54) (equal? situation 'f55) (equal? situation 'f56) (equal? situation 'f60) (equal? situation 'f61) (equal? situation 'f64) (equal? situation 'f65) (equal? situation 'f66) (equal? situation 'f67) (equal? situation 'f68) ))
          (('not-all.C-B) (or (equal? situation 'f1) (equal? situation 'f2) (equal? situation 'f3) (equal? situation 'f7) (equal? situation 'f8) (equal? situation 'f11) (equal? situation 'f13) (equal? situation 'f14) (equal? situation 'f16) (equal? situation 'f17) (equal? situation 'f18) (equal? situation 'f19) (equal? situation 'f20) (equal? situation 'f21) (equal? situation 'f22) (equal? situation 'f24) (equal? situation 'f25) (equal? situation 'f26) (equal? situation 'f27) (equal? situation 'f28) (equal? situation 'f29) (equal? situation 'f30) (equal? situation 'f31) (equal? situation 'f34) (equal? situation 'f35) (equal? situation 'f38) (equal? situation 'f39) (equal? situation 'f40) (equal? situation 'f42) (equal? situation 'f43) (equal? situation 'f44) (equal? situation 'f45) (equal? situation 'f47) (equal? situation 'f48) (equal? situation 'f52) (equal? situation 'f56) (equal? situation 'f60) (equal? situation 'f61) (equal? situation 'f62) (equal? situation 'f64) (equal? situation 'f68) ))
          (('all.C-A) (or (equal? situation 'f6) (equal? situation 'f10) (equal? situation 'f14) (equal? situation 'f20) (equal? situation 'f22) (equal? situation 'f23) (equal? situation 'f26) (equal? situation 'f30) (equal? situation 'f33) (equal? situation 'f34) (equal? situation 'f41) (equal? situation 'f42) (equal? situation 'f44) (equal? situation 'f51) (equal? situation 'f52) (equal? situation 'f54) (equal? situation 'f55) (equal? situation 'f63) ))
          (('no.C-A) (or (equal? situation 'f1) (equal? situation 'f2) (equal? situation 'f4) (equal? situation 'f8) (equal? situation 'f17) (equal? situation 'f18) (equal? situation 'f25) (equal? situation 'f32) (equal? situation 'f40) (equal? situation 'f49) (equal? situation 'f61) (equal? situation 'f62) (equal? situation 'f65) (equal? situation 'f67) ))
          (('some.C-A) (or (equal? situation 'f5) (equal? situation 'f6) (equal? situation 'f7) (equal? situation 'f9) (equal? situation 'f10) (equal? situation 'f11) (equal? situation 'f13) (equal? situation 'f14) (equal? situation 'f15) (equal? situation 'f19) (equal? situation 'f20) (equal? situation 'f21) (equal? situation 'f22) (equal? situation 'f23) (equal? situation 'f24) (equal? situation 'f26) (equal? situation 'f27) (equal? situation 'f28) (equal? situation 'f29) (equal? situation 'f30) (equal? situation 'f31) (equal? situation 'f33) (equal? situation 'f34) (equal? situation 'f35) (equal? situation 'f37) (equal? situation 'f38) (equal? situation 'f41) (equal? situation 'f42) (equal? situation 'f43) (equal? situation 'f44) (equal? situation 'f45) (equal? situation 'f46) (equal? situation 'f47) (equal? situation 'f48) (equal? situation 'f50) (equal? situation 'f51) (equal? situation 'f52) (equal? situation 'f54) (equal? situation 'f55) (equal? situation 'f56) (equal? situation 'f60) (equal? situation 'f63) (equal? situation 'f64) (equal? situation 'f66) (equal? situation 'f68) ))
          (('not-all.C-A) (or (equal? situation 'f1) (equal? situation 'f2) (equal? situation 'f4) (equal? situation 'f5) (equal? situation 'f7) (equal? situation 'f8) (equal? situation 'f9) (equal? situation 'f11) (equal? situation 'f13) (equal? situation 'f15) (equal? situation 'f17) (equal? situation 'f18) (equal? situation 'f19) (equal? situation 'f21) (equal? situation 'f24) (equal? situation 'f25) (equal? situation 'f27) (equal? situation 'f28) (equal? situation 'f29) (equal? situation 'f31) (equal? situation 'f32) (equal? situation 'f35) (equal? situation 'f37) (equal? situation 'f38) (equal? situation 'f40) (equal? situation 'f43) (equal? situation 'f45) (equal? situation 'f46) (equal? situation 'f47) (equal? situation 'f48) (equal? situation 'f49) (equal? situation 'f50) (equal? situation 'f56) (equal? situation 'f60) (equal? situation 'f61) (equal? situation 'f62) (equal? situation 'f64) (equal? situation 'f65) (equal? situation 'f66) (equal? situation 'f67) (equal? situation 'f68) ))
          (('all.B-C) (or (equal? situation 'f6) (equal? situation 'f11) (equal? situation 'f15) (equal? situation 'f18) (equal? situation 'f19) (equal? situation 'f26) (equal? situation 'f27) (equal? situation 'f30) (equal? situation 'f31) (equal? situation 'f32) (equal? situation 'f33) (equal? situation 'f36) (equal? situation 'f38) (equal? situation 'f39) (equal? situation 'f47) (equal? situation 'f48) (equal? situation 'f64) (equal? situation 'f66) ))
          (('no.B-C) (or (equal? situation 'f1) (equal? situation 'f2) (equal? situation 'f3) (equal? situation 'f13) (equal? situation 'f22) (equal? situation 'f24) (equal? situation 'f25) (equal? situation 'f28) (equal? situation 'f34) (equal? situation 'f40) (equal? situation 'f42) (equal? situation 'f44) (equal? situation 'f45) (equal? situation 'f62) ))
          (('some.B-C) (or (equal? situation 'f4) (equal? situation 'f6) (equal? situation 'f7) (equal? situation 'f8) (equal? situation 'f10) (equal? situation 'f11) (equal? situation 'f12) (equal? situation 'f14) (equal? situation 'f15) (equal? situation 'f16) (equal? situation 'f17) (equal? situation 'f18) (equal? situation 'f19) (equal? situation 'f20) (equal? situation 'f21) (equal? situation 'f26) (equal? situation 'f27) (equal? situation 'f29) (equal? situation 'f30) (equal? situation 'f31) (equal? situation 'f32) (equal? situation 'f33) (equal? situation 'f35) (equal? situation 'f36) (equal? situation 'f37) (equal? situation 'f38) (equal? situation 'f39) (equal? situation 'f41) (equal? situation 'f43) (equal? situation 'f46) (equal? situation 'f47) (equal? situation 'f48) (equal? situation 'f50) (equal? situation 'f51) (equal? situation 'f52) (equal? situation 'f54) (equal? situation 'f55) (equal? situation 'f56) (equal? situation 'f60) (equal? situation 'f61) (equal? situation 'f64) (equal? situation 'f65) (equal? situation 'f66) (equal? situation 'f67) (equal? situation 'f68) ))
          (('not-all.B-C) (or (equal? situation 'f1) (equal? situation 'f2) (equal? situation 'f3) (equal? situation 'f4) (equal? situation 'f7) (equal? situation 'f8) (equal? situation 'f10) (equal? situation 'f12) (equal? situation 'f13) (equal? situation 'f14) (equal? situation 'f16) (equal? situation 'f17) (equal? situation 'f20) (equal? situation 'f21) (equal? situation 'f22) (equal? situation 'f24) (equal? situation 'f25) (equal? situation 'f28) (equal? situation 'f29) (equal? situation 'f34) (equal? situation 'f35) (equal? situation 'f37) (equal? situation 'f40) (equal? situation 'f41) (equal? situation 'f42) (equal? situation 'f43) (equal? situation 'f44) (equal? situation 'f45) (equal? situation 'f46) (equal? situation 'f50) (equal? situation 'f51) (equal? situation 'f52) (equal? situation 'f54) (equal? situation 'f55) (equal? situation 'f56) (equal? situation 'f60) (equal? situation 'f61) (equal? situation 'f62) (equal? situation 'f65) (equal? situation 'f67) (equal? situation 'f68) ))
          (('all.B-A) (or (equal? situation 'f0) (equal? situation 'f2) (equal? situation 'f6) (equal? situation 'f10) (equal? situation 'f11) (equal? situation 'f14) (equal? situation 'f19) (equal? situation 'f21) (equal? situation 'f26) (equal? situation 'f28) (equal? situation 'f30) (equal? situation 'f31) (equal? situation 'f33) (equal? situation 'f40) (equal? situation 'f43) (equal? situation 'f44) (equal? situation 'f54) (equal? situation 'f59) ))
          (('no.B-A) (or (equal? situation 'f1) (equal? situation 'f8) (equal? situation 'f13) (equal? situation 'f18) (equal? situation 'f22) (equal? situation 'f29) (equal? situation 'f32) (equal? situation 'f34) (equal? situation 'f45) (equal? situation 'f47) (equal? situation 'f48) (equal? situation 'f56) (equal? situation 'f58) (equal? situation 'f67) ))
          (('some.B-A) (or (equal? situation 'f0) (equal? situation 'f2) (equal? situation 'f4) (equal? situation 'f6) (equal? situation 'f7) (equal? situation 'f10) (equal? situation 'f11) (equal? situation 'f14) (equal? situation 'f15) (equal? situation 'f17) (equal? situation 'f19) (equal? situation 'f20) (equal? situation 'f21) (equal? situation 'f24) (equal? situation 'f25) (equal? situation 'f26) (equal? situation 'f27) (equal? situation 'f28) (equal? situation 'f30) (equal? situation 'f31) (equal? situation 'f33) (equal? situation 'f35) (equal? situation 'f37) (equal? situation 'f38) (equal? situation 'f40) (equal? situation 'f41) (equal? situation 'f42) (equal? situation 'f43) (equal? situation 'f44) (equal? situation 'f46) (equal? situation 'f50) (equal? situation 'f51) (equal? situation 'f52) (equal? situation 'f53) (equal? situation 'f54) (equal? situation 'f55) (equal? situation 'f57) (equal? situation 'f59) (equal? situation 'f60) (equal? situation 'f61) (equal? situation 'f62) (equal? situation 'f64) (equal? situation 'f65) (equal? situation 'f66) (equal? situation 'f68) ))
          (('not-all.B-A) (or (equal? situation 'f1) (equal? situation 'f4) (equal? situation 'f7) (equal? situation 'f8) (equal? situation 'f13) (equal? situation 'f15) (equal? situation 'f17) (equal? situation 'f18) (equal? situation 'f20) (equal? situation 'f22) (equal? situation 'f24) (equal? situation 'f25) (equal? situation 'f27) (equal? situation 'f29) (equal? situation 'f32) (equal? situation 'f34) (equal? situation 'f35) (equal? situation 'f37) (equal? situation 'f38) (equal? situation 'f41) (equal? situation 'f42) (equal? situation 'f45) (equal? situation 'f46) (equal? situation 'f47) (equal? situation 'f48) (equal? situation 'f50) (equal? situation 'f51) (equal? situation 'f52) (equal? situation 'f53) (equal? situation 'f55) (equal? situation 'f56) (equal? situation 'f57) (equal? situation 'f58) (equal? situation 'f60) (equal? situation 'f61) (equal? situation 'f62) (equal? situation 'f64) (equal? situation 'f65) (equal? situation 'f66) (equal? situation 'f67) (equal? situation 'f68) ))
          (('all.A-C) (or (equal? situation 'f6) (equal? situation 'f7) (equal? situation 'f9) (equal? situation 'f19) (equal? situation 'f20) (equal? situation 'f22) (equal? situation 'f26) (equal? situation 'f27) (equal? situation 'f31) (equal? situation 'f41) (equal? situation 'f45) (equal? situation 'f46) (equal? situation 'f48) (equal? situation 'f56) (equal? situation 'f63) (equal? situation 'f64) (equal? situation 'f66) (equal? situation 'f68) ))
          (('no.A-C) (or (equal? situation 'f1) (equal? situation 'f2) (equal? situation 'f4) (equal? situation 'f8) (equal? situation 'f17) (equal? situation 'f18) (equal? situation 'f25) (equal? situation 'f32) (equal? situation 'f40) (equal? situation 'f49) (equal? situation 'f61) (equal? situation 'f62) (equal? situation 'f65) (equal? situation 'f67) ))
          (('some.A-C) (or (equal? situation 'f5) (equal? situation 'f6) (equal? situation 'f7) (equal? situation 'f9) (equal? situation 'f10) (equal? situation 'f11) (equal? situation 'f13) (equal? situation 'f14) (equal? situation 'f15) (equal? situation 'f19) (equal? situation 'f20) (equal? situation 'f21) (equal? situation 'f22) (equal? situation 'f23) (equal? situation 'f24) (equal? situation 'f26) (equal? situation 'f27) (equal? situation 'f28) (equal? situation 'f29) (equal? situation 'f30) (equal? situation 'f31) (equal? situation 'f33) (equal? situation 'f34) (equal? situation 'f35) (equal? situation 'f37) (equal? situation 'f38) (equal? situation 'f41) (equal? situation 'f42) (equal? situation 'f43) (equal? situation 'f44) (equal? situation 'f45) (equal? situation 'f46) (equal? situation 'f47) (equal? situation 'f48) (equal? situation 'f50) (equal? situation 'f51) (equal? situation 'f52) (equal? situation 'f54) (equal? situation 'f55) (equal? situation 'f56) (equal? situation 'f60) (equal? situation 'f63) (equal? situation 'f64) (equal? situation 'f66) (equal? situation 'f68) ))
          (('not-all.A-C) (or (equal? situation 'f1) (equal? situation 'f2) (equal? situation 'f4) (equal? situation 'f5) (equal? situation 'f8) (equal? situation 'f10) (equal? situation 'f11) (equal? situation 'f13) (equal? situation 'f14) (equal? situation 'f15) (equal? situation 'f17) (equal? situation 'f18) (equal? situation 'f21) (equal? situation 'f23) (equal? situation 'f24) (equal? situation 'f25) (equal? situation 'f28) (equal? situation 'f29) (equal? situation 'f30) (equal? situation 'f32) (equal? situation 'f33) (equal? situation 'f34) (equal? situation 'f35) (equal? situation 'f37) (equal? situation 'f38) (equal? situation 'f40) (equal? situation 'f42) (equal? situation 'f43) (equal? situation 'f44) (equal? situation 'f47) (equal? situation 'f49) (equal? situation 'f50) (equal? situation 'f51) (equal? situation 'f52) (equal? situation 'f54) (equal? situation 'f55) (equal? situation 'f60) (equal? situation 'f61) (equal? situation 'f62) (equal? situation 'f65) (equal? situation 'f67) ))
          (('all.A-B) (or (equal? situation 'f6) (equal? situation 'f10) (equal? situation 'f17) (equal? situation 'f19) (equal? situation 'f21) (equal? situation 'f25) (equal? situation 'f40) (equal? situation 'f41) (equal? situation 'f46) (equal? situation 'f50) (equal? situation 'f55) (equal? situation 'f57) (equal? situation 'f59) (equal? situation 'f60) (equal? situation 'f64) (equal? situation 'f65) (equal? situation 'f66) (equal? situation 'f68) ))
          (('no.A-B) (or (equal? situation 'f1) (equal? situation 'f8) (equal? situation 'f13) (equal? situation 'f18) (equal? situation 'f22) (equal? situation 'f29) (equal? situation 'f32) (equal? situation 'f34) (equal? situation 'f45) (equal? situation 'f47) (equal? situation 'f48) (equal? situation 'f56) (equal? situation 'f58) (equal? situation 'f67) ))
          (('some.A-B) (or (equal? situation 'f0) (equal? situation 'f2) (equal? situation 'f4) (equal? situation 'f6) (equal? situation 'f7) (equal? situation 'f10) (equal? situation 'f11) (equal? situation 'f14) (equal? situation 'f15) (equal? situation 'f17) (equal? situation 'f19) (equal? situation 'f20) (equal? situation 'f21) (equal? situation 'f24) (equal? situation 'f25) (equal? situation 'f26) (equal? situation 'f27) (equal? situation 'f28) (equal? situation 'f30) (equal? situation 'f31) (equal? situation 'f33) (equal? situation 'f35) (equal? situation 'f37) (equal? situation 'f38) (equal? situation 'f40) (equal? situation 'f41) (equal? situation 'f42) (equal? situation 'f43) (equal? situation 'f44) (equal? situation 'f46) (equal? situation 'f50) (equal? situation 'f51) (equal? situation 'f52) (equal? situation 'f53) (equal? situation 'f54) (equal? situation 'f55) (equal? situation 'f57) (equal? situation 'f59) (equal? situation 'f60) (equal? situation 'f61) (equal? situation 'f62) (equal? situation 'f64) (equal? situation 'f65) (equal? situation 'f66) (equal? situation 'f68) ))
          (('not-all.A-B) (or (equal? situation 'f0) (equal? situation 'f1) (equal? situation 'f2) (equal? situation 'f4) (equal? situation 'f7) (equal? situation 'f8) (equal? situation 'f11) (equal? situation 'f13) (equal? situation 'f14) (equal? situation 'f15) (equal? situation 'f18) (equal? situation 'f20) (equal? situation 'f22) (equal? situation 'f24) (equal? situation 'f26) (equal? situation 'f27) (equal? situation 'f28) (equal? situation 'f29) (equal? situation 'f30) (equal? situation 'f31) (equal? situation 'f32) (equal? situation 'f33) (equal? situation 'f34) (equal? situation 'f35) (equal? situation 'f37) (equal? situation 'f38) (equal? situation 'f42) (equal? situation 'f43) (equal? situation 'f44) (equal? situation 'f45) (equal? situation 'f47) (equal? situation 'f48) (equal? situation 'f51) (equal? situation 'f52) (equal? situation 'f53) (equal? situation 'f54) (equal? situation 'f56) (equal? situation 'f58) (equal? situation 'f61) (equal? situation 'f62) (equal? situation 'f67) ))
          (((list 'all.B-A 'all.C-B)) (or (equal? situation 'f6) (equal? situation 'f10) (equal? situation 'f33) (equal? situation 'f54) ))
          (((list 'all.B-A 'no.C-B)) (or (equal? situation 'f2) (equal? situation 'f28) (equal? situation 'f40) (equal? situation 'f44) ))
          (((list 'all.B-A 'some.C-B)) (or (equal? situation 'f6) (equal? situation 'f10) (equal? situation 'f11) (equal? situation 'f14) (equal? situation 'f19) (equal? situation 'f21) (equal? situation 'f26) (equal? situation 'f30) (equal? situation 'f31) (equal? situation 'f33) (equal? situation 'f43) (equal? situation 'f54) ))
          (((list 'all.B-A 'not-all.C-B)) (or (equal? situation 'f2) (equal? situation 'f11) (equal? situation 'f14) (equal? situation 'f19) (equal? situation 'f21) (equal? situation 'f26) (equal? situation 'f28) (equal? situation 'f30) (equal? situation 'f31) (equal? situation 'f40) (equal? situation 'f43) (equal? situation 'f44) ))
          (((list 'no.B-A 'all.C-B)) (or (equal? situation 'f32) (equal? situation 'f67) ))
          (((list 'no.B-A 'no.C-B)) (or (equal? situation 'f1) (equal? situation 'f13) (equal? situation 'f22) (equal? situation 'f34) (equal? situation 'f45) ))
          (((list 'no.B-A 'some.C-B)) (or (equal? situation 'f8) (equal? situation 'f18) (equal? situation 'f29) (equal? situation 'f32) (equal? situation 'f47) (equal? situation 'f48) (equal? situation 'f56) (equal? situation 'f67) ))
          (((list 'no.B-A 'not-all.C-B)) (or (equal? situation 'f1) (equal? situation 'f8) (equal? situation 'f13) (equal? situation 'f18) (equal? situation 'f22) (equal? situation 'f29) (equal? situation 'f34) (equal? situation 'f45) (equal? situation 'f47) (equal? situation 'f48) (equal? situation 'f56) ))
          (((list 'some.B-A 'all.C-B)) (or (equal? situation 'f4) (equal? situation 'f6) (equal? situation 'f10) (equal? situation 'f15) (equal? situation 'f33) (equal? situation 'f37) (equal? situation 'f41) (equal? situation 'f46) (equal? situation 'f50) (equal? situation 'f51) (equal? situation 'f54) (equal? situation 'f55) (equal? situation 'f65) (equal? situation 'f66) ))
          (((list 'some.B-A 'no.C-B)) (or (equal? situation 'f2) (equal? situation 'f24) (equal? situation 'f25) (equal? situation 'f28) (equal? situation 'f40) (equal? situation 'f42) (equal? situation 'f44) (equal? situation 'f62) ))
          (((list 'some.B-A 'some.C-B)) (or (equal? situation 'f4) (equal? situation 'f6) (equal? situation 'f7) (equal? situation 'f10) (equal? situation 'f11) (equal? situation 'f14) (equal? situation 'f15) (equal? situation 'f17) (equal? situation 'f19) (equal? situation 'f20) (equal? situation 'f21) (equal? situation 'f26) (equal? situation 'f27) (equal? situation 'f30) (equal? situation 'f31) (equal? situation 'f33) (equal? situation 'f35) (equal? situation 'f37) (equal? situation 'f38) (equal? situation 'f41) (equal? situation 'f43) (equal? situation 'f46) (equal? situation 'f50) (equal? situation 'f51) (equal? situation 'f52) (equal? situation 'f54) (equal? situation 'f55) (equal? situation 'f60) (equal? situation 'f61) (equal? situation 'f64) (equal? situation 'f65) (equal? situation 'f66) (equal? situation 'f68) ))
          (((list 'some.B-A 'not-all.C-B)) (or (equal? situation 'f2) (equal? situation 'f7) (equal? situation 'f11) (equal? situation 'f14) (equal? situation 'f17) (equal? situation 'f19) (equal? situation 'f20) (equal? situation 'f21) (equal? situation 'f24) (equal? situation 'f25) (equal? situation 'f26) (equal? situation 'f27) (equal? situation 'f28) (equal? situation 'f30) (equal? situation 'f31) (equal? situation 'f35) (equal? situation 'f38) (equal? situation 'f40) (equal? situation 'f42) (equal? situation 'f43) (equal? situation 'f44) (equal? situation 'f52) (equal? situation 'f60) (equal? situation 'f61) (equal? situation 'f62) (equal? situation 'f64) (equal? situation 'f68) ))
          (((list 'not-all.B-A 'all.C-B)) (or (equal? situation 'f4) (equal? situation 'f15) (equal? situation 'f32) (equal? situation 'f37) (equal? situation 'f41) (equal? situation 'f46) (equal? situation 'f50) (equal? situation 'f51) (equal? situation 'f55) (equal? situation 'f65) (equal? situation 'f66) (equal? situation 'f67) ))
          (((list 'not-all.B-A 'no.C-B)) (or (equal? situation 'f1) (equal? situation 'f13) (equal? situation 'f22) (equal? situation 'f24) (equal? situation 'f25) (equal? situation 'f34) (equal? situation 'f42) (equal? situation 'f45) (equal? situation 'f62) ))
          (((list 'not-all.B-A 'some.C-B)) (or (equal? situation 'f4) (equal? situation 'f7) (equal? situation 'f8) (equal? situation 'f15) (equal? situation 'f17) (equal? situation 'f18) (equal? situation 'f20) (equal? situation 'f27) (equal? situation 'f29) (equal? situation 'f32) (equal? situation 'f35) (equal? situation 'f37) (equal? situation 'f38) (equal? situation 'f41) (equal? situation 'f46) (equal? situation 'f47) (equal? situation 'f48) (equal? situation 'f50) (equal? situation 'f51) (equal? situation 'f52) (equal? situation 'f55) (equal? situation 'f56) (equal? situation 'f60) (equal? situation 'f61) (equal? situation 'f64) (equal? situation 'f65) (equal? situation 'f66) (equal? situation 'f67) (equal? situation 'f68) ))
          (((list 'not-all.B-A 'not-all.C-B)) (or (equal? situation 'f1) (equal? situation 'f7) (equal? situation 'f8) (equal? situation 'f13) (equal? situation 'f17) (equal? situation 'f18) (equal? situation 'f20) (equal? situation 'f22) (equal? situation 'f24) (equal? situation 'f25) (equal? situation 'f27) (equal? situation 'f29) (equal? situation 'f34) (equal? situation 'f35) (equal? situation 'f38) (equal? situation 'f42) (equal? situation 'f45) (equal? situation 'f47) (equal? situation 'f48) (equal? situation 'f52) (equal? situation 'f56) (equal? situation 'f60) (equal? situation 'f61) (equal? situation 'f62) (equal? situation 'f64) (equal? situation 'f68) ))
          (((list 'all.A-B 'all.C-B)) (or (equal? situation 'f6) (equal? situation 'f10) (equal? situation 'f41) (equal? situation 'f46) (equal? situation 'f50) (equal? situation 'f55) (equal? situation 'f65) (equal? situation 'f66) ))
          (((list 'all.A-B 'no.C-B)) (or (equal? situation 'f25) (equal? situation 'f40) ))
          (((list 'all.A-B 'some.C-B)) (or (equal? situation 'f6) (equal? situation 'f10) (equal? situation 'f17) (equal? situation 'f19) (equal? situation 'f21) (equal? situation 'f41) (equal? situation 'f46) (equal? situation 'f50) (equal? situation 'f55) (equal? situation 'f60) (equal? situation 'f64) (equal? situation 'f65) (equal? situation 'f66) (equal? situation 'f68) ))
          (((list 'all.A-B 'not-all.C-B)) (or (equal? situation 'f17) (equal? situation 'f19) (equal? situation 'f21) (equal? situation 'f25) (equal? situation 'f40) (equal? situation 'f60) (equal? situation 'f64) (equal? situation 'f68) ))
          (((list 'no.A-B 'all.C-B)) (or (equal? situation 'f32) (equal? situation 'f67) ))
          (((list 'no.A-B 'no.C-B)) (or (equal? situation 'f1) (equal? situation 'f13) (equal? situation 'f22) (equal? situation 'f34) (equal? situation 'f45) ))
          (((list 'no.A-B 'some.C-B)) (or (equal? situation 'f8) (equal? situation 'f18) (equal? situation 'f29) (equal? situation 'f32) (equal? situation 'f47) (equal? situation 'f48) (equal? situation 'f56) (equal? situation 'f67) ))
          (((list 'no.A-B 'not-all.C-B)) (or (equal? situation 'f1) (equal? situation 'f8) (equal? situation 'f13) (equal? situation 'f18) (equal? situation 'f22) (equal? situation 'f29) (equal? situation 'f34) (equal? situation 'f45) (equal? situation 'f47) (equal? situation 'f48) (equal? situation 'f56) ))
          (((list 'some.A-B 'all.C-B)) (or (equal? situation 'f4) (equal? situation 'f6) (equal? situation 'f10) (equal? situation 'f15) (equal? situation 'f33) (equal? situation 'f37) (equal? situation 'f41) (equal? situation 'f46) (equal? situation 'f50) (equal? situation 'f51) (equal? situation 'f54) (equal? situation 'f55) (equal? situation 'f65) (equal? situation 'f66) ))
          (((list 'some.A-B 'no.C-B)) (or (equal? situation 'f2) (equal? situation 'f24) (equal? situation 'f25) (equal? situation 'f28) (equal? situation 'f40) (equal? situation 'f42) (equal? situation 'f44) (equal? situation 'f62) ))
          (((list 'some.A-B 'some.C-B)) (or (equal? situation 'f4) (equal? situation 'f6) (equal? situation 'f7) (equal? situation 'f10) (equal? situation 'f11) (equal? situation 'f14) (equal? situation 'f15) (equal? situation 'f17) (equal? situation 'f19) (equal? situation 'f20) (equal? situation 'f21) (equal? situation 'f26) (equal? situation 'f27) (equal? situation 'f30) (equal? situation 'f31) (equal? situation 'f33) (equal? situation 'f35) (equal? situation 'f37) (equal? situation 'f38) (equal? situation 'f41) (equal? situation 'f43) (equal? situation 'f46) (equal? situation 'f50) (equal? situation 'f51) (equal? situation 'f52) (equal? situation 'f54) (equal? situation 'f55) (equal? situation 'f60) (equal? situation 'f61) (equal? situation 'f64) (equal? situation 'f65) (equal? situation 'f66) (equal? situation 'f68) ))
          (((list 'some.A-B 'not-all.C-B)) (or (equal? situation 'f2) (equal? situation 'f7) (equal? situation 'f11) (equal? situation 'f14) (equal? situation 'f17) (equal? situation 'f19) (equal? situation 'f20) (equal? situation 'f21) (equal? situation 'f24) (equal? situation 'f25) (equal? situation 'f26) (equal? situation 'f27) (equal? situation 'f28) (equal? situation 'f30) (equal? situation 'f31) (equal? situation 'f35) (equal? situation 'f38) (equal? situation 'f40) (equal? situation 'f42) (equal? situation 'f43) (equal? situation 'f44) (equal? situation 'f52) (equal? situation 'f60) (equal? situation 'f61) (equal? situation 'f62) (equal? situation 'f64) (equal? situation 'f68) ))
          (((list 'not-all.A-B 'all.C-B)) (or (equal? situation 'f4) (equal? situation 'f15) (equal? situation 'f32) (equal? situation 'f33) (equal? situation 'f37) (equal? situation 'f51) (equal? situation 'f54) (equal? situation 'f67) ))
          (((list 'not-all.A-B 'no.C-B)) (or (equal? situation 'f1) (equal? situation 'f2) (equal? situation 'f13) (equal? situation 'f22) (equal? situation 'f24) (equal? situation 'f28) (equal? situation 'f34) (equal? situation 'f42) (equal? situation 'f44) (equal? situation 'f45) (equal? situation 'f62) ))
          (((list 'not-all.A-B 'some.C-B)) (or (equal? situation 'f4) (equal? situation 'f7) (equal? situation 'f8) (equal? situation 'f11) (equal? situation 'f14) (equal? situation 'f15) (equal? situation 'f18) (equal? situation 'f20) (equal? situation 'f26) (equal? situation 'f27) (equal? situation 'f29) (equal? situation 'f30) (equal? situation 'f31) (equal? situation 'f32) (equal? situation 'f33) (equal? situation 'f35) (equal? situation 'f37) (equal? situation 'f38) (equal? situation 'f43) (equal? situation 'f47) (equal? situation 'f48) (equal? situation 'f51) (equal? situation 'f52) (equal? situation 'f54) (equal? situation 'f56) (equal? situation 'f61) (equal? situation 'f67) ))
          (((list 'not-all.A-B 'not-all.C-B)) (or (equal? situation 'f1) (equal? situation 'f2) (equal? situation 'f7) (equal? situation 'f8) (equal? situation 'f11) (equal? situation 'f13) (equal? situation 'f14) (equal? situation 'f18) (equal? situation 'f20) (equal? situation 'f22) (equal? situation 'f24) (equal? situation 'f26) (equal? situation 'f27) (equal? situation 'f28) (equal? situation 'f29) (equal? situation 'f30) (equal? situation 'f31) (equal? situation 'f34) (equal? situation 'f35) (equal? situation 'f38) (equal? situation 'f42) (equal? situation 'f43) (equal? situation 'f44) (equal? situation 'f45) (equal? situation 'f47) (equal? situation 'f48) (equal? situation 'f52) (equal? situation 'f56) (equal? situation 'f61) (equal? situation 'f62) ))
          (((list 'all.B-A 'all.B-C)) (or (equal? situation 'f6) (equal? situation 'f11) (equal? situation 'f19) (equal? situation 'f26) (equal? situation 'f30) (equal? situation 'f31) (equal? situation 'f33) ))
          (((list 'all.B-A 'no.B-C)) (or (equal? situation 'f2) (equal? situation 'f28) (equal? situation 'f40) (equal? situation 'f44) ))
          (((list 'all.B-A 'some.B-C)) (or (equal? situation 'f6) (equal? situation 'f10) (equal? situation 'f11) (equal? situation 'f14) (equal? situation 'f19) (equal? situation 'f21) (equal? situation 'f26) (equal? situation 'f30) (equal? situation 'f31) (equal? situation 'f33) (equal? situation 'f43) (equal? situation 'f54) ))
          (((list 'all.B-A 'not-all.B-C)) (or (equal? situation 'f2) (equal? situation 'f10) (equal? situation 'f14) (equal? situation 'f21) (equal? situation 'f28) (equal? situation 'f40) (equal? situation 'f43) (equal? situation 'f44) (equal? situation 'f54) ))
          (((list 'no.B-A 'all.B-C)) (or (equal? situation 'f18) (equal? situation 'f32) (equal? situation 'f47) (equal? situation 'f48) ))
          (((list 'no.B-A 'no.B-C)) (or (equal? situation 'f1) (equal? situation 'f13) (equal? situation 'f22) (equal? situation 'f34) (equal? situation 'f45) ))
          (((list 'no.B-A 'some.B-C)) (or (equal? situation 'f8) (equal? situation 'f18) (equal? situation 'f29) (equal? situation 'f32) (equal? situation 'f47) (equal? situation 'f48) (equal? situation 'f56) (equal? situation 'f67) ))
          (((list 'no.B-A 'not-all.B-C)) (or (equal? situation 'f1) (equal? situation 'f8) (equal? situation 'f13) (equal? situation 'f22) (equal? situation 'f29) (equal? situation 'f34) (equal? situation 'f45) (equal? situation 'f56) (equal? situation 'f67) ))
          (((list 'some.B-A 'all.B-C)) (or (equal? situation 'f6) (equal? situation 'f11) (equal? situation 'f15) (equal? situation 'f19) (equal? situation 'f26) (equal? situation 'f27) (equal? situation 'f30) (equal? situation 'f31) (equal? situation 'f33) (equal? situation 'f38) (equal? situation 'f64) (equal? situation 'f66) ))
          (((list 'some.B-A 'no.B-C)) (or (equal? situation 'f2) (equal? situation 'f24) (equal? situation 'f25) (equal? situation 'f28) (equal? situation 'f40) (equal? situation 'f42) (equal? situation 'f44) (equal? situation 'f62) ))
          (((list 'some.B-A 'some.B-C)) (or (equal? situation 'f4) (equal? situation 'f6) (equal? situation 'f7) (equal? situation 'f10) (equal? situation 'f11) (equal? situation 'f14) (equal? situation 'f15) (equal? situation 'f17) (equal? situation 'f19) (equal? situation 'f20) (equal? situation 'f21) (equal? situation 'f26) (equal? situation 'f27) (equal? situation 'f30) (equal? situation 'f31) (equal? situation 'f33) (equal? situation 'f35) (equal? situation 'f37) (equal? situation 'f38) (equal? situation 'f41) (equal? situation 'f43) (equal? situation 'f46) (equal? situation 'f50) (equal? situation 'f51) (equal? situation 'f52) (equal? situation 'f54) (equal? situation 'f55) (equal? situation 'f60) (equal? situation 'f61) (equal? situation 'f64) (equal? situation 'f65) (equal? situation 'f66) (equal? situation 'f68) ))
          (((list 'some.B-A 'not-all.B-C)) (or (equal? situation 'f2) (equal? situation 'f4) (equal? situation 'f7) (equal? situation 'f10) (equal? situation 'f14) (equal? situation 'f17) (equal? situation 'f20) (equal? situation 'f21) (equal? situation 'f24) (equal? situation 'f25) (equal? situation 'f28) (equal? situation 'f35) (equal? situation 'f37) (equal? situation 'f40) (equal? situation 'f41) (equal? situation 'f42) (equal? situation 'f43) (equal? situation 'f44) (equal? situation 'f46) (equal? situation 'f50) (equal? situation 'f51) (equal? situation 'f52) (equal? situation 'f54) (equal? situation 'f55) (equal? situation 'f60) (equal? situation 'f61) (equal? situation 'f62) (equal? situation 'f65) (equal? situation 'f68) ))
          (((list 'not-all.B-A 'all.B-C)) (or (equal? situation 'f15) (equal? situation 'f18) (equal? situation 'f27) (equal? situation 'f32) (equal? situation 'f38) (equal? situation 'f47) (equal? situation 'f48) (equal? situation 'f64) (equal? situation 'f66) ))
          (((list 'not-all.B-A 'no.B-C)) (or (equal? situation 'f1) (equal? situation 'f13) (equal? situation 'f22) (equal? situation 'f24) (equal? situation 'f25) (equal? situation 'f34) (equal? situation 'f42) (equal? situation 'f45) (equal? situation 'f62) ))
          (((list 'not-all.B-A 'some.B-C)) (or (equal? situation 'f4) (equal? situation 'f7) (equal? situation 'f8) (equal? situation 'f15) (equal? situation 'f17) (equal? situation 'f18) (equal? situation 'f20) (equal? situation 'f27) (equal? situation 'f29) (equal? situation 'f32) (equal? situation 'f35) (equal? situation 'f37) (equal? situation 'f38) (equal? situation 'f41) (equal? situation 'f46) (equal? situation 'f47) (equal? situation 'f48) (equal? situation 'f50) (equal? situation 'f51) (equal? situation 'f52) (equal? situation 'f55) (equal? situation 'f56) (equal? situation 'f60) (equal? situation 'f61) (equal? situation 'f64) (equal? situation 'f65) (equal? situation 'f66) (equal? situation 'f67) (equal? situation 'f68) ))
          (((list 'not-all.B-A 'not-all.B-C)) (or (equal? situation 'f1) (equal? situation 'f4) (equal? situation 'f7) (equal? situation 'f8) (equal? situation 'f13) (equal? situation 'f17) (equal? situation 'f20) (equal? situation 'f22) (equal? situation 'f24) (equal? situation 'f25) (equal? situation 'f29) (equal? situation 'f34) (equal? situation 'f35) (equal? situation 'f37) (equal? situation 'f41) (equal? situation 'f42) (equal? situation 'f45) (equal? situation 'f46) (equal? situation 'f50) (equal? situation 'f51) (equal? situation 'f52) (equal? situation 'f55) (equal? situation 'f56) (equal? situation 'f60) (equal? situation 'f61) (equal? situation 'f62) (equal? situation 'f65) (equal? situation 'f67) (equal? situation 'f68) ))
          (((list 'all.A-B 'all.B-C)) (or (equal? situation 'f6) (equal? situation 'f19) (equal? situation 'f64) (equal? situation 'f66) ))
          (((list 'all.A-B 'no.B-C)) (or (equal? situation 'f25) (equal? situation 'f40) ))
          (((list 'all.A-B 'some.B-C)) (or (equal? situation 'f6) (equal? situation 'f10) (equal? situation 'f17) (equal? situation 'f19) (equal? situation 'f21) (equal? situation 'f41) (equal? situation 'f46) (equal? situation 'f50) (equal? situation 'f55) (equal? situation 'f60) (equal? situation 'f64) (equal? situation 'f65) (equal? situation 'f66) (equal? situation 'f68) ))
          (((list 'all.A-B 'not-all.B-C)) (or (equal? situation 'f10) (equal? situation 'f17) (equal? situation 'f21) (equal? situation 'f25) (equal? situation 'f40) (equal? situation 'f41) (equal? situation 'f46) (equal? situation 'f50) (equal? situation 'f55) (equal? situation 'f60) (equal? situation 'f65) (equal? situation 'f68) ))
          (((list 'no.A-B 'all.B-C)) (or (equal? situation 'f18) (equal? situation 'f32) (equal? situation 'f47) (equal? situation 'f48) ))
          (((list 'no.A-B 'no.B-C)) (or (equal? situation 'f1) (equal? situation 'f13) (equal? situation 'f22) (equal? situation 'f34) (equal? situation 'f45) ))
          (((list 'no.A-B 'some.B-C)) (or (equal? situation 'f8) (equal? situation 'f18) (equal? situation 'f29) (equal? situation 'f32) (equal? situation 'f47) (equal? situation 'f48) (equal? situation 'f56) (equal? situation 'f67) ))
          (((list 'no.A-B 'not-all.B-C)) (or (equal? situation 'f1) (equal? situation 'f8) (equal? situation 'f13) (equal? situation 'f22) (equal? situation 'f29) (equal? situation 'f34) (equal? situation 'f45) (equal? situation 'f56) (equal? situation 'f67) ))
          (((list 'some.A-B 'all.B-C)) (or (equal? situation 'f6) (equal? situation 'f11) (equal? situation 'f15) (equal? situation 'f19) (equal? situation 'f26) (equal? situation 'f27) (equal? situation 'f30) (equal? situation 'f31) (equal? situation 'f33) (equal? situation 'f38) (equal? situation 'f64) (equal? situation 'f66) ))
          (((list 'some.A-B 'no.B-C)) (or (equal? situation 'f2) (equal? situation 'f24) (equal? situation 'f25) (equal? situation 'f28) (equal? situation 'f40) (equal? situation 'f42) (equal? situation 'f44) (equal? situation 'f62) ))
          (((list 'some.A-B 'some.B-C)) (or (equal? situation 'f4) (equal? situation 'f6) (equal? situation 'f7) (equal? situation 'f10) (equal? situation 'f11) (equal? situation 'f14) (equal? situation 'f15) (equal? situation 'f17) (equal? situation 'f19) (equal? situation 'f20) (equal? situation 'f21) (equal? situation 'f26) (equal? situation 'f27) (equal? situation 'f30) (equal? situation 'f31) (equal? situation 'f33) (equal? situation 'f35) (equal? situation 'f37) (equal? situation 'f38) (equal? situation 'f41) (equal? situation 'f43) (equal? situation 'f46) (equal? situation 'f50) (equal? situation 'f51) (equal? situation 'f52) (equal? situation 'f54) (equal? situation 'f55) (equal? situation 'f60) (equal? situation 'f61) (equal? situation 'f64) (equal? situation 'f65) (equal? situation 'f66) (equal? situation 'f68) ))
          (((list 'some.A-B 'not-all.B-C)) (or (equal? situation 'f2) (equal? situation 'f4) (equal? situation 'f7) (equal? situation 'f10) (equal? situation 'f14) (equal? situation 'f17) (equal? situation 'f20) (equal? situation 'f21) (equal? situation 'f24) (equal? situation 'f25) (equal? situation 'f28) (equal? situation 'f35) (equal? situation 'f37) (equal? situation 'f40) (equal? situation 'f41) (equal? situation 'f42) (equal? situation 'f43) (equal? situation 'f44) (equal? situation 'f46) (equal? situation 'f50) (equal? situation 'f51) (equal? situation 'f52) (equal? situation 'f54) (equal? situation 'f55) (equal? situation 'f60) (equal? situation 'f61) (equal? situation 'f62) (equal? situation 'f65) (equal? situation 'f68) ))
          (((list 'not-all.A-B 'all.B-C)) (or (equal? situation 'f11) (equal? situation 'f15) (equal? situation 'f18) (equal? situation 'f26) (equal? situation 'f27) (equal? situation 'f30) (equal? situation 'f31) (equal? situation 'f32) (equal? situation 'f33) (equal? situation 'f38) (equal? situation 'f47) (equal? situation 'f48) ))
          (((list 'not-all.A-B 'no.B-C)) (or (equal? situation 'f1) (equal? situation 'f2) (equal? situation 'f13) (equal? situation 'f22) (equal? situation 'f24) (equal? situation 'f28) (equal? situation 'f34) (equal? situation 'f42) (equal? situation 'f44) (equal? situation 'f45) (equal? situation 'f62) ))
          (((list 'not-all.A-B 'some.B-C)) (or (equal? situation 'f4) (equal? situation 'f7) (equal? situation 'f8) (equal? situation 'f11) (equal? situation 'f14) (equal? situation 'f15) (equal? situation 'f18) (equal? situation 'f20) (equal? situation 'f26) (equal? situation 'f27) (equal? situation 'f29) (equal? situation 'f30) (equal? situation 'f31) (equal? situation 'f32) (equal? situation 'f33) (equal? situation 'f35) (equal? situation 'f37) (equal? situation 'f38) (equal? situation 'f43) (equal? situation 'f47) (equal? situation 'f48) (equal? situation 'f51) (equal? situation 'f52) (equal? situation 'f54) (equal? situation 'f56) (equal? situation 'f61) (equal? situation 'f67) ))
          (((list 'not-all.A-B 'not-all.B-C)) (or (equal? situation 'f1) (equal? situation 'f2) (equal? situation 'f4) (equal? situation 'f7) (equal? situation 'f8) (equal? situation 'f13) (equal? situation 'f14) (equal? situation 'f20) (equal? situation 'f22) (equal? situation 'f24) (equal? situation 'f28) (equal? situation 'f29) (equal? situation 'f34) (equal? situation 'f35) (equal? situation 'f37) (equal? situation 'f42) (equal? situation 'f43) (equal? situation 'f44) (equal? situation 'f45) (equal? situation 'f51) (equal? situation 'f52) (equal? situation 'f54) (equal? situation 'f56) (equal? situation 'f61) (equal? situation 'f62) (equal? situation 'f67) )))))


; parameter 3: "optimality" -- the degree to which the experimenter's argument is optimal for the conclusion
(define alpha 4.75)

; some experiments use conclusions restricted to the classical term ordering (C-A)
; others allow conclusions in either A-C or C-A direction
; explore differences in reasoning by changing this value to 8
(define number-of-conclusions 4)
; the reasoner has uninformative prior beliefs about what the conclusion should be
(define conclusion-prior 
  (lambda (number-of-conclusions) 
    (case number-of-conclusions
          ((4) (uniform-draw (list 'all.C-A 'some.C-A 'no.C-A 'not-all.C-A)))
          ((8) (uniform-draw (list 'all.C-A 'some.C-A 'no.C-A 'not-all.C-A 'all.A-C 'some.A-C 'no.A-C 'not-all.A-C)))
          )))

; the reasoner has uninformative prior beliefs about what arguments the experimenter could give
; the alternative premises considered are restricted to the same term orderings (i.e. "figure")
(define premise-prior 
  (lambda (figure)
    (case figure
          ((1) (uniform-draw (list (list 'all.B-A 'all.C-B) (list 'all.B-A 'no.C-B) (list 'all.B-A 'some.C-B) (list 'all.B-A 'not-all.C-B) (list 'no.B-A 'all.C-B) (list 'no.B-A 'no.C-B) (list 'no.B-A 'some.C-B) (list 'no.B-A 'not-all.C-B) (list 'some.B-A 'all.C-B) (list 'some.B-A 'no.C-B) (list 'some.B-A 'some.C-B) (list 'some.B-A 'not-all.C-B) (list 'not-all.B-A 'all.C-B) (list 'not-all.B-A 'no.C-B) (list 'not-all.B-A 'some.C-B) (list 'not-all.B-A 'not-all.C-B) )))
          ((2) (uniform-draw (list (list 'all.A-B 'all.C-B) (list 'all.A-B 'no.C-B) (list 'all.A-B 'some.C-B) (list 'all.A-B 'not-all.C-B) (list 'no.A-B 'all.C-B) (list 'no.A-B 'no.C-B) (list 'no.A-B 'some.C-B) (list 'no.A-B 'not-all.C-B) (list 'some.A-B 'all.C-B) (list 'some.A-B 'no.C-B) (list 'some.A-B 'some.C-B) (list 'some.A-B 'not-all.C-B) (list 'not-all.A-B 'all.C-B) (list 'not-all.A-B 'no.C-B) (list 'not-all.A-B 'some.C-B) (list 'not-all.A-B 'not-all.C-B) )))
          ((3) (uniform-draw (list (list 'all.B-A 'all.B-C) (list 'all.B-A 'no.B-C) (list 'all.B-A 'some.B-C) (list 'all.B-A 'not-all.B-C) (list 'no.B-A 'all.B-C) (list 'no.B-A 'no.B-C) (list 'no.B-A 'some.B-C) (list 'no.B-A 'not-all.B-C) (list 'some.B-A 'all.B-C) (list 'some.B-A 'no.B-C) (list 'some.B-A 'some.B-C) (list 'some.B-A 'not-all.B-C) (list 'not-all.B-A 'all.B-C) (list 'not-all.B-A 'no.B-C) (list 'not-all.B-A 'some.B-C) (list 'not-all.B-A 'not-all.B-C) )))
          ((4) (uniform-draw (list (list 'all.A-B 'all.B-C) (list 'all.A-B 'no.B-C) (list 'all.A-B 'some.B-C) (list 'all.A-B 'not-all.B-C) (list 'no.A-B 'all.B-C) (list 'no.A-B 'no.B-C) (list 'no.A-B 'some.B-C) (list 'no.A-B 'not-all.B-C) (list 'some.A-B 'all.B-C) (list 'some.A-B 'no.B-C) (list 'some.A-B 'some.B-C) (list 'some.A-B 'not-all.B-C) (list 'not-all.A-B 'all.B-C) (list 'not-all.A-B 'no.B-C) (list 'not-all.A-B 'some.B-C) (list 'not-all.A-B 'not-all.B-C) )))
          )))



; this function takes a distribution, raises it to a power (alph) and renormalizes
; this is used in conjunction with the optimality parameter (alpha)
(define (raise-to-power dist alph)
  (list (first dist) (map (lambda (x) (pow x alph)) (second dist))))

(define experimenter
  ; the experimenter takes in the conclusion as an argument (i.e. she has a conclusion in mind)
  (mem 
   (lambda (conclusion figure depth)
     (enumeration-query
      ; the experimenter draws premises from the premise-prior (uniform) distribution
      (define premises  (premise-prior figure))
      
      ; the experimenter produces premises
      premises
      
      ; the experimenter wants the reasoner to draw a particular conclusion, gives the premises 
      (equal? conclusion (apply multinomial (raise-to-power (reasoner premises figure depth) alpha))
              )))))

(define reasoner
  ; the reasoner takes in premises as arguments (the figure value needs to be passed to restrict the space of alternative premises considered)
  (mem 
   (lambda  (premises figure depth)
     (enumeration-query
      ; the reasoner is uncertain about what the situation is
      (define situation (situation-prior))
      ; the reasoner is also uncertain about what conclusion is true
      (define conclusion (conclusion-prior number-of-conclusions))
      
      ; the reasoner produces a conclusion
      conclusion
      
      (and 
       ; the conclusion must be a true of the situation
       (sentence-eval conclusion situation)
       (if (= depth 0)
           (if (= alpha 0)
               ; you can set alpha = 0 to see what happens when you condition only on the truth of the conclusion
               ; (in this case, the subject doesn't read the premises and just evaluates the conclusion)
               ; in the paper, this is referred to as the "Prior"
               true
               ; if alpha > 0, condition on the premises being truth of the situation
               (sentence-eval premises situation))
           ; if depth = 1, the reasoner assumes the experimenter produces premises 
           ; conditioned on the reasoner drawing a particular conclusion
           (equal? premises (apply multinomial (experimenter conclusion figure (- depth 1))))))))))


; EXAMPLES FROM FIGURE 2 of CogSci proceedings
; note that in those simulations, we used number-of-conclusions = 8 and collapsed across term-orderings to compare to the 
; Oaksford & Chater (1999) meta-analysis data (which did essentially the same procedure for pooling data from different studies)

; [1]
; No B are A
; All C are B
(reasoner (list 'no.B-A 'all.C-B) 1 0)
; this is a valid (figure 4) syllogism with 2 valid conclusions
; the literal reaonser (depth=0) has no preference among valid conclusions
; the pragmatic reasonser (depth=1) infers that "None" is the more likely intended conclusion

; [2]
; All B are A
; Some B are C
;(reasoner (list 'all.B-A 'some.B-C) 3 0)

; [3] All A are B
; Some B are C
;(reasoner (list 'all.A-B 'some.B-C) 4 0)

; [4] Some B are A
; No B are C
;(reasoner (list 'some.B-A 'no.B-C) 3 0)

; [5] No A are B
; No B are C
;(reasoner (list 'no.A-B 'no.B-C) 4 0)

; Example of figure 2 syllogism
;(reasoner (list 'all.A-B 'all.C-B) 2 0)

References: