So did Prince Henry have military skills .. or not?
This question masquerades as a property question. If we had asked whether Henry had red hair, we could define a predicate
red-haired(henry)which would have the boolean value true or false. Similarly, it seems we are asking for the truth-value of the predicate:
has-military-skills(henry)but that isn't right, because it doesn't capture the environmental context.
Instead we should write:
λx.has-military-skills(henry, x),a boolean-valued function with dummy variable x which needs to be bound to a specific opponent before a truth value can be assigned. So
λx.has-military-skills(henry, x)(knight) = has-military-skills(henry, knight)which evaluates to true.
λx.has-military-skills(henry, x)(russians) = has-military-skills(henry, russians)which turns out to be false.
This is the approach Richard Montague took in his natural language semantics.