(in-package "ONTOLINGUA-USER")

(define-theory DME-CML (cml component-assemblies)
  "Extensions to the base CML theory for DME.")

(in-theory 'DME-CML)

(define-class operating-mode-model (?x)
  "The class of all model fragments that denote behavior of a component.
By convention, devices will have a subclass of this class whose immediate
subclasses are all of the behavior modes of a given device,
i.e. Battery-Operating-modes is a superclass of
the overcharged, undercharged etc. modes."
  :def (model-fragment ?x))

(define-class structural-element-model (?x)
  "All model fragments that contain any structural-element-model description."
  :def (model-fragment ?x))

(define-class junction (?x)
  "a junction that connects terminals"
  :def (structural-element-model ?x))

(define-class terminal (?x)
  "a terminal of any type for connecting components"
  :def (structural-element-model ?x) )

(define-class system-model (?x)
   "All model fragments that contain any system description.
    A system is a type of structural-element-models that are composed of
    one or more components, other than terminals."
  :def (structural-element-model ?x))

(define-relation connected-terminals (?junction ?terminal)
  "(connected-terminals ?j ?t) means that junction ?j connects
terminal ?t to other terminals ?t2 for which (connected-terminals ?j ?t2)
also holds."
  :def (and (junction ?junction)
	    (terminal ?terminal)))

(define-relation all= (?time ?set)
  "?SET is a set of fluents.  They all have the same value  at the given ?TIME."
  :constraints (set ?set)
  :iff-def (forall (?e1 ?e2)
		   (=> (and (member ?e1 ?set) (member ?e2 ?set))
		       (= (value-at ?e1 ?time)
			  (value-at ?e2 ?time)))))

This Lisp-to-HTML translation was brought to you by
François Gerbaux and Tom Gruber