2:-module(agent,[]).    3
    4
    5
    6rule_set(RuleSet,MaxRuleID):-
    7  MaxRuleID = 7,
    8  RuleSet = [
    9    [1,def_father_1,[-[child,Y,X],-[male,X],+[father,X,Y]]],
   10    [2,def_mother_1,[-[child,Y,X],-[female,X],+[mother,X,Y]]],
   11    [3,def_parent_1,[-[father,X,Y],+[parent,X,Y]]],
   12    [4,def_parent_2,[-[mother,X,Y],+[parent,X,Y]]],
   13    [5,fact_lucy_1,[+[female,lucy]]],
   14    [6,fact_alice_1,[+[child,alice,bob]]],
   15    [7,fact_bob_1,[+[child,bob,lucy]]]
   16  ].
   17
   18symbol_set(SymbolSet,MaxSymbolID):-
   19  MaxSymbolID = 10,
   20  SymbolSet = [
   21    [1,vble],[2,father],[3,child],[4,male],[5,female],
   22    [6,parent],[7,lucy],[8,alice],[9,bob],[10,mother]
   23  ].
   24
   25
   26nnet_definition(NNet):-
   27  InDim = 70,
   28  HidDim = 32,
   29  OutDim = 7,
   30  layer_init(layer1,InDim,HidDim,relu,[-0.2,0.2]),
   31  layer_init(layer2,HidDim,HidDim,relu,[-0.2,0.2]),
   32  layer_init(layer3,HidDim,HidDim,relu,[-0.2,0.2]),
   33  layer_init(layer4,HidDim,HidDim,relu,[-0.2,0.2]),
   34  layer_init(layer5,HidDim,HidDim,relu,[-0.2,0.2]),
   35  layer_init(layer6,HidDim,OutDim,softmax,[-0.2,0.2]),
   36  NNet = [layer1,layer2,layer3,layer4,layer5,layer6].
   37
   38run_main:-
   39  init_search_time,
   40  nnet_definition(NNet),
   41  rule_set(RS,NR),
   42  symbol_set(SS,NS),
   43  LM = method(learning(100,0.01),input(2,2),output(7)),
   44  RM = method(reasoning,input(2,2),output(7)),
   45  G1 = [-[female,lucy]],
   46  dnn_sl_resolution(G1,[RS,NR],[SS,NS],NNet,LM,100,_),
   47  G2 = [-[mother,lucy,bob]],
   48  dnn_sl_resolution(G2,[RS,NR],[SS,NS],NNet,LM,100,_),
   49  G3 = [-[mother,lucy,bob],-[female,lucy]],
   50  dnn_sl_resolution(G3,[RS,NR],[SS,NS],NNet,LM,100,_),
   51  G4 = [-[parent,lucy,bob]],
   52  dnn_sl_resolution(G4,[RS,NR],[SS,NS],NNet,RM,100,Path4),
   53  nl,print_by_line(Path4),nl