HOME
What is BoolEngine?
Boolean Character Conventions
Truth Table Conventions
Don't Cares
How do I obtain a simplified boolean expression from a given truth table?
How do I obtain a truth table from a given boolean expression?
How do I obtain a simplified boolean expression from a given boolean expression?
The Waiting Queue
One Job Per Browser
BoolEngine Limitations
The Fifteen-Minute Rule
Job Cancellation Protocol
Disclaimer
Why Logic Fails
Why is BoolEngine so tempermental?


What is BoolEngine?

BoolEngine is a tool for the technical and scientific community. It focuses on a branch of mathematics called boolean logic, or boolean algebra, and it allows users to perform three basic operations. It allows the user to obtain a simplified boolean expression from a given truth table, obtain a truth table from a given boolean expression, or obtain a simplified boolean expression from a given boolean expression.

If you're unfamiliar, boolean logic was developed by George Boole; a mathematician who lived in the 1800s. Click here to watch a brief YouTube video about him and his work. You can also click here in order to watch a video that explains the basics of boolean logic. I didn't produce either of these videos, but they provide brief introductory information about George Boole and boolean algebra.

In order to use BoolEngine, you must be familiar with its conventions and formats. The following sections describe these rules and conventions.

Back To Top

Boolean Character Conventions

Although any boolean expression can be made up of as many as 1780 characters, BoolEngine only safely recognizes thirty-four different character types. These characters include the entire lower-case alphabet, "&" to depict the logical "AND" symbol, "|" to depict the logical "OR" symbol, "~" to depict the logical "NOT" (or invert) symbol, and the left and right parenthesis "(" and ")". Though I don't know why anyone would bother using them when creating an expression, BoolEngine also accepts "0" and "1" to depict logical "false" and "true" respectively. Though blank spaces are allowed in order to make your entered expressions easier to read, they certainly aren't required. In fact, BoolEngine won't use them when it generates expressions.

This figure summarizes all character types that are easily recognized by BoolEngine.

Characters

When building expressions, inputs (or independent variables) must be expressed as single lower-case letters. Capital letters and whole-word variables are not allowed. The following figure gives examples of boolean expressions that BoolEngine can easily understand.

Good_Expressions

As you can see, parenthesis can be used in order to make complex expressions.

Any time you submit a boolean expression at one of BoolEngine's submission prompts, your expression should not contain any characters that are not listed on the list of thirty-four allowable characters. The expression must also adhere to the single-character input convention. Neither full-name inputs, nor capital letters, are allowed. The following figure gives examples of boolean expressions that are not safe, and therefore could be misinterpreted.

Expression

This next figure shows the correct way to represent the expressions that were shown in the previous figure.

Expression

If you follow the convention, which I've just explained, then you can be confident that BoolEngine will recognize your expression correctly. BoolEngine makes every attempt to understand what you give it, even if you don't strictly follow this given convention. If you don't follow the convention, it's possible that you may still get an accurate result. However, in order to get predictable results from BoolEngine, you should stick with the convention which I've just described.


Back To Top

Truth Table Conventions

BoolEngine allows the user to build a simplified boolean expression from a given truth table. The truth table that you submit is uploaded as a simple text document file. The file must contain only standard text characters and no other type of fonts or special formatting. For this reason, it is recommended that you use a simple text editor like Microsoft's Notepad program, on Windows, in order to build your file. If you try to use something like Microsoft Word, you may end up with special fonts and extra format characters that will be misunderstood by BoolEngine.

If you're using Linux, you may want to use a text editor, like Geany, and make sure your settings are configured to build text files that are compatible with the Windows operating system. Click here for an excellent article on this topic. The article not only explains the difference between text file conventions, but it also explains how to get Geany for a Linux system, and how to configure your settings so that it will build Windows-compatible text files.

In order to easily explain the truth table convention that BoolEngine expects, lets first look at the simple correlations between a given boolean expression and its truth table. The following figure shows a simple boolean expression along with its corresponding truth table.

Expression

A truth table file for BoolEngine will look very similar to the truth table in the figure above. This next picture shows the actual contents of a truth table file that BoolEngine could accept. It's the same table as above, but is shown using BoolEngine convention.

Expression

As you can see, only a few differences exist between the two pictures. First of all, no input variable names are shown, nor is the output (value of the expression) labeled. On each line, a colon ":" separates the input values from the output value, and each line is terminated with a semicolon ";".

As was mentioned, no input variable names are shown in the truth table file. Instead, BoolEngine orders the inputs in alphabetical order from left to right. So if your boolean expression contains inputs "a", "b", and "c", they would follow the same order as was shown in the example. If your expression were to contain "r", "m", "a" and "w" as inputs, your truth table would assume the order that is shown in the following figure.

Expression

Notice how the inputs are simply placed in alphabetical order from left to right. This is extremely important to remember since a different order would result in a different truth table file.

Back To Top

Don't Cares

Often times, you may find that you have a truth table that gives you the freedom to not care what the value of the expression is for a given set of inputs. For a given scenario of inputs, you don't care whether the value of the statement is true or false (1 or 0). In such cases, BoolEngine allows you to enter these values as a capital "X" in your truth table.

With BoolEngine, capital letters are never allowed when building a boolean expression. However, when submitting a truth table, BoolEngine understands a capital "X" to mean that you don't care what the value of an expression is for a given set of inputs.

Don't cares are only allowed in the "output" column of a truth table. A truth table gives the desired outcome for every possible combination of inputs. Therefore, the input values, (the independent variables), must always be defined as true or false (1 or 0). Don't cares only make sense when pertaining to the output of a truth table, which is the overall value of the boolean expression.

The following picture gives an example of a truth table file that contains "don't care" values.

Don't Care Truth Table

Don't cares are usually used when you are dealing with a scenario that will never happen. It's always a good idea to take advantage of them when possible, since they often allow BoolEngine to come up with a much simpler expression. As a general rule, the more "don't cares" a truth table has, the simpler the expression will become.

Some people are a little fuzzy when it comes to understanding "don't cares". They're really not that mystifying. Click here in order to see a simple example that shows when you could have "don't cares" in your truth table.

Back To Top

How do I obtain a simplified boolean expression from a given truth table?

BoolEngine is extremely easy to use. From the home page, you simply click on one of the three tasks that you wish to perform. In this case, click on the link that says "Build a boolean expression from a truth table". After clicking on the link, you will see a prompt, and browse, button that allows you to select a file that contains your truth table (Your truth table must adhere to the convention that was mentioned in the previous section). After you have selected your truth table file, click on the "submit" button and wait for your result to appear on the screen.

All simplified boolean expressions are in the simplest configuration of SOP (sum of product) form.

Back To Top

How do I obtain a truth table from a given boolean expression?

From the home page, click on the link that says "Build a truth table from a boolean expression". At the prompt, type in your boolean expression, based on the convention rules that were described above, before clicking on the "Submit" button. Once BoolEngine has completed your request, a downloadable link will appear on the screen. You can save the completed file to your computer by right-clicking on the link and then clicking "Save As" from the menu that appears.

The truth table file will adhere to the truth table convention that was described earlier. You have twenty-four hours to save this file to your computer. After that time, the file will be removed from the system, and will no longer be available. For this reason, it is advised that you save the file to your computer right away.

Back To Top

How do I obtain a simplified boolean expression from a given boolean expression?

The procedure for obtaining a simplified boolean expression is very similar to the procedure for obtaining a truth table from an expression. From the home page, click on the link that says "Build a simplified boolean expression from a boolean expression". At the prompt, type in your boolean expression, based on the convention rules that were described above, before clicking on the "Submit" button. Once BoolEngine has completed your request, the simplified result will appear on the screen.

All simplified boolean expressions are in the simplest configuration of SOP (sum of product) form.

Back To Top

The Waiting Queue

BoolEngine can only handle so many requests at a time. When using BoolEngine, each user's job is submitted to the BoolEngine computers one job at a time. Although BoolEngine can complete jobs relatively quickly, there's always a chance that a surge of requests may come in causing the computers to be unable to keep up with the demand. In such cases, your job will be placed in a queue. After submitting your job, you will be shown where your job is in the queue. As jobs are completed, your page will update automatically, allowing you to always know your place in line. After all jobs ahead of yours have completed, your job will complete automatically before displaying your result on the page as normal.

At any time, all users are allowed to see how many jobs BoolEngine is working on. This number is displayed on BoolEngine's home page in the top left corner.

Back To Top

One Job Per Browser

When you submit a job to BoolEngine, the machine keeps track of your job by assuming that you have only submitted one job using your current web browser. For this reason, users are only allowed to submit one job per browser.

If you want to submit more than one job at a time, it's still possible to do so. However, you won't be able to do it with the same browser. If you try to submit another job in a seperate tab of the same browser, BoolEngine will give you the option to cancel your current job. You may then either cancel the job in order to start a new one, or you may let your current job run until completion.

If you want to submit more than one job at a time, you may do so in many different ways. One way would be to use a different web browser. For instance, if you started one job with Firefox, you may be able to start a seperate job using Chrome, or Internet Explorer. Many operating systems allow users to switch to different user profiles. This is also another way that you may be able to submit another job while one is already running or is waiting in the queue. And, of course, you could always start another job by using a completely different computer altogether.

Back To Top

BoolEngine Limitations

BoolEngine is a powerful tool. However, as is the case with all tools, it does have limitations. These limitations are primarily due to the amount of time that it would take to complete extreme requests. Although limitations exist, you will find that BoolEngine has few limitations relative to the most practical scenarios that most users are likely to encounter.

BoolEngine's character convention rules state that only lower-case letters may be used to represent names for inputs. For this reason, users may think that they can submit expressions that contain as many as twenty-six inputs. Such a large number of inputs becomes impractical. For this reason, when submitting a boolean expression to be simplified, users are allowed no more than fourteen inputs. When building a truth table from a given boolean expression, users are allowed no more than seventeen inputs. And when submitting a truth table that will be used to obtain a simplified boolean expression, no more than fourteen inputs are allowed.

When approaching BoolEngine's limitations, please be mindful of how long certain processes may take. Based on the number of inputs, processing may take anywhere from seconds to several minutes.

The limitations of BoolEngine have been set with the goal of allowing users to wait no longer than ten minutes from the time that your job starts being processed (This doesn't include time that your job may wait in queue due to high demand). There's no job that is likely to finish in less than forty seconds, and most big jobs should finish in less than ten minutes. Forty seconds may seem like a long time for BoolEngine to process a simple job of as few as one, or two, inputs. However, this is due to the fact that BoolEngine is designed to be a power cruncher. Where it may seem to be inefficient with tiny jobs, it is very efficient with moderate-to-large ones.

If you have a special case that goes beyond BoolEngine's limitations, that doesn't mean that your task can't be completed. Although BoolEngine won't complete it directly, feel free to submit your case to me personally. Depending on your scenario, I can't promise results. However, you may simply have a case that would require several hours, or even days, to complete. With such a scenario, I may be open to taking on the task for a fee that we could both agree on. You can contact me at contact@BoolEngine.com with these, or any other concerns.

Back To Top

The Fifteen-Minute Rule

BoolEngine was built with Murphy's law in mind. Whatever can go wrong, will go wrong. Ideally every user would submit a job and wait for the job to finish. And in a perfect world, the BoolEngine computers would never go offline, and there would never be a transmission failure between your computer and the BoolEngine computers. But this isn't a perfect world, and such things are bound to happen. Because there are so many things that could go wrong, BoolEngine will spend a maximum of fifteen minutes on a single job before abandoning it. This ensures that one bad job won't halt the entire queue process.

BoolEngine should never take longer than ten minutes to complete a calculation or build a truth table. So if a job takes longer than fifteen minutes to complete, that means that something has gone wrong. Because of this, as a user, you are able to know whether or not BoolEngine is running smoothly. If you submit a job and your browser spends more than fifteen minutes on the processing page (not in the queue), then you know that something has gone wrong. BoolEngine will also know that something has gone wrong and your job will be abandoned. So if you ever spend more than fifteen minutes on the processing page, you may as well cancel your job and re-submit it at a later time.

The fifteen-minute rule also allows you to see if there have been frequent abandoned jobs. If you are waiting in the queue, and you notice that your queue number changes after fifteen minutes, then that means that the job that BoolEngine was working on, has just been abandoned and BoolEngine has moved on to the next job. So if you're far back in line, and you see that your number changes precisely every fifteen minutes, then it is likely that either the BoolEngine computers are down, or people are canceling their jobs by closing their browsers, rather than using the "cancel" button on the website.

If you ever choose to cancel a job, it's best that you always do so properly by clicking "cancel". This will ensure that other jobs aren't held up for fifteen minutes because you chose to abandon your job by simply closing your browser.

Back To Top

Job Cancellation Protocol

If you have ever canceled a job, while using BoolEngine, and then tried to immediately submit another one, you may have noticed something a bit peculiar. Your new job was probably placed in BoolEngine's queue.

This short section is designed to explain why something like this is likely to happen. It gives greater insight into how BoolEngine handles jobs.

Once you press the "submit" button on any of BoolEngine's pages, unless your job is placed in queue, it is immediately sent to the BoolEngine computers. Once the computer receives your job, it begins working on it right away. The machine has limited contact with the BoolEngine website, and it won't know that you've decided to cancel your job -- should you choose to cancel it. For this reason, it will keep working on your job until it completes it. It won't recognize that you have cancelled the job until it submits the completed result back to the website. As a result, any new jobs may have to wait until your first job completes, and may therefore end up in the queue.

What I have just described is normal operational procedure for BoolEngine. So should this happen, you now know that it is normal.

When submitting jobs, it's best to remember that your submission is being sent to another computer -- much like shipping a broken appliance off to a manufacturer in order for it to be repaired.

Back To Top

Disclaimer

BoolEngine is a useful tool that has been tested fairly well, and I feel completely confident using it for any of my designs. Although, having said that, BoolEngine is a tool that was created by man, and as always, no man-made tool is completely infallible. Should you use BoolEngine to design any sort of critical system, such as human safety failsafe systems, life support systems, or any other type of critical system, no one associated with BoolEngine is responsible for any negative repercussions that may occur.

Back To Top

Why Logic Fails

Prior to building BoolEngine, I had already wanted to own my own website. Someone once told me that a website is my own personal real estate on the internet -- a place where I can say, or offer, whatever I want. This idea sounded intriguing to me. BoolEngine is a direct result of that intrigue, and I am pleased to offer it to the world.

Over time, I've written different articles and have posted some of them on the web. Some of those articles were rejected by an article-hosting site due to the nature of my content. They simply didn't like what I had to say. Other times, I had to edit my articles and word them in such a way that was pleasing to the article-hosting website. What could I do? It was their website, and they made the rules.

I've posted content in online forums. Some of my content made it into the conversation, while other posts were omitted by moderators. What could I do? It was their website, and they made the rules.

BoolEngine is a functional website that offers an automated service. I chose to build this type of website so that it can exist without me having to update content all of the time; unlike an informative website, or a blog. However, I still have something to say, and am tired of being censored by other websites and their rules. For this reason, I have decided to include some of my articles on this website.

One article is entitled "Why Logic Fails". It is independent of BoolEngine, and you certainly don't have to read it, or know anything about it, in order to use BoolEngine. The article has philisophical content that is often highly controversial. If this sort of thing turns you off, then don't read it. Feel free to use BoolEngine to work on your truth tables and boolean expressions, and I continue to welcome you to my website.

Should you wonder why I'm choosing to offer an article, that has nothing to do with BoolEngine, on the BoolEngine website, it's because I'm content with owning a single website.

BoolEngine is my website -- my personal real estate on the internet. I offer my article because it has content that is important and worth sharing. If you would like to read it, then click here. Click here in order to read any of my other articles. In any case, thank you for using BoolEngine.

Back To Top

Why is BoolEngine so tempermental?

If you use BoolEngine for any length of time, you're bound to find that the site can be a bit tempermental. There may be times when you click on the "submit" button on a page, and nothing happens. At times, pages may fail to load correctly, or maybe even not at all. All of these problems relate to the difficulty of being able to find a good web host. Unfortunately, I'm beginning to believe that there is no such thing -- not for BoolEngine, anyway.

BoolEngine is currently being hosted by my third web host. I've used two previous web hosts, and both of them resulted in a website that is tempermental. How well the website functions is based on the amount of traffic that their server is experiencing. In short, web hosts tend to overcrowd their servers. They put as many accounts on a single server as they can. This allows them to save money. It also causes websites to function incorrectly. This is bound to happen when their server is expected to take on more work than it can handle.

My solution to this problem is simple. I need to become my own web host by running my own server. Prior to signing up with this latest web host, that is exactly what I tried to do. My plan was to host the BoolEngine website from the same location that houses the BoolEngine computers. Unfortunately, I have learned that the building won't easily allow this. I haven't given up on hosting BoolEngine independently, but it'll have to wait until I am able to move the BoolEngine computers to a different building. It's something that I intend to do, but as is the case with many large tasks, there's a financial obstacle that must be overcome. I intend to move as quickly as I can, but we all know how those things can go.

In the meantime, I've had to choose between hosting BoolEngine with another unreliable web host, or allowing the site to remain offline. I figure that a tempermental website is better than no website at all. I apologize, in advance, for any problems that may ensue because of this.

Back To Top