98 lines
2.6 KiB
Common Lisp
98 lines
2.6 KiB
Common Lisp
;; Properties
|
|
(defun exists (object)
|
|
"The object is not unexistent."
|
|
(list '∃ object))
|
|
|
|
(defun property (element property)
|
|
"Evaluates a given property of an object."
|
|
(list element "." property))
|
|
|
|
(defun capacity (element capacity)
|
|
"Evaluates a given capacity (skill) of an element."
|
|
(list element "||" capacity))
|
|
|
|
(defun quantity (elements)
|
|
"Evaluates the quantity of the results of an operator."
|
|
(list 'count elements))
|
|
|
|
(defun pertenence-to-group (element group)
|
|
"Evaluates the pertenence of the element to a group."
|
|
(list element "∈" group))
|
|
|
|
(defun (setf pertenence-to-group) (result object value)
|
|
'todo=create-virtual-node)
|
|
|
|
(defun during (time events)
|
|
"Evaluates the events during some condition."
|
|
(list 'while "(" time ")" events))
|
|
|
|
(defun is-equal (pred1 pred2)
|
|
"Evaluetes the equality of two predicates."
|
|
(list pred1 "=" pred2))
|
|
|
|
(defun verb (verb-name subject)
|
|
"Applies a vert to a subject."
|
|
(list verb-name (list subject)))
|
|
|
|
;; Algebra
|
|
(defun product (times element)
|
|
(list 'times times element))
|
|
|
|
;; Time
|
|
(defun time-frame (time value)
|
|
"Evaluates a value during a time-frame."
|
|
(list 'time time '\, value))
|
|
|
|
;; Evaluation
|
|
(defun some-element-which-complies-with (var condition)
|
|
"Evaluates if some element complies with a condition."
|
|
(list 'some var '\, condition))
|
|
|
|
(defun all-element-complies-with (var condition)
|
|
"Evaluates if some every complies with a condition."
|
|
(list 'all var '\, condition))
|
|
|
|
(defun q-and (pred1 pred2)
|
|
"Evaluates the intersection of two predicates."
|
|
(list 'and pred1 pred2))
|
|
|
|
(defun q-or (pred1 pred2)
|
|
"Evaluates the union of two predicates."
|
|
(list 'or pred1 pred2))
|
|
|
|
(defun q-not (pred)
|
|
"Evaluates the negation of a predicate."
|
|
(list 'not pred))
|
|
|
|
;;;; Composed
|
|
(defun exists-property-with-value (object value)
|
|
"Evaluates the existence of a property with a given value in the object."
|
|
(exists
|
|
(some-element-which-complies-with
|
|
'P
|
|
(is-equal value
|
|
(property object 'P)))))
|
|
|
|
(defun (setf exists-property-with-value) (result object value)
|
|
'todo=create-virtual-node)
|
|
|
|
|
|
(defun element-of-group-has-property (element group prop)
|
|
"Evaluates the existance of a property in the object, given the pertenence to a group."
|
|
(q-and
|
|
(pertenence-to-group element group)
|
|
(exists (property element prop))))
|
|
|
|
(defun all-element-of-group-complies-with (element group condition)
|
|
"Evaluates the compliance of a given condition given the pertenence to a group."
|
|
(all-element-complies-with
|
|
element
|
|
(q-or
|
|
(q-not (pertenence-to-group element group))
|
|
condition)))
|
|
|
|
|
|
(defun implies (a b)
|
|
(q-or (q-not a)
|
|
b))
|