using System;
using System.Text .RegularExpressions ;
public class Test
{
public static bool DoTest( string sProp)
{
Regex re = new Regex( @"~\([A-Z0-1]\)|[&|>=]\([A-Z0-1],[A-Z0-1]\)" ) ;
while ( re.Match ( sProp) .Success )
{
sProp = re.Replace ( sProp, "1" ) ;
}
return sProp== "1" ;
}
public static void Main( )
{
string[ ] saPropositions = {
"&(&(=(A,B),>(&(A,B),~(C))),>(A,~(&(A,B))))" ,
"=(~(A),>(>(B,C),~(A)))" ,
"(~(A))" ,
">(A,B"
} ;
for ( int idx = 0 ; idx< saPropositions.Length ; idx++ )
{
Console.WriteLine ( "Testing the proposition " + saPropositions[ idx] + "." ) ;
Console.WriteLine ( DoTest( saPropositions[ idx] ) ? "The proposition is valid"
: "Invalid proposition" ) ;
}
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uVGV4dC5SZWd1bGFyRXhwcmVzc2lvbnM7CgpwdWJsaWMgY2xhc3MgVGVzdAp7CglwdWJsaWMgc3RhdGljIGJvb2wgRG9UZXN0KHN0cmluZyBzUHJvcCkKCXsKCQlSZWdleCByZSA9IG5ldyBSZWdleChAIn5cKFtBLVowLTFdXCl8WyZ8Pj1dXChbQS1aMC0xXSxbQS1aMC0xXVwpIik7CgkJCgkJd2hpbGUocmUuTWF0Y2goc1Byb3ApLlN1Y2Nlc3MpCgkJewoJCQlzUHJvcCA9IHJlLlJlcGxhY2Uoc1Byb3AsICIxIik7CgkJfQoJCXJldHVybiBzUHJvcD09IjEiOwoJfQoKCXB1YmxpYyBzdGF0aWMgdm9pZCBNYWluKCkKCXsKCQlzdHJpbmdbXSBzYVByb3Bvc2l0aW9ucyA9IHsKCQkJIiYoJig9KEEsQiksPigmKEEsQiksfihDKSkpLD4oQSx+KCYoQSxCKSkpKSIsCgkJCSI9KH4oQSksPig+KEIsQyksfihBKSkpIiwKCQkJIih+KEEpKSIsCgkJCSI+KEEsQiIKCQkJfTsKCQkKCQkKCQlmb3IoIGludCBpZHggPSAwOyBpZHg8c2FQcm9wb3NpdGlvbnMuTGVuZ3RoOyBpZHgrKykKCQl7CgkJCQoJCQlDb25zb2xlLldyaXRlTGluZSgiVGVzdGluZyB0aGUgcHJvcG9zaXRpb24gIiArIHNhUHJvcG9zaXRpb25zW2lkeF0gKyAiLiIpOwoJCQlDb25zb2xlLldyaXRlTGluZShEb1Rlc3Qoc2FQcm9wb3NpdGlvbnNbaWR4XSkgPyAiVGhlIHByb3Bvc2l0aW9uIGlzIHZhbGlkIiAKCQkJOiAiSW52YWxpZCBwcm9wb3NpdGlvbiIpOwoJCQkKCQl9Cgl9Cn0=
stdout
Testing the proposition &(&(=(A,B),>(&(A,B),~(C))),>(A,~(&(A,B)))).
The proposition is valid
Testing the proposition =(~(A),>(>(B,C),~(A))).
The proposition is valid
Testing the proposition (~(A)).
Invalid proposition
Testing the proposition >(A,B.
Invalid proposition