<?xml version="1.0" encoding="UTF-8"?>
<r2ml:RuleBase xmlns:r2ml="http://www.rewerse.net/I1/2006/R2ML" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.rewerse.net/I1/2006/R2ML http://oxygen.informatik.tu-cottbus.de/R2ML/0.4/R2ML.xsd">
  <r2ml:DerivationRuleSet>
    <r2ml:DerivationRule r2ml:ruleID="DR005">
      <r2ml:Documentation>
        <r2ml:RuleText r2ml:textFormat="plain">If X has a father Z and this Z has ancestors Y then X has anchestors Y.</r2ml:RuleText>
        <r2ml:SourceCode r2ml:language="FLogic"><![CDATA[ 

	FORALL X,Y,Z X[ancestor->>Y] <- X[father->Z] AND Z[ancestor->>Y].
	
	]]></r2ml:SourceCode>
      </r2ml:Documentation>
      <r2ml:conditions>
        <r2ml:ReferencePropertyAtom r2ml:referencePropertyID="father">
          <r2ml:subject>
            <r2ml:ObjectVariable r2ml:name="X"/>
          </r2ml:subject>
          <r2ml:object>
            <r2ml:ObjectVariable r2ml:name="Z"/>
          </r2ml:object>
        </r2ml:ReferencePropertyAtom>
        <r2ml:ReferencePropertyAtom r2ml:referencePropertyID="ancestor">
          <r2ml:subject>
            <r2ml:ObjectVariable r2ml:name="Z"/>
          </r2ml:subject>
          <r2ml:object>
            <r2ml:ObjectVariable r2ml:name="Y" r2ml:typeCategory="set"/>
          </r2ml:object>
        </r2ml:ReferencePropertyAtom>
      </r2ml:conditions>
      <r2ml:conclusion>
        <r2ml:ReferencePropertyAtom r2ml:referencePropertyID="ancestor">
          <r2ml:subject>
            <r2ml:ObjectVariable r2ml:name="X"/>
          </r2ml:subject>
          <r2ml:object>
            <r2ml:ObjectVariable r2ml:name="Y" r2ml:typeCategory="set"/>
          </r2ml:object>
        </r2ml:ReferencePropertyAtom>
      </r2ml:conclusion>
    </r2ml:DerivationRule>
  </r2ml:DerivationRuleSet>
</r2ml:RuleBase>
