and :: c → c → c cons :: a → b → b false :: c forall :: (a → c) → b → c forsome :: (a → c) → b → c nil :: b or :: c → c → c true :: c and(true, true) → true and(true, false) → false and(false, true) → false and(false, false) → false or(true, true) → true or(true, false) → true or(false, true) → true or(false, false) → false forall(F, nil) → true forall(Z, cons(U, V)) → and(Z(U), forall(Z, V)) forsome(I, nil) → false forsome(J, cons(X1, Y1)) → or(J(X1), forsome(J, Y1))