fact: Definition merge_DFAs A B := let s := max (pi0 (size A)) (pi1 (size B)) in let k := max_label A in let delta := (fun a p => match pimatch p with | inl p => pi0 (DFA.delta A a p) | inr p => pi1 (DFA.delta B a p) end) in let finaux := StateSet.fold (fun x acc => StateSet.add (pi0 x) acc) (finaux A) (StateSet.fold (fun x acc => StateSet.add (pi1 x) acc) (finaux B) StateSet.empty) in DFA.mk s delta 0 finaux k.
imports: ATBR(Common) ATBR(Classes) ATBR(Graph) ATBR(Monoid) ATBR(SemiLattice) ATBR(SemiRing) ATBR(KleeneAlgebra) ATBR(MxGraph) ATBR(MxSemiLattice) ATBR(MxSemiRing) ATBR(MxKleeneAlgebra) ATBR(DKA_Definitions)