Theorem: NFA.fromNFA_lang_eq_lang (FormalSystems/Chomsky/Regular/PowersetConstruction.lean)

State before:
α qs : Type
inst✝³ : DecidableEq α
inst✝² : DecidableEq qs
inst✝¹ : DecidableEq α
inst✝ : DecidableEq qs
M : NFA α qs
⊢ DFA.AcceptedLanguage (DFA.fromNFA M) = AcceptedLanguage M
Tactic:
apply Set.ext
State after:
case h
α qs : Type
inst✝³ : DecidableEq α
inst✝² : DecidableEq qs
inst✝¹ : DecidableEq α
inst✝ : DecidableEq qs
M : NFA α qs
⊢ ∀ (x : Word { x // x ∈ (DFA.fromNFA M).Z }), x ∈ DFA.AcceptedLanguage (DFA.fromNFA M) ↔ x ∈ AcceptedLanguage M

State before:
case h
α qs : Type
inst✝³ : DecidableEq α
inst✝² : DecidableEq qs
inst✝¹ : DecidableEq α
inst✝ : DecidableEq qs
M : NFA α qs
⊢ ∀ (x : Word { x // x ∈ (DFA.fromNFA M).Z }), x ∈ DFA.AcceptedLanguage (DFA.fromNFA M) ↔ x ∈ AcceptedLanguage M
Tactic:
intros
State after:
case h
α qs : Type
inst✝³ : DecidableEq α
inst✝² : DecidableEq qs
inst✝¹ : DecidableEq α
inst✝ : DecidableEq qs
M : NFA α qs
x✝ : Word { x // x ∈ (DFA.fromNFA M).Z }
⊢ x✝ ∈ DFA.AcceptedLanguage (DFA.fromNFA M) ↔ x✝ ∈ AcceptedLanguage M

State before:
case h
α qs : Type
inst✝³ : DecidableEq α
inst✝² : DecidableEq qs
inst✝¹ : DecidableEq α
inst✝ : DecidableEq qs
M : NFA α qs
x✝ : Word { x // x ∈ (DFA.fromNFA M).Z }
⊢ x✝ ∈ DFA.AcceptedLanguage (DFA.fromNFA M) ↔ x✝ ∈ AcceptedLanguage M
Tactic:
constructor
State after:
case h.mp
α qs : Type
inst✝³ : DecidableEq α
inst✝² : DecidableEq qs
inst✝¹ : DecidableEq α
inst✝ : DecidableEq qs
M : NFA α qs
x✝ : Word { x // x ∈ (DFA.fromNFA M).Z }
⊢ x✝ ∈ DFA.AcceptedLanguage (DFA.fromNFA M) → x✝ ∈ AcceptedLanguage M

case h.mpr
α qs : Type
inst✝³ : DecidableEq α
inst✝² : DecidableEq qs
inst✝¹ : DecidableEq α
inst✝ : DecidableEq qs
M : NFA α qs
x✝ : Word { x // x ∈ (DFA.fromNFA M).Z }
⊢ x✝ ∈ AcceptedLanguage M → x✝ ∈ DFA.AcceptedLanguage (DFA.fromNFA M)

State before:
case h.mp
α qs : Type
inst✝³ : DecidableEq α
inst✝² : DecidableEq qs
inst✝¹ : DecidableEq α
inst✝ : DecidableEq qs
M : NFA α qs
x✝ : Word { x // x ∈ (DFA.fromNFA M).Z }
⊢ x✝ ∈ DFA.AcceptedLanguage (DFA.fromNFA M) → x✝ ∈ AcceptedLanguage M

case h.mpr
α qs : Type
inst✝³ : DecidableEq α
inst✝² : DecidableEq qs
inst✝¹ : DecidableEq α
inst✝ : DecidableEq qs
M : NFA α qs
x✝ : Word { x // x ∈ (DFA.fromNFA M).Z }
⊢ x✝ ∈ AcceptedLanguage M → x✝ ∈ DFA.AcceptedLanguage (DFA.fromNFA M)
Tactic:
apply DFA_fromNFA_lang_subs_lang
State after:
case h.mpr
α qs : Type
inst✝³ : DecidableEq α
inst✝² : DecidableEq qs
inst✝¹ : DecidableEq α
inst✝ : DecidableEq qs
M : NFA α qs
x✝ : Word { x // x ∈ (DFA.fromNFA M).Z }
⊢ x✝ ∈ AcceptedLanguage M → x✝ ∈ DFA.AcceptedLanguage (DFA.fromNFA M)

State before:
case h.mpr
α qs : Type
inst✝³ : DecidableEq α
inst✝² : DecidableEq qs
inst✝¹ : DecidableEq α
inst✝ : DecidableEq qs
M : NFA α qs
x✝ : Word { x // x ∈ (DFA.fromNFA M).Z }
⊢ x✝ ∈ AcceptedLanguage M → x✝ ∈ DFA.AcceptedLanguage (DFA.fromNFA M)
Tactic:
apply lang_subs_DFA_fromNFA_lang
State after:
no goals