fact: Fixpoint try_one (s: list nat) (c: clause) (cs: clauses) (f: list nat -> clauses -> option (list nat)) {struct c}: option (list nat) := match c with nil => None | (L p z) as k:: c1 => let s1 := update p z s in let cs1 := clauses_update k (anti_literals k) cs in match f s1 cs1 with None => try_one s c1 cs f | Some c1 => Some c1 end end.
imports: List UList Permutation Div OrderedList ListOp Lia