{
* Module: System-oHome-DeepTelos
* ---------------------------------------------------------
* This file has been extracted from a ConceptBase database.
* Copyright is with the respective authors!

* Time extracted: 2019-07-15T12:24:59,705Z (UTC) 
* Active user: jeusfeld@myon
* CBserver version: 8.1.03 (2019-07-11) 
*
* -author: Manfred Jeusfeld, Bernd Neumayr
* -license: Creative Commons Attribution-ShareAlike International 4.0 (CC BY-SA 4.0)
}

{$set module=System-oHome-DeepTelos}

{ 2019-07-15 12:10:10.771 }

DeepTelos with 
   comment
    author : "Manfred Jeusfeld, Bernd Neumayr";
    license : "Creative Commons Attribution-ShareAlike International 4.0 (CC BY-SA 4.0)"
end 

Proposition with 
   attribute
    ISA : Proposition;
    IN : Proposition
end 

DeepTelosRules in Class with 
   rule
    mrule1 : $ forall m,x,c/Proposition (x in c) and (m IN c) and not (x isA m) ==> (x ISA m) $;
    mrule2 : $ forall x,c,d/Proposition (c ISA d) and (x in c)  ==> (x in d) $;
    mrule3 : $ forall c,d,m,n/Proposition (m IN c) and (n IN d) and (c ISA d)  ==> (m ISA n) $;
    mrule4 : $ forall m,x,c/Proposition (m IN c) and (x isA m) and not (x in QueryClass) ==> (x in c) $;
    mrule5 : $ forall m,mx,x,c/Proposition (m IN c) and :(x isA mx): and (mx ISA m) and not (x in QueryClass) ==> (x in c) $
  constraint
    mconstr1 : $ forall x,m,c/Proposition (m IN c) and (x in c) ==> not (x in m) $ 
end 

{---}

{* Enumerations allow to aggregate explicit objects (members) and instances of classes (memberset) into a single class *}

Enumeration in Class with
  attribute
     member: Proposition;
     memberset: Proposition
  rule
     rmember: $ forall x/Proposition EN/Enumeration (EN member x) ==> (x in EN) $;
     rmemberset: $ forall x,S/Proposition EN/Enumeration (EN memberset S) and (x in S) ==> (x in EN) $
end



{---}
{* realize last update time as a derived attribute of any object (not just DeepTelos) *}

Proposition with
  attribute
    lastupdate: TransactionTime;  {* attribute definition for the lastupdate time *}
    updatetime: TransactionTime   {* this attribute is for any update time of any attribute/relation of the object  *}
end

{* auxiliary function to compute the minimum of all update times of a given object (= first update time) *}
firstUpdateTime in Function isA TransactionTime with
  required,parameter
     object: Proposition
  constraint
     mintime: $ (this = MIN_Attribute(Proposition!updatetime,object)) $
end

{* auxiliary function to compute the maximum of all update times of a given object (= last update time) *}
lastUpdateTime in Function isA TransactionTime with
  required,parameter
     object: Proposition
  constraint
     maxtime: $ (this = MAX_Attribute(Proposition!updatetime,object)) $
end

{* as name says *}
allUpdateTimes in GenericQueryClass isA TransactionTime with
  parameter
     object: Proposition
  constraint
     alltimes: $ (object updatetime this) $
end

{* these rules do the work, in particular the last one *}
UpdateTimeRules in Class with
  rule
   anyupdaterule: $ forall o/Proposition a/Attribute n/Label y/Proposition tt/TransactionTime Pa(a,o,n,y) and Known(a,tt) ==> (o updatetime tt) $;
   lastupdaterule: $ forall o/Proposition tt/TransactionTime (tt = lastUpdateTime(o)) ==> (o lastupdate tt) $ 
end







{---} { 2019-07-15 12:10:11.023 }

XPalette in Class,JavaGraphicalPalette with 
   contains,defaultIndividual
    xx1 : DefaultIndividualGT
  contains,defaultLink
    xx2 : DefaultLinkGT
  contains,implicitIsA
    xx3 : ImplicitIsAGT
  contains,implicitInstanceOf
    xx4 : ImplicitInstanceOfGT
  contains,implicitAttribute
    xx5 : ImplicitAttributeGT
  contains
    xx6 : DefaultIsAGT;
    xx7 : DefaultInstanceOfGT;
    xx8 : DefaultAttributeGT;
    xx9 : MetametaGT;
    xx10 : SimpleClassGT;
    xx11 : MetaClassGT;
    xx12 : ClassGT;
    xx13 : QueryClassGT
  rule
    inheritGTs : $ forall gt/JavaGraphicalType pal/JavaGraphicalPalette
                      (pal isA XPalette) and
                      (DefaultJavaPalette contains gt)
                  ==> (pal contains gt) $;
    inheritDef1 : $ forall gt/JavaGraphicalType pal/JavaGraphicalPalette
                      (pal isA XPalette) and
                      (DefaultJavaPalette defaultIndividual gt)
                  ==> (pal defaultIndividual gt) $;
    inheritDef2 : $ forall gt/JavaGraphicalType pal/JavaGraphicalPalette
                      (pal isA XPalette) and
                      (DefaultJavaPalette defaultLink gt)
                  ==> (pal defaultLink gt) $;
    inheritDef3 : $ forall gt/JavaGraphicalType pal/JavaGraphicalPalette
                      (pal isA XPalette) and
                      (DefaultJavaPalette implicitIsA gt)
                  ==> (pal implicitIsA gt) $;
    inheritDef4 : $ forall gt/JavaGraphicalType pal/JavaGraphicalPalette
                      (pal isA XPalette) and
                      (DefaultJavaPalette implicitInstanceOf gt)
                  ==> (pal implicitInstanceOf gt) $;
    inheritDef5 : $ forall gt/JavaGraphicalType pal/JavaGraphicalPalette
                      (pal isA XPalette) and
                      (DefaultJavaPalette implicitAttribute gt)
                  ==> (pal implicitAttribute gt) $
end 

DefaultAttributeGT with 
   property
    bgcolor : "255,255,255,120"
end 

DeepTelosPalette in Class,JavaGraphicalPalette isA XPalette with 
   palproperty
    bgcolor : "255,255,255";
    longtitle : "DeepTelos rev2"
  contains,implicitInstanceOf
    sp4 : INSTOFDEDUCED_GT
end 

INSTOFDEDUCED_GT  end 

ATTRDEDUCED_GT  end 

DeepTelosPalette with 
   contains,implicitAttribute
    sp5 : ATTRDEDUCED_GT
  contains,implicitIsA
    sp6 : ISADEDUCED_GT
end 

ISADEDUCED_GT  end 

ISA_GT  end 

DeepTelosPalette with 
   contains
    sp7 : ISA_GT;
    sp1 : INDIVIDUAL_GT
end 

INDIVIDUAL_GT  end 

INSTOF_GT  end 

DeepTelosPalette with 
   contains
    sp2 : INSTOF_GT;
    sp3 : ATTR_GT
end 

ATTR_GT  end 

IN_Link_GT  end 

DeepTelosPalette with 
   contains
    dt15 : IN_Link_GT;
    dt16 : SPEC_Link_GT
end 

SPEC_Link_GT  end 

ImplicitGT_ISA  end 

DeepTelosPalette with 
   contains
    dt17 : ImplicitGT_ISA
end 

IN_Link_GT in JavaGraphicalType,Class with 
   property
    textcolor : "0,0,0";
    edgecolor : "240,50,50";
    edgewidth : "2";
    bgcolor : "255,255,255";
    label : "IN"
  implementedBy
    implBy : "i5.cb.graph.cbeditor.CBLink"
  priority
    p : 22
  rule
    gtrule : $ forall a/Proposition!IN (a graphtype IN_Link_GT) $
end 

SPEC_Link_GT in JavaGraphicalType,Class with 
   property
    bgcolor : "0,50,200";
    textcolor : "0,0,0";
    edgecolor : "0,0,0";
    edgeheadcolor : "255,255,255";
    edgeheadshape : "Arrow";
    edgewidth : "1";
    label : ""
  implementedBy
    implBy : "i5.cb.graph.cbeditor.CBLink"
  priority
    p : 23
  rule
    gtrule : $ forall a/Proposition!ISA (a graphtype SPEC_Link_GT) $
end 

INSTOF_GT in JavaGraphicalType,Class with 
   property
    bgcolor : "255,255,255";
    textcolor : "0,0,0";
    edgecolor : "0,0,0";
    edgewidth : "1";
    edgeheadshape : "Caret";
    edgestyle : "ldashed";
    label : "instance of";
    font: "SansSerif";
    fontsize : "9"
  implementedBy
    implBy : "i5.cb.graph.cbeditor.CBLink"
  priority
    p : 6
  rule
    gtrule : $ forall a/InstanceOf (a graphtype INSTOF_GT) $
end 

INSTOFDEDUCED_GT in JavaGraphicalType,Class with 
   property
    bgcolor : "255,255,255";
    textcolor : "0,0,0";
    edgecolor : "120,120,120";
    edgewidth : "1";
    edgeheadshape : "Caret";
    edgestyle : "ldashed";
    label : "instance of";
    font: "SansSerif";
    fontsize : "9"
  implementedBy
    implBy : "i5.cb.graph.cbeditor.CBLink"
  priority
    p : 7
end 

ISA_GT in JavaGraphicalType,Class with 
   property
    bgcolor : "100,100,255";
    textcolor : "0,0,0";
    edgecolor : "50,50,240";
    edgeheadcolor : "255,255,255";
    edgeheadshape : "Arrow";
    edgewidth : "1";
    label : ""
  implementedBy
    implBy : "i5.cb.graph.cbeditor.CBLink"
  priority
    p : 6
  rule
    gtrule : $ forall a/IsA (a graphtype ISA_GT) $
end 

ISADEDUCED_GT in JavaGraphicalType,Class with 
   property
    bgcolor : "0,50,200";
    textcolor : "0,0,0";
    edgecolor : "120,120,120";
    edgewidth : "1";
    edgestyle : "dashed";
    label : "";
    edgeheadcolor : "255,255,255";
    edgeheadshape : "Arrow"
  implementedBy
    implBy : "i5.cb.graph.cbeditor.CBLink"
  priority
    p : 7
end 

ATTR_GT in Class,JavaGraphicalType with 
   property
    textcolor : "0,0,0";
    edgecolor : "0,0,0";
    edgewidth : "1";
    font: "SansSerif";
    fontsize : "10";
    bgcolor : "255,255,255,240"
  implementedBy
    implBy : "i5.cb.graph.cbeditor.CBLink"
  priority
    p : 5
  rule
    gtrule : $ forall x/Proposition!attribute (x graphtype ATTR_GT) $
end 

ATTRDEDUCED_GT in JavaGraphicalType with 
   property
    textcolor : "0,0,0";
    edgecolor : "0,0,0";
    edgewidth : "2";
    edgestyle : "dashed";
    fontsize : "10";
    bgcolor : "255,255,255,240"
  implementedBy
    implBy : "i5.cb.graph.cbeditor.CBLink"
  priority
    p : 7
end 

INDIVIDUAL_GT in Class,JavaGraphicalType with 
   property
    bgcolor : "255,255,255";
    textcolor : "0,0,0";
    linecolor : "0,0,0";
    font: "SansSerif";
    shape : "i5.cb.graph.shapes.Rect";
    size : "resizable";
    linewidth : "1"
  implementedBy
    implBy : "i5.cb.graph.cbeditor.CBIndividual"
  priority
    pr : 5
  rule
    gtrule : $ forall x/Individual (x graphtype INDIVIDUAL_GT) $
end 

ImplicitGT_ISA in Class,JavaGraphicalType with 
   property
    bgcolor : "0,255,150";
    textcolor : "0,0,0";
    edgecolor : "120,120,120";
    edgewidth : "1";
    label : "";
    edgeheadcolor : "255,255,255";
    edgeheadshape : "Arrow"
  implementedBy
    implBy : "i5.cb.graph.cbeditor.CBLink"
  priority
    p : 20
end 

{---} { 2019-07-15 12:10:11.263 }

ProcessModels in Module  end 

{---} { 2019-07-15 12:10:11.374 }

CarExample in Module  end 

{---} { 2019-07-15 12:10:11.478 }

GeneratedRules in QueryClass isA Class with 
   computed_attribute
    genrule : MSFOLrule
  constraint
    c1 : $ (this rule genrule) and exists mlrule/MSFOLrule
        (DeepTelosRules rule mlrule) and :(genrule isA mlrule): $
end 

{ -/- }