A Skolem definition is similar but slightly different from the epsilon operator:
Syntactically it is a map s_i → λx_1 .. λx_n Qy φ(x_1, .., x_n, y), where Q is a quantifier.
Then s_i(x_1, .., x_n) is the Skolem term used for the formula Qy φ(x_1, .., x_n, y), where Qy is strong.
This Skolem term corresponds to the epsilon term εy φ(x_1, .., x_n, y) or εy ¬φ(x_1, .., x_n),
depending on whether Q is ∃ or ∀. The reason we don't use epsilon terms directly is that this makes
it impossible to deskolemize a formula based on just the Skolem definitions:
for example both ∃x ∀y φ and ∃x ¬∃y¬ φ would define their Skolem functions using the same epsilon terms.
This member is added by an implicit conversion from SkolemFunctions to
any2stringadd[SkolemFunctions] performed by method any2stringadd in scala.Predef.
List of definitions of Skolem symbols.
A Skolem definition is similar but slightly different from the epsilon operator:
Syntactically it is a map s_i → λx_1 .. λx_n Qy φ(x_1, .., x_n, y), where Q is a quantifier. Then s_i(x_1, .., x_n) is the Skolem term used for the formula Qy φ(x_1, .., x_n, y), where Qy is strong.
This Skolem term corresponds to the epsilon term εy φ(x_1, .., x_n, y) or εy ¬φ(x_1, .., x_n), depending on whether Q is ∃ or ∀. The reason we don't use epsilon terms directly is that this makes it impossible to deskolemize a formula based on just the Skolem definitions: for example both ∃x ∀y φ and ∃x ¬∃y¬ φ would define their Skolem functions using the same epsilon terms.