How to check if a DFA satisfies a specification (SUB_DFA)!
Easy Theory
Here we show that it is decidable to check if a DFA satisfies a specification, given by another DFA. We reduce the problem to determining if one DFA accepts a string that the other does not. Then, this is equivalent to applying the product construction and determining if that resulting DFA accepts anything. Then we run the decider for E_DFA on that DFA.
Patreon: https://www.patreon.com/easytheory Facebook: https://www.facebook.com/easytheory/ Twitter: https://twitter.com/EasyTheory
If you like this content, please consider subscribing to my channel: https://www.youtube.com/channel/UC3VY6RTXegnoSD_q446oBdg?sub_confirmation=1
▶ADDITIONAL QUESTIONS◀
- Would this work if the specification is a CFG or PDA?
- Would this work if the given machine was a PDA, and the specification was a DFA?
▶SEND ME THEORY QUESTIONS◀ ryan.e.dougherty@icloud.com
▶ABOUT ME◀ I am a professor of Computer Science, and am passionate about CS theory. I have taught over 12 courses at Arizona State University, as well as Colgate University, including several sections of undergraduate theory.
▶ABOUT THIS CHANNEL◀ The theory of computation is perhaps the fundamental theory of computer science. It sets out to define, mathematically, what exactly computation is, what is feasible to solve using a computer, and also what is not possible to solve using a computer. The main objective is to define a computer mathematically, without the reliance on real-world computers, hardware or software, or the plethora of programming languages we have in use today. The notion of a Turing machine serves this purpose and defines what we believe is the crux of all computable functions.
This channel is also about weaker forms of computation, concentrating on two classes: regular languages and context-free languages. These two models help understand what we can do with restricted means of computation, and offer a rich theory using which you can hone your mathematical skills in reasoning with simple machines and the languages they define.
However, they are not simply there as a weak form of computation--the most attractive aspect of them is that problems formulated on them are tractable, i.e. we can build efficient algorithms to reason with objects such as finite automata, context-free grammars and pushdown automata. For example, we can model a piece of hardware (a circuit) as a finite-state system and solve whether the circuit satisfies a property (like whether it performs addition of 16-bit registers correctly). We can model the syntax of a programming language using a grammar, and build algorithms that check if a string parses according to this grammar.
On the other hand, most problems that ask properties about Turing machines are undecidable. This Youtube channel will help you ... https://www.youtube.com/watch?v=SvrCSZXESA8
20757713 Bytes