Proof Strategy for Existence of Uncomputable Functions - 8.2 | 8. Uncomputable Functions | Discrete Mathematics - Vol 2
K12 Students

Academics

AI-Powered learning for Grades 8–12, aligned with major Indian and international curricula.

Professionals

Professional Courses

Industry-relevant training in Business, Technology, and Design to help professionals and graduates upskill for real-world careers.

Games

Interactive Games

Fun, engaging games to boost memory, math fluency, typing speed, and English skills—perfect for learners of all ages.

8.2 - Proof Strategy for Existence of Uncomputable Functions

Enroll to start learning

You’ve not yet enrolled in this course. Please enroll for free to listen to audio lessons, classroom podcasts and take practice test.

Practice

Interactive Audio Lesson

Listen to a student-teacher conversation explaining the topic in a relatable way.

Understanding Computable Functions

Unlock Audio Lesson

0:00
Teacher
Teacher

Let's start with the definition of computable functions. A function is computable if there exists an algorithm that can produce an output for every valid input. Can anyone give me an example?

Student 1
Student 1

How about the function that adds two numbers together?

Teacher
Teacher

Excellent! Addition is a perfect example of a computable function. Now, can someone explain what an uncomputable function might be?

Student 2
Student 2

Isn't it a function for which no program can be written to compute every possible input?

Teacher
Teacher

Exactly! Uncomputable functions are those that we cannot solve with any algorithm. This brings us to our proof strategy for proving their existence.

Proof by Cardinality

Unlock Audio Lesson

0:00
Teacher
Teacher

We know that the set of all valid programs is countable. What does that mean for us?

Student 3
Student 3

It means we can list all programs, even if there's an infinite number of them.

Teacher
Teacher

Correct! Now, let's think about the collection of all functions from positive integers to a finite set. What do we need to show about that set?

Student 4
Student 4

That it's uncountable, right?

Teacher
Teacher

Yes! If we can prove that, we will conclude that there are more functions than programs, implying the existence of uncomputable functions.

Injective Mapping

Unlock Audio Lesson

0:00
Teacher
Teacher

To show that the set of functions from integers to a finite set is uncountable, we'll create an injective mapping from the set of real numbers between 0 and 1. What does injective mean here?

Student 1
Student 1

It means every function maps to a unique real number, without overlaps.

Teacher
Teacher

Exactly! Each real number corresponds to a unique function, based on its decimal representation. Can anyone explain what this mapping looks like?

Student 2
Student 2

We would take the digits of the real number to establish the output of the function for each input.

Teacher
Teacher

Great! This means that no two different numbers will lead to the same function, which proves our point. Let’s summarize what we’ve learned.

Conclusions on Uncomputable Functions

Unlock Audio Lesson

0:00
Teacher
Teacher

In conclusion, we’ve established that there are functions that no computer program can compute. Why is this significant, particularly in computer science?

Student 3
Student 3

It shows that there are limits to what computers can achieve!

Teacher
Teacher

Exactly! It highlights the boundary between what can be computed and what can't, which is a foundational understanding in computer science.

Student 4
Student 4

So, even with limitless resources, some problems remain unsolvable?

Teacher
Teacher

Yes, that's correct! Remember this as we proceed, it’s a crucial aspect of computational theory.

Introduction & Overview

Read a summary of the section's main ideas. Choose from Basic, Medium, or Detailed.

Quick Overview

This section discusses computable and uncomputable functions, outlining the proof strategy for the existence of uncomputable functions through cardinality arguments.

Standard

In this section, we explore the definitions of computable and uncomputable functions. The proof strategy demonstrates that there are more functions from positive integers to finite sets than there are valid programs, establishing the existence of uncomputable functions. The lecture builds on Cantor's diagonalization argument to illustrate these concepts.

Detailed

Detailed Summary

This section focuses on the distinction between computable and uncomputable functions in the realm of discrete mathematics and computer science. A computable function is one for which an algorithm or computer program can be written that can output the value of the function for any input from its domain. Conversely, an uncomputable function cannot be solved algorithmically; that is, no program can be constructed that will produce an output for every input.

To establish the existence of uncomputable functions, the proof involves demonstrating that the set of all valid programs is countable, while the set of all possible functions from positive integers to a finite range is uncountable.

Proof Strategy Outline:

  • Known Facts: Previous lectures established that the set of valid programs in any programming language is countable.
  • Cardinality Argument: Each valid program computes one function, prompting the exploration of the cardinality of function sets.
  • Injective Mapping: By deriving an injective mapping from the uncountable set of real numbers (in the range [0,1)) to the set of all functions from positive integers to finite sets, we show that the latter is also uncountable.

Significance:

This proof highlights limitations in computational theory, suggesting that while computers can handle many tasks, there are inherent limitations on what they can compute.

Youtube Videos

One Shot of Discrete Mathematics for Semester exam
One Shot of Discrete Mathematics for Semester exam

Audio Book

Dive deep into the subject with an immersive audiobook experience.

Definition of Computable Functions

Unlock Audio Book

Signup and Enroll to the course for listening the Audio Book

So what exactly are uncomputable functions; so they are some special type of functions. So say I have function f defined from a set X to a set Y then I will call the function f to be computable if there exists some computer program in a programming language which can compute or give you the value of this function for every possible input from the domain of that function. So mind it I am not focusing here on the running time of the computer program or the resources utilized for the program to give you the value or the output of that function.
I am interested whether there exists a program or not which can give you can give you the output of that function for every input from the domain. If you can write a program in the programming language for such a function I will call that function to be a computable function. Otherwise I will call it uncomputable function. So as per the above definition a function which is not computable will be called an uncomputable function.

Detailed Explanation

This section defines computable functions in the context of programming. A function is considered computable if a program exists that can calculate its output for any input from its domain. The focus is not on how fast the program runs or the resources it uses, but rather if such a program can be created at all. If no such program can exist to compute the function for every input, it is labeled as uncomputable.

Examples & Analogies

Think of a recipe as a function. A computable recipe means you can follow the steps to consistently produce the dish every time (like a program running correctly). An uncomputable recipe, on the other hand, would be one where, no matter how hard you try, the steps make no coherent dish (like trying to compute something with no possible program).

The Strategy to Prove Uncomputability

Unlock Audio Book

Signup and Enroll to the course for listening the Audio Book

So what we now want to prove is that there indeed exists uncomputable function that means it does not matter how much resources time and memory space you provide. And write down a program there always exist some function such that you cannot write down a program respective of resources allowed to compute the output of that function for every possible input. And what will be proof strategy that we will follow to prove this theorem?
So we will begin with some known fact; so just recall that in one of our earlier lectures we proved that the set of all valid programs in any programming language is countable. That means we can enumerate them even though they are infinitely many valid programs. When I say programs I mean to say the valid programs; which complies and give you an output. That means it has a begin instruction and an end instruction and a sequence of arbitrary number of instructions in between the begin and end instructions and it complies and it gives you an output.

Detailed Explanation

The lecturer intends to show the existence of uncomputable functions, asserting that no matter the resources available (time, memory), there will always be functions that cannot be programmed. The proof strategy starts with a known fact: all valid programs in a programming language are countable, meaning we can create a list of them, even if it is infinite. Valid programs are defined as those that have a clear start and end, and can produce outputs.

Examples & Analogies

Imagine trying to create a library of all books written in a particular language. If every potential book were counted, we'd realize there are many more stories to tell than books ever written. Similarly, the library of computer programs can be large, but there will always be stories (functions) that have never been told, representing uncomputable functions.

Cardinality of Functions vs. Programs

Unlock Audio Book

Signup and Enroll to the course for listening the Audio Book

Now any program from your collection of valid programs can compute a single function from this collection F. We cannot have the same program which gives you the value of both, function f as well as function f . Because function f and function f will have different characteristics how can it be possible that you have a common program P which simultaneously gives you the output of function f as well as it gives you the function output for f.
You cannot have such special programs; that means if we prove this claim then based on the known fact we come to the conclusion that you have some function in this collection of all possible functions for which you cannot find a matching program in the list of all valid programs in your programming language.

Detailed Explanation

The text explains that each program can only compute one function from the collection of all possible functions. Thus, no single program can compute two different functions since their definitions and outputs will differ. This leads to the conclusion that there exist functions that cannot be computed by any program on our list, further supporting the existence of uncomputable functions.

Examples & Analogies

Consider a custom gadget designed to perform a specific task, like making ice cream. If you had another gadget designed to make juice, the ice cream machine wouldn't be able to make juice and vice versa. Each gadget (program) has a unique task (function) it can perform, reinforcing that not every task can be handled by a single gadget or program.

Understanding Non-Constructive Proofs

Unlock Audio Book

Signup and Enroll to the course for listening the Audio Book

So what is the proof strategy we are using here we are actually arguing about; we are giving here a non-constructive proof. Just to recall what is a non-constructive proof? Non-constructive proofs are used for proving existentially quantified statements. So this statement is an existentially quantified statement because it says that there exists at least one uncomputable function.
And we are logically arguing that indeed one such function exist we are not giving a concerte function for which you can never write a function. We are logically arguing the existence of such a function so that is why this is a non-constructive proof here.

Detailed Explanation

The text discusses the nature of the proof being argued. This is a non-constructive proof, which is a type of argument used to demonstrate that something exists without showing a specific example. Here, the claim is that at least one uncomputable function exists, and while an exact function isn't specified, logical reasoning suggests such a function must exist.

Examples & Analogies

Imagine you are told there is a treasure hidden in a vast jungle. No one gives you the exact location (a constructive proof), but they provide reasoning based on ancient maps that such a treasure exists. You become convinced of its existence purely based on the logical explanations, similar to how a non-constructive proof works.

Conclusion of the Discussion

Unlock Audio Book

Signup and Enroll to the course for listening the Audio Book

That means if I go back to the previous slide in the proof strategy I have proved my claim that means you have more number of functions than the number of programs which you can write in a programing language. And since each program can give you the output of only a single function from the set of all possible functions you have more functions that the number of programs.
And hence here are some functions for which you do not have a corresponding matching program and that is why you do have uncomputable functions that exist. So that is a very interesting theorem because generally we believe that using computers we can compute anything.

Detailed Explanation

The lecturer summarizes the proof: there are more functions than computable programs available, leading to the existence of uncomputable functions. Since every program corresponds to a single function, if the number of functions exceeds that of the programs, it confirms some functions are uncomputable. This serves as a reminder that not everything can be computed by machines.

Examples & Analogies

Consider the limits of a car's speed—as it can only go so fast and thus can't reach every destination in an instant. In a similar way, while computers and programs can perform countless calculations, they cannot solve every possible problem effectively or find all outputs, revealing limitations in computation.

Definitions & Key Concepts

Learn essential terms and foundational ideas that form the basis of the topic.

Key Concepts

  • Computable Functions: Functions that can be calculated by a program.

  • Uncomputable Functions: Functions for which no program can provide an output for every input.

  • Countable vs. Uncountable Sets: Understanding the difference is key to proving the existence of uncomputable functions.

  • Injective Mapping: A method to establish the uncountability of function sets.

  • Cardinality: A fundamental concept that helps classify sets based on the number of elements.

Examples & Real-Life Applications

See how the concepts apply in real-world scenarios to understand their practical implications.

Examples

  • An example of a computable function is the addition of two integers, as it can be easily programmed to produce a result for any pair of integers.

  • A well-known example of an uncomputable function is the Halting Problem, where no program can determine whether another program will finish running or run forever.

Memory Aids

Use mnemonics, acronyms, or visual cues to help remember key information more easily.

🎵 Rhymes Time

  • If a function's computable, a program can flow, / But if not computable, it won't even show.

📖 Fascinating Stories

  • A programmer meets a wizard who can calculate any number, but there exists a mysterious function that even the wizard cannot compute. This illustrates the mystery of uncomputable functions.

🧠 Other Memory Gems

  • C-U-C: Computable (C), Uncomputable (U), Counts (C) - remember that some functions count and some simply can't!

🎯 Super Acronyms

P.U.C. - Programs are countable (P), Uncomputable functions (U), and Cardinality is key (C).

Flash Cards

Review key concepts with flashcards.

Glossary of Terms

Review the Definitions for terms.

  • Term: Computable Function

    Definition:

    A function for which a computer program can produce an output for every valid input.

  • Term: Uncomputable Function

    Definition:

    A function that cannot be solved by any algorithm or computer program.

  • Term: Countable Set

    Definition:

    A set that can be enumerated or listed, even if it is infinite.

  • Term: Uncountable Set

    Definition:

    A set that cannot be enumerated or listed, having a cardinality greater than that of the natural numbers.

  • Term: Injective Mapping

    Definition:

    A function that maps distinct elements to distinct images.

  • Term: Cardinality

    Definition:

    A measure of the number of elements in a set.