This file contains the formalisation of exercise 2.3 c and d which deals with simulations between NFAs. The exercise sheet is available at https://iccl.inf.tu-dresden.de/w/images/2/28/FS2025-Blatt-02.pdf.
How about the other direction - does language inclusion also imply a simulation between the NFAs recognising the languages? We can show that this is not true by giving a counterexample. In order to define NFAs we first need Fintypes for Q and Sigma. We cannot just use strings because there are infinitely many of those. Instead we use a subtype of String defined by a list of strings (statesList and sigma).
For our counterexample we will use 𝓜 and its powerset DFA 𝓜'. Their languages are equal but there is not simulation between 𝓜 and 𝓜'. Simulations are defined for NFAs so we convert 𝓜' back into an NFA 𝓜''.