private void WriteImplication(XmlElement target, Implication implication)
        {
            XmlElement eImplication = Document.CreateElement("imp", DatalogNamespaceURL);

            // action mapping
            String action = String.Empty;

            if (implication.Action != ImplicationAction.Assert)
            {
                action = implication.Action.ToString().ToLower();
            }

            ImplicationProperties ip = new ImplicationProperties(implication.Label,
                                                                 implication.Priority,
                                                                 implication.Mutex,
                                                                 implication.Precondition,
                                                                 action);

            WriteLabel(eImplication, ip.ToString());
            XmlElement head = Document.CreateElement("_head", DatalogNamespaceURL);

            WriteAtom(head, implication.Deduction, false);
            eImplication.AppendChild(head);
            XmlElement body = Document.CreateElement("_body", DatalogNamespaceURL);

            WriteAtomGroup(body, implication.AtomGroup);
            eImplication.AppendChild(body);
            target.AppendChild(eImplication);
        }
        protected void WriteImplication(XmlElement target, Implication implication)
        {
            XmlElement implicationElement = Document.CreateElement("Implies", DatalogNamespaceURL);

            // action mapping
            String action = String.Empty;

            if (implication.Action != ImplicationAction.Assert)
            {
                action = implication.Action.ToString().ToLower();
            }

            ImplicationProperties ip = new ImplicationProperties(implication.Label,
                                                                 implication.Priority,
                                                                 implication.Mutex,
                                                                 implication.Precondition,
                                                                 action);

            WriteLabel(implicationElement, ip.ToString());

            if (syntax == SaveFormatAttributes.Compact)
            {
                // in compact mode, the order is forced to body,head (equivalent to if,then)
                WriteAtomGroup(implicationElement, implication.AtomGroup);
                WriteAtom(implicationElement, implication.Deduction, false);
            }
            else
            {
                XmlElement body = Document.CreateElement("body", DatalogNamespaceURL);
                WriteAtomGroup(body, implication.AtomGroup);
                implicationElement.AppendChild(body);

                XmlElement head = Document.CreateElement("head", DatalogNamespaceURL);
                WriteAtom(head, implication.Deduction, false);
                implicationElement.AppendChild(head);
            }

            if (syntax == SaveFormatAttributes.Expanded)
            {
                XmlElement formula = Document.CreateElement("formula", DatalogNamespaceURL);
                formula.AppendChild(implicationElement);
                target.AppendChild(formula);
            }
            else
            {
                target.AppendChild(implicationElement);
            }
        }
        protected void WriteImplication(XmlElement target, Implication implication)
        {
            XmlElement implicationElement = Document.CreateElement("Implies", DatalogNamespaceURL);

            // action mapping
            String action = String.Empty;
            if (implication.Action != ImplicationAction.Assert)	action = implication.Action.ToString().ToLower();

            ImplicationProperties ip = new ImplicationProperties(implication.Label,
                                                                 implication.Priority,
                                                                 implication.Mutex,
                                                                 implication.Precondition,
                                                                 action);

            WriteLabel(implicationElement, ip.ToString());

            if (syntax == SaveFormatAttributes.Compact) {
                // in compact mode, the order is forced to body,head (equivalent to if,then)
                WriteAtomGroup(implicationElement, implication.AtomGroup);
                WriteAtom(implicationElement, implication.Deduction, false);
            }
            else {
                XmlElement body = Document.CreateElement("body", DatalogNamespaceURL);
                WriteAtomGroup(body, implication.AtomGroup);
                implicationElement.AppendChild(body);

                XmlElement head = Document.CreateElement("head", DatalogNamespaceURL);
                WriteAtom(head, implication.Deduction, false);
                implicationElement.AppendChild(head);
            }

            if (syntax == SaveFormatAttributes.Expanded) {
                XmlElement formula = Document.CreateElement("formula", DatalogNamespaceURL);
                formula.AppendChild(implicationElement);
                target.AppendChild(formula);
            }
            else {
                target.AppendChild(implicationElement);
            }
        }
        private void WriteImplication(XmlElement target, Implication implication)
        {
            XmlElement eImplication = Document.CreateElement("imp", DatalogNamespaceURL);

            // action mapping
            String action = String.Empty;
            if (implication.Action != ImplicationAction.Assert)
                action = implication.Action.ToString().ToLower();

            ImplicationProperties ip = new ImplicationProperties(implication.Label,
                                                                 implication.Priority,
                                                                 implication.Mutex,
                                                                 implication.Precondition,
                                                                 action);
            WriteLabel(eImplication, ip.ToString());
            XmlElement head = Document.CreateElement("_head", DatalogNamespaceURL);
            WriteAtom(head, implication.Deduction, false);
            eImplication.AppendChild(head);
            XmlElement body = Document.CreateElement("_body", DatalogNamespaceURL);
            WriteAtomGroup(body, implication.AtomGroup);
            eImplication.AppendChild(body);
            target.AppendChild(eImplication);
        }