<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE PROOF SYSTEM "http://a3pat.ensiie.fr/pub/a3pat.dtd">
<PROOF><SIGNATURE><SYMBOLLIST><SYMBOL arity="2" unmarked="mem"><NAME>Marked_mem</NAME></SYMBOL><SYMBOL arity="2" unmarked=""><NAME>mem</NAME></SYMBOL><SYMBOL arity="1" unmarked=""><NAME>max</NAME></SYMBOL><SYMBOL arity="2" unmarked=""><NAME>++</NAME></SYMBOL><SYMBOL arity="0" unmarked=""><NAME>u</NAME></SYMBOL><SYMBOL arity="1" unmarked=""><NAME>null</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="1" unmarked="max"><NAME>Marked_max</NAME></SYMBOL><SYMBOL arity="0" unmarked=""><NAME>false</NAME></SYMBOL><SYMBOL arity="1" unmarked=""><NAME>not</NAME></SYMBOL><SYMBOL arity="2" unmarked="f"><NAME>Marked_f</NAME></SYMBOL><SYMBOL arity="2" unmarked=""><NAME>f</NAME></SYMBOL><SYMBOL arity="2" unmarked=""><NAME>max'</NAME></SYMBOL><SYMBOL arity="0" unmarked=""><NAME>true</NAME></SYMBOL><SYMBOL arity="2" unmarked=""><NAME>or</NAME></SYMBOL><SYMBOL arity="1" unmarked="null"><NAME>Marked_null</NAME></SYMBOL><SYMBOL arity="2" unmarked=""><NAME>g</NAME></SYMBOL></SYMBOLLIST><VARLIST><VAR>z</VAR><VAR>y</VAR><VAR>x</VAR></VARLIST></SIGNATURE><PROPERTY criterion="dp" prop="sntrs"><SYSTEM><REWSYS><RULE><LHS>f(x,nil)</LHS><RHS>g(nil,x)</RHS></RULE><RULE><LHS>f(x,g(y,z))</LHS><RHS>g(f(x,y),z)</RHS></RULE><RULE><LHS>++(x,nil)</LHS><RHS>x</RHS></RULE><RULE><LHS>++(x,g(y,z))</LHS><RHS>g(++(x,y),z)</RHS></RULE><RULE><LHS>null(nil)</LHS><RHS>true</RHS></RULE><RULE><LHS>null(g(x,y))</LHS><RHS>false</RHS></RULE><RULE><LHS>mem(nil,y)</LHS><RHS>false</RHS></RULE><RULE><LHS>mem(g(x,y),z)</LHS><RHS>or(=(y,z),mem(x,z))</RHS></RULE><RULE><LHS>mem(x,max(x))</LHS><RHS>not(null(x))</RHS></RULE><RULE><LHS>max(g(g(nil,x),y))</LHS><RHS>max'(x,y)</RHS></RULE><RULE><LHS>max(g(g(g(x,y),z),u))</LHS><RHS>max'(max(g(g(x,y),z)),u)</RHS></RULE></REWSYS></SYSTEM><CRITERION/><PROPERTY criterion="weakgraph" prop="sndp"><SYSTEM><DPSYS><REWSYS><RULE><LHS>f(x,nil)</LHS><RHS>g(nil,x)</RHS></RULE><RULE><LHS>f(x,g(y,z))</LHS><RHS>g(f(x,y),z)</RHS></RULE><RULE><LHS>++(x,nil)</LHS><RHS>x</RHS></RULE><RULE><LHS>++(x,g(y,z))</LHS><RHS>g(++(x,y),z)</RHS></RULE><RULE><LHS>null(nil)</LHS><RHS>true</RHS></RULE><RULE><LHS>null(g(x,y))</LHS><RHS>false</RHS></RULE><RULE><LHS>mem(nil,y)</LHS><RHS>false</RHS></RULE><RULE><LHS>mem(g(x,y),z)</LHS><RHS>or(=(y,z),mem(x,z))</RHS></RULE><RULE><LHS>mem(x,max(x))</LHS><RHS>not(null(x))</RHS></RULE><RULE><LHS>max(g(g(nil,x),y))</LHS><RHS>max'(x,y)</RHS></RULE><RULE><LHS>max(g(g(g(x,y),z),u))</LHS><RHS>max'(max(g(g(x,y),z)),u)</RHS></RULE></REWSYS><DPLIST><DPRULE num="0"><LHS>Marked_f(x,g(y,z))</LHS><RHS>Marked_f(x,y)</RHS></DPRULE><DPRULE num="1"><LHS>Marked_++(x,g(y,z))</LHS><RHS>Marked_++(x,y)</RHS></DPRULE><DPRULE num="2"><LHS>Marked_mem(g(x,y),z)</LHS><RHS>Marked_mem(x,z)</RHS></DPRULE><DPRULE num="3"><LHS>Marked_mem(x,max(x))</LHS><RHS>Marked_null(x)</RHS></DPRULE><DPRULE num="4"><LHS>Marked_max(g(g(g(x,y),z),u))</LHS><RHS>Marked_max(g(g(x,y),z))</RHS></DPRULE></DPLIST></DPSYS></SYSTEM><CRITERION><DAG approx="simpl"><CCLIST><SCC num="0"><NODE ref="4"/></SCC><NONSCC num="1"><NODE ref="3"/></NONSCC><SCC num="2"><NODE ref="2"/></SCC><SCC num="3"><NODE ref="1"/></SCC><SCC num="4"><NODE ref="0"/></SCC></CCLIST><EDGE end="1" start="2"/></DAG></CRITERION><PROPERTY criterion="sterm" prop="sndp"><SYSTEM><DPSYS><REWSYS><RULE><LHS>f(x,nil)</LHS><RHS>g(nil,x)</RHS></RULE><RULE><LHS>f(x,g(y,z))</LHS><RHS>g(f(x,y),z)</RHS></RULE><RULE><LHS>++(x,nil)</LHS><RHS>x</RHS></RULE><RULE><LHS>++(x,g(y,z))</LHS><RHS>g(++(x,y),z)</RHS></RULE><RULE><LHS>null(nil)</LHS><RHS>true</RHS></RULE><RULE><LHS>null(g(x,y))</LHS><RHS>false</RHS></RULE><RULE><LHS>mem(nil,y)</LHS><RHS>false</RHS></RULE><RULE><LHS>mem(g(x,y),z)</LHS><RHS>or(=(y,z),mem(x,z))</RHS></RULE><RULE><LHS>mem(x,max(x))</LHS><RHS>not(null(x))</RHS></RULE><RULE><LHS>max(g(g(nil,x),y))</LHS><RHS>max'(x,y)</RHS></RULE><RULE><LHS>max(g(g(g(x,y),z),u))</LHS><RHS>max'(max(g(g(x,y),z)),u)</RHS></RULE></REWSYS><DPLIST><DPRULE num="0"><LHS>Marked_f(x,g(y,z))</LHS><RHS>Marked_f(x,y)</RHS></DPRULE></DPLIST></DPSYS></SYSTEM><PROJECTION><PROJ><SYMBOL><NAME>Marked_f</NAME></SYMBOL><INT>2</INT></PROJ></PROJECTION><STRICTPAIRS><DPLIST><DPRULE num="0"><LHS>Marked_f(x,g(y,z))</LHS><RHS>Marked_f(x,y)</RHS></DPRULE></DPLIST></STRICTPAIRS><PROPERTY criterion="weakgraph" prop="sndp"><SYSTEM><DPSYS><REWSYS><RULE><LHS>f(x,nil)</LHS><RHS>g(nil,x)</RHS></RULE><RULE><LHS>f(x,g(y,z))</LHS><RHS>g(f(x,y),z)</RHS></RULE><RULE><LHS>++(x,nil)</LHS><RHS>x</RHS></RULE><RULE><LHS>++(x,g(y,z))</LHS><RHS>g(++(x,y),z)</RHS></RULE><RULE><LHS>null(nil)</LHS><RHS>true</RHS></RULE><RULE><LHS>null(g(x,y))</LHS><RHS>false</RHS></RULE><RULE><LHS>mem(nil,y)</LHS><RHS>false</RHS></RULE><RULE><LHS>mem(g(x,y),z)</LHS><RHS>or(=(y,z),mem(x,z))</RHS></RULE><RULE><LHS>mem(x,max(x))</LHS><RHS>not(null(x))</RHS></RULE><RULE><LHS>max(g(g(nil,x),y))</LHS><RHS>max'(x,y)</RHS></RULE><RULE><LHS>max(g(g(g(x,y),z),u))</LHS><RHS>max'(max(g(g(x,y),z)),u)</RHS></RULE></REWSYS><DPLIST/></DPSYS></SYSTEM><CRITERION><DAG approx="simpl"><CCLIST/></DAG></CRITERION></PROPERTY></PROPERTY><PROPERTY criterion="sterm" prop="sndp"><SYSTEM><DPSYS><REWSYS><RULE><LHS>f(x,nil)</LHS><RHS>g(nil,x)</RHS></RULE><RULE><LHS>f(x,g(y,z))</LHS><RHS>g(f(x,y),z)</RHS></RULE><RULE><LHS>++(x,nil)</LHS><RHS>x</RHS></RULE><RULE><LHS>++(x,g(y,z))</LHS><RHS>g(++(x,y),z)</RHS></RULE><RULE><LHS>null(nil)</LHS><RHS>true</RHS></RULE><RULE><LHS>null(g(x,y))</LHS><RHS>false</RHS></RULE><RULE><LHS>mem(nil,y)</LHS><RHS>false</RHS></RULE><RULE><LHS>mem(g(x,y),z)</LHS><RHS>or(=(y,z),mem(x,z))</RHS></RULE><RULE><LHS>mem(x,max(x))</LHS><RHS>not(null(x))</RHS></RULE><RULE><LHS>max(g(g(nil,x),y))</LHS><RHS>max'(x,y)</RHS></RULE><RULE><LHS>max(g(g(g(x,y),z),u))</LHS><RHS>max'(max(g(g(x,y),z)),u)</RHS></RULE></REWSYS><DPLIST><DPRULE num="0"><LHS>Marked_++(x,g(y,z))</LHS><RHS>Marked_++(x,y)</RHS></DPRULE></DPLIST></DPSYS></SYSTEM><PROJECTION><PROJ><SYMBOL><NAME>Marked_++</NAME></SYMBOL><INT>2</INT></PROJ></PROJECTION><STRICTPAIRS><DPLIST><DPRULE num="0"><LHS>Marked_++(x,g(y,z))</LHS><RHS>Marked_++(x,y)</RHS></DPRULE></DPLIST></STRICTPAIRS><PROPERTY criterion="weakgraph" prop="sndp"><SYSTEM><DPSYS><REWSYS><RULE><LHS>f(x,nil)</LHS><RHS>g(nil,x)</RHS></RULE><RULE><LHS>f(x,g(y,z))</LHS><RHS>g(f(x,y),z)</RHS></RULE><RULE><LHS>++(x,nil)</LHS><RHS>x</RHS></RULE><RULE><LHS>++(x,g(y,z))</LHS><RHS>g(++(x,y),z)</RHS></RULE><RULE><LHS>null(nil)</LHS><RHS>true</RHS></RULE><RULE><LHS>null(g(x,y))</LHS><RHS>false</RHS></RULE><RULE><LHS>mem(nil,y)</LHS><RHS>false</RHS></RULE><RULE><LHS>mem(g(x,y),z)</LHS><RHS>or(=(y,z),mem(x,z))</RHS></RULE><RULE><LHS>mem(x,max(x))</LHS><RHS>not(null(x))</RHS></RULE><RULE><LHS>max(g(g(nil,x),y))</LHS><RHS>max'(x,y)</RHS></RULE><RULE><LHS>max(g(g(g(x,y),z),u))</LHS><RHS>max'(max(g(g(x,y),z)),u)</RHS></RULE></REWSYS><DPLIST/></DPSYS></SYSTEM><CRITERION><DAG approx="simpl"><CCLIST/></DAG></CRITERION></PROPERTY></PROPERTY><PROPERTY criterion="sterm" prop="sndp"><SYSTEM><DPSYS><REWSYS><RULE><LHS>f(x,nil)</LHS><RHS>g(nil,x)</RHS></RULE><RULE><LHS>f(x,g(y,z))</LHS><RHS>g(f(x,y),z)</RHS></RULE><RULE><LHS>++(x,nil)</LHS><RHS>x</RHS></RULE><RULE><LHS>++(x,g(y,z))</LHS><RHS>g(++(x,y),z)</RHS></RULE><RULE><LHS>null(nil)</LHS><RHS>true</RHS></RULE><RULE><LHS>null(g(x,y))</LHS><RHS>false</RHS></RULE><RULE><LHS>mem(nil,y)</LHS><RHS>false</RHS></RULE><RULE><LHS>mem(g(x,y),z)</LHS><RHS>or(=(y,z),mem(x,z))</RHS></RULE><RULE><LHS>mem(x,max(x))</LHS><RHS>not(null(x))</RHS></RULE><RULE><LHS>max(g(g(nil,x),y))</LHS><RHS>max'(x,y)</RHS></RULE><RULE><LHS>max(g(g(g(x,y),z),u))</LHS><RHS>max'(max(g(g(x,y),z)),u)</RHS></RULE></REWSYS><DPLIST><DPRULE num="0"><LHS>Marked_mem(g(x,y),z)</LHS><RHS>Marked_mem(x,z)</RHS></DPRULE></DPLIST></DPSYS></SYSTEM><PROJECTION><PROJ><SYMBOL><NAME>Marked_mem</NAME></SYMBOL><INT>1</INT></PROJ></PROJECTION><STRICTPAIRS><DPLIST><DPRULE num="0"><LHS>Marked_mem(g(x,y),z)</LHS><RHS>Marked_mem(x,z)</RHS></DPRULE></DPLIST></STRICTPAIRS><PROPERTY criterion="weakgraph" prop="sndp"><SYSTEM><DPSYS><REWSYS><RULE><LHS>f(x,nil)</LHS><RHS>g(nil,x)</RHS></RULE><RULE><LHS>f(x,g(y,z))</LHS><RHS>g(f(x,y),z)</RHS></RULE><RULE><LHS>++(x,nil)</LHS><RHS>x</RHS></RULE><RULE><LHS>++(x,g(y,z))</LHS><RHS>g(++(x,y),z)</RHS></RULE><RULE><LHS>null(nil)</LHS><RHS>true</RHS></RULE><RULE><LHS>null(g(x,y))</LHS><RHS>false</RHS></RULE><RULE><LHS>mem(nil,y)</LHS><RHS>false</RHS></RULE><RULE><LHS>mem(g(x,y),z)</LHS><RHS>or(=(y,z),mem(x,z))</RHS></RULE><RULE><LHS>mem(x,max(x))</LHS><RHS>not(null(x))</RHS></RULE><RULE><LHS>max(g(g(nil,x),y))</LHS><RHS>max'(x,y)</RHS></RULE><RULE><LHS>max(g(g(g(x,y),z),u))</LHS><RHS>max'(max(g(g(x,y),z)),u)</RHS></RULE></REWSYS><DPLIST/></DPSYS></SYSTEM><CRITERION><DAG approx="simpl"><CCLIST/></DAG></CRITERION></PROPERTY></PROPERTY><PROPERTY criterion="sterm" prop="sndp"><SYSTEM><DPSYS><REWSYS><RULE><LHS>f(x,nil)</LHS><RHS>g(nil,x)</RHS></RULE><RULE><LHS>f(x,g(y,z))</LHS><RHS>g(f(x,y),z)</RHS></RULE><RULE><LHS>++(x,nil)</LHS><RHS>x</RHS></RULE><RULE><LHS>++(x,g(y,z))</LHS><RHS>g(++(x,y),z)</RHS></RULE><RULE><LHS>null(nil)</LHS><RHS>true</RHS></RULE><RULE><LHS>null(g(x,y))</LHS><RHS>false</RHS></RULE><RULE><LHS>mem(nil,y)</LHS><RHS>false</RHS></RULE><RULE><LHS>mem(g(x,y),z)</LHS><RHS>or(=(y,z),mem(x,z))</RHS></RULE><RULE><LHS>mem(x,max(x))</LHS><RHS>not(null(x))</RHS></RULE><RULE><LHS>max(g(g(nil,x),y))</LHS><RHS>max'(x,y)</RHS></RULE><RULE><LHS>max(g(g(g(x,y),z),u))</LHS><RHS>max'(max(g(g(x,y),z)),u)</RHS></RULE></REWSYS><DPLIST><DPRULE num="0"><LHS>Marked_max(g(g(g(x,y),z),u))</LHS><RHS>Marked_max(g(g(x,y),z))</RHS></DPRULE></DPLIST></DPSYS></SYSTEM><PROJECTION><PROJ><SYMBOL><NAME>Marked_max</NAME></SYMBOL><INT>1</INT></PROJ></PROJECTION><STRICTPAIRS><DPLIST><DPRULE num="0"><LHS>Marked_max(g(g(g(x,y),z),u))</LHS><RHS>Marked_max(g(g(x,y),z))</RHS></DPRULE></DPLIST></STRICTPAIRS><PROPERTY criterion="weakgraph" prop="sndp"><SYSTEM><DPSYS><REWSYS><RULE><LHS>f(x,nil)</LHS><RHS>g(nil,x)</RHS></RULE><RULE><LHS>f(x,g(y,z))</LHS><RHS>g(f(x,y),z)</RHS></RULE><RULE><LHS>++(x,nil)</LHS><RHS>x</RHS></RULE><RULE><LHS>++(x,g(y,z))</LHS><RHS>g(++(x,y),z)</RHS></RULE><RULE><LHS>null(nil)</LHS><RHS>true</RHS></RULE><RULE><LHS>null(g(x,y))</LHS><RHS>false</RHS></RULE><RULE><LHS>mem(nil,y)</LHS><RHS>false</RHS></RULE><RULE><LHS>mem(g(x,y),z)</LHS><RHS>or(=(y,z),mem(x,z))</RHS></RULE><RULE><LHS>mem(x,max(x))</LHS><RHS>not(null(x))</RHS></RULE><RULE><LHS>max(g(g(nil,x),y))</LHS><RHS>max'(x,y)</RHS></RULE><RULE><LHS>max(g(g(g(x,y),z),u))</LHS><RHS>max'(max(g(g(x,y),z)),u)</RHS></RULE></REWSYS><DPLIST/></DPSYS></SYSTEM><CRITERION><DAG approx="simpl"><CCLIST/></DAG></CRITERION></PROPERTY></PROPERTY></PROPERTY></PROPERTY></PROOF>
