fmod WITCH is *** Anything can be a thing - duck, person, witch etc. sort Thing . *** Sorts for *particular* things sorts Witch Burns Wood Floats . *** Represents the weight of an object sort Weight . *** The subsort relationships subsort Witch < Burns < Wood < Floats < Thing . op weight : Thing -> Weight . *** Equality operator for Things op _===_ : Weight Weight -> Bool . *** Constant for the duck op duck : -> Floats . *** Constant for the possible witch op witch? : -> Thing . var wood : Wood . var burn : Burns . var witch : Witch . var floats : Floats . var x : Thing . *** The membership axioms now capture most of the *** 'logic' mb floats : Wood . mb wood : Burns . mb burn : Witch . cmb x : Floats if (weight(x) === weight(duck)) . eq weight(witch?) === weight(duck) = true . endfm