% Logik og sprog, Modul 2, datalogi RUC Henning Christiansen % % % Logiske kredse implementeret i Prolog; % kapitel 5 i "Sprog og abstrakte maskiner" % % (c) 2000, Henning Christiansen % NOT nOt(nul, et). nOt(et, nul). % AND and(nul, nul, nul). and(nul, et, nul). and(et, nul, nul). and(et, et, et). % XOR xor(nul, nul, nul). xor(nul, et, et). xor(et, nul, et). xor(et, et, nul). % OR or(nul, nul, nul). or(nul, et, et). or(et, nul, et). or(et, et, et). halfadder(A, B, Carry, Sum):- and(A, B, Carry), xor(A, B, Sum). fulladder(A, B, Carryin, Sum, Carryout):- xor(A, B, X), and(A, B, Y), and(X, Carryin, Z), xor(Carryin, X, Sum), or(Y, Z, Carryout). nand1(nul, nul, et). nand1(nul, et, et). nand1(et, nul, et). nand1(et, et, nul). nand2(A, B, X):- and(A, B, M), nOt(M, X). aand1(A, B, C, X):- and(A, B, M), and(M, C, X). aand2(A, B, C, X):- and(M, C, X), and(A, B, M).