\<Gamma>\<^sub>A\<^sub>O\<^sub>D\<^sub>V_simps_1: shows "\<Gamma>\<^sub>A\<^sub>O\<^sub>D\<^sub>V PAodv = {PAodv-:0}receive(\<lambda>msg'. msg_update (\<lambda>_. msg')) . ({PAodv-:1}\<langle>is_newpkt\<rangle> {PAodv-:2}\<lbrakk>\<lambda>\<xi>. clear_locals \<xi>\<lparr>data := data \<xi>, dip := ip \<xi>\<rparr>\<rbrakk> call(PNewPkt) \<oplus> {PAodv-:1}\<langle>is_pkt\<rangle> {PAodv-:3}\<lbrakk>\<lambda>\<xi>. clear_locals \<xi>\<lparr>data := data \<xi>, dip := dip \<xi>, oip := oip \<xi>\<rparr>\<rbrakk> call(PPkt) \<oplus> {PAodv-:1}\<langle>is_rreq\<rangle> {PAodv-:4}\<lbrakk>\<lambda>\<xi>. \<xi>\<lparr>rt := update (rt \<xi>) (sip \<xi>) (0, unk, val, Suc 0, sip \<xi>, {})\<rparr>\<rbrakk> {PAodv-:5}\<lbrakk>\<lambda>\<xi>. clear_locals \<xi>\<lparr>hops := hops \<xi>, rreqid := rreqid \<xi>, dip := dip \<xi>, dsn := dsn \<xi>, dsk := dsk \<xi>, oip := oip \<xi>, osn := osn \<xi>, sip := sip \<xi>\<rparr>\<rbrakk> call(PRreq) \<oplus> {PAodv-:1}\<langle>is_rrep\<rangle> {PAodv-:6}\<lbrakk>\<lambda>\<xi>. \<xi>\<lparr>rt := update (rt \<xi>) (sip \<xi>) (0, unk, val, Suc 0, sip \<xi>, {})\<rparr>\<rbrakk> {PAodv-:7}\<lbrakk>\<lambda>\<xi>. clear_locals \<xi>\<lparr>hops := hops \<xi>, dip := dip \<xi>, dsn := dsn \<xi>, oip := oip \<xi>, sip := sip \<xi>\<rparr>\<rbrakk> call(PRrep) \<oplus> {PAodv-:1}\<langle>is_rerr\<rangle> {PAodv-:8}\<lbrakk>\<lambda>\<xi>. \<xi>\<lparr>rt := update (rt \<xi>) (sip \<xi>) (0, unk, val, Suc 0, sip \<xi>, {})\<rparr>\<rbrakk> {PAodv-:9}\<lbrakk>\<lambda>\<xi>. clear_locals \<xi>\<lparr>dests := dests \<xi>, sip := sip \<xi>\<rparr>\<rbrakk> call(PRerr)) \<oplus> {PAodv-:0}\<langle>\<lambda>\<xi>. {\<xi>\<lparr>dip := dip\<rparr> |dip. dip \<in> qD (store \<xi>) \<and> dip \<in> vD (rt \<xi>)}\<rangle> {PAodv-:10}\<lbrakk>\<lambda>\<xi>. \<xi>\<lparr>data := hd \<sigma>\<^bsub>queue\<^esub>(store \<xi>, dip \<xi>)\<rparr>\<rbrakk> {PAodv-:11}unicast(\<lambda>\<xi>. the (nhop (rt \<xi>) (dip \<xi>)), \<lambda>\<xi>. Pkt (data \<xi>) (dip \<xi>) (ip \<xi>)) . {PAodv-:12}\<lbrakk>\<lambda>\<xi>. \<xi>\<lparr>store := the (Aodv_Data.drop (dip \<xi>) (store \<xi>))\<rparr>\<rbrakk> {PAodv-:13}\<lbrakk>clear_locals\<rbrakk> call(PAodv) \<triangleright> {PAodv-:14}\<lbrakk>\<lambda>\<xi>. \<xi>\<lparr>dests := \<lambda>rip. if rip \<in> vD (rt \<xi>) \<and> nhop (rt \<xi>) rip = nhop (rt \<xi>) (dip \<xi>) then Some (inc (sqn (rt \<xi>) rip)) else None\<rparr>\<rbrakk> {PAodv-:15}\<lbrakk>\<lambda>\<xi>. \<xi>\<lparr>rt := invalidate (rt \<xi>) (dests \<xi>)\<rparr>\<rbrakk> {PAodv-:16}\<lbrakk>\<lambda>\<xi>. \<xi>\<lparr>store := setRRF (store \<xi>) (dests \<xi>)\<rparr>\<rbrakk> {PAodv-:17}\<lbrakk>\<lambda>\<xi>. \<xi>\<lparr>pre := \<Union> {the (precs (rt \<xi>) rip) |rip. rip \<in> dom (dests \<xi>)}\<rparr>\<rbrakk> {PAodv-:18}\<lbrakk>\<lambda>\<xi>. \<xi>\<lparr>dests := \<lambda>rip. if (\<exists>y. dests \<xi> rip = Some y) \<and> the (precs (rt \<xi>) rip) \<noteq> {} then dests \<xi> rip else None\<rparr>\<rbrakk> {PAodv-:19}groupcast(pre, \<lambda>\<xi>. Rerr (dests \<xi>) (ip \<xi>)) . {PAodv-:20}\<lbrakk>clear_locals\<rbrakk> call(PAodv) \<oplus> {PAodv-:0}\<langle>\<lambda>\<xi>. {\<xi>\<lparr>dip := dip\<rparr> |dip. dip \<in> qD (store \<xi>) \<and> dip \<notin> vD (rt \<xi>) \<and> the \<sigma>\<^bsub>p-flag\<^esub>(store \<xi>, dip) = req}\<rangle> {PAodv-:21}\<lbrakk>\<lambda>\<xi>. \<xi>\<lparr>store := unsetRRF (store \<xi>) (dip \<xi>)\<rparr>\<rbrakk> {PAodv-:22}\<lbrakk>\<lambda>\<xi>. \<xi>\<lparr>sn := inc (sn \<xi>)\<rparr>\<rbrakk> {PAodv-:23}\<lbrakk>\<lambda>\<xi>. \<xi>\<lparr>rreqid := nrreqid (rreqs \<xi>) (ip \<xi>)\<rparr>\<rbrakk> {PAodv-:24}\<lbrakk>\<lambda>\<xi>. \<xi>\<lparr>rreqs := insert (ip \<xi>, rreqid \<xi>) (rreqs \<xi>)\<rparr>\<rbrakk> {PAodv-:25}broadcast(\<lambda>\<xi>. Rreq 0 (rreqid \<xi>) (dip \<xi>) (sqn (rt \<xi>) (dip \<xi>)) (sqnf (rt \<xi>) (dip \<xi>)) (ip \<xi>) (sn \<xi>) (ip \<xi>)) . {PAodv-:26}\<lbrakk>clear_locals\<rbrakk> call(PAodv)"