fact: Fixpoint check_ports c (ts : seq {ffun port -> port * {set port}}) := match ts with | [::] => true | t :: ts => [forall i in ~: border (nodes c), t i == (def_port, set0)] && let b := enum (border (nodes c)) in let d := map t b in [&& all (fun i => i.1 \in i.2 :\: graph_dom (conodes c)) d, uniq (unzip1 d), trivIset ([set x in unzip2 d] :|: conodes c) & let c' := step_it c d in check_ports (switch c') ts] end.
imports: mathcomp(all_ssreflect ssralg fingroup zmodp poly ssrnum) mathcomp(matrix perm) ssr_ext ssralg_ext fdist subgraph_partition tanner