YES Time: 0.249 Problem: Equations: timesAC(timesAC(x2,x3),x4) -> timesAC(x2,timesAC(x3,x4)) timesAC(x2,x3) -> timesAC(x3,x2) plusAC(plusAC(x2,x3),x4) -> plusAC(x2,plusAC(x3,x4)) plusAC(x2,x3) -> plusAC(x3,x2) timesAC(x2,timesAC(x3,x4)) -> timesAC(timesAC(x2,x3),x4) timesAC(x3,x2) -> timesAC(x2,x3) plusAC(x2,plusAC(x3,x4)) -> plusAC(plusAC(x2,x3),x4) plusAC(x3,x2) -> plusAC(x2,x3) TRS: timesAC(x,0()) -> 0() timesAC(x,s(y)) -> plusAC(timesAC(x,y),x) plusAC(x,0()) -> x plusAC(0(),x) -> x plusAC(x,s(y)) -> s(plusAC(x,y)) plusAC(s(x),y) -> s(plusAC(x,y)) Proof: DP Processor: Equations#: times{AC,#}(timesAC(x2,x3),x4) -> times{AC,#}(x2,timesAC(x3,x4)) times{AC,#}(x2,x3) -> times{AC,#}(x3,x2) plus{AC,#}(plusAC(x2,x3),x4) -> plus{AC,#}(x2,plusAC(x3,x4)) plus{AC,#}(x2,x3) -> plus{AC,#}(x3,x2) times{AC,#}(x2,timesAC(x3,x4)) -> times{AC,#}(timesAC(x2,x3),x4) times{AC,#}(x3,x2) -> times{AC,#}(x2,x3) plus{AC,#}(x2,plusAC(x3,x4)) -> plus{AC,#}(plusAC(x2,x3),x4) plus{AC,#}(x3,x2) -> plus{AC,#}(x2,x3) DPs: times{AC,#}(x,s(y)) -> times{AC,#}(x,y) times{AC,#}(x,s(y)) -> plus{AC,#}(timesAC(x,y),x) plus{AC,#}(x,s(y)) -> plus{AC,#}(x,y) plus{AC,#}(s(x),y) -> plus{AC,#}(x,y) times{AC,#}(x5,timesAC(x,0())) -> times{AC,#}(x5,0()) times{AC,#}(x6,timesAC(x,s(y))) -> times{AC,#}(x,y) times{AC,#}(x6,timesAC(x,s(y))) -> plus{AC,#}(timesAC(x,y),x) times{AC,#}(x6,timesAC(x,s(y))) -> times{AC,#}(x6,plusAC(timesAC(x,y),x)) plus{AC,#}(x7,plusAC(x,0())) -> plus{AC,#}(x7,x) plus{AC,#}(x8,plusAC(0(),x)) -> plus{AC,#}(x8,x) plus{AC,#}(x9,plusAC(x,s(y))) -> plus{AC,#}(x,y) plus{AC,#}(x9,plusAC(x,s(y))) -> plus{AC,#}(x9,s(plusAC(x,y))) plus{AC,#}(x10,plusAC(s(x),y)) -> plus{AC,#}(x,y) plus{AC,#}(x10,plusAC(s(x),y)) -> plus{AC,#}(x10,s(plusAC(x,y))) Equations: timesAC(timesAC(x2,x3),x4) -> timesAC(x2,timesAC(x3,x4)) timesAC(x2,x3) -> timesAC(x3,x2) plusAC(plusAC(x2,x3),x4) -> plusAC(x2,plusAC(x3,x4)) plusAC(x2,x3) -> plusAC(x3,x2) timesAC(x2,timesAC(x3,x4)) -> timesAC(timesAC(x2,x3),x4) timesAC(x3,x2) -> timesAC(x2,x3) plusAC(x2,plusAC(x3,x4)) -> plusAC(plusAC(x2,x3),x4) plusAC(x3,x2) -> plusAC(x2,x3) TRS: timesAC(x,0()) -> 0() timesAC(x,s(y)) -> plusAC(timesAC(x,y),x) plusAC(x,0()) -> x plusAC(0(),x) -> x plusAC(x,s(y)) -> s(plusAC(x,y)) plusAC(s(x),y) -> s(plusAC(x,y)) S: times{AC,#}(timesAC(x11,x12),x13) -> times{AC,#}(x11,x12) times{AC,#}(x11,timesAC(x12,x13)) -> times{AC,#}(x12,x13) plus{AC,#}(plusAC(x11,x12),x13) -> plus{AC,#}(x11,x12) plus{AC,#}(x11,plusAC(x12,x13)) -> plus{AC,#}(x12,x13) AC-EDG Processor: Equations#: times{AC,#}(timesAC(x2,x3),x4) -> times{AC,#}(x2,timesAC(x3,x4)) times{AC,#}(x2,x3) -> times{AC,#}(x3,x2) plus{AC,#}(plusAC(x2,x3),x4) -> plus{AC,#}(x2,plusAC(x3,x4)) plus{AC,#}(x2,x3) -> plus{AC,#}(x3,x2) times{AC,#}(x2,timesAC(x3,x4)) -> times{AC,#}(timesAC(x2,x3),x4) times{AC,#}(x3,x2) -> times{AC,#}(x2,x3) plus{AC,#}(x2,plusAC(x3,x4)) -> plus{AC,#}(plusAC(x2,x3),x4) plus{AC,#}(x3,x2) -> plus{AC,#}(x2,x3) DPs: times{AC,#}(x,s(y)) -> times{AC,#}(x,y) times{AC,#}(x,s(y)) -> plus{AC,#}(timesAC(x,y),x) plus{AC,#}(x,s(y)) -> plus{AC,#}(x,y) plus{AC,#}(s(x),y) -> plus{AC,#}(x,y) times{AC,#}(x5,timesAC(x,0())) -> times{AC,#}(x5,0()) times{AC,#}(x6,timesAC(x,s(y))) -> times{AC,#}(x,y) times{AC,#}(x6,timesAC(x,s(y))) -> plus{AC,#}(timesAC(x,y),x) times{AC,#}(x6,timesAC(x,s(y))) -> times{AC,#}(x6,plusAC(timesAC(x,y),x)) plus{AC,#}(x7,plusAC(x,0())) -> plus{AC,#}(x7,x) plus{AC,#}(x8,plusAC(0(),x)) -> plus{AC,#}(x8,x) plus{AC,#}(x9,plusAC(x,s(y))) -> plus{AC,#}(x,y) plus{AC,#}(x9,plusAC(x,s(y))) -> plus{AC,#}(x9,s(plusAC(x,y))) plus{AC,#}(x10,plusAC(s(x),y)) -> plus{AC,#}(x,y) plus{AC,#}(x10,plusAC(s(x),y)) -> plus{AC,#}(x10,s(plusAC(x,y))) Equations: timesAC(timesAC(x2,x3),x4) -> timesAC(x2,timesAC(x3,x4)) timesAC(x2,x3) -> timesAC(x3,x2) plusAC(plusAC(x2,x3),x4) -> plusAC(x2,plusAC(x3,x4)) plusAC(x2,x3) -> plusAC(x3,x2) timesAC(x2,timesAC(x3,x4)) -> timesAC(timesAC(x2,x3),x4) timesAC(x3,x2) -> timesAC(x2,x3) plusAC(x2,plusAC(x3,x4)) -> plusAC(plusAC(x2,x3),x4) plusAC(x3,x2) -> plusAC(x2,x3) TRS: timesAC(x,0()) -> 0() timesAC(x,s(y)) -> plusAC(timesAC(x,y),x) plusAC(x,0()) -> x plusAC(0(),x) -> x plusAC(x,s(y)) -> s(plusAC(x,y)) plusAC(s(x),y) -> s(plusAC(x,y)) S: times{AC,#}(timesAC(x11,x12),x13) -> times{AC,#}(x11,x12) times{AC,#}(x11,timesAC(x12,x13)) -> times{AC,#}(x12,x13) plus{AC,#}(plusAC(x11,x12),x13) -> plus{AC,#}(x11,x12) plus{AC,#}(x11,plusAC(x12,x13)) -> plus{AC,#}(x12,x13) SCC Processor: #sccs: 2 #rules: 12 #arcs: 104/196 Equations#: times{AC,#}(timesAC(x2,x3),x4) -> times{AC,#}(x2,timesAC(x3,x4)) times{AC,#}(x2,x3) -> times{AC,#}(x3,x2) plus{AC,#}(plusAC(x2,x3),x4) -> plus{AC,#}(x2,plusAC(x3,x4)) plus{AC,#}(x2,x3) -> plus{AC,#}(x3,x2) times{AC,#}(x2,timesAC(x3,x4)) -> times{AC,#}(timesAC(x2,x3),x4) times{AC,#}(x3,x2) -> times{AC,#}(x2,x3) plus{AC,#}(x2,plusAC(x3,x4)) -> plus{AC,#}(plusAC(x2,x3),x4) plus{AC,#}(x3,x2) -> plus{AC,#}(x2,x3) DPs: times{AC,#}(x6,timesAC(x,s(y))) -> times{AC,#}(x6,plusAC(timesAC(x,y),x)) times{AC,#}(x6,timesAC(x,s(y))) -> times{AC,#}(x,y) times{AC,#}(x5,timesAC(x,0())) -> times{AC,#}(x5,0()) times{AC,#}(x,s(y)) -> times{AC,#}(x,y) Equations: timesAC(timesAC(x2,x3),x4) -> timesAC(x2,timesAC(x3,x4)) timesAC(x2,x3) -> timesAC(x3,x2) plusAC(plusAC(x2,x3),x4) -> plusAC(x2,plusAC(x3,x4)) plusAC(x2,x3) -> plusAC(x3,x2) timesAC(x2,timesAC(x3,x4)) -> timesAC(timesAC(x2,x3),x4) timesAC(x3,x2) -> timesAC(x2,x3) plusAC(x2,plusAC(x3,x4)) -> plusAC(plusAC(x2,x3),x4) plusAC(x3,x2) -> plusAC(x2,x3) TRS: timesAC(x,0()) -> 0() timesAC(x,s(y)) -> plusAC(timesAC(x,y),x) plusAC(x,0()) -> x plusAC(0(),x) -> x plusAC(x,s(y)) -> s(plusAC(x,y)) plusAC(s(x),y) -> s(plusAC(x,y)) S: times{AC,#}(timesAC(x11,x12),x13) -> times{AC,#}(x11,x12) times{AC,#}(x11,timesAC(x12,x13)) -> times{AC,#}(x12,x13) plus{AC,#}(plusAC(x11,x12),x13) -> plus{AC,#}(x11,x12) plus{AC,#}(x11,plusAC(x12,x13)) -> plus{AC,#}(x12,x13) AC-DP unlabeling: Equations#: timesAC(timesAC(x2,x3),x4) -> timesAC(x2,timesAC(x3,x4)) timesAC(x2,x3) -> timesAC(x3,x2) plusAC(plusAC(x2,x3),x4) -> plusAC(x2,plusAC(x3,x4)) plusAC(x2,x3) -> plusAC(x3,x2) timesAC(x2,timesAC(x3,x4)) -> timesAC(timesAC(x2,x3),x4) timesAC(x3,x2) -> timesAC(x2,x3) plusAC(x2,plusAC(x3,x4)) -> plusAC(plusAC(x2,x3),x4) plusAC(x3,x2) -> plusAC(x2,x3) DPs: timesAC(x6,timesAC(x,s(y))) -> timesAC(x6,plusAC(timesAC(x,y),x)) timesAC(x6,timesAC(x,s(y))) -> timesAC(x,y) timesAC(x5,timesAC(x,0())) -> timesAC(x5,0()) timesAC(x,s(y)) -> timesAC(x,y) Equations: timesAC(timesAC(x2,x3),x4) -> timesAC(x2,timesAC(x3,x4)) timesAC(x2,x3) -> timesAC(x3,x2) plusAC(plusAC(x2,x3),x4) -> plusAC(x2,plusAC(x3,x4)) plusAC(x2,x3) -> plusAC(x3,x2) timesAC(x2,timesAC(x3,x4)) -> timesAC(timesAC(x2,x3),x4) timesAC(x3,x2) -> timesAC(x2,x3) plusAC(x2,plusAC(x3,x4)) -> plusAC(plusAC(x2,x3),x4) plusAC(x3,x2) -> plusAC(x2,x3) TRS: timesAC(x,0()) -> 0() timesAC(x,s(y)) -> plusAC(timesAC(x,y),x) plusAC(x,0()) -> x plusAC(0(),x) -> x plusAC(x,s(y)) -> s(plusAC(x,y)) plusAC(s(x),y) -> s(plusAC(x,y)) S: timesAC(timesAC(x11,x12),x13) -> timesAC(x11,x12) timesAC(x11,timesAC(x12,x13)) -> timesAC(x12,x13) plusAC(plusAC(x11,x12),x13) -> plusAC(x11,x12) plusAC(x11,plusAC(x12,x13)) -> plusAC(x12,x13) AC-RPO Processor: argument filtering: pi(plusAC) = [0,1] pi(timesAC) = [0,1] pi(0) = [] pi(s) = [] precedence: timesAC > s > plusAC > 0 status: problem: Equations#: timesAC(timesAC(x2,x3),x4) -> timesAC(x2,timesAC(x3,x4)) timesAC(x2,x3) -> timesAC(x3,x2) plusAC(plusAC(x2,x3),x4) -> plusAC(x2,plusAC(x3,x4)) plusAC(x2,x3) -> plusAC(x3,x2) timesAC(x2,timesAC(x3,x4)) -> timesAC(timesAC(x2,x3),x4) timesAC(x3,x2) -> timesAC(x2,x3) plusAC(x2,plusAC(x3,x4)) -> plusAC(plusAC(x2,x3),x4) plusAC(x3,x2) -> plusAC(x2,x3) DPs: Equations: timesAC(timesAC(x2,x3),x4) -> timesAC(x2,timesAC(x3,x4)) timesAC(x2,x3) -> timesAC(x3,x2) plusAC(plusAC(x2,x3),x4) -> plusAC(x2,plusAC(x3,x4)) plusAC(x2,x3) -> plusAC(x3,x2) timesAC(x2,timesAC(x3,x4)) -> timesAC(timesAC(x2,x3),x4) timesAC(x3,x2) -> timesAC(x2,x3) plusAC(x2,plusAC(x3,x4)) -> plusAC(plusAC(x2,x3),x4) plusAC(x3,x2) -> plusAC(x2,x3) TRS: timesAC(x,0()) -> 0() timesAC(x,s(y)) -> plusAC(timesAC(x,y),x) plusAC(x,0()) -> x plusAC(0(),x) -> x plusAC(x,s(y)) -> s(plusAC(x,y)) plusAC(s(x),y) -> s(plusAC(x,y)) S: timesAC(timesAC(x11,x12),x13) -> timesAC(x11,x12) timesAC(x11,timesAC(x12,x13)) -> timesAC(x12,x13) plusAC(plusAC(x11,x12),x13) -> plusAC(x11,x12) plusAC(x11,plusAC(x12,x13)) -> plusAC(x12,x13) Qed Equations#: times{AC,#}(timesAC(x2,x3),x4) -> times{AC,#}(x2,timesAC(x3,x4)) times{AC,#}(x2,x3) -> times{AC,#}(x3,x2) plus{AC,#}(plusAC(x2,x3),x4) -> plus{AC,#}(x2,plusAC(x3,x4)) plus{AC,#}(x2,x3) -> plus{AC,#}(x3,x2) times{AC,#}(x2,timesAC(x3,x4)) -> times{AC,#}(timesAC(x2,x3),x4) times{AC,#}(x3,x2) -> times{AC,#}(x2,x3) plus{AC,#}(x2,plusAC(x3,x4)) -> plus{AC,#}(plusAC(x2,x3),x4) plus{AC,#}(x3,x2) -> plus{AC,#}(x2,x3) DPs: plus{AC,#}(s(x),y) -> plus{AC,#}(x,y) plus{AC,#}(x10,plusAC(s(x),y)) -> plus{AC,#}(x10,s(plusAC(x,y))) plus{AC,#}(x10,plusAC(s(x),y)) -> plus{AC,#}(x,y) plus{AC,#}(x9,plusAC(x,s(y))) -> plus{AC,#}(x9,s(plusAC(x,y))) plus{AC,#}(x9,plusAC(x,s(y))) -> plus{AC,#}(x,y) plus{AC,#}(x8,plusAC(0(),x)) -> plus{AC,#}(x8,x) plus{AC,#}(x7,plusAC(x,0())) -> plus{AC,#}(x7,x) plus{AC,#}(x,s(y)) -> plus{AC,#}(x,y) Equations: timesAC(timesAC(x2,x3),x4) -> timesAC(x2,timesAC(x3,x4)) timesAC(x2,x3) -> timesAC(x3,x2) plusAC(plusAC(x2,x3),x4) -> plusAC(x2,plusAC(x3,x4)) plusAC(x2,x3) -> plusAC(x3,x2) timesAC(x2,timesAC(x3,x4)) -> timesAC(timesAC(x2,x3),x4) timesAC(x3,x2) -> timesAC(x2,x3) plusAC(x2,plusAC(x3,x4)) -> plusAC(plusAC(x2,x3),x4) plusAC(x3,x2) -> plusAC(x2,x3) TRS: timesAC(x,0()) -> 0() timesAC(x,s(y)) -> plusAC(timesAC(x,y),x) plusAC(x,0()) -> x plusAC(0(),x) -> x plusAC(x,s(y)) -> s(plusAC(x,y)) plusAC(s(x),y) -> s(plusAC(x,y)) S: times{AC,#}(timesAC(x11,x12),x13) -> times{AC,#}(x11,x12) times{AC,#}(x11,timesAC(x12,x13)) -> times{AC,#}(x12,x13) plus{AC,#}(plusAC(x11,x12),x13) -> plus{AC,#}(x11,x12) plus{AC,#}(x11,plusAC(x12,x13)) -> plus{AC,#}(x12,x13) AC-DP unlabeling: Equations#: timesAC(timesAC(x2,x3),x4) -> timesAC(x2,timesAC(x3,x4)) timesAC(x2,x3) -> timesAC(x3,x2) plusAC(plusAC(x2,x3),x4) -> plusAC(x2,plusAC(x3,x4)) plusAC(x2,x3) -> plusAC(x3,x2) timesAC(x2,timesAC(x3,x4)) -> timesAC(timesAC(x2,x3),x4) timesAC(x3,x2) -> timesAC(x2,x3) plusAC(x2,plusAC(x3,x4)) -> plusAC(plusAC(x2,x3),x4) plusAC(x3,x2) -> plusAC(x2,x3) DPs: plusAC(s(x),y) -> plusAC(x,y) plusAC(x10,plusAC(s(x),y)) -> plusAC(x10,s(plusAC(x,y))) plusAC(x10,plusAC(s(x),y)) -> plusAC(x,y) plusAC(x9,plusAC(x,s(y))) -> plusAC(x9,s(plusAC(x,y))) plusAC(x9,plusAC(x,s(y))) -> plusAC(x,y) plusAC(x8,plusAC(0(),x)) -> plusAC(x8,x) plusAC(x7,plusAC(x,0())) -> plusAC(x7,x) plusAC(x,s(y)) -> plusAC(x,y) Equations: timesAC(timesAC(x2,x3),x4) -> timesAC(x2,timesAC(x3,x4)) timesAC(x2,x3) -> timesAC(x3,x2) plusAC(plusAC(x2,x3),x4) -> plusAC(x2,plusAC(x3,x4)) plusAC(x2,x3) -> plusAC(x3,x2) timesAC(x2,timesAC(x3,x4)) -> timesAC(timesAC(x2,x3),x4) timesAC(x3,x2) -> timesAC(x2,x3) plusAC(x2,plusAC(x3,x4)) -> plusAC(plusAC(x2,x3),x4) plusAC(x3,x2) -> plusAC(x2,x3) TRS: timesAC(x,0()) -> 0() timesAC(x,s(y)) -> plusAC(timesAC(x,y),x) plusAC(x,0()) -> x plusAC(0(),x) -> x plusAC(x,s(y)) -> s(plusAC(x,y)) plusAC(s(x),y) -> s(plusAC(x,y)) S: timesAC(timesAC(x11,x12),x13) -> timesAC(x11,x12) timesAC(x11,timesAC(x12,x13)) -> timesAC(x12,x13) plusAC(plusAC(x11,x12),x13) -> plusAC(x11,x12) plusAC(x11,plusAC(x12,x13)) -> plusAC(x12,x13) Usable Rule Processor: Equations#: timesAC(timesAC(x2,x3),x4) -> timesAC(x2,timesAC(x3,x4)) timesAC(x2,x3) -> timesAC(x3,x2) plusAC(plusAC(x2,x3),x4) -> plusAC(x2,plusAC(x3,x4)) plusAC(x2,x3) -> plusAC(x3,x2) timesAC(x2,timesAC(x3,x4)) -> timesAC(timesAC(x2,x3),x4) timesAC(x3,x2) -> timesAC(x2,x3) plusAC(x2,plusAC(x3,x4)) -> plusAC(plusAC(x2,x3),x4) plusAC(x3,x2) -> plusAC(x2,x3) DPs: plusAC(s(x),y) -> plusAC(x,y) plusAC(x10,plusAC(s(x),y)) -> plusAC(x10,s(plusAC(x,y))) plusAC(x10,plusAC(s(x),y)) -> plusAC(x,y) plusAC(x9,plusAC(x,s(y))) -> plusAC(x9,s(plusAC(x,y))) plusAC(x9,plusAC(x,s(y))) -> plusAC(x,y) plusAC(x8,plusAC(0(),x)) -> plusAC(x8,x) plusAC(x7,plusAC(x,0())) -> plusAC(x7,x) plusAC(x,s(y)) -> plusAC(x,y) Equations: timesAC(timesAC(x2,x3),x4) -> timesAC(x2,timesAC(x3,x4)) timesAC(x2,x3) -> timesAC(x3,x2) plusAC(plusAC(x2,x3),x4) -> plusAC(x2,plusAC(x3,x4)) plusAC(x2,x3) -> plusAC(x3,x2) timesAC(x2,timesAC(x3,x4)) -> timesAC(timesAC(x2,x3),x4) timesAC(x3,x2) -> timesAC(x2,x3) plusAC(x2,plusAC(x3,x4)) -> plusAC(plusAC(x2,x3),x4) plusAC(x3,x2) -> plusAC(x2,x3) TRS: plusAC(x,0()) -> x plusAC(0(),x) -> x plusAC(x,s(y)) -> s(plusAC(x,y)) plusAC(s(x),y) -> s(plusAC(x,y)) S: timesAC(timesAC(x11,x12),x13) -> timesAC(x11,x12) timesAC(x11,timesAC(x12,x13)) -> timesAC(x12,x13) plusAC(plusAC(x11,x12),x13) -> plusAC(x11,x12) plusAC(x11,plusAC(x12,x13)) -> plusAC(x12,x13) AC-RPO Processor: argument filtering: pi(plusAC) = [0,1] pi(timesAC) = [0,1] pi(0) = [] pi(s) = [] precedence: 0 > plusAC > s > timesAC status: problem: Equations#: timesAC(timesAC(x2,x3),x4) -> timesAC(x2,timesAC(x3,x4)) timesAC(x2,x3) -> timesAC(x3,x2) plusAC(plusAC(x2,x3),x4) -> plusAC(x2,plusAC(x3,x4)) plusAC(x2,x3) -> plusAC(x3,x2) timesAC(x2,timesAC(x3,x4)) -> timesAC(timesAC(x2,x3),x4) timesAC(x3,x2) -> timesAC(x2,x3) plusAC(x2,plusAC(x3,x4)) -> plusAC(plusAC(x2,x3),x4) plusAC(x3,x2) -> plusAC(x2,x3) DPs: Equations: timesAC(timesAC(x2,x3),x4) -> timesAC(x2,timesAC(x3,x4)) timesAC(x2,x3) -> timesAC(x3,x2) plusAC(plusAC(x2,x3),x4) -> plusAC(x2,plusAC(x3,x4)) plusAC(x2,x3) -> plusAC(x3,x2) timesAC(x2,timesAC(x3,x4)) -> timesAC(timesAC(x2,x3),x4) timesAC(x3,x2) -> timesAC(x2,x3) plusAC(x2,plusAC(x3,x4)) -> plusAC(plusAC(x2,x3),x4) plusAC(x3,x2) -> plusAC(x2,x3) TRS: plusAC(x,0()) -> x plusAC(0(),x) -> x plusAC(x,s(y)) -> s(plusAC(x,y)) plusAC(s(x),y) -> s(plusAC(x,y)) S: timesAC(timesAC(x11,x12),x13) -> timesAC(x11,x12) timesAC(x11,timesAC(x12,x13)) -> timesAC(x12,x13) plusAC(plusAC(x11,x12),x13) -> plusAC(x11,x12) plusAC(x11,plusAC(x12,x13)) -> plusAC(x12,x13) Qed