fact: Definition SSNI_derived (t : table) (v : @Variation State) : Checker := let '(V st1 st2) := v in let '(St _ _ _ (_@l1)) := st1 in let '(St _ _ _ (_@l2)) := st2 in match @decOpt (IndistState st1 st2) _ 5 with | Some true => match l1, l2 with | L,L => match exec t st1, exec t st2 with | Some st1', Some st2' => (checker (@decOpt (IndistState st1' st2') _ 5)) | _, _ => 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 whenFail ("Initial states: " ++ nl ++ show_pair st1 st2 ++ nl ++ "Final states: " ++ nl ++ show_pair st1' st2' ++nl) (checker (@decOpt (IndistState st1' st2') _ 5)) else if is_atom_low (st_pc st1') then whenFail ("States: " ++ nl ++ show_pair st2 st2' ++ nl ) (checker (@decOpt (IndistState st2 st2') _ 5)) else whenFail ("States: " ++ nl ++ show_pair st1 st1' ++ nl ) (checker (@decOpt (IndistState st1 st1') _ 5)) | _, _ => checker rejected end | H,_ => match exec t st1 with | Some st1' => whenFail ("States: " ++ nl ++ show_pair st1 st1' ++ nl ) (checker (@decOpt (IndistState st1 st1') _ 5)) | _ => checker rejected end | _,H => match exec t st2 with | Some st2' => whenFail ("States: " ++ nl ++ show_pair st2 st2' ++ nl ) (checker (@decOpt (IndistState st2 st2') _ 5)) | _ => checker rejected end end | _ => checker rejected end.
imports: QuickChick(QuickChick) List QuickChick.ifcbasic(Machine Printing Generation Indist DerivedGen) Coq.Strings.String