// calcul de tables de vérité sur des expressions // logiques function T1=table(n) T=[1;0] T1=ones(2^n,n) for i=1:n T1(:,i) = ones(2^(i-1),1).*.(T.*.ones(2^(n-i),1)); end endfunction function [nv,expr]=nvar(expr) n=size(strindex(expr,'x'),'*') nv=0 for i=1:n if grep(expr,'x'+string(i))<>[] then nv=nv+1 end end for i=1:nv expr=strsubst(expr,'x'+string(i),'x(:,'+string(i)+')'); end endfunction // table de vérité function [Tab,Tab1]=verite(expr) [n,expr]=nvar(expr); x=table(n); execstr('rep=('+expr+')'); Tab=[x,rep]; Tab1=['x'+string(1:n),expr; string(Tab)]; endfunction // test d'une proposition function y=test(expr) Tab=verite(expr) y=and(Tab(:,$)) endfunction test('(x1 & x2) == (x2 & x1)') // test de priorité test('(x1 & x2 | x3) == ( (x1 & x2 ) | x3)') // table [Tab,Tab1]=verite('(x1 & x2 | x3)'); Tab1