Transport for Closure Predicates #
This file records that the standard language-class closure predicates are extensional: they transport across pointwise equivalence of language classes.
theorem
ClosedUnderHomomorphism_of_iff
{isP isQ : {α : Type} → [Fintype α] → Language α → Prop}
(hiff : ∀ {β : Type} [inst : Fintype β] (L : Language β), isP L ↔ isQ L)
:
(ClosedUnderHomomorphism fun {α : Type} [Fintype α] => isP) → ClosedUnderHomomorphism fun {α : Type} [Fintype α] => isQ
Homomorphism closure is invariant under pointwise equivalence of finite-alphabet-indexed language classes.
theorem
ClosedUnderEpsFreeHomomorphism_of_iff
{isP isQ : {α : Type} → [Fintype α] → Language α → Prop}
(hiff : ∀ {β : Type} [inst : Fintype β] (L : Language β), isP L ↔ isQ L)
:
(ClosedUnderEpsFreeHomomorphism fun {α : Type} [Fintype α] => isP) →
ClosedUnderEpsFreeHomomorphism fun {α : Type} [Fintype α] => isQ
Epsilon-free homomorphism closure is invariant under pointwise equivalence of finite-alphabet-indexed language classes.
theorem
ClosedUnderInverseHomomorphism_of_iff
{isP isQ : {α : Type} → [Fintype α] → Language α → Prop}
(hiff : ∀ {β : Type} [inst : Fintype β] (L : Language β), isP L ↔ isQ L)
:
(ClosedUnderInverseHomomorphism fun {α : Type} [Fintype α] => isP) →
ClosedUnderInverseHomomorphism fun {α : Type} [Fintype α] => isQ
Inverse-homomorphism closure is invariant under pointwise equivalence of finite-alphabet-indexed language classes.
theorem
ClosedUnderSubstitution_of_iff
{isP isQ : {α : Type} → [Fintype α] → Language α → Prop}
(hiff : ∀ {β : Type} [inst : Fintype β] (L : Language β), isP L ↔ isQ L)
:
(ClosedUnderSubstitution fun {α : Type} [Fintype α] => isP) → ClosedUnderSubstitution fun {α : Type} [Fintype α] => isQ
Substitution closure is invariant under pointwise equivalence of finite-alphabet-indexed language classes.