Inleiding Logic10 is een programma voor de toepassing van Booleaanse Algebra.Het doet twee dingen:
2. Reductie van waarheidstabellen Click [ HIER ] voor uitleg over het programmeren van waarheidstabelreductie(Engels) Logic10 is handig bij de studie van de Booleaanse Algebra, het ontwerpen van digitale schakelingen of propositielogica in het algemeen. Dit is versie 2.0. Hierin zijn alle bekende onvolkomenheden van de vorige versies opgelost. Zo ziet Logic10 er in werking uit: (verkleind beeld) Mogelijkheden
- output : waarheidstabel in CNF of DNF formaat - bewaren en laden van alle input en output data - afdrukken van input en output. - in-line help informatie. Installatie Logic10 is geschreven voor Windows. De programmeertaal is Delphi.Download Logic10 door op het download icoon (bliksem) bovenaan de pagina te klikken. Er is geen installatieprocedure, kopieer simpelweg Logic10 naar een map. De Windows registry wordt niet gewijzigd. Menu selecties Van links naar rechts:
- opslaan van tabellen en selecties - afdrukken van formules en tabellen - printer setup - help informatie Boven de output box wordt de keuze gemaakt tussen CNF of DNF output. Ook kan worden aangegeven of de waarheidstabel gereduceerd moet worden. Boven de Info box kunnen twee keuzes worden gemaakt: één om de gevevens te tonen van het vertaalproces van de formules en een andere om het reductieproces stap voor stap te tonen. Formule invoer Logische variabelen worden met een enkele letter A..Z aangegeven. In een formule mogen maximaal 15 verschillende letters voorkomen. Haakjes (...) geven prioriteit van een bewerking aan. Maximale diepte van haakjes (((((((.... is 20. Operatoren met hun prioriteit zijn:
Opmerkingen:
1. tussen variabelen mag de "." AND operator weggelaten worden. Het programma voegt die zelf toe. A.B.C = ABC A.(B+C) = A(B+C) (A+B).(C+D) = (A+B)(C+D)
Opmerking: Pas op: Als een formule verdergaat op een volgende lijn en het laatste teken is geen operator (. , + , - , =) dan voegt Logic10 de ". " toe, zodat deze formule: A+B C+Dwordt geïnterpreteerd as A+B.C + D Tik control y om een regel te verwijderen. Tik control n om een regel in te voegen. Bewerkingen De tabel hieronder toont alle bewerkingen:
Waarheidstabel invoer De tabel kan maximaal 100 regels lang zijn.Begin met bovenaan de variabelen in te voeren, anders ontstaan foutmeldingen. De tabel is in CNF vorm, dus elke regel is een AND van de variabelen, de regels onderling vormen OR's. Voer een "0" in als de variabele / (not) voorkomt, voer een "1" in als er geen / voor de variabele staat. Zodat deze tabel: A B C D 0 1 1 1 1 0de formule: /A C D + A B /D weergeeft. Waarheidstabel uitvoer Formule invoer: Door de GO knop aan te klikken wordt de formule vertaald in een lijst met basisbewerkingen gesorteerd op prioriteit.Een telwerk genereert alle waarden voor de voorkomende variabelen en substitueert ze in de formule. Levert de formule "true" (1), dan worden de waardes aan de output waarheidstabel toegevoegd. Als de reductie checkbox is gevinkt, dan wordt geprobeerd de tabel te vereenvoudigen. De volgende regels worden daarbij toegepast:
2.....A + AB =A 3.....A/B + AB = A 4.....A + /AB = A + B 5.....A /B + BC ----> AC
Merk op, dat een formule zoals A + A een structuur weergeeft, want Regel 5. is nieuw in versie 2.0 en vervangt oude regels 5. en 6. In A/B + BC -------> AC heet AC een virtuele term. A/B en BC zijn de parents van AC Als AC = 1 dan is zeker A/B + BC = 1 maar het omgekeerde geldt niet. Reductieregels 1..4 gelden ook voor virtuele termen met één uitzondering
Waarheidstabel invoer Bij klikken op de GO knop wordt de invoertabel naar de uitvoertabel gekopieerd.Als reductie is gevinkt dan worden de reductieregels toegepast. CNF en DNF De uitvoertabel kan in de CNF of de DNF vorm staan.CNF betekent "conjunctieve normaalvorm" wat er zo uitziet: ABC + DEF + GHI + ..... dus, AND's van individuele variabelen (met of zonder / ervoor), die worden geORed. DNF betekent "disjunctieve normaalvorm", wat er zo uitziet: ( A+B+C)(D+E+F)(G+H+I)(.... dus, OR's van individuele variabelen (met of zonder / ) die geAND worden. In de DNF mode voegt Logic10 juist variabelen aan de waarheidstabel toe als het resultaat false is. De tabel wordt dan op de normale wijze vereenvoudigd, maar de resultaten worden in '"not" vorm weergegeven. Een "0" wordt getoond als "1" en een "1" als "0". Opm: cnf..........AB + BC = (A+C)(A+D)(B+C)(B+D)..........dnf Dit is een direct gevolg van de tweede distributieve wet.(zie Inleiding Booleaanse Algebra) Inconsistent Een logische formule die nooit "true" oplevert, heet inconsistent.Een eenvoudige inconsistentie is :......A./A Logic10 rapporteert inconsistenties. Tautologie Een logische formule die altijd waar is heet een tautology.Een eenvoudige tautologie is :........A + /A Logic10 rapporteert tautologiën. Bewaren en Laden Klikken op het save icoon (disk schijf) , toont een dialoogwindow om de filenaam te selecteren.Logic10 gebruikt geen file extensies (want daar zijn er al genoeg van) . Voor het onderscheid echter wordt de filenaam voorafgegaan door logic10_. Alle gegevens: invoer formule en tabel, uitvoer, en instellingen, worden in één file bewaard. Klik op het map icoon om opgeslagen gegevens te laden. Translate informatie Als de xlate checkbox is gevinkt, dan wordt het vertaalproces getoond.Hieronder staat een gedetailleerde afbeelding: Een derde kolom geeft de prioriteit van de bewerking aan. Uit de postfix tabel wordt de variabelen tabel gemaakt. De rechter director tabel is het uiteindelijke resultaat van de vertaling. Die tabel bevat alle bewerking gesorteerd op prioriteit. De vier kolommen zijn:
2. het doel register 3. operand1 register 4. operand2 register Opmerking: een register bevat een logische term zoals /ABC/DE/F Door de variabelen op een waarde te zetten en de director tabel te doorlopen wordt de formule geëvalueerd, dwz. de waarde true of false vastgesteld. Scan informatie Scannen van de waarheidstabel komt neer op het vergelijken van elke rij (of term) met elke andere term.Index van de waarheidstabel zijn [ i ] en [ j ]. Dus waarheidstabel term [ i ] wordt vergeleken met term [ j ]. Die vergelijking levert vier (ja/nee) uitslagen op: hi Hole-iIs true als [ i ] geen bepaalde variable heeft die wel aanwezig is in [ j ] A B C D E F [i] 0 0 x 0 x x [j] 1 0 x 1 1 0Hierboven zijn E, F verwijderd in [ i ] maar niet in j, dus hi is true. hj Hole-jHier heeft [ j ] geen variable(n) die [ i ] wel heeft A B C D E F [i] 1 x 1 1 0 0 [j] 0 x 0 x x x[ j ] heeft geen D,E,F maar [ i ] wel, dus hj is true. sb Single bit betekent dat het het (logisch) verschil van [ i ] en [ j ] 1 bit bedraagt.A B C D E F [i] x 1 1 1 0 1 [j] 0 x 1 1 1 1Alleen de E bits verschillen. Kolommen met een x (verwijderde variabele) tellen niet mee. Dus, hierboven is sb true. zb Zero oftewel geen verschilA B C D E F [i] 0 1 1 1 x 0 [j] 0 1 x 1 1 0kolommen met x tellen niet mee. De andere kolommen moeten gelijk zijn. Dus, zb is true. hi(3) hj(2) sb(1) zb(0) vormen bits 3,2,1,0 van een code. Deze code stuurt de logische bewerkingen van het reductieproces. Enkele voorbeelden: Reductie regel 1 AB/C + AB/C = AB/CA B C [i] 1 1 0 [j] 1 1 0Het verschil is 0 0 0. hi, hj, sb zijn false (0), zb is true (1). code = 1. Dus , de [ j ] term wordt verwijderd. Reductie regel 2 AB + ABC/D = ABA B C D [i] 0 1 x x [j] 0 1 1 0hi is true, hj is false, sb is false, zb is true. code is 1001 = 9 (decimal). [ j ] wordt verwijderd. Reductie regel 3 A/BC + ABC = AA B C D E F [i] 1 0 1 x x x [j] 1 1 1 x x xhi,hj,zb zijn false. sb is true (alleen B verschilt). code is 2. De B variabele in [i] wordt verwijderd en de gehele [ j ] term ook. Reductie regel 4 AB + A/BC = AB + ACA B C [i] 1 1 x [j] 1 0 1hi , sb zijn true. zb, hj zijn false. Het verschil bit B wordt verwijderd in [ j ]. Reductie regel 5, virtuele termen AB + /BC levert virtuele term AC, die tijdelijk aan het scanproces meedoet.A B C [i] 1 1 x [j] x 0 1hi,hj,sb zijn true. zb is false. code 1110 = 14 decimal. Actie : Een scan wordt gestart die AC vergelijkt met alle termen in de waarheidstabel. Regels 1..4 zijn van toepassing met de uitzondering dat de [i] en [j] termen niet verwijderd mogen worden. Hieronder staat een afbeelding van een "normale" scan k is de index voor de waarheidstabel ( i , j zijn voor de normale scan) Een virtuele term kan (met een term uit de waarheidstabel) weer een nieuwe virtuele term maken. Die nieuwe virtuele termen worden even opgeslagen in een stack (eigenlijk FIFO buffer) voor latere verwerking. In de waarheidstabel worden de parents van virtuele termen in rood afgebeeld. Virtuele termen aan het werk De introductie van virtuele termen maakte alle regels na 1..4 overbodig.Eerst iets over het ontstaan van het idee. Formule /BQ + /AP + AB bleek op te leveren na reductie: /B/PQ + AB + /AP + AQ Dit resultaat is niet fout, maar de dikgedrukte term is overbodig ( evenals /P in /B/PQ) De eerste gedachte was om een methode te bedenken die AQ kan opsporen en verwijderen, maar een tweede gedachte was hoe van AQ gebruik kan worden gemaakt. Het bleek, dat AQ het gevolg was van /BQ + AB, termen die alleen B verschillend hebben. Dus, AQ is een soort representatie van /BQ + AB. Als AQ = 1 dan is zeker ook /BQ + AB = 1 maar het omgekeerde geldt niet. AQ mag tijdelijk meedoen in het reductieproces en mag daarbij ook zelf gereduceerd worden. Voor het bovenstaande geval: termen /BQ + AB maken virtuele term AQ. Bij de vergelijking van AQ (virtueel) en AQ (tabel) wordt AQ verwijderd volgens regel 1. Voorbeeld 1: /AZ + /BZ + /CZ + ABC = Z + ABC /AZ + ABC ----> BCZ (virtueel) BCZ + /BZ = CZ (virtuele term vereenvoudigd) CZ + /CZ = Z...........en regels 1..4 maken het karwei af. Voorbeeld 2: BC + /BP + ACPQ = BC + /BP BC + /BP ----> CP (virtueel) CP + ACPQ = CP........dus eliminatie ACPQ. Voorbeeld 3: /B/PQ + AB + /AP + AQ................{zie hiervoor} /AP + AQ ---> PQ (virtueel) PQ + /B/PQ = /BQ...............variabele /P wordt geëlimineerd. /BQ + AB ---> AQ (virtueel), elimineert AQ in de tabel. Naschrift De eerste versie van een waarheidstabel generator/vereenvoudiger schreef ik in 1991.Toendertijd, tijdens de studie voor wiskundeleraar, werd bij het vak Logica een 10 in het vooruitzicht gesteld voor een programma dat kon aantonen of een Booleaanse Algebra formule een inconsistentie of tautologie was. Ik schreef het programma en kreeg de 10. Begin 2013 ruimde ik wat oude spullen op en kwam de diskette met het Turbo Pascal programma tegen. Het bleek nog te werken ook, ondanks het verouderde gebruikers-interface, maar niet elke tabel werd helemaal gereduceerd. Aan het werk dus, gebruikers interface herschreven en een paar nieuwe regels toegevoegd. Dat was versie 1.2 Toch bleef het knagen dat in sporadische gevallen een waarheidstabel niet volledig werd gereduceerd. Dankzij de invoering van virtuele termen lijkt dat nu wel het geval. Donaties Logic10 is freeware.Mocht U commercieel gebruik maken van Logic10, overweeg dan een donatie voor mijn website. Stuur a.u.b. even een email bericht voor de details. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||