Let ...
- Σ be an untyped first-order logic language, consisting of ...
- VΣ - A set of variables
- FΣ - A set of function symbols with arity
- PΣ - A set of predicate symbols with arity
- Φ be a formula written in Σ
- Ι be an interpretation for Σ, consisting of ...
- DΙ - A set of domain elements.
- FΙ - For each element f of FΣ
with arity n, a mapping
f*(DΙn) → DΙ
- RΙ - For each element p of PΣ
with arity n, a mapping
p*(DΙn) →
{TRUE,FALSE}
Ι can be a partial interpretation of Σ, but must be enough to
interpret Φ.
Click for example
- Σ ...
- VΣ = {Words starting uppercase}
- FΣ = {geoff/0, brotherOf/2}
- PΣ = {taller/2}
- Ι ...
- DΙ = {😀, 🕺}
- FΙ = {
geoff* → 😀,
brotherOf*(😀) → 🕺,
brotherOf*(🕺) → 😀}
- RΙ = {
taller*(😀,😀) → FALSE,
taller*(😀,🕺) → FALSE,
taller*(🕺,😀) → TRUE,
taller*(🕺,🕺) → FALSE}
- Φ ...
- taller(brotherOf(geoff),geoff)
In the TPTP World the interpretation Ι is represented by an interpretation formulae
φΙ.
- Let DφΙ be a set of fresh terms, one for each
di ∈ DΙ.
- Let DΙ→φΙ be a mapping from
DΙ → DφΙ in correspondence to the above.
- Let DφΙ→Ι be the inverse mapping from
DφΙ → DΙ
Click for example
- DφΙ = {"face", "stickman"}
- DΙ→φΙ =
{😀 → "face", 🕺 → "stickman"}
- DφΙ→Ι =
{"face" → 😀, "stickman" → 🕺}
Define the untyped first-order logic language Σ' for φΙ,consisting of ...
- VΣ' = VΣ
- FΣ' = FΣ ∪ DφΙ
- PΣ' = PΣ
Click for example
- VΣ' = {Words starting uppercase}
- FΣ' = {geoff/0, brotherOf/2, "face"/0,
"stickman"/0}
- PΣ' = {taller/2}
An interpretation formula φΙ is the conjunction of:
- D|φΙ -
∀ X (X = d1 | ... | X = dn),
for all di ∈ DφΙ
- F&φΙ -
The conjunction of
f(DΙ→φΙ(din)) =
DΙ→φΙ(d),
for each
(f*(DΙn) → DΙ) ∈
FΙ
- P&φΙ -
The conjunction of
p(DΙ→φΙ(din)),
for each instance of
(p*(DΙn) → TRUE) ∈
PΙ, and
~p(DΙ→φΙ(din)),
for each
(p*(DΙn) → FALSE) ∈
PΙ
Click for example
fof(phiI,interpretation,
( ! [X] : (X = "face" | X = "stickman")
& ( geoff = "face"
& brotherOf("face") = "stickman" & brotherOf("stickman") = "face" )
& ( ~ taller("face","face") & ~ taller("face","stickman")
& taller("stickman","face") & ~ taller("stickman","stickman") ) ) ).
Define the interpretation Ι' for Σ', consisting of ...
- DΙ' = DΙ
- FΙ' = FΙ ∪
DφΙ→Ι
- RΙ' = RΙ
Click for example
- DΙ' = {😀, 🕺}
- FΙ' = {
geoff* → 😀,
brotherOf*(😀) → 🕺,
brotherOf*(🕺) → 😀,
"face" → 😀, "stickman" → 🕺}
- RΙ' = {
taller*(😀,😀) → FALSE,
taller*(😀,🕺) → FALSE,
taller*(🕺,😀) → TRUE,
taller*(🕺,🕺) → FALSE}
Lemma 1
Ι' ⊢ φΙ, or equivalently,
Ι' ⊢ D|φΙ, and
Ι' ⊢ F&φΙ, and
Ι' ⊢ P&φΙ
Proof
- For each d' ∈ DΙ'
- X = DΙ→φΙ(d') is an element of
the disjunction in D|φΙ,
- With X set to d'
d' = DΙ→φΙ(d') holds iff
FΙ'(d') = FΙ'(DΙ→φΙ(d')) iff
FΙ'(d') = DφΙ→Ι(DΙ→φΙ(d')) iff
d' = d'
- Thus an element of the disjunction in D|φΙ
holds
So for all d' ∈ DΙ', an element of the disjunction in
D|φΙ holds, i.e.,
Ι' ⊢ D|φΙ
- For each element
f(DΙ→φΙ(din)) =
DΙ→φΙ(d) of the conjunction
F&φΙ
- f(DΙ→φΙ(din)) =
DΙ→φΙ(d) holds iff
FΙ'(f(DΙ→φΙ(din))) =
FΙ'(DΙ→φΙ(d)) iff
f*(FΙ'(DΙ→φΙ(din))) =
FΙ'(DΙ→φΙ(d)) iff
f*(DφΙ→Ι(DΙ→φΙ(din))) =
DφΙ→Ι(DΙ→φΙ(d)) iff
f*(din) = d
which holds from the definition of f*
- Thus every element of the conjunction F&φΙ
holds
So F&φΙ holds, i.e.,
Ι' ⊢ F&φΙ
- For each positive element
p(DΙ→φΙ(din))
of the conjunction P&φΙ
- p(DΙ→φΙ(din)) holds iff
PΙ'(p(FΙ'(DΙ→φΙ(din))) iff
p*(FΙ'(DΙ→φΙ(din))) iff
p*(DφΙ→Ι(DΙ→φΙ(din))) iff
p*(din) → TRUE
which holds from the definition of p*
- Thus every positive element of the conjunction
P&φΙ holds
- Analogously, every negative element of the conjunction
P&φΙ holds
So P&φΙ holds, i.e.,
Ι' ⊢ P&φΙ
Click for example
- For 😀 ∈ {😀, 🕺}
- X = "face" is an element of the disjunction
(X = "face" | X = "stickman")
- With X set to 😀
😀 = "face" holds iff
FΙ'(😀) = FΙ'("face") iff
FΙ'(😀) = DφΙ→Ι("face") iff
😀 = 😀
- Thus an element of (😀 = "face" | 😀 = "stickman") holds
Analogously for 🕺 ∈ {😀, 🕺}
So for all d' ∈ {😀, 🕺}, an element of the disjunction
(X = "face" | X = "stickman") holds, i.e.,
Ι' ⊢ ! [X] : (X = "face" | X = "stickman")
- For the element brotherOf("face") = "stickman" of the conjunction
(geoff = "face" & brotherOf("face") = "stickman" & brotherOf("stickman") = "face")
- brotherOf("face") = "stickman" holds iff
FΙ'(brotherOf("face")) =
FΙ'("stickman") iff
brotherOf*(FΙ'("face")) =
FΙ'("stickman") iff
brotherOf*(DφΙ→Ι("face")) =
DφΙ→Ι("stickman") iff
brotherOf*(😀) = 🕺
which holds from the definition of brotherOf*
- Thus brotherOf("face") = "stickman" holds
- Analogously for the other elements of
(geoff = "face" & brotherOf("face") = "stickman" & brotherOf("stickman") = "face")
So (geoff = "face" & brotherOf("face") = "stickman" & brotherOf("stickman") = "face")
holds, i.e.,
Ι' ⊢
(geoff = "face" & brotherOf("face") = "stickman" & brotherOf("stickman") = "face")
- For the element taller("stickman","face") of the conjunction
(~ taller("face","face") & ~ taller("face","stickman") &
taller("stickman","face") & ~ taller("stickman","stickman"))
- taller("stickman","face") holds iff
PΙ'(taller(FΙ'("stickman","face")))
iff
taller*(FΙ'("stickman","face"))
iff
taller*(DφΙ→Ι("stickman","face"))
iff
taller*(🕺,😀)
which holds from the definition of taller*
- Analogously for the other elements of
(~ taller("face","face") & ~ taller("face","stickman") &
taller("stickman","face") & ~ taller("stickman","stickman"))
So (~ taller("face","face") & ~ taller("face","stickman") &
taller("stickman","face") & ~ taller("stickman","stickman")) holds, i.e.,
Ι' ⊢
(~ taller("face","face") & ~ taller("face","stickman") &
taller("stickman","face") & ~ taller("stickman","stickman"))
Theorem
if φΙ ⊨ Φ then Ι ⊢ Φ
(this is adequate for the verification task, but needs "iff" for the
evaluation task)
Proof
- If φΙ ⊨ Φ then Ι' ⊢ Φ
because every model of φΙ is a model of Φ, and
Ι' is a model of φΙ by the Lemma
- Ι' ⊢ Φ iff Ι ⊢ Φ
because Φ contains nothing from DφΙ and Ι' is
the same as Ι wrt all other symbols.
- Thus if φΙ ⊨ Φ then Ι ⊢ Φ
Click for example
- If φΙ ⊨ taller(brotherOf(geoff),geoff) then
Ι' ⊢ taller(brotherOf(geoff),geoff)
because every model of φΙ is a model of
taller(brotherOf(geoff),geoff), and Ι' is a model of φΙ
by the Lemma.
- Ι' ⊢ taller(brotherOf(geoff),geoff) iff
Ι ⊢ taller(brotherOf(geoff),geoff)
because taller(brotherOf(geoff),geoff) contains nothing from
{"face", "stickman"}
- Thus if φΙ ⊨ taller(brotherOf(geoff),geoff) then
Ι ⊢ taller(brotherOf(geoff),geoff)