AIMA.Core.Logic.FOL.KB.Data.Chain.getContrapositives C# (CSharp) 메소드

getContrapositives() 공개 메소드

public getContrapositives ( ) : List
리턴 List
        public List<Chain> getContrapositives()
        {
            List<Chain> contrapositives = new List<Chain>();
            List<Literal> lits = new List<Literal>();

            for (int i = 1; i < literals.Count; i++)
            {
                lits.Clear();
                lits.Add(literals[i]);
                lits.AddRange(literals.Take(i));
                lits.AddRange(literals.GetRange(i + 1, literals.Count));
                Chain cont = new Chain(lits);
                cont.setProofStep(new ProofStepChainContrapositive(cont, this));
                contrapositives.Add(cont);
            }

            return contrapositives;
        }

Usage Example

예제 #1
0
        public void testContrapositives()
        {
            List<Chain> conts;
            Literal p = new Literal(new Predicate("P", new List<Term>()));
            Literal notq = new Literal(new Predicate("Q", new List<Term>()),
                    true);
            Literal notr = new Literal(new Predicate("R", new List<Term>()),
                    true);

            Chain c = new Chain();

            conts = c.getContrapositives();
            Assert.AreEqual(0, conts.Count);

            c.addLiteral(p);
            conts = c.getContrapositives();
            Assert.AreEqual(0, conts.Count);

            c.addLiteral(notq);
            conts = c.getContrapositives();
            Assert.AreEqual(1, conts.Count);
            Assert.AreEqual("<~Q(),P()>", conts[0].ToString());

            c.addLiteral(notr);
            conts = c.getContrapositives();
            Assert.AreEqual(2, conts.Count);
            Assert.AreEqual("<~Q(),P(),~R()>", conts[0].ToString());
            Assert.AreEqual("<~R(),P(),~Q()>", conts[1].ToString());
        }
All Usage Examples Of AIMA.Core.Logic.FOL.KB.Data.Chain::getContrapositives