Computer:



/*    KLONE.PL       */

/* per caricare l'ambiente KLONE */

:- consult('/home2/httpd/html/research/HYPERPROLOG/esempi/klone/klone').

/*  Esempio del computer */

pc_80:-
/* definisce i concetti generici utilizzati */ 
	assume(generic_concept(cosa)),
	assume(generic_concept(pc_80)),
	assume(generic_concept(corpo)),
	assume(generic_concept(input)),
	assume(generic_concept(output)),
	assume(generic_concept(in_out)),
	assume(generic_concept(memorie)),
	assume(generic_concept(u_elabo)),

/* tutti i concetti sono sussunti da cosa */
assume(has_super_concept(pc_80,cosa)),
assume(has_super_concept(corpo,cosa)),
assume(has_super_concept(input,cosa)),
assume(has_super_concept(output,cosa)),
assume(has_super_concept(in_out,cosa)),
assume(has_super_concept(memorie,cosa)),
assume(has_super_concept(u_elabo,cosa)),

 /* definizione deiruoli nel computer */
	add(pc_80,tastiera,generic_role),
	add(pc_80,scatola,generic_role),
   	add(pc_80,video,generic_role),
   	add(pc_80,drive,generic_role),
   	add(pc_80,memoria,generic_role),
   	add(pc_80,c_p_u,generic_role),

  /* definisco di che tipo sono i ruoli  */
assume(has_vr(scatola,pc_80,corpo)),
assume(has_vr(tastiera,pc_80,input)),
assume(has_vr(video,pc_80,output)),
assume(has_vr(drive,pc_80,in_out)),
assume(has_vr(memoria,pc_80,memorie)),
assume(has_vr(c_p_u,pc_80,u_elabo)),

 /* fissa il numero di possibili riempitori dei ruoli */
assume(has_number(tastiera,pc_80,[1,1])),
assume(has_number(scatola,pc_80,[1,1])),
assume(has_number(video,pc_80,[1,1])),
assume(has_number(drive,pc_80,[1,2])),
assume(has_number(memoria,pc_80,[1,1])),
assume(has_number(c_p_u,pc_80,[1,1])),
/* fissa la modalita'  dei ruoli nel computer 80*/
assume(has_modality(tastiera,pc_80,obl)),
assume(has_modality(video,pc_80,obl)),
assume(has_modality(scatola,pc_80,obl)),
assume(has_modality(drive,pc_80,obl)),
assume(has_modality(memoria,pc_80,obl)),
assume(has_modality(c_p_u,pc_80,obl)).

/* personal computer meta' anni 80*/

pc_85:-
 /* definisce il pc_85 come concetto generico */ 

	assume(generic_concept(pc_85)),
/* pc_85 deriva dal pc_80*/
assume(has_super_concept(pc_85,pc_80)),


/* aggiungo nuovi ruoli al pc_85*/
	add(pc_85,disco_fisso,generic_role),
	add(pc_85,co_pro_mat,generic_role),
	add(pc_85,stampante,generic_role),
/* descrivo il tipo del ruolo*/
assume(has_vr(disco_fisso,pc_85,memorie)),
assume(has_vr(stampante,pc_85,output)),
assume(has_vr(co_pro_mat,pc_85,u_elabo)),
/*il tipo di ruolo*/
 assume(has_number(disco_fisso,pc_85,[0,1])),
assume(has_number(stampante,pc_85,[0,1])),
 assume(has_number(co_pro_mat,pc_85,[0,1])).

/* personal computer primi anni 90*/

pc_90:-

    assume(generic_concept(pc_90)),

assume(has_super_concept(pc_90,pc_85)),

	add(pc_90,mouse,generic_role),
	add(pc_90,scheda_audio,generic_role),
	add(pc_90,lettore_cd,generic_role),
	add(pc_90,cash,generic_role),

assume(has_vr(mouse,pc_90,input)),
assume(has_vr(cash,pc_90,memorie)),
assume(has_vr(scheda_audio,pc_90,output)),
assume(has_vr(lettore_cd,pc_90,input)),



assume(has_number(disco_fisso,pc_90,[1,2])),
assume(has_number(lettore_cd,pc_90,[0,1])),
assume(has_number(scheda_audio,pc_90,[0,1])),
assume(has_number(drive,pc_90,[1,1])),
assume(has_number(mouse,pc_90,[1,1])),

assume(has_modality(disco_fisso,pc_90,obl)),
assume(has_modality(stampante,pc_90,obl)),
assume(has_modality(co_pro_mat,pc_90,obl)),
assume(has_modality(mouse,pc_90,obl)).


/*personal computer della seconda meta anni 90'*/

pc_95:-

	assume(generic_concept(pc_95)),

assume(has_super_concept(pc_95,pc_90)),

	add(pc_95,modem,generic_role),
	add(pc_95,zip,generic_role),
	add(pc_95,tele_camera,generic_role),

assume(has_vr(modem,pc_95,in_out)),
assume(has_vr(zip,pc_95,in_out)),
assume(has_vr(tele_camera,pc_95,in_out)),

assume(has_number(modem,pc_95,[1,1])),
assume(has_number(zip,pc_95,[1,1])),
assume(has_number(tele_camera,pc_95,[1,1])),

assume(has_modality(lettore_cd,pc_95,obl)),
assume(has_modality(scheda_audio,pc_95,obl)),
assume(has_modality(cash,pc_95,obl)).

/* personal_computer per internet */

pc_int:-

assume(generic_concept(pc_int)),

assume(has_super_concept(pc_int,pc_95)),

assume(has_modality(modem,pc_95,obl)).

internet:-
	assume(generic_concept(internet)),
assume(has_super_concept(internet,cosa)),

	add(internet,siti,generic_role),

assume(has_vr(siti,internet,pc_int)),

assume(has_modality(siti,internet,obl)).

/* concetti individuali  */

/* descrivo il mio computer */

mio_computer:-

 
%hard disk
assume(individual_concept(hd_80mb)),
assume(individuates(hd_80mb,disco_fisso)),

%ram
assume(individual_concept(ram_2mb)),
assume(individuates(ram_2mb,memoria)),

%cashe
assume(individual_concept(cashe_2k)),
assume(individuates(cashe_2k,cashe)),


%drive
assume(individual_concept(drive_144)),
assume(individuates(drive_144,drive)),

%video
assume(individual_concept(video_13p)),
assume(individuates(video_13p,video)),

%stampante
assume(individual_concept(epson_100)),
assume(individuates(epson_100,stampante)),

%mouse
assume(individual_concept(mouse_ibm)),
assume(individuates(mouse_ibm,mouse)),

%tastiera
assume(individual_concept(keyboard_ibm)),
assume(individuates(keyboard_ibm,tastiera)),

%corpo ps1
assume(individual_concept(corpo_ps1)),
assume(individuates(corpo_ps1,scatola)),

%cpu
assume(individual_concept(intel80386)),
assume(individuates(intel80386,c_p_u)),

%coprocessore
assume(individual_concept(intel80387)),
assume(individuates(intel80387,co_pro_mat)),

%ps1
assume(individual_concept(ps1)),
assume(individuates(ps1,pc_90)).



ps1:-

%hard_disk
  add(ps1,hd1,instance_role),
  assume(satisfies(hd1,ps1,disco_fisso,pc_90)),
  assume(has_value(hd1,ps1,hd_80mb)),

%ram
  add(ps1,ram1,instance_role),
  assume(satisfies(ram1,ps1,memoria,pc_90)),
  assume(has_value(ram1,ps1,ram_2mb)),

%cashe
  add(ps1,cashe1,instance_role),
  assume(satisfies(cashe1,ps1,cashe,pc_90)),
  assume(has_value(cashe1,ps1,cashe_2k)),

%drive
  add(ps1,drive1,instance_role),
  assume(satisfies(drive1,ps1,drive,pc_90)),
  assume(has_value(drive1,ps1,drive_144)),

%video
  add(ps1,video1,instance_role),
  assume(satisfies(video1,ps1,video,pc_90)),
  assume(has_value(video1,ps1,video_13p)),

%stampante
  add(ps1,stamp1,instance_role),
  assume(satisfies(stamp1,ps1,stampante,pc_90)),
  assume(has_value(stamp1,ps1,epson_100)),

%mouse
  add(ps1,mouse1,instance_role),
  assume(satisfies(mouse1,ps1,mouse,pc_90)),
  assume(has_value(mouse1,ps1,mouse_ibm)),

%tastiera
  add(ps1,tas1,instance_role),
  assume(satisfies(tas1,ps1,tastiera,pc_90)),
  assume(has_value(tas1,ps1,keyboard_ibm)),

%corpo
  add(ps1,corp1,instance_role),
  assume(satisfies(corp1,ps1,scatola,pc_90)),
  assume(has_value(corp1,ps1,corpo_ps1)),

%cpu
  add(ps1,cpu1,instance_role),
  assume(satisfies(cpu1,ps1,c_p_u,pc_90)),
  assume(has_value(cpu1,ps1,intel80386)),

%coprocessore
  add(ps1,copro1,instance_role),
  assume(satisfies(copro1,ps1,co_pro_mat,pc_90)),
  assume(has_value(copro1,ps1,intel80387)).

inizializza:-
	clear_net,
	pc_80,
	pc_85,
	pc_90,
	pc_95,
	pc_int,
	internet,
	mio_computer,
	ps1.

pp(I_conc) :-
            individual_concept(I_conc),
            write(I_conc),write(' e_ un concetto individiale'),nl,
            individuates(I_conc,G_conc), !,
            write(I_conc),write(' e_ un '),write(G_conc),nl,
            stampa_ruoli(I_conc,G_conc).


pretty_print1(A) :-
   generic_concept(A),
   print_header(g_conc,A),
   print_section(super_c,A,nonfullview),
   print_section(roles,A,fullview),
   skip_line(1).

stampa_ps1:-
	     ps1, 
             has_role(ps1,I_role),
             write(I_role),write(' e_ un instance_role '),nl, 
             satisfies(I_role,ps1,G_role,G_conc),
             write(' che individua il '),write(G_role),
             write(' del PS1 '),
             stampa_valore(I_role,ps1,Value),
             fail.

stampa_valore(Ir,Ic,V):- has_value(Ir,Ic,V),
                         write('  tipo '),write(V),nl,!.
stampa_valore(Ir,Ic,V):- write(' non ha nessun tipo '),nl,!.