fact: Definition SSNI (t : table) (v : @Variation State) : Checker := let '(V st1 st2) := v in let '(St _ _ _ (_@l1)) := st1 in let '(St _ _ _ (_@l2)) := st2 in match lookupInstr st1 with | Some i => collect (show i) ( if indist st1 st2 then match l1, l2 with | L,L => match exec t st1, exec t st2 with | Some st1', Some st2' => (checker (indist st1' st2')) | _, _ => checker rejected end | H, H => match exec t st1, exec t st2 with | Some st1', Some st2' => if is_atom_low (st_pc st1') && is_atom_low (st_pc st2') then (checker (indist st1' st2') ) else if is_atom_low (st_pc st1') then (checker (indist st2 st2')) else (checker (indist st1 st1')) | _, _ => checker rejected end | H,_ => match exec t st1 with | Some st1' => (checker (indist st1 st1')) | _ => checker rejected end | _,H => match exec t st2 with | Some st2' => (checker (indist st2 st2')) | _ => checker rejected end end else checker rejected ) | _ => checker rejected end.
imports: QuickChick(QuickChick) List QuickChick.ifcbasic(Machine Printing Generation Indist DerivedGen) Coq.Strings.String