function A=lois_booleennes(n,varargin) % donne le tableau de plusieurs lois boolénnes agissant sur n booléens % % ********************************************************* % A=lois_booleennes(n,varargin) : % % * Variables d'entrée % * n : entier % * varargin : lois booléennes sous forme de chaîne % * Variables de sortie : % * A : tabeau de logiques. Les n premières colonnes contiennent toutes % les valeurs possibles des booléens. Les dernières contiennent les lois % booléennes. % % EXEMPLES % A=lois_booleennes(1,@(x) not(x)) (négation) % A=lois_booleennes(2,@(x,y) and(x,y)) (c'est la loi 'et') % A=lois_booleennes(2,@(P,Q) ~P,@(P,Q) or(~P,Q)) (c'est la loi 'implique') % A=lois_booleennes(3,@(x,y,z) and(x,and(y,z))) (c'est la loi '.et . et .') % % % ************ Fonctions auxiliaires utilisées ************ % % produit_cartesien % % ********************************************************* % % 2020 by Jérôme BASTIEN % Université Claude Bernard Lyon I, Polytech, Laboratoire LIBM, Villeurbanne % E-Mail : jerome.bastien@univ-lyon1.fr c=cell(1,n); for i=1:n c{i}=logical([0,1]); end b=produit_cartesien(c); [oubli,p]=size(varargin); d=zeros(2^n,p); for i=1:p f=varargin{i}; %f=eval(['@(x,y)',f,'(x,y)']); ch='feval(f,'; for j=1:n-1 ch=[ch,'b(:,',int2str(j),'),']; end j=n; ch=[ch,'b(:,',int2str(j),'));']; eval(['Z=',ch]); d(:,i)=Z; end A=[b,d];