% 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(0, 1). not(1, 0). % AND and(0, 0, 0). and(0, 1, 0). and(1, 0, 0). and(1, 1, 1). % XOR xor(0, 0, 0). xor(0, 1, 1). xor(1, 0, 1). xor(1, 1, 0). % OR or(0, 0, 0). or(0, 1, 1). or(1, 0, 1). or(1, 1, 1). 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(0, 0, 1). nand1(0, 1, 1). nand1(1, 0, 1). nand1(1, 1, 0). 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).