fact: Fixpoint canonize (c:regexp) : canonical_regexp := match c with | regexp.Void => CVoid | regexp.Eps => CEps | regexp.Dot => CDot | Atom n => CAtom n | Star c' => mkStar (canonize c') | Plus c1 c2 => mkPlus (canonize c1) (canonize c2) | And c1 c2 => mkAnd (canonize c1) (canonize c2) | Conc c1 c2 => mkConc (canonize c1) (canonize c2) | Not c1 => mkNot (canonize c1) end.
imports: Coq(RelationClasses Setoid Morphisms) HB(structures) mathcomp(ssreflect ssrfun ssrbool eqtype ssrnat seq fintype) mathcomp(bigop path) RegLang(languages) RegexpBrzozowski(glue regexp finite_der equiv)