strf2f(S,V2f) :- format("~s\t~2f",[S,V2f]), nl.
% strf2fum(S,V2f,UM) :- ssnnna(S,SN,N,NA), fel(SN,N,NA,V2f,UM).
strstrdecf2fum(Str1,Str2,Dec,V2f,UM) :- format("~s\t~s\t~d\t~2f ~s",[Str1, Str2, Dec,V2f,UM]),nl.
fdecum(S,V2f,UM) :- format("~s\t~d ~s", [S, V2f,UM]),nl.
fstrstr(Str1,Str2) :- format("~s\t~s",[Str1,Str2]),nl.
fstrdec(Str,Dec) :- format("~s\t~d",[Str,Dec]),nl.
% fel: Formatar ELemento.

fel(S) :- ssnnbna(S,SN,NB,NA), format("~s\t~s\t~d",[SN,NB,NA]),nl.
fel2f(S,V2f,UM) :- ssnnbna(S,SN,NB,NA), fel("~s\t~s\t~d\t~2f ~s",SN,NB,NA,V2f,UM).
feldec(S,Dec,UM) :- ssnnbna(S,SN,NB,NA), fel("~s\t~s\t~d\t~d ~s",SN,NB,NA,Dec,UM).
fel(StrFmt,Str1,Str2,Dec,V2f,UM) :- format(StrFmt,[Str1,Str2,Dec,V2f,UM]),nl.
%========== fi: Ficha Completa.

fi :- fi(faixa,1,118).
fi(faixa,Inicio) :- fi(faixa,Inicio,118).
fi(faixa,NúmeroAtômicoInicial,NúmeroAtômicoFinal) :- NúmeroAtômicoInicial =< NúmeroAtômicoFinal, na(S,NúmeroAtômicoInicial), fi(S), 
   Proximo is NúmeroAtômicoInicial + 1, fi(faixa,Proximo,NúmeroAtômicoFinal).

fi(S) :-   
   n(S,N)       , 
   nin(S,NIN)   ,
   sn(S,SN)     ,
   na(S,NA)     ,
   eb(S,EB)     ,
   es(S,ES)     ,
   tr(S,TR)     ,
   cat(S,CAT)   ,
   p(S,P)       ,
   g(S,G)       ,
   ga(S,GA)     ,
   ma(S,MA)     ,
   d(S,D)       ,
   cd(S,CD)     ,
   pf(S,PF)     ,
   pe(S,PE)     ,
   ra(S,RA)     ,
   RA2   is 0   , % ra2(S,RA2), 
   RC    is 0   , % rc(S,RC),
   RI    is 0   , % ri(S,RI),
   ve(S,VE)     ,
   ce(S,CE)     ,
   CCE   is "?" , % cce(S,CCE)   ,
   cf(S,CF)     ,
   ccf(S,CCF)   ,
   ceb(S,CEB)   ,
   cceb(S,CCEB) ,
   cev(S,CEV)   ,
   ccev(S,CCEV) ,
   ct(S,CT)     ,
   enp(S,ENP)   ,
   pei(S,PEI)   ,
   eo(S,EO)     ,
   cel(S,CEL)   ,
   lat(S,L)     ,
   clat(S,CL)   ,
   %
   write_fi(
      N,NIN,SN,
      NA,EB,ES,TR,CAT,
      P,G,GA,MA,D,CD,
      PF,PE,RA,RA2,RC,
      RI,VE,CE,CCE,CF,CCF,CEB,CCEB,CEV,CCEV,CT,ENP,
      PEI,EO,CEL,L,CL),
      !.
 
%========== lfi: lista de fichas.

fi([]) :- !.
fi([S|Símbolos]) :- fi(S), nl, !, fi(Símbolos).

% write_fi(A, B, C) :- write(Titulo),write(Tabs),write(Valor),nl.

write_fi(
      N,NIN,SN,
      NA,EB,ES,TR,CAT,
      P,G,GA,MA,D,CD,
      PF,PE,RA,RA2,RC,
      RI,VE,CE,CCE,CF,CCF,CEB,CCEB,CEV,CCEV,CT,ENP,
      PEI,EO,CEL,L,CL) :- 
   %
   sigla(eb,EB,DescriçãoEstabilidade),
   sigla(es,ES,DescriçãoEstado),
   sigla(tr,TR,DescriçaoTransição),
   sigla(ct,CAT,DescriçãoCategoria),
   %
   unidade_medida(ra,Ura),
   unidade_medida(ma,Uma),
   unidade_medida(ve,Uve),
   unidade_medida(pei,Upei),
   %
   nl,
   write('Numero Atômico____________________________________: '),write(NA),nl,
   write('Símbolo___________________________________________: '),write(SN),nl, 
   write('Nome______________________________________________: '),write(N),write('('),write(NIN),write(')'),nl,
   write('Estado, Estabilidade, Transição, Categoria________: '),format("~s, ~s, ~s, ~s",[DescriçãoEstado,DescriçãoEstabilidade,DescriçaoTransição,DescriçãoCategoria]),nl,
   write('Grupo | Antigo Grupo | Período ___________________: '),format("~d | ~s | ~d",[G,GA,P]),nl,
   write('Massa Atômica_____________________________________: '),write(MA),write(" "),write(Uma),nl,
   write('Densidade_________________________________________: '),write(D),write(CD),nl,
   write('Ponto de Fusão____________________________________: '),format("~2f",[PF]),write(" ºC("),KelvinFusão is(PF-273),format("~2f",[KelvinFusão]),write(" k)"),nl,
   write('Ponto de Ebulição_________________________________: '),format("~2f",[PE]),write(" ºC("), KelvinEbulicao is(PE-273), format("~2f",[KelvinEbulicao]),write(" k)"),nl,
   write('Raio Atômico Iupac________________________________: '),write(RA),write(" "),write(Ura),nl,
   write('Raio Atômico______________________________________: '),write(RA2),write(" "),write(Ura),nl,
   write('Raio Covalente____________________________________: '),write(RC),write(" "),write(Ura),nl,
   write('Raio Iônico_______________________________________: '),write(RI),write(" "),write(Ura),nl,
   write('Volume Específico_________________________________: '),write(VE),write(" "),write(Uve),nl,
   write('Calor Específico__________________________________: '),write(CE),write(" "),write(CCE),nl,
   write('Calor de Fusão____________________________________: '),write(CF),write(" "),write(CCF),nl,
   write('Calor de Ebulição_________________________________: '),write(CEB),write(" "),write(CCEB),nl,
   write('Calor de Evaporação_______________________________: '),write(CEV),write(" "),write(CCEV),nl,
   write('Condutividade Térmica_____________________________: '),write(CT),nl,
   write('Eletronegatividade de Pauling_____________________: '),write(ENP),nl, 
   write('Primeira Energia de Ionização_____________________: '),write(PEI),write(" "),write(Upei),nl, 
   write('Estados de Oxidação_______________________________: '),write(EO),nl, 
   write('Configuração Eletrônica___________________________: '),write(CEL),nl, 
   write('Lattece___________________________________________: '),write(L),write(" "),write(CL),nl, 
   nl.

   h  :- fi(h).
   he :- fi(he).
   li :- fi(li).
   be :- fi(be).
   b  :- fi(b).
   c  :- fi(c).
   % n  :- fi(n).
   o  :- fi(o).
   f  :- fi(f).
   ne  :- fi(ne).
   na  :- fi(na).
   mg  :- fi(mg).
   al  :- fi(al).
   si  :- fi(si).
   p   :- fi(p).
   s   :- fi(s).
   cl  :- fi(cl).
   ar  :- fi(ar).
   k   :- fi(k).
   ca  :- fi(ca).
   sc  :- fi(sc).
   ti  :- fi(ti).
   v   :- fi(v).
   cr  :- fi(cr).
   mn  :- fi(mn).
   fe  :- fi(fe).
   co  :- fi(co).
   ni  :- fi(ni).
   cu  :- fi(cu).
   zn  :- fi(zn).
   ga  :- fi(ga).
   ge  :- fi(ge).
   as  :- fi(as).
   se  :- fi(se).
   br  :- fi(br).
   kr  :- fi(kr).
   rb  :- fi(rb).
   sr  :- fi(sr).
   y   :- fi(y).
   zr  :- fi(zr).
   mb  :- fi(mb).
   mo  :- fi(mo).
   tc  :- fi(tc).
   ru  :- fi(ru).
   rh  :- fi(rh).
   pd  :- fi(pd).
   ag  :- fi(ag).
   cd  :- fi(cd).
   in  :- fi(in).
   sn  :- fi(sn).
   sb  :- fi(sb).
   te  :- fi(te).
   i   :- fi(i).
   xe  :- fi(xe).
   cs  :- fi(cs).
   ba  :- fi(ba).
   la  :- fi(la).
   ce  :- fi(ce).
   pr  :- fi(pr).
   nd  :- fi(nd).
   pm  :- fi(pm).
   sm  :- fi(sm).
   eu  :- fi(eu).
   gd  :- fi(gd).
   tb  :- fi(tb).
   dy  :- fi(dy).
   ho  :- fi(ho).
   er  :- fi(er).
   tm  :- fi(tm).
   yb  :- fi(yb).
   lu  :- fi(lu).
   hf  :- fi(hf).
   ta  :- fi(ta).
   w   :- fi(w).
   re  :- fi(re).
   os  :- fi(os).
   ir  :- fi(ir).
   pt  :- fi(pt).
   au  :- fi(au).
   hg  :- fi(hg).
   tl  :- fi(tl).
   pb  :- fi(pb).
   bi  :- fi(bi).
   po  :- fi(po).
   at  :- fi(at).
   rn  :- fi(rn).
   fr  :- fi(fr).
   % ra  :- fi(ra).
   ac  :- fi(ac).
   th  :- fi(th).
   pa  :- fi(pa).
   u   :- fi(u).
   np  :- fi(np).
   pu  :- fi(pu).
   am  :- fi(am).
   cm  :- fi(cm).
   bk  :- fi(bk).
   cf  :- fi(cf).
   es  :- fi(es).
   fm  :- fi(fm).
   md  :- fi(md).
   no  :- fi(no).
   lr  :- fi(lr).
   rf  :- fi(rf).
   db  :- fi(db).
   sg  :- fi(sg).
   bh  :- fi(bh).
   hs  :- fi(hs).
   mt  :- fi(mt).
   ds  :- fi(ds).
   rg  :- fi(rg).
   cn  :- fi(cn).
   uut :- fi(uut).
   fl  :- fi(fl).
   uup :- fi(uup).
   uuh :- fi(uuh).
   lv  :- fi(lv).
   uuo :- fi(uuo).
   
% === Simbolo, Simbolo da notação, nome e número atômicos.

ssnnna(S,SN,N,NA) :- sn(S,SN), n(S,N), na(S,NA).

ssnnbna(S,SN,NB,NA) :- sn(S,SN), nf(S,NB), na(S,NA).
% === Descrição do elemento comum para g, p e gp.

descrição_gp(S) :- 
   sn(S,SN),na(S,NA),n(S,N),g(S,G),p(S,P),eb(S,EB),es(S,ES),tr(S,TR),cat(S,CAT),
   sigla(eb,EB,DescriçãoEstabilidade),
   sigla(es,ES,DescriçãoEstado),
   sigla(tr,TR,DescriçãoTransição),
   sigla(ct,CAT,DescriçãoCategoria),
   format("~s  \t~s     \t~d\t~d\t~d\t~s      \t~s    \t~s    \t~s~n",[SN,N,NA,G,P,DescriçãoEstado,DescriçãoEstabilidade,DescriçãoTransição,DescriçãoCategoria]).
na_ :- nl, forall(na(S,_),na(S)), nl.

na(S) :- fel(S).