shallow_graph_aux_def: shows "shallow_graph_aux \<equiv> lfp (\<lambda>p x1 x2. (\<exists>shallow_aux. x1 = Unit \<and> x2 = Unit) \<or> (\<exists>shallow_aux v. x1 = Var v \<and> x2 = Var v) \<or> (\<exists>shallow_aux x e. x1 = Lam x e \<and> x2 = Lam x (((\<lambda>uu_. uu_) \<circ> shallow_aux) e) \<and> p e (((\<lambda>uu_. uu_) \<circ> shallow_aux) e)) \<or> (\<exists>shallow_aux x e. x1 = Rec x e \<and> x2 = Rec x (((\<lambda>uu_. uu_) \<circ> shallow_aux) e) \<and> p e (((\<lambda>uu_. uu_) \<circ> shallow_aux) e)) \<or> (\<exists>shallow_aux e. x1 = Inj1 e \<and> x2 = Inj1 (((\<lambda>uu_. uu_) \<circ> shallow_aux) e) \<and> p e (((\<lambda>uu_. uu_) \<circ> shallow_aux) e)) \<or> (\<exists>shallow_aux e. x1 = Inj2 e \<and> x2 = Inj2 (((\<lambda>uu_. uu_) \<circ> shallow_aux) e) \<and> p e (((\<lambda>uu_. uu_) \<circ> shallow_aux) e)) \<or> (\<exists>shallow_aux e\<^sub>1 e\<^sub>2. x1 = Syntax.Pair e\<^sub>1 e\<^sub>2 \<and> x2 = Syntax.Pair (((\<lambda>uu_. uu_) \<circ> shallow_aux) e\<^sub>1) (((\<lambda>uu_. uu_) \<circ> shallow_aux) e\<^sub>2) \<and> p e\<^sub>1 (((\<lambda>uu_. uu_) \<circ> shallow_aux) e\<^sub>1) \<and> p e\<^sub>2 (((\<lambda>uu_. uu_) \<circ> shallow_aux) e\<^sub>2)) \<or> (\<exists>shallow_aux e. x1 = Roll e \<and> x2 = Roll (((\<lambda>uu_. uu_) \<circ> shallow_aux) e) \<and> p e (((\<lambda>uu_. uu_) \<circ> shallow_aux) e)) \<or> (\<exists>shallow_aux e\<^sub>1 x e\<^sub>2. x1 = Syntax.Let e\<^sub>1 x e\<^sub>2 \<and> x2 = Syntax.Let (((\<lambda>uu_. uu_) \<circ> shallow_aux) e\<^sub>1) x (((\<lambda>uu_. uu_) \<circ> shallow_aux) e\<^sub>2) \<and> p e\<^sub>1 (((\<lambda>uu_. uu_) \<circ> shallow_aux) e\<^sub>1) \<and> p e\<^sub>2 (((\<lambda>uu_. uu_) \<circ> shallow_aux) e\<^sub>2)) \<or> (\<exists>shallow_aux e\<^sub>1 e\<^sub>2. x1 = App e\<^sub>1 e\<^sub>2 \<and> x2 = App (((\<lambda>uu_. uu_) \<circ> shallow_aux) e\<^sub>1) (((\<lambda>uu_. uu_) \<circ> shallow_aux) e\<^sub>2) \<and> p e\<^sub>1 (((\<lambda>uu_. uu_) \<circ> shallow_aux) e\<^sub>1) \<and> p e\<^sub>2 (((\<lambda>uu_. uu_) \<circ> shallow_aux) e\<^sub>2)) \<or> (\<exists>shallow_aux e e\<^sub>1 e\<^sub>2. x1 = Case e e\<^sub>1 e\<^sub>2 \<and> x2 = Case (((\<lambda>uu_. uu_) \<circ> shallow_aux) e) (((\<lambda>uu_. uu_) \<circ> shallow_aux) e\<^sub>1) (((\<lambda>uu_. uu_) \<circ> shallow_aux) e\<^sub>2) \<and> p e (((\<lambda>uu_. uu_) \<circ> shallow_aux) e) \<and> p e\<^sub>1 (((\<lambda>uu_. uu_) \<circ> shallow_aux) e\<^sub>1) \<and> p e\<^sub>2 (((\<lambda>uu_. uu_) \<circ> shallow_aux) e\<^sub>2)) \<or> (\<exists>shallow_aux e. x1 = Prj1 e \<and> x2 = Prj1 (((\<lambda>uu_. uu_) \<circ> shallow_aux) e) \<and> p e (((\<lambda>uu_. uu_) \<circ> shallow_aux) e)) \<or> (\<exists>shallow_aux e. x1 = Prj2 e \<and> x2 = Prj2 (((\<lambda>uu_. uu_) \<circ> shallow_aux) e) \<and> p e (((\<lambda>uu_. uu_) \<circ> shallow_aux) e)) \<or> (\<exists>shallow_aux e. x1 = Unroll e \<and> x2 = Unroll (((\<lambda>uu_. uu_) \<circ> shallow_aux) e) \<and> p e (((\<lambda>uu_. uu_) \<circ> shallow_aux) e)) \<or> (\<exists>shallow_aux e. x1 = Auth e \<and> x2 = Auth (((\<lambda>uu_. uu_) \<circ> shallow_aux) e) \<and> p e (((\<lambda>uu_. uu_) \<circ> shallow_aux) e)) \<or> (\<exists>shallow_aux e. x1 = Unauth e \<and> x2 = Unauth (((\<lambda>uu_. uu_) \<circ> shallow_aux) e) \<and> p e (((\<lambda>uu_. uu_) \<circ> shallow_aux) e)) \<or> (\<exists>shallow_aux h. x1 = Hash h \<and> x2 = Hash h) \<or> (\<exists>shallow_aux h e. x1 = Hashed h e \<and> x2 = Hash h))"