Truth Tables for Android

...not only for geese!

The program

The sole purpose of this program is generating, and displaying, truth tables on mobile devices, notably mobile telephones. It will work with most Android devices. Trying out the program on an Android phone of your choice won't do any harm; if it proves not to work with the respective phone, just uninstall it, and, optionally, hope for a future version.

The free version supports all usual connectives of classical logic, that is negation, conjunction, (inclusive) disjunction, conditional (material implication), and biconditional (material equivalence), NAND, NOR, and XOR, as well as the constants 1 and 0 denoting truth and falsehood, respectively. A cool thing is that, besides the somewhat boring standard notation of logic, you may use Łukasiewicz's stream-lined, shiny Polish notation, too! Isn't that a deal?

And it doesn't stop here. If you are the down-to-earth, common-sense kind of person, you will find it reassuring that, by default, the program uses classical, two-valued, logic. But if you are more of the adventurous type, never stopping short of an adventure life may offer, you will be delighted to learn that Truth Tables for Android supports a number of non-classical, multi-valued systems of logic, too. Never enter a river twice, and two wrongs don't always make a right, so to speak!

Input examples

Infix notation Polish notation
P->(Q->P) CpCqp
(P->Q)->P CCpqp
~P v Q ANpq
(P & Q) v (P & R) AKpqKpr
(P & (Q v P)) & R KKpAqpr
((P>(Q>R))>((P>Q)>(P>R))) CCpCqrCCpqCpr

Usage

The main component of the user interface is the text field where the user may enter a single proposition (or a comma-separated list of propositions, see Combined Tables), be it in infix notation (the somewhat standard way of writing down propositions), or in Polish notation (the cool prefix notation developed by Łukasiewicz in the 1920s).

• When using a device with a full keyboard, you will probably enter the proposition using the keyboard.
• On a touch-style device, you will usually make use of the visual buttons labelled "P", "Q", and so on. There are buttons for a few propositional letters, and for the most important connectives. The button labelled with a red arrow pointing to the left is for deleting the most recently entered character, and, on a long press, for annihilating your whole input altogether. Finally, the "OK" button (the button with the friendly goose, or the button with the green check mark, you know), will submit your proposition causing the truth table to be generated.
• If your screen is too small for the application to show a NAND, a NOR, and a XOR button, you may insert a NAND by pressing the conjunction button for a long time. Equally, for inserting a NOR, press the disjunction button for a long time. In an equally equal way, you may enter the XOR by pressing the biconditional button for a long time.
• Note that the program offers its own set of buttons only for standard notation. For Polish notation, which uses standard characters (i.e., upper-case, and lower-case letters), please use the Android keyboard.
• You do not need to tell the program which notation you are using - it will find this out on its own. The "notation" setting in the main settings dialog only determines how the program displays propositions.

When finished entering, a truth table will be generated from the proposition when you select the "OK" button (mentioned above). Should you ever tire of looking at the generated truth-table, feel free to use the Android Back button of your device for returning to the input field, and entering another proposition.

Configuration

The application is highly configurable. For example, you may choose the font size, the verbosity of the output (see the next chapter, Intermediate results), the sort order (descending from T to F, or ascending from F to T), the graphical layout of the truth table (with, or without, separator lines), its orientation (portrait, landscape, or automatic, depending on how the user holds the device in his, or her, or its claw). To change these, and many other, settings, open the, well, settings from the start view (i.e. the view where you enter your proposition).

Intermediate results

By default, obviously, the program shows the truth-values of the whole proposition. Since version 2.0 ("Deep-flying Grey Goose"), there is the optional feature to display all intermediate results, too. This option is called "detailed truth-table" (see the screenshot on the right). It is especially useful for students wanting to check every single step of their homework, or wanting to find out where the mistake leading to a wrong result originates.

• In the global settings dialog, you may permanently activate the "detailed truth-table" feature.
• If pressing the OK button (the button with the friendly goose, or with the green check mark, y'know) for a long time, the program will show the truth table with the global "detail" setting inverted: If you have left it at its default, "results only", pressing the OK button for a long time will show the detailed truth table. If, on the other hand, the global setting is "detailed", a long press of "OK" will show the simple, result-only, truth-table.
• While displaying a result-only truth-table, you may temporarily switch to, or from, the detailed form in the result-settings dialog.
• Note that, in the detailed truth-table, the final result is highlighted with a bold font, and with red colour. (This holds true for Peano-Russell notation. For Polish notation, there is no need for colouring, since, with this cool notation, the result is always shown first, i.e., leftmost.)

If this sounds confusing, just play around with the application, and remember that there are two ways of pressing the "OK" button: the normal, short press, and the long press.

Combined tables

From version 2.1 on, you may enter more than one proposition at a time, separating them with commas. In this case, the program will show a combined truth-table for all propositions entered. This may be handy e.g. for students who want to check the propositional validity of an argument.

Note that you may enter the comma with the soft keys of the program by pressing the negation touch button for a long time. Of course, the Android keyboard, or any hardware keyboard, will work as well.

Infix notation

Note: Your browser may be unable properly to display some of the logical connectives used below. Of course this restriction will not apply to the program when installed and running on your personal computing device.

Propositional letters
A through U, and W through Z, case insensitive; note that the lower-case letter "v" is reserved for disjunction (see below) and should not be used for a propositional constant. Optionally, you may number your propositional letters, thereby coming up with strings like P1, Q12, or R42.
Negation
~ (tilde), - (dash), ¬
Conjunction
& (ampersand), ^, ∧
Disjunction
v (the lower-case letter), |, ∨
Conditional
>, ->, =>, -->, ==>, →
Biconditional
=, <=>, ↔
Brackets
As usual, the rounded brackets, (, and ), may be used for grouping expressions.
Spaces
In order to improve readability, the user may freely add space characters into their proposition.

Polish Notation

Propositions in Polish notation are restricted to Łukasiewicz's own connectives N, K, A, C, and E. You have to user lower-case letters as propositional constants, but not the letter "v", since it denotes infix disjunction (see above). If you want to use connectives other than Łukasiewicz's, you can easily build them up from Łukasiewicz's, by e.g. using NA for the Peirce function (NOR), NK for the Sheffer function (NAND), or NE for the exclusive disjunction (XOR).

Note that the program offers its own set of buttons only for standard notation. For Polish notation, which uses standard characters (i.e., upper-case, and lower-case letters), please use the Android keyboard. You do not need to tell the program which notation you are using - it will find this out on its own. The "notation" setting in the main settings dialog only determines how the program displays propositions.

Privacy/Data Protection

The Truth Table App for Android does not collect, or transfer, any data at all. Neither does it show any advertisements. Hence, it does not contain any third-party code that might collect any data at all.

Feedback

Your questions, support, and, if positive, feedback will be most welcome. Please direct your verbal feedback to gottschall@gmx.de.

Version History

3.43
Cleaning up layouts (please report any problem with exotic devices). This leads to NAND and NOR being more prominent for most screen sizes (requested by a user). And, since a user explicitly requested this feature, the program accepts "*" and "+" as an alternative way of entering conjunction and disjunction, respectively.
3.421
maintenance release with minor changes (minor code optimization, plus: improving the code hiding the Honeycomb on-screen keybord)
3.42
Screen size permitting, the on-screen keyboard now shows a separate comma key, too (for entering more than one proposition at a time). Plus: improving some error messages of the lexical analyzer.
3.4
The application optionally shows separator lines between the most important columns of a truth-table. This is most useful if a truth-table is built for more than one proposition at a time. (requested by a user)
3.251
• The touch buttons for propositional letters now optionally show the letters A, B, C,... instead of P, Q, R,... (requested by a user).
• Screen size permitting, there are now separate touch buttons for NAND, NOR, and XOR.
• On higher resolution screens, you may choose between a friendly goose, and the familiar green check mark, for the "OK" button.
• improved Honeycomb support
• application may be stored on the SD card ("app2sd")
3.2
adapting to Honeycomb; addressing a minor duck; (trying to) clarify the difference between the Settings (which are permanent) and the properties of the current truth-table (which are, well, properties of the current truth-table)
3.1
completely reorganizing the settings of the application (they are now more Android-like); plus: adding the option to show classical truth values as letter ("T", and "F", respectively)
3.020001
This is purely a maintenance release, working around an Android bug (issue 4936) that, under rare conditions, would cause the application to close when changing the orientation with the settings dialog open.
3.01002
With this version, there is a setting for locking screen orientation either to portrait, or to landscape. This feature was requested by a user.
3.0
This is a major rework of the inner workings, leading to a smoother and virtually limitless user experience (there are no more relevant limits to the size of the truth-table). The downside is that testing had to start from zero. Please report any bugs you might come by, and please give feedback if you don't like the behavior of the new truth-table interface.
2.101
Fixing a minor bug: When entering a list of propositions, a certain class of syntax errors did not get detected but was ignored.
2.1
Now you may enter more than one proposition at a time (separated by commas). In this case, the program will show an integrated truth-table for all the propositions.
2.051
• improving the layout for tablets
• adding an "Exit" entry in the main menu - though not very Android-like, this may be useful for devices with a very low amount of memory (requested by the user of such a device)
• one user of Android 1.6 reported an occurrence of the infamous Android WindowManager\$BadTokenException exception. If upgrading your Android version is not an option, 2.051 may work around this problem by no longer calling getApplicationContext()
2.05
the Android soft keyboard may be turned off in the settings (requested by a user).
2.04
support for older Android versions (from 1.6)
2.03
more attractive display of the history of entered propositions - purely cosmetical
2.02
adding a history function for the propositions entered (requested by a user)
2.01
additional level of detail: optionally, the truth table shows intermediate results of complex sub-expressions, but not of terminals (this feature has been requested by an estimated user)
2.0 ("Deep-flying Grey Goose")
• optionally showing all intermediate results ("detailed truth-table")
• internal optimizations
1.000020101
• adding NAND, NOR, and XOR (completely free!) - a long press at the buttons for conjunction, disjunction, and equivalence will enter NAND, NOR, and XOR, respectively
1.0000201
• persistently saving the global settings (notation, font size, and logical system) and the most recently entered proposition (feature requested by an estimated user)
• a long press on the Delete button clears the whole input field
• showing a progress dialog (though this will be hardly seen, because a truth-table is quickly generated - but maybe there are users with especially slow devices)
1.00002
fixing a bug in the English version: Due to an entry missing from the list of the English string resources, the application was unable to open the main settings dialog...
1.00001
generating a much more space-saving version of the APK file
1.0 (Gracious Grey Goose)
first version