mirror of
				https://github.com/KevinMidboe/linguist.git
				synced 2025-10-29 17:50:22 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			344 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			344 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| ;;;***************************
 | |
| ;;;* DEFFACTS KNOWLEDGE BASE *
 | |
| ;;;***************************
 | |
| 
 | |
| (deffacts MAIN::knowledge-base
 | |
|    (welcome (message WelcomeMessage))
 | |
|    (goal (variable type.animal))
 | |
|    (legalanswers (values yes no))
 | |
|    (displayanswers (values "Yes" "No"))
 | |
|    (rule (if backbone is yes) 
 | |
|          (then superphylum is backbone))
 | |
|    (rule (if backbone is no) 
 | |
|          (then superphylum is jellyback))
 | |
|    (question (variable backbone)
 | |
|              (query backbone.query))
 | |
|    (rule (if superphylum is backbone and
 | |
|           warm.blooded is yes) 
 | |
|          (then phylum is warm))
 | |
|    (rule (if superphylum is backbone and
 | |
|           warm.blooded is no) 
 | |
|          (then phylum is cold))
 | |
|    (question (variable warm.blooded)
 | |
|              (query warm.blooded.query))
 | |
|    (rule (if superphylum is jellyback and
 | |
|           live.prime.in.soil is yes) 
 | |
|          (then phylum is soil))
 | |
|    (rule (if superphylum is jellyback and
 | |
|           live.prime.in.soil is no) 
 | |
|          (then phylum is elsewhere))
 | |
|    (question (variable live.prime.in.soil)
 | |
|              (query live.prime.in.soil.query))
 | |
|    (rule (if phylum is warm and
 | |
|           has.breasts is yes) 
 | |
|          (then class is breasts))
 | |
|    (rule (if phylum is warm and
 | |
|           has.breasts is no) 
 | |
|          (then type.animal is bird))
 | |
|    (question (variable has.breasts)
 | |
|              (query has.breasts.query))
 | |
|    (rule (if phylum is cold and
 | |
|           always.in.water is yes) 
 | |
|          (then class is water))
 | |
|    (rule (if phylum is cold and
 | |
|           always.in.water is no) 
 | |
|          (then class is dry))
 | |
|    (question (variable always.in.water)
 | |
|              (query always.in.water.query))
 | |
|    (rule (if phylum is soil and
 | |
|           flat.bodied is yes) 
 | |
|          (then type.animal is flatworm))
 | |
|    (rule (if phylum is soil and
 | |
|           flat.bodied is no) 
 | |
|          (then type.animal is worm.leech))
 | |
|    (question (variable flat.bodied)
 | |
|              (query flat.bodied.query))
 | |
|    (rule (if phylum is elsewhere and
 | |
|           body.in.segments is yes) 
 | |
|          (then class is segments))
 | |
|    (rule (if phylum is elsewhere and
 | |
|           body.in.segments is no) 
 | |
|          (then class is unified))
 | |
|    (question (variable body.in.segments)
 | |
|              (query body.in.segments.query))
 | |
|    (rule (if class is breasts and
 | |
|           can.eat.meat is yes) 
 | |
|          (then order is meat))
 | |
|    (rule (if class is breasts and
 | |
|           can.eat.meat is no) 
 | |
|          (then order is vegy))
 | |
|    (question (variable can.eat.meat)
 | |
|              (query can.eat.meat.query))
 | |
|    (rule (if class is water and
 | |
|           boney is yes) 
 | |
|          (then type.animal is fish))
 | |
|    (rule (if class is water and
 | |
|           boney is no) 
 | |
|          (then type.animal is shark.ray))
 | |
|    (question (variable boney)
 | |
|              (query boney.query))
 | |
|    (rule (if class is dry and
 | |
|           scaly is yes) 
 | |
|          (then order is scales))
 | |
|    (rule (if class is dry and
 | |
|           scaly is no) 
 | |
|          (then order is soft))
 | |
|    (question (variable scaly)
 | |
|              (query scaly.query))
 | |
|    (rule (if class is segments and
 | |
|           shell is yes) 
 | |
|          (then order is shell))
 | |
|    (rule (if class is segments and
 | |
|           shell is no) 
 | |
|          (then type.animal is centipede.millipede.insect))
 | |
|    (question (variable shell)
 | |
|              (query shell.query))
 | |
|    (rule (if class is unified and
 | |
|           digest.cells is yes) 
 | |
|          (then order is cells))
 | |
|    (rule (if class is unified and
 | |
|           digest.cells is no) 
 | |
|          (then order is stomach))
 | |
|    (question (variable digest.cells)
 | |
|              (query digest.cells.query))
 | |
|    (rule (if order is meat and
 | |
|           fly is yes) 
 | |
|          (then type.animal is bat))
 | |
|    (rule (if order is meat and
 | |
|           fly is no) 
 | |
|          (then family is nowings))
 | |
|    (question (variable fly)
 | |
|              (query fly.query))
 | |
|    (rule (if order is vegy and
 | |
|           hooves is yes) 
 | |
|          (then family is hooves))
 | |
|    (rule (if order is vegy and
 | |
|           hooves is no) 
 | |
|          (then family is feet))
 | |
|    (question (variable hooves)
 | |
|              (query hooves.query))
 | |
|    (rule (if order is scales and
 | |
|           rounded.shell is yes) 
 | |
|          (then type.animal is turtle))
 | |
|    (rule (if order is scales and
 | |
|           rounded.shell is no) 
 | |
|          (then family is noshell))
 | |
|    (question (variable rounded.shell)
 | |
|              (query rounded.shell.query))
 | |
|    (rule (if order is soft and
 | |
|           jump is yes) 
 | |
|          (then type.animal is frog))
 | |
|    (rule (if order is soft and
 | |
|           jump is no) 
 | |
|          (then type.animal is salamander))
 | |
|    (question (variable jump)
 | |
|              (query jump.query))
 | |
|    (rule (if order is shell and
 | |
|           tail is yes) 
 | |
|          (then type.animal is lobster))
 | |
|    (rule (if order is shell and
 | |
|           tail is no) 
 | |
|          (then type.animal is crab))
 | |
|    (question (variable tail)
 | |
|              (query tail.query))
 | |
|    (rule (if order is cells and
 | |
|           stationary is yes) 
 | |
|          (then family is stationary))
 | |
|    (rule (if order is cells and
 | |
|           stationary is no) 
 | |
|          (then type.animal is jellyfish))
 | |
|    (question (variable stationary)
 | |
|              (query stationary.query))
 | |
|    (rule (if order is stomach and
 | |
|           multicelled is yes) 
 | |
|          (then family is multicelled))
 | |
|    (rule (if order is stomach and
 | |
|           multicelled is no) 
 | |
|          (then type.animal is protozoa))
 | |
|    (question (variable multicelled)
 | |
|              (query multicelled.query))
 | |
|    (rule (if family is nowings and
 | |
|           opposing.thumb is yes) 
 | |
|          (then genus is thumb))
 | |
|    (rule (if family is nowings and
 | |
|           opposing.thumb is no) 
 | |
|          (then genus is nothumb))
 | |
|    (question (variable opposing.thumb)
 | |
|              (query opposing.thumb.query))
 | |
|    (rule (if family is hooves and
 | |
|           two.toes is yes) 
 | |
|          (then genus is twotoes))
 | |
|    (rule (if family is hooves and
 | |
|           two.toes is no) 
 | |
|          (then genus is onetoe))
 | |
|    (question (variable two.toes)
 | |
|              (query two.toes.query))
 | |
|    (rule (if family is feet and
 | |
|           live.in.water is yes) 
 | |
|          (then genus is water))
 | |
|    (rule (if family is feet and
 | |
|           live.in.water is no) 
 | |
|          (then genus is dry))
 | |
|    (question (variable live.in.water)
 | |
|              (query live.in.water.query))
 | |
|    (rule (if family is noshell and
 | |
|           limbs is yes) 
 | |
|          (then type.animal is crocodile.alligator))
 | |
|    (rule (if family is noshell and
 | |
|           limbs is no) 
 | |
|          (then type.animal is snake))
 | |
|    (question (variable limbs)
 | |
|              (query limbs.query))
 | |
|    (rule (if family is stationary and
 | |
|           spikes is yes) 
 | |
|          (then type.animal is sea.anemone))
 | |
|    (rule (if family is stationary and
 | |
|           spikes is no) 
 | |
|          (then type.animal is coral.sponge))
 | |
|    (question (variable spikes)
 | |
|              (query spikes.query))
 | |
|    (rule (if family is multicelled and
 | |
|           spiral.shell is yes) 
 | |
|          (then type.animal is snail))
 | |
|    (rule (if family is multicelled and
 | |
|           spiral.shell is no) 
 | |
|          (then genus is noshell))
 | |
|    (question (variable spiral.shell)
 | |
|              (query spiral.shell.query))
 | |
|    (rule (if genus is thumb and
 | |
|           prehensile.tail is yes) 
 | |
|          (then type.animal is monkey))
 | |
|    (rule (if genus is thumb and
 | |
|           prehensile.tail is no) 
 | |
|          (then species is notail))
 | |
|    (question (variable prehensile.tail)
 | |
|              (query prehensile.tail.query))
 | |
|    (rule (if genus is nothumb and
 | |
|           over.400 is yes) 
 | |
|          (then species is 400))
 | |
|    (rule (if genus is nothumb and
 | |
|           over.400 is no) 
 | |
|          (then species is under400))
 | |
|    (question (variable over.400)
 | |
|              (query over.400.query))
 | |
|    (rule (if genus is twotoes and
 | |
|           horns is yes) 
 | |
|          (then species is horns))
 | |
|    (rule (if genus is twotoes and
 | |
|           horns is no) 
 | |
|          (then species is nohorns))
 | |
|    (question (variable horns)
 | |
|              (query horns.query))
 | |
|    (rule (if genus is onetoe and
 | |
|           plating is yes) 
 | |
|          (then type.animal is rhinoceros))
 | |
|    (rule (if genus is onetoe and
 | |
|           plating is no) 
 | |
|          (then type.animal is horse.zebra))
 | |
|    (question (variable plating)
 | |
|              (query plating.query))
 | |
|    (rule (if genus is water and
 | |
|           hunted is yes) 
 | |
|          (then type.animal is whale))
 | |
|    (rule (if genus is water and
 | |
|           hunted is no) 
 | |
|          (then type.animal is dolphin.porpoise))
 | |
|    (question (variable hunted)
 | |
|              (query hunted.query))
 | |
|    (rule (if genus is dry and
 | |
|           front.teeth is yes) 
 | |
|          (then species is teeth))
 | |
|    (rule (if genus is dry and
 | |
|           front.teeth is no) 
 | |
|          (then species is noteeth))
 | |
|    (question (variable front.teeth)
 | |
|              (query front.teeth.query))
 | |
|    (rule (if genus is noshell and
 | |
|           bivalve is yes) 
 | |
|          (then type.animal is clam.oyster))
 | |
|    (rule (if genus is noshell and
 | |
|           bivalve is no) 
 | |
|          (then type.animal is squid.octopus))
 | |
|    (question (variable bivalve)
 | |
|              (query bivalve.query))
 | |
|    (rule (if species is notail and
 | |
|           nearly.hairless is yes) 
 | |
|          (then type.animal is man))
 | |
|    (rule (if species is notail and
 | |
|           nearly.hairless is no) 
 | |
|          (then subspecies is hair))
 | |
|    (question (variable nearly.hairless)
 | |
|              (query nearly.hairless.query))
 | |
|    (rule (if species is 400 and
 | |
|           land.based is yes) 
 | |
|          (then type.animal is bear.tiger.lion))
 | |
|    (rule (if species is 400 and
 | |
|           land.based is no) 
 | |
|          (then type.animal is walrus))
 | |
|    (question (variable land.based)
 | |
|              (query land.based.query))
 | |
|    (rule (if species is under400 and
 | |
|           thintail is yes) 
 | |
|          (then type.animal is cat))
 | |
|    (rule (if species is under400 and
 | |
|           thintail is no) 
 | |
|          (then type.animal is coyote.wolf.fox.dog))
 | |
|    (question (variable thintail)
 | |
|              (query thintail.query))
 | |
|    (rule (if species is nohorns and
 | |
|           lives.in.desert is yes) 
 | |
|          (then type.animal is camel))
 | |
|    (rule (if species is nohorns and
 | |
|           lives.in.desert is no and
 | |
|           semi.aquatic is no) 
 | |
|          (then type.animal is giraffe))
 | |
|    (rule (if species is nohorns and
 | |
|           lives.in.desert is no and
 | |
|           semi.aquatic is yes) 
 | |
|          (then type.animal is hippopotamus))
 | |
|    (question (variable lives.in.desert)
 | |
|              (query lives.in.desert.query))
 | |
|    (question (variable semi.aquatic)
 | |
|              (query semi.aquatic.query))
 | |
|    (rule (if species is teeth and
 | |
|           large.ears is yes) 
 | |
|          (then type.animal is rabbit))
 | |
|    (rule (if species is teeth and
 | |
|           large.ears is no)
 | |
|          (then type.animal is rat.mouse.squirrel.beaver.porcupine))
 | |
|    (question (variable large.ears)
 | |
|              (query large.ears.query))
 | |
|    (rule (if species is noteeth and
 | |
|           pouch is yes) 
 | |
|          (then type.animal is kangaroo.koala.bear))
 | |
|    (rule (if species is noteeth and
 | |
|           pouch is no) 
 | |
|          (then type.animal is mole.shrew.elephant))
 | |
|    (question (variable pouch)
 | |
|              (query pouch.query))
 | |
|    (rule (if subspecies is hair and
 | |
|           long.powerful.arms is yes) 
 | |
|          (then type.animal is orangutan.gorilla.chimpanzee))
 | |
|    (rule (if subspecies is hair and
 | |
|           long.powerful.arms is no) 
 | |
|          (then type.animal is baboon))
 | |
|    (question (variable long.powerful.arms)
 | |
|              (query long.powerful.arms.query))
 | |
|    (rule (if species is horns and
 | |
|           fleece is yes) 
 | |
|          (then type.animal is sheep.goat))
 | |
|    (rule (if species is horns and
 | |
|           fleece is no) 
 | |
|          (then subsubspecies is nofleece))
 | |
|    (question (variable fleece)
 | |
|              (query fleece.query))
 | |
|    (rule (if subsubspecies is nofleece and
 | |
|           domesticated is yes) 
 | |
|          (then type.animal is cow))
 | |
|    (rule (if subsubspecies is nofleece and
 | |
|           domesticated is no) 
 | |
|          (then type.animal is deer.moose.antelope))
 | |
|    (question (variable domesticated)
 | |
|              (query domesticated.query))
 | |
|    (answer (prefix "I think your animal is a ") (variable type.animal) (postfix ".")))
 |