;;;; Reduced soybean data with linear features suitable for version-spaces with
;;;; linear feature addition.

(defun make-linear-domains (levels-list)
  ;;; If features values are simply integers 0 to n then the number of values of a
  ;;; feature is sufficient for determining its domain.  This function creates a
  ;;; list suitable for *domains* given a list of the number of values for each feature.
  ;;; If a level specifaction is of the form (Linear l u) it is assumed to specify a linear
  ;;; feature and is left as is.
  
  (mapcar #'(lambda (levels) (if (and (listp levels) (eq (first levels) 'linear))
				 levels
				 (let ((domain nil)) 
				   (dotimes (i levels domain)
				     (setf domain (nconc domain (list i)))))))
	  levels-list))


(setf *domains* (make-linear-domains '((linear 0 6) (linear 0 2) (linear 0 2) (linear 0 3) 5 (linear 0 3)
				       2 2 3 3 (linear 0 3) 3 3 3 4 2 3 7 7 4 4 3 5 3 2 5 2 3 3 3 3 2)))
(setf *feature-names* 
     '(TIME-OF-OCCURRENCE PRECIPITATION TEMPERATURE CROPPING-HISTORY DAMAGED-AREA SEVERITY
       PLANT-HEIGHT CONDITION-OF-LEAVES YELLOW-LEAF-SPOT-HALOS LEAF-SPOT-MARGINS LEAF-SPOT-SIZE
       SHOT-HOLING SHREDDING LEAF-MALFORMATION LEAF-MILDEW-GROWTH CONDITION-OF-STEM STEM-LODGING
       STEM-CANKERS CANKER-LESION-COLOR FRUITING-BODIES-ON-STEM EXTERNAL-DECAY-OF-STEM
       MYCELIUM-ON-STEM INTERNAL-DISCOLORATION-OF-STEM SCLEROTIA-INTERNAL-OR-EXTERNAL
       CONDITION-OF-FRUIT-PODS FRUIT-SPOTS CONDITION-OF-SEED SEED-MOLD-GROWTH SEED-DISCOLORATION
       SEED-SIZE SEED-SHRIVELING CONDITION-OF-ROOTS))

(setf soybean-categories '(alternaria anthracnose bact_pustule brown_stem))


(setf ALTERNARIA
'((5 2 2 3 2 0 1 0 1 1 3 2 1 1 1 0 0 0 0 0 0 0 0 0 1 2 1 1 2 1 1 0)
 (5 2 2 1 3 0 1 0 1 1 3 2 1 1 1 0 0 0 0 0 0 0 0 0 1 2 0 0 0 0 0 0)
 (6 2 2 3 1 0 1 0 1 1 3 2 1 1 1 0 0 0 0 0 0 0 0 0 1 2 1 1 2 1 1 0)
 (4 2 1 3 1 1 1 0 1 1 3 2 1 1 1 0 0 0 0 0 0 0 0 0 0 2 1 1 2 1 1 0)
 (5 2 2 1 0 1 1 0 1 1 3 2 1 1 1 0 0 0 0 0 0 0 0 0 1 2 1 1 2 1 1 0)
 (4 2 1 3 0 1 1 0 1 1 3 2 1 1 1 0 0 0 0 0 0 0 0 0 1 2 1 1 2 1 1 0)
 (3 2 1 3 0 1 1 0 1 1 3 2 1 1 1 0 0 0 0 0 0 0 0 0 1 2 1 1 2 1 1 0)
 (6 2 2 3 1 0 1 0 1 1 3 2 1 1 1 0 0 0 0 0 0 0 0 0 1 2 0 0 0 0 0 0)
 (4 2 1 1 1 1 1 0 1 1 3 2 1 1 1 0 0 0 0 0 0 0 0 0 1 2 1 1 2 1 1 0)
 (5 2 2 3 0 0 1 0 1 1 3 2 1 1 1 0 0 0 0 0 0 0 0 0 1 2 1 1 2 1 1 0)
 (5 2 2 3 2 0 1 0 1 1 3 2 1 1 1 0 0 0 0 0 0 0 0 0 1 2 1 1 2 1 1 0)
 (5 2 2 3 3 0 1 0 1 1 3 2 1 1 1 0 0 0 0 0 0 0 0 0 1 2 1 1 2 1 1 0)
 (5 2 2 1 0 0 1 0 1 1 3 2 1 1 1 0 0 0 0 0 0 0 0 0 0 2 1 1 2 1 1 0)
 (5 2 2 3 0 1 1 0 1 1 3 2 1 1 1 0 0 0 0 0 0 0 0 0 1 2 1 1 2 1 1 0)
 (5 2 2 3 1 0 1 0 1 1 3 2 1 1 1 0 0 0 0 0 0 0 0 0 1 2 0 0 0 0 0 0)
 (6 2 2 3 0 1 1 0 1 1 3 2 1 1 1 0 0 0 0 0 0 0 0 0 1 2 0 0 0 0 0 0)
 (6 2 2 3 1 1 1 0 1 1 3 2 1 1 1 0 0 0 0 0 0 0 0 0 1 2 1 1 2 1 1 0)))

(setf ANTHRACNOSE
'((5 2 1 3 2 1 0 1 0 0 0 0 0 0 0 1 1 4 4 2 1 1 1 1 1 4 1 2 2 2 2 0)
 (5 2 1 1 0 1 0 1 0 0 0 0 0 0 0 1 1 4 4 2 1 1 1 1 1 4 0 0 0 0 0 0)
 (5 2 1 3 1 1 1 1 0 0 0 0 0 0 0 1 1 4 4 1 1 1 1 1 1 4 1 2 2 2 2 0)
 (5 2 1 1 0 1 1 1 0 0 0 0 0 0 0 1 1 5 4 1 1 1 1 1 1 4 0 0 0 0 0 0)
 (5 2 1 3 1 1 0 1 0 0 3 0 0 0 0 1 1 3 4 2 1 1 1 1 1 4 1 2 1 2 2 0)
 (5 2 1 3 1 1 0 1 0 0 0 0 0 0 0 1 1 5 4 2 1 1 1 1 1 2 0 0 0 0 0 0)
 (6 2 1 3 2 1 1 1 0 0 3 0 0 0 0 1 1 3 4 2 1 1 1 1 1 4 1 2 1 2 2 0)
 (6 2 1 3 1 1 1 1 0 0 0 0 0 0 0 1 1 5 4 2 1 2 1 1 1 4 0 0 0 0 0 0)
 (5 2 1 1 0 1 0 1 0 0 0 0 0 0 0 1 1 5 4 2 1 2 1 1 1 4 0 0 0 0 0 0)
 (4 2 1 3 1 1 1 1 0 0 0 0 0 0 0 1 1 5 4 1 1 1 1 1 1 4 1 2 1 2 2 0)
 (4 2 1 3 2 1 0 1 0 0 3 0 0 0 0 1 1 3 4 2 1 1 1 1 1 4 1 2 1 2 2 0)
 (4 2 2 3 1 1 0 0 1 2 3 1 1 1 1 1 1 5 4 2 2 1 1 1 1 4 0 0 0 0 0 0)
 (6 2 2 3 2 0 1 1 0 0 0 0 0 0 0 1 1 4 4 2 2 2 1 1 1 2 0 0 0 0 0 0)
 (6 2 2 1 0 0 1 0 1 2 3 1 1 1 1 1 2 4 4 2 2 2 1 1 1 4 0 0 0 0 0 0)
 (5 2 1 3 1 1 1 1 0 0 3 0 0 0 0 1 1 4 4 2 1 1 1 1 1 4 1 2 2 2 2 0)
 (5 2 2 3 1 1 0 0 1 2 3 1 1 1 1 1 1 4 4 2 2 2 1 1 1 2 0 0 0 0 0 0)
 (5 2 1 1 0 2 1 1 0 0 3 0 0 0 0 1 1 3 4 1 1 1 1 1 1 4 0 0 0 0 0 0)))

(setf BACT_PUSTULE
'((4 1 1 3 3 0 1 0 2 2 1 2 2 1 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0)
 (2 2 1 3 0 2 1 0 2 2 1 2 2 1 1 0 0 0 0 0 0 0 0 0 0 0 1 2 1 1 1 0)
 (3 2 1 0 1 2 1 0 2 2 1 2 2 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)
 (3 0 1 0 0 0 1 0 1 2 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)
 (5 2 2 2 0 2 1 0 1 2 2 2 2 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)
 (5 2 2 3 0 2 1 0 1 2 2 1 2 1 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0)
 (3 1 0 3 3 0 1 0 2 2 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)
 (2 2 1 1 2 2 1 0 2 2 1 2 2 1 1 0 0 0 0 0 0 0 0 0 1 1 1 2 1 2 1 0)
 (4 2 1 0 3 1 0 0 1 2 1 2 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)
 (3 1 0 3 2 0 0 0 2 2 1 2 2 1 1 0 0 0 0 0 0 0 0 0 1 1 1 2 1 2 1 0)
 (2 1 2 3 0 0 1 0 1 2 1 2 2 1 1 0 0 0 0 0 0 0 0 0 0 0 1 2 1 1 1 0)
 (6 2 2 3 0 2 1 0 2 2 1 2 2 1 1 0 0 0 0 0 0 0 0 0 1 2 0 0 0 0 0 0)
 (3 2 1 1 0 1 1 0 2 2 1 1 2 1 1 0 0 0 0 0 0 0 0 0 0 0 1 2 1 2 1 0)
 (3 2 1 2 3 1 1 0 1 2 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)
 (3 2 2 2 3 0 1 0 1 2 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)
 (3 1 1 3 2 0 0 0 2 2 1 2 2 1 1 0 0 0 0 0 0 0 0 0 0 0 1 2 1 2 1 0)
 (2 2 2 1 1 3 1 0 2 2 1 2 2 1 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0)))

(setf BROWN_STEM
'((5 1 0 3 2 1 0 1 0 0 0 0 0 0 0 1 2 1 0 1 1 1 3 1 0 0 0 0 0 0 0 0)
 (5 0 2 3 1 2 1 0 1 2 3 1 1 1 1 1 1 1 0 1 1 1 3 1 0 0 0 0 0 0 0 0)
 (4 0 0 3 1 1 0 0 0 0 0 1 1 1 1 1 2 1 0 1 1 1 3 1 0 0 0 0 0 0 0 0)
 (5 0 1 3 1 1 1 0 0 0 0 1 1 1 1 1 1 1 0 1 1 1 2 1 0 0 0 0 0 0 0 0)
 (5 0 2 3 2 1 1 0 1 2 3 1 1 1 1 1 1 1 0 1 1 1 3 1 0 0 0 0 0 0 0 0)
 (4 0 2 1 1 1 1 0 1 2 3 1 1 1 1 1 1 1 0 1 1 1 2 1 0 0 0 0 0 0 0 0)
 (5 0 0 3 1 1 0 0 0 0 0 1 1 1 1 1 2 1 0 1 1 1 3 1 0 0 0 0 0 0 0 0)
 (4 0 1 1 2 1 1 0 0 0 0 1 1 1 1 1 1 1 0 1 1 1 3 1 0 0 0 0 0 0 0 0)
 (3 0 1 1 2 1 1 1 0 0 0 0 0 0 0 1 1 1 0 1 1 1 2 1 0 0 0 0 0 0 0 0)
 (6 1 1 3 2 1 0 0 0 0 0 1 1 1 1 1 1 1 0 1 1 1 3 1 0 0 0 0 0 0 0 0)
 (5 0 2 3 1 1 1 0 0 0 0 1 1 1 1 1 1 1 0 1 1 1 3 1 0 0 0 0 0 0 0 0)
 (3 0 1 3 1 1 1 1 0 0 0 0 0 0 0 1 1 1 0 1 1 1 3 1 0 0 0 0 0 0 0 0)
 (4 0 1 3 3 1 1 0 0 0 0 1 1 1 1 1 1 1 0 1 1 1 3 1 0 0 0 0 0 0 0 0)
 (3 0 1 3 1 1 1 0 1 1 3 1 1 1 1 1 1 1 0 1 1 1 3 1 0 0 0 0 0 0 0 0)
 (4 1 1 3 1 1 1 0 1 2 3 1 1 1 1 1 1 1 0 1 1 1 3 1 0 0 0 0 0 0 0 0)
 (4 0 1 1 2 0 1 0 1 2 3 1 1 1 1 1 1 1 0 1 1 1 3 1 0 0 0 0 0 0 0 0)
 (4 0 1 3 1 1 1 0 0 0 0 1 1 1 1 1 1 1 0 1 1 1 2 1 0 0 0 0 0 0 0 0)))

(separate-instances soybean-categories 8)
