something is a person if it is either Adam or Eve, or if it has a mother. We can express this in a single rule as follows:
person(X) :- (X=adam; X=eve; mother(X, Y)).
- I learned Prolog in university and it was instructive. But has anyone ever professionally used it? - no 
- DataLog is used to verify smart contracts. I don’t know any specific examples of prolog used in the industry, though I am sure there are a few. Probably, there are expert systems implemented with prolog that are still used. - Logic programming in general has a few usages, the unification algorithm is used for pretty much every type system. Also, it is quite good for verification systems. For example, I know some symbolic execution systems implemented in OCaml. 
 
- Can someone explain where the Y comes from? Is this something like, there exists a mother relation between this X and some Y? - mother can be used in several ways. If both X and Y variables are uninitialized, then it looks for all mother relationships. If one of them is initialized, it looks for matching relationships. If both are initialized, it returns true if such a relationship exists. 
- Yeah, the - Yis a wildcard in that position. Typically, you would write it as an underscore, primarily because most Prolog compilers will warn about unknown variables, since those could also just be a typo of an existing variable.
 
- I’ll admit I don’t speak prolog but doesn’t this definition lack a recursive case to ensure that the mother is either Eve or a descendent of Eve? And there should probably be a father case in there as well? - Depends on how you want to define your domain knowledge. - The thing you need to define for sure is the predicate - mother/2(Which has arity 2, or in other words, two arguments). From then on, multiple options are available:- Take mother(X, Y)as an “axiom”, and define mother terms for all elements:
 - mother(abel, eve). mother(isaac, sarah).- Derive mother(X, Y)fromfemale(X)andparent(X, Y)terms.
 - mother(X, Y) :- parent(X, Y), female(Y).- Smash the institutional gender power structures and define only parent/2terms instead ofmother/2andfather/2.
 - I never saw such a potent combination of gender politics and prolog 
 
- Take 
- doesn’t this definition lack a recursive case to ensure that the mother is either Eve or a descendent of Eve - We don’t see the definition of - mother. It might already encode that Y is a person.- And there should probably be a father case in there as well? - While every person does also have a father, it’s completely redundant, since being a person can fully be described by [Edit: - beinghaving] a mother (or being Adam or Eve).- since being a person can fully be described by being a mother - Can you explain how this is? - Thanks for catching that. I fixed my comment. 
 
 
 




