[STATEMENT]
lemma find_fas_code_refine[refine]:
  fixes V :: "('vi\<times>'v) set"
  assumes "is_bounded_hashcode V eq bhc"
  assumes "(eq,(=)) \<in> V \<rightarrow> V \<rightarrow> bool_rel"
  assumes "is_valid_def_hm_size TYPE ('vi) sz"
  assumes 2: "(Gi, G) \<in> \<langle>Rm, V\<rangle>g_impl_rel_ext"
  shows "RETURN (find_fas_code eq bhc sz Gi) \<le> \<Down>(\<langle>V\<times>\<^sub>rV\<rangle>ahs_rel (prod_bhc bhc bhc)) (find_fas G)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. RETURN (find_fas_code eq bhc sz Gi) \<le> \<Down> (\<langle>V \<times>\<^sub>r V\<rangle>ahs_rel (prod_bhc bhc bhc)) (find_fas G)
[PROOF STEP]
proof -
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. RETURN (find_fas_code eq bhc sz Gi) \<le> \<Down> (\<langle>V \<times>\<^sub>r V\<rangle>ahs_rel (prod_bhc bhc bhc)) (find_fas G)
[PROOF STEP]
note find_fas_code.refine[OF assms]
[PROOF STATE]
proof (state)
this:
RETURN (find_fas_code eq bhc sz Gi) \<le> \<Down> (\<langle>V \<times>\<^sub>r V\<rangle>ahs_rel (prod_bhc bhc bhc)) (find_fas_impl G)

goal (1 subgoal):
 1. RETURN (find_fas_code eq bhc sz Gi) \<le> \<Down> (\<langle>V \<times>\<^sub>r V\<rangle>ahs_rel (prod_bhc bhc bhc)) (find_fas G)
[PROOF STEP]
also
[PROOF STATE]
proof (state)
this:
RETURN (find_fas_code eq bhc sz Gi) \<le> \<Down> (\<langle>V \<times>\<^sub>r V\<rangle>ahs_rel (prod_bhc bhc bhc)) (find_fas_impl G)

goal (1 subgoal):
 1. RETURN (find_fas_code eq bhc sz Gi) \<le> \<Down> (\<langle>V \<times>\<^sub>r V\<rangle>ahs_rel (prod_bhc bhc bhc)) (find_fas G)
[PROOF STEP]
note find_fas_impl_refine
[PROOF STATE]
proof (state)
this:
find_fas_impl ?G \<le> \<Down> Id (find_fas ?G)

goal (1 subgoal):
 1. RETURN (find_fas_code eq bhc sz Gi) \<le> \<Down> (\<langle>V \<times>\<^sub>r V\<rangle>ahs_rel (prod_bhc bhc bhc)) (find_fas G)
[PROOF STEP]
finally
[PROOF STATE]
proof (chain)
picking this:
RETURN (find_fas_code eq bhc sz Gi) \<le> \<Down> (\<langle>V \<times>\<^sub>r V\<rangle>ahs_rel (prod_bhc bhc bhc)) (find_fas G)
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
RETURN (find_fas_code eq bhc sz Gi) \<le> \<Down> (\<langle>V \<times>\<^sub>r V\<rangle>ahs_rel (prod_bhc bhc bhc)) (find_fas G)

goal (1 subgoal):
 1. RETURN (find_fas_code eq bhc sz Gi) \<le> \<Down> (\<langle>V \<times>\<^sub>r V\<rangle>ahs_rel (prod_bhc bhc bhc)) (find_fas G)
[PROOF STEP]
.
[PROOF STATE]
proof (state)
this:
RETURN (find_fas_code eq bhc sz Gi) \<le> \<Down> (\<langle>V \<times>\<^sub>r V\<rangle>ahs_rel (prod_bhc bhc bhc)) (find_fas G)

goal:
No subgoals!
[PROOF STEP]
qed