(Inherited-Facet-Value Slot-Cardinality
Ground-Sentence
Variables-In-Sentence
1)
(Inherited-Facet-Value Slot-Value-Type
Ground-Sentence
Variables-In-Sentence
Empty)
(<=> (Ground-Sentence ?Expression)
(And (Sentence ?Expression)
(Value-Type ?Expression Variables-In-Sentence Empty)
(Value-Cardinality ?Expression Variables-In-Sentence 1)))
(<- (Variables-In-Sentence ?S)
(Cond ((Logsent ?S)
(Apply Union (Map Variables-In-Sentence (Rest ?S))))
((Relsent ?S) (Apply Union (Variables-In-Term (Rest ?S))))
((Logconst ?S) (Setof))
((Quantsent ?S) Bottom)))
(<- (Variables-In-Term ?Exp)
(Cond ((Indvar ?Exp) (Setof ?Exp))
((Funterm ?Exp)
(Apply Union (Map Variables-In-Term (Rest ?Exp))))
((And (Logterm ?Exp) (= (First ?Exp) (Quote If)))
(Union (Variables-In-Sentence (Second-Item ?Exp))
(Apply Union
(Map Variables-In-Term (Rest (Rest ?Exp))))))
((And (Logterm ?Exp) (= (First ?Exp) (Quote Cond)))
(Apply Union (Map Variables-In-Cond-Clause (Rest ?Exp))))
((Quanterm ?Exp) Bottom)
((Term ?Exp) (Setof))))
(<- (Variables-In-Cond-Clause ?Cond-Clause)
(If (And (List ?Cond-Clause)
(Sentence (First ?Cond-Clause))
(Term (Second-Item ?Cond-Clause)))
(Union (Variables-In-Sentence (First ?Cond-Clause))
(Variables-In-Term (Second-Item ?Cond-Clause)))))
(= 1 (Cardinality (Variables-In-Sentence ?Sentence)))
(<=> (Sentence-With-One-Variable ?Sentence)
(And (Sentence ?Sentence)
(= 1 (Cardinality (Variables-In-Sentence ?Sentence)))))
(<- (The-Free-Variable-In ?Sentence)
(If (Sentence-With-One-Variable ?Sentence)
(The ?Variable
(Member ?Variable (Variables-In-Sentence ?Sentence)))))