Wednesday, January 27, 2010

aplc prolog

%check if a windows is xp.
isxp(xphome).
isxp(xpprofessional).
isxp(xpmediacenter).
isxp(xptabletpc).

%checks if a windows is vista.
isvista(vistastarter).
isvista(vistahomebasic).
isvista(vistahomepremium).
isvista(vistabusiness).
isvista(vistaenterprise).
isvista(vistaultimate).

%check if a windows is 7
is7('7starter').
is7('7homepremium').
is7('7professional').
is7('7enterprise').
is7('7ultimate').

%xp to vista upgrade
xptovista(xphome, vistahomebasic) .
xptovista(xphome, vistahomepremium).
xptovista(xpmediacenter,vistahomepremium).
xptovista(Xp, vistabusiness) :- xptobusiness(Xp).
xptovista(Xp, vistaultimate) :- xptoultimate(Xp).

%xp to vista, where it requires two times upgrade

twotimesupgrade(xphome,vistatovista(vistabusiness,vistaenterprise)).
twotimesupgrade(xpprofessional,vistatovista(vistabusiness,vistaenterprise)).
twotimesupgrade(xptabletpc,vistatovista(vistabusiness,vistaenterprise)).
twotimesupgrade(xphome,vistato7(vistahomebasic,'7homepremium')).
twotimesupgrade(xphome,vistato7(vistahomepremium,'7homepremium')).
twotimesupgrade(xphome,vistato7(vistabusiness,'7professional')).
twotimesupgrade(xphome,vistato7(vistaultimate,'7ultimate')).

%twotimesupgrade(xpprofessional,vistato7(vistabusiness

%twotimesupgrade(Xp,vistato7(Vista, W7)) :- isxp(Xp),xptovista(Xp,Vista),vistato7(Vista,W7).
twotimesupgrade(vistaenterprise,vistato7(vistaultimate,'7ultimate')).

%http://ebiquity.umbc.edu/blogger/2006/03/12/eliminating-duplicate-answers-in-prolog/
%Accessed [27 Jan 2010]

%upgrading among vista versions
vistatovista(vistabusiness,vistaenterprise).
vistatovista(vistahomebasic,vistahomepremium).
vistatovista(Vista,vistaultimate) :- vistatoultimate(Vista).

%vista to 7
%information available from
%http://arstechnica.com/microsoft/news/2009/02/upgrading-to-windows-7-what-xp-and-vista-users-need-to-know.ars
%[Accessed 21-Jan-2010]
vistato7(vistahomebasic,'7homepremium').
vistato7(vistahomepremium,'7homepremium').
vistato7(vistabusiness,'7professional').
vistato7(Vista,W7) :- Vista \= vistastarter, isvista(Vista), W7 == '7ultimate'.

%windows 7 to windows 7
%http://windows.microsoft.com/en-us/windows7/products/windows-anytime-upgrade
%[Accessed 21-Jan-2010]
w7to7('7starter', W7) :- is7(W7), W7 \= '7starter'.

%all xp can upgrade to Vista, except those that requires Format.
upgrade(Xp,Vista) :- xptovista(Xp,Vista).
upgrade(Vista, W7) :- vistato7(Vista,W7).
upgrade(Vista1,Vista2) :- vistatovista(Vista1,Vista2).
upgrade(W7, Wseven) :- w7to7(W7, Wseven).

%considering two time upgrade
multistageupgrade(Xp, Vista) :- isxp(Xp), xptovista(Temp), vistatovista(Temp,Vista).

%all vista can upgrade to ultimate directly, except vista ultimate itself.
vistatoultimate(V) :- isvista(V), V \= vistaultimate.

%all xp, except media center version, can directly upgrade to vista business
xptobusiness(Xp) :- isxp(Xp), Xp \= xpmediacenter.

%all xp can upgrade to vista ultimate directly.
xptoultimate(Xp) :- isxp(Xp).


/*
http://www.ifcomputer.co.jp/en/manuals5.2/refman/node482.html
[Accessed 23 Jan 2010]
Below are all Queries

upgrade(X,Y).



*/

No comments: