fact: Definition g_dot1 n m (x: guard n m): forall p, guard m p -> guards n p := match x with | g_pred a => fun p y => match y with | g_pred b => if eqb a b then [g_pred a] else [] | g_elem b e c => if eqb a b then [g_elem b e c] else [] end | g_elem a e b => fun p y => match y with | g_pred c => fun e => if eqb b c then [g_elem a e b] else [] | g_elem c f d => fun e => if eqb b c then [g_elem a (e⋅g_atom _ b⋅f) d] else [] end e end%list.
imports: Coq.PArith.BinPosDef denum lset sums normalisation kat ka_completeness untyping regex gregex lsyntax syntax lang glang boolean atoms