In trying to better understand forall/2 tried the following query and was a bit surprised by the result.
?- forall(false,true).
true.
So ran the other variations and now it makes sense; think material conditional
?- forall(true,false).
false.
?- forall(false,false).
true.
?- forall(true,true).
true.
Some more food for thought.
?- forall(true,(true;true)).
true.
?- forall(true,(true;false)).
true.
?- forall(true,(false;true)).
true.
?- forall(true,(false;false)).
false.
?- forall((true;true),true).
true.
?- forall((true;false),true).
true.
?- forall((false;true),true).
true.
?- forall((false;false),true).
true.
?- forall((true;true),false).
false.
?- forall((true;false),false).
false.
?- forall((false;true),false).
false.
?- forall((false;false),false).
true.
?- forall((true;false),(true;false)).
true.