In this theory, the relationship between a parameter and its value is the same as between an object constant and its denotation. In a constraint expression, one might see a symbol such as P1 occur as a term. According to the normal semantics of KIF, an object constant is a symbol that denotes an object in the universe of discourse. In engineering modeling, model parameters (sometimes called variables) "have a value" -- which is essentially the same idea as denotation. We wish to use the same semantics as KIF for constraint languages used for engineering modeling. Therefore, we use KIF object constants as parameters and take their detonation to be their parameter value. However, since the notion of an object constant is more general than engineering parameter, we need some way to distinguish the latter. For this purpose we label some of the object constants (i.e., the symbols) as parameter names. This lets us describe a set of parameters as a set of names, rather than a set of values. Describing the set of values is not sufficient because two parameters with the same values would be indistinguishable.For example, one might see the symbol P1 in a KIF sentence. The symbol "P1" is an object constant. We might say that that P1 is equal to 10 with the KIF sentence "(= P1 10)". We can say that the object constant "P1" is a parameter-name in KIF as: (parameter-name 'P1). Then it follows that the parameter.value of 'P1 is also its denotation: namely, 10. Now let's define a second parameter P2 whose value is also 10. The two parameter names 'P1 and 'P2 are not the same parameter name, but they happen to have the same value. Thus we can state the constraint (= P1 P2) using an ordinary KIF sentence, while also allowing the distinction (not (= 'P1 'P2)).
(=> (Parameter-Name ?P) (Value-Cardinality ?P Parameter.Value 1)) (<- (Parameter.Value ?Parameter-Name) (If (Parameter-Name ?Parameter-Name) (Denotation ?Parameter-Name)))
(not (parameter-name 10))
(not (parameter-name (quote (foo))))
(= foo (+ 10 20))
(= (parameter.value (quote foo)) 30)