View source with raw comments or as raw
    1% Given 3 birds, which can fly?
    2
    3penguin(sam). % sam is a penguin
    4wounded_bird(john). % john is wounded
    5bird(tweety). % tweety is just a bird
    6
    7% penguines and wounded birds are still birds
    8bird(X) :- penguin(X).
    9bird(X) :- wounded_bird(X).
   10
   11% penguins and wounded birds are abnormal
   12ab(X) :- penguin(X).
   13ab(X) :- wounded_bird(X).
   14
   15% birds can fly if they are not abnormal
   16flies(X) :- bird(X), not ab(X).
   17
   18% explicit closed world assumptions
   19-flies(X) :- ab(X).
   20-flies(X) :- -bird(X).
   21
   22-wounded_bird(X) :- not wounded_bird(X).
   23
   24-bird(X) :- not bird(X).
   25
   26-penguin(X) :- not penguin(X).
   27
   28-ab(X) :- not