Function VARIABLES-IN-SENTENCE


Slots on this function:

Documentation:
This function takes an unquantified KIF sentence (the syntactic thing, an expression) and returns the set of variables occuring freely in the sentence. This is only defined for unquantified sentences, and only handles individual variables (not sequence variables).
Instance-Of: Function
Arity: 2

Other Related Axioms:

(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)))))