Theory IsaSAT_VMTF_State_LLVM

theory IsaSAT_VMTF_State_LLVM
  imports IsaSAT_VMTF_LLVM IsaSAT_Setup_LLVM
begin
hide_const (open) NEMonad.ASSERT NEMonad.RETURN
  
lemma find_decomp_wl_st_int_alt_def:
  find_decomp_wl_st_int = (λhighest S. do{
     let (M, S) = extract_trail_wl_heur S;
     let (vm, S) = extract_vmtf_wl_heur S;
     (M', vm)  isa_find_decomp_wl_imp M highest vm;
     let S = update_trail_wl_heur M' S;
     let S = update_vmtf_wl_heur vm S;
     RETURN S
  })
  by (auto simp: find_decomp_wl_st_int_def state_extractors intro!: ext split: isasat_int_splits)

sepref_def find_decomp_wl_imp'_fast_code
  is uncurry find_decomp_wl_st_int
  :: uint32_nat_assnk *a isasat_bounded_assnd  a
        isasat_bounded_assn
  unfolding find_decomp_wl_st_int_alt_def PR_CONST_def
  supply [[goals_limit = 1]]
  by sepref

experiment begin

export_llvm
  find_decomp_wl_imp'_fast_code

end

end