/export/starexec/sandbox/solver/bin/starexec_run_standard /export/starexec/sandbox/benchmark/theBenchmark.xml /export/starexec/sandbox/output/output_files -------------------------------------------------------------------------------- YES proof of /export/starexec/sandbox/benchmark/theBenchmark.xml # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty Termination of the given ETRS could be proven: (0) ETRS (1) EquationalDependencyPairsProof [EQUIVALENT, 56 ms] (2) EDP (3) EDependencyGraphProof [EQUIVALENT, 0 ms] (4) AND (5) EDP (6) ESharpUsableEquationsProof [EQUIVALENT, 0 ms] (7) EDP (8) EUsableRulesReductionPairsProof [EQUIVALENT, 0 ms] (9) EDP (10) EDependencyGraphProof [EQUIVALENT, 0 ms] (11) TRUE (12) EDP (13) ESharpUsableEquationsProof [EQUIVALENT, 1 ms] (14) EDP (15) EUsableRulesReductionPairsProof [EQUIVALENT, 75 ms] (16) EDP (17) EDependencyGraphProof [EQUIVALENT, 0 ms] (18) TRUE (19) EDP (20) ESharpUsableEquationsProof [EQUIVALENT, 0 ms] (21) EDP (22) EDPPoloProof [EQUIVALENT, 180 ms] (23) EDP (24) PisEmptyProof [EQUIVALENT, 0 ms] (25) YES (26) EDP (27) ESharpUsableEquationsProof [EQUIVALENT, 0 ms] (28) EDP (29) EDPPoloProof [EQUIVALENT, 16.2 s] (30) EDP (31) EDependencyGraphProof [EQUIVALENT, 0 ms] (32) EDP (33) EDPPoloProof [EQUIVALENT, 37.1 s] (34) EDP (35) EDPPoloProof [EQUIVALENT, 26.2 s] (36) EDP (37) EDPPoloProof [EQUIVALENT, 36.9 s] (38) EDP (39) PisEmptyProof [EQUIVALENT, 0 ms] (40) YES (41) EDP (42) ESharpUsableEquationsProof [EQUIVALENT, 0 ms] (43) EDP (44) EDPPoloProof [EQUIVALENT, 140.2 s] (45) EDP (46) PisEmptyProof [EQUIVALENT, 0 ms] (47) YES ---------------------------------------- (0) Obligation: Equational rewrite system: The TRS R consists of the following rules: U101(tt, A, B) -> U102(isBoolKind(A), A, B) U102(tt, A, B) -> U103(isBool(B), A, B) U103(tt, A, B) -> U104(isBoolKind(B), A, B) U104(tt, A, B) -> _xor_(_and_(A, B), _xor_(A, B)) U11(tt, A) -> U12(isBoolKind(A), A) U111(tt, A) -> U112(isBoolKind(A)) U112(tt) -> false U12(tt, A) -> A U121(tt, A) -> U122(isBoolKind(A), A) U122(tt, A) -> A U131(tt, B, U', U) -> U132(isBoolKind(B), B, U', U) U132(tt, B, U', U) -> U133(isS(U'), B, U', U) U133(tt, B, U', U) -> U134(isSKind(U'), B, U', U) U134(tt, B, U', U) -> U135(isS(U), B, U', U) U135(tt, B, U', U) -> U136(isSKind(U), B, U') U136(tt, B, U') -> U137(equal(_isNotEqualTo_(B, true), true), U') U137(tt, U') -> U' U141(tt, U', U) -> U142(isSKind(U'), U) U142(tt, U) -> U143(isS(U), U) U143(tt, U) -> U144(isSKind(U), U) U144(tt, U) -> U U151(tt, V1, V2) -> U152(isBoolKind(V1), V1, V2) U152(tt, V1, V2) -> U153(isBoolKind(V2), V1, V2) U153(tt, V1, V2) -> U154(isBoolKind(V2), V1, V2) U154(tt, V1, V2) -> U155(isBool(V1), V2) U155(tt, V2) -> U156(isBool(V2)) U156(tt) -> tt U161(tt, V1, V2) -> U162(isBoolKind(V1), V1, V2) U162(tt, V1, V2) -> U163(isBoolKind(V2), V1, V2) U163(tt, V1, V2) -> U164(isBoolKind(V2), V1, V2) U164(tt, V1, V2) -> U165(isBool(V1), V2) U165(tt, V2) -> U166(isBool(V2)) U166(tt) -> tt U171(tt, V1, V2) -> U172(isBoolKind(V1), V1, V2) U172(tt, V1, V2) -> U173(isBoolKind(V2), V1, V2) U173(tt, V1, V2) -> U174(isBoolKind(V2), V1, V2) U174(tt, V1, V2) -> U175(isBool(V1), V2) U175(tt, V2) -> U176(isBool(V2)) U176(tt) -> tt U181(tt, V1, V2) -> U182(isBoolKind(V1), V1, V2) U182(tt, V1, V2) -> U183(isBoolKind(V2), V1, V2) U183(tt, V1, V2) -> U184(isBoolKind(V2), V1, V2) U184(tt, V1, V2) -> U185(isBool(V1), V2) U185(tt, V2) -> U186(isBool(V2)) U186(tt) -> tt U191(tt, V1) -> U192(isBoolKind(V1), V1) U192(tt, V1) -> U193(isBool(V1)) U193(tt) -> tt U201(tt, V2) -> U202(isBoolKind(V2)) U202(tt) -> tt U21(tt, A, B, C) -> U22(isBoolKind(A), A, B, C) U211(tt, V2) -> U212(isBoolKind(V2)) U212(tt) -> tt U22(tt, A, B, C) -> U23(isBool(B), A, B, C) U221(tt, V2) -> U222(isBoolKind(V2)) U222(tt) -> tt U23(tt, A, B, C) -> U24(isBoolKind(B), A, B, C) U231(tt, V2) -> U232(isBoolKind(V2)) U232(tt) -> tt U24(tt, A, B, C) -> U25(isBool(C), A, B, C) U241(tt) -> tt U25(tt, A, B, C) -> U26(isBoolKind(C), A, B, C) U251(tt, A) -> U252(isBoolKind(A), A) U252(tt, A) -> _xor_(A, true) U26(tt, A, B, C) -> _xor_(_and_(A, B), _and_(A, C)) U31(tt, A) -> U32(isBoolKind(A)) U32(tt) -> false U41(tt, A) -> U42(isBoolKind(A), A) U42(tt, A) -> A U51(tt, A, B) -> U52(isBoolKind(A), A, B) U52(tt, A, B) -> U53(isBool(B), A, B) U53(tt, A, B) -> U54(isBoolKind(B), A, B) U54(tt, A, B) -> not_(_xor_(A, _and_(A, B))) U61(tt, U', U) -> U62(isSKind(U'), U', U) U62(tt, U', U) -> U63(isS(U), U', U) U63(tt, U', U) -> U64(isSKind(U), U', U) U64(tt, U', U) -> U65(equal(_isNotEqualTo_(U, U'), true)) U65(tt) -> false U71(tt, U) -> U72(isSKind(U)) U72(tt) -> true U81(tt, U', U) -> U82(isSKind(U'), U', U) U82(tt, U', U) -> U83(isS(U), U', U) U83(tt, U', U) -> U84(isSKind(U), U', U) U84(tt, U', U) -> if_then_else_fi(_isEqualTo_(U, U'), false, true) U91(tt, U) -> U92(isSKind(U)) U92(tt) -> false _and_(A, A) -> U11(isBool(A), A) _and_(A, _xor_(B, C)) -> U21(isBool(A), A, B, C) _and_(false, A) -> U31(isBool(A), A) _and_(true, A) -> U41(isBool(A), A) _implies_(A, B) -> U51(isBool(A), A, B) _isEqualTo_(U, U') -> U61(isS(U'), U', U) _isEqualTo_(U, U) -> U71(isS(U), U) _isNotEqualTo_(U, U') -> U81(isS(U'), U', U) _isNotEqualTo_(U, U) -> U91(isS(U), U) _or_(A, B) -> U101(isBool(A), A, B) _xor_(A, A) -> U111(isBool(A), A) _xor_(false, A) -> U121(isBool(A), A) equal(X, X) -> tt if_then_else_fi(B, U, U') -> U131(isBool(B), B, U', U) if_then_else_fi(true, U, U') -> U141(isS(U'), U', U) isBool(false) -> tt isBool(true) -> tt isBool(_and_(V1, V2)) -> U151(isBoolKind(V1), V1, V2) isBool(_implies_(V1, V2)) -> U161(isBoolKind(V1), V1, V2) isBool(_isEqualTo_(V1, V2)) -> tt isBool(_isNotEqualTo_(V1, V2)) -> tt isBool(_or_(V1, V2)) -> U171(isBoolKind(V1), V1, V2) isBool(_xor_(V1, V2)) -> U181(isBoolKind(V1), V1, V2) isBool(not_(V1)) -> U191(isBoolKind(V1), V1) isBoolKind(false) -> tt isBoolKind(true) -> tt isBoolKind(_and_(V1, V2)) -> U201(isBoolKind(V1), V2) isBoolKind(_implies_(V1, V2)) -> U211(isBoolKind(V1), V2) isBoolKind(_isEqualTo_(V1, V2)) -> tt isBoolKind(_isNotEqualTo_(V1, V2)) -> tt isBoolKind(_or_(V1, V2)) -> U221(isBoolKind(V1), V2) isBoolKind(_xor_(V1, V2)) -> U231(isBoolKind(V1), V2) isBoolKind(not_(V1)) -> U241(isBoolKind(V1)) not_(A) -> U251(isBool(A), A) not_(false) -> true not_(true) -> false The set E consists of the following equations: _and_(x, y) == _and_(y, x) _or_(x, y) == _or_(y, x) _xor_(x, y) == _xor_(y, x) _and_(_and_(x, y), z) == _and_(x, _and_(y, z)) _or_(_or_(x, y), z) == _or_(x, _or_(y, z)) _xor_(_xor_(x, y), z) == _xor_(x, _xor_(y, z)) ---------------------------------------- (1) EquationalDependencyPairsProof (EQUIVALENT) Using Dependency Pairs [AG00,DA_STEIN] we result in the following initial EDP problem: The TRS P consists of the following rules: U101^1(tt, A, B) -> U102^1(isBoolKind(A), A, B) U101^1(tt, A, B) -> ISBOOLKIND(A) U102^1(tt, A, B) -> U103^1(isBool(B), A, B) U102^1(tt, A, B) -> ISBOOL(B) U103^1(tt, A, B) -> U104^1(isBoolKind(B), A, B) U103^1(tt, A, B) -> ISBOOLKIND(B) U104^1(tt, A, B) -> _XOR_(_and_(A, B), _xor_(A, B)) U104^1(tt, A, B) -> _AND_(A, B) U104^1(tt, A, B) -> _XOR_(A, B) U11^1(tt, A) -> U12^1(isBoolKind(A), A) U11^1(tt, A) -> ISBOOLKIND(A) U111^1(tt, A) -> U112^1(isBoolKind(A)) U111^1(tt, A) -> ISBOOLKIND(A) U121^1(tt, A) -> U122^1(isBoolKind(A), A) U121^1(tt, A) -> ISBOOLKIND(A) U131^1(tt, B, U', U) -> U132^1(isBoolKind(B), B, U', U) U131^1(tt, B, U', U) -> ISBOOLKIND(B) U132^1(tt, B, U', U) -> U133^1(isS(U'), B, U', U) U133^1(tt, B, U', U) -> U134^1(isSKind(U'), B, U', U) U134^1(tt, B, U', U) -> U135^1(isS(U), B, U', U) U135^1(tt, B, U', U) -> U136^1(isSKind(U), B, U') U136^1(tt, B, U') -> U137^1(equal(_isNotEqualTo_(B, true), true), U') U136^1(tt, B, U') -> EQUAL(_isNotEqualTo_(B, true), true) U136^1(tt, B, U') -> _ISNOTEQUALTO_(B, true) U141^1(tt, U', U) -> U142^1(isSKind(U'), U) U142^1(tt, U) -> U143^1(isS(U), U) U143^1(tt, U) -> U144^1(isSKind(U), U) U151^1(tt, V1, V2) -> U152^1(isBoolKind(V1), V1, V2) U151^1(tt, V1, V2) -> ISBOOLKIND(V1) U152^1(tt, V1, V2) -> U153^1(isBoolKind(V2), V1, V2) U152^1(tt, V1, V2) -> ISBOOLKIND(V2) U153^1(tt, V1, V2) -> U154^1(isBoolKind(V2), V1, V2) U153^1(tt, V1, V2) -> ISBOOLKIND(V2) U154^1(tt, V1, V2) -> U155^1(isBool(V1), V2) U154^1(tt, V1, V2) -> ISBOOL(V1) U155^1(tt, V2) -> U156^1(isBool(V2)) U155^1(tt, V2) -> ISBOOL(V2) U161^1(tt, V1, V2) -> U162^1(isBoolKind(V1), V1, V2) U161^1(tt, V1, V2) -> ISBOOLKIND(V1) U162^1(tt, V1, V2) -> U163^1(isBoolKind(V2), V1, V2) U162^1(tt, V1, V2) -> ISBOOLKIND(V2) U163^1(tt, V1, V2) -> U164^1(isBoolKind(V2), V1, V2) U163^1(tt, V1, V2) -> ISBOOLKIND(V2) U164^1(tt, V1, V2) -> U165^1(isBool(V1), V2) U164^1(tt, V1, V2) -> ISBOOL(V1) U165^1(tt, V2) -> U166^1(isBool(V2)) U165^1(tt, V2) -> ISBOOL(V2) U171^1(tt, V1, V2) -> U172^1(isBoolKind(V1), V1, V2) U171^1(tt, V1, V2) -> ISBOOLKIND(V1) U172^1(tt, V1, V2) -> U173^1(isBoolKind(V2), V1, V2) U172^1(tt, V1, V2) -> ISBOOLKIND(V2) U173^1(tt, V1, V2) -> U174^1(isBoolKind(V2), V1, V2) U173^1(tt, V1, V2) -> ISBOOLKIND(V2) U174^1(tt, V1, V2) -> U175^1(isBool(V1), V2) U174^1(tt, V1, V2) -> ISBOOL(V1) U175^1(tt, V2) -> U176^1(isBool(V2)) U175^1(tt, V2) -> ISBOOL(V2) U181^1(tt, V1, V2) -> U182^1(isBoolKind(V1), V1, V2) U181^1(tt, V1, V2) -> ISBOOLKIND(V1) U182^1(tt, V1, V2) -> U183^1(isBoolKind(V2), V1, V2) U182^1(tt, V1, V2) -> ISBOOLKIND(V2) U183^1(tt, V1, V2) -> U184^1(isBoolKind(V2), V1, V2) U183^1(tt, V1, V2) -> ISBOOLKIND(V2) U184^1(tt, V1, V2) -> U185^1(isBool(V1), V2) U184^1(tt, V1, V2) -> ISBOOL(V1) U185^1(tt, V2) -> U186^1(isBool(V2)) U185^1(tt, V2) -> ISBOOL(V2) U191^1(tt, V1) -> U192^1(isBoolKind(V1), V1) U191^1(tt, V1) -> ISBOOLKIND(V1) U192^1(tt, V1) -> U193^1(isBool(V1)) U192^1(tt, V1) -> ISBOOL(V1) U201^1(tt, V2) -> U202^1(isBoolKind(V2)) U201^1(tt, V2) -> ISBOOLKIND(V2) U21^1(tt, A, B, C) -> U22^1(isBoolKind(A), A, B, C) U21^1(tt, A, B, C) -> ISBOOLKIND(A) U211^1(tt, V2) -> U212^1(isBoolKind(V2)) U211^1(tt, V2) -> ISBOOLKIND(V2) U22^1(tt, A, B, C) -> U23^1(isBool(B), A, B, C) U22^1(tt, A, B, C) -> ISBOOL(B) U221^1(tt, V2) -> U222^1(isBoolKind(V2)) U221^1(tt, V2) -> ISBOOLKIND(V2) U23^1(tt, A, B, C) -> U24^1(isBoolKind(B), A, B, C) U23^1(tt, A, B, C) -> ISBOOLKIND(B) U231^1(tt, V2) -> U232^1(isBoolKind(V2)) U231^1(tt, V2) -> ISBOOLKIND(V2) U24^1(tt, A, B, C) -> U25^1(isBool(C), A, B, C) U24^1(tt, A, B, C) -> ISBOOL(C) U25^1(tt, A, B, C) -> U26^1(isBoolKind(C), A, B, C) U25^1(tt, A, B, C) -> ISBOOLKIND(C) U251^1(tt, A) -> U252^1(isBoolKind(A), A) U251^1(tt, A) -> ISBOOLKIND(A) U252^1(tt, A) -> _XOR_(A, true) U26^1(tt, A, B, C) -> _XOR_(_and_(A, B), _and_(A, C)) U26^1(tt, A, B, C) -> _AND_(A, B) U26^1(tt, A, B, C) -> _AND_(A, C) U31^1(tt, A) -> U32^1(isBoolKind(A)) U31^1(tt, A) -> ISBOOLKIND(A) U41^1(tt, A) -> U42^1(isBoolKind(A), A) U41^1(tt, A) -> ISBOOLKIND(A) U51^1(tt, A, B) -> U52^1(isBoolKind(A), A, B) U51^1(tt, A, B) -> ISBOOLKIND(A) U52^1(tt, A, B) -> U53^1(isBool(B), A, B) U52^1(tt, A, B) -> ISBOOL(B) U53^1(tt, A, B) -> U54^1(isBoolKind(B), A, B) U53^1(tt, A, B) -> ISBOOLKIND(B) U54^1(tt, A, B) -> NOT_(_xor_(A, _and_(A, B))) U54^1(tt, A, B) -> _XOR_(A, _and_(A, B)) U54^1(tt, A, B) -> _AND_(A, B) U61^1(tt, U', U) -> U62^1(isSKind(U'), U', U) U62^1(tt, U', U) -> U63^1(isS(U), U', U) U63^1(tt, U', U) -> U64^1(isSKind(U), U', U) U64^1(tt, U', U) -> U65^1(equal(_isNotEqualTo_(U, U'), true)) U64^1(tt, U', U) -> EQUAL(_isNotEqualTo_(U, U'), true) U64^1(tt, U', U) -> _ISNOTEQUALTO_(U, U') U71^1(tt, U) -> U72^1(isSKind(U)) U81^1(tt, U', U) -> U82^1(isSKind(U'), U', U) U82^1(tt, U', U) -> U83^1(isS(U), U', U) U83^1(tt, U', U) -> U84^1(isSKind(U), U', U) U84^1(tt, U', U) -> IF_THEN_ELSE_FI(_isEqualTo_(U, U'), false, true) U84^1(tt, U', U) -> _ISEQUALTO_(U, U') U91^1(tt, U) -> U92^1(isSKind(U)) _AND_(A, A) -> U11^1(isBool(A), A) _AND_(A, A) -> ISBOOL(A) _AND_(A, _xor_(B, C)) -> U21^1(isBool(A), A, B, C) _AND_(A, _xor_(B, C)) -> ISBOOL(A) _AND_(false, A) -> U31^1(isBool(A), A) _AND_(false, A) -> ISBOOL(A) _AND_(true, A) -> U41^1(isBool(A), A) _AND_(true, A) -> ISBOOL(A) _IMPLIES_(A, B) -> U51^1(isBool(A), A, B) _IMPLIES_(A, B) -> ISBOOL(A) _ISEQUALTO_(U, U') -> U61^1(isS(U'), U', U) _ISEQUALTO_(U, U) -> U71^1(isS(U), U) _ISNOTEQUALTO_(U, U') -> U81^1(isS(U'), U', U) _ISNOTEQUALTO_(U, U) -> U91^1(isS(U), U) _OR_(A, B) -> U101^1(isBool(A), A, B) _OR_(A, B) -> ISBOOL(A) _XOR_(A, A) -> U111^1(isBool(A), A) _XOR_(A, A) -> ISBOOL(A) _XOR_(false, A) -> U121^1(isBool(A), A) _XOR_(false, A) -> ISBOOL(A) IF_THEN_ELSE_FI(B, U, U') -> U131^1(isBool(B), B, U', U) IF_THEN_ELSE_FI(B, U, U') -> ISBOOL(B) IF_THEN_ELSE_FI(true, U, U') -> U141^1(isS(U'), U', U) ISBOOL(_and_(V1, V2)) -> U151^1(isBoolKind(V1), V1, V2) ISBOOL(_and_(V1, V2)) -> ISBOOLKIND(V1) ISBOOL(_implies_(V1, V2)) -> U161^1(isBoolKind(V1), V1, V2) ISBOOL(_implies_(V1, V2)) -> ISBOOLKIND(V1) ISBOOL(_or_(V1, V2)) -> U171^1(isBoolKind(V1), V1, V2) ISBOOL(_or_(V1, V2)) -> ISBOOLKIND(V1) ISBOOL(_xor_(V1, V2)) -> U181^1(isBoolKind(V1), V1, V2) ISBOOL(_xor_(V1, V2)) -> ISBOOLKIND(V1) ISBOOL(not_(V1)) -> U191^1(isBoolKind(V1), V1) ISBOOL(not_(V1)) -> ISBOOLKIND(V1) ISBOOLKIND(_and_(V1, V2)) -> U201^1(isBoolKind(V1), V2) ISBOOLKIND(_and_(V1, V2)) -> ISBOOLKIND(V1) ISBOOLKIND(_implies_(V1, V2)) -> U211^1(isBoolKind(V1), V2) ISBOOLKIND(_implies_(V1, V2)) -> ISBOOLKIND(V1) ISBOOLKIND(_or_(V1, V2)) -> U221^1(isBoolKind(V1), V2) ISBOOLKIND(_or_(V1, V2)) -> ISBOOLKIND(V1) ISBOOLKIND(_xor_(V1, V2)) -> U231^1(isBoolKind(V1), V2) ISBOOLKIND(_xor_(V1, V2)) -> ISBOOLKIND(V1) ISBOOLKIND(not_(V1)) -> U241^1(isBoolKind(V1)) ISBOOLKIND(not_(V1)) -> ISBOOLKIND(V1) NOT_(A) -> U251^1(isBool(A), A) NOT_(A) -> ISBOOL(A) _AND_(_and_(A, A), ext) -> _AND_(U11(isBool(A), A), ext) _AND_(_and_(A, A), ext) -> U11^1(isBool(A), A) _AND_(_and_(A, A), ext) -> ISBOOL(A) _AND_(_and_(A, _xor_(B, C)), ext) -> _AND_(U21(isBool(A), A, B, C), ext) _AND_(_and_(A, _xor_(B, C)), ext) -> U21^1(isBool(A), A, B, C) _AND_(_and_(A, _xor_(B, C)), ext) -> ISBOOL(A) _AND_(_and_(false, A), ext) -> _AND_(U31(isBool(A), A), ext) _AND_(_and_(false, A), ext) -> U31^1(isBool(A), A) _AND_(_and_(false, A), ext) -> ISBOOL(A) _AND_(_and_(true, A), ext) -> _AND_(U41(isBool(A), A), ext) _AND_(_and_(true, A), ext) -> U41^1(isBool(A), A) _AND_(_and_(true, A), ext) -> ISBOOL(A) _OR_(_or_(A, B), ext) -> _OR_(U101(isBool(A), A, B), ext) _OR_(_or_(A, B), ext) -> U101^1(isBool(A), A, B) _OR_(_or_(A, B), ext) -> ISBOOL(A) _XOR_(_xor_(A, A), ext) -> _XOR_(U111(isBool(A), A), ext) _XOR_(_xor_(A, A), ext) -> U111^1(isBool(A), A) _XOR_(_xor_(A, A), ext) -> ISBOOL(A) _XOR_(_xor_(false, A), ext) -> _XOR_(U121(isBool(A), A), ext) _XOR_(_xor_(false, A), ext) -> U121^1(isBool(A), A) _XOR_(_xor_(false, A), ext) -> ISBOOL(A) The TRS R consists of the following rules: U101(tt, A, B) -> U102(isBoolKind(A), A, B) U102(tt, A, B) -> U103(isBool(B), A, B) U103(tt, A, B) -> U104(isBoolKind(B), A, B) U104(tt, A, B) -> _xor_(_and_(A, B), _xor_(A, B)) U11(tt, A) -> U12(isBoolKind(A), A) U111(tt, A) -> U112(isBoolKind(A)) U112(tt) -> false U12(tt, A) -> A U121(tt, A) -> U122(isBoolKind(A), A) U122(tt, A) -> A U131(tt, B, U', U) -> U132(isBoolKind(B), B, U', U) U132(tt, B, U', U) -> U133(isS(U'), B, U', U) U133(tt, B, U', U) -> U134(isSKind(U'), B, U', U) U134(tt, B, U', U) -> U135(isS(U), B, U', U) U135(tt, B, U', U) -> U136(isSKind(U), B, U') U136(tt, B, U') -> U137(equal(_isNotEqualTo_(B, true), true), U') U137(tt, U') -> U' U141(tt, U', U) -> U142(isSKind(U'), U) U142(tt, U) -> U143(isS(U), U) U143(tt, U) -> U144(isSKind(U), U) U144(tt, U) -> U U151(tt, V1, V2) -> U152(isBoolKind(V1), V1, V2) U152(tt, V1, V2) -> U153(isBoolKind(V2), V1, V2) U153(tt, V1, V2) -> U154(isBoolKind(V2), V1, V2) U154(tt, V1, V2) -> U155(isBool(V1), V2) U155(tt, V2) -> U156(isBool(V2)) U156(tt) -> tt U161(tt, V1, V2) -> U162(isBoolKind(V1), V1, V2) U162(tt, V1, V2) -> U163(isBoolKind(V2), V1, V2) U163(tt, V1, V2) -> U164(isBoolKind(V2), V1, V2) U164(tt, V1, V2) -> U165(isBool(V1), V2) U165(tt, V2) -> U166(isBool(V2)) U166(tt) -> tt U171(tt, V1, V2) -> U172(isBoolKind(V1), V1, V2) U172(tt, V1, V2) -> U173(isBoolKind(V2), V1, V2) U173(tt, V1, V2) -> U174(isBoolKind(V2), V1, V2) U174(tt, V1, V2) -> U175(isBool(V1), V2) U175(tt, V2) -> U176(isBool(V2)) U176(tt) -> tt U181(tt, V1, V2) -> U182(isBoolKind(V1), V1, V2) U182(tt, V1, V2) -> U183(isBoolKind(V2), V1, V2) U183(tt, V1, V2) -> U184(isBoolKind(V2), V1, V2) U184(tt, V1, V2) -> U185(isBool(V1), V2) U185(tt, V2) -> U186(isBool(V2)) U186(tt) -> tt U191(tt, V1) -> U192(isBoolKind(V1), V1) U192(tt, V1) -> U193(isBool(V1)) U193(tt) -> tt U201(tt, V2) -> U202(isBoolKind(V2)) U202(tt) -> tt U21(tt, A, B, C) -> U22(isBoolKind(A), A, B, C) U211(tt, V2) -> U212(isBoolKind(V2)) U212(tt) -> tt U22(tt, A, B, C) -> U23(isBool(B), A, B, C) U221(tt, V2) -> U222(isBoolKind(V2)) U222(tt) -> tt U23(tt, A, B, C) -> U24(isBoolKind(B), A, B, C) U231(tt, V2) -> U232(isBoolKind(V2)) U232(tt) -> tt U24(tt, A, B, C) -> U25(isBool(C), A, B, C) U241(tt) -> tt U25(tt, A, B, C) -> U26(isBoolKind(C), A, B, C) U251(tt, A) -> U252(isBoolKind(A), A) U252(tt, A) -> _xor_(A, true) U26(tt, A, B, C) -> _xor_(_and_(A, B), _and_(A, C)) U31(tt, A) -> U32(isBoolKind(A)) U32(tt) -> false U41(tt, A) -> U42(isBoolKind(A), A) U42(tt, A) -> A U51(tt, A, B) -> U52(isBoolKind(A), A, B) U52(tt, A, B) -> U53(isBool(B), A, B) U53(tt, A, B) -> U54(isBoolKind(B), A, B) U54(tt, A, B) -> not_(_xor_(A, _and_(A, B))) U61(tt, U', U) -> U62(isSKind(U'), U', U) U62(tt, U', U) -> U63(isS(U), U', U) U63(tt, U', U) -> U64(isSKind(U), U', U) U64(tt, U', U) -> U65(equal(_isNotEqualTo_(U, U'), true)) U65(tt) -> false U71(tt, U) -> U72(isSKind(U)) U72(tt) -> true U81(tt, U', U) -> U82(isSKind(U'), U', U) U82(tt, U', U) -> U83(isS(U), U', U) U83(tt, U', U) -> U84(isSKind(U), U', U) U84(tt, U', U) -> if_then_else_fi(_isEqualTo_(U, U'), false, true) U91(tt, U) -> U92(isSKind(U)) U92(tt) -> false _and_(A, A) -> U11(isBool(A), A) _and_(A, _xor_(B, C)) -> U21(isBool(A), A, B, C) _and_(false, A) -> U31(isBool(A), A) _and_(true, A) -> U41(isBool(A), A) _implies_(A, B) -> U51(isBool(A), A, B) _isEqualTo_(U, U') -> U61(isS(U'), U', U) _isEqualTo_(U, U) -> U71(isS(U), U) _isNotEqualTo_(U, U') -> U81(isS(U'), U', U) _isNotEqualTo_(U, U) -> U91(isS(U), U) _or_(A, B) -> U101(isBool(A), A, B) _xor_(A, A) -> U111(isBool(A), A) _xor_(false, A) -> U121(isBool(A), A) equal(X, X) -> tt if_then_else_fi(B, U, U') -> U131(isBool(B), B, U', U) if_then_else_fi(true, U, U') -> U141(isS(U'), U', U) isBool(false) -> tt isBool(true) -> tt isBool(_and_(V1, V2)) -> U151(isBoolKind(V1), V1, V2) isBool(_implies_(V1, V2)) -> U161(isBoolKind(V1), V1, V2) isBool(_isEqualTo_(V1, V2)) -> tt isBool(_isNotEqualTo_(V1, V2)) -> tt isBool(_or_(V1, V2)) -> U171(isBoolKind(V1), V1, V2) isBool(_xor_(V1, V2)) -> U181(isBoolKind(V1), V1, V2) isBool(not_(V1)) -> U191(isBoolKind(V1), V1) isBoolKind(false) -> tt isBoolKind(true) -> tt isBoolKind(_and_(V1, V2)) -> U201(isBoolKind(V1), V2) isBoolKind(_implies_(V1, V2)) -> U211(isBoolKind(V1), V2) isBoolKind(_isEqualTo_(V1, V2)) -> tt isBoolKind(_isNotEqualTo_(V1, V2)) -> tt isBoolKind(_or_(V1, V2)) -> U221(isBoolKind(V1), V2) isBoolKind(_xor_(V1, V2)) -> U231(isBoolKind(V1), V2) isBoolKind(not_(V1)) -> U241(isBoolKind(V1)) not_(A) -> U251(isBool(A), A) not_(false) -> true not_(true) -> false _and_(_and_(A, A), ext) -> _and_(U11(isBool(A), A), ext) _and_(_and_(A, _xor_(B, C)), ext) -> _and_(U21(isBool(A), A, B, C), ext) _and_(_and_(false, A), ext) -> _and_(U31(isBool(A), A), ext) _and_(_and_(true, A), ext) -> _and_(U41(isBool(A), A), ext) _or_(_or_(A, B), ext) -> _or_(U101(isBool(A), A, B), ext) _xor_(_xor_(A, A), ext) -> _xor_(U111(isBool(A), A), ext) _xor_(_xor_(false, A), ext) -> _xor_(U121(isBool(A), A), ext) The set E consists of the following equations: _and_(x, y) == _and_(y, x) _or_(x, y) == _or_(y, x) _xor_(x, y) == _xor_(y, x) _and_(_and_(x, y), z) == _and_(x, _and_(y, z)) _or_(_or_(x, y), z) == _or_(x, _or_(y, z)) _xor_(_xor_(x, y), z) == _xor_(x, _xor_(y, z)) The set E# consists of the following equations: _AND_(x, y) == _AND_(y, x) _OR_(x, y) == _OR_(y, x) _XOR_(x, y) == _XOR_(y, x) _AND_(_and_(x, y), z) == _AND_(x, _and_(y, z)) _OR_(_or_(x, y), z) == _OR_(x, _or_(y, z)) _XOR_(_xor_(x, y), z) == _XOR_(x, _xor_(y, z)) We have to consider all minimal (P,E#,R,E)-chains ---------------------------------------- (2) Obligation: The TRS P consists of the following rules: U101^1(tt, A, B) -> U102^1(isBoolKind(A), A, B) U101^1(tt, A, B) -> ISBOOLKIND(A) U102^1(tt, A, B) -> U103^1(isBool(B), A, B) U102^1(tt, A, B) -> ISBOOL(B) U103^1(tt, A, B) -> U104^1(isBoolKind(B), A, B) U103^1(tt, A, B) -> ISBOOLKIND(B) U104^1(tt, A, B) -> _XOR_(_and_(A, B), _xor_(A, B)) U104^1(tt, A, B) -> _AND_(A, B) U104^1(tt, A, B) -> _XOR_(A, B) U11^1(tt, A) -> U12^1(isBoolKind(A), A) U11^1(tt, A) -> ISBOOLKIND(A) U111^1(tt, A) -> U112^1(isBoolKind(A)) U111^1(tt, A) -> ISBOOLKIND(A) U121^1(tt, A) -> U122^1(isBoolKind(A), A) U121^1(tt, A) -> ISBOOLKIND(A) U131^1(tt, B, U', U) -> U132^1(isBoolKind(B), B, U', U) U131^1(tt, B, U', U) -> ISBOOLKIND(B) U132^1(tt, B, U', U) -> U133^1(isS(U'), B, U', U) U133^1(tt, B, U', U) -> U134^1(isSKind(U'), B, U', U) U134^1(tt, B, U', U) -> U135^1(isS(U), B, U', U) U135^1(tt, B, U', U) -> U136^1(isSKind(U), B, U') U136^1(tt, B, U') -> U137^1(equal(_isNotEqualTo_(B, true), true), U') U136^1(tt, B, U') -> EQUAL(_isNotEqualTo_(B, true), true) U136^1(tt, B, U') -> _ISNOTEQUALTO_(B, true) U141^1(tt, U', U) -> U142^1(isSKind(U'), U) U142^1(tt, U) -> U143^1(isS(U), U) U143^1(tt, U) -> U144^1(isSKind(U), U) U151^1(tt, V1, V2) -> U152^1(isBoolKind(V1), V1, V2) U151^1(tt, V1, V2) -> ISBOOLKIND(V1) U152^1(tt, V1, V2) -> U153^1(isBoolKind(V2), V1, V2) U152^1(tt, V1, V2) -> ISBOOLKIND(V2) U153^1(tt, V1, V2) -> U154^1(isBoolKind(V2), V1, V2) U153^1(tt, V1, V2) -> ISBOOLKIND(V2) U154^1(tt, V1, V2) -> U155^1(isBool(V1), V2) U154^1(tt, V1, V2) -> ISBOOL(V1) U155^1(tt, V2) -> U156^1(isBool(V2)) U155^1(tt, V2) -> ISBOOL(V2) U161^1(tt, V1, V2) -> U162^1(isBoolKind(V1), V1, V2) U161^1(tt, V1, V2) -> ISBOOLKIND(V1) U162^1(tt, V1, V2) -> U163^1(isBoolKind(V2), V1, V2) U162^1(tt, V1, V2) -> ISBOOLKIND(V2) U163^1(tt, V1, V2) -> U164^1(isBoolKind(V2), V1, V2) U163^1(tt, V1, V2) -> ISBOOLKIND(V2) U164^1(tt, V1, V2) -> U165^1(isBool(V1), V2) U164^1(tt, V1, V2) -> ISBOOL(V1) U165^1(tt, V2) -> U166^1(isBool(V2)) U165^1(tt, V2) -> ISBOOL(V2) U171^1(tt, V1, V2) -> U172^1(isBoolKind(V1), V1, V2) U171^1(tt, V1, V2) -> ISBOOLKIND(V1) U172^1(tt, V1, V2) -> U173^1(isBoolKind(V2), V1, V2) U172^1(tt, V1, V2) -> ISBOOLKIND(V2) U173^1(tt, V1, V2) -> U174^1(isBoolKind(V2), V1, V2) U173^1(tt, V1, V2) -> ISBOOLKIND(V2) U174^1(tt, V1, V2) -> U175^1(isBool(V1), V2) U174^1(tt, V1, V2) -> ISBOOL(V1) U175^1(tt, V2) -> U176^1(isBool(V2)) U175^1(tt, V2) -> ISBOOL(V2) U181^1(tt, V1, V2) -> U182^1(isBoolKind(V1), V1, V2) U181^1(tt, V1, V2) -> ISBOOLKIND(V1) U182^1(tt, V1, V2) -> U183^1(isBoolKind(V2), V1, V2) U182^1(tt, V1, V2) -> ISBOOLKIND(V2) U183^1(tt, V1, V2) -> U184^1(isBoolKind(V2), V1, V2) U183^1(tt, V1, V2) -> ISBOOLKIND(V2) U184^1(tt, V1, V2) -> U185^1(isBool(V1), V2) U184^1(tt, V1, V2) -> ISBOOL(V1) U185^1(tt, V2) -> U186^1(isBool(V2)) U185^1(tt, V2) -> ISBOOL(V2) U191^1(tt, V1) -> U192^1(isBoolKind(V1), V1) U191^1(tt, V1) -> ISBOOLKIND(V1) U192^1(tt, V1) -> U193^1(isBool(V1)) U192^1(tt, V1) -> ISBOOL(V1) U201^1(tt, V2) -> U202^1(isBoolKind(V2)) U201^1(tt, V2) -> ISBOOLKIND(V2) U21^1(tt, A, B, C) -> U22^1(isBoolKind(A), A, B, C) U21^1(tt, A, B, C) -> ISBOOLKIND(A) U211^1(tt, V2) -> U212^1(isBoolKind(V2)) U211^1(tt, V2) -> ISBOOLKIND(V2) U22^1(tt, A, B, C) -> U23^1(isBool(B), A, B, C) U22^1(tt, A, B, C) -> ISBOOL(B) U221^1(tt, V2) -> U222^1(isBoolKind(V2)) U221^1(tt, V2) -> ISBOOLKIND(V2) U23^1(tt, A, B, C) -> U24^1(isBoolKind(B), A, B, C) U23^1(tt, A, B, C) -> ISBOOLKIND(B) U231^1(tt, V2) -> U232^1(isBoolKind(V2)) U231^1(tt, V2) -> ISBOOLKIND(V2) U24^1(tt, A, B, C) -> U25^1(isBool(C), A, B, C) U24^1(tt, A, B, C) -> ISBOOL(C) U25^1(tt, A, B, C) -> U26^1(isBoolKind(C), A, B, C) U25^1(tt, A, B, C) -> ISBOOLKIND(C) U251^1(tt, A) -> U252^1(isBoolKind(A), A) U251^1(tt, A) -> ISBOOLKIND(A) U252^1(tt, A) -> _XOR_(A, true) U26^1(tt, A, B, C) -> _XOR_(_and_(A, B), _and_(A, C)) U26^1(tt, A, B, C) -> _AND_(A, B) U26^1(tt, A, B, C) -> _AND_(A, C) U31^1(tt, A) -> U32^1(isBoolKind(A)) U31^1(tt, A) -> ISBOOLKIND(A) U41^1(tt, A) -> U42^1(isBoolKind(A), A) U41^1(tt, A) -> ISBOOLKIND(A) U51^1(tt, A, B) -> U52^1(isBoolKind(A), A, B) U51^1(tt, A, B) -> ISBOOLKIND(A) U52^1(tt, A, B) -> U53^1(isBool(B), A, B) U52^1(tt, A, B) -> ISBOOL(B) U53^1(tt, A, B) -> U54^1(isBoolKind(B), A, B) U53^1(tt, A, B) -> ISBOOLKIND(B) U54^1(tt, A, B) -> NOT_(_xor_(A, _and_(A, B))) U54^1(tt, A, B) -> _XOR_(A, _and_(A, B)) U54^1(tt, A, B) -> _AND_(A, B) U61^1(tt, U', U) -> U62^1(isSKind(U'), U', U) U62^1(tt, U', U) -> U63^1(isS(U), U', U) U63^1(tt, U', U) -> U64^1(isSKind(U), U', U) U64^1(tt, U', U) -> U65^1(equal(_isNotEqualTo_(U, U'), true)) U64^1(tt, U', U) -> EQUAL(_isNotEqualTo_(U, U'), true) U64^1(tt, U', U) -> _ISNOTEQUALTO_(U, U') U71^1(tt, U) -> U72^1(isSKind(U)) U81^1(tt, U', U) -> U82^1(isSKind(U'), U', U) U82^1(tt, U', U) -> U83^1(isS(U), U', U) U83^1(tt, U', U) -> U84^1(isSKind(U), U', U) U84^1(tt, U', U) -> IF_THEN_ELSE_FI(_isEqualTo_(U, U'), false, true) U84^1(tt, U', U) -> _ISEQUALTO_(U, U') U91^1(tt, U) -> U92^1(isSKind(U)) _AND_(A, A) -> U11^1(isBool(A), A) _AND_(A, A) -> ISBOOL(A) _AND_(A, _xor_(B, C)) -> U21^1(isBool(A), A, B, C) _AND_(A, _xor_(B, C)) -> ISBOOL(A) _AND_(false, A) -> U31^1(isBool(A), A) _AND_(false, A) -> ISBOOL(A) _AND_(true, A) -> U41^1(isBool(A), A) _AND_(true, A) -> ISBOOL(A) _IMPLIES_(A, B) -> U51^1(isBool(A), A, B) _IMPLIES_(A, B) -> ISBOOL(A) _ISEQUALTO_(U, U') -> U61^1(isS(U'), U', U) _ISEQUALTO_(U, U) -> U71^1(isS(U), U) _ISNOTEQUALTO_(U, U') -> U81^1(isS(U'), U', U) _ISNOTEQUALTO_(U, U) -> U91^1(isS(U), U) _OR_(A, B) -> U101^1(isBool(A), A, B) _OR_(A, B) -> ISBOOL(A) _XOR_(A, A) -> U111^1(isBool(A), A) _XOR_(A, A) -> ISBOOL(A) _XOR_(false, A) -> U121^1(isBool(A), A) _XOR_(false, A) -> ISBOOL(A) IF_THEN_ELSE_FI(B, U, U') -> U131^1(isBool(B), B, U', U) IF_THEN_ELSE_FI(B, U, U') -> ISBOOL(B) IF_THEN_ELSE_FI(true, U, U') -> U141^1(isS(U'), U', U) ISBOOL(_and_(V1, V2)) -> U151^1(isBoolKind(V1), V1, V2) ISBOOL(_and_(V1, V2)) -> ISBOOLKIND(V1) ISBOOL(_implies_(V1, V2)) -> U161^1(isBoolKind(V1), V1, V2) ISBOOL(_implies_(V1, V2)) -> ISBOOLKIND(V1) ISBOOL(_or_(V1, V2)) -> U171^1(isBoolKind(V1), V1, V2) ISBOOL(_or_(V1, V2)) -> ISBOOLKIND(V1) ISBOOL(_xor_(V1, V2)) -> U181^1(isBoolKind(V1), V1, V2) ISBOOL(_xor_(V1, V2)) -> ISBOOLKIND(V1) ISBOOL(not_(V1)) -> U191^1(isBoolKind(V1), V1) ISBOOL(not_(V1)) -> ISBOOLKIND(V1) ISBOOLKIND(_and_(V1, V2)) -> U201^1(isBoolKind(V1), V2) ISBOOLKIND(_and_(V1, V2)) -> ISBOOLKIND(V1) ISBOOLKIND(_implies_(V1, V2)) -> U211^1(isBoolKind(V1), V2) ISBOOLKIND(_implies_(V1, V2)) -> ISBOOLKIND(V1) ISBOOLKIND(_or_(V1, V2)) -> U221^1(isBoolKind(V1), V2) ISBOOLKIND(_or_(V1, V2)) -> ISBOOLKIND(V1) ISBOOLKIND(_xor_(V1, V2)) -> U231^1(isBoolKind(V1), V2) ISBOOLKIND(_xor_(V1, V2)) -> ISBOOLKIND(V1) ISBOOLKIND(not_(V1)) -> U241^1(isBoolKind(V1)) ISBOOLKIND(not_(V1)) -> ISBOOLKIND(V1) NOT_(A) -> U251^1(isBool(A), A) NOT_(A) -> ISBOOL(A) _AND_(_and_(A, A), ext) -> _AND_(U11(isBool(A), A), ext) _AND_(_and_(A, A), ext) -> U11^1(isBool(A), A) _AND_(_and_(A, A), ext) -> ISBOOL(A) _AND_(_and_(A, _xor_(B, C)), ext) -> _AND_(U21(isBool(A), A, B, C), ext) _AND_(_and_(A, _xor_(B, C)), ext) -> U21^1(isBool(A), A, B, C) _AND_(_and_(A, _xor_(B, C)), ext) -> ISBOOL(A) _AND_(_and_(false, A), ext) -> _AND_(U31(isBool(A), A), ext) _AND_(_and_(false, A), ext) -> U31^1(isBool(A), A) _AND_(_and_(false, A), ext) -> ISBOOL(A) _AND_(_and_(true, A), ext) -> _AND_(U41(isBool(A), A), ext) _AND_(_and_(true, A), ext) -> U41^1(isBool(A), A) _AND_(_and_(true, A), ext) -> ISBOOL(A) _OR_(_or_(A, B), ext) -> _OR_(U101(isBool(A), A, B), ext) _OR_(_or_(A, B), ext) -> U101^1(isBool(A), A, B) _OR_(_or_(A, B), ext) -> ISBOOL(A) _XOR_(_xor_(A, A), ext) -> _XOR_(U111(isBool(A), A), ext) _XOR_(_xor_(A, A), ext) -> U111^1(isBool(A), A) _XOR_(_xor_(A, A), ext) -> ISBOOL(A) _XOR_(_xor_(false, A), ext) -> _XOR_(U121(isBool(A), A), ext) _XOR_(_xor_(false, A), ext) -> U121^1(isBool(A), A) _XOR_(_xor_(false, A), ext) -> ISBOOL(A) The TRS R consists of the following rules: U101(tt, A, B) -> U102(isBoolKind(A), A, B) U102(tt, A, B) -> U103(isBool(B), A, B) U103(tt, A, B) -> U104(isBoolKind(B), A, B) U104(tt, A, B) -> _xor_(_and_(A, B), _xor_(A, B)) U11(tt, A) -> U12(isBoolKind(A), A) U111(tt, A) -> U112(isBoolKind(A)) U112(tt) -> false U12(tt, A) -> A U121(tt, A) -> U122(isBoolKind(A), A) U122(tt, A) -> A U131(tt, B, U', U) -> U132(isBoolKind(B), B, U', U) U132(tt, B, U', U) -> U133(isS(U'), B, U', U) U133(tt, B, U', U) -> U134(isSKind(U'), B, U', U) U134(tt, B, U', U) -> U135(isS(U), B, U', U) U135(tt, B, U', U) -> U136(isSKind(U), B, U') U136(tt, B, U') -> U137(equal(_isNotEqualTo_(B, true), true), U') U137(tt, U') -> U' U141(tt, U', U) -> U142(isSKind(U'), U) U142(tt, U) -> U143(isS(U), U) U143(tt, U) -> U144(isSKind(U), U) U144(tt, U) -> U U151(tt, V1, V2) -> U152(isBoolKind(V1), V1, V2) U152(tt, V1, V2) -> U153(isBoolKind(V2), V1, V2) U153(tt, V1, V2) -> U154(isBoolKind(V2), V1, V2) U154(tt, V1, V2) -> U155(isBool(V1), V2) U155(tt, V2) -> U156(isBool(V2)) U156(tt) -> tt U161(tt, V1, V2) -> U162(isBoolKind(V1), V1, V2) U162(tt, V1, V2) -> U163(isBoolKind(V2), V1, V2) U163(tt, V1, V2) -> U164(isBoolKind(V2), V1, V2) U164(tt, V1, V2) -> U165(isBool(V1), V2) U165(tt, V2) -> U166(isBool(V2)) U166(tt) -> tt U171(tt, V1, V2) -> U172(isBoolKind(V1), V1, V2) U172(tt, V1, V2) -> U173(isBoolKind(V2), V1, V2) U173(tt, V1, V2) -> U174(isBoolKind(V2), V1, V2) U174(tt, V1, V2) -> U175(isBool(V1), V2) U175(tt, V2) -> U176(isBool(V2)) U176(tt) -> tt U181(tt, V1, V2) -> U182(isBoolKind(V1), V1, V2) U182(tt, V1, V2) -> U183(isBoolKind(V2), V1, V2) U183(tt, V1, V2) -> U184(isBoolKind(V2), V1, V2) U184(tt, V1, V2) -> U185(isBool(V1), V2) U185(tt, V2) -> U186(isBool(V2)) U186(tt) -> tt U191(tt, V1) -> U192(isBoolKind(V1), V1) U192(tt, V1) -> U193(isBool(V1)) U193(tt) -> tt U201(tt, V2) -> U202(isBoolKind(V2)) U202(tt) -> tt U21(tt, A, B, C) -> U22(isBoolKind(A), A, B, C) U211(tt, V2) -> U212(isBoolKind(V2)) U212(tt) -> tt U22(tt, A, B, C) -> U23(isBool(B), A, B, C) U221(tt, V2) -> U222(isBoolKind(V2)) U222(tt) -> tt U23(tt, A, B, C) -> U24(isBoolKind(B), A, B, C) U231(tt, V2) -> U232(isBoolKind(V2)) U232(tt) -> tt U24(tt, A, B, C) -> U25(isBool(C), A, B, C) U241(tt) -> tt U25(tt, A, B, C) -> U26(isBoolKind(C), A, B, C) U251(tt, A) -> U252(isBoolKind(A), A) U252(tt, A) -> _xor_(A, true) U26(tt, A, B, C) -> _xor_(_and_(A, B), _and_(A, C)) U31(tt, A) -> U32(isBoolKind(A)) U32(tt) -> false U41(tt, A) -> U42(isBoolKind(A), A) U42(tt, A) -> A U51(tt, A, B) -> U52(isBoolKind(A), A, B) U52(tt, A, B) -> U53(isBool(B), A, B) U53(tt, A, B) -> U54(isBoolKind(B), A, B) U54(tt, A, B) -> not_(_xor_(A, _and_(A, B))) U61(tt, U', U) -> U62(isSKind(U'), U', U) U62(tt, U', U) -> U63(isS(U), U', U) U63(tt, U', U) -> U64(isSKind(U), U', U) U64(tt, U', U) -> U65(equal(_isNotEqualTo_(U, U'), true)) U65(tt) -> false U71(tt, U) -> U72(isSKind(U)) U72(tt) -> true U81(tt, U', U) -> U82(isSKind(U'), U', U) U82(tt, U', U) -> U83(isS(U), U', U) U83(tt, U', U) -> U84(isSKind(U), U', U) U84(tt, U', U) -> if_then_else_fi(_isEqualTo_(U, U'), false, true) U91(tt, U) -> U92(isSKind(U)) U92(tt) -> false _and_(A, A) -> U11(isBool(A), A) _and_(A, _xor_(B, C)) -> U21(isBool(A), A, B, C) _and_(false, A) -> U31(isBool(A), A) _and_(true, A) -> U41(isBool(A), A) _implies_(A, B) -> U51(isBool(A), A, B) _isEqualTo_(U, U') -> U61(isS(U'), U', U) _isEqualTo_(U, U) -> U71(isS(U), U) _isNotEqualTo_(U, U') -> U81(isS(U'), U', U) _isNotEqualTo_(U, U) -> U91(isS(U), U) _or_(A, B) -> U101(isBool(A), A, B) _xor_(A, A) -> U111(isBool(A), A) _xor_(false, A) -> U121(isBool(A), A) equal(X, X) -> tt if_then_else_fi(B, U, U') -> U131(isBool(B), B, U', U) if_then_else_fi(true, U, U') -> U141(isS(U'), U', U) isBool(false) -> tt isBool(true) -> tt isBool(_and_(V1, V2)) -> U151(isBoolKind(V1), V1, V2) isBool(_implies_(V1, V2)) -> U161(isBoolKind(V1), V1, V2) isBool(_isEqualTo_(V1, V2)) -> tt isBool(_isNotEqualTo_(V1, V2)) -> tt isBool(_or_(V1, V2)) -> U171(isBoolKind(V1), V1, V2) isBool(_xor_(V1, V2)) -> U181(isBoolKind(V1), V1, V2) isBool(not_(V1)) -> U191(isBoolKind(V1), V1) isBoolKind(false) -> tt isBoolKind(true) -> tt isBoolKind(_and_(V1, V2)) -> U201(isBoolKind(V1), V2) isBoolKind(_implies_(V1, V2)) -> U211(isBoolKind(V1), V2) isBoolKind(_isEqualTo_(V1, V2)) -> tt isBoolKind(_isNotEqualTo_(V1, V2)) -> tt isBoolKind(_or_(V1, V2)) -> U221(isBoolKind(V1), V2) isBoolKind(_xor_(V1, V2)) -> U231(isBoolKind(V1), V2) isBoolKind(not_(V1)) -> U241(isBoolKind(V1)) not_(A) -> U251(isBool(A), A) not_(false) -> true not_(true) -> false _and_(_and_(A, A), ext) -> _and_(U11(isBool(A), A), ext) _and_(_and_(A, _xor_(B, C)), ext) -> _and_(U21(isBool(A), A, B, C), ext) _and_(_and_(false, A), ext) -> _and_(U31(isBool(A), A), ext) _and_(_and_(true, A), ext) -> _and_(U41(isBool(A), A), ext) _or_(_or_(A, B), ext) -> _or_(U101(isBool(A), A, B), ext) _xor_(_xor_(A, A), ext) -> _xor_(U111(isBool(A), A), ext) _xor_(_xor_(false, A), ext) -> _xor_(U121(isBool(A), A), ext) The set E consists of the following equations: _and_(x, y) == _and_(y, x) _or_(x, y) == _or_(y, x) _xor_(x, y) == _xor_(y, x) _and_(_and_(x, y), z) == _and_(x, _and_(y, z)) _or_(_or_(x, y), z) == _or_(x, _or_(y, z)) _xor_(_xor_(x, y), z) == _xor_(x, _xor_(y, z)) The set E# consists of the following equations: _AND_(x, y) == _AND_(y, x) _OR_(x, y) == _OR_(y, x) _XOR_(x, y) == _XOR_(y, x) _AND_(_and_(x, y), z) == _AND_(x, _and_(y, z)) _OR_(_or_(x, y), z) == _OR_(x, _or_(y, z)) _XOR_(_xor_(x, y), z) == _XOR_(x, _xor_(y, z)) We have to consider all minimal (P,E#,R,E)-chains ---------------------------------------- (3) EDependencyGraphProof (EQUIVALENT) The approximation of the Equational Dependency Graph [DA_STEIN] contains 5 SCCs with 127 less nodes. ---------------------------------------- (4) Complex Obligation (AND) ---------------------------------------- (5) Obligation: The TRS P consists of the following rules: ISBOOLKIND(_xor_(V1, V2)) -> ISBOOLKIND(V1) ISBOOLKIND(_implies_(V1, V2)) -> ISBOOLKIND(V1) ISBOOLKIND(_implies_(V1, V2)) -> U211^1(isBoolKind(V1), V2) ISBOOLKIND(not_(V1)) -> ISBOOLKIND(V1) U221^1(tt, V2) -> ISBOOLKIND(V2) ISBOOLKIND(_or_(V1, V2)) -> ISBOOLKIND(V1) U211^1(tt, V2) -> ISBOOLKIND(V2) ISBOOLKIND(_and_(V1, V2)) -> U201^1(isBoolKind(V1), V2) ISBOOLKIND(_and_(V1, V2)) -> ISBOOLKIND(V1) U201^1(tt, V2) -> ISBOOLKIND(V2) ISBOOLKIND(_or_(V1, V2)) -> U221^1(isBoolKind(V1), V2) ISBOOLKIND(_xor_(V1, V2)) -> U231^1(isBoolKind(V1), V2) U231^1(tt, V2) -> ISBOOLKIND(V2) The TRS R consists of the following rules: U101(tt, A, B) -> U102(isBoolKind(A), A, B) U102(tt, A, B) -> U103(isBool(B), A, B) U103(tt, A, B) -> U104(isBoolKind(B), A, B) U104(tt, A, B) -> _xor_(_and_(A, B), _xor_(A, B)) U11(tt, A) -> U12(isBoolKind(A), A) U111(tt, A) -> U112(isBoolKind(A)) U112(tt) -> false U12(tt, A) -> A U121(tt, A) -> U122(isBoolKind(A), A) U122(tt, A) -> A U131(tt, B, U', U) -> U132(isBoolKind(B), B, U', U) U132(tt, B, U', U) -> U133(isS(U'), B, U', U) U133(tt, B, U', U) -> U134(isSKind(U'), B, U', U) U134(tt, B, U', U) -> U135(isS(U), B, U', U) U135(tt, B, U', U) -> U136(isSKind(U), B, U') U136(tt, B, U') -> U137(equal(_isNotEqualTo_(B, true), true), U') U137(tt, U') -> U' U141(tt, U', U) -> U142(isSKind(U'), U) U142(tt, U) -> U143(isS(U), U) U143(tt, U) -> U144(isSKind(U), U) U144(tt, U) -> U U151(tt, V1, V2) -> U152(isBoolKind(V1), V1, V2) U152(tt, V1, V2) -> U153(isBoolKind(V2), V1, V2) U153(tt, V1, V2) -> U154(isBoolKind(V2), V1, V2) U154(tt, V1, V2) -> U155(isBool(V1), V2) U155(tt, V2) -> U156(isBool(V2)) U156(tt) -> tt U161(tt, V1, V2) -> U162(isBoolKind(V1), V1, V2) U162(tt, V1, V2) -> U163(isBoolKind(V2), V1, V2) U163(tt, V1, V2) -> U164(isBoolKind(V2), V1, V2) U164(tt, V1, V2) -> U165(isBool(V1), V2) U165(tt, V2) -> U166(isBool(V2)) U166(tt) -> tt U171(tt, V1, V2) -> U172(isBoolKind(V1), V1, V2) U172(tt, V1, V2) -> U173(isBoolKind(V2), V1, V2) U173(tt, V1, V2) -> U174(isBoolKind(V2), V1, V2) U174(tt, V1, V2) -> U175(isBool(V1), V2) U175(tt, V2) -> U176(isBool(V2)) U176(tt) -> tt U181(tt, V1, V2) -> U182(isBoolKind(V1), V1, V2) U182(tt, V1, V2) -> U183(isBoolKind(V2), V1, V2) U183(tt, V1, V2) -> U184(isBoolKind(V2), V1, V2) U184(tt, V1, V2) -> U185(isBool(V1), V2) U185(tt, V2) -> U186(isBool(V2)) U186(tt) -> tt U191(tt, V1) -> U192(isBoolKind(V1), V1) U192(tt, V1) -> U193(isBool(V1)) U193(tt) -> tt U201(tt, V2) -> U202(isBoolKind(V2)) U202(tt) -> tt U21(tt, A, B, C) -> U22(isBoolKind(A), A, B, C) U211(tt, V2) -> U212(isBoolKind(V2)) U212(tt) -> tt U22(tt, A, B, C) -> U23(isBool(B), A, B, C) U221(tt, V2) -> U222(isBoolKind(V2)) U222(tt) -> tt U23(tt, A, B, C) -> U24(isBoolKind(B), A, B, C) U231(tt, V2) -> U232(isBoolKind(V2)) U232(tt) -> tt U24(tt, A, B, C) -> U25(isBool(C), A, B, C) U241(tt) -> tt U25(tt, A, B, C) -> U26(isBoolKind(C), A, B, C) U251(tt, A) -> U252(isBoolKind(A), A) U252(tt, A) -> _xor_(A, true) U26(tt, A, B, C) -> _xor_(_and_(A, B), _and_(A, C)) U31(tt, A) -> U32(isBoolKind(A)) U32(tt) -> false U41(tt, A) -> U42(isBoolKind(A), A) U42(tt, A) -> A U51(tt, A, B) -> U52(isBoolKind(A), A, B) U52(tt, A, B) -> U53(isBool(B), A, B) U53(tt, A, B) -> U54(isBoolKind(B), A, B) U54(tt, A, B) -> not_(_xor_(A, _and_(A, B))) U61(tt, U', U) -> U62(isSKind(U'), U', U) U62(tt, U', U) -> U63(isS(U), U', U) U63(tt, U', U) -> U64(isSKind(U), U', U) U64(tt, U', U) -> U65(equal(_isNotEqualTo_(U, U'), true)) U65(tt) -> false U71(tt, U) -> U72(isSKind(U)) U72(tt) -> true U81(tt, U', U) -> U82(isSKind(U'), U', U) U82(tt, U', U) -> U83(isS(U), U', U) U83(tt, U', U) -> U84(isSKind(U), U', U) U84(tt, U', U) -> if_then_else_fi(_isEqualTo_(U, U'), false, true) U91(tt, U) -> U92(isSKind(U)) U92(tt) -> false _and_(A, A) -> U11(isBool(A), A) _and_(A, _xor_(B, C)) -> U21(isBool(A), A, B, C) _and_(false, A) -> U31(isBool(A), A) _and_(true, A) -> U41(isBool(A), A) _implies_(A, B) -> U51(isBool(A), A, B) _isEqualTo_(U, U') -> U61(isS(U'), U', U) _isEqualTo_(U, U) -> U71(isS(U), U) _isNotEqualTo_(U, U') -> U81(isS(U'), U', U) _isNotEqualTo_(U, U) -> U91(isS(U), U) _or_(A, B) -> U101(isBool(A), A, B) _xor_(A, A) -> U111(isBool(A), A) _xor_(false, A) -> U121(isBool(A), A) equal(X, X) -> tt if_then_else_fi(B, U, U') -> U131(isBool(B), B, U', U) if_then_else_fi(true, U, U') -> U141(isS(U'), U', U) isBool(false) -> tt isBool(true) -> tt isBool(_and_(V1, V2)) -> U151(isBoolKind(V1), V1, V2) isBool(_implies_(V1, V2)) -> U161(isBoolKind(V1), V1, V2) isBool(_isEqualTo_(V1, V2)) -> tt isBool(_isNotEqualTo_(V1, V2)) -> tt isBool(_or_(V1, V2)) -> U171(isBoolKind(V1), V1, V2) isBool(_xor_(V1, V2)) -> U181(isBoolKind(V1), V1, V2) isBool(not_(V1)) -> U191(isBoolKind(V1), V1) isBoolKind(false) -> tt isBoolKind(true) -> tt isBoolKind(_and_(V1, V2)) -> U201(isBoolKind(V1), V2) isBoolKind(_implies_(V1, V2)) -> U211(isBoolKind(V1), V2) isBoolKind(_isEqualTo_(V1, V2)) -> tt isBoolKind(_isNotEqualTo_(V1, V2)) -> tt isBoolKind(_or_(V1, V2)) -> U221(isBoolKind(V1), V2) isBoolKind(_xor_(V1, V2)) -> U231(isBoolKind(V1), V2) isBoolKind(not_(V1)) -> U241(isBoolKind(V1)) not_(A) -> U251(isBool(A), A) not_(false) -> true not_(true) -> false _and_(_and_(A, A), ext) -> _and_(U11(isBool(A), A), ext) _and_(_and_(A, _xor_(B, C)), ext) -> _and_(U21(isBool(A), A, B, C), ext) _and_(_and_(false, A), ext) -> _and_(U31(isBool(A), A), ext) _and_(_and_(true, A), ext) -> _and_(U41(isBool(A), A), ext) _or_(_or_(A, B), ext) -> _or_(U101(isBool(A), A, B), ext) _xor_(_xor_(A, A), ext) -> _xor_(U111(isBool(A), A), ext) _xor_(_xor_(false, A), ext) -> _xor_(U121(isBool(A), A), ext) The set E consists of the following equations: _and_(x, y) == _and_(y, x) _or_(x, y) == _or_(y, x) _xor_(x, y) == _xor_(y, x) _and_(_and_(x, y), z) == _and_(x, _and_(y, z)) _or_(_or_(x, y), z) == _or_(x, _or_(y, z)) _xor_(_xor_(x, y), z) == _xor_(x, _xor_(y, z)) The set E# consists of the following equations: _AND_(x, y) == _AND_(y, x) _OR_(x, y) == _OR_(y, x) _XOR_(x, y) == _XOR_(y, x) _AND_(_and_(x, y), z) == _AND_(x, _and_(y, z)) _OR_(_or_(x, y), z) == _OR_(x, _or_(y, z)) _XOR_(_xor_(x, y), z) == _XOR_(x, _xor_(y, z)) We have to consider all minimal (P,E#,R,E)-chains ---------------------------------------- (6) ESharpUsableEquationsProof (EQUIVALENT) We can delete the following equations of E# with the esharp usable equations processor[DA_STEIN]: _AND_(x, y) == _AND_(y, x) _OR_(x, y) == _OR_(y, x) _XOR_(x, y) == _XOR_(y, x) _AND_(_and_(x, y), z) == _AND_(x, _and_(y, z)) _OR_(_or_(x, y), z) == _OR_(x, _or_(y, z)) _XOR_(_xor_(x, y), z) == _XOR_(x, _xor_(y, z)) ---------------------------------------- (7) Obligation: The TRS P consists of the following rules: ISBOOLKIND(_xor_(V1, V2)) -> ISBOOLKIND(V1) ISBOOLKIND(_implies_(V1, V2)) -> ISBOOLKIND(V1) ISBOOLKIND(_implies_(V1, V2)) -> U211^1(isBoolKind(V1), V2) ISBOOLKIND(not_(V1)) -> ISBOOLKIND(V1) U221^1(tt, V2) -> ISBOOLKIND(V2) ISBOOLKIND(_or_(V1, V2)) -> ISBOOLKIND(V1) U211^1(tt, V2) -> ISBOOLKIND(V2) ISBOOLKIND(_and_(V1, V2)) -> U201^1(isBoolKind(V1), V2) ISBOOLKIND(_and_(V1, V2)) -> ISBOOLKIND(V1) U201^1(tt, V2) -> ISBOOLKIND(V2) ISBOOLKIND(_or_(V1, V2)) -> U221^1(isBoolKind(V1), V2) ISBOOLKIND(_xor_(V1, V2)) -> U231^1(isBoolKind(V1), V2) U231^1(tt, V2) -> ISBOOLKIND(V2) The TRS R consists of the following rules: U101(tt, A, B) -> U102(isBoolKind(A), A, B) U102(tt, A, B) -> U103(isBool(B), A, B) U103(tt, A, B) -> U104(isBoolKind(B), A, B) U104(tt, A, B) -> _xor_(_and_(A, B), _xor_(A, B)) U11(tt, A) -> U12(isBoolKind(A), A) U111(tt, A) -> U112(isBoolKind(A)) U112(tt) -> false U12(tt, A) -> A U121(tt, A) -> U122(isBoolKind(A), A) U122(tt, A) -> A U131(tt, B, U', U) -> U132(isBoolKind(B), B, U', U) U132(tt, B, U', U) -> U133(isS(U'), B, U', U) U133(tt, B, U', U) -> U134(isSKind(U'), B, U', U) U134(tt, B, U', U) -> U135(isS(U), B, U', U) U135(tt, B, U', U) -> U136(isSKind(U), B, U') U136(tt, B, U') -> U137(equal(_isNotEqualTo_(B, true), true), U') U137(tt, U') -> U' U141(tt, U', U) -> U142(isSKind(U'), U) U142(tt, U) -> U143(isS(U), U) U143(tt, U) -> U144(isSKind(U), U) U144(tt, U) -> U U151(tt, V1, V2) -> U152(isBoolKind(V1), V1, V2) U152(tt, V1, V2) -> U153(isBoolKind(V2), V1, V2) U153(tt, V1, V2) -> U154(isBoolKind(V2), V1, V2) U154(tt, V1, V2) -> U155(isBool(V1), V2) U155(tt, V2) -> U156(isBool(V2)) U156(tt) -> tt U161(tt, V1, V2) -> U162(isBoolKind(V1), V1, V2) U162(tt, V1, V2) -> U163(isBoolKind(V2), V1, V2) U163(tt, V1, V2) -> U164(isBoolKind(V2), V1, V2) U164(tt, V1, V2) -> U165(isBool(V1), V2) U165(tt, V2) -> U166(isBool(V2)) U166(tt) -> tt U171(tt, V1, V2) -> U172(isBoolKind(V1), V1, V2) U172(tt, V1, V2) -> U173(isBoolKind(V2), V1, V2) U173(tt, V1, V2) -> U174(isBoolKind(V2), V1, V2) U174(tt, V1, V2) -> U175(isBool(V1), V2) U175(tt, V2) -> U176(isBool(V2)) U176(tt) -> tt U181(tt, V1, V2) -> U182(isBoolKind(V1), V1, V2) U182(tt, V1, V2) -> U183(isBoolKind(V2), V1, V2) U183(tt, V1, V2) -> U184(isBoolKind(V2), V1, V2) U184(tt, V1, V2) -> U185(isBool(V1), V2) U185(tt, V2) -> U186(isBool(V2)) U186(tt) -> tt U191(tt, V1) -> U192(isBoolKind(V1), V1) U192(tt, V1) -> U193(isBool(V1)) U193(tt) -> tt U201(tt, V2) -> U202(isBoolKind(V2)) U202(tt) -> tt U21(tt, A, B, C) -> U22(isBoolKind(A), A, B, C) U211(tt, V2) -> U212(isBoolKind(V2)) U212(tt) -> tt U22(tt, A, B, C) -> U23(isBool(B), A, B, C) U221(tt, V2) -> U222(isBoolKind(V2)) U222(tt) -> tt U23(tt, A, B, C) -> U24(isBoolKind(B), A, B, C) U231(tt, V2) -> U232(isBoolKind(V2)) U232(tt) -> tt U24(tt, A, B, C) -> U25(isBool(C), A, B, C) U241(tt) -> tt U25(tt, A, B, C) -> U26(isBoolKind(C), A, B, C) U251(tt, A) -> U252(isBoolKind(A), A) U252(tt, A) -> _xor_(A, true) U26(tt, A, B, C) -> _xor_(_and_(A, B), _and_(A, C)) U31(tt, A) -> U32(isBoolKind(A)) U32(tt) -> false U41(tt, A) -> U42(isBoolKind(A), A) U42(tt, A) -> A U51(tt, A, B) -> U52(isBoolKind(A), A, B) U52(tt, A, B) -> U53(isBool(B), A, B) U53(tt, A, B) -> U54(isBoolKind(B), A, B) U54(tt, A, B) -> not_(_xor_(A, _and_(A, B))) U61(tt, U', U) -> U62(isSKind(U'), U', U) U62(tt, U', U) -> U63(isS(U), U', U) U63(tt, U', U) -> U64(isSKind(U), U', U) U64(tt, U', U) -> U65(equal(_isNotEqualTo_(U, U'), true)) U65(tt) -> false U71(tt, U) -> U72(isSKind(U)) U72(tt) -> true U81(tt, U', U) -> U82(isSKind(U'), U', U) U82(tt, U', U) -> U83(isS(U), U', U) U83(tt, U', U) -> U84(isSKind(U), U', U) U84(tt, U', U) -> if_then_else_fi(_isEqualTo_(U, U'), false, true) U91(tt, U) -> U92(isSKind(U)) U92(tt) -> false _and_(A, A) -> U11(isBool(A), A) _and_(A, _xor_(B, C)) -> U21(isBool(A), A, B, C) _and_(false, A) -> U31(isBool(A), A) _and_(true, A) -> U41(isBool(A), A) _implies_(A, B) -> U51(isBool(A), A, B) _isEqualTo_(U, U') -> U61(isS(U'), U', U) _isEqualTo_(U, U) -> U71(isS(U), U) _isNotEqualTo_(U, U') -> U81(isS(U'), U', U) _isNotEqualTo_(U, U) -> U91(isS(U), U) _or_(A, B) -> U101(isBool(A), A, B) _xor_(A, A) -> U111(isBool(A), A) _xor_(false, A) -> U121(isBool(A), A) equal(X, X) -> tt if_then_else_fi(B, U, U') -> U131(isBool(B), B, U', U) if_then_else_fi(true, U, U') -> U141(isS(U'), U', U) isBool(false) -> tt isBool(true) -> tt isBool(_and_(V1, V2)) -> U151(isBoolKind(V1), V1, V2) isBool(_implies_(V1, V2)) -> U161(isBoolKind(V1), V1, V2) isBool(_isEqualTo_(V1, V2)) -> tt isBool(_isNotEqualTo_(V1, V2)) -> tt isBool(_or_(V1, V2)) -> U171(isBoolKind(V1), V1, V2) isBool(_xor_(V1, V2)) -> U181(isBoolKind(V1), V1, V2) isBool(not_(V1)) -> U191(isBoolKind(V1), V1) isBoolKind(false) -> tt isBoolKind(true) -> tt isBoolKind(_and_(V1, V2)) -> U201(isBoolKind(V1), V2) isBoolKind(_implies_(V1, V2)) -> U211(isBoolKind(V1), V2) isBoolKind(_isEqualTo_(V1, V2)) -> tt isBoolKind(_isNotEqualTo_(V1, V2)) -> tt isBoolKind(_or_(V1, V2)) -> U221(isBoolKind(V1), V2) isBoolKind(_xor_(V1, V2)) -> U231(isBoolKind(V1), V2) isBoolKind(not_(V1)) -> U241(isBoolKind(V1)) not_(A) -> U251(isBool(A), A) not_(false) -> true not_(true) -> false _and_(_and_(A, A), ext) -> _and_(U11(isBool(A), A), ext) _and_(_and_(A, _xor_(B, C)), ext) -> _and_(U21(isBool(A), A, B, C), ext) _and_(_and_(false, A), ext) -> _and_(U31(isBool(A), A), ext) _and_(_and_(true, A), ext) -> _and_(U41(isBool(A), A), ext) _or_(_or_(A, B), ext) -> _or_(U101(isBool(A), A, B), ext) _xor_(_xor_(A, A), ext) -> _xor_(U111(isBool(A), A), ext) _xor_(_xor_(false, A), ext) -> _xor_(U121(isBool(A), A), ext) The set E consists of the following equations: _and_(x, y) == _and_(y, x) _or_(x, y) == _or_(y, x) _xor_(x, y) == _xor_(y, x) _and_(_and_(x, y), z) == _and_(x, _and_(y, z)) _or_(_or_(x, y), z) == _or_(x, _or_(y, z)) _xor_(_xor_(x, y), z) == _xor_(x, _xor_(y, z)) E# is empty. We have to consider all minimal (P,E#,R,E)-chains ---------------------------------------- (8) EUsableRulesReductionPairsProof (EQUIVALENT) By using the usable rules and equations with reduction pair processor [DA_STEIN] with a polynomial ordering [POLO], all dependency pairs and the corresponding usable rules can be oriented non-strictly, the usable equations and the esharp equations can be oriented equivalently. All non-usable rules and equations are removed, and those dependency pairs and usable rules that have been oriented strictly or contain non-usable symbols in their left-hand side are removed as well. The following dependency pairs can be deleted: ISBOOLKIND(_xor_(V1, V2)) -> ISBOOLKIND(V1) ISBOOLKIND(_implies_(V1, V2)) -> ISBOOLKIND(V1) ISBOOLKIND(_implies_(V1, V2)) -> U211^1(isBoolKind(V1), V2) ISBOOLKIND(not_(V1)) -> ISBOOLKIND(V1) ISBOOLKIND(_or_(V1, V2)) -> ISBOOLKIND(V1) ISBOOLKIND(_and_(V1, V2)) -> U201^1(isBoolKind(V1), V2) ISBOOLKIND(_and_(V1, V2)) -> ISBOOLKIND(V1) ISBOOLKIND(_or_(V1, V2)) -> U221^1(isBoolKind(V1), V2) ISBOOLKIND(_xor_(V1, V2)) -> U231^1(isBoolKind(V1), V2) The following rules are removed from R: U101(tt, A, B) -> U102(isBoolKind(A), A, B) U102(tt, A, B) -> U103(isBool(B), A, B) U103(tt, A, B) -> U104(isBoolKind(B), A, B) U104(tt, A, B) -> _xor_(_and_(A, B), _xor_(A, B)) U11(tt, A) -> U12(isBoolKind(A), A) U111(tt, A) -> U112(isBoolKind(A)) U112(tt) -> false U12(tt, A) -> A U121(tt, A) -> U122(isBoolKind(A), A) U122(tt, A) -> A U131(tt, B, U', U) -> U132(isBoolKind(B), B, U', U) U132(tt, B, U', U) -> U133(isS(U'), B, U', U) U133(tt, B, U', U) -> U134(isSKind(U'), B, U', U) U134(tt, B, U', U) -> U135(isS(U), B, U', U) U135(tt, B, U', U) -> U136(isSKind(U), B, U') U136(tt, B, U') -> U137(equal(_isNotEqualTo_(B, true), true), U') U137(tt, U') -> U' U141(tt, U', U) -> U142(isSKind(U'), U) U142(tt, U) -> U143(isS(U), U) U143(tt, U) -> U144(isSKind(U), U) U144(tt, U) -> U U151(tt, V1, V2) -> U152(isBoolKind(V1), V1, V2) U152(tt, V1, V2) -> U153(isBoolKind(V2), V1, V2) U153(tt, V1, V2) -> U154(isBoolKind(V2), V1, V2) U154(tt, V1, V2) -> U155(isBool(V1), V2) U155(tt, V2) -> U156(isBool(V2)) U156(tt) -> tt U161(tt, V1, V2) -> U162(isBoolKind(V1), V1, V2) U162(tt, V1, V2) -> U163(isBoolKind(V2), V1, V2) U163(tt, V1, V2) -> U164(isBoolKind(V2), V1, V2) U164(tt, V1, V2) -> U165(isBool(V1), V2) U165(tt, V2) -> U166(isBool(V2)) U166(tt) -> tt U171(tt, V1, V2) -> U172(isBoolKind(V1), V1, V2) U172(tt, V1, V2) -> U173(isBoolKind(V2), V1, V2) U173(tt, V1, V2) -> U174(isBoolKind(V2), V1, V2) U174(tt, V1, V2) -> U175(isBool(V1), V2) U175(tt, V2) -> U176(isBool(V2)) U176(tt) -> tt U181(tt, V1, V2) -> U182(isBoolKind(V1), V1, V2) U182(tt, V1, V2) -> U183(isBoolKind(V2), V1, V2) U183(tt, V1, V2) -> U184(isBoolKind(V2), V1, V2) U184(tt, V1, V2) -> U185(isBool(V1), V2) U185(tt, V2) -> U186(isBool(V2)) U186(tt) -> tt U191(tt, V1) -> U192(isBoolKind(V1), V1) U192(tt, V1) -> U193(isBool(V1)) U193(tt) -> tt U201(tt, V2) -> U202(isBoolKind(V2)) U21(tt, A, B, C) -> U22(isBoolKind(A), A, B, C) U211(tt, V2) -> U212(isBoolKind(V2)) U22(tt, A, B, C) -> U23(isBool(B), A, B, C) U221(tt, V2) -> U222(isBoolKind(V2)) U23(tt, A, B, C) -> U24(isBoolKind(B), A, B, C) U231(tt, V2) -> U232(isBoolKind(V2)) U24(tt, A, B, C) -> U25(isBool(C), A, B, C) U25(tt, A, B, C) -> U26(isBoolKind(C), A, B, C) U251(tt, A) -> U252(isBoolKind(A), A) U252(tt, A) -> _xor_(A, true) U26(tt, A, B, C) -> _xor_(_and_(A, B), _and_(A, C)) U31(tt, A) -> U32(isBoolKind(A)) U32(tt) -> false U41(tt, A) -> U42(isBoolKind(A), A) U42(tt, A) -> A U51(tt, A, B) -> U52(isBoolKind(A), A, B) U52(tt, A, B) -> U53(isBool(B), A, B) U53(tt, A, B) -> U54(isBoolKind(B), A, B) U54(tt, A, B) -> not_(_xor_(A, _and_(A, B))) U61(tt, U', U) -> U62(isSKind(U'), U', U) U62(tt, U', U) -> U63(isS(U), U', U) U63(tt, U', U) -> U64(isSKind(U), U', U) U64(tt, U', U) -> U65(equal(_isNotEqualTo_(U, U'), true)) U65(tt) -> false U71(tt, U) -> U72(isSKind(U)) U72(tt) -> true U81(tt, U', U) -> U82(isSKind(U'), U', U) U82(tt, U', U) -> U83(isS(U), U', U) U83(tt, U', U) -> U84(isSKind(U), U', U) U84(tt, U', U) -> if_then_else_fi(_isEqualTo_(U, U'), false, true) U91(tt, U) -> U92(isSKind(U)) U92(tt) -> false _and_(A, A) -> U11(isBool(A), A) _and_(A, _xor_(B, C)) -> U21(isBool(A), A, B, C) _and_(false, A) -> U31(isBool(A), A) _and_(true, A) -> U41(isBool(A), A) _implies_(A, B) -> U51(isBool(A), A, B) _isEqualTo_(U, U') -> U61(isS(U'), U', U) _isEqualTo_(U, U) -> U71(isS(U), U) _isNotEqualTo_(U, U') -> U81(isS(U'), U', U) _isNotEqualTo_(U, U) -> U91(isS(U), U) _or_(A, B) -> U101(isBool(A), A, B) _xor_(A, A) -> U111(isBool(A), A) _xor_(false, A) -> U121(isBool(A), A) equal(X, X) -> tt if_then_else_fi(B, U, U') -> U131(isBool(B), B, U', U) if_then_else_fi(true, U, U') -> U141(isS(U'), U', U) isBool(false) -> tt isBool(true) -> tt isBool(_and_(V1, V2)) -> U151(isBoolKind(V1), V1, V2) isBool(_implies_(V1, V2)) -> U161(isBoolKind(V1), V1, V2) isBool(_isEqualTo_(V1, V2)) -> tt isBool(_isNotEqualTo_(V1, V2)) -> tt isBool(_or_(V1, V2)) -> U171(isBoolKind(V1), V1, V2) isBool(_xor_(V1, V2)) -> U181(isBoolKind(V1), V1, V2) isBool(not_(V1)) -> U191(isBoolKind(V1), V1) isBoolKind(false) -> tt isBoolKind(true) -> tt isBoolKind(_and_(V1, V2)) -> U201(isBoolKind(V1), V2) isBoolKind(_implies_(V1, V2)) -> U211(isBoolKind(V1), V2) isBoolKind(_isEqualTo_(V1, V2)) -> tt isBoolKind(_isNotEqualTo_(V1, V2)) -> tt isBoolKind(_or_(V1, V2)) -> U221(isBoolKind(V1), V2) isBoolKind(_xor_(V1, V2)) -> U231(isBoolKind(V1), V2) isBoolKind(not_(V1)) -> U241(isBoolKind(V1)) not_(A) -> U251(isBool(A), A) not_(false) -> true not_(true) -> false _and_(_and_(A, A), ext) -> _and_(U11(isBool(A), A), ext) _and_(_and_(A, _xor_(B, C)), ext) -> _and_(U21(isBool(A), A, B, C), ext) _and_(_and_(false, A), ext) -> _and_(U31(isBool(A), A), ext) _and_(_and_(true, A), ext) -> _and_(U41(isBool(A), A), ext) _or_(_or_(A, B), ext) -> _or_(U101(isBool(A), A, B), ext) _xor_(_xor_(A, A), ext) -> _xor_(U111(isBool(A), A), ext) _xor_(_xor_(false, A), ext) -> _xor_(U121(isBool(A), A), ext) The following equations are removed from E: _and_(x, y) == _and_(y, x) _or_(x, y) == _or_(y, x) _xor_(x, y) == _xor_(y, x) _and_(_and_(x, y), z) == _and_(x, _and_(y, z)) _or_(_or_(x, y), z) == _or_(x, _or_(y, z)) _xor_(_xor_(x, y), z) == _xor_(x, _xor_(y, z)) Used ordering: POLO with Polynomial interpretation [POLO]: POL(ISBOOLKIND(x_1)) = 3*x_1 POL(U201(x_1, x_2)) = 2 + x_1 + 3*x_2 POL(U201^1(x_1, x_2)) = 2*x_1 + 3*x_2 POL(U202(x_1)) = x_1 POL(U211(x_1, x_2)) = 2 + x_1 + 3*x_2 POL(U211^1(x_1, x_2)) = 2*x_1 + 3*x_2 POL(U212(x_1)) = x_1 POL(U221(x_1, x_2)) = 2 + x_1 + 3*x_2 POL(U221^1(x_1, x_2)) = 2*x_1 + 3*x_2 POL(U222(x_1)) = x_1 POL(U231(x_1, x_2)) = 2 + x_1 + 3*x_2 POL(U231^1(x_1, x_2)) = 2*x_1 + 3*x_2 POL(U232(x_1)) = x_1 POL(U241(x_1)) = x_1 POL(_and_(x_1, x_2)) = 2 + 2*x_1 + 3*x_2 POL(_implies_(x_1, x_2)) = 2 + 2*x_1 + 3*x_2 POL(_isEqualTo_(x_1, x_2)) = x_1 + x_2 POL(_isNotEqualTo_(x_1, x_2)) = x_1 + x_2 POL(_or_(x_1, x_2)) = 2 + 2*x_1 + 3*x_2 POL(_xor_(x_1, x_2)) = 2 + 2*x_1 + 3*x_2 POL(false) = 0 POL(isBoolKind(x_1)) = 2*x_1 POL(not_(x_1)) = 3 + x_1 POL(true) = 0 POL(tt) = 0 ---------------------------------------- (9) Obligation: The TRS P consists of the following rules: U221^1(tt, V2) -> ISBOOLKIND(V2) U211^1(tt, V2) -> ISBOOLKIND(V2) U201^1(tt, V2) -> ISBOOLKIND(V2) U231^1(tt, V2) -> ISBOOLKIND(V2) The TRS R consists of the following rules: U222(tt) -> tt U241(tt) -> tt U202(tt) -> tt U212(tt) -> tt U232(tt) -> tt E is empty. E# is empty. We have to consider all minimal (P,E#,R,E)-chains ---------------------------------------- (10) EDependencyGraphProof (EQUIVALENT) The approximation of the Equational Dependency Graph [DA_STEIN] contains 0 SCCs with 4 less nodes. ---------------------------------------- (11) TRUE ---------------------------------------- (12) Obligation: The TRS P consists of the following rules: U155^1(tt, V2) -> ISBOOL(V2) U184^1(tt, V1, V2) -> U185^1(isBool(V1), V2) U191^1(tt, V1) -> U192^1(isBoolKind(V1), V1) ISBOOL(_and_(V1, V2)) -> U151^1(isBoolKind(V1), V1, V2) U182^1(tt, V1, V2) -> U183^1(isBoolKind(V2), V1, V2) U172^1(tt, V1, V2) -> U173^1(isBoolKind(V2), V1, V2) U165^1(tt, V2) -> ISBOOL(V2) U174^1(tt, V1, V2) -> U175^1(isBool(V1), V2) U183^1(tt, V1, V2) -> U184^1(isBoolKind(V2), V1, V2) U181^1(tt, V1, V2) -> U182^1(isBoolKind(V1), V1, V2) ISBOOL(_xor_(V1, V2)) -> U181^1(isBoolKind(V1), V1, V2) U152^1(tt, V1, V2) -> U153^1(isBoolKind(V2), V1, V2) U164^1(tt, V1, V2) -> U165^1(isBool(V1), V2) U163^1(tt, V1, V2) -> U164^1(isBoolKind(V2), V1, V2) U153^1(tt, V1, V2) -> U154^1(isBoolKind(V2), V1, V2) U184^1(tt, V1, V2) -> ISBOOL(V1) ISBOOL(_or_(V1, V2)) -> U171^1(isBoolKind(V1), V1, V2) ISBOOL(not_(V1)) -> U191^1(isBoolKind(V1), V1) U161^1(tt, V1, V2) -> U162^1(isBoolKind(V1), V1, V2) U151^1(tt, V1, V2) -> U152^1(isBoolKind(V1), V1, V2) U174^1(tt, V1, V2) -> ISBOOL(V1) ISBOOL(_implies_(V1, V2)) -> U161^1(isBoolKind(V1), V1, V2) U173^1(tt, V1, V2) -> U174^1(isBoolKind(V2), V1, V2) U192^1(tt, V1) -> ISBOOL(V1) U154^1(tt, V1, V2) -> ISBOOL(V1) U185^1(tt, V2) -> ISBOOL(V2) U171^1(tt, V1, V2) -> U172^1(isBoolKind(V1), V1, V2) U154^1(tt, V1, V2) -> U155^1(isBool(V1), V2) U175^1(tt, V2) -> ISBOOL(V2) U164^1(tt, V1, V2) -> ISBOOL(V1) U162^1(tt, V1, V2) -> U163^1(isBoolKind(V2), V1, V2) The TRS R consists of the following rules: U101(tt, A, B) -> U102(isBoolKind(A), A, B) U102(tt, A, B) -> U103(isBool(B), A, B) U103(tt, A, B) -> U104(isBoolKind(B), A, B) U104(tt, A, B) -> _xor_(_and_(A, B), _xor_(A, B)) U11(tt, A) -> U12(isBoolKind(A), A) U111(tt, A) -> U112(isBoolKind(A)) U112(tt) -> false U12(tt, A) -> A U121(tt, A) -> U122(isBoolKind(A), A) U122(tt, A) -> A U131(tt, B, U', U) -> U132(isBoolKind(B), B, U', U) U132(tt, B, U', U) -> U133(isS(U'), B, U', U) U133(tt, B, U', U) -> U134(isSKind(U'), B, U', U) U134(tt, B, U', U) -> U135(isS(U), B, U', U) U135(tt, B, U', U) -> U136(isSKind(U), B, U') U136(tt, B, U') -> U137(equal(_isNotEqualTo_(B, true), true), U') U137(tt, U') -> U' U141(tt, U', U) -> U142(isSKind(U'), U) U142(tt, U) -> U143(isS(U), U) U143(tt, U) -> U144(isSKind(U), U) U144(tt, U) -> U U151(tt, V1, V2) -> U152(isBoolKind(V1), V1, V2) U152(tt, V1, V2) -> U153(isBoolKind(V2), V1, V2) U153(tt, V1, V2) -> U154(isBoolKind(V2), V1, V2) U154(tt, V1, V2) -> U155(isBool(V1), V2) U155(tt, V2) -> U156(isBool(V2)) U156(tt) -> tt U161(tt, V1, V2) -> U162(isBoolKind(V1), V1, V2) U162(tt, V1, V2) -> U163(isBoolKind(V2), V1, V2) U163(tt, V1, V2) -> U164(isBoolKind(V2), V1, V2) U164(tt, V1, V2) -> U165(isBool(V1), V2) U165(tt, V2) -> U166(isBool(V2)) U166(tt) -> tt U171(tt, V1, V2) -> U172(isBoolKind(V1), V1, V2) U172(tt, V1, V2) -> U173(isBoolKind(V2), V1, V2) U173(tt, V1, V2) -> U174(isBoolKind(V2), V1, V2) U174(tt, V1, V2) -> U175(isBool(V1), V2) U175(tt, V2) -> U176(isBool(V2)) U176(tt) -> tt U181(tt, V1, V2) -> U182(isBoolKind(V1), V1, V2) U182(tt, V1, V2) -> U183(isBoolKind(V2), V1, V2) U183(tt, V1, V2) -> U184(isBoolKind(V2), V1, V2) U184(tt, V1, V2) -> U185(isBool(V1), V2) U185(tt, V2) -> U186(isBool(V2)) U186(tt) -> tt U191(tt, V1) -> U192(isBoolKind(V1), V1) U192(tt, V1) -> U193(isBool(V1)) U193(tt) -> tt U201(tt, V2) -> U202(isBoolKind(V2)) U202(tt) -> tt U21(tt, A, B, C) -> U22(isBoolKind(A), A, B, C) U211(tt, V2) -> U212(isBoolKind(V2)) U212(tt) -> tt U22(tt, A, B, C) -> U23(isBool(B), A, B, C) U221(tt, V2) -> U222(isBoolKind(V2)) U222(tt) -> tt U23(tt, A, B, C) -> U24(isBoolKind(B), A, B, C) U231(tt, V2) -> U232(isBoolKind(V2)) U232(tt) -> tt U24(tt, A, B, C) -> U25(isBool(C), A, B, C) U241(tt) -> tt U25(tt, A, B, C) -> U26(isBoolKind(C), A, B, C) U251(tt, A) -> U252(isBoolKind(A), A) U252(tt, A) -> _xor_(A, true) U26(tt, A, B, C) -> _xor_(_and_(A, B), _and_(A, C)) U31(tt, A) -> U32(isBoolKind(A)) U32(tt) -> false U41(tt, A) -> U42(isBoolKind(A), A) U42(tt, A) -> A U51(tt, A, B) -> U52(isBoolKind(A), A, B) U52(tt, A, B) -> U53(isBool(B), A, B) U53(tt, A, B) -> U54(isBoolKind(B), A, B) U54(tt, A, B) -> not_(_xor_(A, _and_(A, B))) U61(tt, U', U) -> U62(isSKind(U'), U', U) U62(tt, U', U) -> U63(isS(U), U', U) U63(tt, U', U) -> U64(isSKind(U), U', U) U64(tt, U', U) -> U65(equal(_isNotEqualTo_(U, U'), true)) U65(tt) -> false U71(tt, U) -> U72(isSKind(U)) U72(tt) -> true U81(tt, U', U) -> U82(isSKind(U'), U', U) U82(tt, U', U) -> U83(isS(U), U', U) U83(tt, U', U) -> U84(isSKind(U), U', U) U84(tt, U', U) -> if_then_else_fi(_isEqualTo_(U, U'), false, true) U91(tt, U) -> U92(isSKind(U)) U92(tt) -> false _and_(A, A) -> U11(isBool(A), A) _and_(A, _xor_(B, C)) -> U21(isBool(A), A, B, C) _and_(false, A) -> U31(isBool(A), A) _and_(true, A) -> U41(isBool(A), A) _implies_(A, B) -> U51(isBool(A), A, B) _isEqualTo_(U, U') -> U61(isS(U'), U', U) _isEqualTo_(U, U) -> U71(isS(U), U) _isNotEqualTo_(U, U') -> U81(isS(U'), U', U) _isNotEqualTo_(U, U) -> U91(isS(U), U) _or_(A, B) -> U101(isBool(A), A, B) _xor_(A, A) -> U111(isBool(A), A) _xor_(false, A) -> U121(isBool(A), A) equal(X, X) -> tt if_then_else_fi(B, U, U') -> U131(isBool(B), B, U', U) if_then_else_fi(true, U, U') -> U141(isS(U'), U', U) isBool(false) -> tt isBool(true) -> tt isBool(_and_(V1, V2)) -> U151(isBoolKind(V1), V1, V2) isBool(_implies_(V1, V2)) -> U161(isBoolKind(V1), V1, V2) isBool(_isEqualTo_(V1, V2)) -> tt isBool(_isNotEqualTo_(V1, V2)) -> tt isBool(_or_(V1, V2)) -> U171(isBoolKind(V1), V1, V2) isBool(_xor_(V1, V2)) -> U181(isBoolKind(V1), V1, V2) isBool(not_(V1)) -> U191(isBoolKind(V1), V1) isBoolKind(false) -> tt isBoolKind(true) -> tt isBoolKind(_and_(V1, V2)) -> U201(isBoolKind(V1), V2) isBoolKind(_implies_(V1, V2)) -> U211(isBoolKind(V1), V2) isBoolKind(_isEqualTo_(V1, V2)) -> tt isBoolKind(_isNotEqualTo_(V1, V2)) -> tt isBoolKind(_or_(V1, V2)) -> U221(isBoolKind(V1), V2) isBoolKind(_xor_(V1, V2)) -> U231(isBoolKind(V1), V2) isBoolKind(not_(V1)) -> U241(isBoolKind(V1)) not_(A) -> U251(isBool(A), A) not_(false) -> true not_(true) -> false _and_(_and_(A, A), ext) -> _and_(U11(isBool(A), A), ext) _and_(_and_(A, _xor_(B, C)), ext) -> _and_(U21(isBool(A), A, B, C), ext) _and_(_and_(false, A), ext) -> _and_(U31(isBool(A), A), ext) _and_(_and_(true, A), ext) -> _and_(U41(isBool(A), A), ext) _or_(_or_(A, B), ext) -> _or_(U101(isBool(A), A, B), ext) _xor_(_xor_(A, A), ext) -> _xor_(U111(isBool(A), A), ext) _xor_(_xor_(false, A), ext) -> _xor_(U121(isBool(A), A), ext) The set E consists of the following equations: _and_(x, y) == _and_(y, x) _or_(x, y) == _or_(y, x) _xor_(x, y) == _xor_(y, x) _and_(_and_(x, y), z) == _and_(x, _and_(y, z)) _or_(_or_(x, y), z) == _or_(x, _or_(y, z)) _xor_(_xor_(x, y), z) == _xor_(x, _xor_(y, z)) The set E# consists of the following equations: _AND_(x, y) == _AND_(y, x) _OR_(x, y) == _OR_(y, x) _XOR_(x, y) == _XOR_(y, x) _AND_(_and_(x, y), z) == _AND_(x, _and_(y, z)) _OR_(_or_(x, y), z) == _OR_(x, _or_(y, z)) _XOR_(_xor_(x, y), z) == _XOR_(x, _xor_(y, z)) We have to consider all minimal (P,E#,R,E)-chains ---------------------------------------- (13) ESharpUsableEquationsProof (EQUIVALENT) We can delete the following equations of E# with the esharp usable equations processor[DA_STEIN]: _AND_(x, y) == _AND_(y, x) _OR_(x, y) == _OR_(y, x) _XOR_(x, y) == _XOR_(y, x) _AND_(_and_(x, y), z) == _AND_(x, _and_(y, z)) _OR_(_or_(x, y), z) == _OR_(x, _or_(y, z)) _XOR_(_xor_(x, y), z) == _XOR_(x, _xor_(y, z)) ---------------------------------------- (14) Obligation: The TRS P consists of the following rules: U155^1(tt, V2) -> ISBOOL(V2) U184^1(tt, V1, V2) -> U185^1(isBool(V1), V2) U191^1(tt, V1) -> U192^1(isBoolKind(V1), V1) ISBOOL(_and_(V1, V2)) -> U151^1(isBoolKind(V1), V1, V2) U182^1(tt, V1, V2) -> U183^1(isBoolKind(V2), V1, V2) U172^1(tt, V1, V2) -> U173^1(isBoolKind(V2), V1, V2) U165^1(tt, V2) -> ISBOOL(V2) U174^1(tt, V1, V2) -> U175^1(isBool(V1), V2) U183^1(tt, V1, V2) -> U184^1(isBoolKind(V2), V1, V2) U181^1(tt, V1, V2) -> U182^1(isBoolKind(V1), V1, V2) ISBOOL(_xor_(V1, V2)) -> U181^1(isBoolKind(V1), V1, V2) U152^1(tt, V1, V2) -> U153^1(isBoolKind(V2), V1, V2) U164^1(tt, V1, V2) -> U165^1(isBool(V1), V2) U163^1(tt, V1, V2) -> U164^1(isBoolKind(V2), V1, V2) U153^1(tt, V1, V2) -> U154^1(isBoolKind(V2), V1, V2) U184^1(tt, V1, V2) -> ISBOOL(V1) ISBOOL(_or_(V1, V2)) -> U171^1(isBoolKind(V1), V1, V2) ISBOOL(not_(V1)) -> U191^1(isBoolKind(V1), V1) U161^1(tt, V1, V2) -> U162^1(isBoolKind(V1), V1, V2) U151^1(tt, V1, V2) -> U152^1(isBoolKind(V1), V1, V2) U174^1(tt, V1, V2) -> ISBOOL(V1) ISBOOL(_implies_(V1, V2)) -> U161^1(isBoolKind(V1), V1, V2) U173^1(tt, V1, V2) -> U174^1(isBoolKind(V2), V1, V2) U192^1(tt, V1) -> ISBOOL(V1) U154^1(tt, V1, V2) -> ISBOOL(V1) U185^1(tt, V2) -> ISBOOL(V2) U171^1(tt, V1, V2) -> U172^1(isBoolKind(V1), V1, V2) U154^1(tt, V1, V2) -> U155^1(isBool(V1), V2) U175^1(tt, V2) -> ISBOOL(V2) U164^1(tt, V1, V2) -> ISBOOL(V1) U162^1(tt, V1, V2) -> U163^1(isBoolKind(V2), V1, V2) The TRS R consists of the following rules: U101(tt, A, B) -> U102(isBoolKind(A), A, B) U102(tt, A, B) -> U103(isBool(B), A, B) U103(tt, A, B) -> U104(isBoolKind(B), A, B) U104(tt, A, B) -> _xor_(_and_(A, B), _xor_(A, B)) U11(tt, A) -> U12(isBoolKind(A), A) U111(tt, A) -> U112(isBoolKind(A)) U112(tt) -> false U12(tt, A) -> A U121(tt, A) -> U122(isBoolKind(A), A) U122(tt, A) -> A U131(tt, B, U', U) -> U132(isBoolKind(B), B, U', U) U132(tt, B, U', U) -> U133(isS(U'), B, U', U) U133(tt, B, U', U) -> U134(isSKind(U'), B, U', U) U134(tt, B, U', U) -> U135(isS(U), B, U', U) U135(tt, B, U', U) -> U136(isSKind(U), B, U') U136(tt, B, U') -> U137(equal(_isNotEqualTo_(B, true), true), U') U137(tt, U') -> U' U141(tt, U', U) -> U142(isSKind(U'), U) U142(tt, U) -> U143(isS(U), U) U143(tt, U) -> U144(isSKind(U), U) U144(tt, U) -> U U151(tt, V1, V2) -> U152(isBoolKind(V1), V1, V2) U152(tt, V1, V2) -> U153(isBoolKind(V2), V1, V2) U153(tt, V1, V2) -> U154(isBoolKind(V2), V1, V2) U154(tt, V1, V2) -> U155(isBool(V1), V2) U155(tt, V2) -> U156(isBool(V2)) U156(tt) -> tt U161(tt, V1, V2) -> U162(isBoolKind(V1), V1, V2) U162(tt, V1, V2) -> U163(isBoolKind(V2), V1, V2) U163(tt, V1, V2) -> U164(isBoolKind(V2), V1, V2) U164(tt, V1, V2) -> U165(isBool(V1), V2) U165(tt, V2) -> U166(isBool(V2)) U166(tt) -> tt U171(tt, V1, V2) -> U172(isBoolKind(V1), V1, V2) U172(tt, V1, V2) -> U173(isBoolKind(V2), V1, V2) U173(tt, V1, V2) -> U174(isBoolKind(V2), V1, V2) U174(tt, V1, V2) -> U175(isBool(V1), V2) U175(tt, V2) -> U176(isBool(V2)) U176(tt) -> tt U181(tt, V1, V2) -> U182(isBoolKind(V1), V1, V2) U182(tt, V1, V2) -> U183(isBoolKind(V2), V1, V2) U183(tt, V1, V2) -> U184(isBoolKind(V2), V1, V2) U184(tt, V1, V2) -> U185(isBool(V1), V2) U185(tt, V2) -> U186(isBool(V2)) U186(tt) -> tt U191(tt, V1) -> U192(isBoolKind(V1), V1) U192(tt, V1) -> U193(isBool(V1)) U193(tt) -> tt U201(tt, V2) -> U202(isBoolKind(V2)) U202(tt) -> tt U21(tt, A, B, C) -> U22(isBoolKind(A), A, B, C) U211(tt, V2) -> U212(isBoolKind(V2)) U212(tt) -> tt U22(tt, A, B, C) -> U23(isBool(B), A, B, C) U221(tt, V2) -> U222(isBoolKind(V2)) U222(tt) -> tt U23(tt, A, B, C) -> U24(isBoolKind(B), A, B, C) U231(tt, V2) -> U232(isBoolKind(V2)) U232(tt) -> tt U24(tt, A, B, C) -> U25(isBool(C), A, B, C) U241(tt) -> tt U25(tt, A, B, C) -> U26(isBoolKind(C), A, B, C) U251(tt, A) -> U252(isBoolKind(A), A) U252(tt, A) -> _xor_(A, true) U26(tt, A, B, C) -> _xor_(_and_(A, B), _and_(A, C)) U31(tt, A) -> U32(isBoolKind(A)) U32(tt) -> false U41(tt, A) -> U42(isBoolKind(A), A) U42(tt, A) -> A U51(tt, A, B) -> U52(isBoolKind(A), A, B) U52(tt, A, B) -> U53(isBool(B), A, B) U53(tt, A, B) -> U54(isBoolKind(B), A, B) U54(tt, A, B) -> not_(_xor_(A, _and_(A, B))) U61(tt, U', U) -> U62(isSKind(U'), U', U) U62(tt, U', U) -> U63(isS(U), U', U) U63(tt, U', U) -> U64(isSKind(U), U', U) U64(tt, U', U) -> U65(equal(_isNotEqualTo_(U, U'), true)) U65(tt) -> false U71(tt, U) -> U72(isSKind(U)) U72(tt) -> true U81(tt, U', U) -> U82(isSKind(U'), U', U) U82(tt, U', U) -> U83(isS(U), U', U) U83(tt, U', U) -> U84(isSKind(U), U', U) U84(tt, U', U) -> if_then_else_fi(_isEqualTo_(U, U'), false, true) U91(tt, U) -> U92(isSKind(U)) U92(tt) -> false _and_(A, A) -> U11(isBool(A), A) _and_(A, _xor_(B, C)) -> U21(isBool(A), A, B, C) _and_(false, A) -> U31(isBool(A), A) _and_(true, A) -> U41(isBool(A), A) _implies_(A, B) -> U51(isBool(A), A, B) _isEqualTo_(U, U') -> U61(isS(U'), U', U) _isEqualTo_(U, U) -> U71(isS(U), U) _isNotEqualTo_(U, U') -> U81(isS(U'), U', U) _isNotEqualTo_(U, U) -> U91(isS(U), U) _or_(A, B) -> U101(isBool(A), A, B) _xor_(A, A) -> U111(isBool(A), A) _xor_(false, A) -> U121(isBool(A), A) equal(X, X) -> tt if_then_else_fi(B, U, U') -> U131(isBool(B), B, U', U) if_then_else_fi(true, U, U') -> U141(isS(U'), U', U) isBool(false) -> tt isBool(true) -> tt isBool(_and_(V1, V2)) -> U151(isBoolKind(V1), V1, V2) isBool(_implies_(V1, V2)) -> U161(isBoolKind(V1), V1, V2) isBool(_isEqualTo_(V1, V2)) -> tt isBool(_isNotEqualTo_(V1, V2)) -> tt isBool(_or_(V1, V2)) -> U171(isBoolKind(V1), V1, V2) isBool(_xor_(V1, V2)) -> U181(isBoolKind(V1), V1, V2) isBool(not_(V1)) -> U191(isBoolKind(V1), V1) isBoolKind(false) -> tt isBoolKind(true) -> tt isBoolKind(_and_(V1, V2)) -> U201(isBoolKind(V1), V2) isBoolKind(_implies_(V1, V2)) -> U211(isBoolKind(V1), V2) isBoolKind(_isEqualTo_(V1, V2)) -> tt isBoolKind(_isNotEqualTo_(V1, V2)) -> tt isBoolKind(_or_(V1, V2)) -> U221(isBoolKind(V1), V2) isBoolKind(_xor_(V1, V2)) -> U231(isBoolKind(V1), V2) isBoolKind(not_(V1)) -> U241(isBoolKind(V1)) not_(A) -> U251(isBool(A), A) not_(false) -> true not_(true) -> false _and_(_and_(A, A), ext) -> _and_(U11(isBool(A), A), ext) _and_(_and_(A, _xor_(B, C)), ext) -> _and_(U21(isBool(A), A, B, C), ext) _and_(_and_(false, A), ext) -> _and_(U31(isBool(A), A), ext) _and_(_and_(true, A), ext) -> _and_(U41(isBool(A), A), ext) _or_(_or_(A, B), ext) -> _or_(U101(isBool(A), A, B), ext) _xor_(_xor_(A, A), ext) -> _xor_(U111(isBool(A), A), ext) _xor_(_xor_(false, A), ext) -> _xor_(U121(isBool(A), A), ext) The set E consists of the following equations: _and_(x, y) == _and_(y, x) _or_(x, y) == _or_(y, x) _xor_(x, y) == _xor_(y, x) _and_(_and_(x, y), z) == _and_(x, _and_(y, z)) _or_(_or_(x, y), z) == _or_(x, _or_(y, z)) _xor_(_xor_(x, y), z) == _xor_(x, _xor_(y, z)) E# is empty. We have to consider all minimal (P,E#,R,E)-chains ---------------------------------------- (15) EUsableRulesReductionPairsProof (EQUIVALENT) By using the usable rules and equations with reduction pair processor [DA_STEIN] with a polynomial ordering [POLO], all dependency pairs and the corresponding usable rules can be oriented non-strictly, the usable equations and the esharp equations can be oriented equivalently. All non-usable rules and equations are removed, and those dependency pairs and usable rules that have been oriented strictly or contain non-usable symbols in their left-hand side are removed as well. The following dependency pairs can be deleted: ISBOOL(_and_(V1, V2)) -> U151^1(isBoolKind(V1), V1, V2) ISBOOL(_xor_(V1, V2)) -> U181^1(isBoolKind(V1), V1, V2) U152^1(tt, V1, V2) -> U153^1(isBoolKind(V2), V1, V2) ISBOOL(_or_(V1, V2)) -> U171^1(isBoolKind(V1), V1, V2) ISBOOL(not_(V1)) -> U191^1(isBoolKind(V1), V1) U151^1(tt, V1, V2) -> U152^1(isBoolKind(V1), V1, V2) ISBOOL(_implies_(V1, V2)) -> U161^1(isBoolKind(V1), V1, V2) U162^1(tt, V1, V2) -> U163^1(isBoolKind(V2), V1, V2) The following rules are removed from R: U101(tt, A, B) -> U102(isBoolKind(A), A, B) U102(tt, A, B) -> U103(isBool(B), A, B) U103(tt, A, B) -> U104(isBoolKind(B), A, B) U104(tt, A, B) -> _xor_(_and_(A, B), _xor_(A, B)) U11(tt, A) -> U12(isBoolKind(A), A) U111(tt, A) -> U112(isBoolKind(A)) U112(tt) -> false U12(tt, A) -> A U121(tt, A) -> U122(isBoolKind(A), A) U122(tt, A) -> A U131(tt, B, U', U) -> U132(isBoolKind(B), B, U', U) U132(tt, B, U', U) -> U133(isS(U'), B, U', U) U133(tt, B, U', U) -> U134(isSKind(U'), B, U', U) U134(tt, B, U', U) -> U135(isS(U), B, U', U) U135(tt, B, U', U) -> U136(isSKind(U), B, U') U136(tt, B, U') -> U137(equal(_isNotEqualTo_(B, true), true), U') U137(tt, U') -> U' U141(tt, U', U) -> U142(isSKind(U'), U) U142(tt, U) -> U143(isS(U), U) U143(tt, U) -> U144(isSKind(U), U) U144(tt, U) -> U U153(tt, V1, V2) -> U154(isBoolKind(V2), V1, V2) U161(tt, V1, V2) -> U162(isBoolKind(V1), V1, V2) U172(tt, V1, V2) -> U173(isBoolKind(V2), V1, V2) U173(tt, V1, V2) -> U174(isBoolKind(V2), V1, V2) U21(tt, A, B, C) -> U22(isBoolKind(A), A, B, C) U22(tt, A, B, C) -> U23(isBool(B), A, B, C) U23(tt, A, B, C) -> U24(isBoolKind(B), A, B, C) U24(tt, A, B, C) -> U25(isBool(C), A, B, C) U25(tt, A, B, C) -> U26(isBoolKind(C), A, B, C) U251(tt, A) -> U252(isBoolKind(A), A) U252(tt, A) -> _xor_(A, true) U26(tt, A, B, C) -> _xor_(_and_(A, B), _and_(A, C)) U31(tt, A) -> U32(isBoolKind(A)) U32(tt) -> false U41(tt, A) -> U42(isBoolKind(A), A) U42(tt, A) -> A U51(tt, A, B) -> U52(isBoolKind(A), A, B) U52(tt, A, B) -> U53(isBool(B), A, B) U53(tt, A, B) -> U54(isBoolKind(B), A, B) U54(tt, A, B) -> not_(_xor_(A, _and_(A, B))) U61(tt, U', U) -> U62(isSKind(U'), U', U) U62(tt, U', U) -> U63(isS(U), U', U) U63(tt, U', U) -> U64(isSKind(U), U', U) U64(tt, U', U) -> U65(equal(_isNotEqualTo_(U, U'), true)) U65(tt) -> false U71(tt, U) -> U72(isSKind(U)) U72(tt) -> true U81(tt, U', U) -> U82(isSKind(U'), U', U) U82(tt, U', U) -> U83(isS(U), U', U) U83(tt, U', U) -> U84(isSKind(U), U', U) U84(tt, U', U) -> if_then_else_fi(_isEqualTo_(U, U'), false, true) U91(tt, U) -> U92(isSKind(U)) U92(tt) -> false _and_(A, A) -> U11(isBool(A), A) _and_(A, _xor_(B, C)) -> U21(isBool(A), A, B, C) _and_(false, A) -> U31(isBool(A), A) _and_(true, A) -> U41(isBool(A), A) _implies_(A, B) -> U51(isBool(A), A, B) _isEqualTo_(U, U') -> U61(isS(U'), U', U) _isEqualTo_(U, U) -> U71(isS(U), U) _isNotEqualTo_(U, U') -> U81(isS(U'), U', U) _isNotEqualTo_(U, U) -> U91(isS(U), U) _or_(A, B) -> U101(isBool(A), A, B) _xor_(A, A) -> U111(isBool(A), A) _xor_(false, A) -> U121(isBool(A), A) equal(X, X) -> tt if_then_else_fi(B, U, U') -> U131(isBool(B), B, U', U) if_then_else_fi(true, U, U') -> U141(isS(U'), U', U) isBool(false) -> tt isBool(true) -> tt isBool(_and_(V1, V2)) -> U151(isBoolKind(V1), V1, V2) isBool(_implies_(V1, V2)) -> U161(isBoolKind(V1), V1, V2) isBool(_isEqualTo_(V1, V2)) -> tt isBool(_isNotEqualTo_(V1, V2)) -> tt isBool(_or_(V1, V2)) -> U171(isBoolKind(V1), V1, V2) isBool(_xor_(V1, V2)) -> U181(isBoolKind(V1), V1, V2) isBool(not_(V1)) -> U191(isBoolKind(V1), V1) isBoolKind(false) -> tt isBoolKind(true) -> tt isBoolKind(_and_(V1, V2)) -> U201(isBoolKind(V1), V2) isBoolKind(_implies_(V1, V2)) -> U211(isBoolKind(V1), V2) isBoolKind(_isEqualTo_(V1, V2)) -> tt isBoolKind(_isNotEqualTo_(V1, V2)) -> tt isBoolKind(_or_(V1, V2)) -> U221(isBoolKind(V1), V2) isBoolKind(_xor_(V1, V2)) -> U231(isBoolKind(V1), V2) isBoolKind(not_(V1)) -> U241(isBoolKind(V1)) not_(A) -> U251(isBool(A), A) not_(false) -> true not_(true) -> false _and_(_and_(A, A), ext) -> _and_(U11(isBool(A), A), ext) _and_(_and_(A, _xor_(B, C)), ext) -> _and_(U21(isBool(A), A, B, C), ext) _and_(_and_(false, A), ext) -> _and_(U31(isBool(A), A), ext) _and_(_and_(true, A), ext) -> _and_(U41(isBool(A), A), ext) _or_(_or_(A, B), ext) -> _or_(U101(isBool(A), A, B), ext) _xor_(_xor_(A, A), ext) -> _xor_(U111(isBool(A), A), ext) _xor_(_xor_(false, A), ext) -> _xor_(U121(isBool(A), A), ext) The following equations are removed from E: _and_(x, y) == _and_(y, x) _or_(x, y) == _or_(y, x) _xor_(x, y) == _xor_(y, x) _and_(_and_(x, y), z) == _and_(x, _and_(y, z)) _or_(_or_(x, y), z) == _or_(x, _or_(y, z)) _xor_(_xor_(x, y), z) == _xor_(x, _xor_(y, z)) Used ordering: POLO with Polynomial interpretation [POLO]: POL(ISBOOL(x_1)) = x_1 POL(U151(x_1, x_2, x_3)) = 2 + x_1 + 2*x_2 + 3*x_3 POL(U151^1(x_1, x_2, x_3)) = 3 + x_1 + 2*x_2 + 3*x_3 POL(U152(x_1, x_2, x_3)) = 2 + x_1 + x_2 + 3*x_3 POL(U152^1(x_1, x_2, x_3)) = 2 + x_1 + x_2 + 3*x_3 POL(U153(x_1, x_2, x_3)) = 2 + x_1 + x_2 + 2*x_3 POL(U153^1(x_1, x_2, x_3)) = x_1 + x_2 + 2*x_3 POL(U154(x_1, x_2, x_3)) = x_1 + x_2 + x_3 POL(U154^1(x_1, x_2, x_3)) = x_1 + x_2 + x_3 POL(U155(x_1, x_2)) = x_1 + x_2 POL(U155^1(x_1, x_2)) = x_1 + x_2 POL(U156(x_1)) = x_1 POL(U161(x_1, x_2, x_3)) = 1 + x_1 + 2*x_2 + 3*x_3 POL(U161^1(x_1, x_2, x_3)) = 2 + x_1 + 2*x_2 + 3*x_3 POL(U162(x_1, x_2, x_3)) = x_1 + x_2 + 3*x_3 POL(U162^1(x_1, x_2, x_3)) = 2 + x_1 + x_2 + 3*x_3 POL(U163(x_1, x_2, x_3)) = x_1 + x_2 + 2*x_3 POL(U163^1(x_1, x_2, x_3)) = x_1 + x_2 + 2*x_3 POL(U164(x_1, x_2, x_3)) = x_1 + x_2 + x_3 POL(U164^1(x_1, x_2, x_3)) = x_1 + x_2 + x_3 POL(U165(x_1, x_2)) = x_1 + x_2 POL(U165^1(x_1, x_2)) = x_1 + x_2 POL(U166(x_1)) = x_1 POL(U171(x_1, x_2, x_3)) = 2 + x_1 + 2*x_2 + 3*x_3 POL(U171^1(x_1, x_2, x_3)) = x_1 + 2*x_2 + 3*x_3 POL(U172(x_1, x_2, x_3)) = 2 + x_1 + x_2 + 3*x_3 POL(U172^1(x_1, x_2, x_3)) = x_1 + x_2 + 3*x_3 POL(U173(x_1, x_2, x_3)) = 1 + x_1 + x_2 + 2*x_3 POL(U173^1(x_1, x_2, x_3)) = x_1 + x_2 + 2*x_3 POL(U174(x_1, x_2, x_3)) = x_1 + x_2 + x_3 POL(U174^1(x_1, x_2, x_3)) = x_1 + x_2 + x_3 POL(U175(x_1, x_2)) = x_1 + x_2 POL(U175^1(x_1, x_2)) = x_1 + x_2 POL(U176(x_1)) = x_1 POL(U181(x_1, x_2, x_3)) = x_1 + 2*x_2 + 3*x_3 POL(U181^1(x_1, x_2, x_3)) = x_1 + 2*x_2 + 3*x_3 POL(U182(x_1, x_2, x_3)) = x_1 + x_2 + 3*x_3 POL(U182^1(x_1, x_2, x_3)) = x_1 + x_2 + 3*x_3 POL(U183(x_1, x_2, x_3)) = x_1 + x_2 + 2*x_3 POL(U183^1(x_1, x_2, x_3)) = x_1 + x_2 + 2*x_3 POL(U184(x_1, x_2, x_3)) = x_1 + x_2 + x_3 POL(U184^1(x_1, x_2, x_3)) = x_1 + x_2 + x_3 POL(U185(x_1, x_2)) = x_1 + x_2 POL(U185^1(x_1, x_2)) = x_1 + x_2 POL(U186(x_1)) = x_1 POL(U191(x_1, x_2)) = x_1 + 2*x_2 POL(U191^1(x_1, x_2)) = x_1 + 2*x_2 POL(U192(x_1, x_2)) = x_1 + x_2 POL(U192^1(x_1, x_2)) = x_1 + x_2 POL(U193(x_1)) = x_1 POL(U201(x_1, x_2)) = x_1 + 2*x_2 POL(U202(x_1)) = x_1 POL(U211(x_1, x_2)) = x_1 + 2*x_2 POL(U212(x_1)) = 2*x_1 POL(U221(x_1, x_2)) = x_1 + 2*x_2 POL(U222(x_1)) = 2*x_1 POL(U231(x_1, x_2)) = 2*x_1 + 2*x_2 POL(U232(x_1)) = x_1 POL(U241(x_1)) = x_1 POL(_and_(x_1, x_2)) = 3 + 3*x_1 + 3*x_2 POL(_implies_(x_1, x_2)) = 2 + 3*x_1 + 3*x_2 POL(_isEqualTo_(x_1, x_2)) = x_1 + x_2 POL(_isNotEqualTo_(x_1, x_2)) = x_1 + x_2 POL(_or_(x_1, x_2)) = 2 + 3*x_1 + 3*x_2 POL(_xor_(x_1, x_2)) = 3*x_1 + 3*x_2 POL(false) = 0 POL(isBool(x_1)) = x_1 POL(isBoolKind(x_1)) = x_1 POL(not_(x_1)) = 3*x_1 POL(true) = 0 POL(tt) = 0 ---------------------------------------- (16) Obligation: The TRS P consists of the following rules: U155^1(tt, V2) -> ISBOOL(V2) U184^1(tt, V1, V2) -> U185^1(isBool(V1), V2) U191^1(tt, V1) -> U192^1(isBoolKind(V1), V1) U182^1(tt, V1, V2) -> U183^1(isBoolKind(V2), V1, V2) U172^1(tt, V1, V2) -> U173^1(isBoolKind(V2), V1, V2) U165^1(tt, V2) -> ISBOOL(V2) U174^1(tt, V1, V2) -> U175^1(isBool(V1), V2) U183^1(tt, V1, V2) -> U184^1(isBoolKind(V2), V1, V2) U181^1(tt, V1, V2) -> U182^1(isBoolKind(V1), V1, V2) U164^1(tt, V1, V2) -> U165^1(isBool(V1), V2) U163^1(tt, V1, V2) -> U164^1(isBoolKind(V2), V1, V2) U153^1(tt, V1, V2) -> U154^1(isBoolKind(V2), V1, V2) U184^1(tt, V1, V2) -> ISBOOL(V1) U161^1(tt, V1, V2) -> U162^1(isBoolKind(V1), V1, V2) U174^1(tt, V1, V2) -> ISBOOL(V1) U173^1(tt, V1, V2) -> U174^1(isBoolKind(V2), V1, V2) U192^1(tt, V1) -> ISBOOL(V1) U154^1(tt, V1, V2) -> ISBOOL(V1) U185^1(tt, V2) -> ISBOOL(V2) U171^1(tt, V1, V2) -> U172^1(isBoolKind(V1), V1, V2) U154^1(tt, V1, V2) -> U155^1(isBool(V1), V2) U175^1(tt, V2) -> ISBOOL(V2) U164^1(tt, V1, V2) -> ISBOOL(V1) The TRS R consists of the following rules: U176(tt) -> tt U202(tt) -> tt U151(tt, V1, V2) -> U152(isBoolKind(V1), V1, V2) U163(tt, V1, V2) -> U164(isBoolKind(V2), V1, V2) U171(tt, V1, V2) -> U172(isBoolKind(V1), V1, V2) U222(tt) -> tt U156(tt) -> tt U174(tt, V1, V2) -> U175(isBool(V1), V2) U155(tt, V2) -> U156(isBool(V2)) U152(tt, V1, V2) -> U153(isBoolKind(V2), V1, V2) U166(tt) -> tt U232(tt) -> tt U191(tt, V1) -> U192(isBoolKind(V1), V1) U201(tt, V2) -> U202(isBoolKind(V2)) U162(tt, V1, V2) -> U163(isBoolKind(V2), V1, V2) U164(tt, V1, V2) -> U165(isBool(V1), V2) U186(tt) -> tt U192(tt, V1) -> U193(isBool(V1)) U231(tt, V2) -> U232(isBoolKind(V2)) U175(tt, V2) -> U176(isBool(V2)) U193(tt) -> tt U165(tt, V2) -> U166(isBool(V2)) U185(tt, V2) -> U186(isBool(V2)) U212(tt) -> tt U183(tt, V1, V2) -> U184(isBoolKind(V2), V1, V2) U154(tt, V1, V2) -> U155(isBool(V1), V2) U241(tt) -> tt U211(tt, V2) -> U212(isBoolKind(V2)) U184(tt, V1, V2) -> U185(isBool(V1), V2) U181(tt, V1, V2) -> U182(isBoolKind(V1), V1, V2) U221(tt, V2) -> U222(isBoolKind(V2)) U182(tt, V1, V2) -> U183(isBoolKind(V2), V1, V2) E is empty. E# is empty. We have to consider all minimal (P,E#,R,E)-chains ---------------------------------------- (17) EDependencyGraphProof (EQUIVALENT) The approximation of the Equational Dependency Graph [DA_STEIN] contains 0 SCCs with 23 less nodes. ---------------------------------------- (18) TRUE ---------------------------------------- (19) Obligation: The TRS P consists of the following rules: _XOR_(_xor_(false, A), ext) -> _XOR_(U121(isBool(A), A), ext) _XOR_(_xor_(A, A), ext) -> _XOR_(U111(isBool(A), A), ext) The TRS R consists of the following rules: U101(tt, A, B) -> U102(isBoolKind(A), A, B) U102(tt, A, B) -> U103(isBool(B), A, B) U103(tt, A, B) -> U104(isBoolKind(B), A, B) U104(tt, A, B) -> _xor_(_and_(A, B), _xor_(A, B)) U11(tt, A) -> U12(isBoolKind(A), A) U111(tt, A) -> U112(isBoolKind(A)) U112(tt) -> false U12(tt, A) -> A U121(tt, A) -> U122(isBoolKind(A), A) U122(tt, A) -> A U131(tt, B, U', U) -> U132(isBoolKind(B), B, U', U) U132(tt, B, U', U) -> U133(isS(U'), B, U', U) U133(tt, B, U', U) -> U134(isSKind(U'), B, U', U) U134(tt, B, U', U) -> U135(isS(U), B, U', U) U135(tt, B, U', U) -> U136(isSKind(U), B, U') U136(tt, B, U') -> U137(equal(_isNotEqualTo_(B, true), true), U') U137(tt, U') -> U' U141(tt, U', U) -> U142(isSKind(U'), U) U142(tt, U) -> U143(isS(U), U) U143(tt, U) -> U144(isSKind(U), U) U144(tt, U) -> U U151(tt, V1, V2) -> U152(isBoolKind(V1), V1, V2) U152(tt, V1, V2) -> U153(isBoolKind(V2), V1, V2) U153(tt, V1, V2) -> U154(isBoolKind(V2), V1, V2) U154(tt, V1, V2) -> U155(isBool(V1), V2) U155(tt, V2) -> U156(isBool(V2)) U156(tt) -> tt U161(tt, V1, V2) -> U162(isBoolKind(V1), V1, V2) U162(tt, V1, V2) -> U163(isBoolKind(V2), V1, V2) U163(tt, V1, V2) -> U164(isBoolKind(V2), V1, V2) U164(tt, V1, V2) -> U165(isBool(V1), V2) U165(tt, V2) -> U166(isBool(V2)) U166(tt) -> tt U171(tt, V1, V2) -> U172(isBoolKind(V1), V1, V2) U172(tt, V1, V2) -> U173(isBoolKind(V2), V1, V2) U173(tt, V1, V2) -> U174(isBoolKind(V2), V1, V2) U174(tt, V1, V2) -> U175(isBool(V1), V2) U175(tt, V2) -> U176(isBool(V2)) U176(tt) -> tt U181(tt, V1, V2) -> U182(isBoolKind(V1), V1, V2) U182(tt, V1, V2) -> U183(isBoolKind(V2), V1, V2) U183(tt, V1, V2) -> U184(isBoolKind(V2), V1, V2) U184(tt, V1, V2) -> U185(isBool(V1), V2) U185(tt, V2) -> U186(isBool(V2)) U186(tt) -> tt U191(tt, V1) -> U192(isBoolKind(V1), V1) U192(tt, V1) -> U193(isBool(V1)) U193(tt) -> tt U201(tt, V2) -> U202(isBoolKind(V2)) U202(tt) -> tt U21(tt, A, B, C) -> U22(isBoolKind(A), A, B, C) U211(tt, V2) -> U212(isBoolKind(V2)) U212(tt) -> tt U22(tt, A, B, C) -> U23(isBool(B), A, B, C) U221(tt, V2) -> U222(isBoolKind(V2)) U222(tt) -> tt U23(tt, A, B, C) -> U24(isBoolKind(B), A, B, C) U231(tt, V2) -> U232(isBoolKind(V2)) U232(tt) -> tt U24(tt, A, B, C) -> U25(isBool(C), A, B, C) U241(tt) -> tt U25(tt, A, B, C) -> U26(isBoolKind(C), A, B, C) U251(tt, A) -> U252(isBoolKind(A), A) U252(tt, A) -> _xor_(A, true) U26(tt, A, B, C) -> _xor_(_and_(A, B), _and_(A, C)) U31(tt, A) -> U32(isBoolKind(A)) U32(tt) -> false U41(tt, A) -> U42(isBoolKind(A), A) U42(tt, A) -> A U51(tt, A, B) -> U52(isBoolKind(A), A, B) U52(tt, A, B) -> U53(isBool(B), A, B) U53(tt, A, B) -> U54(isBoolKind(B), A, B) U54(tt, A, B) -> not_(_xor_(A, _and_(A, B))) U61(tt, U', U) -> U62(isSKind(U'), U', U) U62(tt, U', U) -> U63(isS(U), U', U) U63(tt, U', U) -> U64(isSKind(U), U', U) U64(tt, U', U) -> U65(equal(_isNotEqualTo_(U, U'), true)) U65(tt) -> false U71(tt, U) -> U72(isSKind(U)) U72(tt) -> true U81(tt, U', U) -> U82(isSKind(U'), U', U) U82(tt, U', U) -> U83(isS(U), U', U) U83(tt, U', U) -> U84(isSKind(U), U', U) U84(tt, U', U) -> if_then_else_fi(_isEqualTo_(U, U'), false, true) U91(tt, U) -> U92(isSKind(U)) U92(tt) -> false _and_(A, A) -> U11(isBool(A), A) _and_(A, _xor_(B, C)) -> U21(isBool(A), A, B, C) _and_(false, A) -> U31(isBool(A), A) _and_(true, A) -> U41(isBool(A), A) _implies_(A, B) -> U51(isBool(A), A, B) _isEqualTo_(U, U') -> U61(isS(U'), U', U) _isEqualTo_(U, U) -> U71(isS(U), U) _isNotEqualTo_(U, U') -> U81(isS(U'), U', U) _isNotEqualTo_(U, U) -> U91(isS(U), U) _or_(A, B) -> U101(isBool(A), A, B) _xor_(A, A) -> U111(isBool(A), A) _xor_(false, A) -> U121(isBool(A), A) equal(X, X) -> tt if_then_else_fi(B, U, U') -> U131(isBool(B), B, U', U) if_then_else_fi(true, U, U') -> U141(isS(U'), U', U) isBool(false) -> tt isBool(true) -> tt isBool(_and_(V1, V2)) -> U151(isBoolKind(V1), V1, V2) isBool(_implies_(V1, V2)) -> U161(isBoolKind(V1), V1, V2) isBool(_isEqualTo_(V1, V2)) -> tt isBool(_isNotEqualTo_(V1, V2)) -> tt isBool(_or_(V1, V2)) -> U171(isBoolKind(V1), V1, V2) isBool(_xor_(V1, V2)) -> U181(isBoolKind(V1), V1, V2) isBool(not_(V1)) -> U191(isBoolKind(V1), V1) isBoolKind(false) -> tt isBoolKind(true) -> tt isBoolKind(_and_(V1, V2)) -> U201(isBoolKind(V1), V2) isBoolKind(_implies_(V1, V2)) -> U211(isBoolKind(V1), V2) isBoolKind(_isEqualTo_(V1, V2)) -> tt isBoolKind(_isNotEqualTo_(V1, V2)) -> tt isBoolKind(_or_(V1, V2)) -> U221(isBoolKind(V1), V2) isBoolKind(_xor_(V1, V2)) -> U231(isBoolKind(V1), V2) isBoolKind(not_(V1)) -> U241(isBoolKind(V1)) not_(A) -> U251(isBool(A), A) not_(false) -> true not_(true) -> false _and_(_and_(A, A), ext) -> _and_(U11(isBool(A), A), ext) _and_(_and_(A, _xor_(B, C)), ext) -> _and_(U21(isBool(A), A, B, C), ext) _and_(_and_(false, A), ext) -> _and_(U31(isBool(A), A), ext) _and_(_and_(true, A), ext) -> _and_(U41(isBool(A), A), ext) _or_(_or_(A, B), ext) -> _or_(U101(isBool(A), A, B), ext) _xor_(_xor_(A, A), ext) -> _xor_(U111(isBool(A), A), ext) _xor_(_xor_(false, A), ext) -> _xor_(U121(isBool(A), A), ext) The set E consists of the following equations: _and_(x, y) == _and_(y, x) _or_(x, y) == _or_(y, x) _xor_(x, y) == _xor_(y, x) _and_(_and_(x, y), z) == _and_(x, _and_(y, z)) _or_(_or_(x, y), z) == _or_(x, _or_(y, z)) _xor_(_xor_(x, y), z) == _xor_(x, _xor_(y, z)) The set E# consists of the following equations: _AND_(x, y) == _AND_(y, x) _OR_(x, y) == _OR_(y, x) _XOR_(x, y) == _XOR_(y, x) _AND_(_and_(x, y), z) == _AND_(x, _and_(y, z)) _OR_(_or_(x, y), z) == _OR_(x, _or_(y, z)) _XOR_(_xor_(x, y), z) == _XOR_(x, _xor_(y, z)) We have to consider all minimal (P,E#,R,E)-chains ---------------------------------------- (20) ESharpUsableEquationsProof (EQUIVALENT) We can delete the following equations of E# with the esharp usable equations processor[DA_STEIN]: _AND_(x, y) == _AND_(y, x) _OR_(x, y) == _OR_(y, x) _AND_(_and_(x, y), z) == _AND_(x, _and_(y, z)) _OR_(_or_(x, y), z) == _OR_(x, _or_(y, z)) ---------------------------------------- (21) Obligation: The TRS P consists of the following rules: _XOR_(_xor_(false, A), ext) -> _XOR_(U121(isBool(A), A), ext) _XOR_(_xor_(A, A), ext) -> _XOR_(U111(isBool(A), A), ext) The TRS R consists of the following rules: U101(tt, A, B) -> U102(isBoolKind(A), A, B) U102(tt, A, B) -> U103(isBool(B), A, B) U103(tt, A, B) -> U104(isBoolKind(B), A, B) U104(tt, A, B) -> _xor_(_and_(A, B), _xor_(A, B)) U11(tt, A) -> U12(isBoolKind(A), A) U111(tt, A) -> U112(isBoolKind(A)) U112(tt) -> false U12(tt, A) -> A U121(tt, A) -> U122(isBoolKind(A), A) U122(tt, A) -> A U131(tt, B, U', U) -> U132(isBoolKind(B), B, U', U) U132(tt, B, U', U) -> U133(isS(U'), B, U', U) U133(tt, B, U', U) -> U134(isSKind(U'), B, U', U) U134(tt, B, U', U) -> U135(isS(U), B, U', U) U135(tt, B, U', U) -> U136(isSKind(U), B, U') U136(tt, B, U') -> U137(equal(_isNotEqualTo_(B, true), true), U') U137(tt, U') -> U' U141(tt, U', U) -> U142(isSKind(U'), U) U142(tt, U) -> U143(isS(U), U) U143(tt, U) -> U144(isSKind(U), U) U144(tt, U) -> U U151(tt, V1, V2) -> U152(isBoolKind(V1), V1, V2) U152(tt, V1, V2) -> U153(isBoolKind(V2), V1, V2) U153(tt, V1, V2) -> U154(isBoolKind(V2), V1, V2) U154(tt, V1, V2) -> U155(isBool(V1), V2) U155(tt, V2) -> U156(isBool(V2)) U156(tt) -> tt U161(tt, V1, V2) -> U162(isBoolKind(V1), V1, V2) U162(tt, V1, V2) -> U163(isBoolKind(V2), V1, V2) U163(tt, V1, V2) -> U164(isBoolKind(V2), V1, V2) U164(tt, V1, V2) -> U165(isBool(V1), V2) U165(tt, V2) -> U166(isBool(V2)) U166(tt) -> tt U171(tt, V1, V2) -> U172(isBoolKind(V1), V1, V2) U172(tt, V1, V2) -> U173(isBoolKind(V2), V1, V2) U173(tt, V1, V2) -> U174(isBoolKind(V2), V1, V2) U174(tt, V1, V2) -> U175(isBool(V1), V2) U175(tt, V2) -> U176(isBool(V2)) U176(tt) -> tt U181(tt, V1, V2) -> U182(isBoolKind(V1), V1, V2) U182(tt, V1, V2) -> U183(isBoolKind(V2), V1, V2) U183(tt, V1, V2) -> U184(isBoolKind(V2), V1, V2) U184(tt, V1, V2) -> U185(isBool(V1), V2) U185(tt, V2) -> U186(isBool(V2)) U186(tt) -> tt U191(tt, V1) -> U192(isBoolKind(V1), V1) U192(tt, V1) -> U193(isBool(V1)) U193(tt) -> tt U201(tt, V2) -> U202(isBoolKind(V2)) U202(tt) -> tt U21(tt, A, B, C) -> U22(isBoolKind(A), A, B, C) U211(tt, V2) -> U212(isBoolKind(V2)) U212(tt) -> tt U22(tt, A, B, C) -> U23(isBool(B), A, B, C) U221(tt, V2) -> U222(isBoolKind(V2)) U222(tt) -> tt U23(tt, A, B, C) -> U24(isBoolKind(B), A, B, C) U231(tt, V2) -> U232(isBoolKind(V2)) U232(tt) -> tt U24(tt, A, B, C) -> U25(isBool(C), A, B, C) U241(tt) -> tt U25(tt, A, B, C) -> U26(isBoolKind(C), A, B, C) U251(tt, A) -> U252(isBoolKind(A), A) U252(tt, A) -> _xor_(A, true) U26(tt, A, B, C) -> _xor_(_and_(A, B), _and_(A, C)) U31(tt, A) -> U32(isBoolKind(A)) U32(tt) -> false U41(tt, A) -> U42(isBoolKind(A), A) U42(tt, A) -> A U51(tt, A, B) -> U52(isBoolKind(A), A, B) U52(tt, A, B) -> U53(isBool(B), A, B) U53(tt, A, B) -> U54(isBoolKind(B), A, B) U54(tt, A, B) -> not_(_xor_(A, _and_(A, B))) U61(tt, U', U) -> U62(isSKind(U'), U', U) U62(tt, U', U) -> U63(isS(U), U', U) U63(tt, U', U) -> U64(isSKind(U), U', U) U64(tt, U', U) -> U65(equal(_isNotEqualTo_(U, U'), true)) U65(tt) -> false U71(tt, U) -> U72(isSKind(U)) U72(tt) -> true U81(tt, U', U) -> U82(isSKind(U'), U', U) U82(tt, U', U) -> U83(isS(U), U', U) U83(tt, U', U) -> U84(isSKind(U), U', U) U84(tt, U', U) -> if_then_else_fi(_isEqualTo_(U, U'), false, true) U91(tt, U) -> U92(isSKind(U)) U92(tt) -> false _and_(A, A) -> U11(isBool(A), A) _and_(A, _xor_(B, C)) -> U21(isBool(A), A, B, C) _and_(false, A) -> U31(isBool(A), A) _and_(true, A) -> U41(isBool(A), A) _implies_(A, B) -> U51(isBool(A), A, B) _isEqualTo_(U, U') -> U61(isS(U'), U', U) _isEqualTo_(U, U) -> U71(isS(U), U) _isNotEqualTo_(U, U') -> U81(isS(U'), U', U) _isNotEqualTo_(U, U) -> U91(isS(U), U) _or_(A, B) -> U101(isBool(A), A, B) _xor_(A, A) -> U111(isBool(A), A) _xor_(false, A) -> U121(isBool(A), A) equal(X, X) -> tt if_then_else_fi(B, U, U') -> U131(isBool(B), B, U', U) if_then_else_fi(true, U, U') -> U141(isS(U'), U', U) isBool(false) -> tt isBool(true) -> tt isBool(_and_(V1, V2)) -> U151(isBoolKind(V1), V1, V2) isBool(_implies_(V1, V2)) -> U161(isBoolKind(V1), V1, V2) isBool(_isEqualTo_(V1, V2)) -> tt isBool(_isNotEqualTo_(V1, V2)) -> tt isBool(_or_(V1, V2)) -> U171(isBoolKind(V1), V1, V2) isBool(_xor_(V1, V2)) -> U181(isBoolKind(V1), V1, V2) isBool(not_(V1)) -> U191(isBoolKind(V1), V1) isBoolKind(false) -> tt isBoolKind(true) -> tt isBoolKind(_and_(V1, V2)) -> U201(isBoolKind(V1), V2) isBoolKind(_implies_(V1, V2)) -> U211(isBoolKind(V1), V2) isBoolKind(_isEqualTo_(V1, V2)) -> tt isBoolKind(_isNotEqualTo_(V1, V2)) -> tt isBoolKind(_or_(V1, V2)) -> U221(isBoolKind(V1), V2) isBoolKind(_xor_(V1, V2)) -> U231(isBoolKind(V1), V2) isBoolKind(not_(V1)) -> U241(isBoolKind(V1)) not_(A) -> U251(isBool(A), A) not_(false) -> true not_(true) -> false _and_(_and_(A, A), ext) -> _and_(U11(isBool(A), A), ext) _and_(_and_(A, _xor_(B, C)), ext) -> _and_(U21(isBool(A), A, B, C), ext) _and_(_and_(false, A), ext) -> _and_(U31(isBool(A), A), ext) _and_(_and_(true, A), ext) -> _and_(U41(isBool(A), A), ext) _or_(_or_(A, B), ext) -> _or_(U101(isBool(A), A, B), ext) _xor_(_xor_(A, A), ext) -> _xor_(U111(isBool(A), A), ext) _xor_(_xor_(false, A), ext) -> _xor_(U121(isBool(A), A), ext) The set E consists of the following equations: _and_(x, y) == _and_(y, x) _or_(x, y) == _or_(y, x) _xor_(x, y) == _xor_(y, x) _and_(_and_(x, y), z) == _and_(x, _and_(y, z)) _or_(_or_(x, y), z) == _or_(x, _or_(y, z)) _xor_(_xor_(x, y), z) == _xor_(x, _xor_(y, z)) The set E# consists of the following equations: _XOR_(x, y) == _XOR_(y, x) _XOR_(_xor_(x, y), z) == _XOR_(x, _xor_(y, z)) We have to consider all minimal (P,E#,R,E)-chains ---------------------------------------- (22) EDPPoloProof (EQUIVALENT) We use the reduction pair processor [DA_STEIN] with a polynomial ordering [POLO]. All Dependency Pairs of this DP problem can be strictly oriented. _XOR_(_xor_(false, A), ext) -> _XOR_(U121(isBool(A), A), ext) _XOR_(_xor_(A, A), ext) -> _XOR_(U111(isBool(A), A), ext) With the implicit AFS we had to orient the following set of usable rules of R non-strictly. U212(tt) -> tt _xor_(_xor_(A, A), ext) -> _xor_(U111(isBool(A), A), ext) _xor_(A, A) -> U111(isBool(A), A) _xor_(_xor_(false, A), ext) -> _xor_(U121(isBool(A), A), ext) _xor_(false, A) -> U121(isBool(A), A) U201(tt, V2) -> U202(isBoolKind(V2)) U121(tt, A) -> U122(isBoolKind(A), A) U231(tt, V2) -> U232(isBoolKind(V2)) U202(tt) -> tt U112(tt) -> false U122(tt, A) -> A U232(tt) -> tt U241(tt) -> tt isBoolKind(_and_(V1, V2)) -> U201(isBoolKind(V1), V2) isBoolKind(_implies_(V1, V2)) -> U211(isBoolKind(V1), V2) isBoolKind(true) -> tt isBoolKind(_isNotEqualTo_(V1, V2)) -> tt isBoolKind(_isEqualTo_(V1, V2)) -> tt isBoolKind(_xor_(V1, V2)) -> U231(isBoolKind(V1), V2) isBoolKind(_or_(V1, V2)) -> U221(isBoolKind(V1), V2) isBoolKind(not_(V1)) -> U241(isBoolKind(V1)) isBoolKind(false) -> tt U111(tt, A) -> U112(isBoolKind(A)) U221(tt, V2) -> U222(isBoolKind(V2)) U222(tt) -> tt U211(tt, V2) -> U212(isBoolKind(V2)) We had to orient the following equations of E# equivalently. _XOR_(x, y) == _XOR_(y, x) _XOR_(_xor_(x, y), z) == _XOR_(x, _xor_(y, z)) With the implicit AFS we had to orient the following usable equations of E equivalently. _xor_(x, y) == _xor_(y, x) _xor_(_xor_(x, y), z) == _xor_(x, _xor_(y, z)) Used ordering: POLO with Polynomial interpretation [POLO]: POL(U111(x_1, x_2)) = 2*x_2 POL(U112(x_1)) = 2*x_1 POL(U121(x_1, x_2)) = x_2 POL(U122(x_1, x_2)) = x_2 POL(U151(x_1, x_2, x_3)) = 3 + 3*x_2 + 3*x_3 POL(U152(x_1, x_2, x_3)) = 3 + 3*x_2 + 3*x_3 POL(U153(x_1, x_2, x_3)) = 3 + 3*x_2 + 3*x_3 POL(U154(x_1, x_2, x_3)) = 3 + 3*x_2 + 3*x_3 POL(U155(x_1, x_2)) = 3 + 3*x_2 POL(U156(x_1)) = 3 POL(U161(x_1, x_2, x_3)) = 3 + 3*x_2 + 3*x_3 POL(U162(x_1, x_2, x_3)) = 3 + 3*x_2 + 3*x_3 POL(U163(x_1, x_2, x_3)) = 3 + 3*x_2 + 3*x_3 POL(U164(x_1, x_2, x_3)) = 3 + 3*x_2 + 3*x_3 POL(U165(x_1, x_2)) = 3 + 3*x_2 POL(U166(x_1)) = 3 POL(U171(x_1, x_2, x_3)) = 3 + 3*x_2 + 3*x_3 POL(U172(x_1, x_2, x_3)) = 3 + 3*x_2 + 3*x_3 POL(U173(x_1, x_2, x_3)) = 3 + 3*x_2 + 3*x_3 POL(U174(x_1, x_2, x_3)) = 3 + 3*x_2 + 3*x_3 POL(U175(x_1, x_2)) = 3 + 3*x_2 POL(U176(x_1)) = 3 POL(U181(x_1, x_2, x_3)) = 3 + 3*x_2 + 3*x_3 POL(U182(x_1, x_2, x_3)) = 3 + 3*x_2 + 3*x_3 POL(U183(x_1, x_2, x_3)) = 3 + 3*x_2 + 3*x_3 POL(U184(x_1, x_2, x_3)) = 3 + 3*x_2 + 3*x_3 POL(U185(x_1, x_2)) = 3 + 3*x_2 POL(U186(x_1)) = 3 POL(U191(x_1, x_2)) = 3 + 3*x_2 POL(U192(x_1, x_2)) = 3 + 3*x_2 POL(U193(x_1)) = 3 POL(U201(x_1, x_2)) = 2*x_2 POL(U202(x_1)) = 2*x_1 POL(U211(x_1, x_2)) = 2*x_1 POL(U212(x_1)) = 2 POL(U221(x_1, x_2)) = 1 + x_2 POL(U222(x_1)) = x_1 POL(U231(x_1, x_2)) = x_1 + x_2 POL(U232(x_1)) = x_1 POL(U241(x_1)) = 2*x_1 POL(_XOR_(x_1, x_2)) = 3*x_1 + 3*x_2 POL(_and_(x_1, x_2)) = 2 + 2*x_1 + 3*x_2 POL(_implies_(x_1, x_2)) = 2 + 3*x_1 + 2*x_2 POL(_isEqualTo_(x_1, x_2)) = 2 POL(_isNotEqualTo_(x_1, x_2)) = 2 POL(_or_(x_1, x_2)) = 2 + 2*x_1 + 2*x_2 POL(_xor_(x_1, x_2)) = 1 + x_1 + x_2 POL(false) = 3 POL(isBool(x_1)) = 0 POL(isBoolKind(x_1)) = x_1 POL(not_(x_1)) = 1 + 2*x_1 POL(true) = 2 POL(tt) = 2 ---------------------------------------- (23) Obligation: P is empty. The TRS R consists of the following rules: U101(tt, A, B) -> U102(isBoolKind(A), A, B) U102(tt, A, B) -> U103(isBool(B), A, B) U103(tt, A, B) -> U104(isBoolKind(B), A, B) U104(tt, A, B) -> _xor_(_and_(A, B), _xor_(A, B)) U11(tt, A) -> U12(isBoolKind(A), A) U111(tt, A) -> U112(isBoolKind(A)) U112(tt) -> false U12(tt, A) -> A U121(tt, A) -> U122(isBoolKind(A), A) U122(tt, A) -> A U131(tt, B, U', U) -> U132(isBoolKind(B), B, U', U) U132(tt, B, U', U) -> U133(isS(U'), B, U', U) U133(tt, B, U', U) -> U134(isSKind(U'), B, U', U) U134(tt, B, U', U) -> U135(isS(U), B, U', U) U135(tt, B, U', U) -> U136(isSKind(U), B, U') U136(tt, B, U') -> U137(equal(_isNotEqualTo_(B, true), true), U') U137(tt, U') -> U' U141(tt, U', U) -> U142(isSKind(U'), U) U142(tt, U) -> U143(isS(U), U) U143(tt, U) -> U144(isSKind(U), U) U144(tt, U) -> U U151(tt, V1, V2) -> U152(isBoolKind(V1), V1, V2) U152(tt, V1, V2) -> U153(isBoolKind(V2), V1, V2) U153(tt, V1, V2) -> U154(isBoolKind(V2), V1, V2) U154(tt, V1, V2) -> U155(isBool(V1), V2) U155(tt, V2) -> U156(isBool(V2)) U156(tt) -> tt U161(tt, V1, V2) -> U162(isBoolKind(V1), V1, V2) U162(tt, V1, V2) -> U163(isBoolKind(V2), V1, V2) U163(tt, V1, V2) -> U164(isBoolKind(V2), V1, V2) U164(tt, V1, V2) -> U165(isBool(V1), V2) U165(tt, V2) -> U166(isBool(V2)) U166(tt) -> tt U171(tt, V1, V2) -> U172(isBoolKind(V1), V1, V2) U172(tt, V1, V2) -> U173(isBoolKind(V2), V1, V2) U173(tt, V1, V2) -> U174(isBoolKind(V2), V1, V2) U174(tt, V1, V2) -> U175(isBool(V1), V2) U175(tt, V2) -> U176(isBool(V2)) U176(tt) -> tt U181(tt, V1, V2) -> U182(isBoolKind(V1), V1, V2) U182(tt, V1, V2) -> U183(isBoolKind(V2), V1, V2) U183(tt, V1, V2) -> U184(isBoolKind(V2), V1, V2) U184(tt, V1, V2) -> U185(isBool(V1), V2) U185(tt, V2) -> U186(isBool(V2)) U186(tt) -> tt U191(tt, V1) -> U192(isBoolKind(V1), V1) U192(tt, V1) -> U193(isBool(V1)) U193(tt) -> tt U201(tt, V2) -> U202(isBoolKind(V2)) U202(tt) -> tt U21(tt, A, B, C) -> U22(isBoolKind(A), A, B, C) U211(tt, V2) -> U212(isBoolKind(V2)) U212(tt) -> tt U22(tt, A, B, C) -> U23(isBool(B), A, B, C) U221(tt, V2) -> U222(isBoolKind(V2)) U222(tt) -> tt U23(tt, A, B, C) -> U24(isBoolKind(B), A, B, C) U231(tt, V2) -> U232(isBoolKind(V2)) U232(tt) -> tt U24(tt, A, B, C) -> U25(isBool(C), A, B, C) U241(tt) -> tt U25(tt, A, B, C) -> U26(isBoolKind(C), A, B, C) U251(tt, A) -> U252(isBoolKind(A), A) U252(tt, A) -> _xor_(A, true) U26(tt, A, B, C) -> _xor_(_and_(A, B), _and_(A, C)) U31(tt, A) -> U32(isBoolKind(A)) U32(tt) -> false U41(tt, A) -> U42(isBoolKind(A), A) U42(tt, A) -> A U51(tt, A, B) -> U52(isBoolKind(A), A, B) U52(tt, A, B) -> U53(isBool(B), A, B) U53(tt, A, B) -> U54(isBoolKind(B), A, B) U54(tt, A, B) -> not_(_xor_(A, _and_(A, B))) U61(tt, U', U) -> U62(isSKind(U'), U', U) U62(tt, U', U) -> U63(isS(U), U', U) U63(tt, U', U) -> U64(isSKind(U), U', U) U64(tt, U', U) -> U65(equal(_isNotEqualTo_(U, U'), true)) U65(tt) -> false U71(tt, U) -> U72(isSKind(U)) U72(tt) -> true U81(tt, U', U) -> U82(isSKind(U'), U', U) U82(tt, U', U) -> U83(isS(U), U', U) U83(tt, U', U) -> U84(isSKind(U), U', U) U84(tt, U', U) -> if_then_else_fi(_isEqualTo_(U, U'), false, true) U91(tt, U) -> U92(isSKind(U)) U92(tt) -> false _and_(A, A) -> U11(isBool(A), A) _and_(A, _xor_(B, C)) -> U21(isBool(A), A, B, C) _and_(false, A) -> U31(isBool(A), A) _and_(true, A) -> U41(isBool(A), A) _implies_(A, B) -> U51(isBool(A), A, B) _isEqualTo_(U, U') -> U61(isS(U'), U', U) _isEqualTo_(U, U) -> U71(isS(U), U) _isNotEqualTo_(U, U') -> U81(isS(U'), U', U) _isNotEqualTo_(U, U) -> U91(isS(U), U) _or_(A, B) -> U101(isBool(A), A, B) _xor_(A, A) -> U111(isBool(A), A) _xor_(false, A) -> U121(isBool(A), A) equal(X, X) -> tt if_then_else_fi(B, U, U') -> U131(isBool(B), B, U', U) if_then_else_fi(true, U, U') -> U141(isS(U'), U', U) isBool(false) -> tt isBool(true) -> tt isBool(_and_(V1, V2)) -> U151(isBoolKind(V1), V1, V2) isBool(_implies_(V1, V2)) -> U161(isBoolKind(V1), V1, V2) isBool(_isEqualTo_(V1, V2)) -> tt isBool(_isNotEqualTo_(V1, V2)) -> tt isBool(_or_(V1, V2)) -> U171(isBoolKind(V1), V1, V2) isBool(_xor_(V1, V2)) -> U181(isBoolKind(V1), V1, V2) isBool(not_(V1)) -> U191(isBoolKind(V1), V1) isBoolKind(false) -> tt isBoolKind(true) -> tt isBoolKind(_and_(V1, V2)) -> U201(isBoolKind(V1), V2) isBoolKind(_implies_(V1, V2)) -> U211(isBoolKind(V1), V2) isBoolKind(_isEqualTo_(V1, V2)) -> tt isBoolKind(_isNotEqualTo_(V1, V2)) -> tt isBoolKind(_or_(V1, V2)) -> U221(isBoolKind(V1), V2) isBoolKind(_xor_(V1, V2)) -> U231(isBoolKind(V1), V2) isBoolKind(not_(V1)) -> U241(isBoolKind(V1)) not_(A) -> U251(isBool(A), A) not_(false) -> true not_(true) -> false _and_(_and_(A, A), ext) -> _and_(U11(isBool(A), A), ext) _and_(_and_(A, _xor_(B, C)), ext) -> _and_(U21(isBool(A), A, B, C), ext) _and_(_and_(false, A), ext) -> _and_(U31(isBool(A), A), ext) _and_(_and_(true, A), ext) -> _and_(U41(isBool(A), A), ext) _or_(_or_(A, B), ext) -> _or_(U101(isBool(A), A, B), ext) _xor_(_xor_(A, A), ext) -> _xor_(U111(isBool(A), A), ext) _xor_(_xor_(false, A), ext) -> _xor_(U121(isBool(A), A), ext) The set E consists of the following equations: _and_(x, y) == _and_(y, x) _or_(x, y) == _or_(y, x) _xor_(x, y) == _xor_(y, x) _and_(_and_(x, y), z) == _and_(x, _and_(y, z)) _or_(_or_(x, y), z) == _or_(x, _or_(y, z)) _xor_(_xor_(x, y), z) == _xor_(x, _xor_(y, z)) The set E# consists of the following equations: _XOR_(x, y) == _XOR_(y, x) _XOR_(_xor_(x, y), z) == _XOR_(x, _xor_(y, z)) We have to consider all minimal (P,E#,R,E)-chains ---------------------------------------- (24) PisEmptyProof (EQUIVALENT) The TRS P is empty. Hence, there is no (P,E#,R,E) chain. ---------------------------------------- (25) YES ---------------------------------------- (26) Obligation: The TRS P consists of the following rules: _AND_(_and_(A, _xor_(B, C)), ext) -> U21^1(isBool(A), A, B, C) _AND_(_and_(false, A), ext) -> _AND_(U31(isBool(A), A), ext) _AND_(_and_(true, A), ext) -> _AND_(U41(isBool(A), A), ext) U26^1(tt, A, B, C) -> _AND_(A, B) _AND_(A, _xor_(B, C)) -> U21^1(isBool(A), A, B, C) _AND_(_and_(A, _xor_(B, C)), ext) -> _AND_(U21(isBool(A), A, B, C), ext) _AND_(_and_(A, A), ext) -> _AND_(U11(isBool(A), A), ext) U23^1(tt, A, B, C) -> U24^1(isBoolKind(B), A, B, C) U25^1(tt, A, B, C) -> U26^1(isBoolKind(C), A, B, C) U26^1(tt, A, B, C) -> _AND_(A, C) U21^1(tt, A, B, C) -> U22^1(isBoolKind(A), A, B, C) U24^1(tt, A, B, C) -> U25^1(isBool(C), A, B, C) U22^1(tt, A, B, C) -> U23^1(isBool(B), A, B, C) The TRS R consists of the following rules: U101(tt, A, B) -> U102(isBoolKind(A), A, B) U102(tt, A, B) -> U103(isBool(B), A, B) U103(tt, A, B) -> U104(isBoolKind(B), A, B) U104(tt, A, B) -> _xor_(_and_(A, B), _xor_(A, B)) U11(tt, A) -> U12(isBoolKind(A), A) U111(tt, A) -> U112(isBoolKind(A)) U112(tt) -> false U12(tt, A) -> A U121(tt, A) -> U122(isBoolKind(A), A) U122(tt, A) -> A U131(tt, B, U', U) -> U132(isBoolKind(B), B, U', U) U132(tt, B, U', U) -> U133(isS(U'), B, U', U) U133(tt, B, U', U) -> U134(isSKind(U'), B, U', U) U134(tt, B, U', U) -> U135(isS(U), B, U', U) U135(tt, B, U', U) -> U136(isSKind(U), B, U') U136(tt, B, U') -> U137(equal(_isNotEqualTo_(B, true), true), U') U137(tt, U') -> U' U141(tt, U', U) -> U142(isSKind(U'), U) U142(tt, U) -> U143(isS(U), U) U143(tt, U) -> U144(isSKind(U), U) U144(tt, U) -> U U151(tt, V1, V2) -> U152(isBoolKind(V1), V1, V2) U152(tt, V1, V2) -> U153(isBoolKind(V2), V1, V2) U153(tt, V1, V2) -> U154(isBoolKind(V2), V1, V2) U154(tt, V1, V2) -> U155(isBool(V1), V2) U155(tt, V2) -> U156(isBool(V2)) U156(tt) -> tt U161(tt, V1, V2) -> U162(isBoolKind(V1), V1, V2) U162(tt, V1, V2) -> U163(isBoolKind(V2), V1, V2) U163(tt, V1, V2) -> U164(isBoolKind(V2), V1, V2) U164(tt, V1, V2) -> U165(isBool(V1), V2) U165(tt, V2) -> U166(isBool(V2)) U166(tt) -> tt U171(tt, V1, V2) -> U172(isBoolKind(V1), V1, V2) U172(tt, V1, V2) -> U173(isBoolKind(V2), V1, V2) U173(tt, V1, V2) -> U174(isBoolKind(V2), V1, V2) U174(tt, V1, V2) -> U175(isBool(V1), V2) U175(tt, V2) -> U176(isBool(V2)) U176(tt) -> tt U181(tt, V1, V2) -> U182(isBoolKind(V1), V1, V2) U182(tt, V1, V2) -> U183(isBoolKind(V2), V1, V2) U183(tt, V1, V2) -> U184(isBoolKind(V2), V1, V2) U184(tt, V1, V2) -> U185(isBool(V1), V2) U185(tt, V2) -> U186(isBool(V2)) U186(tt) -> tt U191(tt, V1) -> U192(isBoolKind(V1), V1) U192(tt, V1) -> U193(isBool(V1)) U193(tt) -> tt U201(tt, V2) -> U202(isBoolKind(V2)) U202(tt) -> tt U21(tt, A, B, C) -> U22(isBoolKind(A), A, B, C) U211(tt, V2) -> U212(isBoolKind(V2)) U212(tt) -> tt U22(tt, A, B, C) -> U23(isBool(B), A, B, C) U221(tt, V2) -> U222(isBoolKind(V2)) U222(tt) -> tt U23(tt, A, B, C) -> U24(isBoolKind(B), A, B, C) U231(tt, V2) -> U232(isBoolKind(V2)) U232(tt) -> tt U24(tt, A, B, C) -> U25(isBool(C), A, B, C) U241(tt) -> tt U25(tt, A, B, C) -> U26(isBoolKind(C), A, B, C) U251(tt, A) -> U252(isBoolKind(A), A) U252(tt, A) -> _xor_(A, true) U26(tt, A, B, C) -> _xor_(_and_(A, B), _and_(A, C)) U31(tt, A) -> U32(isBoolKind(A)) U32(tt) -> false U41(tt, A) -> U42(isBoolKind(A), A) U42(tt, A) -> A U51(tt, A, B) -> U52(isBoolKind(A), A, B) U52(tt, A, B) -> U53(isBool(B), A, B) U53(tt, A, B) -> U54(isBoolKind(B), A, B) U54(tt, A, B) -> not_(_xor_(A, _and_(A, B))) U61(tt, U', U) -> U62(isSKind(U'), U', U) U62(tt, U', U) -> U63(isS(U), U', U) U63(tt, U', U) -> U64(isSKind(U), U', U) U64(tt, U', U) -> U65(equal(_isNotEqualTo_(U, U'), true)) U65(tt) -> false U71(tt, U) -> U72(isSKind(U)) U72(tt) -> true U81(tt, U', U) -> U82(isSKind(U'), U', U) U82(tt, U', U) -> U83(isS(U), U', U) U83(tt, U', U) -> U84(isSKind(U), U', U) U84(tt, U', U) -> if_then_else_fi(_isEqualTo_(U, U'), false, true) U91(tt, U) -> U92(isSKind(U)) U92(tt) -> false _and_(A, A) -> U11(isBool(A), A) _and_(A, _xor_(B, C)) -> U21(isBool(A), A, B, C) _and_(false, A) -> U31(isBool(A), A) _and_(true, A) -> U41(isBool(A), A) _implies_(A, B) -> U51(isBool(A), A, B) _isEqualTo_(U, U') -> U61(isS(U'), U', U) _isEqualTo_(U, U) -> U71(isS(U), U) _isNotEqualTo_(U, U') -> U81(isS(U'), U', U) _isNotEqualTo_(U, U) -> U91(isS(U), U) _or_(A, B) -> U101(isBool(A), A, B) _xor_(A, A) -> U111(isBool(A), A) _xor_(false, A) -> U121(isBool(A), A) equal(X, X) -> tt if_then_else_fi(B, U, U') -> U131(isBool(B), B, U', U) if_then_else_fi(true, U, U') -> U141(isS(U'), U', U) isBool(false) -> tt isBool(true) -> tt isBool(_and_(V1, V2)) -> U151(isBoolKind(V1), V1, V2) isBool(_implies_(V1, V2)) -> U161(isBoolKind(V1), V1, V2) isBool(_isEqualTo_(V1, V2)) -> tt isBool(_isNotEqualTo_(V1, V2)) -> tt isBool(_or_(V1, V2)) -> U171(isBoolKind(V1), V1, V2) isBool(_xor_(V1, V2)) -> U181(isBoolKind(V1), V1, V2) isBool(not_(V1)) -> U191(isBoolKind(V1), V1) isBoolKind(false) -> tt isBoolKind(true) -> tt isBoolKind(_and_(V1, V2)) -> U201(isBoolKind(V1), V2) isBoolKind(_implies_(V1, V2)) -> U211(isBoolKind(V1), V2) isBoolKind(_isEqualTo_(V1, V2)) -> tt isBoolKind(_isNotEqualTo_(V1, V2)) -> tt isBoolKind(_or_(V1, V2)) -> U221(isBoolKind(V1), V2) isBoolKind(_xor_(V1, V2)) -> U231(isBoolKind(V1), V2) isBoolKind(not_(V1)) -> U241(isBoolKind(V1)) not_(A) -> U251(isBool(A), A) not_(false) -> true not_(true) -> false _and_(_and_(A, A), ext) -> _and_(U11(isBool(A), A), ext) _and_(_and_(A, _xor_(B, C)), ext) -> _and_(U21(isBool(A), A, B, C), ext) _and_(_and_(false, A), ext) -> _and_(U31(isBool(A), A), ext) _and_(_and_(true, A), ext) -> _and_(U41(isBool(A), A), ext) _or_(_or_(A, B), ext) -> _or_(U101(isBool(A), A, B), ext) _xor_(_xor_(A, A), ext) -> _xor_(U111(isBool(A), A), ext) _xor_(_xor_(false, A), ext) -> _xor_(U121(isBool(A), A), ext) The set E consists of the following equations: _and_(x, y) == _and_(y, x) _or_(x, y) == _or_(y, x) _xor_(x, y) == _xor_(y, x) _and_(_and_(x, y), z) == _and_(x, _and_(y, z)) _or_(_or_(x, y), z) == _or_(x, _or_(y, z)) _xor_(_xor_(x, y), z) == _xor_(x, _xor_(y, z)) The set E# consists of the following equations: _AND_(x, y) == _AND_(y, x) _OR_(x, y) == _OR_(y, x) _XOR_(x, y) == _XOR_(y, x) _AND_(_and_(x, y), z) == _AND_(x, _and_(y, z)) _OR_(_or_(x, y), z) == _OR_(x, _or_(y, z)) _XOR_(_xor_(x, y), z) == _XOR_(x, _xor_(y, z)) We have to consider all minimal (P,E#,R,E)-chains ---------------------------------------- (27) ESharpUsableEquationsProof (EQUIVALENT) We can delete the following equations of E# with the esharp usable equations processor[DA_STEIN]: _OR_(x, y) == _OR_(y, x) _XOR_(x, y) == _XOR_(y, x) _OR_(_or_(x, y), z) == _OR_(x, _or_(y, z)) _XOR_(_xor_(x, y), z) == _XOR_(x, _xor_(y, z)) ---------------------------------------- (28) Obligation: The TRS P consists of the following rules: _AND_(_and_(A, _xor_(B, C)), ext) -> U21^1(isBool(A), A, B, C) _AND_(_and_(false, A), ext) -> _AND_(U31(isBool(A), A), ext) _AND_(_and_(true, A), ext) -> _AND_(U41(isBool(A), A), ext) U26^1(tt, A, B, C) -> _AND_(A, B) _AND_(A, _xor_(B, C)) -> U21^1(isBool(A), A, B, C) _AND_(_and_(A, _xor_(B, C)), ext) -> _AND_(U21(isBool(A), A, B, C), ext) _AND_(_and_(A, A), ext) -> _AND_(U11(isBool(A), A), ext) U23^1(tt, A, B, C) -> U24^1(isBoolKind(B), A, B, C) U25^1(tt, A, B, C) -> U26^1(isBoolKind(C), A, B, C) U26^1(tt, A, B, C) -> _AND_(A, C) U21^1(tt, A, B, C) -> U22^1(isBoolKind(A), A, B, C) U24^1(tt, A, B, C) -> U25^1(isBool(C), A, B, C) U22^1(tt, A, B, C) -> U23^1(isBool(B), A, B, C) The TRS R consists of the following rules: U101(tt, A, B) -> U102(isBoolKind(A), A, B) U102(tt, A, B) -> U103(isBool(B), A, B) U103(tt, A, B) -> U104(isBoolKind(B), A, B) U104(tt, A, B) -> _xor_(_and_(A, B), _xor_(A, B)) U11(tt, A) -> U12(isBoolKind(A), A) U111(tt, A) -> U112(isBoolKind(A)) U112(tt) -> false U12(tt, A) -> A U121(tt, A) -> U122(isBoolKind(A), A) U122(tt, A) -> A U131(tt, B, U', U) -> U132(isBoolKind(B), B, U', U) U132(tt, B, U', U) -> U133(isS(U'), B, U', U) U133(tt, B, U', U) -> U134(isSKind(U'), B, U', U) U134(tt, B, U', U) -> U135(isS(U), B, U', U) U135(tt, B, U', U) -> U136(isSKind(U), B, U') U136(tt, B, U') -> U137(equal(_isNotEqualTo_(B, true), true), U') U137(tt, U') -> U' U141(tt, U', U) -> U142(isSKind(U'), U) U142(tt, U) -> U143(isS(U), U) U143(tt, U) -> U144(isSKind(U), U) U144(tt, U) -> U U151(tt, V1, V2) -> U152(isBoolKind(V1), V1, V2) U152(tt, V1, V2) -> U153(isBoolKind(V2), V1, V2) U153(tt, V1, V2) -> U154(isBoolKind(V2), V1, V2) U154(tt, V1, V2) -> U155(isBool(V1), V2) U155(tt, V2) -> U156(isBool(V2)) U156(tt) -> tt U161(tt, V1, V2) -> U162(isBoolKind(V1), V1, V2) U162(tt, V1, V2) -> U163(isBoolKind(V2), V1, V2) U163(tt, V1, V2) -> U164(isBoolKind(V2), V1, V2) U164(tt, V1, V2) -> U165(isBool(V1), V2) U165(tt, V2) -> U166(isBool(V2)) U166(tt) -> tt U171(tt, V1, V2) -> U172(isBoolKind(V1), V1, V2) U172(tt, V1, V2) -> U173(isBoolKind(V2), V1, V2) U173(tt, V1, V2) -> U174(isBoolKind(V2), V1, V2) U174(tt, V1, V2) -> U175(isBool(V1), V2) U175(tt, V2) -> U176(isBool(V2)) U176(tt) -> tt U181(tt, V1, V2) -> U182(isBoolKind(V1), V1, V2) U182(tt, V1, V2) -> U183(isBoolKind(V2), V1, V2) U183(tt, V1, V2) -> U184(isBoolKind(V2), V1, V2) U184(tt, V1, V2) -> U185(isBool(V1), V2) U185(tt, V2) -> U186(isBool(V2)) U186(tt) -> tt U191(tt, V1) -> U192(isBoolKind(V1), V1) U192(tt, V1) -> U193(isBool(V1)) U193(tt) -> tt U201(tt, V2) -> U202(isBoolKind(V2)) U202(tt) -> tt U21(tt, A, B, C) -> U22(isBoolKind(A), A, B, C) U211(tt, V2) -> U212(isBoolKind(V2)) U212(tt) -> tt U22(tt, A, B, C) -> U23(isBool(B), A, B, C) U221(tt, V2) -> U222(isBoolKind(V2)) U222(tt) -> tt U23(tt, A, B, C) -> U24(isBoolKind(B), A, B, C) U231(tt, V2) -> U232(isBoolKind(V2)) U232(tt) -> tt U24(tt, A, B, C) -> U25(isBool(C), A, B, C) U241(tt) -> tt U25(tt, A, B, C) -> U26(isBoolKind(C), A, B, C) U251(tt, A) -> U252(isBoolKind(A), A) U252(tt, A) -> _xor_(A, true) U26(tt, A, B, C) -> _xor_(_and_(A, B), _and_(A, C)) U31(tt, A) -> U32(isBoolKind(A)) U32(tt) -> false U41(tt, A) -> U42(isBoolKind(A), A) U42(tt, A) -> A U51(tt, A, B) -> U52(isBoolKind(A), A, B) U52(tt, A, B) -> U53(isBool(B), A, B) U53(tt, A, B) -> U54(isBoolKind(B), A, B) U54(tt, A, B) -> not_(_xor_(A, _and_(A, B))) U61(tt, U', U) -> U62(isSKind(U'), U', U) U62(tt, U', U) -> U63(isS(U), U', U) U63(tt, U', U) -> U64(isSKind(U), U', U) U64(tt, U', U) -> U65(equal(_isNotEqualTo_(U, U'), true)) U65(tt) -> false U71(tt, U) -> U72(isSKind(U)) U72(tt) -> true U81(tt, U', U) -> U82(isSKind(U'), U', U) U82(tt, U', U) -> U83(isS(U), U', U) U83(tt, U', U) -> U84(isSKind(U), U', U) U84(tt, U', U) -> if_then_else_fi(_isEqualTo_(U, U'), false, true) U91(tt, U) -> U92(isSKind(U)) U92(tt) -> false _and_(A, A) -> U11(isBool(A), A) _and_(A, _xor_(B, C)) -> U21(isBool(A), A, B, C) _and_(false, A) -> U31(isBool(A), A) _and_(true, A) -> U41(isBool(A), A) _implies_(A, B) -> U51(isBool(A), A, B) _isEqualTo_(U, U') -> U61(isS(U'), U', U) _isEqualTo_(U, U) -> U71(isS(U), U) _isNotEqualTo_(U, U') -> U81(isS(U'), U', U) _isNotEqualTo_(U, U) -> U91(isS(U), U) _or_(A, B) -> U101(isBool(A), A, B) _xor_(A, A) -> U111(isBool(A), A) _xor_(false, A) -> U121(isBool(A), A) equal(X, X) -> tt if_then_else_fi(B, U, U') -> U131(isBool(B), B, U', U) if_then_else_fi(true, U, U') -> U141(isS(U'), U', U) isBool(false) -> tt isBool(true) -> tt isBool(_and_(V1, V2)) -> U151(isBoolKind(V1), V1, V2) isBool(_implies_(V1, V2)) -> U161(isBoolKind(V1), V1, V2) isBool(_isEqualTo_(V1, V2)) -> tt isBool(_isNotEqualTo_(V1, V2)) -> tt isBool(_or_(V1, V2)) -> U171(isBoolKind(V1), V1, V2) isBool(_xor_(V1, V2)) -> U181(isBoolKind(V1), V1, V2) isBool(not_(V1)) -> U191(isBoolKind(V1), V1) isBoolKind(false) -> tt isBoolKind(true) -> tt isBoolKind(_and_(V1, V2)) -> U201(isBoolKind(V1), V2) isBoolKind(_implies_(V1, V2)) -> U211(isBoolKind(V1), V2) isBoolKind(_isEqualTo_(V1, V2)) -> tt isBoolKind(_isNotEqualTo_(V1, V2)) -> tt isBoolKind(_or_(V1, V2)) -> U221(isBoolKind(V1), V2) isBoolKind(_xor_(V1, V2)) -> U231(isBoolKind(V1), V2) isBoolKind(not_(V1)) -> U241(isBoolKind(V1)) not_(A) -> U251(isBool(A), A) not_(false) -> true not_(true) -> false _and_(_and_(A, A), ext) -> _and_(U11(isBool(A), A), ext) _and_(_and_(A, _xor_(B, C)), ext) -> _and_(U21(isBool(A), A, B, C), ext) _and_(_and_(false, A), ext) -> _and_(U31(isBool(A), A), ext) _and_(_and_(true, A), ext) -> _and_(U41(isBool(A), A), ext) _or_(_or_(A, B), ext) -> _or_(U101(isBool(A), A, B), ext) _xor_(_xor_(A, A), ext) -> _xor_(U111(isBool(A), A), ext) _xor_(_xor_(false, A), ext) -> _xor_(U121(isBool(A), A), ext) The set E consists of the following equations: _and_(x, y) == _and_(y, x) _or_(x, y) == _or_(y, x) _xor_(x, y) == _xor_(y, x) _and_(_and_(x, y), z) == _and_(x, _and_(y, z)) _or_(_or_(x, y), z) == _or_(x, _or_(y, z)) _xor_(_xor_(x, y), z) == _xor_(x, _xor_(y, z)) The set E# consists of the following equations: _AND_(_and_(x, y), z) == _AND_(x, _and_(y, z)) _AND_(x, y) == _AND_(y, x) We have to consider all minimal (P,E#,R,E)-chains ---------------------------------------- (29) EDPPoloProof (EQUIVALENT) We use the reduction pair processor [DA_STEIN] with a polynomial ordering [POLO]. The following set of Dependency Pairs of this DP problem can be strictly oriented. _AND_(_and_(true, A), ext) -> _AND_(U41(isBool(A), A), ext) U23^1(tt, A, B, C) -> U24^1(isBoolKind(B), A, B, C) The remaining Dependency Pairs were at least non-strictly oriented. _AND_(_and_(A, _xor_(B, C)), ext) -> U21^1(isBool(A), A, B, C) _AND_(_and_(false, A), ext) -> _AND_(U31(isBool(A), A), ext) U26^1(tt, A, B, C) -> _AND_(A, B) _AND_(A, _xor_(B, C)) -> U21^1(isBool(A), A, B, C) _AND_(_and_(A, _xor_(B, C)), ext) -> _AND_(U21(isBool(A), A, B, C), ext) _AND_(_and_(A, A), ext) -> _AND_(U11(isBool(A), A), ext) U25^1(tt, A, B, C) -> U26^1(isBoolKind(C), A, B, C) U26^1(tt, A, B, C) -> _AND_(A, C) U21^1(tt, A, B, C) -> U22^1(isBoolKind(A), A, B, C) U24^1(tt, A, B, C) -> U25^1(isBool(C), A, B, C) U22^1(tt, A, B, C) -> U23^1(isBool(B), A, B, C) With the implicit AFS we had to orient the following set of usable rules of R non-strictly. U221(tt, V2) -> U222(isBoolKind(V2)) U164(tt, V1, V2) -> U165(isBool(V1), V2) U174(tt, V1, V2) -> U175(isBool(V1), V2) U181(tt, V1, V2) -> U182(isBoolKind(V1), V1, V2) U175(tt, V2) -> U176(isBool(V2)) U176(tt) -> tt U31(tt, A) -> U32(isBoolKind(A)) U22(tt, A, B, C) -> U23(isBool(B), A, B, C) U26(tt, A, B, C) -> _xor_(_and_(A, B), _and_(A, C)) U184(tt, V1, V2) -> U185(isBool(V1), V2) U154(tt, V1, V2) -> U155(isBool(V1), V2) U183(tt, V1, V2) -> U184(isBoolKind(V2), V1, V2) U152(tt, V1, V2) -> U153(isBoolKind(V2), V1, V2) U162(tt, V1, V2) -> U163(isBoolKind(V2), V1, V2) U191(tt, V1) -> U192(isBoolKind(V1), V1) U42(tt, A) -> A U212(tt) -> tt U186(tt) -> tt U12(tt, A) -> A U121(tt, A) -> U122(isBoolKind(A), A) isBoolKind(_and_(V1, V2)) -> U201(isBoolKind(V1), V2) isBoolKind(_implies_(V1, V2)) -> U211(isBoolKind(V1), V2) isBoolKind(true) -> tt isBoolKind(_isNotEqualTo_(V1, V2)) -> tt isBoolKind(_isEqualTo_(V1, V2)) -> tt isBoolKind(_xor_(V1, V2)) -> U231(isBoolKind(V1), V2) isBoolKind(_or_(V1, V2)) -> U221(isBoolKind(V1), V2) isBoolKind(not_(V1)) -> U241(isBoolKind(V1)) isBoolKind(false) -> tt U25(tt, A, B, C) -> U26(isBoolKind(C), A, B, C) U165(tt, V2) -> U166(isBool(V2)) U11(tt, A) -> U12(isBoolKind(A), A) U192(tt, V1) -> U193(isBool(V1)) U172(tt, V1, V2) -> U173(isBoolKind(V2), V1, V2) U201(tt, V2) -> U202(isBoolKind(V2)) U222(tt) -> tt U182(tt, V1, V2) -> U183(isBoolKind(V2), V1, V2) _and_(false, A) -> U31(isBool(A), A) _and_(_and_(false, A), ext) -> _and_(U31(isBool(A), A), ext) _and_(A, _xor_(B, C)) -> U21(isBool(A), A, B, C) _and_(_and_(true, A), ext) -> _and_(U41(isBool(A), A), ext) _and_(_and_(A, _xor_(B, C)), ext) -> _and_(U21(isBool(A), A, B, C), ext) _and_(_and_(A, A), ext) -> _and_(U11(isBool(A), A), ext) _and_(A, A) -> U11(isBool(A), A) _and_(true, A) -> U41(isBool(A), A) U171(tt, V1, V2) -> U172(isBoolKind(V1), V1, V2) _xor_(_xor_(A, A), ext) -> _xor_(U111(isBool(A), A), ext) _xor_(A, A) -> U111(isBool(A), A) _xor_(_xor_(false, A), ext) -> _xor_(U121(isBool(A), A), ext) _xor_(false, A) -> U121(isBool(A), A) U232(tt) -> tt U122(tt, A) -> A U21(tt, A, B, C) -> U22(isBoolKind(A), A, B, C) U23(tt, A, B, C) -> U24(isBoolKind(B), A, B, C) U163(tt, V1, V2) -> U164(isBoolKind(V2), V1, V2) U173(tt, V1, V2) -> U174(isBoolKind(V2), V1, V2) isBool(_implies_(V1, V2)) -> U161(isBoolKind(V1), V1, V2) isBool(_isNotEqualTo_(V1, V2)) -> tt isBool(_isEqualTo_(V1, V2)) -> tt isBool(true) -> tt isBool(_xor_(V1, V2)) -> U181(isBoolKind(V1), V1, V2) isBool(false) -> tt isBool(not_(V1)) -> U191(isBoolKind(V1), V1) isBool(_and_(V1, V2)) -> U151(isBoolKind(V1), V1, V2) isBool(_or_(V1, V2)) -> U171(isBoolKind(V1), V1, V2) U185(tt, V2) -> U186(isBool(V2)) U111(tt, A) -> U112(isBoolKind(A)) U151(tt, V1, V2) -> U152(isBoolKind(V1), V1, V2) U161(tt, V1, V2) -> U162(isBoolKind(V1), V1, V2) U32(tt) -> false U241(tt) -> tt U155(tt, V2) -> U156(isBool(V2)) U202(tt) -> tt U231(tt, V2) -> U232(isBoolKind(V2)) U112(tt) -> false U153(tt, V1, V2) -> U154(isBoolKind(V2), V1, V2) U166(tt) -> tt U41(tt, A) -> U42(isBoolKind(A), A) U24(tt, A, B, C) -> U25(isBool(C), A, B, C) U156(tt) -> tt U211(tt, V2) -> U212(isBoolKind(V2)) U193(tt) -> tt We had to orient the following equations of E# equivalently. _AND_(_and_(x, y), z) == _AND_(x, _and_(y, z)) _AND_(x, y) == _AND_(y, x) With the implicit AFS we had to orient the following usable equations of E equivalently. _and_(_and_(x, y), z) == _and_(x, _and_(y, z)) _and_(x, y) == _and_(y, x) _xor_(x, y) == _xor_(y, x) _xor_(_xor_(x, y), z) == _xor_(x, _xor_(y, z)) Used ordering: POLO with Polynomial interpretation [POLO]: POL(U11(x_1, x_2)) = x_2 POL(U111(x_1, x_2)) = 0 POL(U112(x_1)) = 0 POL(U12(x_1, x_2)) = x_2 POL(U121(x_1, x_2)) = x_1 + x_1*x_2 POL(U122(x_1, x_2)) = 1 + x_2 POL(U151(x_1, x_2, x_3)) = 1 POL(U152(x_1, x_2, x_3)) = 1 POL(U153(x_1, x_2, x_3)) = 1 POL(U154(x_1, x_2, x_3)) = x_1 POL(U155(x_1, x_2)) = x_1 POL(U156(x_1)) = 1 POL(U161(x_1, x_2, x_3)) = 1 POL(U162(x_1, x_2, x_3)) = 1 POL(U163(x_1, x_2, x_3)) = 1 POL(U164(x_1, x_2, x_3)) = 1 POL(U165(x_1, x_2)) = x_1 POL(U166(x_1)) = 1 POL(U171(x_1, x_2, x_3)) = 1 POL(U172(x_1, x_2, x_3)) = 1 POL(U173(x_1, x_2, x_3)) = 1 POL(U174(x_1, x_2, x_3)) = 1 POL(U175(x_1, x_2)) = x_1 POL(U176(x_1)) = x_1^2 POL(U181(x_1, x_2, x_3)) = 1 POL(U182(x_1, x_2, x_3)) = 1 POL(U183(x_1, x_2, x_3)) = 1 POL(U184(x_1, x_2, x_3)) = 1 POL(U185(x_1, x_2)) = 1 POL(U186(x_1)) = 1 POL(U191(x_1, x_2)) = 1 POL(U192(x_1, x_2)) = 1 POL(U193(x_1)) = 1 POL(U201(x_1, x_2)) = x_1 POL(U202(x_1)) = 1 POL(U21(x_1, x_2, x_3, x_4)) = 1 + x_1*x_2 + x_2 + x_2*x_3 + x_2*x_4 + x_3 + x_4 POL(U211(x_1, x_2)) = x_1 POL(U212(x_1)) = 1 POL(U21^1(x_1, x_2, x_3, x_4)) = 1 + x_1*x_2*x_3 + x_1*x_3 + x_2 + x_2*x_4 + x_4 POL(U22(x_1, x_2, x_3, x_4)) = 1 + x_1*x_2 + x_1*x_2*x_3 + x_1*x_2*x_4 + x_1*x_3 + x_1*x_4 + x_2 POL(U221(x_1, x_2)) = x_1 POL(U222(x_1)) = 1 POL(U22^1(x_1, x_2, x_3, x_4)) = 1 + x_1*x_3 + x_1*x_4 + x_2 + x_2*x_3 + x_2*x_4 POL(U23(x_1, x_2, x_3, x_4)) = 1 + x_1*x_2 + x_1*x_2*x_4 + x_2 + x_2*x_3 + x_3 + x_4 POL(U231(x_1, x_2)) = x_1 POL(U232(x_1)) = 1 POL(U23^1(x_1, x_2, x_3, x_4)) = 1 + x_1*x_2 + x_1*x_2*x_3 + x_1*x_2*x_4 + x_1*x_3 + x_4 POL(U24(x_1, x_2, x_3, x_4)) = 1 + x_1*x_2 + x_1*x_3 + x_2 + x_2*x_3 + x_2*x_4 + x_4 POL(U241(x_1)) = 1 POL(U24^1(x_1, x_2, x_3, x_4)) = x_2 + x_2*x_3 + x_2*x_4 + x_3 + x_4 POL(U25(x_1, x_2, x_3, x_4)) = 1 + x_1*x_2 + x_2 + x_2*x_3 + x_2*x_4 + x_3 + x_4 POL(U25^1(x_1, x_2, x_3, x_4)) = x_1*x_3 + x_2 + x_2*x_3 + x_2*x_4 + x_4 POL(U26(x_1, x_2, x_3, x_4)) = 1 + x_1*x_2 + x_1*x_3 + x_2 + x_2*x_3 + x_2*x_4 + x_4 POL(U26^1(x_1, x_2, x_3, x_4)) = x_1*x_3 + x_2 + x_2*x_3 + x_2*x_4 + x_4 POL(U31(x_1, x_2)) = 0 POL(U32(x_1)) = 0 POL(U41(x_1, x_2)) = x_2 POL(U42(x_1, x_2)) = x_2 POL(_AND_(x_1, x_2)) = x_1 + x_1*x_2 + x_2 POL(_and_(x_1, x_2)) = x_1 + x_1*x_2 + x_2 POL(_implies_(x_1, x_2)) = 0 POL(_isEqualTo_(x_1, x_2)) = 1 POL(_isNotEqualTo_(x_1, x_2)) = 1 POL(_or_(x_1, x_2)) = 0 POL(_xor_(x_1, x_2)) = 1 + x_1 + x_2 POL(false) = 0 POL(isBool(x_1)) = 1 POL(isBoolKind(x_1)) = 1 POL(not_(x_1)) = 0 POL(true) = 1 POL(tt) = 1 ---------------------------------------- (30) Obligation: The TRS P consists of the following rules: _AND_(_and_(A, _xor_(B, C)), ext) -> U21^1(isBool(A), A, B, C) _AND_(_and_(false, A), ext) -> _AND_(U31(isBool(A), A), ext) U26^1(tt, A, B, C) -> _AND_(A, B) _AND_(A, _xor_(B, C)) -> U21^1(isBool(A), A, B, C) _AND_(_and_(A, _xor_(B, C)), ext) -> _AND_(U21(isBool(A), A, B, C), ext) _AND_(_and_(A, A), ext) -> _AND_(U11(isBool(A), A), ext) U25^1(tt, A, B, C) -> U26^1(isBoolKind(C), A, B, C) U26^1(tt, A, B, C) -> _AND_(A, C) U21^1(tt, A, B, C) -> U22^1(isBoolKind(A), A, B, C) U24^1(tt, A, B, C) -> U25^1(isBool(C), A, B, C) U22^1(tt, A, B, C) -> U23^1(isBool(B), A, B, C) The TRS R consists of the following rules: U101(tt, A, B) -> U102(isBoolKind(A), A, B) U102(tt, A, B) -> U103(isBool(B), A, B) U103(tt, A, B) -> U104(isBoolKind(B), A, B) U104(tt, A, B) -> _xor_(_and_(A, B), _xor_(A, B)) U11(tt, A) -> U12(isBoolKind(A), A) U111(tt, A) -> U112(isBoolKind(A)) U112(tt) -> false U12(tt, A) -> A U121(tt, A) -> U122(isBoolKind(A), A) U122(tt, A) -> A U131(tt, B, U', U) -> U132(isBoolKind(B), B, U', U) U132(tt, B, U', U) -> U133(isS(U'), B, U', U) U133(tt, B, U', U) -> U134(isSKind(U'), B, U', U) U134(tt, B, U', U) -> U135(isS(U), B, U', U) U135(tt, B, U', U) -> U136(isSKind(U), B, U') U136(tt, B, U') -> U137(equal(_isNotEqualTo_(B, true), true), U') U137(tt, U') -> U' U141(tt, U', U) -> U142(isSKind(U'), U) U142(tt, U) -> U143(isS(U), U) U143(tt, U) -> U144(isSKind(U), U) U144(tt, U) -> U U151(tt, V1, V2) -> U152(isBoolKind(V1), V1, V2) U152(tt, V1, V2) -> U153(isBoolKind(V2), V1, V2) U153(tt, V1, V2) -> U154(isBoolKind(V2), V1, V2) U154(tt, V1, V2) -> U155(isBool(V1), V2) U155(tt, V2) -> U156(isBool(V2)) U156(tt) -> tt U161(tt, V1, V2) -> U162(isBoolKind(V1), V1, V2) U162(tt, V1, V2) -> U163(isBoolKind(V2), V1, V2) U163(tt, V1, V2) -> U164(isBoolKind(V2), V1, V2) U164(tt, V1, V2) -> U165(isBool(V1), V2) U165(tt, V2) -> U166(isBool(V2)) U166(tt) -> tt U171(tt, V1, V2) -> U172(isBoolKind(V1), V1, V2) U172(tt, V1, V2) -> U173(isBoolKind(V2), V1, V2) U173(tt, V1, V2) -> U174(isBoolKind(V2), V1, V2) U174(tt, V1, V2) -> U175(isBool(V1), V2) U175(tt, V2) -> U176(isBool(V2)) U176(tt) -> tt U181(tt, V1, V2) -> U182(isBoolKind(V1), V1, V2) U182(tt, V1, V2) -> U183(isBoolKind(V2), V1, V2) U183(tt, V1, V2) -> U184(isBoolKind(V2), V1, V2) U184(tt, V1, V2) -> U185(isBool(V1), V2) U185(tt, V2) -> U186(isBool(V2)) U186(tt) -> tt U191(tt, V1) -> U192(isBoolKind(V1), V1) U192(tt, V1) -> U193(isBool(V1)) U193(tt) -> tt U201(tt, V2) -> U202(isBoolKind(V2)) U202(tt) -> tt U21(tt, A, B, C) -> U22(isBoolKind(A), A, B, C) U211(tt, V2) -> U212(isBoolKind(V2)) U212(tt) -> tt U22(tt, A, B, C) -> U23(isBool(B), A, B, C) U221(tt, V2) -> U222(isBoolKind(V2)) U222(tt) -> tt U23(tt, A, B, C) -> U24(isBoolKind(B), A, B, C) U231(tt, V2) -> U232(isBoolKind(V2)) U232(tt) -> tt U24(tt, A, B, C) -> U25(isBool(C), A, B, C) U241(tt) -> tt U25(tt, A, B, C) -> U26(isBoolKind(C), A, B, C) U251(tt, A) -> U252(isBoolKind(A), A) U252(tt, A) -> _xor_(A, true) U26(tt, A, B, C) -> _xor_(_and_(A, B), _and_(A, C)) U31(tt, A) -> U32(isBoolKind(A)) U32(tt) -> false U41(tt, A) -> U42(isBoolKind(A), A) U42(tt, A) -> A U51(tt, A, B) -> U52(isBoolKind(A), A, B) U52(tt, A, B) -> U53(isBool(B), A, B) U53(tt, A, B) -> U54(isBoolKind(B), A, B) U54(tt, A, B) -> not_(_xor_(A, _and_(A, B))) U61(tt, U', U) -> U62(isSKind(U'), U', U) U62(tt, U', U) -> U63(isS(U), U', U) U63(tt, U', U) -> U64(isSKind(U), U', U) U64(tt, U', U) -> U65(equal(_isNotEqualTo_(U, U'), true)) U65(tt) -> false U71(tt, U) -> U72(isSKind(U)) U72(tt) -> true U81(tt, U', U) -> U82(isSKind(U'), U', U) U82(tt, U', U) -> U83(isS(U), U', U) U83(tt, U', U) -> U84(isSKind(U), U', U) U84(tt, U', U) -> if_then_else_fi(_isEqualTo_(U, U'), false, true) U91(tt, U) -> U92(isSKind(U)) U92(tt) -> false _and_(A, A) -> U11(isBool(A), A) _and_(A, _xor_(B, C)) -> U21(isBool(A), A, B, C) _and_(false, A) -> U31(isBool(A), A) _and_(true, A) -> U41(isBool(A), A) _implies_(A, B) -> U51(isBool(A), A, B) _isEqualTo_(U, U') -> U61(isS(U'), U', U) _isEqualTo_(U, U) -> U71(isS(U), U) _isNotEqualTo_(U, U') -> U81(isS(U'), U', U) _isNotEqualTo_(U, U) -> U91(isS(U), U) _or_(A, B) -> U101(isBool(A), A, B) _xor_(A, A) -> U111(isBool(A), A) _xor_(false, A) -> U121(isBool(A), A) equal(X, X) -> tt if_then_else_fi(B, U, U') -> U131(isBool(B), B, U', U) if_then_else_fi(true, U, U') -> U141(isS(U'), U', U) isBool(false) -> tt isBool(true) -> tt isBool(_and_(V1, V2)) -> U151(isBoolKind(V1), V1, V2) isBool(_implies_(V1, V2)) -> U161(isBoolKind(V1), V1, V2) isBool(_isEqualTo_(V1, V2)) -> tt isBool(_isNotEqualTo_(V1, V2)) -> tt isBool(_or_(V1, V2)) -> U171(isBoolKind(V1), V1, V2) isBool(_xor_(V1, V2)) -> U181(isBoolKind(V1), V1, V2) isBool(not_(V1)) -> U191(isBoolKind(V1), V1) isBoolKind(false) -> tt isBoolKind(true) -> tt isBoolKind(_and_(V1, V2)) -> U201(isBoolKind(V1), V2) isBoolKind(_implies_(V1, V2)) -> U211(isBoolKind(V1), V2) isBoolKind(_isEqualTo_(V1, V2)) -> tt isBoolKind(_isNotEqualTo_(V1, V2)) -> tt isBoolKind(_or_(V1, V2)) -> U221(isBoolKind(V1), V2) isBoolKind(_xor_(V1, V2)) -> U231(isBoolKind(V1), V2) isBoolKind(not_(V1)) -> U241(isBoolKind(V1)) not_(A) -> U251(isBool(A), A) not_(false) -> true not_(true) -> false _and_(_and_(A, A), ext) -> _and_(U11(isBool(A), A), ext) _and_(_and_(A, _xor_(B, C)), ext) -> _and_(U21(isBool(A), A, B, C), ext) _and_(_and_(false, A), ext) -> _and_(U31(isBool(A), A), ext) _and_(_and_(true, A), ext) -> _and_(U41(isBool(A), A), ext) _or_(_or_(A, B), ext) -> _or_(U101(isBool(A), A, B), ext) _xor_(_xor_(A, A), ext) -> _xor_(U111(isBool(A), A), ext) _xor_(_xor_(false, A), ext) -> _xor_(U121(isBool(A), A), ext) The set E consists of the following equations: _and_(x, y) == _and_(y, x) _or_(x, y) == _or_(y, x) _xor_(x, y) == _xor_(y, x) _and_(_and_(x, y), z) == _and_(x, _and_(y, z)) _or_(_or_(x, y), z) == _or_(x, _or_(y, z)) _xor_(_xor_(x, y), z) == _xor_(x, _xor_(y, z)) The set E# consists of the following equations: _AND_(_and_(x, y), z) == _AND_(x, _and_(y, z)) _AND_(x, y) == _AND_(y, x) We have to consider all minimal (P,E#,R,E)-chains ---------------------------------------- (31) EDependencyGraphProof (EQUIVALENT) The approximation of the Equational Dependency Graph [DA_STEIN] contains 1 SCC with 8 less nodes. ---------------------------------------- (32) Obligation: The TRS P consists of the following rules: _AND_(_and_(A, _xor_(B, C)), ext) -> _AND_(U21(isBool(A), A, B, C), ext) _AND_(_and_(A, A), ext) -> _AND_(U11(isBool(A), A), ext) _AND_(_and_(false, A), ext) -> _AND_(U31(isBool(A), A), ext) The TRS R consists of the following rules: U101(tt, A, B) -> U102(isBoolKind(A), A, B) U102(tt, A, B) -> U103(isBool(B), A, B) U103(tt, A, B) -> U104(isBoolKind(B), A, B) U104(tt, A, B) -> _xor_(_and_(A, B), _xor_(A, B)) U11(tt, A) -> U12(isBoolKind(A), A) U111(tt, A) -> U112(isBoolKind(A)) U112(tt) -> false U12(tt, A) -> A U121(tt, A) -> U122(isBoolKind(A), A) U122(tt, A) -> A U131(tt, B, U', U) -> U132(isBoolKind(B), B, U', U) U132(tt, B, U', U) -> U133(isS(U'), B, U', U) U133(tt, B, U', U) -> U134(isSKind(U'), B, U', U) U134(tt, B, U', U) -> U135(isS(U), B, U', U) U135(tt, B, U', U) -> U136(isSKind(U), B, U') U136(tt, B, U') -> U137(equal(_isNotEqualTo_(B, true), true), U') U137(tt, U') -> U' U141(tt, U', U) -> U142(isSKind(U'), U) U142(tt, U) -> U143(isS(U), U) U143(tt, U) -> U144(isSKind(U), U) U144(tt, U) -> U U151(tt, V1, V2) -> U152(isBoolKind(V1), V1, V2) U152(tt, V1, V2) -> U153(isBoolKind(V2), V1, V2) U153(tt, V1, V2) -> U154(isBoolKind(V2), V1, V2) U154(tt, V1, V2) -> U155(isBool(V1), V2) U155(tt, V2) -> U156(isBool(V2)) U156(tt) -> tt U161(tt, V1, V2) -> U162(isBoolKind(V1), V1, V2) U162(tt, V1, V2) -> U163(isBoolKind(V2), V1, V2) U163(tt, V1, V2) -> U164(isBoolKind(V2), V1, V2) U164(tt, V1, V2) -> U165(isBool(V1), V2) U165(tt, V2) -> U166(isBool(V2)) U166(tt) -> tt U171(tt, V1, V2) -> U172(isBoolKind(V1), V1, V2) U172(tt, V1, V2) -> U173(isBoolKind(V2), V1, V2) U173(tt, V1, V2) -> U174(isBoolKind(V2), V1, V2) U174(tt, V1, V2) -> U175(isBool(V1), V2) U175(tt, V2) -> U176(isBool(V2)) U176(tt) -> tt U181(tt, V1, V2) -> U182(isBoolKind(V1), V1, V2) U182(tt, V1, V2) -> U183(isBoolKind(V2), V1, V2) U183(tt, V1, V2) -> U184(isBoolKind(V2), V1, V2) U184(tt, V1, V2) -> U185(isBool(V1), V2) U185(tt, V2) -> U186(isBool(V2)) U186(tt) -> tt U191(tt, V1) -> U192(isBoolKind(V1), V1) U192(tt, V1) -> U193(isBool(V1)) U193(tt) -> tt U201(tt, V2) -> U202(isBoolKind(V2)) U202(tt) -> tt U21(tt, A, B, C) -> U22(isBoolKind(A), A, B, C) U211(tt, V2) -> U212(isBoolKind(V2)) U212(tt) -> tt U22(tt, A, B, C) -> U23(isBool(B), A, B, C) U221(tt, V2) -> U222(isBoolKind(V2)) U222(tt) -> tt U23(tt, A, B, C) -> U24(isBoolKind(B), A, B, C) U231(tt, V2) -> U232(isBoolKind(V2)) U232(tt) -> tt U24(tt, A, B, C) -> U25(isBool(C), A, B, C) U241(tt) -> tt U25(tt, A, B, C) -> U26(isBoolKind(C), A, B, C) U251(tt, A) -> U252(isBoolKind(A), A) U252(tt, A) -> _xor_(A, true) U26(tt, A, B, C) -> _xor_(_and_(A, B), _and_(A, C)) U31(tt, A) -> U32(isBoolKind(A)) U32(tt) -> false U41(tt, A) -> U42(isBoolKind(A), A) U42(tt, A) -> A U51(tt, A, B) -> U52(isBoolKind(A), A, B) U52(tt, A, B) -> U53(isBool(B), A, B) U53(tt, A, B) -> U54(isBoolKind(B), A, B) U54(tt, A, B) -> not_(_xor_(A, _and_(A, B))) U61(tt, U', U) -> U62(isSKind(U'), U', U) U62(tt, U', U) -> U63(isS(U), U', U) U63(tt, U', U) -> U64(isSKind(U), U', U) U64(tt, U', U) -> U65(equal(_isNotEqualTo_(U, U'), true)) U65(tt) -> false U71(tt, U) -> U72(isSKind(U)) U72(tt) -> true U81(tt, U', U) -> U82(isSKind(U'), U', U) U82(tt, U', U) -> U83(isS(U), U', U) U83(tt, U', U) -> U84(isSKind(U), U', U) U84(tt, U', U) -> if_then_else_fi(_isEqualTo_(U, U'), false, true) U91(tt, U) -> U92(isSKind(U)) U92(tt) -> false _and_(A, A) -> U11(isBool(A), A) _and_(A, _xor_(B, C)) -> U21(isBool(A), A, B, C) _and_(false, A) -> U31(isBool(A), A) _and_(true, A) -> U41(isBool(A), A) _implies_(A, B) -> U51(isBool(A), A, B) _isEqualTo_(U, U') -> U61(isS(U'), U', U) _isEqualTo_(U, U) -> U71(isS(U), U) _isNotEqualTo_(U, U') -> U81(isS(U'), U', U) _isNotEqualTo_(U, U) -> U91(isS(U), U) _or_(A, B) -> U101(isBool(A), A, B) _xor_(A, A) -> U111(isBool(A), A) _xor_(false, A) -> U121(isBool(A), A) equal(X, X) -> tt if_then_else_fi(B, U, U') -> U131(isBool(B), B, U', U) if_then_else_fi(true, U, U') -> U141(isS(U'), U', U) isBool(false) -> tt isBool(true) -> tt isBool(_and_(V1, V2)) -> U151(isBoolKind(V1), V1, V2) isBool(_implies_(V1, V2)) -> U161(isBoolKind(V1), V1, V2) isBool(_isEqualTo_(V1, V2)) -> tt isBool(_isNotEqualTo_(V1, V2)) -> tt isBool(_or_(V1, V2)) -> U171(isBoolKind(V1), V1, V2) isBool(_xor_(V1, V2)) -> U181(isBoolKind(V1), V1, V2) isBool(not_(V1)) -> U191(isBoolKind(V1), V1) isBoolKind(false) -> tt isBoolKind(true) -> tt isBoolKind(_and_(V1, V2)) -> U201(isBoolKind(V1), V2) isBoolKind(_implies_(V1, V2)) -> U211(isBoolKind(V1), V2) isBoolKind(_isEqualTo_(V1, V2)) -> tt isBoolKind(_isNotEqualTo_(V1, V2)) -> tt isBoolKind(_or_(V1, V2)) -> U221(isBoolKind(V1), V2) isBoolKind(_xor_(V1, V2)) -> U231(isBoolKind(V1), V2) isBoolKind(not_(V1)) -> U241(isBoolKind(V1)) not_(A) -> U251(isBool(A), A) not_(false) -> true not_(true) -> false _and_(_and_(A, A), ext) -> _and_(U11(isBool(A), A), ext) _and_(_and_(A, _xor_(B, C)), ext) -> _and_(U21(isBool(A), A, B, C), ext) _and_(_and_(false, A), ext) -> _and_(U31(isBool(A), A), ext) _and_(_and_(true, A), ext) -> _and_(U41(isBool(A), A), ext) _or_(_or_(A, B), ext) -> _or_(U101(isBool(A), A, B), ext) _xor_(_xor_(A, A), ext) -> _xor_(U111(isBool(A), A), ext) _xor_(_xor_(false, A), ext) -> _xor_(U121(isBool(A), A), ext) The set E consists of the following equations: _and_(x, y) == _and_(y, x) _or_(x, y) == _or_(y, x) _xor_(x, y) == _xor_(y, x) _and_(_and_(x, y), z) == _and_(x, _and_(y, z)) _or_(_or_(x, y), z) == _or_(x, _or_(y, z)) _xor_(_xor_(x, y), z) == _xor_(x, _xor_(y, z)) The set E# consists of the following equations: _AND_(_and_(x, y), z) == _AND_(x, _and_(y, z)) _AND_(x, y) == _AND_(y, x) We have to consider all minimal (P,E#,R,E)-chains ---------------------------------------- (33) EDPPoloProof (EQUIVALENT) We use the reduction pair processor [DA_STEIN] with a polynomial ordering [POLO]. The following set of Dependency Pairs of this DP problem can be strictly oriented. _AND_(_and_(false, A), ext) -> _AND_(U31(isBool(A), A), ext) The remaining Dependency Pairs were at least non-strictly oriented. _AND_(_and_(A, _xor_(B, C)), ext) -> _AND_(U21(isBool(A), A, B, C), ext) _AND_(_and_(A, A), ext) -> _AND_(U11(isBool(A), A), ext) With the implicit AFS we had to orient the following set of usable rules of R non-strictly. U11(tt, A) -> U12(isBoolKind(A), A) U111(tt, A) -> U112(isBoolKind(A)) U232(tt) -> tt U23(tt, A, B, C) -> U24(isBoolKind(B), A, B, C) U241(tt) -> tt U41(tt, A) -> U42(isBoolKind(A), A) U122(tt, A) -> A isBoolKind(_and_(V1, V2)) -> U201(isBoolKind(V1), V2) isBoolKind(_implies_(V1, V2)) -> U211(isBoolKind(V1), V2) isBoolKind(true) -> tt isBoolKind(_isNotEqualTo_(V1, V2)) -> tt isBoolKind(_isEqualTo_(V1, V2)) -> tt isBoolKind(_xor_(V1, V2)) -> U231(isBoolKind(V1), V2) isBoolKind(_or_(V1, V2)) -> U221(isBoolKind(V1), V2) isBoolKind(not_(V1)) -> U241(isBoolKind(V1)) isBoolKind(false) -> tt U21(tt, A, B, C) -> U22(isBoolKind(A), A, B, C) U201(tt, V2) -> U202(isBoolKind(V2)) _and_(false, A) -> U31(isBool(A), A) _and_(_and_(false, A), ext) -> _and_(U31(isBool(A), A), ext) _and_(A, _xor_(B, C)) -> U21(isBool(A), A, B, C) _and_(_and_(true, A), ext) -> _and_(U41(isBool(A), A), ext) _and_(_and_(A, _xor_(B, C)), ext) -> _and_(U21(isBool(A), A, B, C), ext) _and_(_and_(A, A), ext) -> _and_(U11(isBool(A), A), ext) _and_(A, A) -> U11(isBool(A), A) _and_(true, A) -> U41(isBool(A), A) U32(tt) -> false U221(tt, V2) -> U222(isBoolKind(V2)) U42(tt, A) -> A U12(tt, A) -> A U202(tt) -> tt U24(tt, A, B, C) -> U25(isBool(C), A, B, C) U231(tt, V2) -> U232(isBoolKind(V2)) U31(tt, A) -> U32(isBoolKind(A)) U211(tt, V2) -> U212(isBoolKind(V2)) U212(tt) -> tt U26(tt, A, B, C) -> _xor_(_and_(A, B), _and_(A, C)) U222(tt) -> tt _xor_(_xor_(A, A), ext) -> _xor_(U111(isBool(A), A), ext) _xor_(A, A) -> U111(isBool(A), A) _xor_(_xor_(false, A), ext) -> _xor_(U121(isBool(A), A), ext) _xor_(false, A) -> U121(isBool(A), A) U25(tt, A, B, C) -> U26(isBoolKind(C), A, B, C) U112(tt) -> false U121(tt, A) -> U122(isBoolKind(A), A) U22(tt, A, B, C) -> U23(isBool(B), A, B, C) We had to orient the following equations of E# equivalently. _AND_(_and_(x, y), z) == _AND_(x, _and_(y, z)) _AND_(x, y) == _AND_(y, x) With the implicit AFS we had to orient the following usable equations of E equivalently. _and_(_and_(x, y), z) == _and_(x, _and_(y, z)) _and_(x, y) == _and_(y, x) _xor_(x, y) == _xor_(y, x) _xor_(_xor_(x, y), z) == _xor_(x, _xor_(y, z)) Used ordering: POLO with Polynomial interpretation [POLO]: POL(U11(x_1, x_2)) = x_2 POL(U111(x_1, x_2)) = 1 POL(U112(x_1)) = 1 POL(U12(x_1, x_2)) = x_2 POL(U121(x_1, x_2)) = 2 + x_2 POL(U122(x_1, x_2)) = x_2 POL(U151(x_1, x_2, x_3)) = 3 + 3*x_2 + 3*x_2*x_3 + 3*x_3 POL(U152(x_1, x_2, x_3)) = 3 + 3*x_2 + 3*x_2*x_3 + 3*x_3 POL(U153(x_1, x_2, x_3)) = 3 + 3*x_2 + 3*x_2*x_3 + 3*x_3 POL(U154(x_1, x_2, x_3)) = 3 + 3*x_2 + 3*x_2*x_3 + 3*x_3 POL(U155(x_1, x_2)) = 3 + 3*x_2 POL(U156(x_1)) = 3 POL(U161(x_1, x_2, x_3)) = 3 + 3*x_2 + 3*x_2*x_3 + 3*x_3 POL(U162(x_1, x_2, x_3)) = 3 + 3*x_2 + 3*x_2*x_3 + 3*x_3 POL(U163(x_1, x_2, x_3)) = 3 + 3*x_2 + 3*x_2*x_3 + 3*x_3 POL(U164(x_1, x_2, x_3)) = 3 + 3*x_2 + 3*x_2*x_3 + 3*x_3 POL(U165(x_1, x_2)) = 3 + 3*x_2 POL(U166(x_1)) = 3 POL(U171(x_1, x_2, x_3)) = 3 + 3*x_2 + 3*x_2*x_3 + 3*x_3 POL(U172(x_1, x_2, x_3)) = 3 + 3*x_2 + 3*x_2*x_3 + 3*x_3 POL(U173(x_1, x_2, x_3)) = 3 + 3*x_2 + 3*x_2*x_3 + 3*x_3 POL(U174(x_1, x_2, x_3)) = 3 + 3*x_2 + 3*x_2*x_3 + 3*x_3 POL(U175(x_1, x_2)) = 3 + 3*x_2 POL(U176(x_1)) = 3 POL(U181(x_1, x_2, x_3)) = 3 + 3*x_2 + 3*x_2*x_3 + 3*x_3 POL(U182(x_1, x_2, x_3)) = 3 + 3*x_2 + 3*x_2*x_3 + 3*x_3 POL(U183(x_1, x_2, x_3)) = 3 + 3*x_2 + 3*x_2*x_3 + 3*x_3 POL(U184(x_1, x_2, x_3)) = 3 + 3*x_2 + 3*x_2*x_3 + 3*x_3 POL(U185(x_1, x_2)) = 3 + 3*x_2 POL(U186(x_1)) = 3 POL(U191(x_1, x_2)) = 3 + 3*x_2 POL(U192(x_1, x_2)) = 3 + 3*x_2 POL(U193(x_1)) = 3 POL(U201(x_1, x_2)) = x_1 POL(U202(x_1)) = 1 POL(U21(x_1, x_2, x_3, x_4)) = 1 + 2*x_2 + x_2*x_3 + x_2*x_4 + x_3 + x_4 POL(U211(x_1, x_2)) = 2 + 2*x_1 + x_1*x_2 + 3*x_2 POL(U212(x_1)) = 2 + 2*x_1 POL(U22(x_1, x_2, x_3, x_4)) = 1 + 2*x_2 + x_2*x_3 + x_2*x_4 + x_3 + x_4 POL(U221(x_1, x_2)) = x_1 POL(U222(x_1)) = 1 POL(U23(x_1, x_2, x_3, x_4)) = 1 + 2*x_2 + x_2*x_3 + x_2*x_4 + x_3 + x_4 POL(U231(x_1, x_2)) = 2*x_2 POL(U232(x_1)) = x_1 POL(U24(x_1, x_2, x_3, x_4)) = 1 + 2*x_2 + x_2*x_3 + x_2*x_4 + x_3 + x_4 POL(U241(x_1)) = x_1 POL(U25(x_1, x_2, x_3, x_4)) = 1 + 2*x_2 + x_2*x_3 + x_2*x_4 + x_3 + x_4 POL(U26(x_1, x_2, x_3, x_4)) = 1 + 2*x_2 + x_2*x_3 + x_2*x_4 + x_3 + x_4 POL(U31(x_1, x_2)) = 2*x_2 POL(U32(x_1)) = x_1 POL(U41(x_1, x_2)) = 1 + 2*x_2 POL(U42(x_1, x_2)) = 1 + x_2 POL(_AND_(x_1, x_2)) = 2*x_1 + 2*x_1*x_2 + 2*x_2 POL(_and_(x_1, x_2)) = x_1 + x_1*x_2 + x_2 POL(_implies_(x_1, x_2)) = 1 + 2*x_1 + x_1*x_2 + 2*x_2 POL(_isEqualTo_(x_1, x_2)) = 1 POL(_isNotEqualTo_(x_1, x_2)) = 1 POL(_or_(x_1, x_2)) = 2*x_1 POL(_xor_(x_1, x_2)) = 1 + x_1 + x_2 POL(false) = 1 POL(isBool(x_1)) = 0 POL(isBoolKind(x_1)) = 2*x_1 POL(not_(x_1)) = 1 + x_1 POL(true) = 1 POL(tt) = 1 ---------------------------------------- (34) Obligation: The TRS P consists of the following rules: _AND_(_and_(A, _xor_(B, C)), ext) -> _AND_(U21(isBool(A), A, B, C), ext) _AND_(_and_(A, A), ext) -> _AND_(U11(isBool(A), A), ext) The TRS R consists of the following rules: U101(tt, A, B) -> U102(isBoolKind(A), A, B) U102(tt, A, B) -> U103(isBool(B), A, B) U103(tt, A, B) -> U104(isBoolKind(B), A, B) U104(tt, A, B) -> _xor_(_and_(A, B), _xor_(A, B)) U11(tt, A) -> U12(isBoolKind(A), A) U111(tt, A) -> U112(isBoolKind(A)) U112(tt) -> false U12(tt, A) -> A U121(tt, A) -> U122(isBoolKind(A), A) U122(tt, A) -> A U131(tt, B, U', U) -> U132(isBoolKind(B), B, U', U) U132(tt, B, U', U) -> U133(isS(U'), B, U', U) U133(tt, B, U', U) -> U134(isSKind(U'), B, U', U) U134(tt, B, U', U) -> U135(isS(U), B, U', U) U135(tt, B, U', U) -> U136(isSKind(U), B, U') U136(tt, B, U') -> U137(equal(_isNotEqualTo_(B, true), true), U') U137(tt, U') -> U' U141(tt, U', U) -> U142(isSKind(U'), U) U142(tt, U) -> U143(isS(U), U) U143(tt, U) -> U144(isSKind(U), U) U144(tt, U) -> U U151(tt, V1, V2) -> U152(isBoolKind(V1), V1, V2) U152(tt, V1, V2) -> U153(isBoolKind(V2), V1, V2) U153(tt, V1, V2) -> U154(isBoolKind(V2), V1, V2) U154(tt, V1, V2) -> U155(isBool(V1), V2) U155(tt, V2) -> U156(isBool(V2)) U156(tt) -> tt U161(tt, V1, V2) -> U162(isBoolKind(V1), V1, V2) U162(tt, V1, V2) -> U163(isBoolKind(V2), V1, V2) U163(tt, V1, V2) -> U164(isBoolKind(V2), V1, V2) U164(tt, V1, V2) -> U165(isBool(V1), V2) U165(tt, V2) -> U166(isBool(V2)) U166(tt) -> tt U171(tt, V1, V2) -> U172(isBoolKind(V1), V1, V2) U172(tt, V1, V2) -> U173(isBoolKind(V2), V1, V2) U173(tt, V1, V2) -> U174(isBoolKind(V2), V1, V2) U174(tt, V1, V2) -> U175(isBool(V1), V2) U175(tt, V2) -> U176(isBool(V2)) U176(tt) -> tt U181(tt, V1, V2) -> U182(isBoolKind(V1), V1, V2) U182(tt, V1, V2) -> U183(isBoolKind(V2), V1, V2) U183(tt, V1, V2) -> U184(isBoolKind(V2), V1, V2) U184(tt, V1, V2) -> U185(isBool(V1), V2) U185(tt, V2) -> U186(isBool(V2)) U186(tt) -> tt U191(tt, V1) -> U192(isBoolKind(V1), V1) U192(tt, V1) -> U193(isBool(V1)) U193(tt) -> tt U201(tt, V2) -> U202(isBoolKind(V2)) U202(tt) -> tt U21(tt, A, B, C) -> U22(isBoolKind(A), A, B, C) U211(tt, V2) -> U212(isBoolKind(V2)) U212(tt) -> tt U22(tt, A, B, C) -> U23(isBool(B), A, B, C) U221(tt, V2) -> U222(isBoolKind(V2)) U222(tt) -> tt U23(tt, A, B, C) -> U24(isBoolKind(B), A, B, C) U231(tt, V2) -> U232(isBoolKind(V2)) U232(tt) -> tt U24(tt, A, B, C) -> U25(isBool(C), A, B, C) U241(tt) -> tt U25(tt, A, B, C) -> U26(isBoolKind(C), A, B, C) U251(tt, A) -> U252(isBoolKind(A), A) U252(tt, A) -> _xor_(A, true) U26(tt, A, B, C) -> _xor_(_and_(A, B), _and_(A, C)) U31(tt, A) -> U32(isBoolKind(A)) U32(tt) -> false U41(tt, A) -> U42(isBoolKind(A), A) U42(tt, A) -> A U51(tt, A, B) -> U52(isBoolKind(A), A, B) U52(tt, A, B) -> U53(isBool(B), A, B) U53(tt, A, B) -> U54(isBoolKind(B), A, B) U54(tt, A, B) -> not_(_xor_(A, _and_(A, B))) U61(tt, U', U) -> U62(isSKind(U'), U', U) U62(tt, U', U) -> U63(isS(U), U', U) U63(tt, U', U) -> U64(isSKind(U), U', U) U64(tt, U', U) -> U65(equal(_isNotEqualTo_(U, U'), true)) U65(tt) -> false U71(tt, U) -> U72(isSKind(U)) U72(tt) -> true U81(tt, U', U) -> U82(isSKind(U'), U', U) U82(tt, U', U) -> U83(isS(U), U', U) U83(tt, U', U) -> U84(isSKind(U), U', U) U84(tt, U', U) -> if_then_else_fi(_isEqualTo_(U, U'), false, true) U91(tt, U) -> U92(isSKind(U)) U92(tt) -> false _and_(A, A) -> U11(isBool(A), A) _and_(A, _xor_(B, C)) -> U21(isBool(A), A, B, C) _and_(false, A) -> U31(isBool(A), A) _and_(true, A) -> U41(isBool(A), A) _implies_(A, B) -> U51(isBool(A), A, B) _isEqualTo_(U, U') -> U61(isS(U'), U', U) _isEqualTo_(U, U) -> U71(isS(U), U) _isNotEqualTo_(U, U') -> U81(isS(U'), U', U) _isNotEqualTo_(U, U) -> U91(isS(U), U) _or_(A, B) -> U101(isBool(A), A, B) _xor_(A, A) -> U111(isBool(A), A) _xor_(false, A) -> U121(isBool(A), A) equal(X, X) -> tt if_then_else_fi(B, U, U') -> U131(isBool(B), B, U', U) if_then_else_fi(true, U, U') -> U141(isS(U'), U', U) isBool(false) -> tt isBool(true) -> tt isBool(_and_(V1, V2)) -> U151(isBoolKind(V1), V1, V2) isBool(_implies_(V1, V2)) -> U161(isBoolKind(V1), V1, V2) isBool(_isEqualTo_(V1, V2)) -> tt isBool(_isNotEqualTo_(V1, V2)) -> tt isBool(_or_(V1, V2)) -> U171(isBoolKind(V1), V1, V2) isBool(_xor_(V1, V2)) -> U181(isBoolKind(V1), V1, V2) isBool(not_(V1)) -> U191(isBoolKind(V1), V1) isBoolKind(false) -> tt isBoolKind(true) -> tt isBoolKind(_and_(V1, V2)) -> U201(isBoolKind(V1), V2) isBoolKind(_implies_(V1, V2)) -> U211(isBoolKind(V1), V2) isBoolKind(_isEqualTo_(V1, V2)) -> tt isBoolKind(_isNotEqualTo_(V1, V2)) -> tt isBoolKind(_or_(V1, V2)) -> U221(isBoolKind(V1), V2) isBoolKind(_xor_(V1, V2)) -> U231(isBoolKind(V1), V2) isBoolKind(not_(V1)) -> U241(isBoolKind(V1)) not_(A) -> U251(isBool(A), A) not_(false) -> true not_(true) -> false _and_(_and_(A, A), ext) -> _and_(U11(isBool(A), A), ext) _and_(_and_(A, _xor_(B, C)), ext) -> _and_(U21(isBool(A), A, B, C), ext) _and_(_and_(false, A), ext) -> _and_(U31(isBool(A), A), ext) _and_(_and_(true, A), ext) -> _and_(U41(isBool(A), A), ext) _or_(_or_(A, B), ext) -> _or_(U101(isBool(A), A, B), ext) _xor_(_xor_(A, A), ext) -> _xor_(U111(isBool(A), A), ext) _xor_(_xor_(false, A), ext) -> _xor_(U121(isBool(A), A), ext) The set E consists of the following equations: _and_(x, y) == _and_(y, x) _or_(x, y) == _or_(y, x) _xor_(x, y) == _xor_(y, x) _and_(_and_(x, y), z) == _and_(x, _and_(y, z)) _or_(_or_(x, y), z) == _or_(x, _or_(y, z)) _xor_(_xor_(x, y), z) == _xor_(x, _xor_(y, z)) The set E# consists of the following equations: _AND_(_and_(x, y), z) == _AND_(x, _and_(y, z)) _AND_(x, y) == _AND_(y, x) We have to consider all minimal (P,E#,R,E)-chains ---------------------------------------- (35) EDPPoloProof (EQUIVALENT) We use the reduction pair processor [DA_STEIN] with a polynomial ordering [POLO]. The following set of Dependency Pairs of this DP problem can be strictly oriented. _AND_(_and_(A, _xor_(B, C)), ext) -> _AND_(U21(isBool(A), A, B, C), ext) The remaining Dependency Pairs were at least non-strictly oriented. _AND_(_and_(A, A), ext) -> _AND_(U11(isBool(A), A), ext) With the implicit AFS we had to orient the following set of usable rules of R non-strictly. _and_(false, A) -> U31(isBool(A), A) _and_(_and_(false, A), ext) -> _and_(U31(isBool(A), A), ext) _and_(A, _xor_(B, C)) -> U21(isBool(A), A, B, C) _and_(_and_(true, A), ext) -> _and_(U41(isBool(A), A), ext) _and_(_and_(A, _xor_(B, C)), ext) -> _and_(U21(isBool(A), A, B, C), ext) _and_(_and_(A, A), ext) -> _and_(U11(isBool(A), A), ext) _and_(A, A) -> U11(isBool(A), A) _and_(true, A) -> U41(isBool(A), A) U23(tt, A, B, C) -> U24(isBoolKind(B), A, B, C) U184(tt, V1, V2) -> U185(isBool(V1), V2) U165(tt, V2) -> U166(isBool(V2)) U166(tt) -> tt _xor_(_xor_(A, A), ext) -> _xor_(U111(isBool(A), A), ext) _xor_(A, A) -> U111(isBool(A), A) _xor_(_xor_(false, A), ext) -> _xor_(U121(isBool(A), A), ext) _xor_(false, A) -> U121(isBool(A), A) U153(tt, V1, V2) -> U154(isBoolKind(V2), V1, V2) U161(tt, V1, V2) -> U162(isBoolKind(V1), V1, V2) U21(tt, A, B, C) -> U22(isBoolKind(A), A, B, C) U174(tt, V1, V2) -> U175(isBool(V1), V2) U181(tt, V1, V2) -> U182(isBoolKind(V1), V1, V2) U171(tt, V1, V2) -> U172(isBoolKind(V1), V1, V2) U155(tt, V2) -> U156(isBool(V2)) U172(tt, V1, V2) -> U173(isBoolKind(V2), V1, V2) U22(tt, A, B, C) -> U23(isBool(B), A, B, C) U24(tt, A, B, C) -> U25(isBool(C), A, B, C) U154(tt, V1, V2) -> U155(isBool(V1), V2) U152(tt, V1, V2) -> U153(isBoolKind(V2), V1, V2) U193(tt) -> tt U111(tt, A) -> U112(isBoolKind(A)) U122(tt, A) -> A U183(tt, V1, V2) -> U184(isBoolKind(V2), V1, V2) U163(tt, V1, V2) -> U164(isBoolKind(V2), V1, V2) U185(tt, V2) -> U186(isBool(V2)) U12(tt, A) -> A U121(tt, A) -> U122(isBoolKind(A), A) U11(tt, A) -> U12(isBoolKind(A), A) U164(tt, V1, V2) -> U165(isBool(V1), V2) U112(tt) -> false U156(tt) -> tt U25(tt, A, B, C) -> U26(isBoolKind(C), A, B, C) U182(tt, V1, V2) -> U183(isBoolKind(V2), V1, V2) U151(tt, V1, V2) -> U152(isBoolKind(V1), V1, V2) U162(tt, V1, V2) -> U163(isBoolKind(V2), V1, V2) U31(tt, A) -> U32(isBoolKind(A)) U173(tt, V1, V2) -> U174(isBoolKind(V2), V1, V2) U176(tt) -> tt isBool(_implies_(V1, V2)) -> U161(isBoolKind(V1), V1, V2) isBool(_isNotEqualTo_(V1, V2)) -> tt isBool(_isEqualTo_(V1, V2)) -> tt isBool(true) -> tt isBool(_xor_(V1, V2)) -> U181(isBoolKind(V1), V1, V2) isBool(false) -> tt isBool(not_(V1)) -> U191(isBoolKind(V1), V1) isBool(_and_(V1, V2)) -> U151(isBoolKind(V1), V1, V2) isBool(_or_(V1, V2)) -> U171(isBoolKind(V1), V1, V2) U26(tt, A, B, C) -> _xor_(_and_(A, B), _and_(A, C)) U32(tt) -> false U175(tt, V2) -> U176(isBool(V2)) U191(tt, V1) -> U192(isBoolKind(V1), V1) U192(tt, V1) -> U193(isBool(V1)) U186(tt) -> tt U41(tt, A) -> U42(isBoolKind(A), A) U42(tt, A) -> A We had to orient the following equations of E# equivalently. _AND_(_and_(x, y), z) == _AND_(x, _and_(y, z)) _AND_(x, y) == _AND_(y, x) With the implicit AFS we had to orient the following usable equations of E equivalently. _and_(_and_(x, y), z) == _and_(x, _and_(y, z)) _and_(x, y) == _and_(y, x) _xor_(x, y) == _xor_(y, x) _xor_(_xor_(x, y), z) == _xor_(x, _xor_(y, z)) Used ordering: POLO with Polynomial interpretation [POLO]: POL(U11(x_1, x_2)) = x_2 POL(U111(x_1, x_2)) = 2 POL(U112(x_1)) = 2 POL(U12(x_1, x_2)) = x_2 POL(U121(x_1, x_2)) = 2 + x_2 POL(U122(x_1, x_2)) = x_2 POL(U151(x_1, x_2, x_3)) = 2*x_2 + x_3 POL(U152(x_1, x_2, x_3)) = 2*x_2 + x_3 POL(U153(x_1, x_2, x_3)) = 2*x_2 + x_3 POL(U154(x_1, x_2, x_3)) = 2*x_2 POL(U155(x_1, x_2)) = x_1 POL(U156(x_1)) = 2 POL(U161(x_1, x_2, x_3)) = 2*x_2 + 3*x_2*x_3 + x_3 POL(U162(x_1, x_2, x_3)) = 3*x_2*x_3 + x_3 POL(U163(x_1, x_2, x_3)) = 3*x_2*x_3 + x_3 POL(U164(x_1, x_2, x_3)) = 2*x_2*x_3 + x_3 POL(U165(x_1, x_2)) = x_1*x_2 + x_2 POL(U166(x_1)) = x_1 POL(U171(x_1, x_2, x_3)) = 3*x_2 + 3*x_2*x_3 + 2*x_3 POL(U172(x_1, x_2, x_3)) = 2*x_2 + 2*x_2*x_3 + 2*x_3 POL(U173(x_1, x_2, x_3)) = 2*x_2 + 2*x_2*x_3 + 2*x_3 POL(U174(x_1, x_2, x_3)) = 2*x_2*x_3 + 2*x_3 POL(U175(x_1, x_2)) = x_1*x_2 POL(U176(x_1)) = x_1 POL(U181(x_1, x_2, x_3)) = 2 + 2*x_2 + 2*x_3 POL(U182(x_1, x_2, x_3)) = 2 + 2*x_2 POL(U183(x_1, x_2, x_3)) = 1 + 2*x_2 POL(U184(x_1, x_2, x_3)) = 1 + 2*x_2 POL(U185(x_1, x_2)) = x_1 POL(U186(x_1)) = 2 POL(U191(x_1, x_2)) = 1 + 3*x_2 POL(U192(x_1, x_2)) = 3*x_2 POL(U193(x_1)) = x_1 POL(U201(x_1, x_2)) = 3 + 3*x_2 POL(U202(x_1)) = 3 POL(U21(x_1, x_2, x_3, x_4)) = 1 + x_1 + 2*x_2 + x_2*x_3 + x_2*x_4 + x_3 + x_4 POL(U211(x_1, x_2)) = 3 + 3*x_2 POL(U212(x_1)) = 3 POL(U22(x_1, x_2, x_3, x_4)) = 3 + 2*x_2 + x_2*x_3 + x_2*x_4 + x_3 + x_4 POL(U221(x_1, x_2)) = 3 + 3*x_2 POL(U222(x_1)) = 3 POL(U23(x_1, x_2, x_3, x_4)) = 3 + 2*x_2 + x_2*x_3 + x_2*x_4 + x_3 + x_4 POL(U231(x_1, x_2)) = 3 + 3*x_2 POL(U232(x_1)) = 3 POL(U24(x_1, x_2, x_3, x_4)) = 3 + 2*x_2 + x_2*x_3 + x_2*x_4 + x_3 + x_4 POL(U241(x_1)) = 3 POL(U25(x_1, x_2, x_3, x_4)) = 3 + 2*x_2 + x_2*x_3 + x_2*x_4 + x_3 + x_4 POL(U26(x_1, x_2, x_3, x_4)) = 3 + 2*x_2 + x_2*x_3 + x_2*x_4 + x_3 + x_4 POL(U31(x_1, x_2)) = 2 + x_2 POL(U32(x_1)) = 2 POL(U41(x_1, x_2)) = x_2 POL(U42(x_1, x_2)) = x_2 POL(_AND_(x_1, x_2)) = 2*x_1 + 2*x_1*x_2 + 2*x_2 POL(_and_(x_1, x_2)) = x_1 + x_1*x_2 + x_2 POL(_implies_(x_1, x_2)) = 2*x_1 + 2*x_1*x_2 + x_2 POL(_isEqualTo_(x_1, x_2)) = 1 POL(_isNotEqualTo_(x_1, x_2)) = 1 POL(_or_(x_1, x_2)) = 3*x_1 + 2*x_1*x_2 + x_2 POL(_xor_(x_1, x_2)) = 3 + x_1 + x_2 POL(false) = 2 POL(isBool(x_1)) = 2*x_1 POL(isBoolKind(x_1)) = 0 POL(not_(x_1)) = 2 + 2*x_1 POL(true) = 1 POL(tt) = 2 ---------------------------------------- (36) Obligation: The TRS P consists of the following rules: _AND_(_and_(A, A), ext) -> _AND_(U11(isBool(A), A), ext) The TRS R consists of the following rules: U101(tt, A, B) -> U102(isBoolKind(A), A, B) U102(tt, A, B) -> U103(isBool(B), A, B) U103(tt, A, B) -> U104(isBoolKind(B), A, B) U104(tt, A, B) -> _xor_(_and_(A, B), _xor_(A, B)) U11(tt, A) -> U12(isBoolKind(A), A) U111(tt, A) -> U112(isBoolKind(A)) U112(tt) -> false U12(tt, A) -> A U121(tt, A) -> U122(isBoolKind(A), A) U122(tt, A) -> A U131(tt, B, U', U) -> U132(isBoolKind(B), B, U', U) U132(tt, B, U', U) -> U133(isS(U'), B, U', U) U133(tt, B, U', U) -> U134(isSKind(U'), B, U', U) U134(tt, B, U', U) -> U135(isS(U), B, U', U) U135(tt, B, U', U) -> U136(isSKind(U), B, U') U136(tt, B, U') -> U137(equal(_isNotEqualTo_(B, true), true), U') U137(tt, U') -> U' U141(tt, U', U) -> U142(isSKind(U'), U) U142(tt, U) -> U143(isS(U), U) U143(tt, U) -> U144(isSKind(U), U) U144(tt, U) -> U U151(tt, V1, V2) -> U152(isBoolKind(V1), V1, V2) U152(tt, V1, V2) -> U153(isBoolKind(V2), V1, V2) U153(tt, V1, V2) -> U154(isBoolKind(V2), V1, V2) U154(tt, V1, V2) -> U155(isBool(V1), V2) U155(tt, V2) -> U156(isBool(V2)) U156(tt) -> tt U161(tt, V1, V2) -> U162(isBoolKind(V1), V1, V2) U162(tt, V1, V2) -> U163(isBoolKind(V2), V1, V2) U163(tt, V1, V2) -> U164(isBoolKind(V2), V1, V2) U164(tt, V1, V2) -> U165(isBool(V1), V2) U165(tt, V2) -> U166(isBool(V2)) U166(tt) -> tt U171(tt, V1, V2) -> U172(isBoolKind(V1), V1, V2) U172(tt, V1, V2) -> U173(isBoolKind(V2), V1, V2) U173(tt, V1, V2) -> U174(isBoolKind(V2), V1, V2) U174(tt, V1, V2) -> U175(isBool(V1), V2) U175(tt, V2) -> U176(isBool(V2)) U176(tt) -> tt U181(tt, V1, V2) -> U182(isBoolKind(V1), V1, V2) U182(tt, V1, V2) -> U183(isBoolKind(V2), V1, V2) U183(tt, V1, V2) -> U184(isBoolKind(V2), V1, V2) U184(tt, V1, V2) -> U185(isBool(V1), V2) U185(tt, V2) -> U186(isBool(V2)) U186(tt) -> tt U191(tt, V1) -> U192(isBoolKind(V1), V1) U192(tt, V1) -> U193(isBool(V1)) U193(tt) -> tt U201(tt, V2) -> U202(isBoolKind(V2)) U202(tt) -> tt U21(tt, A, B, C) -> U22(isBoolKind(A), A, B, C) U211(tt, V2) -> U212(isBoolKind(V2)) U212(tt) -> tt U22(tt, A, B, C) -> U23(isBool(B), A, B, C) U221(tt, V2) -> U222(isBoolKind(V2)) U222(tt) -> tt U23(tt, A, B, C) -> U24(isBoolKind(B), A, B, C) U231(tt, V2) -> U232(isBoolKind(V2)) U232(tt) -> tt U24(tt, A, B, C) -> U25(isBool(C), A, B, C) U241(tt) -> tt U25(tt, A, B, C) -> U26(isBoolKind(C), A, B, C) U251(tt, A) -> U252(isBoolKind(A), A) U252(tt, A) -> _xor_(A, true) U26(tt, A, B, C) -> _xor_(_and_(A, B), _and_(A, C)) U31(tt, A) -> U32(isBoolKind(A)) U32(tt) -> false U41(tt, A) -> U42(isBoolKind(A), A) U42(tt, A) -> A U51(tt, A, B) -> U52(isBoolKind(A), A, B) U52(tt, A, B) -> U53(isBool(B), A, B) U53(tt, A, B) -> U54(isBoolKind(B), A, B) U54(tt, A, B) -> not_(_xor_(A, _and_(A, B))) U61(tt, U', U) -> U62(isSKind(U'), U', U) U62(tt, U', U) -> U63(isS(U), U', U) U63(tt, U', U) -> U64(isSKind(U), U', U) U64(tt, U', U) -> U65(equal(_isNotEqualTo_(U, U'), true)) U65(tt) -> false U71(tt, U) -> U72(isSKind(U)) U72(tt) -> true U81(tt, U', U) -> U82(isSKind(U'), U', U) U82(tt, U', U) -> U83(isS(U), U', U) U83(tt, U', U) -> U84(isSKind(U), U', U) U84(tt, U', U) -> if_then_else_fi(_isEqualTo_(U, U'), false, true) U91(tt, U) -> U92(isSKind(U)) U92(tt) -> false _and_(A, A) -> U11(isBool(A), A) _and_(A, _xor_(B, C)) -> U21(isBool(A), A, B, C) _and_(false, A) -> U31(isBool(A), A) _and_(true, A) -> U41(isBool(A), A) _implies_(A, B) -> U51(isBool(A), A, B) _isEqualTo_(U, U') -> U61(isS(U'), U', U) _isEqualTo_(U, U) -> U71(isS(U), U) _isNotEqualTo_(U, U') -> U81(isS(U'), U', U) _isNotEqualTo_(U, U) -> U91(isS(U), U) _or_(A, B) -> U101(isBool(A), A, B) _xor_(A, A) -> U111(isBool(A), A) _xor_(false, A) -> U121(isBool(A), A) equal(X, X) -> tt if_then_else_fi(B, U, U') -> U131(isBool(B), B, U', U) if_then_else_fi(true, U, U') -> U141(isS(U'), U', U) isBool(false) -> tt isBool(true) -> tt isBool(_and_(V1, V2)) -> U151(isBoolKind(V1), V1, V2) isBool(_implies_(V1, V2)) -> U161(isBoolKind(V1), V1, V2) isBool(_isEqualTo_(V1, V2)) -> tt isBool(_isNotEqualTo_(V1, V2)) -> tt isBool(_or_(V1, V2)) -> U171(isBoolKind(V1), V1, V2) isBool(_xor_(V1, V2)) -> U181(isBoolKind(V1), V1, V2) isBool(not_(V1)) -> U191(isBoolKind(V1), V1) isBoolKind(false) -> tt isBoolKind(true) -> tt isBoolKind(_and_(V1, V2)) -> U201(isBoolKind(V1), V2) isBoolKind(_implies_(V1, V2)) -> U211(isBoolKind(V1), V2) isBoolKind(_isEqualTo_(V1, V2)) -> tt isBoolKind(_isNotEqualTo_(V1, V2)) -> tt isBoolKind(_or_(V1, V2)) -> U221(isBoolKind(V1), V2) isBoolKind(_xor_(V1, V2)) -> U231(isBoolKind(V1), V2) isBoolKind(not_(V1)) -> U241(isBoolKind(V1)) not_(A) -> U251(isBool(A), A) not_(false) -> true not_(true) -> false _and_(_and_(A, A), ext) -> _and_(U11(isBool(A), A), ext) _and_(_and_(A, _xor_(B, C)), ext) -> _and_(U21(isBool(A), A, B, C), ext) _and_(_and_(false, A), ext) -> _and_(U31(isBool(A), A), ext) _and_(_and_(true, A), ext) -> _and_(U41(isBool(A), A), ext) _or_(_or_(A, B), ext) -> _or_(U101(isBool(A), A, B), ext) _xor_(_xor_(A, A), ext) -> _xor_(U111(isBool(A), A), ext) _xor_(_xor_(false, A), ext) -> _xor_(U121(isBool(A), A), ext) The set E consists of the following equations: _and_(x, y) == _and_(y, x) _or_(x, y) == _or_(y, x) _xor_(x, y) == _xor_(y, x) _and_(_and_(x, y), z) == _and_(x, _and_(y, z)) _or_(_or_(x, y), z) == _or_(x, _or_(y, z)) _xor_(_xor_(x, y), z) == _xor_(x, _xor_(y, z)) The set E# consists of the following equations: _AND_(_and_(x, y), z) == _AND_(x, _and_(y, z)) _AND_(x, y) == _AND_(y, x) We have to consider all minimal (P,E#,R,E)-chains ---------------------------------------- (37) EDPPoloProof (EQUIVALENT) We use the reduction pair processor [DA_STEIN] with a polynomial ordering [POLO]. All Dependency Pairs of this DP problem can be strictly oriented. _AND_(_and_(A, A), ext) -> _AND_(U11(isBool(A), A), ext) With the implicit AFS we had to orient the following set of usable rules of R non-strictly. U152(tt, V1, V2) -> U153(isBoolKind(V2), V1, V2) U171(tt, V1, V2) -> U172(isBoolKind(V1), V1, V2) U151(tt, V1, V2) -> U152(isBoolKind(V1), V1, V2) isBool(_implies_(V1, V2)) -> U161(isBoolKind(V1), V1, V2) isBool(_isNotEqualTo_(V1, V2)) -> tt isBool(_isEqualTo_(V1, V2)) -> tt isBool(true) -> tt isBool(_xor_(V1, V2)) -> U181(isBoolKind(V1), V1, V2) isBool(false) -> tt isBool(not_(V1)) -> U191(isBoolKind(V1), V1) isBool(_and_(V1, V2)) -> U151(isBoolKind(V1), V1, V2) isBool(_or_(V1, V2)) -> U171(isBoolKind(V1), V1, V2) U153(tt, V1, V2) -> U154(isBoolKind(V2), V1, V2) U183(tt, V1, V2) -> U184(isBoolKind(V2), V1, V2) U174(tt, V1, V2) -> U175(isBool(V1), V2) U163(tt, V1, V2) -> U164(isBoolKind(V2), V1, V2) U221(tt, V2) -> U222(isBoolKind(V2)) U232(tt) -> tt U181(tt, V1, V2) -> U182(isBoolKind(V1), V1, V2) U186(tt) -> tt U155(tt, V2) -> U156(isBool(V2)) U121(tt, A) -> U122(isBoolKind(A), A) U166(tt) -> tt U112(tt) -> false U122(tt, A) -> A U26(tt, A, B, C) -> _xor_(_and_(A, B), _and_(A, C)) U32(tt) -> false U22(tt, A, B, C) -> U23(isBool(B), A, B, C) U31(tt, A) -> U32(isBoolKind(A)) U172(tt, V1, V2) -> U173(isBoolKind(V2), V1, V2) U191(tt, V1) -> U192(isBoolKind(V1), V1) U175(tt, V2) -> U176(isBool(V2)) U162(tt, V1, V2) -> U163(isBoolKind(V2), V1, V2) U185(tt, V2) -> U186(isBool(V2)) _xor_(_xor_(A, A), ext) -> _xor_(U111(isBool(A), A), ext) _xor_(A, A) -> U111(isBool(A), A) _xor_(_xor_(false, A), ext) -> _xor_(U121(isBool(A), A), ext) _xor_(false, A) -> U121(isBool(A), A) U231(tt, V2) -> U232(isBoolKind(V2)) U41(tt, A) -> U42(isBoolKind(A), A) U164(tt, V1, V2) -> U165(isBool(V1), V2) U212(tt) -> tt U154(tt, V1, V2) -> U155(isBool(V1), V2) U111(tt, A) -> U112(isBoolKind(A)) _and_(false, A) -> U31(isBool(A), A) _and_(_and_(false, A), ext) -> _and_(U31(isBool(A), A), ext) _and_(A, _xor_(B, C)) -> U21(isBool(A), A, B, C) _and_(_and_(true, A), ext) -> _and_(U41(isBool(A), A), ext) _and_(_and_(A, _xor_(B, C)), ext) -> _and_(U21(isBool(A), A, B, C), ext) _and_(_and_(A, A), ext) -> _and_(U11(isBool(A), A), ext) _and_(A, A) -> U11(isBool(A), A) _and_(true, A) -> U41(isBool(A), A) U42(tt, A) -> A U25(tt, A, B, C) -> U26(isBoolKind(C), A, B, C) U21(tt, A, B, C) -> U22(isBoolKind(A), A, B, C) U211(tt, V2) -> U212(isBoolKind(V2)) U184(tt, V1, V2) -> U185(isBool(V1), V2) U23(tt, A, B, C) -> U24(isBoolKind(B), A, B, C) isBoolKind(_and_(V1, V2)) -> U201(isBoolKind(V1), V2) isBoolKind(_implies_(V1, V2)) -> U211(isBoolKind(V1), V2) isBoolKind(true) -> tt isBoolKind(_isNotEqualTo_(V1, V2)) -> tt isBoolKind(_isEqualTo_(V1, V2)) -> tt isBoolKind(_xor_(V1, V2)) -> U231(isBoolKind(V1), V2) isBoolKind(_or_(V1, V2)) -> U221(isBoolKind(V1), V2) isBoolKind(not_(V1)) -> U241(isBoolKind(V1)) isBoolKind(false) -> tt U193(tt) -> tt U222(tt) -> tt U161(tt, V1, V2) -> U162(isBoolKind(V1), V1, V2) U241(tt) -> tt U156(tt) -> tt U11(tt, A) -> U12(isBoolKind(A), A) U24(tt, A, B, C) -> U25(isBool(C), A, B, C) U12(tt, A) -> A U201(tt, V2) -> U202(isBoolKind(V2)) U176(tt) -> tt U165(tt, V2) -> U166(isBool(V2)) U192(tt, V1) -> U193(isBool(V1)) U173(tt, V1, V2) -> U174(isBoolKind(V2), V1, V2) U182(tt, V1, V2) -> U183(isBoolKind(V2), V1, V2) U202(tt) -> tt We had to orient the following equations of E# equivalently. _AND_(_and_(x, y), z) == _AND_(x, _and_(y, z)) _AND_(x, y) == _AND_(y, x) With the implicit AFS we had to orient the following usable equations of E equivalently. _xor_(x, y) == _xor_(y, x) _xor_(_xor_(x, y), z) == _xor_(x, _xor_(y, z)) _and_(_and_(x, y), z) == _and_(x, _and_(y, z)) _and_(x, y) == _and_(y, x) Used ordering: POLO with Polynomial interpretation [POLO]: POL(U11(x_1, x_2)) = x_2 POL(U111(x_1, x_2)) = 2*x_2 POL(U112(x_1)) = 0 POL(U12(x_1, x_2)) = x_2 POL(U121(x_1, x_2)) = 1 + x_2 POL(U122(x_1, x_2)) = x_2 POL(U151(x_1, x_2, x_3)) = x_1 POL(U152(x_1, x_2, x_3)) = x_1 POL(U153(x_1, x_2, x_3)) = x_1 POL(U154(x_1, x_2, x_3)) = 2 POL(U155(x_1, x_2)) = 2 POL(U156(x_1)) = 2 POL(U161(x_1, x_2, x_3)) = 2 POL(U162(x_1, x_2, x_3)) = 2 POL(U163(x_1, x_2, x_3)) = 2 POL(U164(x_1, x_2, x_3)) = 2 POL(U165(x_1, x_2)) = 2 POL(U166(x_1)) = x_1 POL(U171(x_1, x_2, x_3)) = x_1 POL(U172(x_1, x_2, x_3)) = x_1 POL(U173(x_1, x_2, x_3)) = x_1 POL(U174(x_1, x_2, x_3)) = x_1 POL(U175(x_1, x_2)) = 2 POL(U176(x_1)) = 2 POL(U181(x_1, x_2, x_3)) = x_1 POL(U182(x_1, x_2, x_3)) = x_1 POL(U183(x_1, x_2, x_3)) = 2 POL(U184(x_1, x_2, x_3)) = 2 POL(U185(x_1, x_2)) = x_1 POL(U186(x_1)) = 2 POL(U191(x_1, x_2)) = 2 POL(U192(x_1, x_2)) = x_1 POL(U193(x_1)) = x_1 POL(U201(x_1, x_2)) = 2 POL(U202(x_1)) = 2 POL(U21(x_1, x_2, x_3, x_4)) = 3 + 2*x_1*x_2 + 2*x_2*x_3 + 2*x_2*x_4 + 2*x_3 + 2*x_4 POL(U211(x_1, x_2)) = 2 POL(U212(x_1)) = 2 POL(U22(x_1, x_2, x_3, x_4)) = 1 + x_1 + 2*x_1*x_2 + x_1*x_2*x_3 + x_1*x_2*x_4 + x_1*x_4 + 2*x_3 POL(U221(x_1, x_2)) = 2 POL(U222(x_1)) = x_1 POL(U23(x_1, x_2, x_3, x_4)) = 3 + x_1*x_2 + 2*x_2 + 2*x_2*x_3 + 2*x_2*x_4 + 2*x_3 + 2*x_4 POL(U231(x_1, x_2)) = x_1 POL(U232(x_1)) = 2 POL(U24(x_1, x_2, x_3, x_4)) = 1 + x_1 + x_1*x_2 + 2*x_2 + 2*x_2*x_3 + 2*x_2*x_4 + 2*x_3 + 2*x_4 POL(U241(x_1)) = 2 POL(U25(x_1, x_2, x_3, x_4)) = 3 + 2*x_1*x_2 + 2*x_2*x_3 + 2*x_2*x_4 + 2*x_3 + 2*x_4 POL(U26(x_1, x_2, x_3, x_4)) = 3 + x_1*x_2 + 2*x_2 + 2*x_2*x_3 + 2*x_2*x_4 + 2*x_3 + 2*x_4 POL(U31(x_1, x_2)) = 0 POL(U32(x_1)) = 0 POL(U41(x_1, x_2)) = x_2 POL(U42(x_1, x_2)) = x_2 POL(_AND_(x_1, x_2)) = x_1 + x_1*x_2 + x_2 POL(_and_(x_1, x_2)) = 1 + 2*x_1 + 2*x_1*x_2 + 2*x_2 POL(_implies_(x_1, x_2)) = 0 POL(_isEqualTo_(x_1, x_2)) = 0 POL(_isNotEqualTo_(x_1, x_2)) = 0 POL(_or_(x_1, x_2)) = 0 POL(_xor_(x_1, x_2)) = 1 + x_1 + x_2 POL(false) = 0 POL(isBool(x_1)) = 2 POL(isBoolKind(x_1)) = 2 POL(not_(x_1)) = 0 POL(true) = 0 POL(tt) = 2 ---------------------------------------- (38) Obligation: P is empty. The TRS R consists of the following rules: U101(tt, A, B) -> U102(isBoolKind(A), A, B) U102(tt, A, B) -> U103(isBool(B), A, B) U103(tt, A, B) -> U104(isBoolKind(B), A, B) U104(tt, A, B) -> _xor_(_and_(A, B), _xor_(A, B)) U11(tt, A) -> U12(isBoolKind(A), A) U111(tt, A) -> U112(isBoolKind(A)) U112(tt) -> false U12(tt, A) -> A U121(tt, A) -> U122(isBoolKind(A), A) U122(tt, A) -> A U131(tt, B, U', U) -> U132(isBoolKind(B), B, U', U) U132(tt, B, U', U) -> U133(isS(U'), B, U', U) U133(tt, B, U', U) -> U134(isSKind(U'), B, U', U) U134(tt, B, U', U) -> U135(isS(U), B, U', U) U135(tt, B, U', U) -> U136(isSKind(U), B, U') U136(tt, B, U') -> U137(equal(_isNotEqualTo_(B, true), true), U') U137(tt, U') -> U' U141(tt, U', U) -> U142(isSKind(U'), U) U142(tt, U) -> U143(isS(U), U) U143(tt, U) -> U144(isSKind(U), U) U144(tt, U) -> U U151(tt, V1, V2) -> U152(isBoolKind(V1), V1, V2) U152(tt, V1, V2) -> U153(isBoolKind(V2), V1, V2) U153(tt, V1, V2) -> U154(isBoolKind(V2), V1, V2) U154(tt, V1, V2) -> U155(isBool(V1), V2) U155(tt, V2) -> U156(isBool(V2)) U156(tt) -> tt U161(tt, V1, V2) -> U162(isBoolKind(V1), V1, V2) U162(tt, V1, V2) -> U163(isBoolKind(V2), V1, V2) U163(tt, V1, V2) -> U164(isBoolKind(V2), V1, V2) U164(tt, V1, V2) -> U165(isBool(V1), V2) U165(tt, V2) -> U166(isBool(V2)) U166(tt) -> tt U171(tt, V1, V2) -> U172(isBoolKind(V1), V1, V2) U172(tt, V1, V2) -> U173(isBoolKind(V2), V1, V2) U173(tt, V1, V2) -> U174(isBoolKind(V2), V1, V2) U174(tt, V1, V2) -> U175(isBool(V1), V2) U175(tt, V2) -> U176(isBool(V2)) U176(tt) -> tt U181(tt, V1, V2) -> U182(isBoolKind(V1), V1, V2) U182(tt, V1, V2) -> U183(isBoolKind(V2), V1, V2) U183(tt, V1, V2) -> U184(isBoolKind(V2), V1, V2) U184(tt, V1, V2) -> U185(isBool(V1), V2) U185(tt, V2) -> U186(isBool(V2)) U186(tt) -> tt U191(tt, V1) -> U192(isBoolKind(V1), V1) U192(tt, V1) -> U193(isBool(V1)) U193(tt) -> tt U201(tt, V2) -> U202(isBoolKind(V2)) U202(tt) -> tt U21(tt, A, B, C) -> U22(isBoolKind(A), A, B, C) U211(tt, V2) -> U212(isBoolKind(V2)) U212(tt) -> tt U22(tt, A, B, C) -> U23(isBool(B), A, B, C) U221(tt, V2) -> U222(isBoolKind(V2)) U222(tt) -> tt U23(tt, A, B, C) -> U24(isBoolKind(B), A, B, C) U231(tt, V2) -> U232(isBoolKind(V2)) U232(tt) -> tt U24(tt, A, B, C) -> U25(isBool(C), A, B, C) U241(tt) -> tt U25(tt, A, B, C) -> U26(isBoolKind(C), A, B, C) U251(tt, A) -> U252(isBoolKind(A), A) U252(tt, A) -> _xor_(A, true) U26(tt, A, B, C) -> _xor_(_and_(A, B), _and_(A, C)) U31(tt, A) -> U32(isBoolKind(A)) U32(tt) -> false U41(tt, A) -> U42(isBoolKind(A), A) U42(tt, A) -> A U51(tt, A, B) -> U52(isBoolKind(A), A, B) U52(tt, A, B) -> U53(isBool(B), A, B) U53(tt, A, B) -> U54(isBoolKind(B), A, B) U54(tt, A, B) -> not_(_xor_(A, _and_(A, B))) U61(tt, U', U) -> U62(isSKind(U'), U', U) U62(tt, U', U) -> U63(isS(U), U', U) U63(tt, U', U) -> U64(isSKind(U), U', U) U64(tt, U', U) -> U65(equal(_isNotEqualTo_(U, U'), true)) U65(tt) -> false U71(tt, U) -> U72(isSKind(U)) U72(tt) -> true U81(tt, U', U) -> U82(isSKind(U'), U', U) U82(tt, U', U) -> U83(isS(U), U', U) U83(tt, U', U) -> U84(isSKind(U), U', U) U84(tt, U', U) -> if_then_else_fi(_isEqualTo_(U, U'), false, true) U91(tt, U) -> U92(isSKind(U)) U92(tt) -> false _and_(A, A) -> U11(isBool(A), A) _and_(A, _xor_(B, C)) -> U21(isBool(A), A, B, C) _and_(false, A) -> U31(isBool(A), A) _and_(true, A) -> U41(isBool(A), A) _implies_(A, B) -> U51(isBool(A), A, B) _isEqualTo_(U, U') -> U61(isS(U'), U', U) _isEqualTo_(U, U) -> U71(isS(U), U) _isNotEqualTo_(U, U') -> U81(isS(U'), U', U) _isNotEqualTo_(U, U) -> U91(isS(U), U) _or_(A, B) -> U101(isBool(A), A, B) _xor_(A, A) -> U111(isBool(A), A) _xor_(false, A) -> U121(isBool(A), A) equal(X, X) -> tt if_then_else_fi(B, U, U') -> U131(isBool(B), B, U', U) if_then_else_fi(true, U, U') -> U141(isS(U'), U', U) isBool(false) -> tt isBool(true) -> tt isBool(_and_(V1, V2)) -> U151(isBoolKind(V1), V1, V2) isBool(_implies_(V1, V2)) -> U161(isBoolKind(V1), V1, V2) isBool(_isEqualTo_(V1, V2)) -> tt isBool(_isNotEqualTo_(V1, V2)) -> tt isBool(_or_(V1, V2)) -> U171(isBoolKind(V1), V1, V2) isBool(_xor_(V1, V2)) -> U181(isBoolKind(V1), V1, V2) isBool(not_(V1)) -> U191(isBoolKind(V1), V1) isBoolKind(false) -> tt isBoolKind(true) -> tt isBoolKind(_and_(V1, V2)) -> U201(isBoolKind(V1), V2) isBoolKind(_implies_(V1, V2)) -> U211(isBoolKind(V1), V2) isBoolKind(_isEqualTo_(V1, V2)) -> tt isBoolKind(_isNotEqualTo_(V1, V2)) -> tt isBoolKind(_or_(V1, V2)) -> U221(isBoolKind(V1), V2) isBoolKind(_xor_(V1, V2)) -> U231(isBoolKind(V1), V2) isBoolKind(not_(V1)) -> U241(isBoolKind(V1)) not_(A) -> U251(isBool(A), A) not_(false) -> true not_(true) -> false _and_(_and_(A, A), ext) -> _and_(U11(isBool(A), A), ext) _and_(_and_(A, _xor_(B, C)), ext) -> _and_(U21(isBool(A), A, B, C), ext) _and_(_and_(false, A), ext) -> _and_(U31(isBool(A), A), ext) _and_(_and_(true, A), ext) -> _and_(U41(isBool(A), A), ext) _or_(_or_(A, B), ext) -> _or_(U101(isBool(A), A, B), ext) _xor_(_xor_(A, A), ext) -> _xor_(U111(isBool(A), A), ext) _xor_(_xor_(false, A), ext) -> _xor_(U121(isBool(A), A), ext) The set E consists of the following equations: _and_(x, y) == _and_(y, x) _or_(x, y) == _or_(y, x) _xor_(x, y) == _xor_(y, x) _and_(_and_(x, y), z) == _and_(x, _and_(y, z)) _or_(_or_(x, y), z) == _or_(x, _or_(y, z)) _xor_(_xor_(x, y), z) == _xor_(x, _xor_(y, z)) The set E# consists of the following equations: _AND_(_and_(x, y), z) == _AND_(x, _and_(y, z)) _AND_(x, y) == _AND_(y, x) We have to consider all minimal (P,E#,R,E)-chains ---------------------------------------- (39) PisEmptyProof (EQUIVALENT) The TRS P is empty. Hence, there is no (P,E#,R,E) chain. ---------------------------------------- (40) YES ---------------------------------------- (41) Obligation: The TRS P consists of the following rules: _OR_(_or_(A, B), ext) -> _OR_(U101(isBool(A), A, B), ext) The TRS R consists of the following rules: U101(tt, A, B) -> U102(isBoolKind(A), A, B) U102(tt, A, B) -> U103(isBool(B), A, B) U103(tt, A, B) -> U104(isBoolKind(B), A, B) U104(tt, A, B) -> _xor_(_and_(A, B), _xor_(A, B)) U11(tt, A) -> U12(isBoolKind(A), A) U111(tt, A) -> U112(isBoolKind(A)) U112(tt) -> false U12(tt, A) -> A U121(tt, A) -> U122(isBoolKind(A), A) U122(tt, A) -> A U131(tt, B, U', U) -> U132(isBoolKind(B), B, U', U) U132(tt, B, U', U) -> U133(isS(U'), B, U', U) U133(tt, B, U', U) -> U134(isSKind(U'), B, U', U) U134(tt, B, U', U) -> U135(isS(U), B, U', U) U135(tt, B, U', U) -> U136(isSKind(U), B, U') U136(tt, B, U') -> U137(equal(_isNotEqualTo_(B, true), true), U') U137(tt, U') -> U' U141(tt, U', U) -> U142(isSKind(U'), U) U142(tt, U) -> U143(isS(U), U) U143(tt, U) -> U144(isSKind(U), U) U144(tt, U) -> U U151(tt, V1, V2) -> U152(isBoolKind(V1), V1, V2) U152(tt, V1, V2) -> U153(isBoolKind(V2), V1, V2) U153(tt, V1, V2) -> U154(isBoolKind(V2), V1, V2) U154(tt, V1, V2) -> U155(isBool(V1), V2) U155(tt, V2) -> U156(isBool(V2)) U156(tt) -> tt U161(tt, V1, V2) -> U162(isBoolKind(V1), V1, V2) U162(tt, V1, V2) -> U163(isBoolKind(V2), V1, V2) U163(tt, V1, V2) -> U164(isBoolKind(V2), V1, V2) U164(tt, V1, V2) -> U165(isBool(V1), V2) U165(tt, V2) -> U166(isBool(V2)) U166(tt) -> tt U171(tt, V1, V2) -> U172(isBoolKind(V1), V1, V2) U172(tt, V1, V2) -> U173(isBoolKind(V2), V1, V2) U173(tt, V1, V2) -> U174(isBoolKind(V2), V1, V2) U174(tt, V1, V2) -> U175(isBool(V1), V2) U175(tt, V2) -> U176(isBool(V2)) U176(tt) -> tt U181(tt, V1, V2) -> U182(isBoolKind(V1), V1, V2) U182(tt, V1, V2) -> U183(isBoolKind(V2), V1, V2) U183(tt, V1, V2) -> U184(isBoolKind(V2), V1, V2) U184(tt, V1, V2) -> U185(isBool(V1), V2) U185(tt, V2) -> U186(isBool(V2)) U186(tt) -> tt U191(tt, V1) -> U192(isBoolKind(V1), V1) U192(tt, V1) -> U193(isBool(V1)) U193(tt) -> tt U201(tt, V2) -> U202(isBoolKind(V2)) U202(tt) -> tt U21(tt, A, B, C) -> U22(isBoolKind(A), A, B, C) U211(tt, V2) -> U212(isBoolKind(V2)) U212(tt) -> tt U22(tt, A, B, C) -> U23(isBool(B), A, B, C) U221(tt, V2) -> U222(isBoolKind(V2)) U222(tt) -> tt U23(tt, A, B, C) -> U24(isBoolKind(B), A, B, C) U231(tt, V2) -> U232(isBoolKind(V2)) U232(tt) -> tt U24(tt, A, B, C) -> U25(isBool(C), A, B, C) U241(tt) -> tt U25(tt, A, B, C) -> U26(isBoolKind(C), A, B, C) U251(tt, A) -> U252(isBoolKind(A), A) U252(tt, A) -> _xor_(A, true) U26(tt, A, B, C) -> _xor_(_and_(A, B), _and_(A, C)) U31(tt, A) -> U32(isBoolKind(A)) U32(tt) -> false U41(tt, A) -> U42(isBoolKind(A), A) U42(tt, A) -> A U51(tt, A, B) -> U52(isBoolKind(A), A, B) U52(tt, A, B) -> U53(isBool(B), A, B) U53(tt, A, B) -> U54(isBoolKind(B), A, B) U54(tt, A, B) -> not_(_xor_(A, _and_(A, B))) U61(tt, U', U) -> U62(isSKind(U'), U', U) U62(tt, U', U) -> U63(isS(U), U', U) U63(tt, U', U) -> U64(isSKind(U), U', U) U64(tt, U', U) -> U65(equal(_isNotEqualTo_(U, U'), true)) U65(tt) -> false U71(tt, U) -> U72(isSKind(U)) U72(tt) -> true U81(tt, U', U) -> U82(isSKind(U'), U', U) U82(tt, U', U) -> U83(isS(U), U', U) U83(tt, U', U) -> U84(isSKind(U), U', U) U84(tt, U', U) -> if_then_else_fi(_isEqualTo_(U, U'), false, true) U91(tt, U) -> U92(isSKind(U)) U92(tt) -> false _and_(A, A) -> U11(isBool(A), A) _and_(A, _xor_(B, C)) -> U21(isBool(A), A, B, C) _and_(false, A) -> U31(isBool(A), A) _and_(true, A) -> U41(isBool(A), A) _implies_(A, B) -> U51(isBool(A), A, B) _isEqualTo_(U, U') -> U61(isS(U'), U', U) _isEqualTo_(U, U) -> U71(isS(U), U) _isNotEqualTo_(U, U') -> U81(isS(U'), U', U) _isNotEqualTo_(U, U) -> U91(isS(U), U) _or_(A, B) -> U101(isBool(A), A, B) _xor_(A, A) -> U111(isBool(A), A) _xor_(false, A) -> U121(isBool(A), A) equal(X, X) -> tt if_then_else_fi(B, U, U') -> U131(isBool(B), B, U', U) if_then_else_fi(true, U, U') -> U141(isS(U'), U', U) isBool(false) -> tt isBool(true) -> tt isBool(_and_(V1, V2)) -> U151(isBoolKind(V1), V1, V2) isBool(_implies_(V1, V2)) -> U161(isBoolKind(V1), V1, V2) isBool(_isEqualTo_(V1, V2)) -> tt isBool(_isNotEqualTo_(V1, V2)) -> tt isBool(_or_(V1, V2)) -> U171(isBoolKind(V1), V1, V2) isBool(_xor_(V1, V2)) -> U181(isBoolKind(V1), V1, V2) isBool(not_(V1)) -> U191(isBoolKind(V1), V1) isBoolKind(false) -> tt isBoolKind(true) -> tt isBoolKind(_and_(V1, V2)) -> U201(isBoolKind(V1), V2) isBoolKind(_implies_(V1, V2)) -> U211(isBoolKind(V1), V2) isBoolKind(_isEqualTo_(V1, V2)) -> tt isBoolKind(_isNotEqualTo_(V1, V2)) -> tt isBoolKind(_or_(V1, V2)) -> U221(isBoolKind(V1), V2) isBoolKind(_xor_(V1, V2)) -> U231(isBoolKind(V1), V2) isBoolKind(not_(V1)) -> U241(isBoolKind(V1)) not_(A) -> U251(isBool(A), A) not_(false) -> true not_(true) -> false _and_(_and_(A, A), ext) -> _and_(U11(isBool(A), A), ext) _and_(_and_(A, _xor_(B, C)), ext) -> _and_(U21(isBool(A), A, B, C), ext) _and_(_and_(false, A), ext) -> _and_(U31(isBool(A), A), ext) _and_(_and_(true, A), ext) -> _and_(U41(isBool(A), A), ext) _or_(_or_(A, B), ext) -> _or_(U101(isBool(A), A, B), ext) _xor_(_xor_(A, A), ext) -> _xor_(U111(isBool(A), A), ext) _xor_(_xor_(false, A), ext) -> _xor_(U121(isBool(A), A), ext) The set E consists of the following equations: _and_(x, y) == _and_(y, x) _or_(x, y) == _or_(y, x) _xor_(x, y) == _xor_(y, x) _and_(_and_(x, y), z) == _and_(x, _and_(y, z)) _or_(_or_(x, y), z) == _or_(x, _or_(y, z)) _xor_(_xor_(x, y), z) == _xor_(x, _xor_(y, z)) The set E# consists of the following equations: _AND_(x, y) == _AND_(y, x) _OR_(x, y) == _OR_(y, x) _XOR_(x, y) == _XOR_(y, x) _AND_(_and_(x, y), z) == _AND_(x, _and_(y, z)) _OR_(_or_(x, y), z) == _OR_(x, _or_(y, z)) _XOR_(_xor_(x, y), z) == _XOR_(x, _xor_(y, z)) We have to consider all minimal (P,E#,R,E)-chains ---------------------------------------- (42) ESharpUsableEquationsProof (EQUIVALENT) We can delete the following equations of E# with the esharp usable equations processor[DA_STEIN]: _AND_(x, y) == _AND_(y, x) _XOR_(x, y) == _XOR_(y, x) _AND_(_and_(x, y), z) == _AND_(x, _and_(y, z)) _XOR_(_xor_(x, y), z) == _XOR_(x, _xor_(y, z)) ---------------------------------------- (43) Obligation: The TRS P consists of the following rules: _OR_(_or_(A, B), ext) -> _OR_(U101(isBool(A), A, B), ext) The TRS R consists of the following rules: U101(tt, A, B) -> U102(isBoolKind(A), A, B) U102(tt, A, B) -> U103(isBool(B), A, B) U103(tt, A, B) -> U104(isBoolKind(B), A, B) U104(tt, A, B) -> _xor_(_and_(A, B), _xor_(A, B)) U11(tt, A) -> U12(isBoolKind(A), A) U111(tt, A) -> U112(isBoolKind(A)) U112(tt) -> false U12(tt, A) -> A U121(tt, A) -> U122(isBoolKind(A), A) U122(tt, A) -> A U131(tt, B, U', U) -> U132(isBoolKind(B), B, U', U) U132(tt, B, U', U) -> U133(isS(U'), B, U', U) U133(tt, B, U', U) -> U134(isSKind(U'), B, U', U) U134(tt, B, U', U) -> U135(isS(U), B, U', U) U135(tt, B, U', U) -> U136(isSKind(U), B, U') U136(tt, B, U') -> U137(equal(_isNotEqualTo_(B, true), true), U') U137(tt, U') -> U' U141(tt, U', U) -> U142(isSKind(U'), U) U142(tt, U) -> U143(isS(U), U) U143(tt, U) -> U144(isSKind(U), U) U144(tt, U) -> U U151(tt, V1, V2) -> U152(isBoolKind(V1), V1, V2) U152(tt, V1, V2) -> U153(isBoolKind(V2), V1, V2) U153(tt, V1, V2) -> U154(isBoolKind(V2), V1, V2) U154(tt, V1, V2) -> U155(isBool(V1), V2) U155(tt, V2) -> U156(isBool(V2)) U156(tt) -> tt U161(tt, V1, V2) -> U162(isBoolKind(V1), V1, V2) U162(tt, V1, V2) -> U163(isBoolKind(V2), V1, V2) U163(tt, V1, V2) -> U164(isBoolKind(V2), V1, V2) U164(tt, V1, V2) -> U165(isBool(V1), V2) U165(tt, V2) -> U166(isBool(V2)) U166(tt) -> tt U171(tt, V1, V2) -> U172(isBoolKind(V1), V1, V2) U172(tt, V1, V2) -> U173(isBoolKind(V2), V1, V2) U173(tt, V1, V2) -> U174(isBoolKind(V2), V1, V2) U174(tt, V1, V2) -> U175(isBool(V1), V2) U175(tt, V2) -> U176(isBool(V2)) U176(tt) -> tt U181(tt, V1, V2) -> U182(isBoolKind(V1), V1, V2) U182(tt, V1, V2) -> U183(isBoolKind(V2), V1, V2) U183(tt, V1, V2) -> U184(isBoolKind(V2), V1, V2) U184(tt, V1, V2) -> U185(isBool(V1), V2) U185(tt, V2) -> U186(isBool(V2)) U186(tt) -> tt U191(tt, V1) -> U192(isBoolKind(V1), V1) U192(tt, V1) -> U193(isBool(V1)) U193(tt) -> tt U201(tt, V2) -> U202(isBoolKind(V2)) U202(tt) -> tt U21(tt, A, B, C) -> U22(isBoolKind(A), A, B, C) U211(tt, V2) -> U212(isBoolKind(V2)) U212(tt) -> tt U22(tt, A, B, C) -> U23(isBool(B), A, B, C) U221(tt, V2) -> U222(isBoolKind(V2)) U222(tt) -> tt U23(tt, A, B, C) -> U24(isBoolKind(B), A, B, C) U231(tt, V2) -> U232(isBoolKind(V2)) U232(tt) -> tt U24(tt, A, B, C) -> U25(isBool(C), A, B, C) U241(tt) -> tt U25(tt, A, B, C) -> U26(isBoolKind(C), A, B, C) U251(tt, A) -> U252(isBoolKind(A), A) U252(tt, A) -> _xor_(A, true) U26(tt, A, B, C) -> _xor_(_and_(A, B), _and_(A, C)) U31(tt, A) -> U32(isBoolKind(A)) U32(tt) -> false U41(tt, A) -> U42(isBoolKind(A), A) U42(tt, A) -> A U51(tt, A, B) -> U52(isBoolKind(A), A, B) U52(tt, A, B) -> U53(isBool(B), A, B) U53(tt, A, B) -> U54(isBoolKind(B), A, B) U54(tt, A, B) -> not_(_xor_(A, _and_(A, B))) U61(tt, U', U) -> U62(isSKind(U'), U', U) U62(tt, U', U) -> U63(isS(U), U', U) U63(tt, U', U) -> U64(isSKind(U), U', U) U64(tt, U', U) -> U65(equal(_isNotEqualTo_(U, U'), true)) U65(tt) -> false U71(tt, U) -> U72(isSKind(U)) U72(tt) -> true U81(tt, U', U) -> U82(isSKind(U'), U', U) U82(tt, U', U) -> U83(isS(U), U', U) U83(tt, U', U) -> U84(isSKind(U), U', U) U84(tt, U', U) -> if_then_else_fi(_isEqualTo_(U, U'), false, true) U91(tt, U) -> U92(isSKind(U)) U92(tt) -> false _and_(A, A) -> U11(isBool(A), A) _and_(A, _xor_(B, C)) -> U21(isBool(A), A, B, C) _and_(false, A) -> U31(isBool(A), A) _and_(true, A) -> U41(isBool(A), A) _implies_(A, B) -> U51(isBool(A), A, B) _isEqualTo_(U, U') -> U61(isS(U'), U', U) _isEqualTo_(U, U) -> U71(isS(U), U) _isNotEqualTo_(U, U') -> U81(isS(U'), U', U) _isNotEqualTo_(U, U) -> U91(isS(U), U) _or_(A, B) -> U101(isBool(A), A, B) _xor_(A, A) -> U111(isBool(A), A) _xor_(false, A) -> U121(isBool(A), A) equal(X, X) -> tt if_then_else_fi(B, U, U') -> U131(isBool(B), B, U', U) if_then_else_fi(true, U, U') -> U141(isS(U'), U', U) isBool(false) -> tt isBool(true) -> tt isBool(_and_(V1, V2)) -> U151(isBoolKind(V1), V1, V2) isBool(_implies_(V1, V2)) -> U161(isBoolKind(V1), V1, V2) isBool(_isEqualTo_(V1, V2)) -> tt isBool(_isNotEqualTo_(V1, V2)) -> tt isBool(_or_(V1, V2)) -> U171(isBoolKind(V1), V1, V2) isBool(_xor_(V1, V2)) -> U181(isBoolKind(V1), V1, V2) isBool(not_(V1)) -> U191(isBoolKind(V1), V1) isBoolKind(false) -> tt isBoolKind(true) -> tt isBoolKind(_and_(V1, V2)) -> U201(isBoolKind(V1), V2) isBoolKind(_implies_(V1, V2)) -> U211(isBoolKind(V1), V2) isBoolKind(_isEqualTo_(V1, V2)) -> tt isBoolKind(_isNotEqualTo_(V1, V2)) -> tt isBoolKind(_or_(V1, V2)) -> U221(isBoolKind(V1), V2) isBoolKind(_xor_(V1, V2)) -> U231(isBoolKind(V1), V2) isBoolKind(not_(V1)) -> U241(isBoolKind(V1)) not_(A) -> U251(isBool(A), A) not_(false) -> true not_(true) -> false _and_(_and_(A, A), ext) -> _and_(U11(isBool(A), A), ext) _and_(_and_(A, _xor_(B, C)), ext) -> _and_(U21(isBool(A), A, B, C), ext) _and_(_and_(false, A), ext) -> _and_(U31(isBool(A), A), ext) _and_(_and_(true, A), ext) -> _and_(U41(isBool(A), A), ext) _or_(_or_(A, B), ext) -> _or_(U101(isBool(A), A, B), ext) _xor_(_xor_(A, A), ext) -> _xor_(U111(isBool(A), A), ext) _xor_(_xor_(false, A), ext) -> _xor_(U121(isBool(A), A), ext) The set E consists of the following equations: _and_(x, y) == _and_(y, x) _or_(x, y) == _or_(y, x) _xor_(x, y) == _xor_(y, x) _and_(_and_(x, y), z) == _and_(x, _and_(y, z)) _or_(_or_(x, y), z) == _or_(x, _or_(y, z)) _xor_(_xor_(x, y), z) == _xor_(x, _xor_(y, z)) The set E# consists of the following equations: _OR_(x, y) == _OR_(y, x) _OR_(_or_(x, y), z) == _OR_(x, _or_(y, z)) We have to consider all minimal (P,E#,R,E)-chains ---------------------------------------- (44) EDPPoloProof (EQUIVALENT) We use the reduction pair processor [DA_STEIN] with a polynomial ordering [POLO]. All Dependency Pairs of this DP problem can be strictly oriented. _OR_(_or_(A, B), ext) -> _OR_(U101(isBool(A), A, B), ext) With the implicit AFS we had to orient the following set of usable rules of R non-strictly. U162(tt, V1, V2) -> U163(isBoolKind(V2), V1, V2) U102(tt, A, B) -> U103(isBool(B), A, B) U164(tt, V1, V2) -> U165(isBool(V1), V2) U152(tt, V1, V2) -> U153(isBoolKind(V2), V1, V2) U122(tt, A) -> A U21(tt, A, B, C) -> U22(isBoolKind(A), A, B, C) U22(tt, A, B, C) -> U23(isBool(B), A, B, C) U42(tt, A) -> A U176(tt) -> tt U41(tt, A) -> U42(isBoolKind(A), A) U184(tt, V1, V2) -> U185(isBool(V1), V2) U192(tt, V1) -> U193(isBool(V1)) U24(tt, A, B, C) -> U25(isBool(C), A, B, C) U153(tt, V1, V2) -> U154(isBoolKind(V2), V1, V2) U183(tt, V1, V2) -> U184(isBoolKind(V2), V1, V2) U104(tt, A, B) -> _xor_(_and_(A, B), _xor_(A, B)) U112(tt) -> false _and_(false, A) -> U31(isBool(A), A) _and_(_and_(false, A), ext) -> _and_(U31(isBool(A), A), ext) _and_(A, _xor_(B, C)) -> U21(isBool(A), A, B, C) _and_(_and_(true, A), ext) -> _and_(U41(isBool(A), A), ext) _and_(_and_(A, _xor_(B, C)), ext) -> _and_(U21(isBool(A), A, B, C), ext) _and_(_and_(A, A), ext) -> _and_(U11(isBool(A), A), ext) _and_(A, A) -> U11(isBool(A), A) _and_(true, A) -> U41(isBool(A), A) U182(tt, V1, V2) -> U183(isBoolKind(V2), V1, V2) U173(tt, V1, V2) -> U174(isBoolKind(V2), V1, V2) U161(tt, V1, V2) -> U162(isBoolKind(V1), V1, V2) U175(tt, V2) -> U176(isBool(V2)) U181(tt, V1, V2) -> U182(isBoolKind(V1), V1, V2) U103(tt, A, B) -> U104(isBoolKind(B), A, B) U166(tt) -> tt U171(tt, V1, V2) -> U172(isBoolKind(V1), V1, V2) _xor_(_xor_(A, A), ext) -> _xor_(U111(isBool(A), A), ext) _xor_(A, A) -> U111(isBool(A), A) _xor_(_xor_(false, A), ext) -> _xor_(U121(isBool(A), A), ext) _xor_(false, A) -> U121(isBool(A), A) U165(tt, V2) -> U166(isBool(V2)) U191(tt, V1) -> U192(isBoolKind(V1), V1) _or_(_or_(A, B), ext) -> _or_(U101(isBool(A), A, B), ext) _or_(A, B) -> U101(isBool(A), A, B) isBool(_implies_(V1, V2)) -> U161(isBoolKind(V1), V1, V2) isBool(_isNotEqualTo_(V1, V2)) -> tt isBool(_isEqualTo_(V1, V2)) -> tt isBool(true) -> tt isBool(_xor_(V1, V2)) -> U181(isBoolKind(V1), V1, V2) isBool(false) -> tt isBool(not_(V1)) -> U191(isBoolKind(V1), V1) isBool(_and_(V1, V2)) -> U151(isBoolKind(V1), V1, V2) isBool(_or_(V1, V2)) -> U171(isBoolKind(V1), V1, V2) U25(tt, A, B, C) -> U26(isBoolKind(C), A, B, C) U172(tt, V1, V2) -> U173(isBoolKind(V2), V1, V2) U23(tt, A, B, C) -> U24(isBoolKind(B), A, B, C) U12(tt, A) -> A U156(tt) -> tt U186(tt) -> tt U163(tt, V1, V2) -> U164(isBoolKind(V2), V1, V2) U26(tt, A, B, C) -> _xor_(_and_(A, B), _and_(A, C)) U32(tt) -> false U101(tt, A, B) -> U102(isBoolKind(A), A, B) U151(tt, V1, V2) -> U152(isBoolKind(V1), V1, V2) U121(tt, A) -> U122(isBoolKind(A), A) U174(tt, V1, V2) -> U175(isBool(V1), V2) U154(tt, V1, V2) -> U155(isBool(V1), V2) U155(tt, V2) -> U156(isBool(V2)) U185(tt, V2) -> U186(isBool(V2)) U193(tt) -> tt U11(tt, A) -> U12(isBoolKind(A), A) U31(tt, A) -> U32(isBoolKind(A)) U111(tt, A) -> U112(isBoolKind(A)) We had to orient the following equations of E# equivalently. _OR_(x, y) == _OR_(y, x) _OR_(_or_(x, y), z) == _OR_(x, _or_(y, z)) With the implicit AFS we had to orient the following usable equations of E equivalently. _and_(_and_(x, y), z) == _and_(x, _and_(y, z)) _and_(x, y) == _and_(y, x) _xor_(x, y) == _xor_(y, x) _xor_(_xor_(x, y), z) == _xor_(x, _xor_(y, z)) _or_(x, y) == _or_(y, x) _or_(_or_(x, y), z) == _or_(x, _or_(y, z)) Used ordering: POLO with Polynomial interpretation [POLO]: POL(U101(x_1, x_2, x_3)) = 1 + x_1 + 2*x_2 + x_2*x_3 + 2*x_3 POL(U102(x_1, x_2, x_3)) = 2 + x_2 + x_2*x_3 + 2*x_3 POL(U103(x_1, x_2, x_3)) = 2 + x_2 + x_2*x_3 + x_3 POL(U104(x_1, x_2, x_3)) = 2 + x_2 + x_2*x_3 + x_3 POL(U11(x_1, x_2)) = x_1*x_2 POL(U111(x_1, x_2)) = 1 + x_1 POL(U112(x_1)) = 2 POL(U12(x_1, x_2)) = x_2 POL(U121(x_1, x_2)) = 3 + x_2 POL(U122(x_1, x_2)) = x_2 POL(U151(x_1, x_2, x_3)) = x_2*x_3 POL(U152(x_1, x_2, x_3)) = x_2*x_3 POL(U153(x_1, x_2, x_3)) = x_2*x_3 POL(U154(x_1, x_2, x_3)) = x_2*x_3 POL(U155(x_1, x_2)) = x_1*x_2 POL(U156(x_1)) = x_1 POL(U161(x_1, x_2, x_3)) = 2 + x_3 POL(U162(x_1, x_2, x_3)) = 2 + x_3 POL(U163(x_1, x_2, x_3)) = 2 + x_3 POL(U164(x_1, x_2, x_3)) = 2 + x_3 POL(U165(x_1, x_2)) = 1 + x_2 POL(U166(x_1)) = x_1 POL(U171(x_1, x_2, x_3)) = 2 + 3*x_2 + 2*x_3 POL(U172(x_1, x_2, x_3)) = 2 + 2*x_2 + x_3 POL(U173(x_1, x_2, x_3)) = 2 + 2*x_2 + x_3 POL(U174(x_1, x_2, x_3)) = 1 + 2*x_2 + x_3 POL(U175(x_1, x_2)) = 1 + x_1 + x_2 POL(U176(x_1)) = 1 POL(U181(x_1, x_2, x_3)) = x_2 + x_3 POL(U182(x_1, x_2, x_3)) = x_2 + x_3 POL(U183(x_1, x_2, x_3)) = x_3 POL(U184(x_1, x_2, x_3)) = x_3 POL(U185(x_1, x_2)) = x_2 POL(U186(x_1)) = x_1 POL(U191(x_1, x_2)) = 1 + x_2 POL(U192(x_1, x_2)) = 1 + x_2 POL(U193(x_1)) = x_1 POL(U201(x_1, x_2)) = 0 POL(U202(x_1)) = 0 POL(U21(x_1, x_2, x_3, x_4)) = x_1 + x_2*x_3 + x_2*x_4 POL(U211(x_1, x_2)) = 0 POL(U212(x_1)) = 0 POL(U22(x_1, x_2, x_3, x_4)) = 1 + x_2*x_3 + x_2*x_4 POL(U221(x_1, x_2)) = 0 POL(U222(x_1)) = 0 POL(U23(x_1, x_2, x_3, x_4)) = 1 + x_2*x_3 + x_2*x_4 POL(U231(x_1, x_2)) = 0 POL(U232(x_1)) = 0 POL(U24(x_1, x_2, x_3, x_4)) = 1 + x_2*x_3 + x_2*x_4 POL(U241(x_1)) = 0 POL(U25(x_1, x_2, x_3, x_4)) = 1 + x_2*x_3 + x_2*x_4 POL(U26(x_1, x_2, x_3, x_4)) = 1 + x_2*x_3 + x_2*x_4 POL(U31(x_1, x_2)) = 2*x_1 POL(U32(x_1)) = 2 POL(U41(x_1, x_2)) = x_2 POL(U42(x_1, x_2)) = x_2 POL(_OR_(x_1, x_2)) = x_1 + x_1*x_2 + x_2 POL(_and_(x_1, x_2)) = x_1*x_2 POL(_implies_(x_1, x_2)) = 3 + x_1*x_2 + x_2 POL(_isEqualTo_(x_1, x_2)) = 2 POL(_isNotEqualTo_(x_1, x_2)) = 1 POL(_or_(x_1, x_2)) = 2 + 3*x_1 + 3*x_1*x_2 + 3*x_2 POL(_xor_(x_1, x_2)) = 1 + x_1 + x_2 POL(false) = 2 POL(isBool(x_1)) = x_1 POL(isBoolKind(x_1)) = 0 POL(not_(x_1)) = 1 + x_1 POL(true) = 2 POL(tt) = 1 ---------------------------------------- (45) Obligation: P is empty. The TRS R consists of the following rules: U101(tt, A, B) -> U102(isBoolKind(A), A, B) U102(tt, A, B) -> U103(isBool(B), A, B) U103(tt, A, B) -> U104(isBoolKind(B), A, B) U104(tt, A, B) -> _xor_(_and_(A, B), _xor_(A, B)) U11(tt, A) -> U12(isBoolKind(A), A) U111(tt, A) -> U112(isBoolKind(A)) U112(tt) -> false U12(tt, A) -> A U121(tt, A) -> U122(isBoolKind(A), A) U122(tt, A) -> A U131(tt, B, U', U) -> U132(isBoolKind(B), B, U', U) U132(tt, B, U', U) -> U133(isS(U'), B, U', U) U133(tt, B, U', U) -> U134(isSKind(U'), B, U', U) U134(tt, B, U', U) -> U135(isS(U), B, U', U) U135(tt, B, U', U) -> U136(isSKind(U), B, U') U136(tt, B, U') -> U137(equal(_isNotEqualTo_(B, true), true), U') U137(tt, U') -> U' U141(tt, U', U) -> U142(isSKind(U'), U) U142(tt, U) -> U143(isS(U), U) U143(tt, U) -> U144(isSKind(U), U) U144(tt, U) -> U U151(tt, V1, V2) -> U152(isBoolKind(V1), V1, V2) U152(tt, V1, V2) -> U153(isBoolKind(V2), V1, V2) U153(tt, V1, V2) -> U154(isBoolKind(V2), V1, V2) U154(tt, V1, V2) -> U155(isBool(V1), V2) U155(tt, V2) -> U156(isBool(V2)) U156(tt) -> tt U161(tt, V1, V2) -> U162(isBoolKind(V1), V1, V2) U162(tt, V1, V2) -> U163(isBoolKind(V2), V1, V2) U163(tt, V1, V2) -> U164(isBoolKind(V2), V1, V2) U164(tt, V1, V2) -> U165(isBool(V1), V2) U165(tt, V2) -> U166(isBool(V2)) U166(tt) -> tt U171(tt, V1, V2) -> U172(isBoolKind(V1), V1, V2) U172(tt, V1, V2) -> U173(isBoolKind(V2), V1, V2) U173(tt, V1, V2) -> U174(isBoolKind(V2), V1, V2) U174(tt, V1, V2) -> U175(isBool(V1), V2) U175(tt, V2) -> U176(isBool(V2)) U176(tt) -> tt U181(tt, V1, V2) -> U182(isBoolKind(V1), V1, V2) U182(tt, V1, V2) -> U183(isBoolKind(V2), V1, V2) U183(tt, V1, V2) -> U184(isBoolKind(V2), V1, V2) U184(tt, V1, V2) -> U185(isBool(V1), V2) U185(tt, V2) -> U186(isBool(V2)) U186(tt) -> tt U191(tt, V1) -> U192(isBoolKind(V1), V1) U192(tt, V1) -> U193(isBool(V1)) U193(tt) -> tt U201(tt, V2) -> U202(isBoolKind(V2)) U202(tt) -> tt U21(tt, A, B, C) -> U22(isBoolKind(A), A, B, C) U211(tt, V2) -> U212(isBoolKind(V2)) U212(tt) -> tt U22(tt, A, B, C) -> U23(isBool(B), A, B, C) U221(tt, V2) -> U222(isBoolKind(V2)) U222(tt) -> tt U23(tt, A, B, C) -> U24(isBoolKind(B), A, B, C) U231(tt, V2) -> U232(isBoolKind(V2)) U232(tt) -> tt U24(tt, A, B, C) -> U25(isBool(C), A, B, C) U241(tt) -> tt U25(tt, A, B, C) -> U26(isBoolKind(C), A, B, C) U251(tt, A) -> U252(isBoolKind(A), A) U252(tt, A) -> _xor_(A, true) U26(tt, A, B, C) -> _xor_(_and_(A, B), _and_(A, C)) U31(tt, A) -> U32(isBoolKind(A)) U32(tt) -> false U41(tt, A) -> U42(isBoolKind(A), A) U42(tt, A) -> A U51(tt, A, B) -> U52(isBoolKind(A), A, B) U52(tt, A, B) -> U53(isBool(B), A, B) U53(tt, A, B) -> U54(isBoolKind(B), A, B) U54(tt, A, B) -> not_(_xor_(A, _and_(A, B))) U61(tt, U', U) -> U62(isSKind(U'), U', U) U62(tt, U', U) -> U63(isS(U), U', U) U63(tt, U', U) -> U64(isSKind(U), U', U) U64(tt, U', U) -> U65(equal(_isNotEqualTo_(U, U'), true)) U65(tt) -> false U71(tt, U) -> U72(isSKind(U)) U72(tt) -> true U81(tt, U', U) -> U82(isSKind(U'), U', U) U82(tt, U', U) -> U83(isS(U), U', U) U83(tt, U', U) -> U84(isSKind(U), U', U) U84(tt, U', U) -> if_then_else_fi(_isEqualTo_(U, U'), false, true) U91(tt, U) -> U92(isSKind(U)) U92(tt) -> false _and_(A, A) -> U11(isBool(A), A) _and_(A, _xor_(B, C)) -> U21(isBool(A), A, B, C) _and_(false, A) -> U31(isBool(A), A) _and_(true, A) -> U41(isBool(A), A) _implies_(A, B) -> U51(isBool(A), A, B) _isEqualTo_(U, U') -> U61(isS(U'), U', U) _isEqualTo_(U, U) -> U71(isS(U), U) _isNotEqualTo_(U, U') -> U81(isS(U'), U', U) _isNotEqualTo_(U, U) -> U91(isS(U), U) _or_(A, B) -> U101(isBool(A), A, B) _xor_(A, A) -> U111(isBool(A), A) _xor_(false, A) -> U121(isBool(A), A) equal(X, X) -> tt if_then_else_fi(B, U, U') -> U131(isBool(B), B, U', U) if_then_else_fi(true, U, U') -> U141(isS(U'), U', U) isBool(false) -> tt isBool(true) -> tt isBool(_and_(V1, V2)) -> U151(isBoolKind(V1), V1, V2) isBool(_implies_(V1, V2)) -> U161(isBoolKind(V1), V1, V2) isBool(_isEqualTo_(V1, V2)) -> tt isBool(_isNotEqualTo_(V1, V2)) -> tt isBool(_or_(V1, V2)) -> U171(isBoolKind(V1), V1, V2) isBool(_xor_(V1, V2)) -> U181(isBoolKind(V1), V1, V2) isBool(not_(V1)) -> U191(isBoolKind(V1), V1) isBoolKind(false) -> tt isBoolKind(true) -> tt isBoolKind(_and_(V1, V2)) -> U201(isBoolKind(V1), V2) isBoolKind(_implies_(V1, V2)) -> U211(isBoolKind(V1), V2) isBoolKind(_isEqualTo_(V1, V2)) -> tt isBoolKind(_isNotEqualTo_(V1, V2)) -> tt isBoolKind(_or_(V1, V2)) -> U221(isBoolKind(V1), V2) isBoolKind(_xor_(V1, V2)) -> U231(isBoolKind(V1), V2) isBoolKind(not_(V1)) -> U241(isBoolKind(V1)) not_(A) -> U251(isBool(A), A) not_(false) -> true not_(true) -> false _and_(_and_(A, A), ext) -> _and_(U11(isBool(A), A), ext) _and_(_and_(A, _xor_(B, C)), ext) -> _and_(U21(isBool(A), A, B, C), ext) _and_(_and_(false, A), ext) -> _and_(U31(isBool(A), A), ext) _and_(_and_(true, A), ext) -> _and_(U41(isBool(A), A), ext) _or_(_or_(A, B), ext) -> _or_(U101(isBool(A), A, B), ext) _xor_(_xor_(A, A), ext) -> _xor_(U111(isBool(A), A), ext) _xor_(_xor_(false, A), ext) -> _xor_(U121(isBool(A), A), ext) The set E consists of the following equations: _and_(x, y) == _and_(y, x) _or_(x, y) == _or_(y, x) _xor_(x, y) == _xor_(y, x) _and_(_and_(x, y), z) == _and_(x, _and_(y, z)) _or_(_or_(x, y), z) == _or_(x, _or_(y, z)) _xor_(_xor_(x, y), z) == _xor_(x, _xor_(y, z)) The set E# consists of the following equations: _OR_(x, y) == _OR_(y, x) _OR_(_or_(x, y), z) == _OR_(x, _or_(y, z)) We have to consider all minimal (P,E#,R,E)-chains ---------------------------------------- (46) PisEmptyProof (EQUIVALENT) The TRS P is empty. Hence, there is no (P,E#,R,E) chain. ---------------------------------------- (47) YES