<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE PROOF SYSTEM "http://a3pat.ensiie.fr/pub/a3pat.dtd">
<PROOF><SIGNATURE><SYMBOLLIST><SYMBOL arity="0" unmarked=""><NAME>false</NAME></SYMBOL><SYMBOL arity="2" unmarked=""><NAME>&lt;</NAME></SYMBOL><SYMBOL arity="2" unmarked=""><NAME>++</NAME></SYMBOL><SYMBOL arity="2" unmarked="++"><NAME>Marked_++</NAME></SYMBOL><SYMBOL arity="0" unmarked=""><NAME>nil</NAME></SYMBOL><SYMBOL arity="0" unmarked=""><NAME>true</NAME></SYMBOL><SYMBOL arity="2" unmarked="merge"><NAME>Marked_merge</NAME></SYMBOL><SYMBOL arity="3" unmarked=""><NAME>if</NAME></SYMBOL><SYMBOL arity="2" unmarked=""><NAME>.</NAME></SYMBOL><SYMBOL arity="3" unmarked="if"><NAME>Marked_if</NAME></SYMBOL><SYMBOL arity="2" unmarked=""><NAME>merge</NAME></SYMBOL></SYMBOLLIST><VARLIST><VAR>v</VAR><VAR>u</VAR><VAR>z</VAR><VAR>y</VAR><VAR>x</VAR></VARLIST></SIGNATURE><PROPERTY criterion="dp" prop="sntrs"><SYSTEM><REWSYS><RULE><LHS>merge(nil,y)</LHS><RHS>y</RHS></RULE><RULE><LHS>merge(x,nil)</LHS><RHS>x</RHS></RULE><RULE><LHS>merge(.(x,y),.(u,v))</LHS><RHS>if(&lt;(x,u),.(x,merge(y,.(u,v))),.(u,merge(.(x,y),v)))</RHS></RULE><RULE><LHS>++(nil,y)</LHS><RHS>y</RHS></RULE><RULE><LHS>++(.(x,y),z)</LHS><RHS>.(x,++(y,z))</RHS></RULE><RULE><LHS>if(true,x,y)</LHS><RHS>x</RHS></RULE><RULE><LHS>if(false,x,y)</LHS><RHS>x</RHS></RULE></REWSYS></SYSTEM><CRITERION/><PROPERTY criterion="weakgraph" prop="sndp"><SYSTEM><DPSYS><REWSYS><RULE><LHS>merge(nil,y)</LHS><RHS>y</RHS></RULE><RULE><LHS>merge(x,nil)</LHS><RHS>x</RHS></RULE><RULE><LHS>merge(.(x,y),.(u,v))</LHS><RHS>if(&lt;(x,u),.(x,merge(y,.(u,v))),.(u,merge(.(x,y),v)))</RHS></RULE><RULE><LHS>++(nil,y)</LHS><RHS>y</RHS></RULE><RULE><LHS>++(.(x,y),z)</LHS><RHS>.(x,++(y,z))</RHS></RULE><RULE><LHS>if(true,x,y)</LHS><RHS>x</RHS></RULE><RULE><LHS>if(false,x,y)</LHS><RHS>x</RHS></RULE></REWSYS><DPLIST><DPRULE num="0"><LHS>Marked_merge(.(x,y),.(u,v))</LHS><RHS>Marked_if(&lt;(x,u),.(x,merge(y,.(u,v))),.(u,merge(.(x,y),v)))</RHS></DPRULE><DPRULE num="1"><LHS>Marked_merge(.(x,y),.(u,v))</LHS><RHS>Marked_merge(y,.(u,v))</RHS></DPRULE><DPRULE num="2"><LHS>Marked_merge(.(x,y),.(u,v))</LHS><RHS>Marked_merge(.(x,y),v)</RHS></DPRULE><DPRULE num="3"><LHS>Marked_++(.(x,y),z)</LHS><RHS>Marked_++(y,z)</RHS></DPRULE></DPLIST></DPSYS></SYSTEM><CRITERION><DAG approx="simpl"><CCLIST><SCC num="0"><NODE ref="3"/></SCC><SCC num="1"><NODE ref="1"/><NODE ref="2"/></SCC><NONSCC num="2"><NODE ref="0"/></NONSCC></CCLIST><EDGE end="2" start="1"/></DAG></CRITERION><PROPERTY criterion="sterm" prop="sndp"><SYSTEM><DPSYS><REWSYS><RULE><LHS>merge(nil,y)</LHS><RHS>y</RHS></RULE><RULE><LHS>merge(x,nil)</LHS><RHS>x</RHS></RULE><RULE><LHS>merge(.(x,y),.(u,v))</LHS><RHS>if(&lt;(x,u),.(x,merge(y,.(u,v))),.(u,merge(.(x,y),v)))</RHS></RULE><RULE><LHS>++(nil,y)</LHS><RHS>y</RHS></RULE><RULE><LHS>++(.(x,y),z)</LHS><RHS>.(x,++(y,z))</RHS></RULE><RULE><LHS>if(true,x,y)</LHS><RHS>x</RHS></RULE><RULE><LHS>if(false,x,y)</LHS><RHS>x</RHS></RULE></REWSYS><DPLIST><DPRULE num="0"><LHS>Marked_merge(.(x,y),.(u,v))</LHS><RHS>Marked_merge(y,.(u,v))</RHS></DPRULE><DPRULE num="1"><LHS>Marked_merge(.(x,y),.(u,v))</LHS><RHS>Marked_merge(.(x,y),v)</RHS></DPRULE></DPLIST></DPSYS></SYSTEM><PROJECTION><PROJ><SYMBOL><NAME>Marked_merge</NAME></SYMBOL><INT>2</INT></PROJ></PROJECTION><STRICTPAIRS><DPLIST><DPRULE num="0"><LHS>Marked_merge(.(x,y),.(u,v))</LHS><RHS>Marked_merge(.(x,y),v)</RHS></DPRULE></DPLIST></STRICTPAIRS><PROPERTY criterion="weakgraph" prop="sndp"><SYSTEM><DPSYS><REWSYS><RULE><LHS>merge(nil,y)</LHS><RHS>y</RHS></RULE><RULE><LHS>merge(x,nil)</LHS><RHS>x</RHS></RULE><RULE><LHS>merge(.(x,y),.(u,v))</LHS><RHS>if(&lt;(x,u),.(x,merge(y,.(u,v))),.(u,merge(.(x,y),v)))</RHS></RULE><RULE><LHS>++(nil,y)</LHS><RHS>y</RHS></RULE><RULE><LHS>++(.(x,y),z)</LHS><RHS>.(x,++(y,z))</RHS></RULE><RULE><LHS>if(true,x,y)</LHS><RHS>x</RHS></RULE><RULE><LHS>if(false,x,y)</LHS><RHS>x</RHS></RULE></REWSYS><DPLIST><DPRULE num="0"><LHS>Marked_merge(.(x,y),.(u,v))</LHS><RHS>Marked_merge(y,.(u,v))</RHS></DPRULE></DPLIST></DPSYS></SYSTEM><CRITERION><DAG approx="simpl"><CCLIST><SCC num="0"><NODE ref="0"/></SCC></CCLIST></DAG></CRITERION><PROPERTY criterion="sterm" prop="sndp"><SYSTEM><DPSYS><REWSYS><RULE><LHS>merge(nil,y)</LHS><RHS>y</RHS></RULE><RULE><LHS>merge(x,nil)</LHS><RHS>x</RHS></RULE><RULE><LHS>merge(.(x,y),.(u,v))</LHS><RHS>if(&lt;(x,u),.(x,merge(y,.(u,v))),.(u,merge(.(x,y),v)))</RHS></RULE><RULE><LHS>++(nil,y)</LHS><RHS>y</RHS></RULE><RULE><LHS>++(.(x,y),z)</LHS><RHS>.(x,++(y,z))</RHS></RULE><RULE><LHS>if(true,x,y)</LHS><RHS>x</RHS></RULE><RULE><LHS>if(false,x,y)</LHS><RHS>x</RHS></RULE></REWSYS><DPLIST><DPRULE num="0"><LHS>Marked_merge(.(x,y),.(u,v))</LHS><RHS>Marked_merge(y,.(u,v))</RHS></DPRULE></DPLIST></DPSYS></SYSTEM><PROJECTION><PROJ><SYMBOL><NAME>Marked_merge</NAME></SYMBOL><INT>1</INT></PROJ></PROJECTION><STRICTPAIRS><DPLIST><DPRULE num="0"><LHS>Marked_merge(.(x,y),.(u,v))</LHS><RHS>Marked_merge(y,.(u,v))</RHS></DPRULE></DPLIST></STRICTPAIRS><PROPERTY criterion="weakgraph" prop="sndp"><SYSTEM><DPSYS><REWSYS><RULE><LHS>merge(nil,y)</LHS><RHS>y</RHS></RULE><RULE><LHS>merge(x,nil)</LHS><RHS>x</RHS></RULE><RULE><LHS>merge(.(x,y),.(u,v))</LHS><RHS>if(&lt;(x,u),.(x,merge(y,.(u,v))),.(u,merge(.(x,y),v)))</RHS></RULE><RULE><LHS>++(nil,y)</LHS><RHS>y</RHS></RULE><RULE><LHS>++(.(x,y),z)</LHS><RHS>.(x,++(y,z))</RHS></RULE><RULE><LHS>if(true,x,y)</LHS><RHS>x</RHS></RULE><RULE><LHS>if(false,x,y)</LHS><RHS>x</RHS></RULE></REWSYS><DPLIST/></DPSYS></SYSTEM><CRITERION><DAG approx="simpl"><CCLIST/></DAG></CRITERION></PROPERTY></PROPERTY></PROPERTY></PROPERTY><PROPERTY criterion="sterm" prop="sndp"><SYSTEM><DPSYS><REWSYS><RULE><LHS>merge(nil,y)</LHS><RHS>y</RHS></RULE><RULE><LHS>merge(x,nil)</LHS><RHS>x</RHS></RULE><RULE><LHS>merge(.(x,y),.(u,v))</LHS><RHS>if(&lt;(x,u),.(x,merge(y,.(u,v))),.(u,merge(.(x,y),v)))</RHS></RULE><RULE><LHS>++(nil,y)</LHS><RHS>y</RHS></RULE><RULE><LHS>++(.(x,y),z)</LHS><RHS>.(x,++(y,z))</RHS></RULE><RULE><LHS>if(true,x,y)</LHS><RHS>x</RHS></RULE><RULE><LHS>if(false,x,y)</LHS><RHS>x</RHS></RULE></REWSYS><DPLIST><DPRULE num="0"><LHS>Marked_++(.(x,y),z)</LHS><RHS>Marked_++(y,z)</RHS></DPRULE></DPLIST></DPSYS></SYSTEM><PROJECTION><PROJ><SYMBOL><NAME>Marked_++</NAME></SYMBOL><INT>1</INT></PROJ></PROJECTION><STRICTPAIRS><DPLIST><DPRULE num="0"><LHS>Marked_++(.(x,y),z)</LHS><RHS>Marked_++(y,z)</RHS></DPRULE></DPLIST></STRICTPAIRS><PROPERTY criterion="weakgraph" prop="sndp"><SYSTEM><DPSYS><REWSYS><RULE><LHS>merge(nil,y)</LHS><RHS>y</RHS></RULE><RULE><LHS>merge(x,nil)</LHS><RHS>x</RHS></RULE><RULE><LHS>merge(.(x,y),.(u,v))</LHS><RHS>if(&lt;(x,u),.(x,merge(y,.(u,v))),.(u,merge(.(x,y),v)))</RHS></RULE><RULE><LHS>++(nil,y)</LHS><RHS>y</RHS></RULE><RULE><LHS>++(.(x,y),z)</LHS><RHS>.(x,++(y,z))</RHS></RULE><RULE><LHS>if(true,x,y)</LHS><RHS>x</RHS></RULE><RULE><LHS>if(false,x,y)</LHS><RHS>x</RHS></RULE></REWSYS><DPLIST/></DPSYS></SYSTEM><CRITERION><DAG approx="simpl"><CCLIST/></DAG></CRITERION></PROPERTY></PROPERTY></PROPERTY></PROPERTY></PROOF>
