Test of the CG base handling features

 Thing {* supertype of 1st-order concept types *};
  Thing > (Entity Situation)    /* Filling the knowledge base */;
     Entity > (Description Physical_entity);
        Physical_entity > (Cat Mat Table Person);
        Description > Hypothesis;
     Situation > Process State;
        Process > Believe;
  BinaryRel (Thing, Thing) {supertype of 1st-order concept types}
   > (Near, Object, Agent, Author);
  Near (Entity,Entity) > On;  On (Entity,Entity);
  Object (Process,Entity);   Agent (Process,Entity);
  Author (Description,Person);
  Cat : Tom;
  name #CatOnMat [Cat]->(On)->[Mat]; //assertion and rename
  name #TomOnTable [Cat:Tom]->(On)->[Table];

  set test_projection 1   /* the tests that must be done below */;
  set test_type_definition 1;
  set test_informal_CGs 1;
  set test_pipe 1;     set test_contextualized_CGs 1;
  set test_meta_info 1;      set test_join 1;   set test_control_structures 1;

  if ($test_informal_CGs)         // Test projections
  { Cat : Tom2;  name #CatOnMat2 [Cat:Tom2]->(On)->[Table];
    spec [Cat:?] | nbArguments;
    spec [Table]<-(On)<-[Cat:?];
    proj [Cat] #CatOnMat;
    proj [Cat:Tom] #TomOnTable;
    proj [Cat:?] #TomOnTable;
    proj [Table]<-(On)<-[Cat:?] #TomOnTable;

  if (0)  /* $test_informal_CGs */   /* Test non classic forms of CGs */
  { spec Cat : ?;
    [Tom, on: (a mat, on: a table), Near: a !rat];
    [a !rat, on: a mat];
    spec [an entity, on: a mat];
    spec [Tom];
    no decl;  [UndeclaredType1]->(UndeclaredRel)->[UndeclaredType2];  decl;
    ["Tom is on a table"]->("is a specialisation of")->["A cat is on a table"];
    ["A cat", "is on": "a mat", "looks at": "a mouse";
           ["thing related to a cat" $(its definition)$ ]  ];
A cat
is on : a mat.
looks at : a mouse.
thing related to a cat
its definition
spec [Description]->(BinaryRel)->[Description]; /* ["a cat" "is on": "a mat"]; ["a cat"]->("is on")->["a mat"]; */ /* [~ [!okl]->(Subtask)->[Task] ]; */ delCGs; name #CatOnMat [Cat]->(On)->[Mat]; //assertion and rename name #TomOnTable [Cat:Tom]->(On)->[Table]; } if ($test_type_definition) /* Test type definitions */ { NSC for LazzyCat (x) are [Cat:*x]->(On)->[Mat]; TC for Cat (x) are [Cat:*x]->(On)->[Mat]; on lambdas; spec [Cat]; on CGs; } if ($test_contextualized_CGs) /* Test contextualized CGs */ { name #CatOnMat_Rel_TomOnTable [Description:CatOnMat]->(BinaryRel)->[Description:TomOnTable]; spec [Cat]; only context; //display embedding CGs only if contextualising spec [Cat] /* note that a CG never appears twice in the results of a request */; all embeddings; //back to the default mode Person : John; //name #DefLazzyCatForPh [Description:NSC_for_LazzyCat]->(Author)->[Person:John]; name #CatOnMatForPh [Description:CatOnMat]->(Author)->[Person:John]; name #TomOnTableForPh [Description:TomOnTable]<-(Object)<-[Believe]->(Agent)->[Person:John]; spec [Cat]; delCG #CatOnMatForPh #TomOnTableForPh #CatOnMat_Rel_TomOnTable; } if ($test_meta_info) /* Test meta information */ { #CatOnMat in Hypothesis with {* view:Task; user:phmartin; *}; spec #CatOnMat ; spec [%thing] ; spec [Thing] in Hypothesis; spec [Thing] with {* user:phmartin; *} ; #CatOnMat in Description; //no meta; //spec [Thing]; //meta; }; if ($test_join) /* Test joins */ { name #TomOnMatNearTable [Cat:Tom]->(On)->[Mat]->(Near)->[Table]; join on Cat Cat:Tom #CatOnMat #TomOnTable; maxjoin #CatOnMat #TomOnMatNearTable; delCG #Join_of_CatOnMat_and_TomOnTable_on_Cat-__and_Cat-Tom; delCG #Maxjoin_of_CatOnMat_and_TomOnMatNearTable } if ($test_pipe) /* Test pipes */ { spec [Cat]; spec [Cat] | maxjoin; spec [Thing]; spec [Thing] | nbArguments | set nbCGs; spec [Cat] | nbArguments | set nbCGsAboutCat; if ($nbCGs = $nbCGsAboutCat) { echo "All CGs of the base are about cats"; } else { echo "Not all CGs of the base are about cats"; };